diff --git a/www/activities/settings/js/settings.js b/www/activities/settings/js/settings.js
index 5a701d475..a081163ca 100644
--- a/www/activities/settings/js/settings.js
+++ b/www/activities/settings/js/settings.js
@@ -254,9 +254,9 @@ app.Settings = {
body.className = colourTheme;
if (appMode === "system") {
- app.f7.enableAutoDarkMode(); // darkModeChange event will handle the rest
+ app.f7.enableAutoDarkTheme(); // DarkThemeChange event will handle the rest
} else {
- app.f7.disableAutoDarkMode();
+ app.f7.disableAutoDarkTheme();
app.Settings.applyAppMode(appMode);
}
},
diff --git a/www/assets/framework7/bundle/package.json b/www/assets/framework7/bundle/package.json
new file mode 100644
index 000000000..2cdaaea98
--- /dev/null
+++ b/www/assets/framework7/bundle/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "framework7/bundle",
+ "private": true,
+ "sideEffects": false,
+ "main": "../cjs/framework7-bundle.js",
+ "module": "../esm/framework7-bundle.js",
+ "typings": "../framework7.d.ts"
+}
diff --git a/www/assets/framework7/cjs/components/accordion/accordion.js b/www/assets/framework7/cjs/components/accordion/accordion.js
new file mode 100644
index 000000000..223b487b4
--- /dev/null
+++ b/www/assets/framework7/cjs/components/accordion/accordion.js
@@ -0,0 +1,136 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Accordion = {
+ toggleClicked: function toggleClicked($clickedEl) {
+ var app = this;
+ var $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);
+ if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);
+ var $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);
+
+ if ($accordionContent.length) {
+ if ($accordionContent.parents($accordionItemEl).length) return;
+ }
+
+ if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;
+ app.accordion.toggle($accordionItemEl);
+ },
+ open: function open(el) {
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ var prevented = false;
+
+ function prevent() {
+ prevented = true;
+ }
+
+ $el.trigger('accordion:beforeopen', {
+ prevent: prevent
+ }, prevent);
+ app.emit('accordionBeforeOpen', $el[0], prevent);
+ if (prevented) return;
+ var $list = $el.parents('.accordion-list').eq(0);
+ var $contentEl = $el.children('.accordion-item-content');
+ $contentEl.removeAttr('aria-hidden');
+ if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');
+ if ($contentEl.length === 0) return;
+ var $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');
+
+ if ($openedItem.length > 0) {
+ app.accordion.close($openedItem);
+ }
+
+ $contentEl.transitionEnd(function () {
+ if ($el.hasClass('accordion-item-opened')) {
+ $contentEl.transition(0);
+ $contentEl.css('height', 'auto');
+ (0, _utils.nextFrame)(function () {
+ $contentEl.transition('');
+ $el.trigger('accordion:opened');
+ app.emit('accordionOpened', $el[0]);
+ });
+ } else {
+ $contentEl.css('height', '');
+ $el.trigger('accordion:closed');
+ app.emit('accordionClosed', $el[0]);
+ }
+ });
+ $contentEl.css('height', $contentEl[0].scrollHeight + "px");
+ $el.trigger('accordion:open');
+ $el.addClass('accordion-item-opened');
+ app.emit('accordionOpen', $el[0]);
+ },
+ close: function close(el) {
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ var prevented = false;
+
+ function prevent() {
+ prevented = true;
+ }
+
+ $el.trigger('accordion:beforeclose', {
+ prevent: prevent
+ }, prevent);
+ app.emit('accordionBeforeClose', $el[0], prevent);
+ if (prevented) return;
+ var $contentEl = $el.children('.accordion-item-content');
+ if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');
+ $el.removeClass('accordion-item-opened');
+ $contentEl.attr('aria-hidden', true);
+ $contentEl.transition(0);
+ $contentEl.css('height', $contentEl[0].scrollHeight + "px"); // Close
+
+ $contentEl.transitionEnd(function () {
+ if ($el.hasClass('accordion-item-opened')) {
+ $contentEl.transition(0);
+ $contentEl.css('height', 'auto');
+ (0, _utils.nextFrame)(function () {
+ $contentEl.transition('');
+ $el.trigger('accordion:opened');
+ app.emit('accordionOpened', $el[0]);
+ });
+ } else {
+ $contentEl.css('height', '');
+ $el.trigger('accordion:closed');
+ app.emit('accordionClosed', $el[0]);
+ }
+ });
+ (0, _utils.nextFrame)(function () {
+ $contentEl.transition('');
+ $contentEl.css('height', '');
+ $el.trigger('accordion:close');
+ app.emit('accordionClose', $el[0]);
+ });
+ },
+ toggle: function toggle(el) {
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);
+ }
+};
+var _default = {
+ name: 'accordion',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ accordion: Accordion
+ });
+ },
+ clicks: {
+ '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {
+ var app = this;
+ Accordion.toggleClicked.call(app, $clickedEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/actions/actions-class.js b/www/assets/framework7/cjs/components/actions/actions-class.js
new file mode 100644
index 000000000..886560b12
--- /dev/null
+++ b/www/assets/framework7/cjs/components/actions/actions-class.js
@@ -0,0 +1,383 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _getDevice = require("../../shared/get-device");
+
+var _utils = require("../../shared/utils");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Actions = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Actions, _Modal);
+
+ function Actions(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.actions, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var actions = _assertThisInitialized(_this);
+
+ var device = (0, _getDevice.getDevice)();
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ actions.params = extendedParams; // Buttons
+
+ var groups;
+
+ if (actions.params.buttons) {
+ groups = actions.params.buttons;
+ if (!Array.isArray(groups[0])) groups = [groups];
+ }
+
+ actions.groups = groups; // Find Element
+
+ var $el;
+
+ if (actions.params.el) {
+ $el = (0, _dom.default)(actions.params.el).eq(0);
+ } else if (actions.params.content) {
+ $el = (0, _dom.default)(actions.params.content).filter(function (node) {
+ return node.nodeType === 1;
+ }).eq(0);
+ } else if (actions.params.buttons) {
+ if (actions.params.convertToPopover) {
+ actions.popoverHtml = actions.renderPopover();
+ }
+
+ actions.actionsHtml = actions.render();
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {
+ return actions.destroy() || _assertThisInitialized(_this);
+ } // Backdrop
+
+
+ var $backdropEl;
+
+ if (actions.params.backdrop && actions.params.backdropEl) {
+ $backdropEl = (0, _dom.default)(actions.params.backdropEl);
+ } else if (actions.params.backdrop) {
+ $backdropEl = actions.$containerEl.children('.actions-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('
');
+ actions.$containerEl.append($backdropEl);
+ }
+ }
+
+ var originalOpen = actions.open;
+ var originalClose = actions.close;
+ var popover;
+
+ function buttonOnClick(e) {
+ var $buttonEl = (0, _dom.default)(this);
+ var buttonIndex;
+ var groupIndex;
+
+ if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {
+ buttonIndex = $buttonEl.parents('li').index();
+ groupIndex = $buttonEl.parents('.list').index();
+ } else {
+ buttonIndex = $buttonEl.index();
+ groupIndex = $buttonEl.parents('.actions-group').index();
+ }
+
+ if (typeof groups !== 'undefined') {
+ var button = groups[groupIndex][buttonIndex];
+ if (button.onClick) button.onClick(actions, e);
+ if (actions.params.onClick) actions.params.onClick(actions, e);
+ if (button.close !== false) actions.close();
+ }
+ }
+
+ actions.open = function open(animate) {
+ var convertToPopover = false;
+ var _actions$params = actions.params,
+ targetEl = _actions$params.targetEl,
+ targetX = _actions$params.targetX,
+ targetY = _actions$params.targetY,
+ targetWidth = _actions$params.targetWidth,
+ targetHeight = _actions$params.targetHeight;
+
+ if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {
+ // Popover
+ if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop && app.theme === 'aurora') {
+ convertToPopover = true;
+ }
+ }
+
+ if (convertToPopover && actions.popoverHtml) {
+ popover = app.popover.create({
+ containerEl: actions.params.containerEl,
+ content: actions.popoverHtml,
+ backdrop: actions.params.backdrop,
+ targetEl: targetEl,
+ targetX: targetX,
+ targetY: targetY,
+ targetWidth: targetWidth,
+ targetHeight: targetHeight,
+ on: {
+ open: function open() {
+ if (!actions.$el) {
+ actions.$el = popover.$el;
+ }
+
+ actions.$el.trigger("modal:open " + actions.type.toLowerCase() + ":open");
+ actions.emit("local::open modalOpen " + actions.type + "Open", actions);
+ },
+ opened: function opened() {
+ if (!actions.$el) {
+ actions.$el = popover.$el;
+ }
+
+ actions.$el.trigger("modal:opened " + actions.type.toLowerCase() + ":opened");
+ actions.emit("local::opened modalOpened " + actions.type + "Opened", actions);
+ },
+ close: function close() {
+ if (!actions.$el) {
+ actions.$el = popover.$el;
+ }
+
+ actions.$el.trigger("modal:close " + actions.type.toLowerCase() + ":close");
+ actions.emit("local::close modalClose " + actions.type + "Close", actions);
+ },
+ closed: function closed() {
+ if (!actions.$el) {
+ actions.$el = popover.$el;
+ }
+
+ actions.$el.trigger("modal:closed " + actions.type.toLowerCase() + ":closed");
+ actions.emit("local::closed modalClosed " + actions.type + "Closed", actions);
+ }
+ }
+ });
+ popover.open(animate);
+ popover.once('popoverOpened', function () {
+ popover.$el.find('.list-button, .item-link').each(function (buttonEl) {
+ (0, _dom.default)(buttonEl).on('click', buttonOnClick);
+ });
+ });
+ popover.once('popoverClosed', function () {
+ popover.$el.find('.list-button, .item-link').each(function (buttonEl) {
+ (0, _dom.default)(buttonEl).off('click', buttonOnClick);
+ });
+ (0, _utils.nextTick)(function () {
+ popover.destroy();
+ popover = undefined;
+ });
+ });
+ } else {
+ actions.$el = actions.actionsHtml ? (0, _dom.default)(actions.actionsHtml) : actions.$el;
+ actions.$el[0].f7Modal = actions;
+
+ if (actions.groups) {
+ actions.$el.find('.actions-button').each(function (buttonEl) {
+ (0, _dom.default)(buttonEl).on('click', buttonOnClick);
+ });
+ actions.once('actionsClosed', function () {
+ actions.$el.find('.actions-button').each(function (buttonEl) {
+ (0, _dom.default)(buttonEl).off('click', buttonOnClick);
+ });
+ });
+ }
+
+ actions.el = actions.$el[0];
+ originalOpen.call(actions, animate);
+ }
+
+ return actions;
+ };
+
+ actions.close = function close(animate) {
+ if (popover) {
+ popover.close(animate);
+ } else {
+ originalClose.call(actions, animate);
+ }
+
+ return actions;
+ };
+
+ (0, _utils.extend)(actions, {
+ app: app,
+ $el: $el,
+ el: $el ? $el[0] : undefined,
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ type: 'actions'
+ });
+
+ function handleClick(e) {
+ var target = e.target;
+ var $target = (0, _dom.default)(target);
+ var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
+ if (keyboardOpened) return;
+
+ if ($target.closest(actions.el).length === 0) {
+ if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {
+ actions.close();
+ } else if (actions.params.closeByOutsideClick) {
+ actions.close();
+ }
+ }
+ }
+
+ function onKeyDown(e) {
+ var keyCode = e.keyCode;
+
+ if (keyCode === 27 && actions.params.closeOnEscape) {
+ actions.close();
+ }
+ }
+
+ if (actions.params.closeOnEscape) {
+ actions.on('open', function () {
+ (0, _dom.default)(document).on('keydown', onKeyDown);
+ });
+ actions.on('close', function () {
+ (0, _dom.default)(document).off('keydown', onKeyDown);
+ });
+ }
+
+ actions.on('opened', function () {
+ if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {
+ app.on('click', handleClick);
+ }
+ });
+ actions.on('close', function () {
+ if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {
+ app.off('click', handleClick);
+ }
+ });
+
+ if ($el) {
+ $el[0].f7Modal = actions;
+ }
+
+ return actions || _assertThisInitialized(_this);
+ }
+
+ var _proto = Actions.prototype;
+
+ _proto.render = function render() {
+ var actions = this;
+ if (actions.params.render) return actions.params.render.call(actions, actions);
+ var groups = actions.groups;
+ var cssClass = actions.params.cssClass;
+ return (0, _$jsx.default)("div", {
+ class: "actions-modal" + (actions.params.grid ? ' actions-grid' : '') + " " + (cssClass || '')
+ }, groups.map(function (group) {
+ return (0, _$jsx.default)("div", {
+ class: "actions-group"
+ }, group.map(function (button) {
+ var buttonClasses = ["actions-" + (button.label ? 'label' : 'button')];
+ var color = button.color,
+ bg = button.bg,
+ bold = button.bold,
+ disabled = button.disabled,
+ label = button.label,
+ text = button.text,
+ icon = button.icon;
+ if (color) buttonClasses.push("color-" + color);
+ if (bg) buttonClasses.push("bg-color-" + bg);
+ if (bold) buttonClasses.push('actions-button-bold');
+ if (disabled) buttonClasses.push('disabled');
+
+ if (label) {
+ return (0, _$jsx.default)("div", {
+ class: buttonClasses.join(' ')
+ }, text);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: buttonClasses.join(' ')
+ }, icon && (0, _$jsx.default)("div", {
+ class: "actions-button-media"
+ }, icon), (0, _$jsx.default)("div", {
+ class: "actions-button-text"
+ }, text));
+ }));
+ }));
+ };
+
+ _proto.renderPopover = function renderPopover() {
+ var actions = this;
+ if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);
+ var groups = actions.groups;
+ var cssClass = actions.params.cssClass;
+ return (0, _$jsx.default)("div", {
+ class: "popover popover-from-actions " + (cssClass || '')
+ }, (0, _$jsx.default)("div", {
+ class: "popover-inner"
+ }, groups.map(function (group) {
+ return (0, _$jsx.default)("div", {
+ class: "list"
+ }, (0, _$jsx.default)("ul", null, group.map(function (button) {
+ var itemClasses = [];
+ var color = button.color,
+ bg = button.bg,
+ bold = button.bold,
+ disabled = button.disabled,
+ label = button.label,
+ text = button.text,
+ icon = button.icon;
+ if (color) itemClasses.push("color-" + color);
+ if (bg) itemClasses.push("bg-color-" + bg);
+ if (bold) itemClasses.push('popover-from-actions-bold');
+ if (disabled) itemClasses.push('disabled');
+
+ if (label) {
+ itemClasses.push('popover-from-actions-label');
+ return "" + text + "";
+ }
+
+ if (icon) {
+ itemClasses.push('item-link item-content');
+ return (0, _$jsx.default)("li", null, (0, _$jsx.default)("a", {
+ class: itemClasses.join(' ')
+ }, (0, _$jsx.default)("div", {
+ class: "item-media"
+ }, icon), (0, _$jsx.default)("div", {
+ class: "item-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "item-title"
+ }, text))));
+ }
+
+ itemClasses.push('list-button');
+ return (0, _$jsx.default)("li", null, (0, _$jsx.default)("a", {
+ class: itemClasses.join(' ')
+ }, text));
+ })));
+ })));
+ };
+
+ return Actions;
+}(_modalClass.default);
+
+var _default = Actions;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/actions/actions.js b/www/assets/framework7/cjs/components/actions/actions.js
new file mode 100644
index 000000000..8b1397b1c
--- /dev/null
+++ b/www/assets/framework7/cjs/components/actions/actions.js
@@ -0,0 +1,58 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _actionsClass = _interopRequireDefault(require("./actions-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'actions',
+ params: {
+ actions: {
+ convertToPopover: true,
+ forceToPopover: false,
+ backdrop: true,
+ backdropEl: undefined,
+ cssClass: null,
+ closeByBackdropClick: true,
+ closeOnEscape: false,
+ render: null,
+ renderPopover: null,
+ containerEl: null
+ }
+ },
+ static: {
+ Actions: _actionsClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.actions = (0, _modalMethods.default)({
+ app: app,
+ constructor: _actionsClass.default,
+ defaultSelector: '.actions-modal.modal-in'
+ });
+ },
+ clicks: {
+ '.actions-open': function openActions($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.actions.open(data.actions, data.animate, $clickedEl);
+ },
+ '.actions-close': function closeActions($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.actions.close(data.actions, data.animate, $clickedEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/app/app-class.js b/www/assets/framework7/cjs/components/app/app-class.js
new file mode 100644
index 000000000..b44c4a683
--- /dev/null
+++ b/www/assets/framework7/cjs/components/app/app-class.js
@@ -0,0 +1,378 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+var _getSupport = require("../../shared/get-support");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _eventsClass = _interopRequireDefault(require("../../shared/events-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _loadModule = _interopRequireDefault(require("./load-module"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Framework7 = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Framework7, _Framework7Class);
+
+ function Framework7(params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params) || this; // eslint-disable-next-line
+
+ if (Framework7.instance && typeof window !== 'undefined') {
+ throw new Error("Framework7 is already initialized and can't be initialized more than once");
+ }
+
+ var device = (0, _getDevice.getDevice)({
+ userAgent: params.userAgent || undefined
+ });
+ var support = (0, _getSupport.getSupport)();
+ var passedParams = (0, _utils.extend)({}, params); // App Instance
+
+ var app = _assertThisInitialized(_this);
+
+ app.device = device;
+ app.support = support;
+ var w = (0, _ssrWindow.getWindow)();
+ var d = (0, _ssrWindow.getDocument)();
+ Framework7.instance = app; // Default
+
+ var defaults = {
+ version: '1.0.0',
+ id: 'io.framework7.myapp',
+ el: 'body',
+ theme: 'auto',
+ language: w.navigator.language,
+ routes: [],
+ name: 'Framework7',
+ lazyModulesPath: null,
+ initOnDeviceReady: true,
+ init: true,
+ autoDarkTheme: false,
+ iosTranslucentBars: true,
+ iosTranslucentModals: true,
+ component: undefined,
+ componentUrl: undefined,
+ userAgent: null,
+ url: null
+ }; // Extend defaults with modules params
+
+ app.useModulesParams(defaults); // Extend defaults with passed params
+
+ app.params = (0, _utils.extend)(defaults, params);
+ (0, _utils.extend)(app, {
+ // App Id
+ id: app.params.id,
+ // App Name
+ name: app.params.name,
+ // App version
+ version: app.params.version,
+ // Routes
+ routes: app.params.routes,
+ // Lang
+ language: app.params.language,
+ // Theme
+ theme: function getTheme() {
+ if (app.params.theme === 'auto') {
+ if (device.ios) return 'ios';
+ if (device.desktop && device.electron) return 'aurora';
+ return 'md';
+ }
+
+ return app.params.theme;
+ }(),
+ // Initially passed parameters
+ passedParams: passedParams,
+ online: w.navigator.onLine
+ });
+ if (params.store) app.params.store = params.store; // Save Root
+
+ if (app.$el && app.$el[0]) {
+ app.$el[0].f7 = app;
+ } // Install Modules
+
+
+ app.useModules(); // Init Store
+
+ app.initStore(); // Init
+
+ if (app.params.init) {
+ if (device.cordova && app.params.initOnDeviceReady) {
+ (0, _dom.default)(d).on('deviceready', function () {
+ app.init();
+ });
+ } else {
+ app.init();
+ }
+ } // Return app instance
+
+
+ return app || _assertThisInitialized(_this);
+ }
+
+ var _proto = Framework7.prototype;
+
+ _proto.mount = function mount(rootEl) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var $rootEl = (0, _dom.default)(rootEl || app.params.el).eq(0);
+ app.$el = $rootEl;
+
+ if (app.$el && app.$el[0]) {
+ app.el = app.$el[0];
+ app.el.f7 = app;
+ app.rtl = $rootEl.css('direction') === 'rtl';
+ } // Auto Dark Theme
+
+
+ var DARK = '(prefers-color-scheme: dark)';
+ var LIGHT = '(prefers-color-scheme: light)';
+ app.mq = {};
+
+ if (window.matchMedia) {
+ app.mq.dark = window.matchMedia(DARK);
+ app.mq.light = window.matchMedia(LIGHT);
+ }
+
+ app.colorSchemeListener = function colorSchemeListener(_ref) {
+ var matches = _ref.matches,
+ media = _ref.media;
+
+ if (!matches) {
+ return;
+ }
+
+ var html = document.querySelector('html');
+
+ if (media === DARK) {
+ html.classList.add('theme-dark');
+ app.darkTheme = true;
+ app.emit('darkThemeChange', true);
+ } else if (media === LIGHT) {
+ html.classList.remove('theme-dark');
+ app.darkTheme = false;
+ app.emit('darkThemeChange', false);
+ }
+ };
+
+ app.emit('mount');
+ };
+
+ _proto.initStore = function initStore() {
+ var app = this;
+
+ if (typeof app.params.store !== 'undefined' && app.params.store.__store) {
+ app.store = app.params.store;
+ } else {
+ app.store = app.createStore(app.params.store);
+ }
+ };
+
+ _proto.enableAutoDarkTheme = function enableAutoDarkTheme() {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ if (!window.matchMedia) return;
+ var app = this;
+ var html = document.querySelector('html');
+
+ if (app.mq.dark && app.mq.light) {
+ app.mq.dark.addListener(app.colorSchemeListener);
+ app.mq.light.addListener(app.colorSchemeListener);
+ }
+
+ if (app.mq.dark && app.mq.dark.matches) {
+ html.classList.add('theme-dark');
+ app.darkTheme = true;
+ app.emit('darkThemeChange', true);
+ } else if (app.mq.light && app.mq.light.matches) {
+ html.classList.remove('theme-dark');
+ app.darkTheme = false;
+ app.emit('darkThemeChange', false);
+ }
+ };
+
+ _proto.disableAutoDarkTheme = function disableAutoDarkTheme() {
+ var window = (0, _ssrWindow.getWindow)();
+ if (!window.matchMedia) return;
+ var app = this;
+ if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);
+ if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);
+ };
+
+ _proto.initAppComponent = function initAppComponent(callback) {
+ var app = this;
+ app.router.componentLoader(app.params.component, app.params.componentUrl, {
+ componentOptions: {
+ el: app.$el[0]
+ }
+ }, function (el) {
+ app.$el = (0, _dom.default)(el);
+ app.$el[0].f7 = app;
+ app.$elComponent = el.f7Component;
+ app.el = app.$el[0];
+ if (callback) callback();
+ }, function () {});
+ };
+
+ _proto.init = function init(rootEl) {
+ var app = this;
+ app.mount(rootEl);
+
+ var init = function init() {
+ if (app.initialized) return;
+ app.$el.addClass('framework7-initializing'); // RTL attr
+
+ if (app.rtl) {
+ (0, _dom.default)('html').attr('dir', 'rtl');
+ } // Auto Dark Theme
+
+
+ if (app.params.autoDarkTheme) {
+ app.enableAutoDarkTheme();
+ } // Watch for online/offline state
+
+
+ var window = (0, _ssrWindow.getWindow)();
+ window.addEventListener('offline', function () {
+ app.online = false;
+ app.emit('offline');
+ app.emit('connection', false);
+ });
+ window.addEventListener('online', function () {
+ app.online = true;
+ app.emit('online');
+ app.emit('connection', true);
+ }); // Root class
+
+ app.$el.addClass('framework7-root'); // Theme class
+
+ (0, _dom.default)('html').removeClass('ios md aurora').addClass(app.theme); // iOS Translucent
+
+ var device = app.device;
+
+ if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {
+ (0, _dom.default)('html').addClass('ios-translucent-bars');
+ }
+
+ if (app.params.iosTranslucentModals && app.theme === 'ios' && device.ios) {
+ (0, _dom.default)('html').addClass('ios-translucent-modals');
+ } // Init class
+
+
+ (0, _utils.nextFrame)(function () {
+ app.$el.removeClass('framework7-initializing');
+ }); // Emit, init other modules
+
+ app.initialized = true;
+ app.emit('init');
+ };
+
+ if (app.params.component || app.params.componentUrl) {
+ app.initAppComponent(function () {
+ init();
+ });
+ } else {
+ init();
+ }
+
+ return app;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.loadModule = function loadModule() {
+ return Framework7.loadModule.apply(Framework7, arguments);
+ } // eslint-disable-next-line
+ ;
+
+ _proto.loadModules = function loadModules() {
+ return Framework7.loadModules.apply(Framework7, arguments);
+ };
+
+ _proto.getVnodeHooks = function getVnodeHooks(hook, id) {
+ var app = this;
+ if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];
+ return app.vnodeHooks[hook][id] || [];
+ } // eslint-disable-next-line
+ ;
+
+ _createClass(Framework7, [{
+ key: "$",
+ get: function get() {
+ return _dom.default;
+ }
+ }], [{
+ key: "Dom7",
+ get: function get() {
+ return _dom.default;
+ }
+ }, {
+ key: "$",
+ get: function get() {
+ return _dom.default;
+ }
+ }, {
+ key: "device",
+ get: function get() {
+ return (0, _getDevice.getDevice)();
+ }
+ }, {
+ key: "support",
+ get: function get() {
+ return (0, _getSupport.getSupport)();
+ }
+ }, {
+ key: "Class",
+ get: function get() {
+ return _class.default;
+ }
+ }, {
+ key: "Events",
+ get: function get() {
+ return _eventsClass.default;
+ }
+ }]);
+
+ return Framework7;
+}(_class.default);
+
+Framework7.ModalMethods = _modalMethods.default;
+Framework7.ConstructorMethods = _constructorMethods.default;
+Framework7.loadModule = _loadModule.default;
+
+Framework7.loadModules = function loadModules(modules) {
+ return Promise.all(modules.map(function (module) {
+ return Framework7.loadModule(module);
+ }));
+};
+
+var _default = Framework7;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/app/load-module.js b/www/assets/framework7/cjs/components/app/load-module.js
new file mode 100644
index 000000000..ead837c61
--- /dev/null
+++ b/www/assets/framework7/cjs/components/app/load-module.js
@@ -0,0 +1,155 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _utils = require("../../shared/utils");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var fetchedModules = [];
+
+function loadModule(moduleToLoad) {
+ var Framework7 = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ return new Promise(function (resolve, reject) {
+ var app = Framework7.instance;
+ var modulePath;
+ var moduleObj;
+ var moduleFunc;
+
+ if (!moduleToLoad) {
+ reject(new Error('Framework7: Lazy module must be specified'));
+ return;
+ }
+
+ function install(module) {
+ Framework7.use(module);
+
+ if (app) {
+ app.useModuleParams(module, app.params);
+ app.useModule(module);
+ }
+ }
+
+ if (typeof moduleToLoad === 'string') {
+ var matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);
+
+ if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {
+ if (!app || app && !app.params.lazyModulesPath) {
+ reject(new Error('Framework7: "lazyModulesPath" app parameter must be specified to fetch module by name'));
+ return;
+ }
+
+ modulePath = app.params.lazyModulesPath + "/" + moduleToLoad + "/" + moduleToLoad + ".js";
+ } else {
+ modulePath = moduleToLoad;
+ }
+ } else if (typeof moduleToLoad === 'function') {
+ moduleFunc = moduleToLoad;
+ } else {
+ // considering F7-Plugin object
+ moduleObj = moduleToLoad;
+ }
+
+ if (moduleFunc) {
+ var module = moduleFunc(Framework7, false);
+
+ if (!module) {
+ reject(new Error("Framework7: Can't find Framework7 component in specified component function"));
+ return;
+ } // Check if it was added
+
+
+ if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {
+ resolve();
+ return;
+ } // Install It
+
+
+ install(module);
+ resolve();
+ }
+
+ if (moduleObj) {
+ var _module = moduleObj;
+
+ if (!_module) {
+ reject(new Error("Framework7: Can't find Framework7 component in specified component"));
+ return;
+ } // Check if it was added
+
+
+ if (Framework7.prototype.modules && Framework7.prototype.modules[_module.name]) {
+ resolve();
+ return;
+ } // Install It
+
+
+ install(_module);
+ resolve();
+ }
+
+ if (modulePath) {
+ if (fetchedModules.indexOf(modulePath) >= 0) {
+ resolve();
+ return;
+ }
+
+ fetchedModules.push(modulePath);
+ var scriptLoad = new Promise(function (resolveScript, rejectScript) {
+ Framework7.request.get(modulePath, function (scriptContent) {
+ var callbackId = (0, _utils.id)();
+ var callbackLoadName = "f7_component_loader_callback_" + callbackId;
+ var scriptEl = document.createElement('script');
+ scriptEl.innerHTML = "window." + callbackLoadName + " = function (Framework7, Framework7AutoInstallComponent) {return " + scriptContent.trim() + "}";
+ (0, _dom.default)('head').append(scriptEl);
+ var componentLoader = window[callbackLoadName];
+ delete window[callbackLoadName];
+ (0, _dom.default)(scriptEl).remove();
+ var module = componentLoader(Framework7, false);
+
+ if (!module) {
+ rejectScript(new Error("Framework7: Can't find Framework7 component in " + modulePath + " file"));
+ return;
+ } // Check if it was added
+
+
+ if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {
+ resolveScript();
+ return;
+ } // Install It
+
+
+ install(module);
+ resolveScript();
+ }, function (xhr, status) {
+ rejectScript(xhr, status);
+ });
+ });
+ var styleLoad = new Promise(function (resolveStyle) {
+ Framework7.request.get(modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'), function (styleContent) {
+ var styleEl = document.createElement('style');
+ styleEl.innerHTML = styleContent;
+ (0, _dom.default)('head').append(styleEl);
+ resolveStyle();
+ }, function () {
+ resolveStyle();
+ });
+ });
+ Promise.all([scriptLoad, styleLoad]).then(function () {
+ resolve();
+ }).catch(function (err) {
+ reject(err);
+ });
+ }
+ });
+}
+
+var _default = loadModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/appbar/appbar.js b/www/assets/framework7/cjs/components/appbar/appbar.js
new file mode 100644
index 000000000..c62c4ad68
--- /dev/null
+++ b/www/assets/framework7/cjs/components/appbar/appbar.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'appbar'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/area-chart/area-chart-class.js b/www/assets/framework7/cjs/components/area-chart/area-chart-class.js
new file mode 100644
index 000000000..744c95eff
--- /dev/null
+++ b/www/assets/framework7/cjs/components/area-chart/area-chart-class.js
@@ -0,0 +1,526 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var AreaChart = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(AreaChart, _Framework7Class);
+
+ function AreaChart(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var self = _assertThisInitialized(_this);
+
+ var defaults = (0, _utils.extend)({}, app.params.areaChart); // Extend defaults with modules params
+
+ self.useModulesParams(defaults);
+ self.params = (0, _utils.extend)(defaults, params);
+ var el = self.params.el;
+ if (!el) return self || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return self || _assertThisInitialized(_this);
+ if ($el[0].f7AreaChart) return $el[0].f7AreaChart || _assertThisInitialized(_this);
+ (0, _utils.extend)(self, {
+ app: app,
+ $el: $el,
+ el: $el && $el[0],
+ currentIndex: null,
+ hiddenDatasets: [],
+ f7Tooltip: null,
+ linesOffsets: null
+ });
+ $el[0].f7AreaChart = self; // Install Modules
+
+ self.useModules();
+ self.onMouseEnter = self.onMouseEnter.bind(self);
+ self.onMouseMove = self.onMouseMove.bind(self);
+ self.onMouseLeave = self.onMouseLeave.bind(self);
+ self.onLegendClick = self.onLegendClick.bind(self);
+ self.init();
+ return self || _assertThisInitialized(_this);
+ }
+
+ var _proto = AreaChart.prototype;
+
+ _proto.getVisibleLabels = function getVisibleLabels() {
+ var _this$params = this.params,
+ maxAxisLabels = _this$params.maxAxisLabels,
+ axisLabels = _this$params.axisLabels;
+ if (!maxAxisLabels || axisLabels.length <= maxAxisLabels) return axisLabels;
+ var skipStep = Math.ceil(axisLabels.length / maxAxisLabels);
+ var filtered = axisLabels.filter(function (label, index) {
+ return index % skipStep === 0;
+ });
+ return filtered;
+ };
+
+ _proto.getSummValues = function getSummValues() {
+ var datasets = this.params.datasets;
+ var hiddenDatasets = this.hiddenDatasets;
+ var summValues = [];
+ datasets.filter(function (dataset, index) {
+ return !hiddenDatasets.includes(index);
+ }).forEach(function (_ref) {
+ var values = _ref.values;
+ values.forEach(function (value, valueIndex) {
+ if (!summValues[valueIndex]) summValues[valueIndex] = 0;
+ summValues[valueIndex] += value;
+ });
+ });
+ return summValues;
+ };
+
+ _proto.getChartData = function getChartData() {
+ var _this$params2 = this.params,
+ datasets = _this$params2.datasets,
+ lineChart = _this$params2.lineChart,
+ width = _this$params2.width,
+ height = _this$params2.height;
+ var hiddenDatasets = this.hiddenDatasets;
+ var data = [];
+
+ if (!datasets.length) {
+ return data;
+ }
+
+ var lastValues = datasets[0].values.map(function () {
+ return 0;
+ });
+ var maxValue = 0;
+
+ if (lineChart) {
+ datasets.filter(function (dataset, index) {
+ return !hiddenDatasets.includes(index);
+ }).forEach(function (_ref2) {
+ var values = _ref2.values;
+ var datasetMaxValue = Math.max.apply(Math, values);
+ if (datasetMaxValue > maxValue) maxValue = datasetMaxValue;
+ });
+ } else {
+ maxValue = Math.max.apply(Math, this.getSummValues());
+ }
+
+ datasets.filter(function (dataset, index) {
+ return !hiddenDatasets.includes(index);
+ }).forEach(function (_ref3) {
+ var label = _ref3.label,
+ values = _ref3.values,
+ color = _ref3.color;
+ var points = values.map(function (originalValue, valueIndex) {
+ lastValues[valueIndex] += originalValue;
+ var value = lineChart ? originalValue : lastValues[valueIndex];
+ var x = valueIndex / (values.length - 1) * width;
+ var y = height - value / maxValue * height;
+
+ if (lineChart) {
+ return "" + (valueIndex === 0 ? 'M' : 'L') + x + "," + y;
+ }
+
+ return x + " " + y;
+ });
+
+ if (!lineChart) {
+ points.push(width + " " + height + " 0 " + height);
+ }
+
+ data.push({
+ label: label,
+ points: points.join(' '),
+ color: color
+ });
+ });
+ return data.reverse();
+ };
+
+ _proto.getVerticalLines = function getVerticalLines() {
+ var _this$params3 = this.params,
+ datasets = _this$params3.datasets,
+ width = _this$params3.width;
+ var lines = [];
+
+ if (!datasets.length) {
+ return lines;
+ }
+
+ var values = datasets[0].values;
+ values.forEach(function (value, valueIndex) {
+ var x = valueIndex / (values.length - 1) * width;
+ lines.push(x);
+ });
+ return lines;
+ };
+
+ _proto.toggleDataset = function toggleDataset(index) {
+ var _this2 = this;
+
+ var hiddenDatasets = this.hiddenDatasets,
+ toggleDatasets = this.params.toggleDatasets;
+ if (!toggleDatasets) return;
+
+ if (hiddenDatasets.includes(index)) {
+ hiddenDatasets.splice(hiddenDatasets.indexOf(index), 1);
+ } else {
+ hiddenDatasets.push(index);
+ }
+
+ if (this.$legendEl) {
+ this.$legendEl.find('.area-chart-legend-item').removeClass('area-chart-legend-item-hidden');
+ hiddenDatasets.forEach(function (i) {
+ _this2.$legendEl.find(".area-chart-legend-item[data-index=\"" + i + "\"]").addClass('area-chart-legend-item-hidden');
+ });
+ }
+
+ this.update({}, true);
+ };
+
+ _proto.formatAxisLabel = function formatAxisLabel(label) {
+ var formatAxisLabel = this.params.formatAxisLabel;
+ if (formatAxisLabel) return formatAxisLabel.call(this, label);
+ return label;
+ };
+
+ _proto.formatLegendLabel = function formatLegendLabel(label) {
+ var formatLegendLabel = this.params.formatLegendLabel;
+ if (formatLegendLabel) return formatLegendLabel.call(this, label);
+ return label;
+ };
+
+ _proto.calcLinesOffsets = function calcLinesOffsets() {
+ var lines = this.svgEl.querySelectorAll('line');
+ this.linesOffsets = [];
+
+ for (var i = 0; i < lines.length; i += 1) {
+ this.linesOffsets.push(lines[i].getBoundingClientRect().left);
+ }
+ };
+
+ _proto.formatTooltip = function formatTooltip() {
+ var self = this;
+ var currentIndex = self.currentIndex,
+ hiddenDatasets = self.hiddenDatasets,
+ _self$params = self.params,
+ datasets = _self$params.datasets,
+ axisLabels = _self$params.axisLabels,
+ formatTooltip = _self$params.formatTooltip,
+ formatTooltipTotal = _self$params.formatTooltipTotal,
+ formatTooltipAxisLabel = _self$params.formatTooltipAxisLabel,
+ formatTooltipDataset = _self$params.formatTooltipDataset;
+ if (currentIndex === null) return '';
+ var total = 0;
+ var currentValues = datasets.filter(function (dataset, index) {
+ return !hiddenDatasets.includes(index);
+ }).map(function (dataset) {
+ return {
+ color: dataset.color,
+ label: dataset.label,
+ value: dataset.values[currentIndex]
+ };
+ });
+ currentValues.forEach(function (dataset) {
+ total += dataset.value;
+ });
+
+ if (formatTooltip) {
+ return formatTooltip({
+ index: currentIndex,
+ total: total,
+ datasets: currentValues
+ });
+ }
+
+ var labelText = formatTooltipAxisLabel ? formatTooltipAxisLabel.call(self, axisLabels[currentIndex]) : this.formatAxisLabel(axisLabels[currentIndex]);
+ if (!labelText) labelText = '';
+ var totalText = formatTooltipTotal ? formatTooltipTotal.call(self, total) : total; // prettier-ignore
+
+ var datasetsText = currentValues.length > 0 ? "\n " : ''; // prettier-ignore
+
+ return "\n " + labelText + "
\n " + totalText + "
\n " + datasetsText + "\n ";
+ };
+
+ _proto.setTooltip = function setTooltip() {
+ var self = this;
+ var app = self.app,
+ el = self.el,
+ svgEl = self.svgEl,
+ hiddenDatasets = self.hiddenDatasets,
+ currentIndex = self.currentIndex,
+ _self$params2 = self.params,
+ tooltip = _self$params2.tooltip,
+ datasets = _self$params2.datasets;
+ if (!tooltip) return;
+ var hasVisibleDataSets = datasets.filter(function (dataset, index) {
+ return !hiddenDatasets.includes(index);
+ }).length > 0;
+
+ if (!hasVisibleDataSets) {
+ if (self.f7Tooltip && self.f7Tooltip.hide) self.f7Tooltip.hide();
+ return;
+ }
+
+ if (currentIndex !== null && !self.f7Tooltip) {
+ self.f7Tooltip = app.tooltip.create({
+ trigger: 'manual',
+ containerEl: el,
+ targetEl: svgEl.querySelector("line[data-index=\"" + currentIndex + "\"]"),
+ text: self.formatTooltip(),
+ cssClass: 'area-chart-tooltip'
+ });
+
+ if (self.f7Tooltip && self.f7Tooltip.show) {
+ self.f7Tooltip.show();
+ }
+
+ return;
+ }
+
+ if (!self.f7Tooltip || !self.f7Tooltip.hide || !self.f7Tooltip.show) {
+ return;
+ }
+
+ if (currentIndex !== null) {
+ self.f7Tooltip.setText(self.formatTooltip());
+ self.f7Tooltip.setTargetEl(svgEl.querySelector("line[data-index=\"" + currentIndex + "\"]"));
+ self.f7Tooltip.show();
+ } else {
+ self.f7Tooltip.hide();
+ }
+ };
+
+ _proto.setCurrentIndex = function setCurrentIndex(index) {
+ if (index === this.currentIndex) return;
+ this.currentIndex = index;
+ this.$el.trigger('areachart:select', {
+ index: index
+ });
+ this.emit('local::select areaChartSelect', this, index);
+ this.$svgEl.find('line').removeClass('area-chart-current-line');
+ this.$svgEl.find("line[data-index=\"" + index + "\"]").addClass('area-chart-current-line');
+ this.setTooltip();
+ };
+
+ _proto.onLegendClick = function onLegendClick(e) {
+ var index = parseInt((0, _dom.default)(e.target).closest('.area-chart-legend-item').attr('data-index'), 10);
+ this.toggleDataset(index);
+ };
+
+ _proto.onMouseEnter = function onMouseEnter() {
+ this.calcLinesOffsets();
+ };
+
+ _proto.onMouseMove = function onMouseMove(e) {
+ var self = this;
+
+ if (!self.linesOffsets) {
+ self.calcLinesOffsets();
+ }
+
+ var currentLeft = e.pageX;
+ if (typeof currentLeft === 'undefined') currentLeft = 0;
+ var distances = self.linesOffsets.map(function (left) {
+ return Math.abs(currentLeft - left);
+ });
+ var minDistance = Math.min.apply(Math, distances);
+ var closestIndex = distances.indexOf(minDistance);
+ self.setCurrentIndex(closestIndex);
+ };
+
+ _proto.onMouseLeave = function onMouseLeave() {
+ this.setCurrentIndex(null);
+ };
+
+ _proto.attachEvents = function attachEvents() {
+ var svgEl = this.svgEl,
+ $el = this.$el;
+ if (!svgEl) return;
+ svgEl.addEventListener('mouseenter', this.onMouseEnter);
+ svgEl.addEventListener('mousemove', this.onMouseMove);
+ svgEl.addEventListener('mouseleave', this.onMouseLeave);
+ $el.on('click', '.area-chart-legend-item', this.onLegendClick);
+ };
+
+ _proto.detachEvents = function detachEvents() {
+ var svgEl = this.svgEl,
+ $el = this.$el;
+ if (!svgEl) return;
+ svgEl.removeEventListener('mouseenter', this.onMouseEnter);
+ svgEl.removeEventListener('mousemove', this.onMouseMove);
+ svgEl.removeEventListener('mouseleave', this.onMouseLeave);
+ $el.off('click', '.area-chart-legend-item', this.onLegendClick);
+ };
+
+ _proto.render = function render() {
+ var self = this;
+ var _self$params3 = self.params,
+ lineChart = _self$params3.lineChart,
+ toggleDatasets = _self$params3.toggleDatasets,
+ width = _self$params3.width,
+ height = _self$params3.height,
+ axis = _self$params3.axis,
+ axisLabels = _self$params3.axisLabels,
+ legend = _self$params3.legend,
+ datasets = _self$params3.datasets;
+ var chartData = self.getChartData();
+ var verticalLines = self.getVerticalLines();
+ var visibleLegends = self.getVisibleLabels();
+ var LegendItemTag = toggleDatasets ? 'button' : 'span';
+ return (0, _$jsx.default)("div", null, (0, _$jsx.default)("svg", {
+ xmlns: "http://www.w3.org/2000/svg",
+ width: width,
+ height: height,
+ viewBox: "0 0 " + width + " " + height,
+ preserveAspectRatio: "none"
+ }, chartData.map(function (data) {
+ return lineChart ? (0, _$jsx.default)("path", {
+ stroke: data.color,
+ "fill-rule": "evenodd",
+ d: data.points
+ }) : (0, _$jsx.default)("polygon", {
+ fill: data.color,
+ "fill-rule": "evenodd",
+ points: data.points
+ });
+ }), verticalLines.map(function (line, index) {
+ return (0, _$jsx.default)("line", {
+ "data-index": index,
+ fill: "#000",
+ x1: line,
+ y1: 0,
+ x2: line,
+ y2: height
+ });
+ })), axis && (0, _$jsx.default)("div", {
+ class: "area-chart-axis"
+ }, axisLabels.map(function (label) {
+ return (0, _$jsx.default)("span", null, visibleLegends.includes(label) && (0, _$jsx.default)("span", null, self.formatAxisLabel(label)));
+ })), legend && (0, _$jsx.default)("div", {
+ class: "area-chart-legend"
+ }, datasets.map(function (dataset, index) {
+ return (0, _$jsx.default)(LegendItemTag, {
+ "data-index": index,
+ class: "area-chart-legend-item " + (toggleDatasets ? 'area-chart-legend-button' : ''),
+ _type: toggleDatasets ? 'button' : undefined
+ }, (0, _$jsx.default)("span", {
+ style: "background-color: " + dataset.color
+ }), self.formatLegendLabel(dataset.label));
+ })));
+ };
+
+ _proto.update = function update(newParams, onlySvg) {
+ if (newParams === void 0) {
+ newParams = {};
+ }
+
+ if (onlySvg === void 0) {
+ onlySvg = false;
+ }
+
+ var self = this;
+ var params = self.params;
+ Object.keys(newParams).forEach(function (param) {
+ if (typeof newParams[param] !== 'undefined') {
+ params[param] = newParams[param];
+ }
+ });
+ if (self.$svgEl.length === 0) return self;
+ self.detachEvents();
+ self.$svgEl.remove();
+
+ if (!onlySvg) {
+ self.$axisEl.remove();
+ self.$legendEl.remove();
+ }
+
+ var $rendered = (0, _dom.default)(self.render());
+ var $svgEl = $rendered.find('svg');
+ (0, _utils.extend)(self, {
+ svgEl: $svgEl && $svgEl[0],
+ $svgEl: $svgEl
+ });
+
+ if (!onlySvg) {
+ var $axisEl = $rendered.find('.area-chart-axis');
+ var $legendEl = $rendered.find('.area-chart-legend');
+ (0, _utils.extend)(self, {
+ $axisEl: $axisEl,
+ $legendEl: $legendEl
+ });
+ self.$el.append($axisEl);
+ self.$el.append($legendEl);
+ }
+
+ self.$el.prepend($svgEl);
+ self.attachEvents();
+ return self;
+ };
+
+ _proto.init = function init() {
+ var self = this;
+ var $rendered = (0, _dom.default)(self.render());
+ var $svgEl = $rendered.find('svg');
+ var $axisEl = $rendered.find('.area-chart-axis');
+ var $legendEl = $rendered.find('.area-chart-legend');
+ (0, _utils.extend)(self, {
+ svgEl: $svgEl && $svgEl[0],
+ $svgEl: $svgEl,
+ $axisEl: $axisEl,
+ $legendEl: $legendEl
+ });
+ self.$el.append($svgEl);
+ self.$el.append($axisEl);
+ self.$el.append($legendEl);
+ self.attachEvents();
+ return self;
+ };
+
+ _proto.destroy = function destroy() {
+ var self = this;
+ if (!self.$el || self.destroyed) return;
+ self.$el.trigger('piechart:beforedestroy');
+ self.emit('local::beforeDestroy areaChartBeforeDestroy', self);
+ self.detachEvents();
+ self.$svgEl.remove();
+ self.$axisEl.remove();
+ self.$legendEl.remove();
+
+ if (self.f7Tooltip && self.f7Tooltip.destroy) {
+ self.f7Tooltip.destroy();
+ }
+
+ delete self.$el[0].f7AreaChart;
+ (0, _utils.deleteProps)(self);
+ self.destroyed = true;
+ };
+
+ return AreaChart;
+}(_class.default);
+
+var _default = AreaChart;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/area-chart/area-chart.js b/www/assets/framework7/cjs/components/area-chart/area-chart.js
new file mode 100644
index 000000000..028b23ad8
--- /dev/null
+++ b/www/assets/framework7/cjs/components/area-chart/area-chart.js
@@ -0,0 +1,56 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _areaChartClass = _interopRequireDefault(require("./area-chart-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'areaChart',
+ params: {
+ areaChart: {
+ el: null,
+ lineChart: false,
+ datasets: [],
+ axis: false,
+ axisLabels: [],
+ tooltip: false,
+ legend: false,
+ toggleDatasets: false,
+ width: 640,
+ height: 320,
+ maxAxisLabels: 8,
+ formatAxisLabel: null,
+ formatLegendLabel: null,
+ formatTooltip: null,
+ formatTooltipAxisLabel: null,
+ formatTooltipTotal: null,
+ formatTooltipDataset: null
+ }
+ },
+ create: function create() {
+ var app = this;
+ app.areaChart = (0, _constructorMethods.default)({
+ defaultSelector: '.area-chart',
+ constructor: _areaChartClass.default,
+ app: app,
+ domProp: 'f7AreaChart'
+ });
+
+ app.areaChart.update = function update(el, newParams) {
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var areaChart = app.areaChart.get(el);
+ if (!areaChart) return undefined;
+ areaChart.update(newParams);
+ return areaChart;
+ };
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/autocomplete/autocomplete-class.js b/www/assets/framework7/cjs/components/autocomplete/autocomplete-class.js
new file mode 100644
index 000000000..3afd56422
--- /dev/null
+++ b/www/assets/framework7/cjs/components/autocomplete/autocomplete-class.js
@@ -0,0 +1,975 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Autocomplete = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Autocomplete, _Framework7Class);
+
+ function Autocomplete(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var ac = _assertThisInitialized(_this);
+
+ ac.app = app;
+ var device = (0, _getDevice.getDevice)();
+ var defaults = (0, _utils.extend)({
+ on: {}
+ }, app.params.autocomplete);
+
+ if (typeof defaults.searchbarDisableButton === 'undefined') {
+ defaults.searchbarDisableButton = app.theme !== 'aurora';
+ } // Extend defaults with modules params
+
+
+ ac.useModulesParams(defaults);
+ ac.params = (0, _utils.extend)(defaults, params);
+ var $openerEl;
+
+ if (ac.params.openerEl) {
+ $openerEl = (0, _dom.default)(ac.params.openerEl);
+ if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;
+ }
+
+ var $inputEl;
+
+ if (ac.params.inputEl) {
+ $inputEl = (0, _dom.default)(ac.params.inputEl);
+ if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;
+ }
+
+ var uniqueId = (0, _utils.id)();
+ var url = params.url;
+
+ if (!url && $openerEl && $openerEl.length) {
+ if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {
+ url = $openerEl.find('a').attr('href');
+ }
+ }
+
+ if (!url || url === '#' || url === '') url = ac.params.url;
+ var inputType = ac.params.multiple ? 'checkbox' : 'radio';
+ (0, _utils.extend)(ac, {
+ $openerEl: $openerEl,
+ openerEl: $openerEl && $openerEl[0],
+ $inputEl: $inputEl,
+ inputEl: $inputEl && $inputEl[0],
+ id: uniqueId,
+ url: url,
+ value: ac.params.value || [],
+ inputType: inputType,
+ inputName: inputType + "-" + uniqueId,
+ $modalEl: undefined,
+ $dropdownEl: undefined
+ });
+ var previousQuery = '';
+
+ function onInputChange() {
+ var query = ac.$inputEl.val().trim();
+ if (!ac.params.source) return;
+ ac.params.source.call(ac, query, function (items) {
+ var itemsHTML = '';
+ var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;
+ ac.items = items;
+ var regExp;
+
+ if (ac.params.highlightMatches) {
+ query = query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
+ regExp = new RegExp("(" + query + ")", 'i');
+ }
+
+ var firstValue;
+ var firstItem;
+
+ for (var i = 0; i < limit; i += 1) {
+ var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];
+ var itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];
+
+ if (i === 0) {
+ firstValue = itemValue;
+ firstItem = ac.items[i];
+ }
+
+ itemsHTML += ac.renderItem({
+ value: itemValue,
+ text: ac.params.highlightMatches ? itemText.replace(regExp, '$1') : itemText
+ }, i);
+ }
+
+ if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {
+ itemsHTML += ac.renderItem({
+ placeholder: true,
+ text: ac.params.dropdownPlaceholderText
+ });
+ }
+
+ ac.$dropdownEl.find('ul').html(itemsHTML);
+
+ if (ac.params.typeahead) {
+ if (!firstValue || !firstItem) {
+ return;
+ }
+
+ if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {
+ return;
+ }
+
+ if (previousQuery.toLowerCase() === query.toLowerCase()) {
+ ac.value = [];
+ return;
+ }
+
+ if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {
+ previousQuery = query;
+ ac.value = [];
+ return;
+ }
+
+ $inputEl.val(firstValue);
+ $inputEl[0].setSelectionRange(query.length, firstValue.length);
+ var previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];
+
+ if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {
+ ac.value = [firstItem];
+ ac.emit('local::change autocompleteChange', [firstItem]);
+ }
+ }
+
+ previousQuery = query;
+ });
+ }
+
+ function onPageInputChange() {
+ var inputEl = this;
+ var value = inputEl.value;
+ var isValues = (0, _dom.default)(inputEl).parents('.autocomplete-values').length > 0;
+ var item;
+ var itemValue;
+ var aValue;
+
+ if (isValues) {
+ if (ac.inputType === 'checkbox' && !inputEl.checked) {
+ for (var i = 0; i < ac.value.length; i += 1) {
+ aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];
+
+ if (aValue === value || aValue * 1 === value * 1) {
+ ac.value.splice(i, 1);
+ }
+ }
+
+ ac.updateValues();
+ ac.emit('local::change autocompleteChange', ac.value);
+ }
+
+ return;
+ } // Find Related Item
+
+
+ for (var _i = 0; _i < ac.items.length; _i += 1) {
+ itemValue = typeof ac.items[_i] === 'object' ? ac.items[_i][ac.params.valueProperty] : ac.items[_i];
+ if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[_i];
+ }
+
+ if (ac.inputType === 'radio') {
+ ac.value = [item];
+ } else if (inputEl.checked) {
+ ac.value.push(item);
+ } else {
+ for (var _i2 = 0; _i2 < ac.value.length; _i2 += 1) {
+ aValue = typeof ac.value[_i2] === 'object' ? ac.value[_i2][ac.params.valueProperty] : ac.value[_i2];
+
+ if (aValue === value || aValue * 1 === value * 1) {
+ ac.value.splice(_i2, 1);
+ }
+ }
+ } // Update Values Block
+
+
+ ac.updateValues(); // On Select Callback
+
+ if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {
+ ac.emit('local::change autocompleteChange', ac.value);
+ }
+ }
+
+ function onHtmlClick(e) {
+ var $targetEl = (0, _dom.default)(e.target);
+ if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;
+ ac.close();
+ }
+
+ function onOpenerClick() {
+ ac.open();
+ }
+
+ function onInputFocus() {
+ ac.open();
+ }
+
+ function onInputBlur() {
+ if (ac.$dropdownEl.find('label.active-state').length > 0) return;
+ setTimeout(function () {
+ ac.close();
+ }, 0);
+ }
+
+ function onResize() {
+ ac.positionDropdown();
+ }
+
+ function onKeyDown(e) {
+ if (!ac.opened) return;
+
+ if (e.keyCode === 27) {
+ // ESC
+ e.preventDefault();
+ ac.$inputEl.blur();
+ return;
+ }
+
+ if (e.keyCode === 13) {
+ // Enter
+ var $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');
+
+ if ($selectedItemLabel.length) {
+ e.preventDefault();
+ $selectedItemLabel.trigger('click');
+ ac.$inputEl.blur();
+ return;
+ }
+
+ if (ac.params.typeahead) {
+ e.preventDefault();
+ ac.$inputEl.blur();
+ }
+
+ return;
+ }
+
+ if (e.keyCode !== 40 && e.keyCode !== 38) return;
+ e.preventDefault();
+ var $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');
+ var $newItem;
+
+ if ($selectedItem.length) {
+ $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');
+
+ if (!$newItem.length) {
+ $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);
+ }
+ } else {
+ $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);
+ }
+
+ if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;
+ $selectedItem.removeClass('autocomplete-dropdown-selected');
+ $newItem.addClass('autocomplete-dropdown-selected');
+ }
+
+ function onDropdownClick() {
+ var $clickedEl = (0, _dom.default)(this);
+ var clickedItem;
+
+ for (var i = 0; i < ac.items.length; i += 1) {
+ var itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];
+ var value = $clickedEl.attr('data-value');
+
+ if (itemValue === value || itemValue * 1 === value * 1) {
+ clickedItem = ac.items[i];
+ }
+ }
+
+ if (ac.params.updateInputValueOnSelect) {
+ ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);
+ ac.$inputEl.trigger('input change');
+ }
+
+ ac.value = [clickedItem];
+ ac.emit('local::change autocompleteChange', [clickedItem]);
+ ac.close();
+ }
+
+ ac.attachEvents = function attachEvents() {
+ if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {
+ ac.$openerEl.on('click', onOpenerClick);
+ }
+
+ if (ac.params.openIn === 'dropdown' && ac.$inputEl) {
+ ac.$inputEl.on('focus', onInputFocus);
+ ac.$inputEl.on(ac.params.inputEvents, onInputChange);
+
+ if (device.android) {
+ (0, _dom.default)('html').on('click', onHtmlClick);
+ } else {
+ ac.$inputEl.on('blur', onInputBlur);
+ }
+
+ ac.$inputEl.on('keydown', onKeyDown);
+ }
+ };
+
+ ac.detachEvents = function attachEvents() {
+ if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {
+ ac.$openerEl.off('click', onOpenerClick);
+ }
+
+ if (ac.params.openIn === 'dropdown' && ac.$inputEl) {
+ ac.$inputEl.off('focus', onInputFocus);
+ ac.$inputEl.off(ac.params.inputEvents, onInputChange);
+
+ if (device.android) {
+ (0, _dom.default)('html').off('click', onHtmlClick);
+ } else {
+ ac.$inputEl.off('blur', onInputBlur);
+ }
+
+ ac.$inputEl.off('keydown', onKeyDown);
+ }
+ };
+
+ ac.attachDropdownEvents = function attachDropdownEvents() {
+ ac.$dropdownEl.on('click', 'label', onDropdownClick);
+ app.on('resize', onResize);
+ };
+
+ ac.detachDropdownEvents = function detachDropdownEvents() {
+ ac.$dropdownEl.off('click', 'label', onDropdownClick);
+ app.off('resize', onResize);
+ };
+
+ ac.attachPageEvents = function attachPageEvents() {
+ ac.$el.on('change', 'input[type="radio"], input[type="checkbox"]', onPageInputChange);
+
+ if (ac.params.closeOnSelect && !ac.params.multiple) {
+ ac.$el.once('click', '.list label', function () {
+ (0, _utils.nextTick)(function () {
+ ac.close();
+ });
+ });
+ }
+ };
+
+ ac.detachPageEvents = function detachPageEvents() {
+ ac.$el.off('change', 'input[type="radio"], input[type="checkbox"]', onPageInputChange);
+ }; // Install Modules
+
+
+ ac.useModules(); // Init
+
+ ac.init();
+ return ac || _assertThisInitialized(_this);
+ }
+
+ var _proto = Autocomplete.prototype;
+
+ _proto.positionDropdown = function positionDropdown() {
+ var _$dropdownEl$children;
+
+ var ac = this;
+ var $inputEl = ac.$inputEl,
+ app = ac.app,
+ $dropdownEl = ac.$dropdownEl;
+ var $pageContentEl = $inputEl.parents('.page-content');
+ if ($pageContentEl.length === 0) return;
+ var inputOffset = $inputEl.offset();
+ var inputOffsetWidth = $inputEl[0].offsetWidth;
+ var inputOffsetHeight = $inputEl[0].offsetHeight;
+ var $listEl = $inputEl.parents('.list');
+ var $listParent;
+ $listEl.parents().each(function (parentEl) {
+ if ($listParent) return;
+ var $parentEl = (0, _dom.default)(parentEl);
+ if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;
+ });
+ var listOffset = $listEl.offset();
+ var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
+ var listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;
+ var inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);
+ var inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);
+ var maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;
+ var paddingProp = app.rtl ? 'padding-right' : 'padding-left';
+ var paddingValue;
+
+ if ($listEl.length && !ac.params.expandInput) {
+ paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);
+ }
+
+ $dropdownEl.css({
+ left: ($listEl.length > 0 ? listOffsetLeft : inputOffsetLeft) + "px",
+ top: inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight + "px",
+ width: ($listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth) + "px"
+ });
+ $dropdownEl.children('.autocomplete-dropdown-inner').css((_$dropdownEl$children = {
+ maxHeight: maxHeight + "px"
+ }, _$dropdownEl$children[paddingProp] = $listEl.length > 0 && !ac.params.expandInput ? paddingValue + "px" : '', _$dropdownEl$children));
+ };
+
+ _proto.focus = function focus() {
+ var ac = this;
+ ac.$el.find('input[type=search]').focus();
+ };
+
+ _proto.source = function source(query) {
+ var ac = this;
+ if (!ac.params.source) return;
+ var $el = ac.$el;
+ ac.params.source.call(ac, query, function (items) {
+ var itemsHTML = '';
+ var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;
+ ac.items = items;
+
+ for (var i = 0; i < limit; i += 1) {
+ var selected = false;
+ var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];
+
+ for (var j = 0; j < ac.value.length; j += 1) {
+ var aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];
+ if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;
+ }
+
+ itemsHTML += ac.renderItem({
+ value: itemValue,
+ text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],
+ inputType: ac.inputType,
+ id: ac.id,
+ inputName: ac.inputName,
+ selected: selected
+ }, i);
+ }
+
+ $el.find('.autocomplete-found ul').html(itemsHTML);
+
+ if (items.length === 0) {
+ if (query.length !== 0) {
+ $el.find('.autocomplete-not-found').show();
+ $el.find('.autocomplete-found, .autocomplete-values').hide();
+ } else {
+ $el.find('.autocomplete-values').show();
+ $el.find('.autocomplete-found, .autocomplete-not-found').hide();
+ }
+ } else {
+ $el.find('.autocomplete-found').show();
+ $el.find('.autocomplete-not-found, .autocomplete-values').hide();
+ }
+ });
+ };
+
+ _proto.updateValues = function updateValues() {
+ var ac = this;
+ var valuesHTML = '';
+
+ for (var i = 0; i < ac.value.length; i += 1) {
+ valuesHTML += ac.renderItem({
+ value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],
+ text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],
+ inputType: ac.inputType,
+ id: ac.id,
+ inputName: ac.inputName + "-checked}",
+ selected: true
+ }, i);
+ }
+
+ ac.$el.find('.autocomplete-values ul').html(valuesHTML);
+ };
+
+ _proto.preloaderHide = function preloaderHide() {
+ var ac = this;
+
+ if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {
+ ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');
+ } else {
+ (0, _dom.default)('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');
+ }
+ };
+
+ _proto.preloaderShow = function preloaderShow() {
+ var ac = this;
+
+ if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {
+ ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');
+ } else {
+ (0, _dom.default)('.autocomplete-preloader').addClass('autocomplete-preloader-visible');
+ }
+ };
+
+ _proto.renderPreloader = function renderPreloader() {
+ var ac = this;
+ var preloaders = {
+ iosPreloaderContent: _utils.iosPreloaderContent,
+ mdPreloaderContent: _utils.mdPreloaderContent,
+ auroraPreloaderContent: _utils.auroraPreloaderContent
+ };
+ return (0, _$jsx.default)("div", {
+ class: "autocomplete-preloader preloader " + (ac.params.preloaderColor ? "color-" + ac.params.preloaderColor : '')
+ }, preloaders[ac.app.theme + "PreloaderContent"] || '');
+ };
+
+ _proto.renderSearchbar = function renderSearchbar() {
+ var ac = this;
+ if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);
+ return (0, _$jsx.default)("form", {
+ class: "searchbar"
+ }, (0, _$jsx.default)("div", {
+ class: "searchbar-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "searchbar-input-wrap"
+ }, (0, _$jsx.default)("input", {
+ type: "search",
+ spellcheck: ac.params.searchbarSpellcheck || 'false',
+ placeholder: ac.params.searchbarPlaceholder
+ }), (0, _$jsx.default)("i", {
+ class: "searchbar-icon"
+ }), (0, _$jsx.default)("span", {
+ class: "input-clear-button"
+ })), ac.params.searchbarDisableButton && (0, _$jsx.default)("span", {
+ class: "searchbar-disable-button"
+ }, ac.params.searchbarDisableText)));
+ };
+
+ _proto.renderItem = function renderItem(item, index) {
+ var ac = this;
+ if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);
+ var itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/"/g, '"') : item.value;
+
+ if (ac.params.openIn !== 'dropdown') {
+ return (0, _$jsx.default)("li", null, (0, _$jsx.default)("label", {
+ class: "item-" + item.inputType + " item-content"
+ }, (0, _$jsx.default)("input", {
+ type: item.inputType,
+ name: item.inputName,
+ value: itemValue,
+ _checked: item.selected
+ }), (0, _$jsx.default)("i", {
+ class: "icon icon-" + item.inputType
+ }), (0, _$jsx.default)("div", {
+ class: "item-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "item-title"
+ }, item.text))));
+ } // Dropdown
+
+
+ if (!item.placeholder) {
+ return (0, _$jsx.default)("li", null, (0, _$jsx.default)("label", {
+ class: "item-radio item-content",
+ "data-value": itemValue
+ }, (0, _$jsx.default)("div", {
+ class: "item-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "item-title"
+ }, item.text))));
+ } // Dropwdown placeholder
+
+
+ return (0, _$jsx.default)("li", {
+ class: "autocomplete-dropdown-placeholder"
+ }, (0, _$jsx.default)("label", {
+ class: "item-content"
+ }, (0, _$jsx.default)("div", {
+ class: "item-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "item-title"
+ }, item.text))));
+ };
+
+ _proto.renderNavbar = function renderNavbar() {
+ var ac = this;
+ if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);
+ var pageTitle = ac.params.pageTitle;
+
+ if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {
+ pageTitle = ac.$openerEl.find('.item-title').text().trim();
+ }
+
+ var inPopup = ac.params.openIn === 'popup'; // eslint-disable-next-line
+
+ var navbarLeft = inPopup ? ac.params.preloader && (0, _$jsx.default)("div", {
+ class: "left"
+ }, ac.renderPreloader()) : (0, _$jsx.default)("div", {
+ class: "left sliding"
+ }, (0, _$jsx.default)("a", {
+ class: "link back"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-back"
+ }), (0, _$jsx.default)("span", {
+ class: "if-not-md"
+ }, ac.params.pageBackLinkText)));
+ var navbarRight = inPopup ? (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link popup-close",
+ "data-popup": ".autocomplete-popup"
+ }, ac.params.popupCloseLinkText)) : ac.params.preloader && (0, _$jsx.default)("div", {
+ class: "right"
+ }, ac.renderPreloader());
+ return (0, _$jsx.default)("div", {
+ class: "navbar " + (ac.params.navbarColorTheme ? "color-" + ac.params.navbarColorTheme : '')
+ }, (0, _$jsx.default)("div", {
+ class: "navbar-bg"
+ }), (0, _$jsx.default)("div", {
+ class: "navbar-inner " + (ac.params.navbarColorTheme ? "color-" + ac.params.navbarColorTheme : '')
+ }, navbarLeft, pageTitle && (0, _$jsx.default)("div", {
+ class: "title sliding"
+ }, pageTitle), navbarRight, (0, _$jsx.default)("div", {
+ class: "subnavbar sliding"
+ }, ac.renderSearchbar())));
+ };
+
+ _proto.renderDropdown = function renderDropdown() {
+ var ac = this;
+ if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);
+ return (0, _$jsx.default)("div", {
+ class: "autocomplete-dropdown"
+ }, (0, _$jsx.default)("div", {
+ class: "autocomplete-dropdown-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "list " + (!ac.params.expandInput ? 'no-safe-areas' : '')
+ }, (0, _$jsx.default)("ul", null))), ac.params.preloader && ac.renderPreloader());
+ };
+
+ _proto.renderPage = function renderPage(inPopup) {
+ var ac = this;
+ if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);
+ return (0, _$jsx.default)("div", {
+ class: "page page-with-subnavbar autocomplete-page",
+ "data-name": "autocomplete-page"
+ }, ac.renderNavbar(inPopup), (0, _$jsx.default)("div", {
+ class: "searchbar-backdrop"
+ }), (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, (0, _$jsx.default)("div", {
+ class: "list autocomplete-list autocomplete-found autocomplete-list-" + ac.id + " " + (ac.params.formColorTheme ? "color-" + ac.params.formColorTheme : '')
+ }, (0, _$jsx.default)("ul", null)), (0, _$jsx.default)("div", {
+ class: "list autocomplete-not-found"
+ }, (0, _$jsx.default)("ul", null, (0, _$jsx.default)("li", {
+ class: "item-content"
+ }, (0, _$jsx.default)("div", {
+ class: "item-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "item-title"
+ }, ac.params.notFoundText))))), (0, _$jsx.default)("div", {
+ class: "list autocomplete-values"
+ }, (0, _$jsx.default)("ul", null))));
+ };
+
+ _proto.renderPopup = function renderPopup() {
+ var ac = this;
+ if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);
+ return (0, _$jsx.default)("div", {
+ class: "popup autocomplete-popup"
+ }, (0, _$jsx.default)("div", {
+ class: "view"
+ }, ac.renderPage(true), ";"));
+ };
+
+ _proto.onOpen = function onOpen(type, el) {
+ var ac = this;
+ var app = ac.app;
+ var $el = (0, _dom.default)(el);
+ ac.$el = $el;
+ ac.el = $el[0];
+ ac.openedIn = type;
+ ac.opened = true;
+
+ if (ac.params.openIn === 'dropdown') {
+ ac.attachDropdownEvents();
+ ac.$dropdownEl.addClass('autocomplete-dropdown-in');
+ ac.$inputEl.trigger('input');
+ } else {
+ // Init SB
+ var $searchbarEl = $el.find('.searchbar');
+
+ if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {
+ $searchbarEl = (0, _dom.default)(app.navbar.getElByPage($el)).find('.searchbar');
+ }
+
+ ac.searchbar = app.searchbar.create({
+ el: $searchbarEl,
+ backdropEl: $el.find('.searchbar-backdrop'),
+ customSearch: true,
+ on: {
+ search: function search(sb, query) {
+ if (query.length === 0 && ac.searchbar.enabled) {
+ ac.searchbar.backdropShow();
+ } else {
+ ac.searchbar.backdropHide();
+ }
+
+ ac.source(query);
+ }
+ }
+ }); // Attach page events
+
+ ac.attachPageEvents(); // Update Values On Page Init
+
+ ac.updateValues(); // Source on load
+
+ if (ac.params.requestSourceOnOpen) ac.source('');
+ }
+
+ ac.emit('local::open autocompleteOpen', ac);
+ };
+
+ _proto.autoFocus = function autoFocus() {
+ var ac = this;
+
+ if (ac.searchbar && ac.searchbar.$inputEl) {
+ ac.searchbar.$inputEl.focus();
+ }
+
+ return ac;
+ };
+
+ _proto.onOpened = function onOpened() {
+ var ac = this;
+
+ if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {
+ ac.autoFocus();
+ }
+
+ ac.emit('local::opened autocompleteOpened', ac);
+ };
+
+ _proto.onClose = function onClose() {
+ var ac = this;
+ if (ac.destroyed) return; // Destroy SB
+
+ if (ac.searchbar && ac.searchbar.destroy) {
+ ac.searchbar.destroy();
+ ac.searchbar = null;
+ delete ac.searchbar;
+ }
+
+ if (ac.params.openIn === 'dropdown') {
+ ac.detachDropdownEvents();
+ ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();
+ ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');
+ } else {
+ ac.detachPageEvents();
+ }
+
+ ac.emit('local::close autocompleteClose', ac);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var ac = this;
+ if (ac.destroyed) return;
+ ac.opened = false;
+ ac.$el = null;
+ ac.el = null;
+ delete ac.$el;
+ delete ac.el;
+ ac.emit('local::closed autocompleteClosed', ac);
+ };
+
+ _proto.openPage = function openPage() {
+ var ac = this;
+ if (ac.opened) return ac;
+ var pageHtml = ac.renderPage();
+ ac.view.router.navigate({
+ url: ac.url,
+ route: {
+ content: pageHtml,
+ path: ac.url,
+ on: {
+ pageBeforeIn: function pageBeforeIn(e, page) {
+ ac.onOpen('page', page.el);
+ },
+ pageAfterIn: function pageAfterIn(e, page) {
+ ac.onOpened('page', page.el);
+ },
+ pageBeforeOut: function pageBeforeOut(e, page) {
+ ac.onClose('page', page.el);
+ },
+ pageAfterOut: function pageAfterOut(e, page) {
+ ac.onClosed('page', page.el);
+ }
+ },
+ options: {
+ animate: ac.params.animate
+ }
+ }
+ });
+ return ac;
+ };
+
+ _proto.openPopup = function openPopup() {
+ var ac = this;
+ if (ac.opened) return ac;
+ var popupHtml = ac.renderPopup();
+ var popupParams = {
+ content: popupHtml,
+ animate: ac.params.animate,
+ push: ac.params.popupPush,
+ swipeToClose: ac.params.popupSwipeToClose,
+ on: {
+ popupOpen: function popupOpen(popup) {
+ ac.onOpen('popup', popup.el);
+ },
+ popupOpened: function popupOpened(popup) {
+ ac.onOpened('popup', popup.el);
+ },
+ popupClose: function popupClose(popup) {
+ ac.onClose('popup', popup.el);
+ },
+ popupClosed: function popupClosed(popup) {
+ ac.onClosed('popup', popup.el);
+ }
+ }
+ };
+
+ if (ac.params.routableModals && ac.view) {
+ ac.view.router.navigate({
+ url: ac.url,
+ route: {
+ path: ac.url,
+ popup: popupParams
+ }
+ });
+ } else {
+ ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);
+ }
+
+ return ac;
+ };
+
+ _proto.openDropdown = function openDropdown() {
+ var ac = this;
+
+ if (!ac.$dropdownEl) {
+ ac.$dropdownEl = (0, _dom.default)(ac.renderDropdown());
+ }
+
+ var $listEl = ac.$inputEl.parents('.list');
+
+ if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {
+ ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');
+ }
+
+ var $pageContentEl = ac.$inputEl.parents('.page-content');
+
+ if (ac.params.dropdownContainerEl) {
+ (0, _dom.default)(ac.params.dropdownContainerEl).append(ac.$dropdownEl);
+ } else if ($pageContentEl.length === 0) {
+ ac.$dropdownEl.insertAfter(ac.$inputEl);
+ } else {
+ ac.positionDropdown();
+ $pageContentEl.append(ac.$dropdownEl);
+ }
+
+ ac.onOpen('dropdown', ac.$dropdownEl);
+ ac.onOpened('dropdown', ac.$dropdownEl);
+ };
+
+ _proto.open = function open() {
+ var ac = this;
+ if (ac.opened) return ac;
+ var openIn = ac.params.openIn;
+ ac["open" + openIn.split('').map(function (el, index) {
+ if (index === 0) return el.toUpperCase();
+ return el;
+ }).join('')]();
+ return ac;
+ };
+
+ _proto.close = function close() {
+ var ac = this;
+ if (!ac.opened) return ac;
+
+ if (ac.params.openIn === 'dropdown') {
+ ac.onClose();
+ ac.onClosed();
+ } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {
+ ac.view.router.back({
+ animate: ac.params.animate
+ });
+ } else {
+ ac.modal.once('modalClosed', function () {
+ (0, _utils.nextTick)(function () {
+ if (ac.destroyed) return;
+ ac.modal.destroy();
+ delete ac.modal;
+ });
+ });
+ ac.modal.close();
+ }
+
+ return ac;
+ };
+
+ _proto.init = function init() {
+ var ac = this;
+ ac.attachEvents();
+ };
+
+ _proto.destroy = function destroy() {
+ var ac = this;
+ ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);
+ ac.detachEvents();
+
+ if (ac.$inputEl && ac.$inputEl[0]) {
+ delete ac.$inputEl[0].f7Autocomplete;
+ }
+
+ if (ac.$openerEl && ac.$openerEl[0]) {
+ delete ac.$openerEl[0].f7Autocomplete;
+ }
+
+ (0, _utils.deleteProps)(ac);
+ ac.destroyed = true;
+ };
+
+ _createClass(Autocomplete, [{
+ key: "view",
+ get: function get() {
+ var ac = this;
+ var $openerEl = ac.$openerEl,
+ $inputEl = ac.$inputEl,
+ app = ac.app;
+ var view;
+
+ if (ac.params.view) {
+ view = ac.params.view;
+ } else if ($openerEl || $inputEl) {
+ var $el = $openerEl || $inputEl;
+ view = $el.closest('.view').length && $el.closest('.view')[0].f7View;
+ }
+
+ if (!view) view = app.views.main;
+ return view;
+ }
+ }]);
+
+ return Autocomplete;
+}(_class.default);
+
+var _default = Autocomplete;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/autocomplete/autocomplete.js b/www/assets/framework7/cjs/components/autocomplete/autocomplete.js
new file mode 100644
index 000000000..4e064007b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/autocomplete/autocomplete.js
@@ -0,0 +1,93 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _autocompleteClass = _interopRequireDefault(require("./autocomplete-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'autocomplete',
+ params: {
+ autocomplete: {
+ openerEl: undefined,
+ inputEl: undefined,
+ view: undefined,
+ // DropDown
+ dropdownContainerEl: undefined,
+ dropdownPlaceholderText: undefined,
+ typeahead: false,
+ highlightMatches: true,
+ expandInput: false,
+ updateInputValueOnSelect: true,
+ inputEvents: 'input',
+ value: undefined,
+ multiple: false,
+ source: undefined,
+ limit: undefined,
+ valueProperty: 'id',
+ textProperty: 'text',
+ openIn: 'page',
+ // or 'popup' or 'dropdown'
+ pageBackLinkText: 'Back',
+ popupCloseLinkText: 'Close',
+ pageTitle: undefined,
+ searchbarPlaceholder: 'Search...',
+ searchbarDisableText: 'Cancel',
+ searchbarDisableButton: undefined,
+ searchbarSpellcheck: false,
+ popupPush: false,
+ popupSwipeToClose: undefined,
+ animate: true,
+ autoFocus: false,
+ closeOnSelect: false,
+ notFoundText: 'Nothing found',
+ requestSourceOnOpen: false,
+ // Preloader
+ preloaderColor: undefined,
+ preloader: false,
+ // Colors
+ formColorTheme: undefined,
+ navbarColorTheme: undefined,
+ // Routing
+ routableModals: false,
+ url: 'select/',
+ // Custom render functions
+ renderDropdown: undefined,
+ renderPage: undefined,
+ renderPopup: undefined,
+ renderItem: undefined,
+ renderSearchbar: undefined,
+ renderNavbar: undefined
+ }
+ },
+ static: {
+ Autocomplete: _autocompleteClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.autocomplete = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: undefined,
+ constructor: _autocompleteClass.default,
+ app: app,
+ domProp: 'f7Autocomplete'
+ }), {
+ open: function open(autocompleteEl) {
+ var ac = app.autocomplete.get(autocompleteEl);
+ if (ac && ac.open) return ac.open();
+ return undefined;
+ },
+ close: function close(autocompleteEl) {
+ var ac = app.autocomplete.get(autocompleteEl);
+ if (ac && ac.close) return ac.close();
+ return undefined;
+ }
+ });
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/badge/badge.js b/www/assets/framework7/cjs/components/badge/badge.js
new file mode 100644
index 000000000..30228dd38
--- /dev/null
+++ b/www/assets/framework7/cjs/components/badge/badge.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'badge'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/block/block.js b/www/assets/framework7/cjs/components/block/block.js
new file mode 100644
index 000000000..b102d2734
--- /dev/null
+++ b/www/assets/framework7/cjs/components/block/block.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'block'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/button/button.js b/www/assets/framework7/cjs/components/button/button.js
new file mode 100644
index 000000000..16e0059c8
--- /dev/null
+++ b/www/assets/framework7/cjs/components/button/button.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'button'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/calendar/calendar-class.js b/www/assets/framework7/cjs/components/calendar/calendar-class.js
new file mode 100644
index 000000000..a19217fd5
--- /dev/null
+++ b/www/assets/framework7/cjs/components/calendar/calendar-class.js
@@ -0,0 +1,2095 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _getDevice = require("../../shared/get-device");
+
+var _getSupport = require("../../shared/get-support");
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Calendar = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Calendar, _Framework7Class);
+
+ function Calendar(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var calendar = _assertThisInitialized(_this);
+
+ calendar.params = (0, _utils.extend)({}, app.params.calendar, params);
+ var $containerEl;
+
+ if (calendar.params.containerEl) {
+ $containerEl = (0, _dom.default)(calendar.params.containerEl);
+ if ($containerEl.length === 0) return calendar || _assertThisInitialized(_this);
+ }
+
+ var $inputEl;
+
+ if (calendar.params.inputEl) {
+ $inputEl = (0, _dom.default)(calendar.params.inputEl);
+ }
+
+ var isHorizontal = calendar.params.direction === 'horizontal';
+ var inverter = 1;
+
+ if (isHorizontal) {
+ inverter = app.rtl ? -1 : 1;
+ }
+
+ (0, _utils.extend)(calendar, {
+ app: app,
+ $containerEl: $containerEl,
+ containerEl: $containerEl && $containerEl[0],
+ inline: $containerEl && $containerEl.length > 0,
+ $inputEl: $inputEl,
+ inputEl: $inputEl && $inputEl[0],
+ initialized: false,
+ opened: false,
+ url: calendar.params.url,
+ isHorizontal: isHorizontal,
+ inverter: inverter,
+ animating: false,
+ allowTouchMove: true,
+ hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple
+ });
+
+ calendar.dayFormatter = function (date) {
+ var formatter = new Intl.DateTimeFormat(calendar.params.locale, {
+ day: 'numeric'
+ });
+ return formatter.format(date).replace(/日/, '');
+ };
+
+ calendar.monthFormatter = function (date) {
+ var formatter = new Intl.DateTimeFormat(calendar.params.locale, {
+ month: 'long'
+ });
+ return formatter.format(date);
+ };
+
+ calendar.yearFormatter = function (date) {
+ var formatter = new Intl.DateTimeFormat(calendar.params.locale, {
+ year: 'numeric'
+ });
+ return formatter.format(date);
+ };
+
+ calendar.timeSelectorFormatter = function (date) {
+ var formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);
+ return formatter.format(date);
+ };
+
+ var timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();
+ calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0; // Auto names
+
+ var _calendar$params = calendar.params,
+ monthNames = _calendar$params.monthNames,
+ monthNamesShort = _calendar$params.monthNamesShort,
+ dayNames = _calendar$params.dayNames,
+ dayNamesShort = _calendar$params.dayNamesShort;
+
+ var _calendar$getIntlName = calendar.getIntlNames(),
+ monthNamesIntl = _calendar$getIntlName.monthNamesIntl,
+ monthNamesShortIntl = _calendar$getIntlName.monthNamesShortIntl,
+ dayNamesIntl = _calendar$getIntlName.dayNamesIntl,
+ dayNamesShortIntl = _calendar$getIntlName.dayNamesShortIntl;
+
+ if (monthNames === 'auto') monthNames = monthNamesIntl;
+ if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;
+ if (dayNames === 'auto') dayNames = dayNamesIntl;
+ if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;
+ (0, _utils.extend)(calendar, {
+ monthNames: monthNames,
+ monthNamesShort: monthNamesShort,
+ dayNames: dayNames,
+ dayNamesShort: dayNamesShort
+ });
+
+ function onInputClick() {
+ calendar.open();
+ }
+
+ function onInputFocus(e) {
+ e.preventDefault();
+ }
+
+ function onInputClear() {
+ calendar.setValue([]);
+
+ if (calendar.opened) {
+ calendar.update();
+ }
+ }
+
+ function onHtmlClick(e) {
+ var $targetEl = (0, _dom.default)(e.target);
+ if (calendar.destroyed || !calendar.params) return;
+ if (calendar.isPopover()) return;
+ if (!calendar.opened || calendar.closing) return;
+ if ($targetEl.closest('[class*="backdrop"]').length) return;
+
+ if ($inputEl && $inputEl.length > 0) {
+ if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {
+ calendar.close();
+ }
+ } else if ((0, _dom.default)(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {
+ calendar.close();
+ }
+ } // Events
+
+
+ (0, _utils.extend)(calendar, {
+ attachInputEvents: function attachInputEvents() {
+ calendar.$inputEl.on('click', onInputClick);
+ calendar.$inputEl.on('input:clear', onInputClear);
+
+ if (calendar.params.inputReadOnly) {
+ calendar.$inputEl.on('focus mousedown', onInputFocus);
+
+ if (calendar.$inputEl[0]) {
+ calendar.$inputEl[0].f7ValidateReadonly = true;
+ }
+ }
+ },
+ detachInputEvents: function detachInputEvents() {
+ calendar.$inputEl.off('click', onInputClick);
+ calendar.$inputEl.off('input:clear', onInputClear);
+
+ if (calendar.params.inputReadOnly) {
+ calendar.$inputEl.off('focus mousedown', onInputFocus);
+
+ if (calendar.$inputEl[0]) {
+ delete calendar.$inputEl[0].f7ValidateReadonly;
+ }
+ }
+ },
+ attachHtmlEvents: function attachHtmlEvents() {
+ app.on('click', onHtmlClick);
+ },
+ detachHtmlEvents: function detachHtmlEvents() {
+ app.off('click', onHtmlClick);
+ }
+ });
+
+ calendar.attachCalendarEvents = function attachCalendarEvents() {
+ var allowItemClick = true;
+ var isTouched;
+ var isMoved;
+ var touchStartX;
+ var touchStartY;
+ var touchCurrentX;
+ var touchCurrentY;
+ var touchStartTime;
+ var touchEndTime;
+ var currentTranslate;
+ var wrapperWidth;
+ var wrapperHeight;
+ var percentage;
+ var touchesDiff;
+ var isScrolling;
+ var $el = calendar.$el,
+ $wrapperEl = calendar.$wrapperEl;
+
+ function handleTouchStart(e) {
+ if (isMoved || isTouched) return;
+ isTouched = true;
+ touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentX = touchStartX;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchCurrentY = touchStartY;
+ touchStartTime = new Date().getTime();
+ percentage = 0;
+ allowItemClick = true;
+ isScrolling = undefined;
+ currentTranslate = calendar.monthsTranslate;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var isH = calendar.isHorizontal;
+ touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
+ }
+
+ if (isH && isScrolling || !calendar.allowTouchMove) {
+ isTouched = false;
+ return;
+ }
+
+ e.preventDefault();
+
+ if (calendar.animating) {
+ isTouched = false;
+ return;
+ }
+
+ allowItemClick = false;
+
+ if (!isMoved) {
+ // First move
+ isMoved = true;
+ wrapperWidth = $wrapperEl[0].offsetWidth;
+ wrapperHeight = $wrapperEl[0].offsetHeight;
+ $wrapperEl.transition(0);
+ }
+
+ touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;
+ percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);
+ currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100; // Transform wrapper
+
+ $wrapperEl.transform("translate3d(" + (isH ? currentTranslate : 0) + "%, " + (isH ? 0 : currentTranslate) + "%, 0)");
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ touchEndTime = new Date().getTime();
+
+ if (touchEndTime - touchStartTime < 300) {
+ if (Math.abs(touchesDiff) < 10) {
+ calendar.resetMonth();
+ } else if (touchesDiff >= 10) {
+ if (app.rtl) calendar.nextMonth();else calendar.prevMonth();
+ } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();
+ } else if (percentage <= -0.5) {
+ if (app.rtl) calendar.prevMonth();else calendar.nextMonth();
+ } else if (percentage >= 0.5) {
+ if (app.rtl) calendar.nextMonth();else calendar.prevMonth();
+ } else {
+ calendar.resetMonth();
+ } // Allow click
+
+
+ setTimeout(function () {
+ allowItemClick = true;
+ }, 100);
+ }
+
+ function handleDayClick(e) {
+ if (!allowItemClick) return;
+ var $dayEl = (0, _dom.default)(e.target).parents('.calendar-day');
+
+ if ($dayEl.length === 0 && (0, _dom.default)(e.target).hasClass('calendar-day')) {
+ $dayEl = (0, _dom.default)(e.target);
+ }
+
+ if ($dayEl.length === 0) return;
+ if ($dayEl.hasClass('calendar-day-disabled')) return;
+
+ if (!calendar.params.rangePicker) {
+ if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();
+ if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();
+ }
+
+ var dateYear = parseInt($dayEl.attr('data-year'), 10);
+ var dateMonth = parseInt($dayEl.attr('data-month'), 10);
+ var dateDay = parseInt($dayEl.attr('data-day'), 10);
+ calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);
+
+ if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {
+ var valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);
+
+ if (calendar.hasTimePicker) {
+ if (calendar.value && calendar.value[0]) {
+ valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());
+ } else {
+ valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());
+ }
+ }
+
+ calendar.addValue(valueToAdd);
+ }
+
+ if (calendar.params.closeOnSelect) {
+ if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {
+ calendar.close();
+ }
+ }
+ }
+
+ function onNextMonthClick() {
+ calendar.nextMonth();
+ }
+
+ function onPrevMonthClick() {
+ calendar.prevMonth();
+ }
+
+ function onNextYearClick() {
+ calendar.nextYear();
+ }
+
+ function onPrevYearClick() {
+ calendar.prevYear();
+ }
+
+ function onMonthSelectorClick() {
+ $el.append(calendar.renderMonthPicker());
+ }
+
+ function onMonthSelectorItemClick() {
+ var $clickedEl = (0, _dom.default)(this);
+
+ if ($clickedEl.hasClass('calendar-month-picker-item-current')) {
+ $el.find('.calendar-month-picker').remove();
+ return;
+ }
+
+ $el.find('.calendar-month-picker-item-current').add($clickedEl).toggleClass('calendar-month-picker-item-current');
+ var index = $clickedEl.index();
+ var localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
+ var monthIndex = calendar.currentMonth;
+ var diff = localeMonthIndex - monthIndex;
+ var diffIndex = index - diff;
+ calendar.setYearMonth(calendar.currentYear, diffIndex, 0);
+ setTimeout(function () {
+ $el.find('.calendar-month-picker').remove();
+ }, 200);
+ }
+
+ function onYearSelectorClick() {
+ $el.append(calendar.renderYearPicker());
+ var $currentEl = $el.find('.calendar-year-picker-item-current');
+ var $yearPickerEl = $el.find('.calendar-year-picker');
+ if (!$currentEl || !$currentEl.length) return;
+ $yearPickerEl.scrollTop($currentEl[0].offsetTop - $yearPickerEl[0].offsetHeight / 2 + $currentEl[0].offsetHeight / 2);
+ }
+
+ function onYearSelectorItemClick() {
+ var $clickedEl = (0, _dom.default)(this);
+
+ if ($clickedEl.hasClass('calendar-year-picker-item-current')) {
+ $el.find('.calendar-year-picker').remove();
+ return;
+ }
+
+ $el.find('.calendar-year-picker-item-current').add($clickedEl).toggleClass('calendar-year-picker-item-current');
+ var year = parseInt($clickedEl.attr('data-year'), 10);
+ calendar.setYearMonth(year, undefined, 0);
+ setTimeout(function () {
+ $el.find('.calendar-year-picker').remove();
+ }, 200);
+ }
+
+ function onTimeSelectorClick() {
+ calendar.openTimePicker();
+ }
+
+ function onTimePickerCloseClick() {
+ calendar.closeTimePicker();
+ }
+
+ var passiveListener = app.touchEvents.start === 'touchstart' && (0, _getSupport.getSupport)().passiveListener ? {
+ passive: true,
+ capture: false
+ } : false; // Selectors clicks
+
+ $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);
+ $el.find('.calendar-next-month-button').on('click', onNextMonthClick);
+ $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);
+ $el.find('.calendar-next-year-button').on('click', onNextYearClick);
+
+ if (calendar.params.monthPicker) {
+ $el.find('.current-month-value').on('click', onMonthSelectorClick);
+ $el.on('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
+ }
+
+ if (calendar.params.yearPicker) {
+ $el.find('.current-year-value').on('click', onYearSelectorClick);
+ $el.on('click', '.calendar-year-picker-item', onYearSelectorItemClick);
+ }
+
+ if (calendar.hasTimePicker) {
+ $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);
+ $el.on('click', '.calendar-time-picker-close', onTimePickerCloseClick);
+ } // Day clicks
+
+
+ $wrapperEl.on('click', handleDayClick); // Touch events
+
+ if (calendar.params.touchMove) {
+ $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ }
+
+ calendar.detachCalendarEvents = function detachCalendarEvents() {
+ $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);
+ $el.find('.calendar-next-month-button').off('click', onNextMonthClick);
+ $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);
+ $el.find('.calendar-next-year-button').off('click', onNextYearClick);
+
+ if (calendar.params.monthPicker) {
+ $el.find('.current-month-value').off('click', onMonthSelectorClick);
+ $el.off('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
+ }
+
+ if (calendar.params.yearPicker) {
+ $el.find('.current-year-value').off('click', onYearSelectorClick);
+ $el.off('click', '.calendar-year-picker-item', onYearSelectorItemClick);
+ }
+
+ if (calendar.hasTimePicker) {
+ $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);
+ $el.off('click', '.calendar-time-picker-close', onTimePickerCloseClick);
+ }
+
+ $wrapperEl.off('click', handleDayClick);
+
+ if (calendar.params.touchMove) {
+ $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ }
+ };
+ };
+
+ calendar.init();
+ return calendar || _assertThisInitialized(_this);
+ }
+
+ var _proto = Calendar.prototype;
+
+ _proto.getIntlNames = function getIntlNames() {
+ var calendar = this;
+ var locale = calendar.params.locale;
+ var monthNamesIntl = [];
+ var monthNamesShortIntl = [];
+ var dayNamesIntl = [];
+ var dayNamesShortIntl = [];
+ var formatterMonthNames = new Intl.DateTimeFormat(locale, {
+ month: 'long'
+ });
+ var formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {
+ month: 'short'
+ });
+ var formatterDayNames = new Intl.DateTimeFormat(locale, {
+ weekday: 'long'
+ });
+ var formatterDayNamesShort = new Intl.DateTimeFormat(locale, {
+ weekday: 'short'
+ });
+ var year;
+ var yearStarted;
+ var yearEnded;
+
+ for (var i = 0; i < 24; i += 1) {
+ var date = new Date().setMonth(i, 1);
+ var currentYear = calendar.yearFormatter(date);
+
+ if (year && currentYear !== year) {
+ if (yearStarted) yearEnded = true;
+ yearStarted = true;
+ year = currentYear;
+ }
+
+ if (!year) {
+ year = currentYear;
+ }
+
+ if (yearStarted && year === currentYear && !yearEnded) {
+ monthNamesIntl.push(formatterMonthNames.format(date));
+ monthNamesShortIntl.push(formatterMonthNamesShort.format(date));
+ }
+ }
+
+ var weekDay = new Date().getDay();
+
+ for (var _i = 0; _i < 7; _i += 1) {
+ var _date = new Date().getTime() + (_i - weekDay) * 24 * 60 * 60 * 1000;
+
+ dayNamesIntl.push(formatterDayNames.format(_date));
+ dayNamesShortIntl.push(formatterDayNamesShort.format(_date));
+ }
+
+ return {
+ monthNamesIntl: monthNamesIntl,
+ monthNamesShortIntl: monthNamesShortIntl,
+ dayNamesIntl: dayNamesIntl,
+ dayNamesShortIntl: dayNamesShortIntl
+ };
+ };
+
+ _proto.normalizeDate = function normalizeDate(date) {
+ var calendar = this;
+ var d = new Date(date);
+
+ if (calendar.hasTimePicker) {
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());
+ }
+
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate());
+ };
+
+ _proto.normalizeValues = function normalizeValues(values) {
+ var calendar = this;
+ var newValues = [];
+
+ if (values && Array.isArray(values)) {
+ newValues = values.map(function (val) {
+ return calendar.normalizeDate(val);
+ });
+ }
+
+ return newValues;
+ };
+
+ _proto.initInput = function initInput() {
+ var calendar = this;
+ if (!calendar.$inputEl) return;
+ if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);
+ };
+
+ _proto.isPopover = function isPopover() {
+ var calendar = this;
+ var app = calendar.app,
+ modal = calendar.modal,
+ params = calendar.params;
+ var device = (0, _getDevice.getDevice)();
+ if (params.openIn === 'sheet') return false;
+ if (modal && modal.type !== 'popover') return false;
+
+ if (!calendar.inline && calendar.inputEl) {
+ if (params.openIn === 'popover') return true;
+
+ if (device.ios) {
+ return !!device.ipad;
+ }
+
+ if (app.width >= 768) {
+ return true;
+ }
+
+ if (device.desktop && app.theme === 'aurora') {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ _proto.formatDate = function formatDate(d) {
+ var calendar = this;
+ var date = new Date(d);
+ var year = date.getFullYear();
+ var month = date.getMonth();
+ var month1 = month + 1;
+ var day = date.getDate();
+ var weekDay = date.getDay();
+ var monthNames = calendar.monthNames,
+ monthNamesShort = calendar.monthNamesShort,
+ dayNames = calendar.dayNames,
+ dayNamesShort = calendar.dayNamesShort;
+ var _calendar$params2 = calendar.params,
+ dateFormat = _calendar$params2.dateFormat,
+ locale = _calendar$params2.locale;
+
+ function twoDigits(number) {
+ return number < 10 ? "0" + number : number;
+ }
+
+ if (typeof dateFormat === 'string') {
+ var tokens = {
+ yyyy: year,
+ yy: String(year).substring(2),
+ mm: twoDigits(month1),
+ m: month1,
+ MM: monthNames[month],
+ M: monthNamesShort[month],
+ dd: twoDigits(day),
+ d: day,
+ DD: dayNames[weekDay],
+ D: dayNamesShort[weekDay]
+ };
+
+ if (calendar.params.timePicker) {
+ var hours = date.getHours();
+ var minutes = date.getMinutes();
+ var seconds = date.getSeconds();
+ var hours12 = hours;
+ if (hours > 12) hours12 = hours - 12;
+ if (hours === 0) hours12 = 12;
+ var a = hours >= 12 && hours !== 0 ? 'pm' : 'am';
+ Object.assign(tokens, {
+ HH: twoDigits(hours),
+ H: hours,
+ hh: twoDigits(hours12),
+ h: hours12,
+ ss: twoDigits(seconds),
+ s: seconds,
+ ':mm': twoDigits(minutes),
+ ':m': minutes,
+ a: a,
+ A: a.toUpperCase()
+ });
+ }
+
+ var regexp = new RegExp(Object.keys(tokens).map(function (t) {
+ return "(" + t + ")";
+ }).join('|'), 'g');
+ return dateFormat.replace(regexp, function (token) {
+ if (token in tokens) return tokens[token];
+ return token;
+ });
+ }
+
+ if (typeof dateFormat === 'function') {
+ return dateFormat(date);
+ } // Intl Object
+
+
+ var formatter = new Intl.DateTimeFormat(locale, dateFormat);
+ return formatter.format(date);
+ };
+
+ _proto.formatValue = function formatValue() {
+ var calendar = this;
+ var value = calendar.value;
+
+ if (calendar.params.formatValue) {
+ return calendar.params.formatValue.call(calendar, value);
+ }
+
+ return value.map(function (v) {
+ return calendar.formatDate(v);
+ }).join(calendar.params.rangePicker ? ' - ' : ', ');
+ };
+
+ _proto.addValue = function addValue(newValue) {
+ var calendar = this;
+ var _calendar$params3 = calendar.params,
+ multiple = _calendar$params3.multiple,
+ rangePicker = _calendar$params3.rangePicker,
+ rangePickerMinDays = _calendar$params3.rangePickerMinDays,
+ rangePickerMaxDays = _calendar$params3.rangePickerMaxDays;
+
+ if (multiple) {
+ if (!calendar.value) calendar.value = [];
+ var inValuesIndex;
+
+ for (var i = 0; i < calendar.value.length; i += 1) {
+ if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {
+ inValuesIndex = i;
+ }
+ }
+
+ if (typeof inValuesIndex === 'undefined') {
+ calendar.value.push(newValue);
+ } else {
+ calendar.value.splice(inValuesIndex, 1);
+ }
+
+ calendar.updateValue();
+ } else if (rangePicker) {
+ if (!calendar.value) calendar.value = [];
+
+ if (calendar.value.length === 2 || calendar.value.length === 0) {
+ calendar.value = [];
+ }
+
+ if (calendar.value.length === 0 || 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);else calendar.value = [];
+ calendar.value.sort(function (a, b) {
+ return a - b;
+ });
+ calendar.updateValue();
+ } else {
+ calendar.value = [newValue];
+ calendar.updateValue();
+ }
+ };
+
+ _proto.setValue = function setValue(values) {
+ var calendar = this;
+ var currentValue = calendar.value;
+
+ if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {
+ var equal = true;
+ currentValue.forEach(function (v, index) {
+ if (v !== values[index]) equal = false;
+ });
+ if (equal) return;
+ }
+
+ calendar.value = values;
+ calendar.updateValue();
+ };
+
+ _proto.getValue = function getValue() {
+ var calendar = this;
+ return calendar.value;
+ };
+
+ _proto.updateValue = function updateValue(onlyHeader) {
+ var calendar = this;
+ var $el = calendar.$el,
+ $wrapperEl = calendar.$wrapperEl,
+ $inputEl = calendar.$inputEl,
+ value = calendar.value,
+ params = calendar.params;
+ var i;
+
+ if ($el && $el.length > 0) {
+ $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');
+ var valueDate;
+
+ if (params.rangePicker && value.length === 2) {
+ var leftDate = new Date(value[0]).getTime();
+ var rightDate = new Date(value[1]).getTime();
+
+ for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {
+ valueDate = new Date(i);
+ var addClass = 'calendar-day-selected';
+
+ if (leftDate !== rightDate) {
+ if (i !== leftDate && i !== rightDate) {
+ addClass += ' calendar-day-selected-range';
+ }
+
+ if (i === leftDate) {
+ addClass += ' calendar-day-selected-left';
+ }
+
+ if (i === rightDate) {
+ addClass += ' calendar-day-selected-right';
+ }
+ }
+
+ $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").addClass(addClass);
+ }
+
+ valueDate = new Date(leftDate);
+ $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-left');
+ valueDate = new Date(rightDate);
+ $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-right');
+ } else {
+ for (i = 0; i < calendar.value.length; i += 1) {
+ valueDate = new Date(value[i]);
+ $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").addClass('calendar-day-selected');
+ }
+ }
+ }
+
+ if (!onlyHeader) {
+ calendar.emit('local::change calendarChange', calendar, value);
+ }
+
+ if ($el && $el.length > 0 && calendar.hasTimePicker) {
+ $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);
+ }
+
+ if ($inputEl && $inputEl.length || params.header) {
+ var inputValue = calendar.formatValue(value);
+
+ if (params.header && $el && $el.length) {
+ $el.find('.calendar-selected-date').text(inputValue);
+ }
+
+ if ($inputEl && $inputEl.length && !onlyHeader) {
+ $inputEl.val(inputValue);
+ $inputEl.trigger('change');
+ }
+ }
+ };
+
+ _proto.updateCurrentMonthYear = function updateCurrentMonthYear(dir) {
+ var calendar = this;
+ var $months = calendar.$months,
+ $el = calendar.$el,
+ monthNames = calendar.monthNames;
+ var currentLocaleMonth;
+ var currentLocaleYear;
+
+ if (typeof dir === 'undefined') {
+ calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);
+ calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);
+ currentLocaleMonth = $months.eq(1).attr('data-locale-month');
+ currentLocaleYear = $months.eq(1).attr('data-locale-year');
+ } else {
+ calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);
+ calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);
+ currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');
+ currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');
+ }
+
+ $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);
+ $el.find('.current-year-value').text(currentLocaleYear);
+ };
+
+ _proto.update = function update() {
+ var calendar = this;
+ var currentYear = calendar.currentYear,
+ currentMonth = calendar.currentMonth,
+ $wrapperEl = calendar.$wrapperEl;
+ var currentDate = new Date(currentYear, currentMonth);
+ var prevMonthHtml = calendar.renderMonth(currentDate, 'prev');
+ var currentMonthHtml = calendar.renderMonth(currentDate);
+ var nextMonthHtml = calendar.renderMonth(currentDate, 'next');
+ $wrapperEl.transition(0).html("" + prevMonthHtml + currentMonthHtml + nextMonthHtml).transform('translate3d(0,0,0)');
+ calendar.$months = $wrapperEl.find('.calendar-month');
+ calendar.monthsTranslate = 0;
+ calendar.setMonthsTranslate();
+ calendar.$months.each(function (monthEl) {
+ calendar.emit('local::monthAdd calendarMonthAdd', monthEl);
+ });
+ };
+
+ _proto.onMonthChangeStart = function onMonthChangeStart(dir) {
+ var calendar = this;
+ var $months = calendar.$months,
+ currentYear = calendar.currentYear,
+ currentMonth = calendar.currentMonth;
+ calendar.updateCurrentMonthYear(dir);
+ $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');
+ var currentIndex = dir === 'next' ? $months.length - 1 : 0;
+ $months.eq(currentIndex).addClass('calendar-month-current');
+ $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');
+ calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);
+ };
+
+ _proto.onMonthChangeEnd = function onMonthChangeEnd(dir, rebuildBoth) {
+ var calendar = this;
+ var currentYear = calendar.currentYear,
+ currentMonth = calendar.currentMonth,
+ $wrapperEl = calendar.$wrapperEl,
+ monthsTranslate = calendar.monthsTranslate;
+ calendar.animating = false;
+ var nextMonthHtml;
+ var prevMonthHtml;
+ var currentMonthHtml;
+ $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();
+
+ if (typeof dir === 'undefined') {
+ dir = 'next'; // eslint-disable-line
+
+ rebuildBoth = true; // eslint-disable-line
+ }
+
+ if (!rebuildBoth) {
+ currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);
+ } else {
+ $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();
+ prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');
+ nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');
+ }
+
+ if (dir === 'next' || rebuildBoth) {
+ $wrapperEl.append(currentMonthHtml || nextMonthHtml);
+ }
+
+ if (dir === 'prev' || rebuildBoth) {
+ $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);
+ }
+
+ var $months = $wrapperEl.find('.calendar-month');
+ calendar.$months = $months;
+ calendar.setMonthsTranslate(monthsTranslate);
+ calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);
+ calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);
+ };
+
+ _proto.setMonthsTranslate = function setMonthsTranslate(translate) {
+ var calendar = this;
+ var $months = calendar.$months,
+ isH = calendar.isHorizontal,
+ inverter = calendar.inverter; // eslint-disable-next-line
+
+ translate = translate || calendar.monthsTranslate || 0;
+
+ if (typeof calendar.monthsTranslate === 'undefined') {
+ calendar.monthsTranslate = translate;
+ }
+
+ $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');
+ var prevMonthTranslate = -(translate + 1) * 100 * inverter;
+ var currentMonthTranslate = -translate * 100 * inverter;
+ var nextMonthTranslate = -(translate - 1) * 100 * inverter;
+ $months.eq(0).transform("translate3d(" + (isH ? prevMonthTranslate : 0) + "%, " + (isH ? 0 : prevMonthTranslate) + "%, 0)").addClass('calendar-month-prev');
+ $months.eq(1).transform("translate3d(" + (isH ? currentMonthTranslate : 0) + "%, " + (isH ? 0 : currentMonthTranslate) + "%, 0)").addClass('calendar-month-current');
+ $months.eq(2).transform("translate3d(" + (isH ? nextMonthTranslate : 0) + "%, " + (isH ? 0 : nextMonthTranslate) + "%, 0)").addClass('calendar-month-next');
+ };
+
+ _proto.nextMonth = function nextMonth(transition) {
+ var calendar = this;
+ var params = calendar.params,
+ $wrapperEl = calendar.$wrapperEl,
+ inverter = calendar.inverter,
+ isH = calendar.isHorizontal;
+
+ if (typeof transition === 'undefined' || typeof transition === 'object') {
+ transition = ''; // eslint-disable-line
+
+ if (!params.animate) transition = 0; // eslint-disable-line
+ }
+
+ var nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);
+ var nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);
+ var nextDate = new Date(nextYear, nextMonth);
+ var nextDateTime = nextDate.getTime();
+ var transitionEndCallback = !calendar.animating;
+
+ if (params.maxDate) {
+ if (nextDateTime > new Date(params.maxDate).getTime()) {
+ calendar.resetMonth();
+ return;
+ }
+ }
+
+ calendar.monthsTranslate -= 1;
+
+ if (nextMonth === calendar.currentMonth) {
+ var nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;
+ var nextMonthHtml = (0, _dom.default)(calendar.renderMonth(nextDateTime, 'next')).transform("translate3d(" + (isH ? nextMonthTranslate : 0) + "%, " + (isH ? 0 : nextMonthTranslate) + "%, 0)").addClass('calendar-month-next');
+ $wrapperEl.append(nextMonthHtml[0]);
+ calendar.$months = $wrapperEl.find('.calendar-month');
+ calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);
+ }
+
+ calendar.animating = true;
+ calendar.onMonthChangeStart('next');
+ var translate = calendar.monthsTranslate * 100 * inverter;
+ $wrapperEl.transition(transition).transform("translate3d(" + (isH ? translate : 0) + "%, " + (isH ? 0 : translate) + "%, 0)");
+
+ if (transitionEndCallback) {
+ $wrapperEl.transitionEnd(function () {
+ calendar.onMonthChangeEnd('next');
+ });
+ }
+
+ if (!params.animate) {
+ calendar.onMonthChangeEnd('next');
+ }
+ };
+
+ _proto.prevMonth = function prevMonth(transition) {
+ var calendar = this;
+ var params = calendar.params,
+ $wrapperEl = calendar.$wrapperEl,
+ inverter = calendar.inverter,
+ isH = calendar.isHorizontal;
+
+ if (typeof transition === 'undefined' || typeof transition === 'object') {
+ transition = ''; // eslint-disable-line
+
+ if (!params.animate) transition = 0; // eslint-disable-line
+ }
+
+ var prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);
+ var prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);
+ var prevDate = new Date(prevYear, prevMonth + 1, -1);
+ var prevDateTime = prevDate.getTime();
+ var transitionEndCallback = !calendar.animating;
+
+ if (params.minDate) {
+ var minDate = new Date(params.minDate);
+ minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);
+
+ if (prevDateTime < minDate.getTime()) {
+ calendar.resetMonth();
+ return;
+ }
+ }
+
+ calendar.monthsTranslate += 1;
+
+ if (prevMonth === calendar.currentMonth) {
+ var prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;
+ var prevMonthHtml = (0, _dom.default)(calendar.renderMonth(prevDateTime, 'prev')).transform("translate3d(" + (isH ? prevMonthTranslate : 0) + "%, " + (isH ? 0 : prevMonthTranslate) + "%, 0)").addClass('calendar-month-prev');
+ $wrapperEl.prepend(prevMonthHtml[0]);
+ calendar.$months = $wrapperEl.find('.calendar-month');
+ calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);
+ }
+
+ calendar.animating = true;
+ calendar.onMonthChangeStart('prev');
+ var translate = calendar.monthsTranslate * 100 * inverter;
+ $wrapperEl.transition(transition).transform("translate3d(" + (isH ? translate : 0) + "%, " + (isH ? 0 : translate) + "%, 0)");
+
+ if (transitionEndCallback) {
+ $wrapperEl.transitionEnd(function () {
+ calendar.onMonthChangeEnd('prev');
+ });
+ }
+
+ if (!params.animate) {
+ calendar.onMonthChangeEnd('prev');
+ }
+ };
+
+ _proto.resetMonth = function resetMonth(transition) {
+ if (transition === void 0) {
+ transition = '';
+ }
+
+ var calendar = this;
+ var $wrapperEl = calendar.$wrapperEl,
+ inverter = calendar.inverter,
+ isH = calendar.isHorizontal,
+ monthsTranslate = calendar.monthsTranslate;
+ var translate = monthsTranslate * 100 * inverter;
+ $wrapperEl.transition(transition).transform("translate3d(" + (isH ? translate : 0) + "%, " + (isH ? 0 : translate) + "%, 0)");
+ } // eslint-disable-next-line
+ ;
+
+ _proto.setYearMonth = function setYearMonth(year, month, transition) {
+ var calendar = this;
+ var params = calendar.params,
+ isH = calendar.isHorizontal,
+ $wrapperEl = calendar.$wrapperEl,
+ inverter = calendar.inverter; // eslint-disable-next-line
+
+ if (typeof year === 'undefined') year = calendar.currentYear; // eslint-disable-next-line
+
+ if (typeof month === 'undefined') month = calendar.currentMonth;
+
+ if (typeof transition === 'undefined' || typeof transition === 'object') {
+ // eslint-disable-next-line
+ transition = ''; // eslint-disable-next-line
+
+ if (!params.animate) transition = 0;
+ }
+
+ var targetDate;
+
+ if (year < calendar.currentYear) {
+ targetDate = new Date(year, month + 1, -1).getTime();
+ } else {
+ targetDate = new Date(year, month).getTime();
+ }
+
+ if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {
+ return false;
+ }
+
+ if (params.minDate) {
+ var minDate = new Date(params.minDate);
+ minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);
+
+ if (targetDate < minDate.getTime()) {
+ return false;
+ }
+ }
+
+ var currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();
+ var dir = targetDate > currentDate ? 'next' : 'prev';
+ var newMonthHTML = calendar.renderMonth(new Date(year, month));
+ calendar.monthsTranslate = calendar.monthsTranslate || 0;
+ var prevTranslate = calendar.monthsTranslate;
+ var monthTranslate;
+ var transitionEndCallback = !calendar.animating && transition !== 0;
+
+ if (targetDate > currentDate) {
+ // To next
+ calendar.monthsTranslate -= 1;
+ if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();
+ $wrapperEl.append(newMonthHTML);
+ calendar.$months = $wrapperEl.find('.calendar-month');
+ monthTranslate = -(prevTranslate - 1) * 100 * inverter;
+ calendar.$months.eq(calendar.$months.length - 1).transform("translate3d(" + (isH ? monthTranslate : 0) + "%, " + (isH ? 0 : monthTranslate) + "%, 0)").addClass('calendar-month-next');
+ } else {
+ // To prev
+ calendar.monthsTranslate += 1;
+ if (!calendar.animating) calendar.$months.eq(0).remove();
+ $wrapperEl.prepend(newMonthHTML);
+ calendar.$months = $wrapperEl.find('.calendar-month');
+ monthTranslate = -(prevTranslate + 1) * 100 * inverter;
+ calendar.$months.eq(0).transform("translate3d(" + (isH ? monthTranslate : 0) + "%, " + (isH ? 0 : monthTranslate) + "%, 0)").addClass('calendar-month-prev');
+ }
+
+ calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);
+ calendar.animating = true;
+ calendar.onMonthChangeStart(dir);
+ var wrapperTranslate = calendar.monthsTranslate * 100 * inverter;
+ $wrapperEl.transition(transition).transform("translate3d(" + (isH ? wrapperTranslate : 0) + "%, " + (isH ? 0 : wrapperTranslate) + "%, 0)");
+
+ if (transitionEndCallback) {
+ $wrapperEl.transitionEnd(function () {
+ calendar.onMonthChangeEnd(dir, true);
+ });
+ }
+
+ if (!params.animate || transition === 0) {
+ calendar.onMonthChangeEnd(dir, true);
+ }
+ };
+
+ _proto.nextYear = function nextYear() {
+ var calendar = this;
+ calendar.setYearMonth(calendar.currentYear + 1);
+ };
+
+ _proto.prevYear = function prevYear() {
+ var calendar = this;
+ calendar.setYearMonth(calendar.currentYear - 1);
+ } // eslint-disable-next-line
+ ;
+
+ _proto.dateInRange = function dateInRange(dayDate, range) {
+ var match = false;
+ var i;
+ if (!range) return false;
+
+ if (Array.isArray(range)) {
+ for (i = 0; i < range.length; i += 1) {
+ if (range[i].from || range[i].to) {
+ if (range[i].from && range[i].to) {
+ if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {
+ match = true;
+ }
+ } else if (range[i].from) {
+ if (dayDate >= new Date(range[i].from).getTime()) {
+ match = true;
+ }
+ } else if (range[i].to) {
+ if (dayDate <= new Date(range[i].to).getTime()) {
+ match = true;
+ }
+ }
+ } else if (range[i].date) {
+ if (dayDate === new Date(range[i].date).getTime()) {
+ match = true;
+ }
+ } else if (dayDate === new Date(range[i]).getTime()) {
+ match = true;
+ }
+ }
+ } else if (range.from || range.to) {
+ if (range.from && range.to) {
+ if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {
+ match = true;
+ }
+ } else if (range.from) {
+ if (dayDate >= new Date(range.from).getTime()) {
+ match = true;
+ }
+ } else if (range.to) {
+ if (dayDate <= new Date(range.to).getTime()) {
+ match = true;
+ }
+ }
+ } else if (range.date) {
+ match = dayDate === new Date(range.date).getTime();
+ } else if (typeof range === 'function') {
+ match = range(new Date(dayDate));
+ }
+
+ return match;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.daysInMonth = function daysInMonth(date) {
+ var d = new Date(date);
+ return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();
+ };
+
+ _proto.renderMonths = function renderMonths(date) {
+ var calendar = this;
+
+ if (calendar.params.renderMonths) {
+ return calendar.params.renderMonths.call(calendar, date);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-months-wrapper"
+ }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));
+ };
+
+ _proto.renderMonth = function renderMonth(d, offset) {
+ var calendar = this;
+ var params = calendar.params,
+ value = calendar.value;
+
+ if (params.renderMonth) {
+ return params.renderMonth.call(calendar, d, offset);
+ }
+
+ var date = new Date(d);
+ var year = date.getFullYear();
+ var month = date.getMonth();
+ var localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));
+ if (localeMonth < 0) localeMonth = month;
+ var localeYear = calendar.yearFormatter(date);
+
+ if (offset === 'next') {
+ if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);
+ }
+
+ if (offset === 'prev') {
+ if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);
+ }
+
+ if (offset === 'next' || offset === 'prev') {
+ month = date.getMonth();
+ year = date.getFullYear();
+ localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));
+ if (localeMonth < 0) localeMonth = month;
+ localeYear = calendar.yearFormatter(date);
+ }
+
+ var currentValues = [];
+ var today = new Date().setHours(0, 0, 0, 0);
+ var minDate = params.minDate ? new Date(params.minDate).getTime() : null;
+ var maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;
+ var rows = 6;
+ var cols = 7;
+ var daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);
+ var daysInMonth = calendar.daysInMonth(date);
+ var minDayNumber = params.firstDay === 6 ? 0 : 1;
+ var monthHtml = '';
+ var dayIndex = 0 + (params.firstDay - 1);
+ var disabled;
+ var hasEvents;
+ var firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();
+ if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;
+
+ if (value && value.length) {
+ for (var i = 0; i < value.length; i += 1) {
+ currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));
+ }
+ }
+
+ for (var row = 1; row <= rows; row += 1) {
+ var rowHtml = '';
+
+ var _loop = function _loop(col) {
+ dayIndex += 1;
+ var dayDate = void 0;
+ var dayNumber = dayIndex - firstDayOfMonthIndex;
+ var addClass = '';
+
+ if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {
+ dayIndex -= 7;
+ dayNumber = dayIndex - firstDayOfMonthIndex;
+ }
+
+ var weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;
+
+ if (dayNumber < 0) {
+ dayNumber = daysInPrevMonth + dayNumber + 1;
+ addClass += ' calendar-day-prev';
+ dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();
+ } else {
+ dayNumber += 1;
+
+ if (dayNumber > daysInMonth) {
+ dayNumber -= daysInMonth;
+ addClass += ' calendar-day-next';
+ dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();
+ } else {
+ dayDate = new Date(year, month, dayNumber).getTime();
+ }
+ } // Today
+
+
+ if (dayDate === today) addClass += ' calendar-day-today'; // Selected
+
+ if (params.rangePicker && currentValues.length === 2) {
+ if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {
+ addClass += ' calendar-day-selected';
+ }
+
+ if (currentValues[0] !== currentValues[1]) {
+ if (dayDate > currentValues[0] && dayDate < currentValues[1]) {
+ addClass += ' calendar-day-selected-range';
+ }
+
+ if (dayDate === currentValues[0]) {
+ addClass += ' calendar-day-selected-left';
+ }
+
+ if (dayDate === currentValues[1]) {
+ addClass += ' calendar-day-selected-right';
+ }
+ }
+ } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected'; // Weekend
+
+
+ if (params.weekendDays.indexOf(weekDayIndex) >= 0) {
+ addClass += ' calendar-day-weekend';
+ } // Events
+
+
+ var eventsHtml = '';
+ hasEvents = false;
+
+ if (params.events) {
+ if (calendar.dateInRange(dayDate, params.events)) {
+ hasEvents = true;
+ }
+ }
+
+ if (hasEvents) {
+ addClass += ' calendar-day-has-events'; // prettier-ignore
+
+ eventsHtml = "\n \n \n \n ";
+
+ if (Array.isArray(params.events)) {
+ var eventDots = [];
+ params.events.forEach(function (ev) {
+ var color = ev.color || '';
+
+ if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {
+ eventDots.push(color);
+ }
+ }); // prettier-ignore
+
+ eventsHtml = "\n \n " + eventDots.map(function (color) {
+ return ("\n \n ").trim();
+ }).join('') + "\n \n ";
+ }
+ } // Custom Ranges
+
+
+ if (params.rangesClasses) {
+ for (var k = 0; k < params.rangesClasses.length; k += 1) {
+ if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {
+ addClass += " " + params.rangesClasses[k].cssClass;
+ }
+ }
+ } // Disabled
+
+
+ disabled = false;
+
+ if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {
+ disabled = true;
+ }
+
+ if (params.disabled) {
+ if (calendar.dateInRange(dayDate, params.disabled)) {
+ disabled = true;
+ }
+ }
+
+ if (disabled) {
+ addClass += ' calendar-day-disabled';
+ }
+
+ dayDate = new Date(dayDate);
+ var dayYear = dayDate.getFullYear();
+ var dayMonth = dayDate.getMonth();
+ var dayNumberDisplay = calendar.dayFormatter(dayDate); // prettier-ignore
+
+ rowHtml += ("\n \n " + dayNumberDisplay + eventsHtml + "\n
").trim();
+ };
+
+ for (var col = 1; col <= cols; col += 1) {
+ _loop(col);
+ }
+
+ monthHtml += "" + rowHtml + "
";
+ }
+
+ monthHtml = "" + monthHtml + "
";
+ return monthHtml;
+ };
+
+ _proto.renderWeekHeader = function renderWeekHeader() {
+ var calendar = this;
+
+ if (calendar.params.renderWeekHeader) {
+ return calendar.params.renderWeekHeader.call(calendar);
+ }
+
+ var params = calendar.params;
+ var weekDaysHtml = '';
+
+ for (var i = 0; i < 7; i += 1) {
+ var dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;
+ var dayName = calendar.dayNamesShort[dayIndex];
+ weekDaysHtml += "" + dayName + "
";
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-week-header"
+ }, weekDaysHtml);
+ };
+
+ _proto.renderMonthSelector = function renderMonthSelector() {
+ var calendar = this;
+
+ if (calendar.params.renderMonthSelector) {
+ return calendar.params.renderMonthSelector.call(calendar);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-month-selector"
+ }, (0, _$jsx.default)("a", {
+ class: "link icon-only calendar-prev-month-button"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-prev"
+ })), calendar.params.monthPicker ? (0, _$jsx.default)("a", {
+ class: "current-month-value link"
+ }) : (0, _$jsx.default)("span", {
+ class: "current-month-value"
+ }), (0, _$jsx.default)("a", {
+ class: "link icon-only calendar-next-month-button"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-next"
+ })));
+ };
+
+ _proto.renderMonthPicker = function renderMonthPicker() {
+ var calendar = this;
+ var localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
+ return (0, _$jsx.default)("div", {
+ class: "calendar-month-picker"
+ }, calendar.monthNames.map(function (m, index) {
+ return (0, _$jsx.default)("div", {
+ class: "calendar-month-picker-item " + (localeMonth === index ? 'calendar-month-picker-item-current' : '')
+ }, (0, _$jsx.default)("span", null, m));
+ }));
+ };
+
+ _proto.renderYearSelector = function renderYearSelector() {
+ var calendar = this;
+
+ if (calendar.params.renderYearSelector) {
+ return calendar.params.renderYearSelector.call(calendar);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-year-selector"
+ }, (0, _$jsx.default)("a", {
+ class: "link icon-only calendar-prev-year-button"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-prev"
+ })), calendar.params.yearPicker ? (0, _$jsx.default)("a", {
+ class: "current-year-value link"
+ }) : (0, _$jsx.default)("span", {
+ class: "current-year-value"
+ }), (0, _$jsx.default)("a", {
+ class: "link icon-only calendar-next-year-button"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-next"
+ })));
+ };
+
+ _proto.renderYearPicker = function renderYearPicker() {
+ var calendar = this;
+ var currentYear = calendar.currentYear;
+ var yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;
+
+ if (calendar.params.minDate) {
+ yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());
+ }
+
+ var yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;
+
+ if (calendar.params.maxDate) {
+ yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());
+ }
+
+ var years = [];
+
+ for (var i = yearMin; i <= yearMax; i += 1) {
+ years.push(i);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-year-picker"
+ }, years.map(function (year) {
+ return (0, _$jsx.default)("div", {
+ "data-year": year,
+ class: "calendar-year-picker-item " + (year === currentYear ? 'calendar-year-picker-item-current' : '')
+ }, (0, _$jsx.default)("span", null, calendar.yearFormatter(new Date().setFullYear(year))));
+ }));
+ } // eslint-disable-next-line
+ ;
+
+ _proto.renderTimeSelector = function renderTimeSelector() {
+ var calendar = this;
+ var value = calendar.value && calendar.value[0];
+ var timeString;
+ if (value) timeString = calendar.timeSelectorFormatter(value);
+ return (0, _$jsx.default)("div", {
+ class: "calendar-time-selector"
+ }, (0, _$jsx.default)("a", {
+ class: "link"
+ }, timeString || calendar.params.timePickerPlaceholder));
+ };
+
+ _proto.renderHeader = function renderHeader() {
+ var calendar = this;
+
+ if (calendar.params.renderHeader) {
+ return calendar.params.renderHeader.call(calendar);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-header"
+ }, (0, _$jsx.default)("div", {
+ class: "calendar-selected-date"
+ }, calendar.params.headerPlaceholder));
+ };
+
+ _proto.renderFooter = function renderFooter() {
+ var calendar = this;
+ var app = calendar.app;
+
+ if (calendar.params.renderFooter) {
+ return calendar.params.renderFooter.call(calendar);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "calendar-footer"
+ }, (0, _$jsx.default)("a", {
+ class: (app.theme === 'md' ? 'button' : 'link') + " calendar-close sheet-close popover-close"
+ }, calendar.params.toolbarCloseText));
+ };
+
+ _proto.renderToolbar = function renderToolbar() {
+ var calendar = this;
+
+ if (calendar.params.renderToolbar) {
+ return calendar.params.renderToolbar.call(calendar, calendar);
+ } // prettier-ignore
+
+
+ return (0, _$jsx.default)("div", {
+ class: "toolbar toolbar-top no-shadow"
+ }, (0, _$jsx.default)("div", {
+ class: "toolbar-inner"
+ }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));
+ } // eslint-disable-next-line
+ ;
+
+ _proto.renderInline = function renderInline() {
+ var calendar = this;
+ var _calendar$params4 = calendar.params,
+ cssClass = _calendar$params4.cssClass,
+ toolbar = _calendar$params4.toolbar,
+ header = _calendar$params4.header,
+ footer = _calendar$params4.footer,
+ rangePicker = _calendar$params4.rangePicker,
+ weekHeader = _calendar$params4.weekHeader;
+ var value = calendar.value,
+ hasTimePicker = calendar.hasTimePicker;
+ var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
+ return (0, _$jsx.default)("div", {
+ class: "calendar calendar-inline " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
+ }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), (0, _$jsx.default)("div", {
+ class: "calendar-months"
+ }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());
+ };
+
+ _proto.renderCustomModal = function renderCustomModal() {
+ var calendar = this;
+ var _calendar$params5 = calendar.params,
+ cssClass = _calendar$params5.cssClass,
+ toolbar = _calendar$params5.toolbar,
+ header = _calendar$params5.header,
+ footer = _calendar$params5.footer,
+ rangePicker = _calendar$params5.rangePicker,
+ weekHeader = _calendar$params5.weekHeader;
+ var value = calendar.value,
+ hasTimePicker = calendar.hasTimePicker;
+ var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
+ return (0, _$jsx.default)("div", {
+ class: "calendar calendar-modal " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
+ }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), (0, _$jsx.default)("div", {
+ class: "calendar-months"
+ }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());
+ };
+
+ _proto.renderSheet = function renderSheet() {
+ var calendar = this;
+ var _calendar$params6 = calendar.params,
+ cssClass = _calendar$params6.cssClass,
+ toolbar = _calendar$params6.toolbar,
+ header = _calendar$params6.header,
+ footer = _calendar$params6.footer,
+ rangePicker = _calendar$params6.rangePicker,
+ weekHeader = _calendar$params6.weekHeader;
+ var value = calendar.value,
+ hasTimePicker = calendar.hasTimePicker;
+ var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
+ return (0, _$jsx.default)("div", {
+ class: "sheet-modal calendar calendar-sheet " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
+ }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), (0, _$jsx.default)("div", {
+ class: "sheet-modal-inner calendar-months"
+ }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());
+ };
+
+ _proto.renderPopover = function renderPopover() {
+ var calendar = this;
+ var _calendar$params7 = calendar.params,
+ cssClass = _calendar$params7.cssClass,
+ toolbar = _calendar$params7.toolbar,
+ header = _calendar$params7.header,
+ footer = _calendar$params7.footer,
+ rangePicker = _calendar$params7.rangePicker,
+ weekHeader = _calendar$params7.weekHeader;
+ var value = calendar.value,
+ hasTimePicker = calendar.hasTimePicker;
+ var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
+ return (0, _$jsx.default)("div", {
+ class: "popover calendar-popover"
+ }, (0, _$jsx.default)("div", {
+ class: "popover-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "calendar " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
+ }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), (0, _$jsx.default)("div", {
+ class: "calendar-months"
+ }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));
+ };
+
+ _proto.render = function render() {
+ var calendar = this;
+ var params = calendar.params;
+ if (params.render) return params.render.call(calendar);
+
+ if (!calendar.inline) {
+ var modalType = params.openIn;
+ if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';
+ if (modalType === 'popover') return calendar.renderPopover();
+ if (modalType === 'sheet') return calendar.renderSheet();
+ return calendar.renderCustomModal();
+ }
+
+ return calendar.renderInline();
+ };
+
+ _proto.openTimePicker = function openTimePicker() {
+ var calendar = this;
+ var $el = calendar.$el,
+ app = calendar.app,
+ is12HoursFormat = calendar.is12HoursFormat;
+ if (!$el || !$el.length) return;
+ $el.append('');
+ var hoursArr = [];
+ var minutesArr = [];
+ var hoursMin = is12HoursFormat ? 1 : 0;
+ var hoursMax = is12HoursFormat ? 12 : 23;
+
+ for (var i = hoursMin; i <= hoursMax; i += 1) {
+ hoursArr.push(i);
+ }
+
+ for (var _i2 = 0; _i2 <= 59; _i2 += 1) {
+ minutesArr.push(_i2);
+ }
+
+ var value;
+
+ if (calendar.value && calendar.value.length) {
+ value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];
+ } else {
+ value = [new Date().getHours(), new Date().getMinutes()];
+ }
+
+ if (is12HoursFormat) {
+ value.push(value[0] < 12 ? 'AM' : 'PM');
+ if (value[0] > 12) value[0] -= 12;
+ if (value[0] === 0) value[0] = 12;
+ }
+
+ calendar.timePickerInstance = app.picker.create({
+ containerEl: $el.find('.calendar-time-picker'),
+ value: value,
+ toolbar: true,
+ rotateEffect: false,
+ toolbarCloseText: calendar.params.toolbarCloseText,
+ cols: [{
+ values: hoursArr
+ }, {
+ divider: true,
+ content: ':'
+ }, {
+ values: minutesArr,
+ displayValues: minutesArr.map(function (m) {
+ return m < 10 ? "0" + m : m;
+ })
+ }].concat(is12HoursFormat ? [{
+ values: ['AM', 'PM']
+ }] : [])
+ });
+ calendar.timePickerInstance.$el.find('.toolbar a').removeClass('sheet-close popover-close').addClass('calendar-time-picker-close');
+ };
+
+ _proto.closeTimePicker = function closeTimePicker() {
+ var calendar = this;
+ var is12HoursFormat = calendar.is12HoursFormat;
+
+ if (calendar.timePickerInstance) {
+ var timePickerValue = calendar.timePickerInstance.value;
+ var hours = parseInt(timePickerValue[0], 10);
+ var minutes = parseInt(timePickerValue[1], 10);
+ var period = calendar.timePickerInstance.value[2];
+
+ if (is12HoursFormat) {
+ if (period === 'AM' && hours === 12) {
+ hours = 0;
+ } else if (period === 'PM' && hours !== 12) {
+ hours += 12;
+ }
+ }
+
+ var value = calendar.value && calendar.value.length && calendar.value[0];
+
+ if (!value) {
+ value = new Date();
+ value.setHours(hours, minutes, 0, 0);
+ } else {
+ value = new Date(value);
+ value.setHours(hours, minutes);
+ }
+
+ calendar.setValue([value]);
+ calendar.timePickerInstance.close();
+ calendar.timePickerInstance.destroy();
+ delete calendar.timePickerInstance;
+ }
+
+ if (calendar.$el && calendar.$el.length) {
+ calendar.$el.find('.calendar-time-picker').remove();
+ }
+ };
+
+ _proto.onOpen = function onOpen() {
+ var calendar = this;
+ var initialized = calendar.initialized,
+ $el = calendar.$el,
+ app = calendar.app,
+ $inputEl = calendar.$inputEl,
+ inline = calendar.inline,
+ value = calendar.value,
+ params = calendar.params;
+ calendar.closing = false;
+ calendar.opened = true;
+ calendar.opening = true; // Init main events
+
+ calendar.attachCalendarEvents();
+ var updateValue = !value && params.value; // Set value
+
+ if (!initialized) {
+ if (value) calendar.setValue(value, 0);else if (params.value) {
+ calendar.setValue(calendar.normalizeValues(params.value), 0);
+ }
+ } else if (value) {
+ calendar.setValue(value, 0);
+ } // Update current month and year
+
+
+ calendar.updateCurrentMonthYear(); // Set initial translate
+
+ calendar.monthsTranslate = 0;
+ calendar.setMonthsTranslate(); // Update input value
+
+ if (updateValue) calendar.updateValue();else if (params.header && value) {
+ calendar.updateValue(true);
+ } // Extra focus
+
+ if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
+ $inputEl.trigger('focus');
+ }
+
+ calendar.initialized = true;
+ calendar.$months.each(function (monthEl) {
+ calendar.emit('local::monthAdd calendarMonthAdd', monthEl);
+ }); // Trigger events
+
+ if ($el) {
+ $el.trigger('calendar:open');
+ }
+
+ if ($inputEl) {
+ $inputEl.trigger('calendar:open');
+ }
+
+ calendar.emit('local::open calendarOpen', calendar);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var calendar = this;
+ calendar.opening = false;
+
+ if (calendar.$el) {
+ calendar.$el.trigger('calendar:opened');
+ }
+
+ if (calendar.$inputEl) {
+ calendar.$inputEl.trigger('calendar:opened');
+ }
+
+ calendar.emit('local::opened calendarOpened', calendar);
+ };
+
+ _proto.onClose = function onClose() {
+ var calendar = this;
+ var app = calendar.app;
+ calendar.opening = false;
+ calendar.closing = true;
+
+ if (calendar.$inputEl) {
+ if (app.theme === 'md') {
+ calendar.$inputEl.trigger('blur');
+ } else {
+ var validate = calendar.$inputEl.attr('validate');
+ var required = calendar.$inputEl.attr('required');
+
+ if (validate && required) {
+ app.input.validate(calendar.$inputEl);
+ }
+ }
+ }
+
+ if (calendar.detachCalendarEvents) {
+ calendar.detachCalendarEvents();
+ }
+
+ if (calendar.$el) {
+ calendar.$el.trigger('calendar:close');
+ }
+
+ if (calendar.$inputEl) {
+ calendar.$inputEl.trigger('calendar:close');
+ }
+
+ calendar.emit('local::close calendarClose', calendar);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var calendar = this;
+ calendar.opened = false;
+ calendar.closing = false;
+
+ if (!calendar.inline) {
+ (0, _utils.nextTick)(function () {
+ if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {
+ if (!calendar.params.routableModals) {
+ calendar.modal.destroy();
+ }
+ }
+
+ delete calendar.modal;
+ });
+ }
+
+ if (calendar.timePickerInstance) {
+ if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();
+ delete calendar.timePickerInstance;
+ }
+
+ if (calendar.$el) {
+ calendar.$el.trigger('calendar:closed');
+ }
+
+ if (calendar.$inputEl) {
+ calendar.$inputEl.trigger('calendar:closed');
+ }
+
+ calendar.emit('local::closed calendarClosed', calendar);
+ };
+
+ _proto.open = function open() {
+ var calendar = this;
+ var app = calendar.app,
+ opened = calendar.opened,
+ inline = calendar.inline,
+ $inputEl = calendar.$inputEl,
+ params = calendar.params;
+ if (opened) return;
+
+ if (inline) {
+ calendar.$el = (0, _dom.default)(calendar.render());
+ calendar.$el[0].f7Calendar = calendar;
+ calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');
+ calendar.$months = calendar.$wrapperEl.find('.calendar-month');
+ calendar.$containerEl.append(calendar.$el);
+ calendar.onOpen();
+ calendar.onOpened();
+ return;
+ }
+
+ var modalType = params.openIn;
+
+ if (modalType === 'auto') {
+ modalType = calendar.isPopover() ? 'popover' : 'sheet';
+ }
+
+ var modalContent = calendar.render();
+ var modalParams = {
+ targetEl: $inputEl,
+ scrollToEl: params.scrollToInput ? $inputEl : undefined,
+ content: modalContent,
+ backdrop: params.backdrop === true || modalType === 'popover' && app.params.popover.backdrop !== false && params.backdrop !== false,
+ closeByBackdropClick: params.closeByBackdropClick,
+ on: {
+ open: function open() {
+ var modal = this;
+ calendar.modal = modal;
+ calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;
+ calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');
+ calendar.$months = calendar.$wrapperEl.find('.calendar-month');
+ calendar.$el[0].f7Calendar = calendar;
+
+ if (modalType === 'customModal') {
+ (0, _dom.default)(calendar.$el).find('.calendar-close').once('click', function () {
+ calendar.close();
+ });
+ }
+
+ calendar.onOpen();
+ },
+ opened: function opened() {
+ calendar.onOpened();
+ },
+ close: function close() {
+ calendar.onClose();
+ },
+ closed: function closed() {
+ calendar.onClosed();
+ }
+ }
+ };
+
+ if (modalType === 'sheet') {
+ modalParams.push = params.sheetPush;
+ modalParams.swipeToClose = params.sheetSwipeToClose;
+ }
+
+ if (params.routableModals && calendar.view) {
+ var _route;
+
+ calendar.view.router.navigate({
+ url: calendar.url,
+ route: (_route = {
+ path: calendar.url
+ }, _route[modalType] = modalParams, _route)
+ });
+ } else {
+ calendar.modal = app[modalType].create(modalParams);
+ calendar.modal.open();
+ }
+ };
+
+ _proto.close = function close() {
+ var calendar = this;
+ var opened = calendar.opened,
+ inline = calendar.inline;
+ if (!opened) return;
+
+ if (inline) {
+ calendar.onClose();
+ calendar.onClosed();
+ return;
+ }
+
+ if (calendar.params.routableModals && calendar.view) {
+ calendar.view.router.back();
+ } else {
+ calendar.modal.close();
+ }
+ };
+
+ _proto.init = function init() {
+ var calendar = this;
+ calendar.initInput();
+
+ if (calendar.inline) {
+ calendar.open();
+ calendar.emit('local::init calendarInit', calendar);
+ return;
+ }
+
+ if (!calendar.initialized && calendar.params.value) {
+ calendar.setValue(calendar.normalizeValues(calendar.params.value));
+ } // Attach input Events
+
+
+ if (calendar.$inputEl) {
+ calendar.attachInputEvents();
+ }
+
+ if (calendar.params.closeByOutsideClick) {
+ calendar.attachHtmlEvents();
+ }
+
+ calendar.emit('local::init calendarInit', calendar);
+ };
+
+ _proto.destroy = function destroy() {
+ var calendar = this;
+ if (calendar.destroyed) return;
+ var $el = calendar.$el;
+ calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);
+ if ($el) $el.trigger('calendar:beforedestroy');
+ calendar.close(); // Detach Events
+
+ if (calendar.$inputEl) {
+ calendar.detachInputEvents();
+ }
+
+ if (calendar.params.closeByOutsideClick) {
+ calendar.detachHtmlEvents();
+ }
+
+ if (calendar.timePickerInstance) {
+ if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();
+ delete calendar.timePickerInstance;
+ }
+
+ if ($el && $el.length) delete calendar.$el[0].f7Calendar;
+ (0, _utils.deleteProps)(calendar);
+ calendar.destroyed = true;
+ };
+
+ _createClass(Calendar, [{
+ key: "view",
+ get: function get() {
+ var $inputEl = this.$inputEl,
+ app = this.app,
+ params = this.params;
+ var view;
+
+ if (params.view) {
+ view = params.view;
+ } else if ($inputEl) {
+ view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
+ }
+
+ if (!view) view = app.views.main;
+ return view;
+ }
+ }]);
+
+ return Calendar;
+}(_class.default);
+
+var _default = Calendar;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/calendar/calendar.js b/www/assets/framework7/cjs/components/calendar/calendar.js
new file mode 100644
index 000000000..8564d4191
--- /dev/null
+++ b/www/assets/framework7/cjs/components/calendar/calendar.js
@@ -0,0 +1,124 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+var _calendarClass = _interopRequireDefault(require("./calendar-class"));
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'calendar',
+ static: {
+ Calendar: _calendarClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.calendar = (0, _constructorMethods.default)({
+ defaultSelector: '.calendar',
+ constructor: _calendarClass.default,
+ app: app,
+ domProp: 'f7Calendar'
+ });
+
+ app.calendar.close = function close(el) {
+ if (el === void 0) {
+ el = '.calendar';
+ }
+
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ var calendar = $el[0].f7Calendar;
+ if (!calendar || calendar && !calendar.opened) return;
+ calendar.close();
+ };
+ },
+ params: {
+ calendar: {
+ // Calendar settings
+ dateFormat: undefined,
+ monthNames: 'auto',
+ monthNamesShort: 'auto',
+ dayNames: 'auto',
+ dayNamesShort: 'auto',
+ locale: undefined,
+ firstDay: 1,
+ // First day of the week, Monday
+ weekendDays: [0, 6],
+ // Sunday and Saturday
+ multiple: false,
+ rangePicker: false,
+ rangePickerMinDays: 1,
+ // when calendar is used as rangePicker
+ rangePickerMaxDays: 0,
+ // when calendar is used as rangePicker, 0 means unlimited
+ direction: 'horizontal',
+ // or 'vertical'
+ minDate: null,
+ maxDate: null,
+ disabled: null,
+ // dates range of disabled days
+ events: null,
+ // dates range of days with events
+ rangesClasses: null,
+ // array with custom classes date ranges
+ touchMove: true,
+ animate: true,
+ closeOnSelect: false,
+ monthSelector: true,
+ monthPicker: true,
+ yearSelector: true,
+ yearPicker: true,
+ yearPickerMin: undefined,
+ yearPickerMax: undefined,
+ timePicker: false,
+ timePickerFormat: {
+ hour: 'numeric',
+ minute: 'numeric'
+ },
+ timePickerPlaceholder: 'Select time',
+ weekHeader: true,
+ value: null,
+ // Common opener settings
+ containerEl: null,
+ openIn: 'auto',
+ // or 'popover' or 'sheet' or 'customModal'
+ sheetPush: false,
+ sheetSwipeToClose: undefined,
+ formatValue: null,
+ inputEl: null,
+ inputReadOnly: true,
+ closeByOutsideClick: true,
+ scrollToInput: true,
+ header: false,
+ headerPlaceholder: 'Select date',
+ toolbar: true,
+ toolbarCloseText: 'Done',
+ footer: false,
+ cssClass: null,
+ routableModals: false,
+ view: null,
+ url: 'date/',
+ backdrop: null,
+ closeByBackdropClick: true,
+ // Render functions
+ renderWeekHeader: null,
+ renderMonths: null,
+ renderMonth: null,
+ renderMonthSelector: null,
+ renderYearSelector: null,
+ renderHeader: null,
+ renderFooter: null,
+ renderToolbar: null,
+ renderInline: null,
+ renderPopover: null,
+ renderSheet: null,
+ render: null
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/card/card.js b/www/assets/framework7/cjs/components/card/card.js
new file mode 100644
index 000000000..a9d1817de
--- /dev/null
+++ b/www/assets/framework7/cjs/components/card/card.js
@@ -0,0 +1,625 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+var _getDevice = require("../../shared/get-device");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint no-param-reassign: "off" */
+var CardExpandable = {
+ open: function open(cardEl, animate) {
+ if (cardEl === void 0) {
+ cardEl = '.card-expandable';
+ }
+
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var app = this;
+ var device = (0, _getDevice.getDevice)();
+ var document = (0, _ssrWindow.getDocument)();
+ var support = (0, _getSupport.getSupport)();
+ var $cardEl = (0, _dom.default)(cardEl).eq(0);
+ if (!$cardEl || !$cardEl.length) return;
+ if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;
+ var $pageEl = $cardEl.parents('.page').eq(0);
+ if (!$pageEl.length) return;
+
+ if ($pageEl.find('.card-opened').length) {
+ return;
+ }
+
+ var prevented;
+
+ function prevent() {
+ prevented = true;
+ }
+
+ $cardEl.trigger('card:beforeopen', {
+ prevent: prevent
+ });
+ app.emit('cardBeforeOpen', $cardEl[0], prevent);
+ if (prevented) return;
+ var cardParams = Object.assign({
+ animate: animate
+ }, app.params.card, $cardEl.dataset());
+ var $pageContentEl = $cardEl.parents('.page-content');
+ var $backdropEl;
+
+ if ($cardEl.attr('data-backdrop-el')) {
+ $backdropEl = (0, _dom.default)($cardEl.attr('data-backdrop-el'));
+ }
+
+ if (!$backdropEl && cardParams.backdrop) {
+ $backdropEl = $pageContentEl.find('.card-backdrop');
+
+ if (!$backdropEl.length) {
+ $backdropEl = (0, _dom.default)('');
+ $pageContentEl.append($backdropEl);
+ }
+ }
+
+ var $navbarEl;
+ var $toolbarEl;
+
+ if (cardParams.hideNavbarOnOpen) {
+ $navbarEl = $pageEl.children('.navbar');
+
+ if (!$navbarEl.length) {
+ if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;
+ }
+ }
+
+ if (cardParams.hideToolbarOnOpen) {
+ $toolbarEl = $pageEl.children('.toolbar');
+
+ if (!$toolbarEl.length) {
+ $toolbarEl = $pageEl.parents('.view').children('.toolbar');
+ }
+
+ if (!$toolbarEl.length) {
+ $toolbarEl = $pageEl.parents('.views').children('.toolbar');
+ }
+ }
+
+ var currTransform = $cardEl.css('transform');
+ var hasTransform;
+
+ if (currTransform && currTransform.match(/[2-9]/)) {
+ hasTransform = true;
+ }
+
+ var $cardContentEl = $cardEl.children('.card-content');
+ var $cardSizeEl = (0, _dom.default)(document.createElement('div')).addClass('card-expandable-size');
+ $cardEl.append($cardSizeEl);
+ var cardWidth = $cardEl[0].offsetWidth;
+ var cardHeight = $cardEl[0].offsetHeight;
+ var pageWidth = $pageEl[0].offsetWidth;
+ var pageHeight = $pageEl[0].offsetHeight;
+ var maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;
+ var maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;
+ var statusbarHeight;
+
+ if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {
+ statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);
+ if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;
+ }
+
+ if (statusbarHeight) {
+ maxHeight -= statusbarHeight;
+ }
+
+ var scaleX = maxWidth / cardWidth;
+ var scaleY = maxHeight / cardHeight;
+ var offset = $cardEl.offset();
+ var pageOffset = $pageEl.offset();
+
+ if (statusbarHeight) {
+ pageOffset.top += statusbarHeight / 2;
+ }
+
+ offset.left -= pageOffset.left;
+ var cardLeftOffset;
+ var cardTopOffset;
+
+ if (hasTransform) {
+ var transformValues = currTransform.replace(/matrix\(|\)/g, '').split(',').map(function (el) {
+ return el.trim();
+ });
+
+ if (transformValues && transformValues.length > 1) {
+ var scale = parseFloat(transformValues[0]);
+ cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;
+ cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;
+ if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
+ } else {
+ cardLeftOffset = $cardEl[0].offsetLeft;
+ cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);
+ }
+ } else {
+ cardLeftOffset = offset.left;
+ cardTopOffset = offset.top - pageOffset.top;
+ if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
+ }
+
+ cardLeftOffset -= (pageWidth - maxWidth) / 2;
+ cardTopOffset -= (pageHeight - maxHeight) / 2;
+ var cardRightOffset = maxWidth - cardWidth - cardLeftOffset;
+
+ if (app.rtl) {
+ var _ref = [cardRightOffset, cardLeftOffset];
+ cardLeftOffset = _ref[0];
+ cardRightOffset = _ref[1];
+ }
+
+ var cardBottomOffset = maxHeight - cardHeight - cardTopOffset;
+ var translateX = (cardRightOffset - cardLeftOffset) / 2;
+ var translateY = (cardBottomOffset - cardTopOffset) / 2;
+
+ if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {
+ if ($navbarEl.closest('.navbar-hidden').length) {
+ // Was hidden
+ $cardEl[0].f7KeepNavbarOnClose = true;
+ } else {
+ delete $cardEl[0].f7KeepNavbarOnClose;
+ app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);
+ }
+ }
+
+ if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {
+ if ($toolbarEl.closest('.toolbar-hidden').length) {
+ // Was hidden
+ $cardEl[0].f7KeepToolbarOnClose = true;
+ } else {
+ delete $cardEl[0].f7KeepToolbarOnClose;
+ app.toolbar.hide($toolbarEl, cardParams.animate);
+ }
+ }
+
+ if ($backdropEl) {
+ $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');
+ }
+
+ $cardEl.removeClass('card-transitioning');
+
+ if (cardParams.animate) {
+ $cardEl.addClass('card-opening');
+ }
+
+ $cardEl.trigger('card:open');
+ app.emit('cardOpen', $cardEl[0]);
+
+ function transitionEnd() {
+ $pageEl.addClass('page-with-card-opened');
+
+ if (device.ios && $pageContentEl.length) {
+ $pageContentEl.css('height', $pageContentEl[0].offsetHeight + 1 + "px");
+ setTimeout(function () {
+ $pageContentEl.css('height', '');
+ });
+ }
+
+ $cardEl.addClass('card-opened');
+ $cardEl.removeClass('card-opening');
+ $cardEl.trigger('card:opened');
+ app.emit('cardOpened', $cardEl[0], $pageEl[0]);
+ }
+
+ $cardContentEl.css({
+ width: maxWidth + "px",
+ height: maxHeight + "px"
+ }).transform("translate3d(" + (app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX) + "px, 0px, 0) scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
+ $cardEl.transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX + ", " + scaleY + ")");
+
+ if (cardParams.animate) {
+ $cardEl.transitionEnd(function () {
+ transitionEnd();
+ });
+ } else {
+ transitionEnd();
+ }
+
+ function onResize() {
+ $cardEl.removeClass('card-transitioning');
+ cardWidth = $cardEl[0].offsetWidth;
+ cardHeight = $cardEl[0].offsetHeight;
+ pageWidth = $pageEl[0].offsetWidth;
+ pageHeight = $pageEl[0].offsetHeight;
+ maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;
+ maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;
+ statusbarHeight = 0;
+
+ if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {
+ statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);
+ if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;
+ }
+
+ if (statusbarHeight) {
+ maxHeight -= statusbarHeight;
+ }
+
+ scaleX = maxWidth / cardWidth;
+ scaleY = maxHeight / cardHeight;
+ $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');
+ offset = $cardEl.offset();
+ pageOffset = $pageEl.offset();
+
+ if (statusbarHeight) {
+ pageOffset.top += statusbarHeight / 2;
+ }
+
+ offset.left -= pageOffset.left;
+ offset.top -= pageOffset.top;
+ cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;
+ if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
+ cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;
+ cardRightOffset = maxWidth - cardWidth - cardLeftOffset;
+ cardBottomOffset = maxHeight - cardHeight - cardTopOffset;
+
+ if (app.rtl) {
+ var _ref2 = [cardRightOffset, cardLeftOffset];
+ cardLeftOffset = _ref2[0];
+ cardRightOffset = _ref2[1];
+ }
+
+ translateX = (cardRightOffset - cardLeftOffset) / 2;
+ translateY = (cardBottomOffset - cardTopOffset) / 2;
+ $cardEl.transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX + ", " + scaleY + ")");
+ $cardContentEl.css({
+ width: maxWidth + "px",
+ height: maxHeight + "px"
+ }).transform("translate3d(" + (app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX) + "px, 0px, 0) scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
+ }
+
+ var cardScrollTop;
+ var isTouched;
+ var isMoved;
+ var touchStartX;
+ var touchStartY;
+ var touchEndX;
+ var touchEndY;
+ var isScrolling;
+ var progress;
+ var isV;
+ var isH;
+ var $cardScrollableEl;
+
+ function onTouchStart(e) {
+ if (!(0, _dom.default)(e.target).closest($cardEl).length) return;
+ if (!$cardEl.hasClass('card-opened')) return;
+ $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);
+
+ if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {
+ cardScrollTop = 0;
+ } else {
+ cardScrollTop = $cardScrollableEl.scrollTop();
+ }
+
+ isTouched = true;
+ touchStartX = e.targetTouches[0].pageX;
+ touchStartY = e.targetTouches[0].pageY;
+ isScrolling = undefined;
+ isV = false;
+ isH = false;
+ }
+
+ function onTouchMove(e) {
+ if (!isTouched) return;
+ touchEndX = e.targetTouches[0].pageX;
+ touchEndY = e.targetTouches[0].pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));
+ }
+
+ if (!isH && !isV) {
+ if (!isScrolling && e.targetTouches[0].clientX <= 50) {
+ isH = true;
+ } else {
+ isV = true;
+ }
+ }
+
+ if (!(isH || isV) || isV && cardScrollTop !== 0) {
+ isTouched = true;
+ isMoved = true;
+ return;
+ }
+
+ if (!isMoved) {
+ $cardEl.removeClass('card-transitioning');
+ }
+
+ isMoved = true;
+ progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);
+
+ if (progress > 0 && isV || isH) {
+ if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {
+ $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');
+ $cardScrollableEl.scrollTop(0);
+ }
+
+ e.preventDefault();
+ }
+
+ if (progress > 1) progress = Math.pow(progress, 0.3);
+
+ if (progress > (isV ? 1.3 : 1.1)) {
+ isTouched = false;
+ isMoved = false;
+ app.card.close($cardEl);
+ } else {
+ $cardEl.transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX * (1 - progress * 0.2) + ", " + scaleY * (1 - progress * 0.2) + ")");
+ }
+ }
+
+ function onTouchEnd() {
+ if (!isTouched || !isMoved) return;
+ isTouched = false;
+ isMoved = false;
+
+ if (device.ios) {
+ $cardScrollableEl.css('-webkit-overflow-scrolling', '');
+ }
+
+ if (progress >= 0.8) {
+ app.card.close($cardEl);
+ } else {
+ $cardEl.addClass('card-transitioning').transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX + ", " + scaleY + ")");
+ }
+ }
+
+ $cardEl[0].detachEventHandlers = function detachEventHandlers() {
+ app.off('resize', onResize);
+
+ if (support.touch && cardParams.swipeToClose) {
+ app.off('touchstart:passive', onTouchStart);
+ app.off('touchmove:active', onTouchMove);
+ app.off('touchend:passive', onTouchEnd);
+ }
+ };
+
+ app.on('resize', onResize);
+
+ if (support.touch && cardParams.swipeToClose) {
+ app.on('touchstart:passive', onTouchStart);
+ app.on('touchmove:active', onTouchMove);
+ app.on('touchend:passive', onTouchEnd);
+ }
+ },
+ close: function close(cardEl, animate) {
+ if (cardEl === void 0) {
+ cardEl = '.card-expandable.card-opened';
+ }
+
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var app = this;
+ var device = (0, _getDevice.getDevice)();
+ var $cardEl = (0, _dom.default)(cardEl).eq(0);
+ if (!$cardEl || !$cardEl.length) return;
+ if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;
+ var $cardContentEl = $cardEl.children('.card-content');
+ var $pageContentEl = $cardEl.parents('.page-content');
+ var $pageEl = $cardEl.parents('.page').eq(0);
+ if (!$pageEl.length) return;
+ var cardParams = Object.assign({
+ animate: animate
+ }, app.params.card, $cardEl.dataset());
+ var $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);
+ var $navbarEl;
+ var $toolbarEl;
+ var $backdropEl;
+
+ if ($cardEl.attr('data-backdrop-el')) {
+ $backdropEl = (0, _dom.default)($cardEl.attr('data-backdrop-el'));
+ }
+
+ if (cardParams.backdrop) {
+ $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');
+ }
+
+ if (cardParams.hideNavbarOnOpen) {
+ $navbarEl = $pageEl.children('.navbar');
+
+ if (!$navbarEl.length) {
+ if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;
+ }
+
+ if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {
+ app.navbar.show($navbarEl, cardParams.animate, true);
+ }
+ }
+
+ if (cardParams.hideToolbarOnOpen) {
+ $toolbarEl = $pageEl.children('.toolbar');
+
+ if (!$toolbarEl.length) {
+ $toolbarEl = $pageEl.parents('.view').children('.toolbar');
+ }
+
+ if (!$toolbarEl.length) {
+ $toolbarEl = $pageEl.parents('.views').children('.toolbar');
+ }
+
+ if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {
+ app.toolbar.show($toolbarEl, cardParams.animate);
+ }
+ }
+
+ $pageEl.removeClass('page-with-card-opened');
+
+ if (device.ios && $pageContentEl.length) {
+ $pageContentEl.css('height', $pageContentEl[0].offsetHeight + 1 + "px");
+ setTimeout(function () {
+ $pageContentEl.css('height', '');
+ });
+ }
+
+ if ($backdropEl && $backdropEl.length) {
+ $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');
+ }
+
+ $cardEl.removeClass('card-opened card-transitioning');
+
+ if (cardParams.animate) {
+ $cardEl.addClass('card-closing');
+ } else {
+ $cardEl.addClass('card-no-transition');
+ }
+
+ $cardEl.transform('');
+ $cardEl.trigger('card:close');
+ app.emit('cardClose', $cardEl[0], $pageEl[0]);
+ var animateWidth = $cardEl.hasClass('card-expandable-animate-width');
+
+ function transitionEnd() {
+ if (!animateWidth) {
+ $cardContentEl.css({
+ width: '',
+ height: ''
+ });
+ }
+
+ if ($backdropEl && $backdropEl.length) {
+ $backdropEl.removeClass('card-backdrop-in card-backdrop-out');
+ }
+
+ $cardEl.removeClass('card-closing card-no-transition');
+ $cardEl.trigger('card:closed');
+ $cardEl.find('.card-expandable-size').remove();
+ app.emit('cardClosed', $cardEl[0], $pageEl[0]);
+ }
+
+ if (animateWidth) {
+ $cardContentEl.css({
+ width: '',
+ height: ''
+ });
+ }
+
+ $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);
+
+ if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {
+ $cardScrollableEl.scrollTop(0, animate ? 300 : 0);
+ }
+
+ if (animate) {
+ $cardContentEl.transitionEnd(function () {
+ transitionEnd();
+ });
+ } else {
+ transitionEnd();
+ }
+
+ if ($cardEl[0].detachEventHandlers) {
+ $cardEl[0].detachEventHandlers();
+ delete $cardEl[0].detachEventHandlers;
+ }
+ },
+ toggle: function toggle(cardEl, animate) {
+ if (cardEl === void 0) {
+ cardEl = '.card-expandable';
+ }
+
+ var app = this;
+ var $cardEl = (0, _dom.default)(cardEl).eq(0);
+ if (!$cardEl.length) return;
+
+ if ($cardEl.hasClass('card-opened')) {
+ app.card.close($cardEl, animate);
+ } else {
+ app.card.open($cardEl, animate);
+ }
+ }
+};
+var _default = {
+ name: 'card',
+ params: {
+ card: {
+ hideNavbarOnOpen: true,
+ hideStatusbarOnOpen: true,
+ hideToolbarOnOpen: true,
+ scrollableEl: '.card-content',
+ swipeToClose: true,
+ closeByBackdropClick: true,
+ backdrop: true
+ }
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ card: CardExpandable
+ });
+ },
+ on: {
+ pageBeforeIn: function pageBeforeIn(page) {
+ var app = this;
+
+ if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {
+ app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);
+ }
+
+ if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {
+ var $toolbarEl = page.$el.children('.toolbar');
+
+ if (!$toolbarEl.length) {
+ $toolbarEl = page.$el.parents('.view').children('.toolbar');
+ }
+
+ if (!$toolbarEl.length) {
+ $toolbarEl = page.$el.parents('.views').children('.toolbar');
+ }
+
+ if ($toolbarEl && $toolbarEl.length) {
+ app.toolbar.hide($toolbarEl);
+ }
+ }
+ }
+ },
+ clicks: {
+ '.card-close': function closeCard($clickedEl, data) {
+ var app = this;
+ app.card.close(data.card, data.animate);
+ },
+ '.card-open': function closeCard($clickedEl, data) {
+ var app = this;
+ app.card.open(data.card, data.animate);
+ },
+ '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {
+ var app = this;
+ if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;
+ if ((0, _dom.default)(e.target).closest('.card-prevent-open, .card-close').length) return;
+ app.card.open($clickedEl);
+ },
+ '.card-backdrop-in': function onBackdropClick() {
+ var app = this;
+ var needToClose = false;
+ if (app.params.card.closeByBackdropClick) needToClose = true;
+ var $openedCardEl = (0, _dom.default)('.card-opened');
+ if (!$openedCardEl.length) return;
+
+ if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {
+ needToClose = true;
+ } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {
+ needToClose = false;
+ }
+
+ if (needToClose) app.card.close($openedCardEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/checkbox/checkbox.js b/www/assets/framework7/cjs/components/checkbox/checkbox.js
new file mode 100644
index 000000000..88f495652
--- /dev/null
+++ b/www/assets/framework7/cjs/components/checkbox/checkbox.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'checkbox'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/chip/chip.js b/www/assets/framework7/cjs/components/chip/chip.js
new file mode 100644
index 000000000..0207c72f9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/chip/chip.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'chip'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/color-picker-class.js b/www/assets/framework7/cjs/components/color-picker/color-picker-class.js
new file mode 100644
index 000000000..472c31c28
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/color-picker-class.js
@@ -0,0 +1,1022 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _getDevice = require("../../shared/get-device");
+
+var _alphaSlider = _interopRequireDefault(require("./modules/alpha-slider"));
+
+var _currentColor = _interopRequireDefault(require("./modules/current-color"));
+
+var _hex = _interopRequireDefault(require("./modules/hex"));
+
+var _hsbSliders = _interopRequireDefault(require("./modules/hsb-sliders"));
+
+var _hueSlider = _interopRequireDefault(require("./modules/hue-slider"));
+
+var _brightnessSlider = _interopRequireDefault(require("./modules/brightness-slider"));
+
+var _palette = _interopRequireDefault(require("./modules/palette"));
+
+var _initialCurrentColors = _interopRequireDefault(require("./modules/initial-current-colors"));
+
+var _rgbBars = _interopRequireDefault(require("./modules/rgb-bars"));
+
+var _rgbSliders = _interopRequireDefault(require("./modules/rgb-sliders"));
+
+var _sbSpectrum = _interopRequireDefault(require("./modules/sb-spectrum"));
+
+var _hsSpectrum = _interopRequireDefault(require("./modules/hs-spectrum"));
+
+var _wheel = _interopRequireDefault(require("./modules/wheel"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var ColorPicker = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(ColorPicker, _Framework7Class);
+
+ function ColorPicker(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var self = _assertThisInitialized(_this);
+
+ self.params = (0, _utils.extend)({}, app.params.colorPicker, params);
+ var $containerEl;
+
+ if (self.params.containerEl) {
+ $containerEl = (0, _dom.default)(self.params.containerEl);
+ if ($containerEl.length === 0) return self || _assertThisInitialized(_this);
+ }
+
+ var $inputEl;
+
+ if (self.params.inputEl) {
+ $inputEl = (0, _dom.default)(self.params.inputEl);
+ }
+
+ var $targetEl;
+
+ if (self.params.targetEl) {
+ $targetEl = (0, _dom.default)(self.params.targetEl);
+ }
+
+ (0, _utils.extend)(self, {
+ app: app,
+ $containerEl: $containerEl,
+ containerEl: $containerEl && $containerEl[0],
+ inline: $containerEl && $containerEl.length > 0,
+ $inputEl: $inputEl,
+ inputEl: $inputEl && $inputEl[0],
+ $targetEl: $targetEl,
+ targetEl: $targetEl && $targetEl[0],
+ initialized: false,
+ opened: false,
+ url: self.params.url,
+ modules: {
+ 'alpha-slider': _alphaSlider.default,
+ 'current-color': _currentColor.default,
+ hex: _hex.default,
+ // eslint-disable-line
+ 'hsb-sliders': _hsbSliders.default,
+ 'hue-slider': _hueSlider.default,
+ 'brightness-slider': _brightnessSlider.default,
+ palette: _palette.default,
+ // eslint-disable-line
+ 'initial-current-colors': _initialCurrentColors.default,
+ 'rgb-bars': _rgbBars.default,
+ 'rgb-sliders': _rgbSliders.default,
+ 'sb-spectrum': _sbSpectrum.default,
+ 'hs-spectrum': _hsSpectrum.default,
+ wheel: _wheel.default // eslint-disable-line
+
+ }
+ });
+
+ function onInputClick() {
+ self.open();
+ }
+
+ function onInputFocus(e) {
+ e.preventDefault();
+ }
+
+ function onTargetClick() {
+ self.open();
+ }
+
+ function onHtmlClick(e) {
+ if (self.destroyed || !self.params) return;
+ if (self.params.openIn === 'page') return;
+ var $clickTargetEl = (0, _dom.default)(e.target);
+ if (!self.opened || self.closing) return;
+ if ($clickTargetEl.closest('[class*="backdrop"]').length) return;
+ if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;
+
+ if ($inputEl && $inputEl.length > 0) {
+ if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {
+ self.close();
+ }
+ } else if ((0, _dom.default)(e.target).closest('.sheet-modal').length === 0) {
+ self.close();
+ }
+ } // Events
+
+
+ (0, _utils.extend)(self, {
+ attachInputEvents: function attachInputEvents() {
+ self.$inputEl.on('click', onInputClick);
+
+ if (self.params.inputReadOnly) {
+ self.$inputEl.on('focus mousedown', onInputFocus);
+
+ if (self.$inputEl[0]) {
+ self.$inputEl[0].f7ValidateReadonly = true;
+ }
+ }
+ },
+ detachInputEvents: function detachInputEvents() {
+ self.$inputEl.off('click', onInputClick);
+
+ if (self.params.inputReadOnly) {
+ self.$inputEl.off('focus mousedown', onInputFocus);
+
+ if (self.$inputEl[0]) {
+ delete self.$inputEl[0].f7ValidateReadonly;
+ }
+ }
+ },
+ attachTargetEvents: function attachTargetEvents() {
+ self.$targetEl.on('click', onTargetClick);
+ },
+ detachTargetEvents: function detachTargetEvents() {
+ self.$targetEl.off('click', onTargetClick);
+ },
+ attachHtmlEvents: function attachHtmlEvents() {
+ app.on('click', onHtmlClick);
+ },
+ detachHtmlEvents: function detachHtmlEvents() {
+ app.off('click', onHtmlClick);
+ }
+ });
+ self.init();
+ return self || _assertThisInitialized(_this);
+ }
+
+ var _proto = ColorPicker.prototype;
+
+ _proto.attachEvents = function attachEvents() {
+ var self = this;
+ self.centerModules = self.centerModules.bind(self);
+
+ if (self.params.centerModules) {
+ self.app.on('resize', self.centerModules);
+ }
+ };
+
+ _proto.detachEvents = function detachEvents() {
+ var self = this;
+
+ if (self.params.centerModules) {
+ self.app.off('resize', self.centerModules);
+ }
+ };
+
+ _proto.centerModules = function centerModules() {
+ var self = this;
+ if (!self.opened || !self.$el || self.inline) return;
+ var $pageContentEl = self.$el.find('.page-content');
+ if (!$pageContentEl.length) return;
+ var _$pageContentEl$ = $pageContentEl[0],
+ scrollHeight = _$pageContentEl$.scrollHeight,
+ offsetHeight = _$pageContentEl$.offsetHeight;
+
+ if (scrollHeight <= offsetHeight) {
+ $pageContentEl.addClass('justify-content-center');
+ } else {
+ $pageContentEl.removeClass('justify-content-center');
+ }
+ };
+
+ _proto.initInput = function initInput() {
+ var self = this;
+ if (!self.$inputEl) return;
+ if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);
+ };
+
+ _proto.getModalType = function getModalType() {
+ var self = this;
+ var app = self.app,
+ modal = self.modal,
+ params = self.params;
+ var openIn = params.openIn,
+ openInPhone = params.openInPhone;
+ var device = (0, _getDevice.getDevice)();
+ if (modal && modal.type) return modal.type;
+ if (openIn !== 'auto') return openIn;
+ if (self.inline) return null;
+
+ if (device.ios) {
+ return device.ipad ? 'popover' : openInPhone;
+ }
+
+ if (app.width >= 768 || device.desktop && app.theme === 'aurora') {
+ return 'popover';
+ }
+
+ return openInPhone;
+ };
+
+ _proto.formatValue = function formatValue() {
+ var self = this;
+ var value = self.value;
+
+ if (self.params.formatValue) {
+ return self.params.formatValue.call(self, value);
+ }
+
+ return value.hex;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.normalizeHsValues = function normalizeHsValues(arr) {
+ return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];
+ };
+
+ _proto.setValue = function setValue(value, updateModules) {
+ if (value === void 0) {
+ value = {};
+ }
+
+ if (updateModules === void 0) {
+ updateModules = true;
+ }
+
+ var self = this;
+ if (typeof value === 'undefined') return;
+
+ var _ref = self.value || {},
+ hex = _ref.hex,
+ rgb = _ref.rgb,
+ hsl = _ref.hsl,
+ hsb = _ref.hsb,
+ _ref$alpha = _ref.alpha,
+ alpha = _ref$alpha === void 0 ? 1 : _ref$alpha,
+ hue = _ref.hue,
+ rgba = _ref.rgba,
+ hsla = _ref.hsla;
+
+ var needChangeEvent = self.value || !self.value && !self.params.value;
+ var valueChanged;
+ Object.keys(value).forEach(function (k) {
+ if (!self.value || typeof self.value[k] === 'undefined') {
+ valueChanged = true;
+ return;
+ }
+
+ var v = value[k];
+
+ if (Array.isArray(v)) {
+ v.forEach(function (subV, subIndex) {
+ if (subV !== self.value[k][subIndex]) {
+ valueChanged = true;
+ }
+ });
+ } else if (v !== self.value[k]) {
+ valueChanged = true;
+ }
+ });
+ if (!valueChanged) return;
+
+ if (value.rgb || value.rgba) {
+ var _ref2 = value.rgb || value.rgba,
+ r = _ref2[0],
+ g = _ref2[1],
+ b = _ref2[2],
+ _ref2$ = _ref2[3],
+ a = _ref2$ === void 0 ? alpha : _ref2$;
+
+ rgb = [r, g, b];
+ hex = _utils.colorRgbToHex.apply(void 0, rgb);
+ hsl = _utils.colorRgbToHsl.apply(void 0, rgb);
+ hsb = _utils.colorHslToHsb.apply(void 0, hsl);
+ hsl = self.normalizeHsValues(hsl);
+ hsb = self.normalizeHsValues(hsb);
+ hue = hsb[0];
+ alpha = a;
+ rgba = [rgb[0], rgb[1], rgb[2], a];
+ hsla = [hsl[0], hsl[1], hsl[2], a];
+ }
+
+ if (value.hsl || value.hsla) {
+ var _ref3 = value.hsl || value.hsla,
+ h = _ref3[0],
+ s = _ref3[1],
+ l = _ref3[2],
+ _ref3$ = _ref3[3],
+ _a = _ref3$ === void 0 ? alpha : _ref3$;
+
+ hsl = [h, s, l];
+ rgb = _utils.colorHslToRgb.apply(void 0, hsl);
+ hex = _utils.colorRgbToHex.apply(void 0, rgb);
+ hsb = _utils.colorHslToHsb.apply(void 0, hsl);
+ hsl = self.normalizeHsValues(hsl);
+ hsb = self.normalizeHsValues(hsb);
+ hue = hsb[0];
+ alpha = _a;
+ rgba = [rgb[0], rgb[1], rgb[2], _a];
+ hsla = [hsl[0], hsl[1], hsl[2], _a];
+ }
+
+ if (value.hsb) {
+ var _value$hsb = value.hsb,
+ _h = _value$hsb[0],
+ _s = _value$hsb[1],
+ _b = _value$hsb[2],
+ _value$hsb$ = _value$hsb[3],
+ _a2 = _value$hsb$ === void 0 ? alpha : _value$hsb$;
+
+ hsb = [_h, _s, _b];
+ hsl = _utils.colorHsbToHsl.apply(void 0, hsb);
+ rgb = _utils.colorHslToRgb.apply(void 0, hsl);
+ hex = _utils.colorRgbToHex.apply(void 0, rgb);
+ hsl = self.normalizeHsValues(hsl);
+ hsb = self.normalizeHsValues(hsb);
+ hue = hsb[0];
+ alpha = _a2;
+ rgba = [rgb[0], rgb[1], rgb[2], _a2];
+ hsla = [hsl[0], hsl[1], hsl[2], _a2];
+ }
+
+ if (value.hex) {
+ rgb = (0, _utils.colorHexToRgb)(value.hex);
+ hex = _utils.colorRgbToHex.apply(void 0, rgb);
+ hsl = _utils.colorRgbToHsl.apply(void 0, rgb);
+ hsb = _utils.colorHslToHsb.apply(void 0, hsl);
+ hsl = self.normalizeHsValues(hsl);
+ hsb = self.normalizeHsValues(hsb);
+ hue = hsb[0];
+ rgba = [rgb[0], rgb[1], rgb[2], alpha];
+ hsla = [hsl[0], hsl[1], hsl[2], alpha];
+ }
+
+ if (typeof value.alpha !== 'undefined') {
+ alpha = value.alpha;
+
+ if (typeof rgb !== 'undefined') {
+ rgba = [rgb[0], rgb[1], rgb[2], alpha];
+ }
+
+ if (typeof hsl !== 'undefined') {
+ hsla = [hsl[0], hsl[1], hsl[2], alpha];
+ }
+ }
+
+ if (typeof value.hue !== 'undefined') {
+ var _hsl = hsl,
+ _h2 = _hsl[0],
+ _s2 = _hsl[1],
+ _l = _hsl[2]; // eslint-disable-line
+
+ hsl = [value.hue, _s2, _l];
+ hsb = _utils.colorHslToHsb.apply(void 0, hsl);
+ rgb = _utils.colorHslToRgb.apply(void 0, hsl);
+ hex = _utils.colorRgbToHex.apply(void 0, rgb);
+ hsl = self.normalizeHsValues(hsl);
+ hsb = self.normalizeHsValues(hsb);
+ hue = hsb[0];
+ rgba = [rgb[0], rgb[1], rgb[2], alpha];
+ hsla = [hsl[0], hsl[1], hsl[2], alpha];
+ }
+
+ self.value = {
+ hex: hex,
+ alpha: alpha,
+ hue: hue,
+ rgb: rgb,
+ hsl: hsl,
+ hsb: hsb,
+ rgba: rgba,
+ hsla: hsla
+ };
+ if (!self.initialValue) self.initialValue = (0, _utils.extend)({}, self.value);
+ self.updateValue(needChangeEvent);
+
+ if (self.opened && updateModules) {
+ self.updateModules();
+ }
+ };
+
+ _proto.getValue = function getValue() {
+ var self = this;
+ return self.value;
+ };
+
+ _proto.updateValue = function updateValue(fireEvents) {
+ if (fireEvents === void 0) {
+ fireEvents = true;
+ }
+
+ var self = this;
+ var $inputEl = self.$inputEl,
+ value = self.value,
+ $targetEl = self.$targetEl;
+
+ if ($targetEl && self.params.targetElSetBackgroundColor) {
+ var rgba = value.rgba;
+ $targetEl.css('background-color', "rgba(" + rgba.join(', ') + ")");
+ }
+
+ if (fireEvents) {
+ self.emit('local::change colorPickerChange', self, value);
+ }
+
+ if ($inputEl && $inputEl.length) {
+ var inputValue = self.formatValue(value);
+
+ if ($inputEl && $inputEl.length) {
+ $inputEl.val(inputValue);
+
+ if (fireEvents) {
+ $inputEl.trigger('change');
+ }
+ }
+ }
+ };
+
+ _proto.updateModules = function updateModules() {
+ var self = this;
+ var modules = self.modules;
+ self.params.modules.forEach(function (m) {
+ if (typeof m === 'string' && modules[m] && modules[m].update) {
+ modules[m].update(self);
+ } else if (m && m.update) {
+ m.update(self);
+ }
+ });
+ };
+
+ _proto.update = function update() {
+ var self = this;
+ self.updateModules();
+ };
+
+ _proto.renderPicker = function renderPicker() {
+ var self = this;
+ var params = self.params,
+ modules = self.modules;
+ var html = '';
+ params.modules.forEach(function (m) {
+ if (typeof m === 'string' && modules[m] && modules[m].render) {
+ html += modules[m].render(self);
+ } else if (m && m.render) {
+ html += m.render(self);
+ }
+ });
+ return html;
+ };
+
+ _proto.renderNavbar = function renderNavbar() {
+ var self = this;
+
+ if (self.params.renderNavbar) {
+ return self.params.renderNavbar.call(self, self);
+ }
+
+ var _self$params = self.params,
+ openIn = _self$params.openIn,
+ navbarTitleText = _self$params.navbarTitleText,
+ navbarBackLinkText = _self$params.navbarBackLinkText,
+ navbarCloseText = _self$params.navbarCloseText;
+ return (0, _$jsx.default)("div", {
+ class: "navbar"
+ }, (0, _$jsx.default)("div", {
+ class: "navbar-bg"
+ }), (0, _$jsx.default)("div", {
+ class: "navbar-inner sliding"
+ }, openIn === 'page' && (0, _$jsx.default)("div", {
+ class: "left"
+ }, (0, _$jsx.default)("a", {
+ class: "link back"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-back"
+ }), (0, _$jsx.default)("span", {
+ class: "if-not-md"
+ }, navbarBackLinkText))), (0, _$jsx.default)("div", {
+ class: "title"
+ }, navbarTitleText), openIn !== 'page' && (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link popup-close",
+ "data-popup": ".color-picker-popup"
+ }, navbarCloseText))));
+ };
+
+ _proto.renderToolbar = function renderToolbar() {
+ var self = this;
+
+ if (self.params.renderToolbar) {
+ return self.params.renderToolbar.call(self, self);
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "toolbar toolbar-top no-shadow"
+ }, (0, _$jsx.default)("div", {
+ class: "toolbar-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "left"
+ }), (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link sheet-close popover-close",
+ "data-sheet": ".color-picker-sheet-modal",
+ "data-popover": ".color-picker-popover"
+ }, self.params.toolbarCloseText))));
+ };
+
+ _proto.renderInline = function renderInline() {
+ var self = this;
+ var _self$params2 = self.params,
+ cssClass = _self$params2.cssClass,
+ groupedModules = _self$params2.groupedModules;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker color-picker-inline " + (groupedModules ? 'color-picker-grouped-modules' : '') + " " + (cssClass || '')
+ }, self.renderPicker());
+ };
+
+ _proto.renderSheet = function renderSheet() {
+ var self = this;
+ var _self$params3 = self.params,
+ cssClass = _self$params3.cssClass,
+ toolbarSheet = _self$params3.toolbarSheet,
+ groupedModules = _self$params3.groupedModules;
+ return (0, _$jsx.default)("div", {
+ class: "sheet-modal color-picker color-picker-sheet-modal " + (groupedModules ? 'color-picker-grouped-modules' : '') + " " + (cssClass || '')
+ }, toolbarSheet && self.renderToolbar(), (0, _$jsx.default)("div", {
+ class: "sheet-modal-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, self.renderPicker())));
+ };
+
+ _proto.renderPopover = function renderPopover() {
+ var self = this;
+ var _self$params4 = self.params,
+ cssClass = _self$params4.cssClass,
+ toolbarPopover = _self$params4.toolbarPopover,
+ groupedModules = _self$params4.groupedModules;
+ return (0, _$jsx.default)("div", {
+ class: "popover color-picker-popover " + (cssClass || '')
+ }, (0, _$jsx.default)("div", {
+ class: "popover-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
+ }, toolbarPopover && self.renderToolbar(), (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, self.renderPicker()))));
+ };
+
+ _proto.renderPopup = function renderPopup() {
+ var self = this;
+ var _self$params5 = self.params,
+ cssClass = _self$params5.cssClass,
+ navbarPopup = _self$params5.navbarPopup,
+ groupedModules = _self$params5.groupedModules;
+ return (0, _$jsx.default)("div", {
+ class: "popup color-picker-popup " + (cssClass || '')
+ }, (0, _$jsx.default)("div", {
+ class: "page"
+ }, navbarPopup && self.renderNavbar(), (0, _$jsx.default)("div", {
+ class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
+ }, (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, self.renderPicker()))));
+ };
+
+ _proto.renderPage = function renderPage() {
+ var self = this;
+ var _self$params6 = self.params,
+ cssClass = _self$params6.cssClass,
+ groupedModules = _self$params6.groupedModules;
+ return (0, _$jsx.default)("div", {
+ class: "page color-picker-page " + (cssClass || ''),
+ "data-name": "color-picker-page"
+ }, self.renderNavbar(), (0, _$jsx.default)("div", {
+ class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
+ }, (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, self.renderPicker())));
+ } // eslint-disable-next-line
+ ;
+
+ _proto.render = function render() {
+ var self = this;
+ var params = self.params;
+ if (params.render) return params.render.call(self);
+ if (self.inline) return self.renderInline();
+
+ if (params.openIn === 'page') {
+ return self.renderPage();
+ }
+
+ var modalType = self.getModalType();
+ if (modalType === 'popover') return self.renderPopover();
+ if (modalType === 'sheet') return self.renderSheet();
+ if (modalType === 'popup') return self.renderPopup();
+ };
+
+ _proto.onOpen = function onOpen() {
+ var self = this;
+ var initialized = self.initialized,
+ $el = self.$el,
+ app = self.app,
+ $inputEl = self.$inputEl,
+ inline = self.inline,
+ value = self.value,
+ params = self.params,
+ modules = self.modules;
+ self.closing = false;
+ self.opened = true;
+ self.opening = true; // Init main events
+
+ self.attachEvents();
+ params.modules.forEach(function (m) {
+ if (typeof m === 'string' && modules[m] && modules[m].init) {
+ modules[m].init(self);
+ } else if (m && m.init) {
+ m.init(self);
+ }
+ });
+ var updateValue = !value && params.value; // Set value
+
+ if (!initialized) {
+ if (value) self.setValue(value);else if (params.value) {
+ self.setValue(params.value, false);
+ } else if (!params.value) {
+ self.setValue({
+ hex: '#ff0000'
+ }, false);
+ }
+ } else if (value) {
+ self.initialValue = (0, _utils.extend)({}, value);
+ self.setValue(value, false);
+ } // Update input value
+
+
+ if (updateValue) self.updateValue();
+ self.updateModules(); // Center modules
+
+ if (params.centerModules) {
+ self.centerModules();
+ } // Extra focus
+
+
+ if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
+ $inputEl.trigger('focus');
+ }
+
+ self.initialized = true; // Trigger events
+
+ if ($el) {
+ $el.trigger('colorpicker:open');
+ }
+
+ if ($inputEl) {
+ $inputEl.trigger('colorpicker:open');
+ }
+
+ self.emit('local::open colorPickerOpen', self);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var self = this;
+ self.opening = false;
+
+ if (self.$el) {
+ self.$el.trigger('colorpicker:opened');
+ }
+
+ if (self.$inputEl) {
+ self.$inputEl.trigger('colorpicker:opened');
+ }
+
+ self.emit('local::opened colorPickerOpened', self);
+ };
+
+ _proto.onClose = function onClose() {
+ var self = this;
+ var app = self.app,
+ params = self.params,
+ modules = self.modules;
+ self.opening = false;
+ self.closing = true; // Detach events
+
+ self.detachEvents();
+
+ if (self.$inputEl) {
+ if (app.theme === 'md') {
+ self.$inputEl.trigger('blur');
+ } else {
+ var validate = self.$inputEl.attr('validate');
+ var required = self.$inputEl.attr('required');
+
+ if (validate && required) {
+ app.input.validate(self.$inputEl);
+ }
+ }
+ }
+
+ params.modules.forEach(function (m) {
+ if (typeof m === 'string' && modules[m] && modules[m].destroy) {
+ modules[m].destroy(self);
+ } else if (m && m.destroy) {
+ m.destroy(self);
+ }
+ });
+
+ if (self.$el) {
+ self.$el.trigger('colorpicker:close');
+ }
+
+ if (self.$inputEl) {
+ self.$inputEl.trigger('colorpicker:close');
+ }
+
+ self.emit('local::close colorPickerClose', self);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var self = this;
+ self.opened = false;
+ self.closing = false;
+
+ if (!self.inline) {
+ (0, _utils.nextTick)(function () {
+ if (self.modal && self.modal.el && self.modal.destroy) {
+ if (!self.params.routableModals) {
+ self.modal.destroy();
+ }
+ }
+
+ delete self.modal;
+ });
+ }
+
+ if (self.$el) {
+ self.$el.trigger('colorpicker:closed');
+ }
+
+ if (self.$inputEl) {
+ self.$inputEl.trigger('colorpicker:closed');
+ }
+
+ self.emit('local::closed colorPickerClosed', self);
+ };
+
+ _proto.open = function open() {
+ var self = this;
+ var app = self.app,
+ opened = self.opened,
+ inline = self.inline,
+ $inputEl = self.$inputEl,
+ $targetEl = self.$targetEl,
+ params = self.params;
+ if (opened) return;
+
+ if (inline) {
+ self.$el = (0, _dom.default)(self.render());
+ self.$el[0].f7ColorPicker = self;
+ self.$containerEl.append(self.$el);
+ self.onOpen();
+ self.onOpened();
+ return;
+ }
+
+ var colorPickerContent = self.render();
+
+ if (params.openIn === 'page') {
+ self.view.router.navigate({
+ url: self.url,
+ route: {
+ content: colorPickerContent,
+ path: self.url,
+ on: {
+ pageBeforeIn: function pageBeforeIn(e, page) {
+ self.$el = page.$el.find('.color-picker');
+ self.$el[0].f7ColorPicker = self;
+ self.onOpen();
+ },
+ pageAfterIn: function pageAfterIn() {
+ self.onOpened();
+ },
+ pageBeforeOut: function pageBeforeOut() {
+ self.onClose();
+ },
+ pageAfterOut: function pageAfterOut() {
+ self.onClosed();
+
+ if (self.$el && self.$el[0]) {
+ self.$el[0].f7ColorPicker = null;
+ delete self.$el[0].f7ColorPicker;
+ }
+ }
+ }
+ }
+ });
+ } else {
+ var modalType = self.getModalType();
+ var backdrop = params.backdrop;
+
+ if (backdrop === null || typeof backdrop === 'undefined') {
+ if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;
+ if (modalType === 'popup') backdrop = true;
+ }
+
+ var modalParams = {
+ targetEl: $targetEl || $inputEl,
+ scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,
+ content: colorPickerContent,
+ backdrop: backdrop,
+ closeByBackdropClick: params.closeByBackdropClick,
+ on: {
+ open: function open() {
+ var modal = this;
+ self.modal = modal;
+ self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;
+ self.$el[0].f7ColorPicker = self;
+ self.onOpen();
+ },
+ opened: function opened() {
+ self.onOpened();
+ },
+ close: function close() {
+ self.onClose();
+ },
+ closed: function closed() {
+ self.onClosed();
+
+ if (self.$el && self.$el[0]) {
+ self.$el[0].f7ColorPicker = null;
+ delete self.$el[0].f7ColorPicker;
+ }
+ }
+ }
+ };
+
+ if (modalType === 'popup') {
+ modalParams.push = params.popupPush;
+ modalParams.swipeToClose = params.popupSwipeToClose;
+ }
+
+ if (modalType === 'sheet') {
+ modalParams.push = params.sheetPush;
+ modalParams.swipeToClose = params.sheetSwipeToClose;
+ }
+
+ if (params.routableModals && self.view) {
+ var _route;
+
+ self.view.router.navigate({
+ url: self.url,
+ route: (_route = {
+ path: self.url
+ }, _route[modalType] = modalParams, _route)
+ });
+ } else {
+ self.modal = app[modalType].create(modalParams);
+ self.modal.open();
+ }
+ }
+ };
+
+ _proto.close = function close() {
+ var self = this;
+ var opened = self.opened,
+ inline = self.inline;
+ if (!opened) return;
+
+ if (inline) {
+ self.onClose();
+ self.onClosed();
+ return;
+ }
+
+ if (self.params.routableModals && self.view || self.params.openIn === 'page') {
+ self.view.router.back();
+ } else {
+ self.modal.close();
+ }
+ };
+
+ _proto.init = function init() {
+ var self = this;
+ self.initInput();
+
+ if (self.inline) {
+ self.open();
+ self.emit('local::init colorPickerInit', self);
+ return;
+ }
+
+ if (!self.initialized && self.params.value) {
+ self.setValue(self.params.value);
+ } // Attach input Events
+
+
+ if (self.$inputEl) {
+ self.attachInputEvents();
+ }
+
+ if (self.$targetEl) {
+ self.attachTargetEvents();
+ }
+
+ if (self.params.closeByOutsideClick) {
+ self.attachHtmlEvents();
+ }
+
+ self.emit('local::init colorPickerInit', self);
+ };
+
+ _proto.destroy = function destroy() {
+ var self = this;
+ if (self.destroyed) return;
+ var $el = self.$el;
+ self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);
+ if ($el) $el.trigger('colorpicker:beforedestroy');
+ self.close(); // Detach Events
+
+ self.detachEvents();
+
+ if (self.$inputEl) {
+ self.detachInputEvents();
+ }
+
+ if (self.$targetEl) {
+ self.detachTargetEvents();
+ }
+
+ if (self.params.closeByOutsideClick) {
+ self.detachHtmlEvents();
+ }
+
+ if ($el && $el.length) delete self.$el[0].f7ColorPicker;
+ (0, _utils.deleteProps)(self);
+ self.destroyed = true;
+ };
+
+ _createClass(ColorPicker, [{
+ key: "view",
+ get: function get() {
+ var $inputEl = this.$inputEl,
+ $targetEl = this.$targetEl,
+ app = this.app,
+ params = this.params;
+ var view;
+
+ if (params.view) {
+ view = params.view;
+ } else {
+ if ($inputEl) {
+ view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
+ }
+
+ if (!view && $targetEl) {
+ view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;
+ }
+ }
+
+ if (!view) view = app.views.main;
+ return view;
+ }
+ }]);
+
+ return ColorPicker;
+}(_class.default);
+
+var _default = ColorPicker;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/color-picker.js b/www/assets/framework7/cjs/components/color-picker/color-picker.js
new file mode 100644
index 000000000..119c13938
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/color-picker.js
@@ -0,0 +1,105 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+var _colorPickerClass = _interopRequireDefault(require("./color-picker-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'colorPicker',
+ static: {
+ ColorPicker: _colorPickerClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.colorPicker = (0, _constructorMethods.default)({
+ defaultSelector: '.color-picker',
+ constructor: _colorPickerClass.default,
+ app: app,
+ domProp: 'f7ColorPicker'
+ });
+
+ app.colorPicker.close = function close(el) {
+ if (el === void 0) {
+ el = '.color-picker';
+ }
+
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ var colorPicker = $el[0].f7ColorPicker;
+ if (!colorPicker || colorPicker && !colorPicker.opened) return;
+ colorPicker.close();
+ };
+ },
+ params: {
+ colorPicker: {
+ // Color picker settings
+ value: null,
+ modules: ['wheel'],
+ palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],
+ groupedModules: false,
+ centerModules: true,
+ sliderLabel: false,
+ sliderValue: false,
+ sliderValueEdiable: false,
+ barLabel: false,
+ barValue: false,
+ barValueEdiable: false,
+ hexLabel: false,
+ hexValueEditable: false,
+ redLabelText: 'R',
+ greenLabelText: 'G',
+ blueLabelText: 'B',
+ hueLabelText: 'H',
+ saturationLabelText: 'S',
+ brightnessLabelText: 'B',
+ hexLabelText: 'HEX',
+ alphaLabelText: 'A',
+ // Common opener settings
+ containerEl: null,
+ openIn: 'popover',
+ // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'
+ openInPhone: 'popup',
+ // or 'popover' or 'sheet' or 'popup' or 'page'
+ popupPush: false,
+ popupSwipeToClose: undefined,
+ sheetPush: false,
+ sheetSwipeToClose: undefined,
+ formatValue: null,
+ targetEl: null,
+ targetElSetBackgroundColor: false,
+ inputEl: null,
+ inputReadOnly: true,
+ closeByOutsideClick: true,
+ scrollToInput: true,
+ toolbarSheet: true,
+ toolbarPopover: false,
+ toolbarCloseText: 'Done',
+ navbarPopup: true,
+ navbarCloseText: 'Done',
+ navbarTitleText: 'Color',
+ navbarBackLinkText: 'Back',
+ cssClass: null,
+ routableModals: false,
+ view: null,
+ url: 'color/',
+ backdrop: null,
+ closeByBackdropClick: true,
+ // Render functions
+ renderToolbar: null,
+ renderNavbar: null,
+ renderInline: null,
+ renderPopover: null,
+ renderSheet: null,
+ renderPopup: null,
+ render: null
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/alpha-slider.js b/www/assets/framework7/cjs/components/color-picker/modules/alpha-slider.js
new file mode 100644
index 000000000..f42fab42b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/alpha-slider.js
@@ -0,0 +1,101 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ sliderLabel = _self$params.sliderLabel,
+ sliderValue = _self$params.sliderValue,
+ sliderValueEditable = _self$params.sliderValueEditable,
+ alphaLabelText = _self$params.alphaLabelText;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-alpha-slider"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, alphaLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-alpha"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "0.01",
+ min: "0",
+ max: "1",
+ class: "color-picker-value-alpha"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-alpha"
+ }))));
+ },
+ init: function init(self) {
+ self.alphaRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-alpha'),
+ min: 0,
+ max: 1,
+ step: 0.01,
+ value: 1,
+ on: {
+ change: function change(range, value) {
+ var alpha = Math.floor(value * 100) / 100;
+ self.setValue({
+ alpha: alpha
+ });
+ }
+ }
+ });
+
+ function handleInputChange(e) {
+ var alpha = self.value.alpha;
+ var value = parseFloat(e.target.value);
+
+ if (Number.isNaN(value)) {
+ e.target.value = alpha;
+ return;
+ }
+
+ value = Math.max(0, Math.min(1, value));
+ self.setValue({
+ alpha: value
+ });
+ }
+
+ self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);
+
+ self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {
+ self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);
+ };
+ },
+ update: function update(self) {
+ var value = self.value;
+ var _self$params2 = self.params,
+ sliderValue = _self$params2.sliderValue,
+ sliderValueEditable = _self$params2.sliderValueEditable;
+ var alpha = value.alpha;
+ self.alphaRangeSlider.value = alpha;
+ self.alphaRangeSlider.layout();
+
+ if (sliderValue && sliderValueEditable) {
+ self.$el.find('input.color-picker-value-alpha').val(alpha);
+ } else {
+ self.$el.find('span.color-picker-value-alpha').text(alpha);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {
+ self.alphaRangeSlider.destroy();
+ }
+
+ delete self.alphaRangeSlider;
+ if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();
+ delete self.destroyAlphaSliderEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/brightness-slider.js b/www/assets/framework7/cjs/components/color-picker/modules/brightness-slider.js
new file mode 100644
index 000000000..3aed05f60
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/brightness-slider.js
@@ -0,0 +1,86 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../../shared/utils");
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ sliderLabel = _self$params.sliderLabel,
+ sliderValue = _self$params.sliderValue,
+ sliderValueEditable = _self$params.sliderValueEditable,
+ brightnessLabelText = _self$params.brightnessLabelText;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-brightness-slider"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, brightnessLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-brightness"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "0.1",
+ min: "0",
+ max: "100",
+ class: "color-picker-value-brightness"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-brightness"
+ }))));
+ },
+ init: function init(self) {
+ self.brightnessRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-brightness'),
+ min: 0,
+ max: 1,
+ step: 0.001,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ var b = Math.floor(value * 1000) / 1000;
+ self.setValue({
+ hsb: [self.value.hsb[0], self.value.hsb[1], b]
+ });
+ }
+ }
+ });
+ },
+ update: function update(self) {
+ var value = self.value,
+ app = self.app;
+ var _self$params2 = self.params,
+ sliderValue = _self$params2.sliderValue,
+ sliderValueEditable = _self$params2.sliderValueEditable;
+ var hsb = value.hsb;
+ self.brightnessRangeSlider.value = hsb[2];
+ self.brightnessRangeSlider.layout();
+ var hslCurrent = (0, _utils.colorHsbToHsl)(hsb[0], hsb[1], hsb[2]);
+ var hslLeft = (0, _utils.colorHsbToHsl)(hsb[0], hsb[1], 0);
+ var hslRight = (0, _utils.colorHsbToHsl)(hsb[0], hsb[1], 1);
+ self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hslCurrent[0] + ", " + hslCurrent[1] * 100 + "%, " + hslCurrent[2] * 100 + "%)");
+ self.brightnessRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + (app.rtl ? 'to left' : 'to right') + ", hsl(" + hslLeft[0] + ", " + hslLeft[1] * 100 + "%, " + hslLeft[2] * 100 + "%), hsl(" + hslRight[0] + ", " + hslRight[1] * 100 + "%, " + hslRight[2] * 100 + "%))");
+
+ if (sliderValue && sliderValueEditable) {
+ self.$el.find('input.color-picker-value-brightness').val("" + hsb[2] * 1000 / 10);
+ } else if (sliderValue) {
+ self.$el.find('span.color-picker-value-brightness').text("" + hsb[2] * 1000 / 10);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {
+ self.brightnessRangeSlider.destroy();
+ }
+
+ delete self.brightnessRangeSlider;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/current-color.js b/www/assets/framework7/cjs/components/color-picker/modules/current-color.js
new file mode 100644
index 000000000..e561d3246
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/current-color.js
@@ -0,0 +1,23 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render() {
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-current-color"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-current-color"
+ }));
+ },
+ update: function update(self) {
+ self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/hex.js b/www/assets/framework7/cjs/components/color-picker/modules/hex.js
new file mode 100644
index 000000000..85941b02b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/hex.js
@@ -0,0 +1,81 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ hexLabel = _self$params.hexLabel,
+ hexLabelText = _self$params.hexLabelText,
+ hexValueEditable = _self$params.hexValueEditable;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-hex"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-hex-wrap"
+ }, hexLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-hex-label"
+ }, hexLabelText), (0, _$jsx.default)("div", {
+ class: "color-picker-hex-value"
+ }, hexValueEditable ? (0, _$jsx.default)("input", {
+ type: "text",
+ class: "color-picker-value-hex"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-hex"
+ }))));
+ },
+ init: function init(self) {
+ function handleInputChange(e) {
+ var hex = self.value.hex;
+ var value = e.target.value.replace(/#/g, '');
+
+ if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {
+ e.target.value = hex;
+ return;
+ }
+
+ var min = 0;
+ var current = parseInt(value, 16);
+ var max = parseInt('ffffff', 16); // eslint-disable-line
+
+ if (current > max) {
+ value = 'fff';
+ }
+
+ if (current < min) {
+ value = '000';
+ }
+
+ self.setValue({
+ hex: value
+ });
+ }
+
+ self.$el.on('change', '.color-picker-module-hex input', handleInputChange);
+
+ self.destroyHexEvents = function destroyHexEvents() {
+ self.$el.off('change', '.color-picker-module-hex input', handleInputChange);
+ };
+ },
+ update: function update(self) {
+ var value = self.value;
+ var hexValueEditable = self.params.hexValueEditable;
+ var hex = value.hex;
+
+ if (hexValueEditable) {
+ self.$el.find('input.color-picker-value-hex').val(hex);
+ } else {
+ self.$el.find('span.color-picker-value-hex').text(hex);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.destroyHexEvents) self.destroyHexEvents();
+ delete self.destroyHexEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/hs-spectrum.js b/www/assets/framework7/cjs/components/color-picker/modules/hs-spectrum.js
new file mode 100644
index 000000000..79a0b7401
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/hs-spectrum.js
@@ -0,0 +1,137 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _utils = require("../../../shared/utils");
+
+var _getSupport = require("../../../shared/get-support");
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render() {
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-hs-spectrum"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-hs-spectrum"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-hs-spectrum-handle"
+ })));
+ },
+ init: function init(self) {
+ var app = self.app;
+ var isTouched;
+ var isMoved;
+ var touchStartX;
+ var touchStartY;
+ var touchCurrentX;
+ var touchCurrentY;
+ var specterRect;
+ var specterIsTouched;
+ var specterHandleIsTouched;
+ var $el = self.$el;
+
+ function setHSFromSpecterCoords(x, y) {
+ var h = (x - specterRect.left) / specterRect.width * 360;
+ var s = (y - specterRect.top) / specterRect.height;
+ h = Math.max(0, Math.min(360, h));
+ s = 1 - Math.max(0, Math.min(1, s));
+ self.setValue({
+ hsb: [h, s, self.value.hsb[2]]
+ });
+ }
+
+ function handleTouchStart(e) {
+ if (isMoved || isTouched) return;
+ touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentX = touchStartX;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchCurrentY = touchStartY;
+ var $targetEl = (0, _dom.default)(e.target);
+ specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;
+
+ if (!specterHandleIsTouched) {
+ specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;
+ }
+
+ if (specterIsTouched) {
+ specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();
+ setHSFromSpecterCoords(touchStartX, touchStartY);
+ }
+
+ if (specterHandleIsTouched || specterIsTouched) {
+ $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');
+ }
+ }
+
+ function handleTouchMove(e) {
+ if (!(specterIsTouched || specterHandleIsTouched)) return;
+ touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ e.preventDefault();
+
+ if (!isMoved) {
+ // First move
+ isMoved = true;
+
+ if (specterHandleIsTouched) {
+ specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();
+ }
+ }
+
+ if (specterIsTouched || specterHandleIsTouched) {
+ setHSFromSpecterCoords(touchCurrentX, touchCurrentY);
+ }
+ }
+
+ function handleTouchEnd() {
+ isMoved = false;
+
+ if (specterIsTouched || specterHandleIsTouched) {
+ $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');
+ }
+
+ specterIsTouched = false;
+ specterHandleIsTouched = false;
+ }
+
+ function handleResize() {
+ self.modules['hs-spectrum'].update(self);
+ }
+
+ var passiveListener = app.touchEvents.start === 'touchstart' && (0, _getSupport.getSupport)().passiveListener ? {
+ passive: true,
+ capture: false
+ } : false;
+ self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('resize', handleResize);
+
+ self.destroySpectrumEvents = function destroySpectrumEvents() {
+ self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('resize', handleResize);
+ };
+ },
+ update: function update(self) {
+ var value = self.value;
+ var hsb = value.hsb;
+ var specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;
+ var specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;
+ var hslBright = (0, _utils.colorHsbToHsl)(hsb[0], hsb[1], 1);
+ self.$el.find('.color-picker-hs-spectrum-handle').css('background-color', "hsl(" + hslBright[0] + ", " + hslBright[1] * 100 + "%, " + hslBright[2] * 100 + "%)").transform("translate(" + specterWidth * (hsb[0] / 360) + "px, " + specterHeight * (1 - hsb[1]) + "px)");
+ },
+ destroy: function destroy(self) {
+ if (self.destroySpectrumEvents) self.destroySpectrumEvents();
+ delete self.destroySpectrumEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/hsb-sliders.js b/www/assets/framework7/cjs/components/color-picker/modules/hsb-sliders.js
new file mode 100644
index 000000000..6531df295
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/hsb-sliders.js
@@ -0,0 +1,206 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _utils = require("../../../shared/utils");
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ sliderLabel = _self$params.sliderLabel,
+ sliderValue = _self$params.sliderValue,
+ sliderValueEditable = _self$params.sliderValueEditable,
+ hueLabelText = _self$params.hueLabelText,
+ saturationLabelText = _self$params.saturationLabelText,
+ brightnessLabelText = _self$params.brightnessLabelText;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-hsb-sliders"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, hueLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-hue"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "0.1",
+ min: "0",
+ max: "360",
+ class: "color-picker-value-hue",
+ "data-color-index": "0"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-hue"
+ }))), (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, saturationLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-saturation"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "0.1",
+ min: "0",
+ max: "100",
+ class: "color-picker-value-saturation",
+ "data-color-index": "1"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-saturation"
+ }))), (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, brightnessLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-brightness"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "0.1",
+ min: "0",
+ max: "100",
+ class: "color-picker-value-brightness",
+ "data-color-index": "2"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-brightness"
+ }))));
+ },
+ init: function init(self) {
+ self.hueRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-hue'),
+ min: 0,
+ max: 360,
+ step: 0.1,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ hue: value
+ });
+ }
+ }
+ });
+ self.saturationRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-saturation'),
+ min: 0,
+ max: 1,
+ step: 0.001,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ var s = Math.floor(value * 1000) / 1000;
+ self.setValue({
+ hsb: [self.value.hsb[0], s, self.value.hsb[2]]
+ });
+ }
+ }
+ });
+ self.brightnessRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-brightness'),
+ min: 0,
+ max: 1,
+ step: 0.001,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ var b = Math.floor(value * 1000) / 1000;
+ self.setValue({
+ hsb: [self.value.hsb[0], self.value.hsb[1], b]
+ });
+ }
+ }
+ });
+
+ function handleInputChange(e) {
+ var hsb = [].concat(self.value.hsb);
+ var index = parseInt((0, _dom.default)(e.target).attr('data-color-index'), 10);
+ var value = parseFloat(e.target.value);
+
+ if (Number.isNaN(value)) {
+ e.target.value = hsb[index];
+ return;
+ }
+
+ if (index === 0) {
+ value = Math.max(0, Math.min(360, value));
+ } else {
+ value = Math.max(0, Math.min(100, value)) / 100;
+ }
+
+ hsb[index] = value;
+ self.setValue({
+ hsb: hsb
+ });
+ }
+
+ self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);
+
+ self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {
+ self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);
+ };
+ },
+ update: function update(self) {
+ var app = self.app,
+ value = self.value;
+ var _self$params2 = self.params,
+ sliderValue = _self$params2.sliderValue,
+ sliderValueEditable = _self$params2.sliderValueEditable;
+ var hsb = value.hsb,
+ hue = value.hue;
+ self.hueRangeSlider.value = hue;
+ self.saturationRangeSlider.value = hsb[1];
+ self.brightnessRangeSlider.value = hsb[2];
+ self.hueRangeSlider.layout();
+ self.saturationRangeSlider.layout();
+ self.brightnessRangeSlider.layout();
+ var hslCurrent = (0, _utils.colorHsbToHsl)(hsb[0], hsb[1], 1);
+ var hslLeft = (0, _utils.colorHsbToHsl)(hsb[0], 0, 1);
+ var hslRight = (0, _utils.colorHsbToHsl)(hsb[0], 1, 1);
+ var brightness = hsb[2];
+ self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hue + ", 100%, 50%)");
+ self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hslCurrent[0] + ", " + hslCurrent[1] * 100 + "%, " + hslCurrent[2] * 100 + "%)");
+ self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + brightness * 255 + ", " + brightness * 255 + ", " + brightness * 255 + ")");
+ self.saturationRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + (app.rtl ? 'to left' : 'to right') + ", hsl(" + hslLeft[0] + ", " + hslLeft[1] * 100 + "%, " + hslLeft[2] * 100 + "%), hsl(" + hslRight[0] + ", " + hslRight[1] * 100 + "%, " + hslRight[2] * 100 + "%))");
+
+ if (sliderValue && sliderValueEditable) {
+ self.$el.find('input.color-picker-value-hue').val("" + hue);
+ self.$el.find('input.color-picker-value-saturation').val("" + hsb[1] * 1000 / 10);
+ self.$el.find('input.color-picker-value-brightness').val("" + hsb[2] * 1000 / 10);
+ } else if (sliderValue) {
+ self.$el.find('span.color-picker-value-hue').text("" + hue);
+ self.$el.find('span.color-picker-value-saturation').text("" + hsb[1] * 1000 / 10);
+ self.$el.find('span.color-picker-value-brightness').text("" + hsb[2] * 1000 / 10);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.hueRangeSlider && self.hueRangeSlider.destroy) {
+ self.hueRangeSlider.destroy();
+ }
+
+ if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {
+ self.saturationRangeSlider.destroy();
+ }
+
+ if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {
+ self.brightnessRangeSlider.destroy();
+ }
+
+ delete self.hueRangeSlider;
+ delete self.saturationRangeSlider;
+ delete self.brightnessRangeSlider;
+ if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();
+ delete self.destroyHsbSlidersEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/hue-slider.js b/www/assets/framework7/cjs/components/color-picker/modules/hue-slider.js
new file mode 100644
index 000000000..6cde98158
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/hue-slider.js
@@ -0,0 +1,78 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ sliderLabel = _self$params.sliderLabel,
+ sliderValue = _self$params.sliderValue,
+ sliderValueEditable = _self$params.sliderValueEditable,
+ hueLabelText = _self$params.hueLabelText;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-hue-slider"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, hueLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-hue"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "0.1",
+ min: "0",
+ max: "360",
+ class: "color-picker-value-hue"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-hue"
+ }))));
+ },
+ init: function init(self) {
+ self.hueRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-hue'),
+ min: 0,
+ max: 360,
+ step: 0.1,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ hue: value
+ });
+ }
+ }
+ });
+ },
+ update: function update(self) {
+ var value = self.value;
+ var _self$params2 = self.params,
+ sliderValue = _self$params2.sliderValue,
+ sliderValueEditable = _self$params2.sliderValueEditable;
+ var hue = value.hue;
+ self.hueRangeSlider.value = hue;
+ self.hueRangeSlider.layout();
+ self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hue + ", 100%, 50%)");
+
+ if (sliderValue && sliderValueEditable) {
+ self.$el.find('input.color-picker-value-hue').val("" + hue);
+ } else if (sliderValue) {
+ self.$el.find('span.color-picker-value-hue').text("" + hue);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.hueRangeSlider && self.hueRangeSlider.destroy) {
+ self.hueRangeSlider.destroy();
+ }
+
+ delete self.hueRangeSlider;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/initial-current-colors.js b/www/assets/framework7/cjs/components/color-picker/modules/initial-current-colors.js
new file mode 100644
index 000000000..8c7193366
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/initial-current-colors.js
@@ -0,0 +1,54 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render() {
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-initial-current-colors"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-initial-current-colors"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-initial-color"
+ }), (0, _$jsx.default)("div", {
+ class: "color-picker-current-color"
+ })));
+ },
+ init: function init(self) {
+ function handleInitialColorClick() {
+ if (self.initialValue) {
+ var _self$initialValue = self.initialValue,
+ hex = _self$initialValue.hex,
+ alpha = _self$initialValue.alpha;
+ self.setValue({
+ hex: hex,
+ alpha: alpha
+ });
+ }
+ }
+
+ self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);
+
+ self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {
+ self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);
+ };
+ },
+ update: function update(self) {
+ self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);
+ self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);
+ },
+ destroy: function destroy(self) {
+ if (self.destroyInitialCurrentEvents) {
+ self.destroyInitialCurrentEvents();
+ }
+
+ delete self.destroyInitialCurrentEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/palette.js b/www/assets/framework7/cjs/components/color-picker/modules/palette.js
new file mode 100644
index 000000000..ecc5c367c
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/palette.js
@@ -0,0 +1,61 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint indent: ["off"] */
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-palette"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-palette"
+ }, self.params.palette.map(function (p) {
+ if (Array.isArray(p)) {
+ var row = ''; // prettier-ignore
+
+ row += p.map(function (c) {
+ return "\n
\n ";
+ }).join('');
+ row += '
';
+ return row;
+ }
+
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-palette-value",
+ "data-palette-color": p,
+ style: "background-color: " + p
+ });
+ })));
+ },
+ init: function init(self) {
+ function handlePaletteClick(e) {
+ var hex = (0, _dom.default)(e.target).attr('data-palette-color');
+ self.setValue({
+ hex: hex
+ });
+ }
+
+ self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);
+
+ self.destroyPaletteEvents = function destroyPaletteEvents() {
+ self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);
+ };
+ },
+ destroy: function destroy(self) {
+ if (self.destroyPaletteEvents) {
+ self.destroyPaletteEvents();
+ }
+
+ delete self.destroyPaletteEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/rgb-bars.js b/www/assets/framework7/cjs/components/color-picker/modules/rgb-bars.js
new file mode 100644
index 000000000..ba210ca97
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/rgb-bars.js
@@ -0,0 +1,196 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ barLabel = _self$params.barLabel,
+ barValue = _self$params.barValue,
+ barValueEditable = _self$params.barValueEditable,
+ redLabelText = _self$params.redLabelText,
+ greenLabelText = _self$params.greenLabelText,
+ blueLabelText = _self$params.blueLabelText;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-rgb-bars"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-bar-wrap"
+ }, barLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-bar-label"
+ }, redLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-bar color-picker-bar-red"
+ }), barValue && (0, _$jsx.default)("div", {
+ class: "color-picker-bar-value"
+ }, barValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "1",
+ min: "0",
+ max: "255",
+ class: "color-picker-value-bar-red",
+ "data-color-index": "0"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-bar-red"
+ }))), (0, _$jsx.default)("div", {
+ class: "color-picker-bar-wrap"
+ }, barLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-bar-label"
+ }, greenLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-bar color-picker-bar-green"
+ }), barValue && (0, _$jsx.default)("div", {
+ class: "color-picker-bar-value"
+ }, barValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "1",
+ min: "0",
+ max: "255",
+ class: "color-picker-value-bar-green",
+ "data-color-index": "1"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-bar-green"
+ }))), (0, _$jsx.default)("div", {
+ class: "color-picker-bar-wrap"
+ }, barLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-bar-label"
+ }, blueLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-bar color-picker-bar-blue"
+ }), barValue && (0, _$jsx.default)("div", {
+ class: "color-picker-bar-value"
+ }, barValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "1",
+ min: "0",
+ max: "255",
+ class: "color-picker-value-bar-blue",
+ "data-color-index": "2"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-bar-blue"
+ }))));
+ },
+ init: function init(self) {
+ self.redBar = self.app.range.create({
+ el: self.$el.find('.color-picker-bar-red'),
+ min: 0,
+ max: 255,
+ step: 1,
+ value: 0,
+ vertical: true,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ rgb: [value, self.value.rgb[1], self.value.rgb[2]]
+ });
+ }
+ }
+ });
+ self.greenBar = self.app.range.create({
+ el: self.$el.find('.color-picker-bar-green'),
+ min: 0,
+ max: 255,
+ step: 1,
+ value: 0,
+ vertical: true,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ rgb: [self.value.rgb[0], value, self.value.rgb[2]]
+ });
+ }
+ }
+ });
+ self.blueBar = self.app.range.create({
+ el: self.$el.find('.color-picker-bar-blue'),
+ min: 0,
+ max: 255,
+ step: 1,
+ value: 0,
+ vertical: true,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ rgb: [self.value.rgb[0], self.value.rgb[1], value]
+ });
+ }
+ }
+ });
+
+ function handleInputChange(e) {
+ var rgb = [].concat(self.value.rgb);
+ var index = parseInt((0, _dom.default)(e.target).attr('data-color-index'), 10);
+ var value = parseInt(e.target.value, 10);
+
+ if (Number.isNaN(value)) {
+ e.target.value = rgb[index];
+ return;
+ }
+
+ value = Math.max(0, Math.min(255, value));
+ rgb[index] = value;
+ self.setValue({
+ rgb: rgb
+ });
+ }
+
+ self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);
+
+ self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {
+ self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);
+ };
+ },
+ update: function update(self) {
+ var value = self.value,
+ redBar = self.redBar,
+ greenBar = self.greenBar,
+ blueBar = self.blueBar;
+ var _self$params2 = self.params,
+ barValue = _self$params2.barValue,
+ barValueEditable = _self$params2.barValueEditable;
+ var rgb = value.rgb;
+ redBar.value = rgb[0];
+ greenBar.value = rgb[1];
+ blueBar.value = rgb[2];
+ redBar.layout();
+ greenBar.layout();
+ blueBar.layout();
+ redBar.$el.find('.range-bar').css('background-image', "linear-gradient(to top, rgb(0, " + rgb[1] + ", " + rgb[2] + "), rgb(255, " + rgb[1] + ", " + rgb[2] + "))");
+ greenBar.$el.find('.range-bar').css('background-image', "linear-gradient(to top, rgb(" + rgb[0] + ", 0, " + rgb[2] + "), rgb(" + rgb[0] + ", 255, " + rgb[2] + "))");
+ blueBar.$el.find('.range-bar').css('background-image', "linear-gradient(to top, rgb(" + rgb[0] + ", " + rgb[1] + ", 0), rgb(" + rgb[0] + ", " + rgb[1] + ", 255))");
+
+ if (barValue && barValueEditable) {
+ self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);
+ self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);
+ self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);
+ } else if (barValue) {
+ self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);
+ self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);
+ self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.redBar && self.redBar.destroy) {
+ self.redBar.destroy();
+ }
+
+ if (self.greenBar && self.greenBar.destroy) {
+ self.greenBar.destroy();
+ }
+
+ if (self.blueBar && self.blueBar.destroy) {
+ self.blueBar.destroy();
+ }
+
+ delete self.redBar;
+ delete self.greenBar;
+ delete self.blueBar;
+ if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();
+ delete self.destroyRgbBarsEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/rgb-sliders.js b/www/assets/framework7/cjs/components/color-picker/modules/rgb-sliders.js
new file mode 100644
index 000000000..83222c756
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/rgb-sliders.js
@@ -0,0 +1,198 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render(self) {
+ var _self$params = self.params,
+ sliderLabel = _self$params.sliderLabel,
+ sliderValue = _self$params.sliderValue,
+ sliderValueEditable = _self$params.sliderValueEditable,
+ redLabelText = _self$params.redLabelText,
+ greenLabelText = _self$params.greenLabelText,
+ blueLabelText = _self$params.blueLabelText;
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-rgb-sliders"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, redLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-red"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "1",
+ min: "0",
+ max: "255",
+ class: "color-picker-value-red",
+ "data-color-index": "0"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-red"
+ }))), (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, greenLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-green"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "1",
+ min: "0",
+ max: "255",
+ class: "color-picker-value-green",
+ "data-color-index": "1"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-green"
+ }))), (0, _$jsx.default)("div", {
+ class: "color-picker-slider-wrap"
+ }, sliderLabel && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-label"
+ }, blueLabelText), (0, _$jsx.default)("div", {
+ class: "range-slider color-picker-slider color-picker-slider-blue"
+ }), sliderValue && (0, _$jsx.default)("div", {
+ class: "color-picker-slider-value"
+ }, sliderValueEditable ? (0, _$jsx.default)("input", {
+ type: "number",
+ step: "1",
+ min: "0",
+ max: "255",
+ class: "color-picker-value-blue",
+ "data-color-index": "2"
+ }) : (0, _$jsx.default)("span", {
+ class: "color-picker-value-blue"
+ }))));
+ },
+ init: function init(self) {
+ self.redRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-red'),
+ min: 0,
+ max: 255,
+ step: 1,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ rgb: [value, self.value.rgb[1], self.value.rgb[2]]
+ });
+ }
+ }
+ });
+ self.greenRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-green'),
+ min: 0,
+ max: 255,
+ step: 1,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ rgb: [self.value.rgb[0], value, self.value.rgb[2]]
+ });
+ }
+ }
+ });
+ self.blueRangeSlider = self.app.range.create({
+ el: self.$el.find('.color-picker-slider-blue'),
+ min: 0,
+ max: 255,
+ step: 1,
+ value: 0,
+ on: {
+ change: function change(range, value) {
+ self.setValue({
+ rgb: [self.value.rgb[0], self.value.rgb[1], value]
+ });
+ }
+ }
+ });
+
+ function handleInputChange(e) {
+ var rgb = [].concat(self.value.rgb);
+ var index = parseInt((0, _dom.default)(e.target).attr('data-color-index'), 10);
+ var value = parseInt(e.target.value, 10);
+
+ if (Number.isNaN(value)) {
+ e.target.value = rgb[index];
+ return;
+ }
+
+ value = Math.max(0, Math.min(255, value));
+ rgb[index] = value;
+ self.setValue({
+ rgb: rgb
+ });
+ }
+
+ self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);
+
+ self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {
+ self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);
+ };
+ },
+ update: function update(self) {
+ var app = self.app,
+ value = self.value,
+ redRangeSlider = self.redRangeSlider,
+ greenRangeSlider = self.greenRangeSlider,
+ blueRangeSlider = self.blueRangeSlider;
+ var _self$params2 = self.params,
+ sliderValue = _self$params2.sliderValue,
+ sliderValueEditable = _self$params2.sliderValueEditable;
+ var rgb = value.rgb;
+ redRangeSlider.value = rgb[0];
+ greenRangeSlider.value = rgb[1];
+ blueRangeSlider.value = rgb[2];
+ redRangeSlider.layout();
+ greenRangeSlider.layout();
+ blueRangeSlider.layout();
+ redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")");
+ greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")");
+ blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")");
+ var direction = app.rtl ? 'to left' : 'to right';
+ redRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + direction + ", rgb(0, " + rgb[1] + ", " + rgb[2] + "), rgb(255, " + rgb[1] + ", " + rgb[2] + "))");
+ greenRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + direction + ", rgb(" + rgb[0] + ", 0, " + rgb[2] + "), rgb(" + rgb[0] + ", 255, " + rgb[2] + "))");
+ blueRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + direction + ", rgb(" + rgb[0] + ", " + rgb[1] + ", 0), rgb(" + rgb[0] + ", " + rgb[1] + ", 255))");
+
+ if (sliderValue && sliderValueEditable) {
+ self.$el.find('input.color-picker-value-red').val(rgb[0]);
+ self.$el.find('input.color-picker-value-green').val(rgb[1]);
+ self.$el.find('input.color-picker-value-blue').val(rgb[2]);
+ } else if (sliderValue) {
+ self.$el.find('span.color-picker-value-red').text(rgb[0]);
+ self.$el.find('span.color-picker-value-green').text(rgb[1]);
+ self.$el.find('span.color-picker-value-blue').text(rgb[2]);
+ }
+ },
+ destroy: function destroy(self) {
+ if (self.redRangeSlider && self.redRangeSlider.destroy) {
+ self.redRangeSlider.destroy();
+ }
+
+ if (self.greenRangeSlider && self.greenRangeSlider.destroy) {
+ self.greenRangeSlider.destroy();
+ }
+
+ if (self.blueRangeSlider && self.blueRangeSlider.destroy) {
+ self.blueRangeSlider.destroy();
+ }
+
+ delete self.redRangeSlider;
+ delete self.greenRangeSlider;
+ delete self.blueRangeSlider;
+ if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();
+ delete self.destroyRgbSlidersEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/sb-spectrum.js b/www/assets/framework7/cjs/components/color-picker/modules/sb-spectrum.js
new file mode 100644
index 000000000..2028d9369
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/sb-spectrum.js
@@ -0,0 +1,137 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _getSupport = require("../../../shared/get-support");
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+var _default = {
+ render: function render() {
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-sb-spectrum"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-sb-spectrum",
+ style: "background-color: hsl(0, 100%, 50%)"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-sb-spectrum-handle"
+ })));
+ },
+ init: function init(self) {
+ var app = self.app;
+ var isTouched;
+ var isMoved;
+ var touchStartX;
+ var touchStartY;
+ var touchCurrentX;
+ var touchCurrentY;
+ var specterRect;
+ var specterIsTouched;
+ var specterHandleIsTouched;
+ var $el = self.$el;
+
+ function setSBFromSpecterCoords(x, y) {
+ var s = (x - specterRect.left) / specterRect.width;
+ var b = (y - specterRect.top) / specterRect.height;
+ s = Math.max(0, Math.min(1, s));
+ b = 1 - Math.max(0, Math.min(1, b));
+ self.setValue({
+ hsb: [self.value.hue, s, b]
+ });
+ }
+
+ function handleTouchStart(e) {
+ if (isMoved || isTouched) return;
+ touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentX = touchStartX;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchCurrentY = touchStartY;
+ var $targetEl = (0, _dom.default)(e.target);
+ specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;
+
+ if (!specterHandleIsTouched) {
+ specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;
+ }
+
+ if (specterIsTouched) {
+ specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
+ setSBFromSpecterCoords(touchStartX, touchStartY);
+ }
+
+ if (specterHandleIsTouched || specterIsTouched) {
+ $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');
+ }
+ }
+
+ function handleTouchMove(e) {
+ if (!(specterIsTouched || specterHandleIsTouched)) return;
+ touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ e.preventDefault();
+
+ if (!isMoved) {
+ // First move
+ isMoved = true;
+
+ if (specterHandleIsTouched) {
+ specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
+ }
+ }
+
+ if (specterIsTouched || specterHandleIsTouched) {
+ setSBFromSpecterCoords(touchCurrentX, touchCurrentY);
+ }
+ }
+
+ function handleTouchEnd() {
+ isMoved = false;
+
+ if (specterIsTouched || specterHandleIsTouched) {
+ $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');
+ }
+
+ specterIsTouched = false;
+ specterHandleIsTouched = false;
+ }
+
+ function handleResize() {
+ self.modules['sb-spectrum'].update(self);
+ }
+
+ var passiveListener = app.touchEvents.start === 'touchstart' && (0, _getSupport.getSupport)().passiveListener ? {
+ passive: true,
+ capture: false
+ } : false;
+ self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('resize', handleResize);
+
+ self.destroySpectrumEvents = function destroySpectrumEvents() {
+ self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('resize', handleResize);
+ };
+ },
+ update: function update(self) {
+ var value = self.value;
+ var hsl = value.hsl,
+ hsb = value.hsb;
+ var specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;
+ var specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;
+ self.$el.find('.color-picker-sb-spectrum').css('background-color', "hsl(" + hsl[0] + ", 100%, 50%)");
+ self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', "hsl(" + hsl[0] + ", " + hsl[1] * 100 + "%, " + hsl[2] * 100 + "%)").transform("translate(" + specterWidth * hsb[1] + "px, " + specterHeight * (1 - hsb[2]) + "px)");
+ },
+ destroy: function destroy(self) {
+ if (self.destroySpectrumEvents) self.destroySpectrumEvents();
+ delete self.destroySpectrumEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/color-picker/modules/wheel.js b/www/assets/framework7/cjs/components/color-picker/modules/wheel.js
new file mode 100644
index 000000000..00cbb3a12
--- /dev/null
+++ b/www/assets/framework7/cjs/components/color-picker/modules/wheel.js
@@ -0,0 +1,198 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../../shared/dom7"));
+
+var _getSupport = require("../../../shared/get-support");
+
+var _$jsx = _interopRequireDefault(require("../../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/** @jsx $jsx */
+function svgWheelCircles() {
+ var total = 256;
+ var circles = '';
+
+ for (var i = total; i > 0; i -= 1) {
+ var angle = i * Math.PI / (total / 2);
+ var hue = 360 / total * i;
+ circles += "";
+ }
+
+ return circles;
+}
+
+var _default = {
+ render: function render() {
+ return (0, _$jsx.default)("div", {
+ class: "color-picker-module color-picker-module-wheel"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-wheel"
+ }, (0, _$jsx.default)("svg", {
+ viewBox: "0 0 300 300",
+ width: "300",
+ height: "300"
+ }, svgWheelCircles()), (0, _$jsx.default)("div", {
+ class: "color-picker-wheel-handle"
+ }), (0, _$jsx.default)("div", {
+ class: "color-picker-sb-spectrum",
+ style: "background-color: hsl(0, 100%, 50%)"
+ }, (0, _$jsx.default)("div", {
+ class: "color-picker-sb-spectrum-handle"
+ }))));
+ },
+ init: function init(self) {
+ var app = self.app;
+ var isTouched;
+ var isMoved;
+ var touchStartX;
+ var touchStartY;
+ var touchCurrentX;
+ var touchCurrentY;
+ var wheelRect;
+ var wheelIsTouched;
+ var wheelHandleIsTouched;
+ var specterRect;
+ var specterIsTouched;
+ var specterHandleIsTouched;
+ var $el = self.$el;
+
+ function setHueFromWheelCoords(x, y) {
+ var wheelCenterX = wheelRect.left + wheelRect.width / 2;
+ var wheelCenterY = wheelRect.top + wheelRect.height / 2;
+ var angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);
+ var angleDeg = angleRad * 180 / Math.PI + 90;
+ if (angleDeg < 0) angleDeg += 360;
+ angleDeg = 360 - angleDeg;
+ self.setValue({
+ hue: angleDeg
+ });
+ }
+
+ function setSBFromSpecterCoords(x, y) {
+ var s = (x - specterRect.left) / specterRect.width;
+ var b = (y - specterRect.top) / specterRect.height;
+ s = Math.max(0, Math.min(1, s));
+ b = 1 - Math.max(0, Math.min(1, b));
+ self.setValue({
+ hsb: [self.value.hue, s, b]
+ });
+ }
+
+ function handleTouchStart(e) {
+ if (isMoved || isTouched) return;
+ touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentX = touchStartX;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchCurrentY = touchStartY;
+ var $targetEl = (0, _dom.default)(e.target);
+ wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;
+ wheelIsTouched = $targetEl.closest('circle').length > 0;
+ specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;
+
+ if (!specterHandleIsTouched) {
+ specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;
+ }
+
+ if (wheelIsTouched) {
+ wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();
+ setHueFromWheelCoords(touchStartX, touchStartY);
+ }
+
+ if (specterIsTouched) {
+ specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
+ setSBFromSpecterCoords(touchStartX, touchStartY);
+ }
+
+ if (specterHandleIsTouched || specterIsTouched) {
+ $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');
+ }
+ }
+
+ function handleTouchMove(e) {
+ if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;
+ touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ e.preventDefault();
+
+ if (!isMoved) {
+ // First move
+ isMoved = true;
+
+ if (wheelHandleIsTouched) {
+ wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();
+ }
+
+ if (specterHandleIsTouched) {
+ specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
+ }
+ }
+
+ if (wheelIsTouched || wheelHandleIsTouched) {
+ setHueFromWheelCoords(touchCurrentX, touchCurrentY);
+ }
+
+ if (specterIsTouched || specterHandleIsTouched) {
+ setSBFromSpecterCoords(touchCurrentX, touchCurrentY);
+ }
+ }
+
+ function handleTouchEnd() {
+ isMoved = false;
+
+ if (specterIsTouched || specterHandleIsTouched) {
+ $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');
+ }
+
+ wheelIsTouched = false;
+ wheelHandleIsTouched = false;
+ specterIsTouched = false;
+ specterHandleIsTouched = false;
+ }
+
+ function handleResize() {
+ self.modules.wheel.update(self);
+ }
+
+ var passiveListener = app.touchEvents.start === 'touchstart' && (0, _getSupport.getSupport)().passiveListener ? {
+ passive: true,
+ capture: false
+ } : false;
+ self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('resize', handleResize);
+
+ self.destroyWheelEvents = function destroyWheelEvents() {
+ self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('resize', handleResize);
+ };
+ },
+ update: function update(self) {
+ var value = self.value;
+ var hsl = value.hsl,
+ hsb = value.hsb;
+ var specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;
+ var specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;
+ var wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;
+ var wheelHalfSize = wheelSize / 2;
+ var angleRad = value.hue * Math.PI / 180;
+ var handleSize = wheelSize / 6;
+ var handleHalfSize = handleSize / 2;
+ var tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;
+ var tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;
+ self.$el.find('.color-picker-wheel-handle').css('background-color', "hsl(" + hsl[0] + ", 100%, 50%)").transform("translate(" + tX + "px, " + tY + "px)");
+ self.$el.find('.color-picker-sb-spectrum').css('background-color', "hsl(" + hsl[0] + ", 100%, 50%)");
+ self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', "hsl(" + hsl[0] + ", " + hsl[1] * 100 + "%, " + hsl[2] * 100 + "%)").transform("translate(" + specterWidth * hsb[1] + "px, " + specterHeight * (1 - hsb[2]) + "px)");
+ },
+ destroy: function destroy(self) {
+ if (self.destroyWheelEvents) self.destroyWheelEvents();
+ delete self.destroyWheelEvents;
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/contacts-list/contacts-list.js b/www/assets/framework7/cjs/components/contacts-list/contacts-list.js
new file mode 100644
index 000000000..bcb0fa509
--- /dev/null
+++ b/www/assets/framework7/cjs/components/contacts-list/contacts-list.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'contactsList'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/data-table/data-table-class.js b/www/assets/framework7/cjs/components/data-table/data-table-class.js
new file mode 100644
index 000000000..3d9ad8b92
--- /dev/null
+++ b/www/assets/framework7/cjs/components/data-table/data-table-class.js
@@ -0,0 +1,188 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var DataTable = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(DataTable, _Framework7Class);
+
+ function DataTable(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var table = _assertThisInitialized(_this);
+
+ var defaults = {}; // Extend defaults with modules params
+
+ table.useModulesParams(defaults);
+ table.params = (0, _utils.extend)(defaults, params); // El
+
+ var $el = (0, _dom.default)(table.params.el);
+ if ($el.length === 0) return undefined || _assertThisInitialized(_this);
+ table.$el = $el;
+ table.el = $el[0];
+
+ if (table.$el[0].f7DataTable) {
+ var instance = table.$el[0].f7DataTable;
+ table.destroy();
+ return instance || _assertThisInitialized(_this);
+ }
+
+ table.$el[0].f7DataTable = table;
+ (0, _utils.extend)(table, {
+ collapsible: $el.hasClass('data-table-collapsible'),
+ // Headers
+ $headerEl: $el.find('.data-table-header'),
+ $headerSelectedEl: $el.find('.data-table-header-selected')
+ }); // Events
+
+ function handleChange(e) {
+ if (e.detail && e.detail.sentByF7DataTable) {
+ // Scripted event, don't do anything
+ return;
+ }
+
+ var $inputEl = (0, _dom.default)(this);
+ var checked = $inputEl[0].checked;
+ var columnIndex = $inputEl.parents('td,th').index();
+
+ if ($inputEl.parents('thead').length > 0) {
+ if (columnIndex === 0) {
+ $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');
+ }
+
+ $el.find("tbody tr td:nth-child(" + (columnIndex + 1) + ") input").prop('checked', checked).trigger('change', {
+ sentByF7DataTable: true
+ });
+ $inputEl.prop('indeterminate', false);
+ } else {
+ if (columnIndex === 0) {
+ $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');
+ }
+
+ var checkedRows = $el.find("tbody .checkbox-cell:nth-child(" + (columnIndex + 1) + ") input[type=\"checkbox\"]:checked").length;
+ var totalRows = $el.find('tbody tr').length;
+ var $headCheckboxEl = $el.find("thead .checkbox-cell:nth-child(" + (columnIndex + 1) + ") input[type=\"checkbox\"]");
+
+ if (!checked) {
+ $headCheckboxEl.prop('checked', false);
+ } else if (checkedRows === totalRows) {
+ $headCheckboxEl.prop('checked', true).trigger('change', {
+ sentByF7DataTable: true
+ });
+ }
+
+ $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);
+ }
+
+ table.checkSelectedHeader();
+ }
+
+ function handleSortableClick() {
+ var $cellEl = (0, _dom.default)(this);
+ var isActive = $cellEl.hasClass('sortable-cell-active');
+ var currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';
+ var newSort;
+
+ if (isActive) {
+ newSort = currentSort === 'desc' ? 'asc' : 'desc';
+ $cellEl.removeClass('sortable-desc sortable-asc').addClass("sortable-" + newSort);
+ } else {
+ $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');
+ $cellEl.addClass('sortable-cell-active');
+ newSort = currentSort;
+ }
+
+ $cellEl.trigger('datatable:sort', newSort);
+ table.emit('local::sort dataTableSort', table, newSort);
+ }
+
+ table.attachEvents = function attachEvents() {
+ table.$el.on('change', '.checkbox-cell input[type="checkbox"]', handleChange);
+ table.$el.find('thead .sortable-cell').on('click', handleSortableClick);
+ };
+
+ table.detachEvents = function detachEvents() {
+ table.$el.off('change', '.checkbox-cell input[type="checkbox"]', handleChange);
+ table.$el.find('thead .sortable-cell').off('click', handleSortableClick);
+ }; // Install Modules
+
+
+ table.useModules(); // Init
+
+ table.init();
+ return table || _assertThisInitialized(_this);
+ }
+
+ var _proto = DataTable.prototype;
+
+ _proto.setCollapsibleLabels = function setCollapsibleLabels() {
+ var table = this;
+ if (!table.collapsible) return;
+ table.$el.find('tbody td:not(.checkbox-cell)').each(function (el) {
+ var $el = (0, _dom.default)(el);
+ var elIndex = $el.index();
+ var collpsibleTitle = $el.attr('data-collapsible-title');
+
+ if (!collpsibleTitle && collpsibleTitle !== '') {
+ $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());
+ }
+ });
+ };
+
+ _proto.checkSelectedHeader = function checkSelectedHeader() {
+ var table = this;
+
+ if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {
+ var checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;
+ table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');
+ table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);
+ }
+ };
+
+ _proto.init = function init() {
+ var table = this;
+ table.attachEvents();
+ table.setCollapsibleLabels();
+ table.checkSelectedHeader();
+ };
+
+ _proto.destroy = function destroy() {
+ var table = this;
+ table.$el.trigger('datatable:beforedestroy');
+ table.emit('local::beforeDestroy dataTableBeforeDestroy', table);
+ table.attachEvents();
+
+ if (table.$el[0]) {
+ table.$el[0].f7DataTable = null;
+ delete table.$el[0].f7DataTable;
+ }
+
+ (0, _utils.deleteProps)(table);
+ table = null;
+ };
+
+ return DataTable;
+}(_class.default);
+
+var _default = DataTable;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/data-table/data-table.js b/www/assets/framework7/cjs/components/data-table/data-table.js
new file mode 100644
index 000000000..f8ec93c48
--- /dev/null
+++ b/www/assets/framework7/cjs/components/data-table/data-table.js
@@ -0,0 +1,75 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _dataTableClass = _interopRequireDefault(require("./data-table-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'dataTable',
+ static: {
+ DataTable: _dataTableClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.dataTable = (0, _constructorMethods.default)({
+ defaultSelector: '.data-table',
+ constructor: _dataTableClass.default,
+ app: app,
+ domProp: 'f7DataTable'
+ });
+ },
+ on: {
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.data-table-init').each(function (tableEl) {
+ app.dataTable.destroy(tableEl);
+ });
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.data-table-init').each(function (tableEl) {
+ app.dataTable.create({
+ el: tableEl
+ });
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.data-table-init').each(function (tableEl) {
+ app.dataTable.destroy(tableEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.data-table-init').each(function (tableEl) {
+ app.dataTable.create({
+ el: tableEl
+ });
+ });
+ }
+ },
+ vnode: {
+ 'data-table-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var tableEl = vnode.elm;
+ app.dataTable.create({
+ el: tableEl
+ });
+ },
+ destroy: function destroy(vnode) {
+ var app = this;
+ var tableEl = vnode.elm;
+ app.dataTable.destroy(tableEl);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/dialog/dialog-class.js b/www/assets/framework7/cjs/components/dialog/dialog-class.js
new file mode 100644
index 000000000..9128dae28
--- /dev/null
+++ b/www/assets/framework7/cjs/components/dialog/dialog-class.js
@@ -0,0 +1,250 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Dialog = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Dialog, _Modal);
+
+ function Dialog(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ title: app.params.dialog.title,
+ text: undefined,
+ content: '',
+ buttons: [],
+ verticalButtons: false,
+ onClick: undefined,
+ cssClass: undefined,
+ destroyOnClose: false,
+ on: {}
+ }, params);
+
+ if (typeof extendedParams.closeByBackdropClick === 'undefined') {
+ extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;
+ }
+
+ if (typeof extendedParams.backdrop === 'undefined') {
+ extendedParams.backdrop = app.params.dialog.backdrop;
+ } // Extends with open/close Modal methods;
+
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var dialog = _assertThisInitialized(_this);
+
+ var device = (0, _getDevice.getDevice)();
+ var document = (0, _ssrWindow.getDocument)();
+ var title = extendedParams.title,
+ text = extendedParams.text,
+ content = extendedParams.content,
+ buttons = extendedParams.buttons,
+ verticalButtons = extendedParams.verticalButtons,
+ cssClass = extendedParams.cssClass,
+ backdrop = extendedParams.backdrop;
+ dialog.params = extendedParams; // Find Element
+
+ var $el;
+
+ if (!dialog.params.el) {
+ var dialogClasses = ['dialog'];
+ if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');
+ if (buttons.length > 0) dialogClasses.push("dialog-buttons-" + buttons.length);
+ if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');
+ if (cssClass) dialogClasses.push(cssClass);
+ var buttonsHTML = '';
+
+ if (buttons.length > 0) {
+ buttonsHTML = (0, _$jsx.default)("div", {
+ class: "dialog-buttons"
+ }, buttons.map(function (button) {
+ return (0, _$jsx.default)("span", {
+ class: "dialog-button" + (button.bold ? ' dialog-button-bold' : '') + (button.color ? " color-" + button.color : '') + (button.cssClass ? " " + button.cssClass : '')
+ }, button.text);
+ }));
+ }
+
+ var dialogHtml = (0, _$jsx.default)("div", {
+ class: dialogClasses.join(' ')
+ }, (0, _$jsx.default)("div", {
+ class: "dialog-inner"
+ }, title && (0, _$jsx.default)("div", {
+ class: "dialog-title"
+ }, title), text && (0, _$jsx.default)("div", {
+ class: "dialog-text"
+ }, text), content), buttonsHTML);
+ $el = (0, _dom.default)(dialogHtml);
+ } else {
+ $el = (0, _dom.default)(dialog.params.el);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return dialog.destroy() || _assertThisInitialized(_this);
+ }
+
+ var $backdropEl;
+
+ if (backdrop) {
+ $backdropEl = app.$el.children('.dialog-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+ app.$el.append($backdropEl);
+ }
+ } // Assign events
+
+
+ function buttonOnClick(e) {
+ var buttonEl = this;
+ var index = (0, _dom.default)(buttonEl).index();
+ var button = buttons[index];
+ if (button.onClick) button.onClick(dialog, e);
+ if (dialog.params.onClick) dialog.params.onClick(dialog, index);
+ if (button.close !== false) dialog.close();
+ }
+
+ var addKeyboardHander;
+
+ function onKeyDown(e) {
+ var keyCode = e.keyCode;
+ buttons.forEach(function (button, index) {
+ if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {
+ if (document.activeElement) document.activeElement.blur();
+ if (button.onClick) button.onClick(dialog, e);
+ if (dialog.params.onClick) dialog.params.onClick(dialog, index);
+ if (button.close !== false) dialog.close();
+ }
+ });
+ }
+
+ if (buttons && buttons.length > 0) {
+ dialog.on('open', function () {
+ $el.find('.dialog-button').each(function (buttonEl, index) {
+ var button = buttons[index];
+ if (button.keyCodes) addKeyboardHander = true;
+ (0, _dom.default)(buttonEl).on('click', buttonOnClick);
+ });
+
+ if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {
+ (0, _dom.default)(document).on('keydown', onKeyDown);
+ }
+ });
+ dialog.on('close', function () {
+ $el.find('.dialog-button').each(function (buttonEl) {
+ (0, _dom.default)(buttonEl).off('click', buttonOnClick);
+ });
+
+ if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {
+ (0, _dom.default)(document).off('keydown', onKeyDown);
+ }
+
+ addKeyboardHander = false;
+ });
+ }
+
+ (0, _utils.extend)(dialog, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ type: 'dialog',
+ setProgress: function setProgress(progress, duration) {
+ app.progressbar.set($el.find('.progressbar'), progress, duration);
+ return dialog;
+ },
+ setText: function setText(newText) {
+ var $textEl = $el.find('.dialog-text');
+
+ if ($textEl.length === 0) {
+ $textEl = (0, _dom.default)('');
+
+ if (typeof title !== 'undefined') {
+ $textEl.insertAfter($el.find('.dialog-title'));
+ } else {
+ $el.find('.dialog-inner').prepend($textEl);
+ }
+ }
+
+ $textEl.html(newText);
+ dialog.params.text = newText;
+ return dialog;
+ },
+ setTitle: function setTitle(newTitle) {
+ var $titleEl = $el.find('.dialog-title');
+
+ if ($titleEl.length === 0) {
+ $titleEl = (0, _dom.default)('');
+ $el.find('.dialog-inner').prepend($titleEl);
+ }
+
+ $titleEl.html(newTitle);
+ dialog.params.title = newTitle;
+ return dialog;
+ }
+ });
+
+ function handleClick(e) {
+ var target = e.target;
+ var $target = (0, _dom.default)(target);
+
+ if ($target.closest(dialog.el).length === 0) {
+ if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {
+ dialog.close();
+ }
+ }
+ }
+
+ dialog.on('opened', function () {
+ if (dialog.params.closeByBackdropClick) {
+ app.on('click', handleClick);
+ }
+ });
+ dialog.on('close', function () {
+ if (dialog.params.closeByBackdropClick) {
+ app.off('click', handleClick);
+ }
+ });
+ $el[0].f7Modal = dialog;
+
+ if (dialog.params.destroyOnClose) {
+ dialog.once('closed', function () {
+ setTimeout(function () {
+ dialog.destroy();
+ }, 0);
+ });
+ }
+
+ return dialog || _assertThisInitialized(_this);
+ }
+
+ return Dialog;
+}(_modalClass.default);
+
+var _default = Dialog;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/dialog/dialog.js b/www/assets/framework7/cjs/components/dialog/dialog.js
new file mode 100644
index 000000000..3605b5e74
--- /dev/null
+++ b/www/assets/framework7/cjs/components/dialog/dialog.js
@@ -0,0 +1,297 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _dialogClass = _interopRequireDefault(require("./dialog-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+var _default = {
+ name: 'dialog',
+ params: {
+ dialog: {
+ title: undefined,
+ buttonOk: 'OK',
+ buttonCancel: 'Cancel',
+ usernamePlaceholder: 'Username',
+ passwordPlaceholder: 'Password',
+ preloaderTitle: 'Loading... ',
+ progressTitle: 'Loading... ',
+ backdrop: true,
+ closeByBackdropClick: false,
+ destroyPredefinedDialogs: true,
+ keyboardActions: true,
+ autoFocus: true
+ }
+ },
+ static: {
+ Dialog: _dialogClass.default
+ },
+ create: function create() {
+ var app = this;
+
+ function defaultDialogTitle() {
+ return app.params.dialog.title || app.name;
+ }
+
+ var destroyOnClose = app.params.dialog.destroyPredefinedDialogs;
+ var keyboardActions = app.params.dialog.keyboardActions;
+ var autoFocus = app.params.dialog.autoFocus;
+ var autoFocusHandler = autoFocus ? {
+ on: {
+ opened: function opened(dialog) {
+ dialog.$el.find('input').eq(0).focus();
+ }
+ }
+ } : {};
+ app.dialog = (0, _utils.extend)((0, _modalMethods.default)({
+ app: app,
+ constructor: _dialogClass.default,
+ defaultSelector: '.dialog.modal-in'
+ }), {
+ // Shortcuts
+ alert: function alert() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var text = args[0],
+ title = args[1],
+ callbackOk = args[2];
+
+ if (args.length === 2 && typeof args[1] === 'function') {
+ text = args[0];
+ callbackOk = args[1];
+ title = args[2];
+ }
+
+ return new _dialogClass.default(app, {
+ title: typeof title === 'undefined' ? defaultDialogTitle() : title,
+ text: text,
+ buttons: [{
+ text: app.params.dialog.buttonOk,
+ bold: true,
+ onClick: callbackOk,
+ keyCodes: keyboardActions ? [13, 27] : null
+ }],
+ destroyOnClose: destroyOnClose
+ }).open();
+ },
+ prompt: function prompt() {
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ var text = args[0],
+ title = args[1],
+ callbackOk = args[2],
+ callbackCancel = args[3],
+ defaultValue = args[4];
+
+ if (typeof args[1] === 'function') {
+ text = args[0];
+ callbackOk = args[1];
+ callbackCancel = args[2];
+ defaultValue = args[3];
+ title = args[4];
+ }
+
+ defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;
+ return new _dialogClass.default(app, _extends({
+ title: typeof title === 'undefined' ? defaultDialogTitle() : title,
+ text: text,
+ content: "",
+ buttons: [{
+ text: app.params.dialog.buttonCancel,
+ keyCodes: keyboardActions ? [27] : null,
+ color: app.theme === 'aurora' ? 'gray' : null
+ }, {
+ text: app.params.dialog.buttonOk,
+ bold: true,
+ keyCodes: keyboardActions ? [13] : null
+ }],
+ onClick: function onClick(dialog, index) {
+ var inputValue = dialog.$el.find('.dialog-input').val();
+ if (index === 0 && callbackCancel) callbackCancel(inputValue);
+ if (index === 1 && callbackOk) callbackOk(inputValue);
+ },
+ destroyOnClose: destroyOnClose
+ }, autoFocusHandler)).open();
+ },
+ confirm: function confirm() {
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+
+ var text = args[0],
+ title = args[1],
+ callbackOk = args[2],
+ callbackCancel = args[3];
+
+ if (typeof args[1] === 'function') {
+ text = args[0];
+ callbackOk = args[1];
+ callbackCancel = args[2];
+ title = args[3];
+ }
+
+ return new _dialogClass.default(app, {
+ title: typeof title === 'undefined' ? defaultDialogTitle() : title,
+ text: text,
+ buttons: [{
+ text: app.params.dialog.buttonCancel,
+ onClick: callbackCancel,
+ keyCodes: keyboardActions ? [27] : null,
+ color: app.theme === 'aurora' ? 'gray' : null
+ }, {
+ text: app.params.dialog.buttonOk,
+ bold: true,
+ onClick: callbackOk,
+ keyCodes: keyboardActions ? [13] : null
+ }],
+ destroyOnClose: destroyOnClose
+ }).open();
+ },
+ login: function login() {
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ var text = args[0],
+ title = args[1],
+ callbackOk = args[2],
+ callbackCancel = args[3];
+
+ if (typeof args[1] === 'function') {
+ text = args[0];
+ callbackOk = args[1];
+ callbackCancel = args[2];
+ title = args[3];
+ }
+
+ return new _dialogClass.default(app, _extends({
+ title: typeof title === 'undefined' ? defaultDialogTitle() : title,
+ text: text,
+ // prettier-ignore
+ content: "\n \n \n
\n \n \n
",
+ buttons: [{
+ text: app.params.dialog.buttonCancel,
+ keyCodes: keyboardActions ? [27] : null,
+ color: app.theme === 'aurora' ? 'gray' : null
+ }, {
+ text: app.params.dialog.buttonOk,
+ bold: true,
+ keyCodes: keyboardActions ? [13] : null
+ }],
+ onClick: function onClick(dialog, index) {
+ var username = dialog.$el.find('[name="dialog-username"]').val();
+ var password = dialog.$el.find('[name="dialog-password"]').val();
+ if (index === 0 && callbackCancel) callbackCancel(username, password);
+ if (index === 1 && callbackOk) callbackOk(username, password);
+ },
+ destroyOnClose: destroyOnClose
+ }, autoFocusHandler)).open();
+ },
+ password: function password() {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+
+ var text = args[0],
+ title = args[1],
+ callbackOk = args[2],
+ callbackCancel = args[3];
+
+ if (typeof args[1] === 'function') {
+ text = args[0];
+ callbackOk = args[1];
+ callbackCancel = args[2];
+ title = args[3];
+ }
+
+ return new _dialogClass.default(app, _extends({
+ title: typeof title === 'undefined' ? defaultDialogTitle() : title,
+ text: text,
+ // prettier-ignore
+ content: "\n \n \n
",
+ buttons: [{
+ text: app.params.dialog.buttonCancel,
+ keyCodes: keyboardActions ? [27] : null,
+ color: app.theme === 'aurora' ? 'gray' : null
+ }, {
+ text: app.params.dialog.buttonOk,
+ bold: true,
+ keyCodes: keyboardActions ? [13] : null
+ }],
+ onClick: function onClick(dialog, index) {
+ var password = dialog.$el.find('[name="dialog-password"]').val();
+ if (index === 0 && callbackCancel) callbackCancel(password);
+ if (index === 1 && callbackOk) callbackOk(password);
+ },
+ destroyOnClose: destroyOnClose
+ }, autoFocusHandler)).open();
+ },
+ preloader: function preloader(title, color) {
+ var preloaders = {
+ iosPreloaderContent: _utils.iosPreloaderContent,
+ mdPreloaderContent: _utils.mdPreloaderContent,
+ auroraPreloaderContent: _utils.auroraPreloaderContent
+ };
+ var preloaderInner = preloaders[app.theme + "PreloaderContent"] || '';
+ return new _dialogClass.default(app, {
+ title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,
+ // prettier-ignore
+ content: "" + preloaderInner + "
",
+ cssClass: 'dialog-preloader',
+ destroyOnClose: destroyOnClose
+ }).open();
+ },
+ progress: function progress() {
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
+ args[_key6] = arguments[_key6];
+ }
+
+ var title = args[0],
+ progress = args[1],
+ color = args[2];
+
+ if (args.length === 2) {
+ if (typeof args[0] === 'number') {
+ progress = args[0];
+ color = args[1];
+ title = args[2];
+ } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {
+ title = args[0];
+ color = args[1];
+ progress = args[2];
+ }
+ } else if (args.length === 1) {
+ if (typeof args[0] === 'number') {
+ progress = args[0];
+ title = args[1];
+ color = args[2];
+ }
+ }
+
+ var infinite = typeof progress === 'undefined';
+ var dialog = new _dialogClass.default(app, {
+ title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,
+ cssClass: 'dialog-progress',
+ // prettier-ignore
+ content: "\n \n " + (!infinite ? '' : '') + "\n
\n ",
+ destroyOnClose: destroyOnClose
+ });
+ if (!infinite) dialog.setProgress(progress);
+ return dialog.open();
+ }
+ });
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/elevation/elevation.js b/www/assets/framework7/cjs/components/elevation/elevation.js
new file mode 100644
index 000000000..20953195d
--- /dev/null
+++ b/www/assets/framework7/cjs/components/elevation/elevation.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'elevation'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/fab/fab.js b/www/assets/framework7/cjs/components/fab/fab.js
new file mode 100644
index 000000000..158dbb456
--- /dev/null
+++ b/www/assets/framework7/cjs/components/fab/fab.js
@@ -0,0 +1,195 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+var Fab = {
+ morphOpen: function morphOpen(fabEl, targetEl) {
+ var app = this;
+ var $fabEl = (0, _dom.default)(fabEl);
+ var $targetEl = (0, _dom.default)(targetEl);
+ if ($targetEl.length === 0) return;
+ $targetEl.transition(0).addClass('fab-morph-target-visible');
+ var target = {
+ width: $targetEl[0].offsetWidth,
+ height: $targetEl[0].offsetHeight,
+ offset: $targetEl.offset(),
+ borderRadius: $targetEl.css('border-radius'),
+ zIndex: $targetEl.css('z-index')
+ };
+ var fab = {
+ width: $fabEl[0].offsetWidth,
+ height: $fabEl[0].offsetHeight,
+ offset: $fabEl.offset(),
+ translateX: (0, _utils.getTranslate)($fabEl[0], 'x'),
+ translateY: (0, _utils.getTranslate)($fabEl[0], 'y')
+ };
+ $fabEl[0].f7FabMorphData = {
+ $targetEl: $targetEl,
+ target: target,
+ fab: fab
+ };
+ var diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
+ var diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
+ var scaleX = target.width / fab.width;
+ var scaleY = target.height / fab.height;
+ var borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));
+ if (borderRadius > 0) borderRadius += 2;
+
+ $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {
+ $fabEl.transition(0).transform('');
+ $targetEl.transition(0);
+ target.width = $targetEl[0].offsetWidth;
+ target.height = $targetEl[0].offsetHeight;
+ target.offset = $targetEl.offset();
+ fab.offset = $fabEl.offset();
+ var diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
+ var diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
+ var scaleXNew = target.width / fab.width;
+ var scaleYNew = target.height / fab.height;
+ $fabEl.transform("translate3d(" + -diffXNew + "px, " + -diffYNew + "px, 0) scale(" + scaleXNew + ", " + scaleYNew + ")");
+ };
+
+ $targetEl.css('opacity', 0).transform("scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
+ $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform("translate3d(" + -diffX + "px, " + -diffY + "px, 0)");
+ $fabEl.transitionEnd(function () {
+ $targetEl.transition('');
+ (0, _utils.nextFrame)(function () {
+ $targetEl.css('opacity', 1).transform('scale(1,1)');
+ $fabEl.transform("translate3d(" + -diffX + "px, " + -diffY + "px, 0) scale(" + scaleX + ", " + scaleY + ")").css('border-radius', borderRadius + "px").css('box-shadow', 'none').css('opacity', '0');
+ });
+ app.on('resize', $fabEl[0].f7FabMorphResizeHandler);
+
+ if ($targetEl.parents('.page-content').length > 0) {
+ $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);
+ }
+ });
+ },
+ morphClose: function morphClose(fabEl) {
+ var app = this;
+ var $fabEl = (0, _dom.default)(fabEl);
+ var morphData = $fabEl[0].f7FabMorphData;
+ if (!morphData) return;
+ var $targetEl = morphData.$targetEl,
+ target = morphData.target,
+ fab = morphData.fab;
+ if ($targetEl.length === 0) return;
+ var diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
+ var diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
+ var scaleX = target.width / fab.width;
+ var scaleY = target.height / fab.height;
+ app.off('resize', $fabEl[0].f7FabMorphResizeHandler);
+
+ if ($targetEl.parents('.page-content').length > 0) {
+ $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);
+ }
+
+ $targetEl.css('opacity', 0).transform("scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
+ $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform("translate3d(" + -diffX + "px, " + -diffY + "px, 0)");
+ $fabEl.transitionEnd(function () {
+ $fabEl.css('z-index', '').removeClass('fab-opened').transform('');
+ (0, _utils.nextFrame)(function () {
+ $fabEl.transitionEnd(function () {
+ $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');
+ });
+ });
+ });
+ },
+ open: function open(fabEl, targetEl) {
+ var app = this;
+ var $fabEl = (0, _dom.default)(fabEl).eq(0);
+ var $buttonsEl = $fabEl.find('.fab-buttons');
+ if (!$fabEl.length) return;
+ if ($fabEl.hasClass('fab-opened')) return;
+ if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;
+
+ if (app.fab.openedEl) {
+ if (app.fab.openedEl === $fabEl[0]) return;
+ app.fab.close(app.fab.openedEl);
+ }
+
+ app.fab.openedEl = $fabEl[0];
+
+ if ($fabEl.hasClass('fab-morph')) {
+ app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));
+ } else {
+ $fabEl.addClass('fab-opened');
+ }
+
+ $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');
+ $fabEl.trigger('fab:open');
+ },
+ close: function close(fabEl) {
+ if (fabEl === void 0) {
+ fabEl = '.fab-opened';
+ }
+
+ var app = this;
+ var $fabEl = (0, _dom.default)(fabEl).eq(0);
+ var $buttonsEl = $fabEl.find('.fab-buttons');
+ if (!$fabEl.length) return;
+ if (!$fabEl.hasClass('fab-opened')) return;
+ if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;
+ app.fab.openedEl = null;
+
+ if ($fabEl.hasClass('fab-morph')) {
+ app.fab.morphClose($fabEl);
+ } else {
+ $fabEl.removeClass('fab-opened');
+ }
+
+ $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');
+ $fabEl.trigger('fab:close');
+ },
+ toggle: function toggle(fabEl) {
+ var app = this;
+ var $fabEl = (0, _dom.default)(fabEl);
+ if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);
+ }
+};
+var _default = {
+ name: 'fab',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ fab: _extends({
+ openedEl: null
+ }, Fab)
+ });
+ },
+ clicks: {
+ '.fab > a': function open($clickedEl) {
+ var app = this;
+ app.fab.toggle($clickedEl.parents('.fab'));
+ },
+ '.fab-open': function open($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.fab.open(data.fab);
+ },
+ '.fab-close': function close($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.fab.close(data.fab);
+ },
+ '.fab-backdrop': function close() {
+ var app = this;
+ app.fab.close();
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/form/form.js b/www/assets/framework7/cjs/components/form/form.js
new file mode 100644
index 000000000..c12b49fa7
--- /dev/null
+++ b/www/assets/framework7/cjs/components/form/form.js
@@ -0,0 +1,341 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// Form Data
+var FormData = {
+ store: function store(form, data) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var formId = form;
+ var $formEl = (0, _dom.default)(form);
+
+ if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
+ formId = $formEl.attr('id');
+ } // Store form data in app.formsData
+
+
+ app.form.data["form-" + formId] = data; // Store form data in local storage also
+
+ window.localStorage["f7form-" + formId] = JSON.stringify(data);
+ },
+ get: function get(form) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var formId = form;
+ var $formEl = (0, _dom.default)(form);
+
+ if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
+ formId = $formEl.attr('id');
+ }
+
+ if (window.localStorage["f7form-" + formId]) {
+ return JSON.parse(window.localStorage["f7form-" + formId]);
+ }
+
+ if (app.form.data["form-" + formId]) {
+ return app.form.data["form-" + formId];
+ }
+
+ return undefined;
+ },
+ remove: function remove(form) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var formId = form;
+ var $formEl = (0, _dom.default)(form);
+
+ if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
+ formId = $formEl.attr('id');
+ } // Delete form data from app.formsData
+
+
+ if (app.form.data["form-" + formId]) {
+ app.form.data["form-" + formId] = '';
+ delete app.form.data["form-" + formId];
+ } // Delete form data from local storage also
+
+
+ if (window.localStorage["f7form-" + formId]) {
+ window.localStorage["f7form-" + formId] = '';
+ window.localStorage.removeItem("f7form-" + formId);
+ }
+ }
+}; // Form Storage
+
+var FormStorage = {
+ init: function init(formEl) {
+ var app = this;
+ var $formEl = (0, _dom.default)(formEl);
+ var formId = $formEl.attr('id');
+ if (!formId) return;
+ var initialData = app.form.getFormData(formId);
+
+ if (initialData) {
+ app.form.fillFromData($formEl, initialData);
+ }
+
+ function store() {
+ var data = app.form.convertToData($formEl);
+ if (!data) return;
+ app.form.storeFormData(formId, data);
+ $formEl.trigger('form:storedata', data);
+ app.emit('formStoreData', $formEl[0], data);
+ }
+
+ $formEl.on('change submit', store);
+ },
+ destroy: function destroy(formEl) {
+ var $formEl = (0, _dom.default)(formEl);
+ $formEl.off('change submit');
+ }
+}; // Form To/From Data
+
+function formToData(formEl) {
+ var app = this;
+ var $formEl = (0, _dom.default)(formEl).eq(0);
+ if ($formEl.length === 0) return undefined; // Form data
+
+ var data = {}; // Skip input types
+
+ var skipTypes = ['submit', 'image', 'button', 'file'];
+ var skipNames = [];
+ $formEl.find('input, select, textarea').each(function (inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+
+ if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {
+ return;
+ }
+
+ var name = $inputEl.attr('name');
+ var type = $inputEl.attr('type');
+ var tag = inputEl.nodeName.toLowerCase();
+ if (skipTypes.indexOf(type) >= 0) return;
+ if (skipNames.indexOf(name) >= 0 || !name) return;
+
+ if (tag === 'select' && $inputEl.prop('multiple')) {
+ skipNames.push(name);
+ data[name] = [];
+ $formEl.find("select[name=\"" + name + "\"] option").each(function (el) {
+ if (el.selected) data[name].push(el.value);
+ });
+ } else {
+ switch (type) {
+ case 'checkbox':
+ skipNames.push(name);
+ data[name] = [];
+ $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
+ if (el.checked) data[name].push(el.value);
+ });
+ break;
+
+ case 'radio':
+ skipNames.push(name);
+ $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
+ if (el.checked) data[name] = el.value;
+ });
+ break;
+
+ default:
+ data[name] = $inputEl.val();
+ break;
+ }
+ }
+ });
+ $formEl.trigger('form:todata', data);
+ app.emit('formToData', $formEl[0], data);
+ return data;
+}
+
+function formFromData(formEl, formData) {
+ var app = this;
+ var $formEl = (0, _dom.default)(formEl).eq(0);
+ if (!$formEl.length) return;
+ var data = formData;
+ var formId = $formEl.attr('id');
+
+ if (!data && formId) {
+ data = app.form.getFormData(formId);
+ }
+
+ if (!data) return; // Skip input types
+
+ var skipTypes = ['submit', 'image', 'button', 'file'];
+ var skipNames = [];
+ $formEl.find('input, select, textarea').each(function (inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+
+ if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {
+ return;
+ }
+
+ var name = $inputEl.attr('name');
+ var type = $inputEl.attr('type');
+ var tag = inputEl.nodeName.toLowerCase();
+ if (typeof data[name] === 'undefined' || data[name] === null) return;
+ if (skipTypes.indexOf(type) >= 0) return;
+ if (skipNames.indexOf(name) >= 0 || !name) return;
+
+ if (tag === 'select' && $inputEl.prop('multiple')) {
+ skipNames.push(name);
+ $formEl.find("select[name=\"" + name + "\"] option").each(function (el) {
+ var selectEl = el;
+ if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;
+ });
+ } else {
+ switch (type) {
+ case 'checkbox':
+ skipNames.push(name);
+ $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
+ var checkboxEl = el;
+ if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;
+ });
+ break;
+
+ case 'radio':
+ skipNames.push(name);
+ $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
+ var radioEl = el;
+ if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;
+ });
+ break;
+
+ default:
+ $inputEl.val(data[name]);
+ break;
+ }
+ }
+
+ if (tag === 'select' || tag === 'input' || tag === 'textarea') {
+ $inputEl.trigger('change', 'fromdata');
+ }
+ });
+ $formEl.trigger('form:fromdata', data);
+ app.emit('formFromData', $formEl[0], data);
+}
+
+function initAjaxForm() {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+
+ function onSubmitChange(e, fromData) {
+ var $formEl = (0, _dom.default)(this);
+ if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;
+ if (e.type === 'submit') e.preventDefault();
+ if (e.type === 'change' && fromData === 'fromdata') return;
+ var method = ($formEl.attr('method') || 'GET').toUpperCase();
+ var contentType = $formEl.prop('enctype') || $formEl.attr('enctype');
+ var url = $formEl.attr('action');
+ if (!url) return;
+ var data;
+
+ if (method === 'POST') {
+ if (contentType === 'application/x-www-form-urlencoded') {
+ data = app.form.convertToData($formEl[0]);
+ } else {
+ data = new window.FormData($formEl[0]);
+ }
+ } else {
+ data = (0, _utils.serializeObject)(app.form.convertToData($formEl[0]));
+ }
+
+ app.request({
+ method: method,
+ url: url,
+ contentType: contentType,
+ data: data,
+ beforeSend: function beforeSend(xhr) {
+ $formEl.trigger('formajax:beforesend', {
+ data: data,
+ xhr: xhr
+ });
+ app.emit('formAjaxBeforeSend', $formEl[0], data, xhr);
+ },
+ error: function error(xhr) {
+ $formEl.trigger('formajax:error', {
+ data: data,
+ xhr: xhr
+ });
+ app.emit('formAjaxError', $formEl[0], data, xhr);
+ },
+ complete: function complete(xhr) {
+ $formEl.trigger('formajax:complete', {
+ data: data,
+ xhr: xhr
+ });
+ app.emit('formAjaxComplete', $formEl[0], data, xhr);
+ },
+ success: function success(response, status, xhr) {
+ $formEl.trigger('formajax:success', {
+ data: data,
+ xhr: xhr
+ });
+ app.emit('formAjaxSuccess', $formEl[0], data, xhr);
+ }
+ });
+ }
+
+ (0, _dom.default)(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);
+}
+
+var _default = {
+ name: 'form',
+ create: function create() {
+ var app = this;
+ (0, _utils.extend)(app, {
+ form: {
+ data: {},
+ storeFormData: FormData.store.bind(app),
+ getFormData: FormData.get.bind(app),
+ removeFormData: FormData.remove.bind(app),
+ convertToData: formToData.bind(app),
+ fillFromData: formFromData.bind(app),
+ storage: {
+ init: FormStorage.init.bind(app),
+ destroy: FormStorage.destroy.bind(app)
+ }
+ }
+ });
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ initAjaxForm.call(app);
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.form-store-data').each(function (formEl) {
+ app.form.storage.destroy(formEl);
+ });
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.form-store-data').each(function (formEl) {
+ app.form.storage.init(formEl);
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.form-store-data').each(function (formEl) {
+ app.form.storage.destroy(formEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.form-store-data').each(function (formEl) {
+ app.form.storage.init(formEl);
+ });
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/gauge/gauge-class.js b/www/assets/framework7/cjs/components/gauge/gauge-class.js
new file mode 100644
index 000000000..e902c1734
--- /dev/null
+++ b/www/assets/framework7/cjs/components/gauge/gauge-class.js
@@ -0,0 +1,332 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Gauge = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Gauge, _Framework7Class);
+
+ function Gauge(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var self = _assertThisInitialized(_this);
+
+ var defaults = (0, _utils.extend)({}, app.params.gauge); // Extend defaults with modules params
+
+ self.useModulesParams(defaults);
+ self.params = (0, _utils.extend)(defaults, params);
+ var el = self.params.el;
+ if (!el) return self || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return self || _assertThisInitialized(_this);
+ if ($el[0].f7Gauge) return $el[0].f7Gauge || _assertThisInitialized(_this);
+ (0, _utils.extend)(self, {
+ app: app,
+ $el: $el,
+ el: $el && $el[0]
+ });
+ $el[0].f7Gauge = self; // Install Modules
+
+ self.useModules();
+ self.init();
+ return self || _assertThisInitialized(_this);
+ }
+
+ var _proto = Gauge.prototype;
+
+ _proto.calcRadius = function calcRadius() {
+ var self = this;
+ var _self$params = self.params,
+ size = _self$params.size,
+ borderWidth = _self$params.borderWidth;
+ return size / 2 - borderWidth / 2;
+ };
+
+ _proto.calcBorderLength = function calcBorderLength() {
+ var self = this;
+ var radius = self.calcRadius();
+ return 2 * Math.PI * radius;
+ };
+
+ _proto.render = function render() {
+ var self = this;
+ if (self.params.render) return self.params.render.call(self, self);
+ var _self$params2 = self.params,
+ type = _self$params2.type,
+ value = _self$params2.value,
+ size = _self$params2.size,
+ bgColor = _self$params2.bgColor,
+ borderBgColor = _self$params2.borderBgColor,
+ borderColor = _self$params2.borderColor,
+ borderWidth = _self$params2.borderWidth,
+ valueText = _self$params2.valueText,
+ valueTextColor = _self$params2.valueTextColor,
+ valueFontSize = _self$params2.valueFontSize,
+ valueFontWeight = _self$params2.valueFontWeight,
+ labelText = _self$params2.labelText,
+ labelTextColor = _self$params2.labelTextColor,
+ labelFontSize = _self$params2.labelFontSize,
+ labelFontWeight = _self$params2.labelFontWeight;
+ var semiCircle = type === 'semicircle';
+ var radius = self.calcRadius();
+ var length = self.calcBorderLength();
+ var progress = Math.max(Math.min(value, 1), 0);
+ return (0, _$jsx.default)("svg", {
+ class: "gauge-svg",
+ width: size + "px",
+ height: (semiCircle ? size / 2 : size) + "px",
+ viewBox: "0 0 " + size + " " + (semiCircle ? size / 2 : size)
+ }, semiCircle && (0, _$jsx.default)("path", {
+ class: "gauge-back-semi",
+ d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
+ stroke: borderBgColor,
+ "stroke-width": borderWidth,
+ fill: bgColor || 'none'
+ }), semiCircle && (0, _$jsx.default)("path", {
+ class: "gauge-front-semi",
+ d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
+ stroke: borderColor,
+ "stroke-width": borderWidth,
+ "stroke-dasharray": length / 2,
+ "stroke-dashoffset": length / 2 * (1 + progress),
+ fill: borderBgColor ? 'none' : bgColor || 'none'
+ }), !semiCircle && borderBgColor && (0, _$jsx.default)("circle", {
+ class: "gauge-back-circle",
+ stroke: borderBgColor,
+ "stroke-width": borderWidth,
+ fill: bgColor || 'none',
+ cx: size / 2,
+ cy: size / 2,
+ r: radius
+ }), !semiCircle && (0, _$jsx.default)("circle", {
+ class: "gauge-front-circle",
+ transform: "rotate(-90 " + size / 2 + " " + size / 2 + ")",
+ stroke: borderColor,
+ "stroke-width": borderWidth,
+ "stroke-dasharray": length,
+ "stroke-dashoffset": length * (1 - progress),
+ fill: borderBgColor ? 'none' : bgColor || 'none',
+ cx: size / 2,
+ cy: size / 2,
+ r: radius
+ }), valueText && (0, _$jsx.default)("text", {
+ class: "gauge-value-text",
+ x: "50%",
+ y: semiCircle ? '100%' : '50%',
+ "font-weight": valueFontWeight,
+ "font-size": valueFontSize,
+ fill: valueTextColor,
+ dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,
+ "text-anchor": "middle",
+ "dominant-baseline": !semiCircle && 'middle'
+ }, valueText), labelText && (0, _$jsx.default)("text", {
+ class: "gauge-label-text",
+ x: "50%",
+ y: semiCircle ? '100%' : '50%',
+ "font-weight": labelFontWeight,
+ "font-size": labelFontSize,
+ fill: labelTextColor,
+ dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,
+ "text-anchor": "middle",
+ "dominant-baseline": !semiCircle && 'middle'
+ }, labelText));
+ };
+
+ _proto.update = function update(newParams) {
+ if (newParams === void 0) {
+ newParams = {};
+ }
+
+ var self = this;
+ var document = (0, _ssrWindow.getDocument)();
+ var params = self.params,
+ $svgEl = self.$svgEl;
+ Object.keys(newParams).forEach(function (param) {
+ if (typeof newParams[param] !== 'undefined') {
+ params[param] = newParams[param];
+ }
+ });
+ if ($svgEl.length === 0) return self;
+ var value = params.value,
+ size = params.size,
+ bgColor = params.bgColor,
+ borderBgColor = params.borderBgColor,
+ borderColor = params.borderColor,
+ borderWidth = params.borderWidth,
+ valueText = params.valueText,
+ valueTextColor = params.valueTextColor,
+ valueFontSize = params.valueFontSize,
+ valueFontWeight = params.valueFontWeight,
+ labelText = params.labelText,
+ labelTextColor = params.labelTextColor,
+ labelFontSize = params.labelFontSize,
+ labelFontWeight = params.labelFontWeight;
+ var length = self.calcBorderLength();
+ var progress = Math.max(Math.min(value, 1), 0);
+ var radius = self.calcRadius();
+ var semiCircle = params.type === 'semicircle';
+ var svgAttrs = {
+ width: size + "px",
+ height: (semiCircle ? size / 2 : size) + "px",
+ viewBox: "0 0 " + size + " " + (semiCircle ? size / 2 : size)
+ };
+ Object.keys(svgAttrs).forEach(function (attr) {
+ $svgEl.attr(attr, svgAttrs[attr]);
+ });
+
+ if (semiCircle) {
+ var backAttrs = {
+ d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
+ stroke: borderBgColor,
+ 'stroke-width': borderWidth,
+ fill: bgColor || 'none'
+ };
+ var frontAttrs = {
+ d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
+ stroke: borderColor,
+ 'stroke-width': borderWidth,
+ 'stroke-dasharray': length / 2,
+ 'stroke-dashoffset': length / 2 * (1 + progress),
+ fill: borderBgColor ? 'none' : bgColor || 'none'
+ };
+ Object.keys(backAttrs).forEach(function (attr) {
+ $svgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);
+ });
+ Object.keys(frontAttrs).forEach(function (attr) {
+ $svgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);
+ });
+ } else {
+ var _backAttrs = {
+ stroke: borderBgColor,
+ 'stroke-width': borderWidth,
+ fill: bgColor || 'none',
+ cx: size / 2,
+ cy: size / 2,
+ r: radius
+ };
+ var _frontAttrs = {
+ transform: "rotate(-90 " + size / 2 + " " + size / 2 + ")",
+ stroke: borderColor,
+ 'stroke-width': borderWidth,
+ 'stroke-dasharray': length,
+ 'stroke-dashoffset': length * (1 - progress),
+ fill: borderBgColor ? 'none' : bgColor || 'none',
+ cx: size / 2,
+ cy: size / 2,
+ r: radius
+ };
+ Object.keys(_backAttrs).forEach(function (attr) {
+ $svgEl.find('.gauge-back-circle').attr(attr, _backAttrs[attr]);
+ });
+ Object.keys(_frontAttrs).forEach(function (attr) {
+ $svgEl.find('.gauge-front-circle').attr(attr, _frontAttrs[attr]);
+ });
+ }
+
+ if (valueText) {
+ if (!$svgEl.find('.gauge-value-text').length) {
+ var textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+ textEl.classList.add('gauge-value-text');
+ $svgEl.append(textEl);
+ }
+
+ var textAttrs = {
+ x: '50%',
+ y: semiCircle ? '100%' : '50%',
+ 'font-weight': valueFontWeight,
+ 'font-size': valueFontSize,
+ fill: valueTextColor,
+ dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,
+ 'text-anchor': 'middle',
+ 'dominant-baseline': !semiCircle && 'middle'
+ };
+ Object.keys(textAttrs).forEach(function (attr) {
+ $svgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);
+ });
+ $svgEl.find('.gauge-value-text').text(valueText);
+ } else {
+ $svgEl.find('.gauge-value-text').remove();
+ }
+
+ if (labelText) {
+ if (!$svgEl.find('.gauge-label-text').length) {
+ var _textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');
+
+ _textEl.classList.add('gauge-label-text');
+
+ $svgEl.append(_textEl);
+ }
+
+ var labelAttrs = {
+ x: '50%',
+ y: semiCircle ? '100%' : '50%',
+ 'font-weight': labelFontWeight,
+ 'font-size': labelFontSize,
+ fill: labelTextColor,
+ dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,
+ 'text-anchor': 'middle',
+ 'dominant-baseline': !semiCircle && 'middle'
+ };
+ Object.keys(labelAttrs).forEach(function (attr) {
+ $svgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);
+ });
+ $svgEl.find('.gauge-label-text').text(labelText);
+ } else {
+ $svgEl.find('.gauge-label-text').remove();
+ }
+
+ return self;
+ };
+
+ _proto.init = function init() {
+ var self = this;
+ var $svgEl = (0, _dom.default)(self.render()).eq(0);
+ $svgEl.f7Gauge = self;
+ (0, _utils.extend)(self, {
+ $svgEl: $svgEl,
+ svgEl: $svgEl && $svgEl[0]
+ });
+ self.$el.append($svgEl);
+ return self;
+ };
+
+ _proto.destroy = function destroy() {
+ var self = this;
+ if (!self.$el || self.destroyed) return;
+ self.$el.trigger('gauge:beforedestroy');
+ self.emit('local::beforeDestroy gaugeBeforeDestroy', self);
+ self.$svgEl.remove();
+ delete self.$el[0].f7Gauge;
+ (0, _utils.deleteProps)(self);
+ self.destroyed = true;
+ };
+
+ return Gauge;
+}(_class.default);
+
+var _default = Gauge;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/gauge/gauge.js b/www/assets/framework7/cjs/components/gauge/gauge.js
new file mode 100644
index 000000000..d44c2c39c
--- /dev/null
+++ b/www/assets/framework7/cjs/components/gauge/gauge.js
@@ -0,0 +1,103 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _gaugeClass = _interopRequireDefault(require("./gauge-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'gauge',
+ static: {
+ Gauge: _gaugeClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.gauge = (0, _constructorMethods.default)({
+ defaultSelector: '.gauge',
+ constructor: _gaugeClass.default,
+ app: app,
+ domProp: 'f7Gauge'
+ });
+
+ app.gauge.update = function update(el, newParams) {
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var gauge = app.gauge.get(el);
+ if (!gauge) return undefined;
+ gauge.update(newParams);
+ return gauge;
+ };
+ },
+ params: {
+ gauge: {
+ el: null,
+ type: 'circle',
+ value: 0,
+ size: 200,
+ bgColor: 'transparent',
+ borderBgColor: '#eeeeee',
+ borderColor: '#000000',
+ borderWidth: 10,
+ valueText: null,
+ valueTextColor: '#000000',
+ valueFontSize: 31,
+ valueFontWeight: 500,
+ labelText: null,
+ labelTextColor: '#888888',
+ labelFontSize: 14,
+ labelFontWeight: 400
+ }
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.gauge-init').each(function (el) {
+ app.gauge.create((0, _utils.extend)({
+ el: el
+ }, (0, _dom.default)(el).dataset() || {}));
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.gauge-init').each(function (el) {
+ if (el.f7Gauge) el.f7Gauge.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.gauge-init').each(function (el) {
+ app.gauge.create((0, _utils.extend)({
+ el: el
+ }, (0, _dom.default)(el).dataset() || {}));
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.gauge-init').each(function (el) {
+ if (el.f7Gauge) el.f7Gauge.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'gauge-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var el = vnode.elm;
+ app.gauge.create((0, _utils.extend)({
+ el: el
+ }, (0, _dom.default)(el).dataset() || {}));
+ },
+ destroy: function destroy(vnode) {
+ var el = vnode.elm;
+ if (el.f7Gauge) el.f7Gauge.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/grid/grid.js b/www/assets/framework7/cjs/components/grid/grid.js
new file mode 100644
index 000000000..b0c7d60de
--- /dev/null
+++ b/www/assets/framework7/cjs/components/grid/grid.js
@@ -0,0 +1,233 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function getElMinSize(dimension, $el) {
+ var minSize = $el.css("min-" + dimension);
+
+ if (minSize === 'auto' || minSize === 'none') {
+ minSize = 0;
+ } else if (minSize.indexOf('px') >= 0) {
+ minSize = parseFloat(minSize);
+ } else if (minSize.indexOf('%') >= 0) {
+ minSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(minSize) / 100;
+ }
+
+ return minSize;
+}
+
+function getElMaxSize(dimension, $el) {
+ var maxSize = $el.css("max-" + dimension);
+
+ if (maxSize === 'auto' || maxSize === 'none') {
+ maxSize = null;
+ } else if (maxSize.indexOf('px') >= 0) {
+ maxSize = parseFloat(maxSize);
+ } else if (maxSize.indexOf('%') >= 0) {
+ maxSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(maxSize) / 100;
+ }
+
+ return maxSize;
+}
+
+var Grid = {
+ init: function init() {
+ var app = this;
+ var isTouched;
+ var isMoved;
+ var touchStartX;
+ var touchStartY;
+ var $resizeHandlerEl;
+ var $prevResizableEl;
+ var $nextResizableEl;
+ var prevElSize;
+ var prevElMinSize;
+ var prevElMaxSize;
+ var nextElSize;
+ var nextElMinSize;
+ var nextElMaxSize;
+ var parentSize;
+ var itemsInFlow;
+ var gapSize;
+ var isScrolling;
+
+ function handleTouchStart(e) {
+ if (isTouched || isMoved) return;
+ $resizeHandlerEl = (0, _dom.default)(e.target).closest('.resize-handler');
+ touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ isTouched = true;
+ $prevResizableEl = undefined;
+ $nextResizableEl = undefined;
+ isScrolling = undefined;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var isRow = $resizeHandlerEl.parent('.row').length === 1;
+ var sizeProp = isRow ? 'height' : 'width';
+ var getSizeProp = isRow ? 'offsetHeight' : 'offsetWidth';
+
+ if (!isMoved) {
+ $prevResizableEl = $resizeHandlerEl.parent(isRow ? '.row' : '.col');
+
+ if ($prevResizableEl.length && (!$prevResizableEl.hasClass('resizable') || $prevResizableEl.hasClass('resizable-fixed'))) {
+ $prevResizableEl = $prevResizableEl.prevAll('.resizable:not(.resizable-fixed)').eq(0);
+ }
+
+ $nextResizableEl = $prevResizableEl.next(isRow ? '.row' : '.col');
+
+ if ($nextResizableEl.length && (!$nextResizableEl.hasClass('resizable') || $nextResizableEl.hasClass('resizable-fixed'))) {
+ $nextResizableEl = $nextResizableEl.nextAll('.resizable:not(.resizable-fixed)').eq(0);
+ }
+
+ if ($prevResizableEl.length) {
+ prevElSize = $prevResizableEl[0][getSizeProp];
+ prevElMinSize = getElMinSize(sizeProp, $prevResizableEl);
+ prevElMaxSize = getElMaxSize(sizeProp, $prevResizableEl);
+ parentSize = $prevResizableEl.parent()[0][getSizeProp];
+ itemsInFlow = $prevResizableEl.parent().children(isRow ? '.row' : '[class*="col-"], .col').length;
+ gapSize = parseFloat($prevResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));
+ }
+
+ if ($nextResizableEl.length) {
+ nextElSize = $nextResizableEl[0][getSizeProp];
+ nextElMinSize = getElMinSize(sizeProp, $nextResizableEl);
+ nextElMaxSize = getElMaxSize(sizeProp, $nextResizableEl);
+
+ if (!$prevResizableEl.length) {
+ parentSize = $nextResizableEl.parent()[0][getSizeProp];
+ itemsInFlow = $nextResizableEl.parent().children(isRow ? '.row' : '[class*="col-"], .col').length;
+ gapSize = parseFloat($nextResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));
+ }
+ }
+ }
+
+ isMoved = true;
+ var touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined' && !isRow) {
+ isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ var isAbsolute = $prevResizableEl.hasClass('resizable-absolute') || $nextResizableEl.hasClass('resizable-absolute');
+ var resizeNextEl = !isRow || isRow && !isAbsolute;
+
+ if (resizeNextEl && !$nextResizableEl.length || !$prevResizableEl.length) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ e.preventDefault();
+ var diff = isRow ? touchCurrentY - touchStartY : touchCurrentX - touchStartX;
+ var prevElNewSize;
+ var nextElNewSize;
+
+ if ($prevResizableEl.length) {
+ prevElNewSize = prevElSize + diff;
+
+ if (prevElNewSize < prevElMinSize) {
+ prevElNewSize = prevElMinSize;
+ diff = prevElNewSize - prevElSize;
+ }
+
+ if (prevElMaxSize && prevElNewSize > prevElMaxSize) {
+ prevElNewSize = prevElMaxSize;
+ diff = prevElNewSize - prevElSize;
+ }
+ }
+
+ if ($nextResizableEl.length && resizeNextEl) {
+ nextElNewSize = nextElSize - diff;
+
+ if (nextElNewSize < nextElMinSize) {
+ nextElNewSize = nextElMinSize;
+ diff = nextElSize - nextElNewSize;
+ prevElNewSize = prevElSize + diff;
+ }
+
+ if (nextElMaxSize && nextElNewSize > nextElMaxSize) {
+ nextElNewSize = nextElMaxSize;
+ diff = nextElSize - nextElNewSize;
+ prevElNewSize = prevElSize + diff;
+ }
+ }
+
+ if (isAbsolute) {
+ $prevResizableEl[0].style[sizeProp] = prevElNewSize + "px";
+
+ if (resizeNextEl) {
+ $nextResizableEl[0].style[sizeProp] = nextElNewSize + "px";
+ }
+
+ $prevResizableEl.trigger('grid:resize');
+ $nextResizableEl.trigger('grid:resize');
+ app.emit('gridResize', $prevResizableEl[0]);
+ app.emit('gridResize', $nextResizableEl[0]);
+ return;
+ }
+
+ var gapAddSize = (itemsInFlow - 1) * gapSize / itemsInFlow;
+ var gapAddSizeCSS = isRow ? itemsInFlow - 1 + " * var(--f7-grid-row-gap) / " + itemsInFlow : '(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)';
+ var prevElNewSizeNormalized = prevElNewSize + gapAddSize;
+ var nextElNewSizeNormalized = nextElNewSize + gapAddSize;
+ $prevResizableEl[0].style[sizeProp] = "calc(" + prevElNewSizeNormalized / parentSize * 100 + "% - " + gapAddSizeCSS + ")";
+ $nextResizableEl[0].style[sizeProp] = "calc(" + nextElNewSizeNormalized / parentSize * 100 + "% - " + gapAddSizeCSS + ")";
+ $prevResizableEl.trigger('grid:resize');
+ $nextResizableEl.trigger('grid:resize');
+ app.emit('gridResize', $prevResizableEl[0]);
+ app.emit('gridResize', $nextResizableEl[0]);
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched) return;
+
+ if (!isMoved) {
+ isTouched = false;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ }
+
+ var document = (0, _ssrWindow.getDocument)();
+ (0, _dom.default)(document).on(app.touchEvents.start, '.col > .resize-handler, .row > .resize-handler', handleTouchStart);
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend', handleTouchEnd);
+ }
+};
+var _default = {
+ name: 'grid',
+ create: function create() {
+ var app = this;
+ (0, _utils.extend)(app, {
+ grid: {
+ init: Grid.init.bind(app)
+ }
+ });
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ app.grid.init();
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/icon/icon.js b/www/assets/framework7/cjs/components/icon/icon.js
new file mode 100644
index 000000000..031c61b8b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/icon/icon.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'icon'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/infinite-scroll/infinite-scroll.js b/www/assets/framework7/cjs/components/infinite-scroll/infinite-scroll.js
new file mode 100644
index 000000000..0770c69fa
--- /dev/null
+++ b/www/assets/framework7/cjs/components/infinite-scroll/infinite-scroll.js
@@ -0,0 +1,111 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var InfiniteScroll = {
+ handle: function handle(el, e) {
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ var scrollTop = $el[0].scrollTop;
+ var scrollHeight = $el[0].scrollHeight;
+ var height = $el[0].offsetHeight;
+ var distance = $el[0].getAttribute('data-infinite-distance');
+ var virtualListContainer = $el.find('.virtual-list');
+ var virtualList;
+ var onTop = $el.hasClass('infinite-scroll-top');
+ if (!distance) distance = 50;
+
+ if (typeof distance === 'string' && distance.indexOf('%') >= 0) {
+ distance = parseInt(distance, 10) / 100 * height;
+ }
+
+ if (distance > height) distance = height;
+
+ if (onTop) {
+ if (scrollTop < distance) {
+ $el.trigger('infinite', e);
+ app.emit('infinite', $el[0], e);
+ }
+ } else if (scrollTop + height >= scrollHeight - distance) {
+ if (virtualListContainer.length > 0) {
+ virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;
+
+ if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {
+ return;
+ }
+ }
+
+ $el.trigger('infinite', e);
+ app.emit('infinite', $el[0], e);
+ }
+ },
+ create: function create(el) {
+ var $el = (0, _dom.default)(el);
+ var app = this;
+
+ function scrollHandler(e) {
+ app.infiniteScroll.handle(this, e);
+ }
+
+ $el.each(function (element) {
+ element.f7InfiniteScrollHandler = scrollHandler;
+ element.addEventListener('scroll', element.f7InfiniteScrollHandler);
+ });
+ },
+ destroy: function destroy(el) {
+ var $el = (0, _dom.default)(el);
+ $el.each(function (element) {
+ element.removeEventListener('scroll', element.f7InfiniteScrollHandler);
+ delete element.f7InfiniteScrollHandler;
+ });
+ }
+};
+var _default = {
+ name: 'infiniteScroll',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ infiniteScroll: InfiniteScroll
+ });
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ var $tabEl = (0, _dom.default)(tabEl);
+ var $isEls = $tabEl.find('.infinite-scroll-content');
+ if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);
+ $isEls.each(function (el) {
+ app.infiniteScroll.create(el);
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var $tabEl = (0, _dom.default)(tabEl);
+ var app = this;
+ var $isEls = $tabEl.find('.infinite-scroll-content');
+ if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);
+ $isEls.each(function (el) {
+ app.infiniteScroll.destroy(el);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.infinite-scroll-content').each(function (el) {
+ app.infiniteScroll.create(el);
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.infinite-scroll-content').each(function (el) {
+ app.infiniteScroll.destroy(el);
+ });
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/input/input.js b/www/assets/framework7/cjs/components/input/input.js
new file mode 100644
index 000000000..e4117c67d
--- /dev/null
+++ b/www/assets/framework7/cjs/components/input/input.js
@@ -0,0 +1,396 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Input = {
+ ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],
+ createTextareaResizableShadow: function createTextareaResizableShadow() {
+ var document = (0, _ssrWindow.getDocument)();
+ var $shadowEl = (0, _dom.default)(document.createElement('textarea'));
+ $shadowEl.addClass('textarea-resizable-shadow');
+ $shadowEl.prop({
+ disabled: true,
+ readonly: true
+ });
+ Input.textareaResizableShadow = $shadowEl;
+ },
+ textareaResizableShadow: undefined,
+ resizeTextarea: function resizeTextarea(textareaEl) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var $textareaEl = (0, _dom.default)(textareaEl);
+
+ if (!Input.textareaResizableShadow) {
+ Input.createTextareaResizableShadow();
+ }
+
+ var $shadowEl = Input.textareaResizableShadow;
+ if (!$textareaEl.length) return;
+ if (!$textareaEl.hasClass('resizable')) return;
+
+ if (Input.textareaResizableShadow.parents().length === 0) {
+ app.$el.append($shadowEl);
+ }
+
+ var styles = window.getComputedStyle($textareaEl[0]);
+ 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(function (style) {
+ var styleValue = styles[style];
+
+ if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {
+ styleValue = styleValue.replace(',', '.');
+ }
+
+ $shadowEl.css(style, styleValue);
+ });
+ var currentHeight = $textareaEl[0].clientHeight;
+ $shadowEl.val('');
+ var initialHeight = $shadowEl[0].scrollHeight;
+ $shadowEl.val($textareaEl.val());
+ $shadowEl.css('height', 0);
+ var scrollHeight = $shadowEl[0].scrollHeight;
+
+ if (currentHeight !== scrollHeight) {
+ if (scrollHeight > initialHeight) {
+ $textareaEl.css('height', scrollHeight + "px");
+ } else if (scrollHeight < currentHeight) {
+ $textareaEl.css('height', '');
+ }
+
+ if (scrollHeight > initialHeight || scrollHeight < currentHeight) {
+ $textareaEl.trigger('textarea:resize', {
+ initialHeight: initialHeight,
+ currentHeight: currentHeight,
+ scrollHeight: scrollHeight
+ });
+ app.emit('textareaResize', {
+ initialHeight: initialHeight,
+ currentHeight: currentHeight,
+ scrollHeight: scrollHeight
+ });
+ }
+ }
+ },
+ validate: function validate(inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+ if (!$inputEl.length) return true;
+ var $itemInputEl = $inputEl.parents('.item-input');
+ var $inputWrapEl = $inputEl.parents('.input');
+
+ function unsetReadonly() {
+ if ($inputEl[0].f7ValidateReadonly) {
+ $inputEl[0].readOnly = false;
+ }
+ }
+
+ function setReadonly() {
+ if ($inputEl[0].f7ValidateReadonly) {
+ $inputEl[0].readOnly = true;
+ }
+ }
+
+ unsetReadonly();
+ var validity = $inputEl[0].validity;
+ var validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';
+
+ if (!validity) {
+ setReadonly();
+ return true;
+ }
+
+ if (!validity.valid) {
+ var $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');
+
+ if (validationMessage) {
+ if ($errorEl.length === 0) {
+ $errorEl = (0, _dom.default)("");
+ $errorEl.insertAfter($inputEl);
+ }
+
+ $errorEl.text(validationMessage);
+ }
+
+ if ($errorEl.length > 0) {
+ $itemInputEl.addClass('item-input-with-error-message');
+ $inputWrapEl.addClass('input-with-error-message');
+ }
+
+ $itemInputEl.addClass('item-input-invalid');
+ $inputWrapEl.addClass('input-invalid');
+ $inputEl.addClass('input-invalid');
+ setReadonly();
+ return false;
+ }
+
+ $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');
+ $inputWrapEl.removeClass('input-invalid input-with-error-message');
+ $inputEl.removeClass('input-invalid');
+ setReadonly();
+ return true;
+ },
+ validateInputs: function validateInputs(el) {
+ var app = this;
+ var validates = (0, _dom.default)(el).find('input, textarea, select').map(function (inputEl) {
+ return app.input.validate(inputEl);
+ });
+ return validates.indexOf(false) < 0;
+ },
+ focus: function focus(inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+ var type = $inputEl.attr('type');
+ if (Input.ignoreTypes.indexOf(type) >= 0) return;
+ $inputEl.parents('.item-input').addClass('item-input-focused');
+ $inputEl.parents('.input').addClass('input-focused');
+ $inputEl.addClass('input-focused');
+ },
+ blur: function blur(inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+ $inputEl.parents('.item-input').removeClass('item-input-focused');
+ $inputEl.parents('.input').removeClass('input-focused');
+ $inputEl.removeClass('input-focused');
+ },
+ checkEmptyState: function checkEmptyState(inputEl) {
+ var app = this;
+ var $inputEl = (0, _dom.default)(inputEl);
+
+ if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {
+ $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);
+ }
+
+ if (!$inputEl.length) return;
+ var isContentEditable = $inputEl[0].hasAttribute('contenteditable');
+ var value;
+
+ if (isContentEditable) {
+ if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();
+ } else {
+ value = $inputEl.val();
+ }
+
+ var $itemInputEl = $inputEl.parents('.item-input');
+ var $inputWrapEl = $inputEl.parents('.input');
+
+ if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {
+ $itemInputEl.addClass('item-input-with-value');
+ $inputWrapEl.addClass('input-with-value');
+ $inputEl.addClass('input-with-value');
+ $inputEl.trigger('input:notempty');
+ app.emit('inputNotEmpty', $inputEl[0]);
+ } else {
+ $itemInputEl.removeClass('item-input-with-value');
+ $inputWrapEl.removeClass('input-with-value');
+ $inputEl.removeClass('input-with-value');
+ $inputEl.trigger('input:empty');
+ app.emit('inputEmpty', $inputEl[0]);
+ }
+ },
+ scrollIntoView: function scrollIntoView(inputEl, duration, centered, force) {
+ if (duration === void 0) {
+ duration = 0;
+ }
+
+ var $inputEl = (0, _dom.default)(inputEl);
+ var $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);
+
+ if (!$scrollableEl.length) {
+ return false;
+ }
+
+ var contentHeight = $scrollableEl[0].offsetHeight;
+ var contentScrollTop = $scrollableEl[0].scrollTop;
+ var contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);
+ var contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);
+ var contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;
+ var inputOffsetTop = $inputEl.offset().top - contentOffsetTop;
+ var inputHeight = $inputEl[0].offsetHeight;
+ var min = inputOffsetTop + contentScrollTop - contentPaddingTop;
+ var max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;
+ var centeredPosition = min + (max - min) / 2;
+
+ if (contentScrollTop > min) {
+ $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);
+ return true;
+ }
+
+ if (contentScrollTop < max) {
+ $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);
+ return true;
+ }
+
+ if (force) {
+ $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);
+ }
+
+ return false;
+ },
+ init: function init() {
+ var app = this;
+ var device = (0, _getDevice.getDevice)();
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ Input.createTextareaResizableShadow();
+
+ function onFocus() {
+ var inputEl = this;
+
+ if (app.params.input.scrollIntoViewOnFocus) {
+ if (device.android) {
+ (0, _dom.default)(window).once('resize', function () {
+ if (document && document.activeElement === inputEl) {
+ app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);
+ }
+ });
+ } else {
+ app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);
+ }
+ }
+
+ app.input.focus(inputEl);
+ }
+
+ function onBlur() {
+ var $inputEl = (0, _dom.default)(this);
+ var tag = $inputEl[0].nodeName.toLowerCase();
+ app.input.blur($inputEl);
+
+ if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {
+ app.input.validate($inputEl);
+ } // Resize textarea
+
+
+ if (tag === 'textarea' && $inputEl.hasClass('resizable')) {
+ if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();
+ }
+ }
+
+ function onChange() {
+ var $inputEl = (0, _dom.default)(this);
+ var type = $inputEl.attr('type');
+ var tag = $inputEl[0].nodeName.toLowerCase();
+ var isContentEditable = $inputEl[0].hasAttribute('contenteditable');
+ if (Input.ignoreTypes.indexOf(type) >= 0) return; // Check Empty State
+
+ app.input.checkEmptyState($inputEl);
+ if (isContentEditable) return; // Check validation
+
+ if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {
+ app.input.validate($inputEl);
+ } // Resize textarea
+
+
+ if (tag === 'textarea' && $inputEl.hasClass('resizable')) {
+ app.input.resizeTextarea($inputEl);
+ }
+ }
+
+ function onInvalid(e) {
+ var $inputEl = (0, _dom.default)(this);
+
+ if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {
+ e.preventDefault();
+ app.input.validate($inputEl);
+ }
+ }
+
+ function clearInput() {
+ var $clicked = (0, _dom.default)(this);
+ var $inputEl = $clicked.siblings('input, textarea').eq(0);
+ var previousValue = $inputEl.val();
+ $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);
+ app.emit('inputClear', previousValue);
+ }
+
+ function preventDefault(e) {
+ e.preventDefault();
+ }
+
+ (0, _dom.default)(document).on('click', '.input-clear-button', clearInput);
+ (0, _dom.default)(document).on('mousedown', '.input-clear-button', preventDefault);
+ (0, _dom.default)(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);
+ (0, _dom.default)(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);
+ (0, _dom.default)(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);
+ (0, _dom.default)(document).on('invalid', 'input, textarea, select', onInvalid, true);
+ }
+};
+var _default = {
+ name: 'input',
+ params: {
+ input: {
+ scrollIntoViewOnFocus: undefined,
+ scrollIntoViewCentered: false,
+ scrollIntoViewDuration: 0,
+ scrollIntoViewAlways: false
+ }
+ },
+ create: function create() {
+ var app = this;
+
+ if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {
+ app.params.input.scrollIntoViewOnFocus = (0, _getDevice.getDevice)().android;
+ }
+
+ (0, _utils.bindMethods)(app, {
+ input: Input
+ });
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ app.input.init();
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ var $tabEl = (0, _dom.default)(tabEl);
+ $tabEl.find('.item-input, .input').each(function (itemInputEl) {
+ var $itemInputEl = (0, _dom.default)(itemInputEl);
+ $itemInputEl.find('input, select, textarea, [contenteditable]').each(function (inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+ if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;
+ app.input.checkEmptyState($inputEl);
+ });
+ });
+ $tabEl.find('textarea.resizable').each(function (textareaEl) {
+ app.input.resizeTextarea(textareaEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ var $pageEl = page.$el;
+ $pageEl.find('.item-input, .input').each(function (itemInputEl) {
+ var $itemInputEl = (0, _dom.default)(itemInputEl);
+ $itemInputEl.find('input, select, textarea, [contenteditable]').each(function (inputEl) {
+ var $inputEl = (0, _dom.default)(inputEl);
+ if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;
+ app.input.checkEmptyState($inputEl);
+ });
+ });
+ $pageEl.find('textarea.resizable').each(function (textareaEl) {
+ app.input.resizeTextarea(textareaEl);
+ });
+ },
+ 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {
+ var app = this;
+
+ if (instance && instance.$el) {
+ instance.$el.find('textarea.resizable').each(function (textareaEl) {
+ app.input.resizeTextarea(textareaEl);
+ });
+ } else {
+ (0, _dom.default)('textarea.resizable').each(function (textareaEl) {
+ app.input.resizeTextarea(textareaEl);
+ });
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/lazy/lazy.js b/www/assets/framework7/cjs/components/lazy/lazy.js
new file mode 100644
index 000000000..1bc4879e9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/lazy/lazy.js
@@ -0,0 +1,283 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Lazy = {
+ destroy: function destroy(pageEl) {
+ var $pageEl = (0, _dom.default)(pageEl).closest('.page');
+ if (!$pageEl.length) return;
+
+ if ($pageEl[0].f7LazyDestroy) {
+ $pageEl[0].f7LazyDestroy();
+ }
+ },
+ create: function create(pageEl) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var support = (0, _getSupport.getSupport)();
+ var $pageEl = (0, _dom.default)(pageEl).closest('.page').eq(0); // Lazy images
+
+ var $lazyLoadImages = $pageEl.find('.lazy');
+ if ($lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) return; // Placeholder
+
+ var placeholderSrc = app.params.lazy.placeholder;
+
+ if (placeholderSrc !== false) {
+ $lazyLoadImages.each(function (lazyEl) {
+ if ((0, _dom.default)(lazyEl).attr('data-src') && !(0, _dom.default)(lazyEl).attr('src')) (0, _dom.default)(lazyEl).attr('src', placeholderSrc);
+ });
+ } // load image
+
+
+ var imagesSequence = [];
+ var imageIsLoading = false;
+
+ function onImageComplete(lazyEl) {
+ if (imagesSequence.indexOf(lazyEl) >= 0) {
+ imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);
+ }
+
+ imageIsLoading = false;
+
+ if (app.params.lazy.sequential && imagesSequence.length > 0) {
+ imageIsLoading = true;
+ app.lazy.loadImage(imagesSequence[0], onImageComplete);
+ }
+ }
+
+ function observerCallback(entries, observer) {
+ entries.forEach(function (entry) {
+ if (entry.isIntersecting) {
+ if (app.params.lazy.sequential && imageIsLoading) {
+ if (imagesSequence.indexOf(entry.target) < 0) imagesSequence.push(entry.target);
+ return;
+ } // Load image
+
+
+ imageIsLoading = true;
+ app.lazy.loadImage(entry.target, onImageComplete); // Detach
+
+ observer.unobserve(entry.target);
+ }
+ });
+ }
+
+ if (app.params.lazy.observer && support.intersectionObserver) {
+ var observer = $pageEl[0].f7LazyObserver;
+
+ if (!observer) {
+ observer = new window.IntersectionObserver(observerCallback, {
+ root: $pageEl[0]
+ });
+ }
+
+ $lazyLoadImages.each(function (el) {
+ if (el.f7LazyObserverAdded) return;
+ el.f7LazyObserverAdded = true;
+ observer.observe(el);
+ });
+
+ if (!$pageEl[0].f7LazyDestroy) {
+ $pageEl[0].f7LazyDestroy = function () {
+ observer.disconnect();
+ delete $pageEl[0].f7LazyDestroy;
+ delete $pageEl[0].f7LazyObserver;
+ };
+ }
+
+ return;
+ }
+
+ function lazyHandler() {
+ app.lazy.load($pageEl, function (lazyEl) {
+ if (app.params.lazy.sequential && imageIsLoading) {
+ if (imagesSequence.indexOf(lazyEl) < 0) imagesSequence.push(lazyEl);
+ return;
+ }
+
+ imageIsLoading = true;
+ app.lazy.loadImage(lazyEl, onImageComplete);
+ });
+ }
+
+ function attachEvents() {
+ $pageEl[0].f7LazyAttached = true;
+ $pageEl.on('lazy', lazyHandler);
+ $pageEl.on('scroll', lazyHandler, true);
+ $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);
+ app.on('resize', lazyHandler);
+ }
+
+ function detachEvents() {
+ $pageEl[0].f7LazyAttached = false;
+ delete $pageEl[0].f7LazyAttached;
+ $pageEl.off('lazy', lazyHandler);
+ $pageEl.off('scroll', lazyHandler, true);
+ $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);
+ app.off('resize', lazyHandler);
+ } // Store detach function
+
+
+ if (!$pageEl[0].f7LazyDestroy) {
+ $pageEl[0].f7LazyDestroy = detachEvents;
+ } // Attach events
+
+
+ if (!$pageEl[0].f7LazyAttached) {
+ attachEvents();
+ } // Run loader on page load/init
+
+
+ lazyHandler();
+ },
+ isInViewport: function isInViewport(lazyEl) {
+ var app = this;
+ var rect = lazyEl.getBoundingClientRect();
+ var threshold = app.params.lazy.threshold || 0;
+ return rect.top >= 0 - threshold && rect.left >= 0 - threshold && rect.top <= app.height + threshold && rect.left <= app.width + threshold;
+ },
+ loadImage: function loadImage(imageEl, callback) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var $imageEl = (0, _dom.default)(imageEl);
+ var bg = $imageEl.attr('data-background');
+ var src = bg || $imageEl.attr('data-src');
+
+ function onLoad() {
+ $imageEl.removeClass('lazy').addClass('lazy-loaded');
+
+ if (bg) {
+ $imageEl.css('background-image', "url(" + src + ")");
+ } else if (src) {
+ $imageEl.attr('src', src);
+ }
+
+ if (callback) callback(imageEl);
+ $imageEl.trigger('lazy:loaded');
+ app.emit('lazyLoaded', $imageEl[0]);
+ }
+
+ if (!src) {
+ $imageEl.trigger('lazy:load');
+ app.emit('lazyLoad', $imageEl[0]);
+ onLoad();
+ return;
+ }
+
+ function onError() {
+ $imageEl.removeClass('lazy').addClass('lazy-loaded');
+
+ if (bg) {
+ $imageEl.css('background-image', "url(" + (app.params.lazy.placeholder || '') + ")");
+ } else {
+ $imageEl.attr('src', app.params.lazy.placeholder || '');
+ }
+
+ if (callback) callback(imageEl);
+ $imageEl.trigger('lazy:error');
+ app.emit('lazyError', $imageEl[0]);
+ }
+
+ var image = new window.Image();
+ image.onload = onLoad;
+ image.onerror = onError;
+ image.src = src;
+ $imageEl.removeAttr('data-src').removeAttr('data-background'); // Add loaded callback and events
+
+ $imageEl.trigger('lazy:load');
+ app.emit('lazyLoad', $imageEl[0]);
+ },
+ load: function load(pageEl, callback) {
+ var app = this;
+ var $pageEl = (0, _dom.default)(pageEl);
+ if (!$pageEl.hasClass('page')) $pageEl = $pageEl.parents('.page').eq(0);
+
+ if ($pageEl.length === 0) {
+ return;
+ }
+
+ $pageEl.find('.lazy').each(function (lazyEl) {
+ var $lazyEl = (0, _dom.default)(lazyEl);
+
+ if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {
+ return;
+ }
+
+ if (app.lazy.isInViewport(lazyEl)) {
+ if (callback) callback(lazyEl);else app.lazy.loadImage(lazyEl);
+ }
+ });
+ }
+};
+var _default = {
+ name: 'lazy',
+ params: {
+ lazy: {
+ placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',
+ threshold: 0,
+ sequential: true,
+ observer: true
+ }
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ lazy: Lazy
+ });
+ },
+ on: {
+ pageInit: function pageInit(page) {
+ var app = this;
+
+ if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
+ app.lazy.create(page.$el);
+ }
+ },
+ pageAfterIn: function pageAfterIn(page) {
+ var app = this;
+ var support = (0, _getSupport.getSupport)();
+ if (app.params.lazy.observer && support.intersectionObserver) return;
+
+ if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
+ app.lazy.create(page.$el);
+ }
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+
+ if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
+ app.lazy.destroy(page.$el);
+ }
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ var $tabEl = (0, _dom.default)(tabEl);
+
+ if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {
+ app.lazy.create($tabEl);
+ }
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var app = this;
+ var support = (0, _getSupport.getSupport)();
+ if (app.params.lazy.observer && support.intersectionObserver) return;
+ var $tabEl = (0, _dom.default)(tabEl);
+
+ if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {
+ app.lazy.destroy($tabEl);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/link/link.js b/www/assets/framework7/cjs/components/link/link.js
new file mode 100644
index 000000000..7d12c164d
--- /dev/null
+++ b/www/assets/framework7/cjs/components/link/link.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'link'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/list-index/list-index-class.js b/www/assets/framework7/cjs/components/list-index/list-index-class.js
new file mode 100644
index 000000000..9dee2308a
--- /dev/null
+++ b/www/assets/framework7/cjs/components/list-index/list-index-class.js
@@ -0,0 +1,405 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var ListIndex = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(ListIndex, _Framework7Class);
+
+ function ListIndex(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var index = _assertThisInitialized(_this);
+
+ var defaults = {
+ el: null,
+ // where to render indexes
+ listEl: null,
+ // list el to generate indexes
+ indexes: 'auto',
+ // or array of indexes
+ iosItemHeight: 14,
+ mdItemHeight: 14,
+ auroraItemHeight: 14,
+ scrollList: true,
+ label: false,
+ // eslint-disable-next-line
+ renderItem: function renderItem(itemContent, itemIndex) {
+ return ("\n " + itemContent + "\n ").trim();
+ },
+ renderSkipPlaceholder: function renderSkipPlaceholder() {
+ return '';
+ },
+ on: {}
+ }; // Extend defaults with modules params
+
+ index.useModulesParams(defaults);
+ index.params = (0, _utils.extend)(defaults, params);
+ var $el;
+ var $listEl;
+ var $pageContentEl;
+ var $ul;
+
+ if (index.params.el) {
+ $el = (0, _dom.default)(index.params.el);
+ } else {
+ return index || _assertThisInitialized(_this);
+ }
+
+ if ($el[0].f7ListIndex) {
+ return $el[0].f7ListIndex || _assertThisInitialized(_this);
+ }
+
+ $ul = $el.find('ul');
+
+ if ($ul.length === 0) {
+ $ul = (0, _dom.default)('');
+ $el.append($ul);
+ }
+
+ if (index.params.listEl) {
+ $listEl = (0, _dom.default)(index.params.listEl);
+ }
+
+ if (index.params.indexes === 'auto' && !$listEl) {
+ return index || _assertThisInitialized(_this);
+ }
+
+ if ($listEl) {
+ $pageContentEl = $listEl.parents('.page-content').eq(0);
+ } else {
+ $pageContentEl = $el.siblings('.page-content').eq(0);
+
+ if ($pageContentEl.length === 0) {
+ $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);
+ }
+ }
+
+ $el[0].f7ListIndex = index;
+ (0, _utils.extend)(index, {
+ app: app,
+ $el: $el,
+ el: $el && $el[0],
+ $ul: $ul,
+ ul: $ul && $ul[0],
+ $listEl: $listEl,
+ listEl: $listEl && $listEl[0],
+ $pageContentEl: $pageContentEl,
+ pageContentEl: $pageContentEl && $pageContentEl[0],
+ indexes: params.indexes,
+ height: 0,
+ skipRate: 0
+ }); // Install Modules
+
+ index.useModules(); // Attach events
+
+ function handleResize() {
+ var height = {
+ index: index
+ };
+ index.calcSize();
+
+ if (height !== index.height) {
+ index.render();
+ }
+ }
+
+ function handleClick(e) {
+ var $clickedLi = (0, _dom.default)(e.target).closest('li');
+ if (!$clickedLi.length) return;
+ var itemIndex = $clickedLi.index();
+
+ if (index.skipRate > 0) {
+ var percentage = itemIndex / ($clickedLi.siblings('li').length - 1);
+ itemIndex = Math.round((index.indexes.length - 1) * percentage);
+ }
+
+ var itemContent = index.indexes[itemIndex];
+ index.$el.trigger('listindex:click', {
+ content: itemContent,
+ index: itemIndex
+ });
+ index.emit('local::click listIndexClick', index, itemContent, itemIndex);
+ index.$el.trigger('listindex:select', {
+ content: itemContent,
+ index: itemIndex
+ });
+ index.emit('local::select listIndexSelect', index, itemContent, itemIndex);
+
+ if (index.$listEl && index.params.scrollList) {
+ index.scrollListToIndex(itemContent, itemIndex);
+ }
+ }
+
+ var touchesStart = {};
+ var isTouched;
+ var isMoved;
+ var topPoint;
+ var bottomPoint;
+ var $labelEl;
+ var previousIndex = null;
+
+ function handleTouchStart(e) {
+ var $children = $ul.children();
+ if (!$children.length) return;
+ topPoint = $children[0].getBoundingClientRect().top;
+ bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ isTouched = true;
+ isMoved = false;
+ previousIndex = null;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+
+ if (!isMoved && index.params.label) {
+ $labelEl = (0, _dom.default)('');
+ $el.append($labelEl);
+ }
+
+ isMoved = true;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ e.preventDefault();
+ var percentage = (pageY - topPoint) / (bottomPoint - topPoint);
+ percentage = Math.min(Math.max(percentage, 0), 1);
+ var itemIndex = Math.round((index.indexes.length - 1) * percentage);
+ var itemContent = index.indexes[itemIndex];
+ var ulHeight = bottomPoint - topPoint;
+ var bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;
+
+ if (itemIndex !== previousIndex) {
+ if (index.params.label) {
+ $labelEl.html(itemContent).transform("translateY(-" + bubbleBottom + "px)");
+ }
+
+ if (index.$listEl && index.params.scrollList) {
+ index.scrollListToIndex(itemContent, itemIndex);
+ }
+ }
+
+ previousIndex = itemIndex;
+ index.$el.trigger('listindex:select');
+ index.emit('local::select listIndexSelect', index, itemContent, itemIndex);
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched) return;
+ isTouched = false;
+ isMoved = false;
+
+ if (index.params.label) {
+ if ($labelEl) $labelEl.remove();
+ $labelEl = undefined;
+ }
+ }
+
+ var passiveListener = (0, _getSupport.getSupport)().passiveListener ? {
+ passive: true
+ } : false;
+
+ index.attachEvents = function attachEvents() {
+ $el.parents('.tab').on('tab:show', handleResize);
+ $el.parents('.page').on('page:reinit', handleResize);
+ $el.parents('.panel').on('panel:open', handleResize);
+ $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);
+ app.on('resize', handleResize);
+ $el.on('click', handleClick);
+ $el.on(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ };
+
+ index.detachEvents = function attachEvents() {
+ $el.parents('.tab').off('tab:show', handleResize);
+ $el.parents('.page').off('page:reinit', handleResize);
+ $el.parents('.panel').off('panel:open', handleResize);
+ $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);
+ app.off('resize', handleResize);
+ $el.off('click', handleClick);
+ $el.off(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ }; // Init
+
+
+ index.init();
+ return index || _assertThisInitialized(_this);
+ } // eslint-disable-next-line
+
+
+ var _proto = ListIndex.prototype;
+
+ _proto.scrollListToIndex = function scrollListToIndex(itemContent, itemIndex) {
+ var index = this;
+ var $listEl = index.$listEl,
+ $pageContentEl = index.$pageContentEl,
+ app = index.app;
+ if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;
+ var $scrollToEl;
+ $listEl.find('.list-group-title, .item-divider').each(function (el) {
+ if ($scrollToEl) return;
+ var $el = (0, _dom.default)(el);
+
+ if ($el.text() === itemContent) {
+ $scrollToEl = $el;
+ }
+ });
+ if (!$scrollToEl || $scrollToEl.length === 0) return index;
+ var parentTop = $scrollToEl.parent().offset().top;
+ var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);
+ var scrollTop = $pageContentEl[0].scrollTop;
+ var scrollToElTop = $scrollToEl.offset().top;
+
+ if ($pageContentEl.parents('.page-with-navbar-large').length) {
+ var navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));
+ var $titleLargeEl = (0, _dom.default)(navbarInnerEl).find('.title-large');
+
+ if ($titleLargeEl.length) {
+ paddingTop -= $titleLargeEl[0].offsetHeight || 0;
+ }
+ }
+
+ if (parentTop <= paddingTop) {
+ $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);
+ } else {
+ $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);
+ }
+
+ return index;
+ };
+
+ _proto.renderSkipPlaceholder = function renderSkipPlaceholder() {
+ var index = this;
+ return index.params.renderSkipPlaceholder.call(index);
+ };
+
+ _proto.renderItem = function renderItem(itemContent, itemIndex) {
+ var index = this;
+ return index.params.renderItem.call(index, itemContent, itemIndex);
+ };
+
+ _proto.render = function render() {
+ var index = this;
+ var $ul = index.$ul,
+ indexes = index.indexes,
+ skipRate = index.skipRate;
+ var wasSkipped;
+ var html = indexes.map(function (itemContent, itemIndex) {
+ if (itemIndex % skipRate !== 0 && skipRate > 0) {
+ wasSkipped = true;
+ return '';
+ }
+
+ var itemHtml = index.renderItem(itemContent, itemIndex);
+
+ if (wasSkipped) {
+ itemHtml = index.renderSkipPlaceholder() + itemHtml;
+ }
+
+ wasSkipped = false;
+ return itemHtml;
+ }).join('');
+ $ul.html(html);
+ return index;
+ };
+
+ _proto.calcSize = function calcSize() {
+ var index = this;
+ var app = index.app,
+ params = index.params,
+ el = index.el,
+ indexes = index.indexes;
+ var height = el.offsetHeight;
+ var itemHeight = params[app.theme + "ItemHeight"];
+ var maxItems = Math.floor(height / itemHeight);
+ var items = indexes.length;
+ var skipRate = 0;
+
+ if (items > maxItems) {
+ skipRate = Math.ceil((items * 2 - 1) / maxItems);
+ }
+
+ index.height = height;
+ index.skipRate = skipRate;
+ return index;
+ };
+
+ _proto.calcIndexes = function calcIndexes() {
+ var index = this;
+
+ if (index.params.indexes === 'auto') {
+ index.indexes = [];
+ index.$listEl.find('.list-group-title, .item-divider').each(function (el) {
+ var elContent = (0, _dom.default)(el).text();
+
+ if (index.indexes.indexOf(elContent) < 0) {
+ index.indexes.push(elContent);
+ }
+ });
+ } else {
+ index.indexes = index.params.indexes;
+ }
+
+ return index;
+ };
+
+ _proto.update = function update() {
+ var index = this;
+ index.calcIndexes();
+ index.calcSize();
+ index.render();
+ return index;
+ };
+
+ _proto.init = function init() {
+ var index = this;
+ index.calcIndexes();
+ index.calcSize();
+ index.render();
+ index.attachEvents();
+ };
+
+ _proto.destroy = function destroy() {
+ var index = this;
+ index.$el.trigger('listindex:beforedestroy', index);
+ index.emit('local::beforeDestroy listIndexBeforeDestroy');
+ index.detachEvents();
+
+ if (index.$el[0]) {
+ index.$el[0].f7ListIndex = null;
+ delete index.$el[0].f7ListIndex;
+ }
+
+ (0, _utils.deleteProps)(index);
+ index = null;
+ };
+
+ return ListIndex;
+}(_class.default);
+
+var _default = ListIndex;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/list-index/list-index.js b/www/assets/framework7/cjs/components/list-index/list-index.js
new file mode 100644
index 000000000..cc61581ac
--- /dev/null
+++ b/www/assets/framework7/cjs/components/list-index/list-index.js
@@ -0,0 +1,77 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _listIndexClass = _interopRequireDefault(require("./list-index-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'listIndex',
+ static: {
+ ListIndex: _listIndexClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.listIndex = (0, _constructorMethods.default)({
+ defaultSelector: '.list-index',
+ constructor: _listIndexClass.default,
+ app: app,
+ domProp: 'f7ListIndex'
+ });
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.list-index-init').each(function (listIndexEl) {
+ var params = (0, _utils.extend)((0, _dom.default)(listIndexEl).dataset(), {
+ el: listIndexEl
+ });
+ app.listIndex.create(params);
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.list-index-init').each(function (listIndexEl) {
+ if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.list-index-init').each(function (listIndexEl) {
+ var params = (0, _utils.extend)((0, _dom.default)(listIndexEl).dataset(), {
+ el: listIndexEl
+ });
+ app.listIndex.create(params);
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.list-index-init').each(function (listIndexEl) {
+ if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'list-index-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var listIndexEl = vnode.elm;
+ var params = (0, _utils.extend)((0, _dom.default)(listIndexEl).dataset(), {
+ el: listIndexEl
+ });
+ app.listIndex.create(params);
+ },
+ destroy: function destroy(vnode) {
+ var listIndexEl = vnode.elm;
+ if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/list/list.js b/www/assets/framework7/cjs/components/list/list.js
new file mode 100644
index 000000000..e9b433065
--- /dev/null
+++ b/www/assets/framework7/cjs/components/list/list.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'list'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/login-screen/login-screen-class.js b/www/assets/framework7/cjs/components/login-screen/login-screen-class.js
new file mode 100644
index 000000000..2b03a624a
--- /dev/null
+++ b/www/assets/framework7/cjs/components/login-screen/login-screen-class.js
@@ -0,0 +1,68 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var LoginScreen = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(LoginScreen, _Modal);
+
+ function LoginScreen(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var loginScreen = _assertThisInitialized(_this);
+
+ loginScreen.params = extendedParams; // Find Element
+
+ var $el;
+
+ if (!loginScreen.params.el) {
+ $el = (0, _dom.default)(loginScreen.params.content).filter(function (node) {
+ return node.nodeType === 1;
+ }).eq(0);
+ } else {
+ $el = (0, _dom.default)(loginScreen.params.el).eq(0);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return loginScreen.destroy() || _assertThisInitialized(_this);
+ }
+
+ (0, _utils.extend)(loginScreen, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ type: 'loginScreen'
+ });
+ $el[0].f7Modal = loginScreen;
+ return loginScreen || _assertThisInitialized(_this);
+ }
+
+ return LoginScreen;
+}(_modalClass.default);
+
+var _default = LoginScreen;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/login-screen/login-screen.js b/www/assets/framework7/cjs/components/login-screen/login-screen.js
new file mode 100644
index 000000000..a5c2a0460
--- /dev/null
+++ b/www/assets/framework7/cjs/components/login-screen/login-screen.js
@@ -0,0 +1,44 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _loginScreenClass = _interopRequireDefault(require("./login-screen-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'loginScreen',
+ static: {
+ LoginScreen: _loginScreenClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.loginScreen = (0, _modalMethods.default)({
+ app: app,
+ constructor: _loginScreenClass.default,
+ defaultSelector: '.login-screen.modal-in'
+ });
+ },
+ clicks: {
+ '.login-screen-open': function openLoginScreen($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);
+ },
+ '.login-screen-close': function closeLoginScreen($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/menu/menu.js b/www/assets/framework7/cjs/components/menu/menu.js
new file mode 100644
index 000000000..1daf0ba2c
--- /dev/null
+++ b/www/assets/framework7/cjs/components/menu/menu.js
@@ -0,0 +1,92 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Menu = {
+ open: function open(el) {
+ if (el === void 0) {
+ el = '.menu-item-dropdown';
+ }
+
+ var app = this;
+ if (!el) return;
+ var $el = (0, _dom.default)(el).closest('.menu-item-dropdown');
+ if (!$el.length) return;
+ var $menuEl = $el.closest('.menu').eq(0);
+
+ if ($menuEl.length) {
+ var zIndex = $menuEl.css('z-index');
+ var originalZIndex = $menuEl[0].style.zIndex;
+ $menuEl.css('z-index', parseInt(zIndex || 0, 10) + 1);
+ $menuEl[0].f7MenuZIndex = originalZIndex;
+ }
+
+ $el.eq(0).addClass('menu-item-dropdown-opened').trigger('menu:opened');
+ app.emit('menuOpened', $el.eq(0)[0]);
+ },
+ close: function close(el) {
+ if (el === void 0) {
+ el = '.menu-item-dropdown-opened';
+ }
+
+ var app = this;
+ if (!el) return;
+ var $el = (0, _dom.default)(el).closest('.menu-item-dropdown-opened');
+ if (!$el.length) return;
+ var $menuEl = $el.closest('.menu').eq(0);
+
+ if ($menuEl.length) {
+ var zIndex = $menuEl[0].f7MenuZIndex;
+ $menuEl.css('z-index', zIndex);
+ delete $menuEl[0].f7MenuZIndex;
+ }
+
+ $el.eq(0).removeClass('menu-item-dropdown-opened').trigger('menu:closed');
+ app.emit('menuClosed', $el.eq(0)[0]);
+ }
+};
+var _default = {
+ name: 'menu',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ menu: Menu
+ });
+ },
+ on: {
+ click: function click(e) {
+ var app = this;
+ var openedMenus = (0, _dom.default)('.menu-item-dropdown-opened');
+ if (!openedMenus.length) return;
+ openedMenus.each(function (el) {
+ if (!(0, _dom.default)(e.target).closest('.menu-item-dropdown-opened').length) {
+ app.menu.close(el);
+ }
+ });
+ }
+ },
+ clicks: {
+ '.menu-item-dropdown': function onClick($clickedEl, dataset, e) {
+ var app = this;
+
+ if ($clickedEl.hasClass('menu-item-dropdown-opened')) {
+ if ((0, _dom.default)(e.target).closest('.menu-dropdown').length) return;
+ app.menu.close($clickedEl);
+ } else {
+ app.menu.open($clickedEl);
+ }
+ },
+ '.menu-close': function onClick() {
+ var app = this;
+ app.menu.close();
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/messagebar/messagebar-class.js b/www/assets/framework7/cjs/components/messagebar/messagebar-class.js
new file mode 100644
index 000000000..d5a32b2b0
--- /dev/null
+++ b/www/assets/framework7/cjs/components/messagebar/messagebar-class.js
@@ -0,0 +1,446 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Messagebar = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Messagebar, _Framework7Class);
+
+ function Messagebar(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var messagebar = _assertThisInitialized(_this);
+
+ var defaults = {
+ top: false,
+ topOffset: 0,
+ bottomOffset: 0,
+ attachments: [],
+ renderAttachments: undefined,
+ renderAttachment: undefined,
+ maxHeight: null,
+ resizePage: true
+ }; // Extend defaults with modules params
+
+ messagebar.useModulesParams(defaults);
+ messagebar.params = (0, _utils.extend)(defaults, params); // El
+
+ var $el = (0, _dom.default)(messagebar.params.el);
+ if ($el.length === 0) return messagebar || _assertThisInitialized(_this);
+ if ($el[0].f7Messagebar) return $el[0].f7Messagebar || _assertThisInitialized(_this);
+ $el[0].f7Messagebar = messagebar; // Page and PageContent
+
+ var $pageEl = $el.parents('.page').eq(0);
+ var $pageContentEl = $pageEl.find('.page-content').eq(0); // Area
+
+ var $areaEl = $el.find('.messagebar-area'); // Textarea
+
+ var $textareaEl;
+
+ if (messagebar.params.textareaEl) {
+ $textareaEl = (0, _dom.default)(messagebar.params.textareaEl);
+ } else {
+ $textareaEl = $el.find('textarea');
+ } // Attachments & Library
+
+
+ var $attachmentsEl = $el.find('.messagebar-attachments');
+ var $sheetEl = $el.find('.messagebar-sheet');
+
+ if (messagebar.params.top) {
+ $el.addClass('messagebar-top');
+ }
+
+ (0, _utils.extend)(messagebar, {
+ $el: $el,
+ el: $el[0],
+ $areaEl: $areaEl,
+ areaEl: $areaEl[0],
+ $textareaEl: $textareaEl,
+ textareaEl: $textareaEl[0],
+ $attachmentsEl: $attachmentsEl,
+ attachmentsEl: $attachmentsEl[0],
+ attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),
+ $sheetEl: $sheetEl,
+ sheetEl: $sheetEl[0],
+ sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),
+ $pageEl: $pageEl,
+ pageEl: $pageEl[0],
+ $pageContentEl: $pageContentEl,
+ pageContentEl: $pageContentEl,
+ top: $el.hasClass('messagebar-top') || messagebar.params.top,
+ attachments: []
+ }); // Events
+
+ function onAppResize() {
+ if (messagebar.params.resizePage) {
+ messagebar.resizePage();
+ }
+ }
+
+ function onSubmit(e) {
+ e.preventDefault();
+ }
+
+ function onAttachmentClick(e) {
+ var index = (0, _dom.default)(this).index();
+
+ if ((0, _dom.default)(e.target).closest('.messagebar-attachment-delete').length) {
+ (0, _dom.default)(this).trigger('messagebar:attachmentdelete', index);
+ messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);
+ } else {
+ (0, _dom.default)(this).trigger('messagebar:attachmentclick', index);
+ messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);
+ }
+ }
+
+ function onTextareaChange() {
+ messagebar.checkEmptyState();
+ messagebar.$el.trigger('messagebar:change');
+ messagebar.emit('local::change messagebarChange', messagebar);
+ }
+
+ function onTextareaFocus() {
+ messagebar.sheetHide();
+ messagebar.$el.addClass('messagebar-focused');
+ messagebar.$el.trigger('messagebar:focus');
+ messagebar.emit('local::focus messagebarFocus', messagebar);
+ }
+
+ function onTextareaBlur() {
+ messagebar.$el.removeClass('messagebar-focused');
+ messagebar.$el.trigger('messagebar:blur');
+ messagebar.emit('local::blur messagebarBlur', messagebar);
+ }
+
+ messagebar.attachEvents = function attachEvents() {
+ $el.on('textarea:resize', onAppResize);
+ $el.on('submit', onSubmit);
+ $el.on('click', '.messagebar-attachment', onAttachmentClick);
+ $textareaEl.on('change input', onTextareaChange);
+ $textareaEl.on('focus', onTextareaFocus);
+ $textareaEl.on('blur', onTextareaBlur);
+ app.on('resize', onAppResize);
+ };
+
+ messagebar.detachEvents = function detachEvents() {
+ $el.off('textarea:resize', onAppResize);
+ $el.off('submit', onSubmit);
+ $el.off('click', '.messagebar-attachment', onAttachmentClick);
+ $textareaEl.off('change input', onTextareaChange);
+ $textareaEl.off('focus', onTextareaFocus);
+ $textareaEl.off('blur', onTextareaBlur);
+ app.off('resize', onAppResize);
+ }; // Install Modules
+
+
+ messagebar.useModules(); // Init
+
+ messagebar.init();
+ return messagebar || _assertThisInitialized(_this);
+ }
+
+ var _proto = Messagebar.prototype;
+
+ _proto.focus = function focus() {
+ var messagebar = this;
+ messagebar.$textareaEl.focus();
+ return messagebar;
+ };
+
+ _proto.blur = function blur() {
+ var messagebar = this;
+ messagebar.$textareaEl.blur();
+ return messagebar;
+ };
+
+ _proto.clear = function clear() {
+ var messagebar = this;
+ messagebar.$textareaEl.val('').trigger('change');
+ return messagebar;
+ };
+
+ _proto.getValue = function getValue() {
+ var messagebar = this;
+ return messagebar.$textareaEl.val().trim();
+ };
+
+ _proto.setValue = function setValue(value) {
+ var messagebar = this;
+ messagebar.$textareaEl.val(value).trigger('change');
+ return messagebar;
+ };
+
+ _proto.setPlaceholder = function setPlaceholder(placeholder) {
+ var messagebar = this;
+ messagebar.$textareaEl.attr('placeholder', placeholder);
+ return messagebar;
+ };
+
+ _proto.resizePage = function resizePage() {
+ var messagebar = this;
+ var params = messagebar.params,
+ $el = messagebar.$el,
+ top = messagebar.top,
+ $pageEl = messagebar.$pageEl,
+ $pageContentEl = messagebar.$pageContentEl,
+ $areaEl = messagebar.$areaEl,
+ $textareaEl = messagebar.$textareaEl,
+ $sheetEl = messagebar.$sheetEl,
+ $attachmentsEl = messagebar.$attachmentsEl;
+ var elHeight = $el[0].offsetHeight;
+ var maxHeight = params.maxHeight;
+
+ if (top) {
+ /*
+ Disable at the moment
+ const requiredPaddingTop = elHeight + params.topOffset;
+ const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);
+ if (requiredPaddingTop !== currentPaddingTop) {
+ if (!maxHeight) {
+ maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);
+ }
+ $textareaEl.css('max-height', `${maxHeight}px`);
+ $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);
+ $el.trigger('messagebar:resizePage');
+ messagebar.emit('local::resizepage messagebarResizePage');
+ }
+ */
+ } else {
+ var currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
+ var requiredPaddingBottom = elHeight + params.bottomOffset;
+
+ if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {
+ var currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);
+ var pageScrollHeight = $pageContentEl[0].scrollHeight;
+ var pageOffsetHeight = $pageContentEl[0].offsetHeight;
+ var pageScrollTop = $pageContentEl[0].scrollTop;
+ var scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;
+
+ if (!maxHeight) {
+ maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);
+ }
+
+ $textareaEl.css('max-height', maxHeight + "px");
+ $pageContentEl.css('padding-bottom', requiredPaddingBottom + "px");
+
+ if (scrollOnBottom) {
+ $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);
+ }
+
+ $el.trigger('messagebar:resizepage');
+ messagebar.emit('local::resizePage messagebarResizePage', messagebar);
+ }
+ }
+ };
+
+ _proto.checkEmptyState = function checkEmptyState() {
+ var messagebar = this;
+ var $el = messagebar.$el,
+ $textareaEl = messagebar.$textareaEl;
+ var value = $textareaEl.val().trim();
+
+ if (value && value.length) {
+ $el.addClass('messagebar-with-value');
+ } else {
+ $el.removeClass('messagebar-with-value');
+ }
+ };
+
+ _proto.attachmentsCreate = function attachmentsCreate(innerHTML) {
+ if (innerHTML === void 0) {
+ innerHTML = '';
+ }
+
+ var messagebar = this;
+ var $attachmentsEl = (0, _dom.default)("" + innerHTML + "
");
+ $attachmentsEl.insertBefore(messagebar.$textareaEl);
+ (0, _utils.extend)(messagebar, {
+ $attachmentsEl: $attachmentsEl,
+ attachmentsEl: $attachmentsEl[0]
+ });
+ return messagebar;
+ };
+
+ _proto.attachmentsShow = function attachmentsShow(innerHTML) {
+ if (innerHTML === void 0) {
+ innerHTML = '';
+ }
+
+ var messagebar = this;
+ messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');
+
+ if (messagebar.$attachmentsEl.length === 0) {
+ messagebar.attachmentsCreate(innerHTML);
+ }
+
+ messagebar.$el.addClass('messagebar-attachments-visible');
+ messagebar.attachmentsVisible = true;
+
+ if (messagebar.params.resizePage) {
+ messagebar.resizePage();
+ }
+
+ return messagebar;
+ };
+
+ _proto.attachmentsHide = function attachmentsHide() {
+ var messagebar = this;
+ messagebar.$el.removeClass('messagebar-attachments-visible');
+ messagebar.attachmentsVisible = false;
+
+ if (messagebar.params.resizePage) {
+ messagebar.resizePage();
+ }
+
+ return messagebar;
+ };
+
+ _proto.attachmentsToggle = function attachmentsToggle() {
+ var messagebar = this;
+
+ if (messagebar.attachmentsVisible) {
+ messagebar.attachmentsHide();
+ } else {
+ messagebar.attachmentsShow();
+ }
+
+ return messagebar;
+ };
+
+ _proto.renderAttachment = function renderAttachment(attachment) {
+ var messagebar = this;
+
+ if (messagebar.params.renderAttachment) {
+ return messagebar.params.renderAttachment.call(messagebar, attachment);
+ }
+
+ return "\n \n
\n
\n
\n ";
+ };
+
+ _proto.renderAttachments = function renderAttachments() {
+ var messagebar = this;
+ var html;
+
+ if (messagebar.params.renderAttachments) {
+ html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);
+ } else {
+ html = "" + messagebar.attachments.map(function (attachment) {
+ return messagebar.renderAttachment(attachment);
+ }).join('');
+ }
+
+ if (messagebar.$attachmentsEl.length === 0) {
+ messagebar.attachmentsCreate(html);
+ } else {
+ messagebar.$attachmentsEl.html(html);
+ }
+ };
+
+ _proto.sheetCreate = function sheetCreate(innerHTML) {
+ if (innerHTML === void 0) {
+ innerHTML = '';
+ }
+
+ var messagebar = this;
+ var $sheetEl = (0, _dom.default)("" + innerHTML + "
");
+ messagebar.$el.append($sheetEl);
+ (0, _utils.extend)(messagebar, {
+ $sheetEl: $sheetEl,
+ sheetEl: $sheetEl[0]
+ });
+ return messagebar;
+ };
+
+ _proto.sheetShow = function sheetShow(innerHTML) {
+ if (innerHTML === void 0) {
+ innerHTML = '';
+ }
+
+ var messagebar = this;
+ messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');
+
+ if (messagebar.$sheetEl.length === 0) {
+ messagebar.sheetCreate(innerHTML);
+ }
+
+ messagebar.$el.addClass('messagebar-sheet-visible');
+ messagebar.sheetVisible = true;
+
+ if (messagebar.params.resizePage) {
+ messagebar.resizePage();
+ }
+
+ return messagebar;
+ };
+
+ _proto.sheetHide = function sheetHide() {
+ var messagebar = this;
+ messagebar.$el.removeClass('messagebar-sheet-visible');
+ messagebar.sheetVisible = false;
+
+ if (messagebar.params.resizePage) {
+ messagebar.resizePage();
+ }
+
+ return messagebar;
+ };
+
+ _proto.sheetToggle = function sheetToggle() {
+ var messagebar = this;
+
+ if (messagebar.sheetVisible) {
+ messagebar.sheetHide();
+ } else {
+ messagebar.sheetShow();
+ }
+
+ return messagebar;
+ };
+
+ _proto.init = function init() {
+ var messagebar = this;
+ messagebar.attachEvents();
+ messagebar.checkEmptyState();
+ return messagebar;
+ };
+
+ _proto.destroy = function destroy() {
+ var messagebar = this;
+ messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);
+ messagebar.$el.trigger('messagebar:beforedestroy');
+ messagebar.detachEvents();
+
+ if (messagebar.$el[0]) {
+ messagebar.$el[0].f7Messagebar = null;
+ delete messagebar.$el[0].f7Messagebar;
+ }
+
+ (0, _utils.deleteProps)(messagebar);
+ };
+
+ return Messagebar;
+}(_class.default);
+
+var _default = Messagebar;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/messagebar/messagebar.js b/www/assets/framework7/cjs/components/messagebar/messagebar.js
new file mode 100644
index 000000000..701cda02b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/messagebar/messagebar.js
@@ -0,0 +1,78 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _messagebarClass = _interopRequireDefault(require("./messagebar-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'messagebar',
+ static: {
+ Messagebar: _messagebarClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.messagebar = (0, _constructorMethods.default)({
+ defaultSelector: '.messagebar',
+ constructor: _messagebarClass.default,
+ app: app,
+ domProp: 'f7Messagebar',
+ addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')
+ });
+ },
+ on: {
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.messagebar-init').each(function (messagebarEl) {
+ app.messagebar.destroy(messagebarEl);
+ });
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.messagebar-init').each(function (messagebarEl) {
+ app.messagebar.create((0, _utils.extend)({
+ el: messagebarEl
+ }, (0, _dom.default)(messagebarEl).dataset()));
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.messagebar-init').each(function (messagebarEl) {
+ app.messagebar.destroy(messagebarEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.messagebar-init').each(function (messagebarEl) {
+ app.messagebar.create((0, _utils.extend)({
+ el: messagebarEl
+ }, (0, _dom.default)(messagebarEl).dataset()));
+ });
+ }
+ },
+ vnode: {
+ 'messagebar-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var messagebarEl = vnode.elm;
+ app.messagebar.create((0, _utils.extend)({
+ el: messagebarEl
+ }, (0, _dom.default)(messagebarEl).dataset()));
+ },
+ destroy: function destroy(vnode) {
+ var app = this;
+ var messagebarEl = vnode.elm;
+ app.messagebar.destroy(messagebarEl);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/messages/messages-class.js b/www/assets/framework7/cjs/components/messages/messages-class.js
new file mode 100644
index 000000000..b49146763
--- /dev/null
+++ b/www/assets/framework7/cjs/components/messages/messages-class.js
@@ -0,0 +1,633 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Messages = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Messages, _Framework7Class);
+
+ function Messages(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var m = _assertThisInitialized(_this);
+
+ var defaults = {
+ autoLayout: true,
+ messages: [],
+ newMessagesFirst: false,
+ scrollMessages: true,
+ scrollMessagesOnEdge: true,
+ firstMessageRule: undefined,
+ lastMessageRule: undefined,
+ tailMessageRule: undefined,
+ sameNameMessageRule: undefined,
+ sameHeaderMessageRule: undefined,
+ sameFooterMessageRule: undefined,
+ sameAvatarMessageRule: undefined,
+ customClassMessageRule: undefined,
+ renderMessage: undefined
+ }; // Extend defaults with modules params
+
+ m.useModulesParams(defaults);
+ m.params = (0, _utils.extend)(defaults, params);
+ var $el = (0, _dom.default)(params.el).eq(0);
+ if ($el.length === 0) return m || _assertThisInitialized(_this);
+ if ($el[0].f7Messages) return $el[0].f7Messages || _assertThisInitialized(_this);
+ $el[0].f7Messages = m;
+ var $pageContentEl = $el.closest('.page-content').eq(0);
+ (0, _utils.extend)(m, {
+ messages: m.params.messages,
+ $el: $el,
+ el: $el[0],
+ $pageContentEl: $pageContentEl,
+ pageContentEl: $pageContentEl[0]
+ }); // Install Modules
+
+ m.useModules(); // Init
+
+ m.init();
+ return m || _assertThisInitialized(_this);
+ } // eslint-disable-next-line
+
+
+ var _proto = Messages.prototype;
+
+ _proto.getMessageData = function getMessageData(messageEl) {
+ var $messageEl = (0, _dom.default)(messageEl);
+ var data = {
+ name: $messageEl.find('.message-name').html(),
+ header: $messageEl.find('.message-header').html(),
+ textHeader: $messageEl.find('.message-text-header').html(),
+ textFooter: $messageEl.find('.message-text-footer').html(),
+ footer: $messageEl.find('.message-footer').html(),
+ isTitle: $messageEl.hasClass('messages-title'),
+ type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',
+ text: $messageEl.find('.message-text').html(),
+ image: $messageEl.find('.message-image').html(),
+ imageSrc: $messageEl.find('.message-image img').attr('src'),
+ typing: $messageEl.hasClass('message-typing')
+ };
+
+ if (data.isTitle) {
+ data.text = $messageEl.html();
+ }
+
+ if (data.text && data.textHeader) {
+ data.text = data.text.replace("", '');
+ }
+
+ if (data.text && data.textFooter) {
+ data.text = data.text.replace("", '');
+ }
+
+ var avatar = $messageEl.find('.message-avatar').css('background-image');
+ if (avatar === 'none' || avatar === '') avatar = undefined;
+
+ if (avatar && typeof avatar === 'string') {
+ avatar = avatar.replace('url(', '').replace(')', '').replace(/"/g, '').replace(/'/g, '');
+ } else {
+ avatar = undefined;
+ }
+
+ data.avatar = avatar;
+ return data;
+ };
+
+ _proto.getMessagesData = function getMessagesData() {
+ var m = this;
+ var data = [];
+ m.$el.find('.message, .messages-title').each(function (messageEl) {
+ data.push(m.getMessageData(messageEl));
+ });
+ return data;
+ };
+
+ _proto.renderMessage = function renderMessage(messageToRender) {
+ var m = this;
+ var message = (0, _utils.extend)({
+ type: 'sent',
+ attrs: {}
+ }, messageToRender);
+
+ if (m.params.renderMessage) {
+ return m.params.renderMessage.call(m, message);
+ }
+
+ if (message.isTitle) {
+ return "" + message.text + "
";
+ }
+
+ return (0, _$jsx.default)("div", _extends({
+ class: "message message-" + message.type + " " + (message.isTyping ? 'message-typing' : '') + " " + (message.cssClass || '')
+ }, message.attrs), message.avatar && (0, _$jsx.default)("div", {
+ class: "message-avatar",
+ style: "background-image:url(" + message.avatar + ")"
+ }), (0, _$jsx.default)("div", {
+ class: "message-content"
+ }, message.name && (0, _$jsx.default)("div", {
+ class: "message-name"
+ }, message.name), message.header && (0, _$jsx.default)("div", {
+ class: "message-header"
+ }, message.header), (0, _$jsx.default)("div", {
+ class: "message-bubble"
+ }, message.textHeader && (0, _$jsx.default)("div", {
+ class: "message-text-header"
+ }, message.textHeader), message.image && (0, _$jsx.default)("div", {
+ class: "message-image"
+ }, message.image), message.imageSrc && !message.image && (0, _$jsx.default)("div", {
+ class: "message-image"
+ }, (0, _$jsx.default)("img", {
+ src: message.imageSrc
+ })), (message.text || message.isTyping) && (0, _$jsx.default)("div", {
+ class: "message-text"
+ }, message.text || '', message.isTyping && (0, _$jsx.default)("div", {
+ class: "message-typing-indicator"
+ }, (0, _$jsx.default)("div", null), (0, _$jsx.default)("div", null), (0, _$jsx.default)("div", null))), message.textFooter && (0, _$jsx.default)("div", {
+ class: "message-text-footer"
+ }, message.textFooter)), message.footer && (0, _$jsx.default)("div", {
+ class: "message-footer"
+ }, message.footer)));
+ };
+
+ _proto.renderMessages = function renderMessages(messagesToRender, method) {
+ if (messagesToRender === void 0) {
+ messagesToRender = this.messages;
+ }
+
+ if (method === void 0) {
+ method = this.params.newMessagesFirst ? 'prepend' : 'append';
+ }
+
+ var m = this;
+ var html = messagesToRender.map(function (message) {
+ return m.renderMessage(message);
+ }).join('');
+ m.$el[method](html);
+ };
+
+ _proto.isFirstMessage = function isFirstMessage() {
+ var _m$params;
+
+ var m = this;
+ if (m.params.firstMessageRule) return (_m$params = m.params).firstMessageRule.apply(_m$params, arguments);
+ return false;
+ };
+
+ _proto.isLastMessage = function isLastMessage() {
+ var _m$params2;
+
+ var m = this;
+ if (m.params.lastMessageRule) return (_m$params2 = m.params).lastMessageRule.apply(_m$params2, arguments);
+ return false;
+ };
+
+ _proto.isTailMessage = function isTailMessage() {
+ var _m$params3;
+
+ var m = this;
+ if (m.params.tailMessageRule) return (_m$params3 = m.params).tailMessageRule.apply(_m$params3, arguments);
+ return false;
+ };
+
+ _proto.isSameNameMessage = function isSameNameMessage() {
+ var _m$params4;
+
+ var m = this;
+ if (m.params.sameNameMessageRule) return (_m$params4 = m.params).sameNameMessageRule.apply(_m$params4, arguments);
+ return false;
+ };
+
+ _proto.isSameHeaderMessage = function isSameHeaderMessage() {
+ var _m$params5;
+
+ var m = this;
+ if (m.params.sameHeaderMessageRule) return (_m$params5 = m.params).sameHeaderMessageRule.apply(_m$params5, arguments);
+ return false;
+ };
+
+ _proto.isSameFooterMessage = function isSameFooterMessage() {
+ var _m$params6;
+
+ var m = this;
+ if (m.params.sameFooterMessageRule) return (_m$params6 = m.params).sameFooterMessageRule.apply(_m$params6, arguments);
+ return false;
+ };
+
+ _proto.isSameAvatarMessage = function isSameAvatarMessage() {
+ var _m$params7;
+
+ var m = this;
+ if (m.params.sameAvatarMessageRule) return (_m$params7 = m.params).sameAvatarMessageRule.apply(_m$params7, arguments);
+ return false;
+ };
+
+ _proto.isCustomClassMessage = function isCustomClassMessage() {
+ var _m$params8;
+
+ var m = this;
+ if (m.params.customClassMessageRule) return (_m$params8 = m.params).customClassMessageRule.apply(_m$params8, arguments);
+ return undefined;
+ };
+
+ _proto.layout = function layout() {
+ var m = this;
+ m.$el.find('.message, .messages-title').each(function (messageEl, index) {
+ var $messageEl = (0, _dom.default)(messageEl);
+
+ if (!m.messages) {
+ m.messages = m.getMessagesData();
+ }
+
+ var classes = [];
+ var message = m.messages[index];
+ var previousMessage = m.messages[index - 1];
+ var nextMessage = m.messages[index + 1];
+
+ if (m.isFirstMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-first');
+ }
+
+ if (m.isLastMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-last');
+ }
+
+ if (m.isTailMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-tail');
+ }
+
+ if (m.isSameNameMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-same-name');
+ }
+
+ if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-same-header');
+ }
+
+ if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-same-footer');
+ }
+
+ if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {
+ classes.push('message-same-avatar');
+ }
+
+ var customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);
+
+ if (customMessageClasses && customMessageClasses.length) {
+ if (typeof customMessageClasses === 'string') {
+ customMessageClasses = customMessageClasses.split(' ');
+ }
+
+ customMessageClasses.forEach(function (customClass) {
+ classes.push(customClass);
+ });
+ }
+
+ $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');
+ classes.forEach(function (className) {
+ $messageEl.addClass(className);
+ });
+ });
+ };
+
+ _proto.clear = function clear() {
+ var m = this;
+ m.messages = [];
+ m.$el.html('');
+ };
+
+ _proto.removeMessage = function removeMessage(messageToRemove, layout) {
+ if (layout === void 0) {
+ layout = true;
+ }
+
+ var m = this; // Index or El
+
+ var index;
+ var $el;
+
+ if (typeof messageToRemove === 'number') {
+ index = messageToRemove;
+ $el = m.$el.find('.message, .messages-title').eq(index);
+ } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {
+ index = m.messages.indexOf(messageToRemove);
+ $el = m.$el.children().eq(index);
+ } else {
+ $el = (0, _dom.default)(messageToRemove);
+ index = $el.index();
+ }
+
+ if ($el.length === 0) {
+ return m;
+ }
+
+ $el.remove();
+ m.messages.splice(index, 1);
+ if (m.params.autoLayout && layout) m.layout();
+ return m;
+ };
+
+ _proto.removeMessages = function removeMessages(messagesToRemove, layout) {
+ if (layout === void 0) {
+ layout = true;
+ }
+
+ var m = this;
+
+ if (Array.isArray(messagesToRemove)) {
+ var messagesToRemoveEls = [];
+ messagesToRemove.forEach(function (messageToRemoveIndex) {
+ messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));
+ });
+ messagesToRemoveEls.forEach(function (messageToRemove) {
+ m.removeMessage(messageToRemove, false);
+ });
+ } else {
+ (0, _dom.default)(messagesToRemove).each(function (messageToRemove) {
+ m.removeMessage(messageToRemove, false);
+ });
+ }
+
+ if (m.params.autoLayout && layout) m.layout();
+ return m;
+ };
+
+ _proto.addMessage = function addMessage() {
+ var m = this;
+ var messageToAdd;
+ var animate;
+ var method;
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ if (typeof args[1] === 'boolean') {
+ messageToAdd = args[0];
+ animate = args[1];
+ method = args[2];
+ } else {
+ messageToAdd = args[0];
+ method = args[1];
+ animate = args[2];
+ }
+
+ if (typeof animate === 'undefined') {
+ animate = true;
+ }
+
+ if (typeof method === 'undefined') {
+ method = m.params.newMessagesFirst ? 'prepend' : 'append';
+ }
+
+ return m.addMessages([messageToAdd], animate, method);
+ };
+
+ _proto.setScrollData = function setScrollData() {
+ var m = this; // Define scroll positions before new messages added
+
+ var scrollHeightBefore = m.pageContentEl.scrollHeight;
+ var heightBefore = m.pageContentEl.offsetHeight;
+ var scrollBefore = m.pageContentEl.scrollTop;
+ m.scrollData = {
+ scrollHeightBefore: scrollHeightBefore,
+ heightBefore: heightBefore,
+ scrollBefore: scrollBefore
+ };
+ return {
+ scrollHeightBefore: scrollHeightBefore,
+ heightBefore: heightBefore,
+ scrollBefore: scrollBefore
+ };
+ };
+
+ _proto.addMessages = function addMessages() {
+ var m = this;
+ var messagesToAdd;
+ var animate;
+ var method;
+
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ if (typeof args[1] === 'boolean') {
+ messagesToAdd = args[0];
+ animate = args[1];
+ method = args[2];
+ } else {
+ messagesToAdd = args[0];
+ method = args[1];
+ animate = args[2];
+ }
+
+ if (typeof animate === 'undefined') {
+ animate = true;
+ }
+
+ if (typeof method === 'undefined') {
+ method = m.params.newMessagesFirst ? 'prepend' : 'append';
+ }
+
+ var _m$setScrollData = m.setScrollData(),
+ scrollHeightBefore = _m$setScrollData.scrollHeightBefore,
+ scrollBefore = _m$setScrollData.scrollBefore; // Add message to DOM and data
+
+
+ var messagesHTML = '';
+ var typingMessage = m.messages.filter(function (el) {
+ return el.isTyping;
+ })[0];
+ messagesToAdd.forEach(function (messageToAdd) {
+ if (typingMessage) {
+ if (method === 'append') {
+ m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);
+ } else {
+ m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);
+ }
+ } else {
+ m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);
+ }
+
+ messagesHTML += m.renderMessage(messageToAdd);
+ });
+ var $messagesEls = (0, _dom.default)(messagesHTML);
+
+ if (animate) {
+ if (method === 'append' && !m.params.newMessagesFirst) {
+ $messagesEls.addClass('message-appear-from-bottom');
+ }
+
+ if (method === 'prepend' && m.params.newMessagesFirst) {
+ $messagesEls.addClass('message-appear-from-top');
+ }
+ }
+
+ if (typingMessage) {
+ if (method === 'append') {
+ $messagesEls.insertBefore(m.$el.find('.message-typing'));
+ } else {
+ $messagesEls.insertAfter(m.$el.find('.message-typing'));
+ }
+ } else {
+ m.$el[method]($messagesEls);
+ } // Layout
+
+
+ if (m.params.autoLayout) m.layout();
+
+ if (method === 'prepend' && !typingMessage) {
+ m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);
+ }
+
+ if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {
+ m.scrollWithEdgeCheck(animate);
+ }
+
+ return m;
+ };
+
+ _proto.showTyping = function showTyping(message) {
+ if (message === void 0) {
+ message = {};
+ }
+
+ var m = this;
+ var typingMessage = m.messages.filter(function (el) {
+ return el.isTyping;
+ })[0];
+
+ if (typingMessage) {
+ m.removeMessage(m.messages.indexOf(typingMessage));
+ }
+
+ m.addMessage((0, _utils.extend)({
+ type: 'received',
+ isTyping: true
+ }, message));
+ return m;
+ };
+
+ _proto.hideTyping = function hideTyping() {
+ var m = this;
+ var typingMessageIndex;
+ var typingFound;
+ m.messages.forEach(function (message, index) {
+ if (message.isTyping) typingMessageIndex = index;
+ });
+
+ if (typeof typingMessageIndex !== 'undefined') {
+ if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {
+ typingFound = true;
+ m.removeMessage(typingMessageIndex);
+ }
+ }
+
+ if (!typingFound) {
+ var $typingMessageEl = m.$el.find('.message-typing');
+
+ if ($typingMessageEl.length) {
+ m.removeMessage($typingMessageEl);
+ }
+ }
+
+ return m;
+ };
+
+ _proto.scrollWithEdgeCheck = function scrollWithEdgeCheck(animate) {
+ var m = this;
+ var _m$scrollData = m.scrollData,
+ scrollBefore = _m$scrollData.scrollBefore,
+ scrollHeightBefore = _m$scrollData.scrollHeightBefore,
+ heightBefore = _m$scrollData.heightBefore;
+
+ if (m.params.scrollMessagesOnEdge) {
+ var onEdge = false;
+
+ if (m.params.newMessagesFirst && scrollBefore === 0) {
+ onEdge = true;
+ }
+
+ if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {
+ onEdge = true;
+ }
+
+ if (onEdge) m.scroll(animate ? undefined : 0);
+ } else {
+ m.scroll(animate ? undefined : 0);
+ }
+ };
+
+ _proto.scroll = function scroll(duration, scrollTop) {
+ if (duration === void 0) {
+ duration = 300;
+ }
+
+ var m = this;
+ var currentScroll = m.pageContentEl.scrollTop;
+ var newScrollTop;
+ if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {
+ newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;
+ if (newScrollTop === currentScroll) return m;
+ }
+ m.$pageContentEl.scrollTop(newScrollTop, duration);
+ return m;
+ };
+
+ _proto.init = function init() {
+ var m = this;
+
+ if (!m.messages || m.messages.length === 0) {
+ m.messages = m.getMessagesData();
+ }
+
+ if (m.params.messages && m.params.messages.length) {
+ m.renderMessages();
+ }
+
+ if (m.params.autoLayout) m.layout();
+ if (m.params.scrollMessages) m.scroll(0);
+ };
+
+ _proto.destroy = function destroy() {
+ var m = this;
+ m.emit('local::beforeDestroy messagesBeforeDestroy', m);
+ m.$el.trigger('messages:beforedestroy');
+
+ if (m.$el[0]) {
+ m.$el[0].f7Messages = null;
+ delete m.$el[0].f7Messages;
+ }
+
+ (0, _utils.deleteProps)(m);
+ };
+
+ return Messages;
+}(_class.default);
+
+var _default = Messages;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/messages/messages.js b/www/assets/framework7/cjs/components/messages/messages.js
new file mode 100644
index 000000000..57699124d
--- /dev/null
+++ b/www/assets/framework7/cjs/components/messages/messages.js
@@ -0,0 +1,76 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _messagesClass = _interopRequireDefault(require("./messages-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'messages',
+ static: {
+ Messages: _messagesClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.messages = (0, _constructorMethods.default)({
+ defaultSelector: '.messages',
+ constructor: _messagesClass.default,
+ app: app,
+ domProp: 'f7Messages',
+ addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')
+ });
+ },
+ on: {
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.messages-init').each(function (messagesEl) {
+ app.messages.destroy(messagesEl);
+ });
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.messages-init').each(function (messagesEl) {
+ app.messages.create({
+ el: messagesEl
+ });
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.messages-init').each(function (messagesEl) {
+ app.messages.destroy(messagesEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.messages-init').each(function (messagesEl) {
+ app.messages.create({
+ el: messagesEl
+ });
+ });
+ }
+ },
+ vnode: {
+ 'messages-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var messagesEl = vnode.elm;
+ app.messages.create({
+ el: messagesEl
+ });
+ },
+ destroy: function destroy(vnode) {
+ var app = this;
+ var messagesEl = vnode.elm;
+ app.messages.destroy(messagesEl);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/modal/custom-modal-class.js b/www/assets/framework7/cjs/components/modal/custom-modal-class.js
new file mode 100644
index 000000000..1c0b451d5
--- /dev/null
+++ b/www/assets/framework7/cjs/components/modal/custom-modal-class.js
@@ -0,0 +1,99 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _modalClass = _interopRequireDefault(require("./modal-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var CustomModal = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(CustomModal, _Modal);
+
+ function CustomModal(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ backdrop: true,
+ closeByBackdropClick: true,
+ on: {}
+ }, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var customModal = _assertThisInitialized(_this);
+
+ customModal.params = extendedParams; // Find Element
+
+ var $el;
+
+ if (!customModal.params.el) {
+ $el = (0, _dom.default)(customModal.params.content);
+ } else {
+ $el = (0, _dom.default)(customModal.params.el);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return customModal.destroy() || _assertThisInitialized(_this);
+ }
+
+ var $backdropEl;
+
+ if (customModal.params.backdrop) {
+ $backdropEl = app.$el.children('.custom-modal-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+ app.$el.append($backdropEl);
+ }
+ }
+
+ function handleClick(e) {
+ if (!customModal || customModal.destroyed) return;
+
+ if ($backdropEl && e.target === $backdropEl[0]) {
+ customModal.close();
+ }
+ }
+
+ customModal.on('customModalOpened', function () {
+ if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
+ app.on('click', handleClick);
+ }
+ });
+ customModal.on('customModalClose', function () {
+ if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
+ app.off('click', handleClick);
+ }
+ });
+ (0, _utils.extend)(customModal, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ type: 'customModal'
+ });
+ $el[0].f7Modal = customModal;
+ return customModal || _assertThisInitialized(_this);
+ }
+
+ return CustomModal;
+}(_modalClass.default);
+
+var _default = CustomModal;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/modal/modal-class.js b/www/assets/framework7/cjs/components/modal/modal-class.js
new file mode 100644
index 000000000..f8a312778
--- /dev/null
+++ b/www/assets/framework7/cjs/components/modal/modal-class.js
@@ -0,0 +1,277 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var openedModals = [];
+var dialogsQueue = [];
+
+function clearDialogsQueue() {
+ if (dialogsQueue.length === 0) return;
+ var dialog = dialogsQueue.shift();
+ dialog.open();
+}
+
+var Modal = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Modal, _Framework7Class);
+
+ function Modal(app, params) {
+ var _this;
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var modal = _assertThisInitialized(_this);
+
+ var defaults = {}; // Extend defaults with modules params
+
+ modal.useModulesParams(defaults);
+ modal.params = (0, _utils.extend)(defaults, params);
+ modal.opened = false;
+ var $containerEl = modal.params.containerEl ? (0, _dom.default)(modal.params.containerEl).eq(0) : app.$el;
+ if (!$containerEl.length) $containerEl = app.$el;
+ modal.$containerEl = $containerEl;
+ modal.containerEl = $containerEl[0]; // Install Modules
+
+ modal.useModules();
+ return _assertThisInitialized(_this) || _assertThisInitialized(_this);
+ }
+
+ var _proto = Modal.prototype;
+
+ _proto.onOpen = function onOpen() {
+ var modal = this;
+ modal.opened = true;
+ openedModals.push(modal);
+ (0, _dom.default)('html').addClass("with-modal-" + modal.type.toLowerCase());
+ modal.$el.trigger("modal:open " + modal.type.toLowerCase() + ":open");
+ modal.emit("local::open modalOpen " + modal.type + "Open", modal);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var modal = this;
+ modal.$el.trigger("modal:opened " + modal.type.toLowerCase() + ":opened");
+ modal.emit("local::opened modalOpened " + modal.type + "Opened", modal);
+ };
+
+ _proto.onClose = function onClose() {
+ var modal = this;
+ modal.opened = false;
+ if (!modal.type || !modal.$el) return;
+ openedModals.splice(openedModals.indexOf(modal), 1);
+ (0, _dom.default)('html').removeClass("with-modal-" + modal.type.toLowerCase());
+ modal.$el.trigger("modal:close " + modal.type.toLowerCase() + ":close");
+ modal.emit("local::close modalClose " + modal.type + "Close", modal);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var modal = this;
+ if (!modal.type || !modal.$el) return;
+ modal.$el.removeClass('modal-out');
+ modal.$el.hide();
+ modal.$el.trigger("modal:closed " + modal.type.toLowerCase() + ":closed");
+ modal.emit("local::closed modalClosed " + modal.type + "Closed", modal);
+ };
+
+ _proto.open = function open(animateModal) {
+ var modal = this;
+ var document = (0, _ssrWindow.getDocument)();
+ var app = modal.app;
+ var $el = modal.$el;
+ var $backdropEl = modal.$backdropEl;
+ var type = modal.type;
+ var animate = true;
+ if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
+ animate = modal.params.animate;
+ }
+
+ if (!$el || $el.hasClass('modal-in')) {
+ if (animateModal === false && $el[0] && type !== 'dialog') {
+ $el[0].style.display = 'block';
+ }
+
+ return modal;
+ }
+
+ if (type === 'dialog' && app.params.modal.queueDialogs) {
+ var pushToQueue;
+
+ if ((0, _dom.default)('.dialog.modal-in').length > 0) {
+ pushToQueue = true;
+ } else if (openedModals.length > 0) {
+ openedModals.forEach(function (openedModal) {
+ if (openedModal.type === 'dialog') pushToQueue = true;
+ });
+ }
+
+ if (pushToQueue) {
+ dialogsQueue.push(modal);
+ return modal;
+ }
+ }
+
+ var $modalParentEl = $el.parent();
+ var wasInDom = $el.parents(document).length > 0;
+
+ if (!$modalParentEl.is(modal.$containerEl)) {
+ modal.$containerEl.append($el);
+ modal.once(type + "Closed", function () {
+ if (wasInDom) {
+ $modalParentEl.append($el);
+ } else {
+ $el.remove();
+ }
+ });
+ } // Show Modal
+
+
+ $el.show();
+ /* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
+
+ modal._clientLeft = $el[0].clientLeft; // Modal
+
+ function transitionEnd() {
+ if ($el.hasClass('modal-out')) {
+ modal.onClosed();
+ } else if ($el.hasClass('modal-in')) {
+ modal.onOpened();
+ }
+ }
+
+ if (animate) {
+ if ($backdropEl) {
+ $backdropEl.removeClass('not-animated');
+ $backdropEl.addClass('backdrop-in');
+ }
+
+ $el.animationEnd(function () {
+ transitionEnd();
+ });
+ $el.transitionEnd(function () {
+ transitionEnd();
+ });
+ $el.removeClass('modal-out not-animated').addClass('modal-in');
+ modal.onOpen();
+ } else {
+ if ($backdropEl) {
+ $backdropEl.addClass('backdrop-in not-animated');
+ }
+
+ $el.removeClass('modal-out').addClass('modal-in not-animated');
+ modal.onOpen();
+ modal.onOpened();
+ }
+
+ return modal;
+ };
+
+ _proto.close = function close(animateModal) {
+ var modal = this;
+ var $el = modal.$el;
+ var $backdropEl = modal.$backdropEl;
+ var animate = true;
+ if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
+ animate = modal.params.animate;
+ }
+
+ if (!$el || !$el.hasClass('modal-in')) {
+ if (dialogsQueue.indexOf(modal) >= 0) {
+ dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);
+ }
+
+ return modal;
+ } // backdrop
+
+
+ if ($backdropEl) {
+ var needToHideBackdrop = true;
+
+ if (modal.type === 'popup') {
+ modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(function (popupEl) {
+ var popupInstance = popupEl.f7Modal;
+ if (!popupInstance) return;
+
+ if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {
+ needToHideBackdrop = false;
+ }
+ });
+ }
+
+ if (needToHideBackdrop) {
+ $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
+ $backdropEl.removeClass('backdrop-in');
+ }
+ } // Modal
+
+
+ $el[animate ? 'removeClass' : 'addClass']('not-animated');
+
+ function transitionEnd() {
+ if ($el.hasClass('modal-out')) {
+ modal.onClosed();
+ } else if ($el.hasClass('modal-in')) {
+ modal.onOpened();
+ }
+ }
+
+ if (animate) {
+ $el.animationEnd(function () {
+ transitionEnd();
+ });
+ $el.transitionEnd(function () {
+ transitionEnd();
+ });
+ $el.removeClass('modal-in').addClass('modal-out'); // Emit close
+
+ modal.onClose();
+ } else {
+ $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out'); // Emit close
+
+ modal.onClose();
+ modal.onClosed();
+ }
+
+ if (modal.type === 'dialog') {
+ clearDialogsQueue();
+ }
+
+ return modal;
+ };
+
+ _proto.destroy = function destroy() {
+ var modal = this;
+ if (modal.destroyed) return;
+ modal.emit("local::beforeDestroy modalBeforeDestroy " + modal.type + "BeforeDestroy", modal);
+
+ if (modal.$el) {
+ modal.$el.trigger("modal:beforedestroy " + modal.type.toLowerCase() + ":beforedestroy");
+
+ if (modal.$el.length && modal.$el[0].f7Modal) {
+ delete modal.$el[0].f7Modal;
+ }
+ }
+
+ (0, _utils.deleteProps)(modal);
+ modal.destroyed = true;
+ };
+
+ return Modal;
+}(_class.default);
+
+var _default = Modal;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/modal/modal.js b/www/assets/framework7/cjs/components/modal/modal.js
new file mode 100644
index 000000000..560b651d9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/modal/modal.js
@@ -0,0 +1,32 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _modalClass = _interopRequireDefault(require("./modal-class"));
+
+var _customModalClass = _interopRequireDefault(require("./custom-modal-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'modal',
+ static: {
+ Modal: _modalClass.default,
+ CustomModal: _customModalClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.customModal = {
+ create: function create(params) {
+ return new _customModalClass.default(app, params);
+ }
+ };
+ },
+ params: {
+ modal: {
+ queueDialogs: true
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/navbar/navbar.js b/www/assets/framework7/cjs/components/navbar/navbar.js
new file mode 100644
index 000000000..6973acbd3
--- /dev/null
+++ b/www/assets/framework7/cjs/components/navbar/navbar.js
@@ -0,0 +1,833 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Navbar = {
+ size: function size(el) {
+ var app = this;
+ var $el = (0, _dom.default)(el);
+
+ if ($el.hasClass('navbars')) {
+ $el = $el.children('.navbar').each(function (navbarEl) {
+ app.navbar.size(navbarEl);
+ });
+ return;
+ }
+
+ var $innerEl = $el.children('.navbar-inner');
+ if (!$innerEl.length) return;
+ var needCenterTitle = $innerEl.hasClass('navbar-inner-centered-title') || app.params.navbar[app.theme + "CenterTitle"];
+ var needLeftTitle = app.theme === 'ios' && !app.params.navbar[app.theme + "CenterTitle"];
+ if (!needCenterTitle && !needLeftTitle) return;
+
+ if ($el.hasClass('stacked') || $el.parents('.stacked').length > 0 || $el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {
+ return;
+ }
+
+ if (app.theme !== 'ios' && app.params.navbar[app.theme + "CenterTitle"]) {
+ $innerEl.addClass('navbar-inner-centered-title');
+ }
+
+ if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {
+ $innerEl.addClass('navbar-inner-left-title');
+ }
+
+ var $viewEl = $el.parents('.view').eq(0);
+ var left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');
+ var right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');
+ var title = $innerEl.children('.title');
+ var subnavbar = $innerEl.children('.subnavbar');
+ var noLeft = left.length === 0;
+ var noRight = right.length === 0;
+ var leftWidth = noLeft ? 0 : left.outerWidth(true);
+ var rightWidth = noRight ? 0 : right.outerWidth(true);
+ var titleWidth = title.outerWidth(true);
+ var navbarStyles = $innerEl.styles();
+ var navbarWidth = $innerEl[0].offsetWidth;
+ var navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);
+ var isPrevious = $el.hasClass('navbar-previous');
+ var sliding = $innerEl.hasClass('sliding');
+ var router;
+ var dynamicNavbar;
+
+ if ($viewEl.length > 0 && $viewEl[0].f7View) {
+ router = $viewEl[0].f7View.router;
+ dynamicNavbar = router && router.dynamicNavbar;
+ }
+
+ var currLeft;
+ var diff;
+
+ if (noRight) {
+ currLeft = navbarInnerWidth - titleWidth;
+ }
+
+ if (noLeft) {
+ currLeft = 0;
+ }
+
+ if (!noLeft && !noRight) {
+ currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;
+ }
+
+ var requiredLeft = (navbarInnerWidth - titleWidth) / 2;
+
+ if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {
+ if (requiredLeft < leftWidth) {
+ requiredLeft = leftWidth;
+ }
+
+ if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {
+ requiredLeft = navbarInnerWidth - rightWidth - titleWidth;
+ }
+
+ diff = requiredLeft - currLeft;
+ } else {
+ diff = 0;
+ } // RTL inverter
+
+
+ var inverter = app.rtl ? -1 : 1;
+
+ if (dynamicNavbar && app.theme === 'ios') {
+ if (title.hasClass('sliding') || title.length > 0 && sliding) {
+ var titleLeftOffset = -(currLeft + diff) * inverter;
+ var titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;
+
+ if (isPrevious) {
+ if (router && router.params.iosAnimateNavbarBackIcon) {
+ var activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');
+
+ if (activeNavbarBackLink.length > 0) {
+ titleLeftOffset += activeNavbarBackLink[0].offsetLeft;
+ }
+ }
+ }
+
+ title[0].f7NavbarLeftOffset = titleLeftOffset;
+ title[0].f7NavbarRightOffset = titleRightOffset;
+ }
+
+ if (!noLeft && (left.hasClass('sliding') || sliding)) {
+ if (app.rtl) {
+ left[0].f7NavbarLeftOffset = -(navbarInnerWidth - left[0].offsetWidth) / 2 * inverter;
+ left[0].f7NavbarRightOffset = leftWidth * inverter;
+ } else {
+ left[0].f7NavbarLeftOffset = -leftWidth;
+ left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;
+
+ if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {
+ if (left.find('.back .icon ~ span').length) {
+ var leftOffset = left[0].f7NavbarLeftOffset;
+ var rightOffset = left[0].f7NavbarRightOffset;
+ left[0].f7NavbarLeftOffset = 0;
+ left[0].f7NavbarRightOffset = 0;
+ left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;
+ left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;
+ }
+ }
+ }
+ }
+
+ if (!noRight && (right.hasClass('sliding') || sliding)) {
+ if (app.rtl) {
+ right[0].f7NavbarLeftOffset = -rightWidth * inverter;
+ right[0].f7NavbarRightOffset = (navbarInnerWidth - right[0].offsetWidth) / 2 * inverter;
+ } else {
+ right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;
+ right[0].f7NavbarRightOffset = rightWidth;
+ }
+ }
+
+ if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {
+ subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;
+ subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;
+ }
+ } // Center title
+
+
+ if (needCenterTitle) {
+ var titleLeft = diff;
+ if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;
+ title.css({
+ left: titleLeft + "px"
+ });
+ }
+ },
+ hide: function hide(el, animate, hideStatusbar, hideOnlyCurrent) {
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ if (hideStatusbar === void 0) {
+ hideStatusbar = false;
+ }
+
+ if (hideOnlyCurrent === void 0) {
+ hideOnlyCurrent = false;
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ var isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;
+ if (isDynamic) $el = $el.parents('.navbars');
+ if (!$el.length) return;
+ if ($el.hasClass('navbar-hidden')) return;
+ var className = "navbar-hidden" + (animate ? ' navbar-transitioning' : '');
+ var currentIsLarge = isDynamic ? $el.find('.navbar-current .title-large').length : $el.find('.title-large').length;
+
+ if (currentIsLarge) {
+ className += ' navbar-large-hidden';
+ }
+
+ if (hideStatusbar) {
+ className += ' navbar-hidden-statusbar';
+ }
+
+ $el.transitionEnd(function () {
+ $el.removeClass('navbar-transitioning');
+ });
+ $el.addClass(className);
+
+ if (isDynamic) {
+ $el.children('.navbar').each(function (subEl) {
+ (0, _dom.default)(subEl).trigger('navbar:hide');
+ app.emit('navbarHide', subEl);
+ });
+ } else {
+ $el.trigger('navbar:hide');
+ app.emit('navbarHide', $el[0]);
+ }
+ },
+ show: function show(el, animate, hideOnlyCurrent) {
+ if (el === void 0) {
+ el = '.navbar-hidden';
+ }
+
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ if (hideOnlyCurrent === void 0) {
+ hideOnlyCurrent = false;
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ var isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;
+ if (isDynamic) $el = $el.parents('.navbars');
+ if (!$el.length) return;
+ if (!$el.hasClass('navbar-hidden')) return;
+
+ if (animate) {
+ $el.addClass('navbar-transitioning');
+ $el.transitionEnd(function () {
+ $el.removeClass('navbar-transitioning');
+ });
+ }
+
+ $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');
+
+ if (isDynamic) {
+ $el.children('.navbar').each(function (subEl) {
+ (0, _dom.default)(subEl).trigger('navbar:show');
+ app.emit('navbarShow', subEl);
+ });
+ } else {
+ $el.trigger('navbar:show');
+ app.emit('navbarShow', $el[0]);
+ }
+ },
+ getElByPage: function getElByPage(page) {
+ var $pageEl;
+ var $navbarEl;
+ var pageData;
+
+ if (page.$navbarEl || page.$el) {
+ pageData = page;
+ $pageEl = page.$el;
+ } else {
+ $pageEl = (0, _dom.default)(page);
+ if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;
+ }
+
+ if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {
+ $navbarEl = pageData.$navbarEl;
+ } else if ($pageEl) {
+ $navbarEl = $pageEl.children('.navbar');
+ }
+
+ if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;
+ return $navbarEl[0];
+ },
+ getPageByEl: function getPageByEl(navbarEl) {
+ var $navbarEl = (0, _dom.default)(navbarEl);
+
+ if ($navbarEl.parents('.page').length) {
+ return $navbarEl.parents('.page')[0];
+ }
+
+ var pageEl;
+ $navbarEl.parents('.view').find('.page').each(function (el) {
+ if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {
+ pageEl = el;
+ }
+ });
+ return pageEl;
+ },
+ collapseLargeTitle: function collapseLargeTitle(navbarEl) {
+ var app = this;
+ var $navbarEl = (0, _dom.default)(navbarEl);
+
+ if ($navbarEl.hasClass('navbars')) {
+ $navbarEl = $navbarEl.find('.navbar');
+
+ if ($navbarEl.length > 1) {
+ $navbarEl = (0, _dom.default)(navbarEl).find('.navbar-large.navbar-current');
+ }
+
+ if ($navbarEl.length > 1 || !$navbarEl.length) {
+ return;
+ }
+ }
+
+ var $pageEl = (0, _dom.default)(app.navbar.getPageByEl($navbarEl));
+ $navbarEl.addClass('navbar-large-collapsed');
+ $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');
+ app.emit('pageNavbarLargeCollapsed', $pageEl[0]);
+ $navbarEl.trigger('navbar:collapse');
+ app.emit('navbarCollapse', $navbarEl[0]);
+ },
+ expandLargeTitle: function expandLargeTitle(navbarEl) {
+ var app = this;
+ var $navbarEl = (0, _dom.default)(navbarEl);
+
+ if ($navbarEl.hasClass('navbars')) {
+ $navbarEl = $navbarEl.find('.navbar-large');
+
+ if ($navbarEl.length > 1) {
+ $navbarEl = (0, _dom.default)(navbarEl).find('.navbar-large.navbar-current');
+ }
+
+ if ($navbarEl.length > 1 || !$navbarEl.length) {
+ return;
+ }
+ }
+
+ var $pageEl = (0, _dom.default)(app.navbar.getPageByEl($navbarEl));
+ $navbarEl.removeClass('navbar-large-collapsed');
+ $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');
+ app.emit('pageNavbarLargeExpanded', $pageEl[0]);
+ $navbarEl.trigger('navbar:expand');
+ app.emit('navbarExpand', $navbarEl[0]);
+ },
+ toggleLargeTitle: function toggleLargeTitle(navbarEl) {
+ var app = this;
+ var $navbarEl = (0, _dom.default)(navbarEl);
+
+ if ($navbarEl.hasClass('navbars')) {
+ $navbarEl = $navbarEl.find('.navbar-large');
+
+ if ($navbarEl.length > 1) {
+ $navbarEl = (0, _dom.default)(navbarEl).find('.navbar-large.navbar-current');
+ }
+
+ if ($navbarEl.length > 1 || !$navbarEl.length) {
+ return;
+ }
+ }
+
+ if ($navbarEl.hasClass('navbar-large-collapsed')) {
+ app.navbar.expandLargeTitle($navbarEl);
+ } else {
+ app.navbar.collapseLargeTitle($navbarEl);
+ }
+ },
+ initNavbarOnScroll: function initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {
+ var app = this;
+ var support = (0, _getSupport.getSupport)();
+ var $pageEl = (0, _dom.default)(pageEl);
+ var $navbarEl = (0, _dom.default)(navbarEl);
+ var $titleLargeEl = $navbarEl.find('.title-large');
+ var isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');
+ var navbarHideHeight = 44;
+ var snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;
+ var snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;
+ var previousScrollTop;
+ var currentScrollTop;
+ var scrollHeight;
+ var offsetHeight;
+ var reachEnd;
+ var action;
+ var navbarHidden;
+ var navbarCollapsed;
+ var navbarTitleLargeHeight;
+ var navbarOffsetHeight;
+
+ if (needCollapse || needHide && isLarge) {
+ navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');
+
+ if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {
+ navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);
+
+ if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {
+ navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;
+ } else if (Number.isNaN(navbarTitleLargeHeight)) {
+ if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 48;else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;
+ }
+ } else if ($titleLargeEl.length) {
+ navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;
+ } else {
+ // eslint-disable-next-line
+ if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 48;else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;
+ }
+ }
+
+ if (needHide && isLarge) {
+ navbarHideHeight += navbarTitleLargeHeight;
+ }
+
+ var scrollChanged;
+ var scrollContent;
+ var scrollTimeoutId;
+ var touchEndTimeoutId;
+ var touchSnapTimeout = 70;
+ var desktopSnapTimeout = 300;
+
+ function calcScrollableDistance() {
+ $pageEl.find('.page-content').each(function (pageContentEl) {
+ pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;
+ });
+ }
+
+ function snapLargeNavbar() {
+ var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
+ if (inSearchbarExpanded) return;
+ if (!scrollContent || currentScrollTop < 0) return;
+
+ if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {
+ (0, _dom.default)(scrollContent).scrollTop(navbarTitleLargeHeight, 100);
+ } else if (currentScrollTop < navbarTitleLargeHeight) {
+ (0, _dom.default)(scrollContent).scrollTop(0, 200);
+ }
+ }
+
+ function snapTransparentNavbar() {
+ var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
+ if (inSearchbarExpanded) return;
+ if (!scrollContent || currentScrollTop < 0) return;
+
+ if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {
+ (0, _dom.default)(scrollContent).scrollTop(navbarOffsetHeight, 100);
+ } else if (currentScrollTop < navbarOffsetHeight) {
+ (0, _dom.default)(scrollContent).scrollTop(0, 200);
+ }
+ }
+
+ function handleNavbarTransparent() {
+ var isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');
+ var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
+ if (inSearchbarExpanded || isHidden) return;
+
+ if (!navbarOffsetHeight) {
+ navbarOffsetHeight = navbarEl.offsetHeight;
+ }
+
+ var opacity = currentScrollTop / navbarOffsetHeight;
+ var notTransparent = $navbarEl.hasClass('navbar-transparent-visible');
+ opacity = Math.max(Math.min(opacity, 1), 0);
+
+ if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {
+ $navbarEl.find('.navbar-bg, .title').css('opacity', '');
+ return;
+ }
+
+ if (notTransparent && opacity === 0) {
+ $navbarEl.trigger('navbar:transparenthide');
+ app.emit('navbarTransparentHide', $navbarEl[0]);
+ $navbarEl.removeClass('navbar-transparent-visible');
+ $navbarEl.find('.navbar-bg, .title').css('opacity', '');
+ return;
+ }
+
+ if (!notTransparent && opacity === 1) {
+ $navbarEl.trigger('navbar:transparentshow');
+ app.emit('navbarTransparentShow', $navbarEl[0]);
+ $navbarEl.addClass('navbar-transparent-visible');
+ $navbarEl.find('.navbar-bg, .title').css('opacity', '');
+ return;
+ }
+
+ $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);
+
+ if (snapPageScrollToTransparentNavbar) {
+ if (!support.touch) {
+ clearTimeout(scrollTimeoutId);
+ scrollTimeoutId = setTimeout(function () {
+ snapTransparentNavbar();
+ }, desktopSnapTimeout);
+ } else if (touchEndTimeoutId) {
+ clearTimeout(touchEndTimeoutId);
+ touchEndTimeoutId = null;
+ touchEndTimeoutId = setTimeout(function () {
+ snapTransparentNavbar();
+ clearTimeout(touchEndTimeoutId);
+ touchEndTimeoutId = null;
+ }, touchSnapTimeout);
+ }
+ }
+ }
+
+ var previousCollapseProgress = null;
+ var collapseProgress = null;
+
+ function handleLargeNavbarCollapse(pageContentEl) {
+ var isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');
+ if (isHidden) return;
+ var isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent') || $navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent');
+ previousCollapseProgress = collapseProgress;
+ var scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);
+ collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);
+ var previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;
+ var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
+ if (inSearchbarExpanded) return;
+ navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');
+
+ if (collapseProgress === 0 && navbarCollapsed) {
+ app.navbar.expandLargeTitle($navbarEl[0]);
+ } else if (collapseProgress === 1 && !navbarCollapsed) {
+ app.navbar.collapseLargeTitle($navbarEl[0]);
+ }
+
+ if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {
+ if (app.theme === 'md') {
+ $navbarEl.find('.navbar-inner').css('overflow', '');
+ }
+
+ $navbarEl.find('.title').css('opacity', '');
+ $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');
+
+ if (isLargeTransparent) {
+ $navbarEl.find('.navbar-bg').css('opacity', '');
+ } else {
+ $navbarEl.find('.navbar-bg').css('transform', '');
+ }
+ } else if (collapseProgress > 0 && collapseProgress < 1) {
+ if (app.theme === 'md') {
+ $navbarEl.find('.navbar-inner').css('overflow', 'visible');
+ }
+
+ $navbarEl.find('.title').css('opacity', collapseProgress);
+ $navbarEl.find('.title-large-text, .subnavbar').css('transform', "translate3d(0px, " + -1 * collapseProgress * navbarTitleLargeHeight + "px, 0)");
+
+ if (isLargeTransparent) {
+ $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);
+ } else {
+ $navbarEl.find('.navbar-bg').css('transform', "translate3d(0px, " + -1 * collapseProgress * navbarTitleLargeHeight + "px, 0)");
+ }
+ }
+
+ if (snapPageScrollToLargeTitle) {
+ if (!support.touch) {
+ clearTimeout(scrollTimeoutId);
+ scrollTimeoutId = setTimeout(function () {
+ snapLargeNavbar();
+ }, desktopSnapTimeout);
+ } else if (touchEndTimeoutId) {
+ clearTimeout(touchEndTimeoutId);
+ touchEndTimeoutId = null;
+ touchEndTimeoutId = setTimeout(function () {
+ snapLargeNavbar();
+ clearTimeout(touchEndTimeoutId);
+ touchEndTimeoutId = null;
+ }, touchSnapTimeout);
+ }
+ }
+ }
+
+ function handleTitleHideShow() {
+ if ($pageEl.hasClass('page-with-card-opened')) return;
+ scrollHeight = scrollContent.scrollHeight;
+ offsetHeight = scrollContent.offsetHeight;
+ reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
+ navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');
+
+ if (reachEnd) {
+ if (app.params.navbar.showOnPageScrollEnd) {
+ action = 'show';
+ }
+ } else if (previousScrollTop > currentScrollTop) {
+ if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {
+ action = 'show';
+ } else {
+ action = 'hide';
+ }
+ } else if (currentScrollTop > navbarHideHeight) {
+ action = 'hide';
+ } else {
+ action = 'show';
+ }
+
+ if (action === 'show' && navbarHidden) {
+ app.navbar.show($navbarEl, true, true);
+ navbarHidden = false;
+ } else if (action === 'hide' && !navbarHidden) {
+ app.navbar.hide($navbarEl, true, false, true);
+ navbarHidden = true;
+ }
+
+ previousScrollTop = currentScrollTop;
+ }
+
+ function handleScroll(e) {
+ scrollContent = this;
+
+ if (e && e.target && e.target !== scrollContent) {
+ return;
+ }
+
+ currentScrollTop = scrollContent.scrollTop;
+ scrollChanged = currentScrollTop;
+
+ if (needCollapse) {
+ handleLargeNavbarCollapse(scrollContent);
+ } else if (needTransparent) {
+ handleNavbarTransparent();
+ }
+
+ if ($pageEl.hasClass('page-previous')) return;
+
+ if (needHide) {
+ handleTitleHideShow();
+ }
+ }
+
+ function handeTouchStart() {
+ scrollChanged = false;
+ }
+
+ function handleTouchEnd() {
+ clearTimeout(touchEndTimeoutId);
+ touchEndTimeoutId = null;
+ touchEndTimeoutId = setTimeout(function () {
+ if (scrollChanged !== false) {
+ if (needTransparent && !needCollapse) {
+ snapTransparentNavbar();
+ } else {
+ snapLargeNavbar();
+ }
+
+ clearTimeout(touchEndTimeoutId);
+ touchEndTimeoutId = null;
+ }
+ }, touchSnapTimeout);
+ }
+
+ $pageEl.on('scroll', '.page-content', handleScroll, true);
+
+ if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {
+ app.on('touchstart:passive', handeTouchStart);
+ app.on('touchend:passive', handleTouchEnd);
+ }
+
+ calcScrollableDistance();
+
+ if (needCollapse || needTransparent) {
+ $pageEl.find('.page-content').each(function (pageContentEl) {
+ if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);
+ });
+ }
+
+ app.on('resize', calcScrollableDistance);
+
+ $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {
+ app.off('resize', calcScrollableDistance);
+ delete $pageEl[0].f7DetachNavbarScrollHandlers;
+ $pageEl.off('scroll', '.page-content', handleScroll, true);
+
+ if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {
+ app.off('touchstart:passive', handeTouchStart);
+ app.off('touchend:passive', handleTouchEnd);
+ }
+ };
+ }
+};
+var _default = {
+ name: 'navbar',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ navbar: Navbar
+ });
+ },
+ params: {
+ navbar: {
+ scrollTopOnTitleClick: true,
+ iosCenterTitle: true,
+ mdCenterTitle: false,
+ auroraCenterTitle: true,
+ hideOnPageScroll: false,
+ showOnPageScrollEnd: true,
+ showOnPageScrollTop: true,
+ collapseLargeTitleOnScroll: true,
+ snapPageScrollToLargeTitle: true,
+ snapPageScrollToTransparentNavbar: true
+ }
+ },
+ on: {
+ 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {
+ var app = this;
+ (0, _dom.default)('.navbar').each(function (navbarEl) {
+ app.navbar.size(navbarEl);
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ if (page.$el[0].f7DetachNavbarScrollHandlers) {
+ page.$el[0].f7DetachNavbarScrollHandlers();
+ }
+ },
+ pageBeforeIn: function pageBeforeIn(page) {
+ var app = this;
+ if (app.theme !== 'ios') return;
+ var $navbarsEl;
+ var view = page.$el.parents('.view')[0].f7View;
+ var navbarEl = app.navbar.getElByPage(page);
+
+ if (!navbarEl) {
+ $navbarsEl = page.$el.parents('.view').children('.navbars');
+ } else {
+ $navbarsEl = (0, _dom.default)(navbarEl).parents('.navbars');
+ }
+
+ if (page.$el.hasClass('no-navbar') || view.router.dynamicNavbar && !navbarEl) {
+ var animate = !!(page.pageFrom && page.router.history.length > 0);
+ app.navbar.hide($navbarsEl, animate);
+ } else {
+ app.navbar.show($navbarsEl);
+ }
+ },
+ pageReinit: function pageReinit(page) {
+ var app = this;
+ var $navbarEl = (0, _dom.default)(app.navbar.getElByPage(page));
+ if (!$navbarEl || $navbarEl.length === 0) return;
+ app.navbar.size($navbarEl);
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ var $navbarEl = (0, _dom.default)(app.navbar.getElByPage(page));
+ if (!$navbarEl || $navbarEl.length === 0) return; // Size
+
+ app.navbar.size($navbarEl); // Need Collapse On Scroll
+
+ var needCollapseOnScrollHandler;
+
+ if ($navbarEl.find('.title-large').length > 0) {
+ $navbarEl.addClass('navbar-large');
+ }
+
+ if ($navbarEl.hasClass('navbar-large')) {
+ if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;
+ page.$el.addClass('page-with-navbar-large');
+ } // Need transparent on scroll
+
+
+ var needTransparentOnScroll;
+
+ if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {
+ needTransparentOnScroll = true;
+ } // Need Hide On Scroll
+
+
+ var needHideOnScrollHandler;
+
+ if (app.params.navbar.hideOnPageScroll || page.$el.find('.hide-navbar-on-scroll').length || page.$el.hasClass('hide-navbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
+ if (page.$el.find('.keep-navbar-on-scroll').length || page.$el.hasClass('keep-navbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
+ needHideOnScrollHandler = false;
+ } else {
+ needHideOnScrollHandler = true;
+ }
+ }
+
+ if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {
+ app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);
+ }
+ },
+ 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {
+ var app = this;
+ instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (navbarEl) {
+ app.navbar.size(navbarEl);
+ });
+ },
+ tabShow: function tabShow(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each(function (navbarEl) {
+ app.navbar.size(navbarEl);
+ });
+ }
+ },
+ clicks: {
+ '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {
+ var app = this;
+ if (!app.params.navbar.scrollTopOnTitleClick) return;
+
+ if ((0, _dom.default)(e.target).closest('a, button').length > 0) {
+ return;
+ }
+
+ var $pageContentEl; // Find active page
+
+ var $navbarEl = $clickedEl.parents('.navbar');
+ var $navbarsEl = $navbarEl.parents('.navbars'); // Static Layout
+
+ $pageContentEl = $navbarEl.parents('.page-content');
+
+ if ($pageContentEl.length === 0) {
+ // Fixed Layout
+ if ($navbarEl.parents('.page').length > 0) {
+ $pageContentEl = $navbarEl.parents('.page').find('.page-content');
+ } // Through Layout iOS
+
+
+ if ($pageContentEl.length === 0 && $navbarsEl.length) {
+ if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {
+ $pageContentEl = $navbarsEl.nextAll('.page-current:not(.stacked)').find('.page-content');
+ }
+ } // Through Layout
+
+
+ if ($pageContentEl.length === 0) {
+ if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {
+ $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');
+ }
+ }
+ }
+
+ if ($pageContentEl && $pageContentEl.length > 0) {
+ // Check for tab
+ if ($pageContentEl.hasClass('tab')) {
+ $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');
+ }
+
+ if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);
+ }
+ }
+ },
+ vnode: {
+ navbar: {
+ postpatch: function postpatch(vnode) {
+ var app = this;
+ app.navbar.size(vnode.elm);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/notification/notification-class.js b/www/assets/framework7/cjs/components/notification/notification-class.js
new file mode 100644
index 000000000..697f687b5
--- /dev/null
+++ b/www/assets/framework7/cjs/components/notification/notification-class.js
@@ -0,0 +1,269 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Notification = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Notification, _Modal);
+
+ function Notification(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.notification, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var notification = _assertThisInitialized(_this);
+
+ notification.app = app;
+ notification.params = extendedParams;
+ var _notification$params = notification.params,
+ icon = _notification$params.icon,
+ title = _notification$params.title,
+ titleRightText = _notification$params.titleRightText,
+ subtitle = _notification$params.subtitle,
+ text = _notification$params.text,
+ closeButton = _notification$params.closeButton,
+ closeTimeout = _notification$params.closeTimeout,
+ cssClass = _notification$params.cssClass,
+ closeOnClick = _notification$params.closeOnClick;
+ var $el;
+
+ if (!notification.params.el) {
+ // Find Element
+ var notificationHtml = notification.render({
+ icon: icon,
+ title: title,
+ titleRightText: titleRightText,
+ subtitle: subtitle,
+ text: text,
+ closeButton: closeButton,
+ cssClass: cssClass
+ });
+ $el = (0, _dom.default)(notificationHtml);
+ } else {
+ $el = (0, _dom.default)(notification.params.el);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return notification.destroy() || _assertThisInitialized(_this);
+ }
+
+ (0, _utils.extend)(notification, {
+ $el: $el,
+ el: $el[0],
+ type: 'notification'
+ });
+ $el[0].f7Modal = notification;
+
+ if (closeButton) {
+ $el.find('.notification-close-button').on('click', function () {
+ notification.close();
+ });
+ }
+
+ $el.on('click', function (e) {
+ if (closeButton && (0, _dom.default)(e.target).closest('.notification-close-button').length) {
+ return;
+ }
+
+ notification.emit('local::click notificationClick', notification);
+ if (closeOnClick) notification.close();
+ });
+ notification.on('beforeDestroy', function () {
+ $el.off('click');
+ });
+ /* Touch Events */
+
+ var isTouched;
+ var isMoved;
+ var isScrolling;
+ var touchesDiff;
+ var touchStartTime;
+ var notificationHeight;
+ var touchesStart = {};
+
+ function handleTouchStart(e) {
+ if (isTouched) return;
+ isTouched = true;
+ isMoved = false;
+ isScrolling = undefined;
+ touchStartTime = (0, _utils.now)();
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ return;
+ }
+
+ e.preventDefault();
+
+ if (!isMoved) {
+ notification.$el.removeClass('notification-transitioning');
+ notification.$el.transition(0);
+ notificationHeight = notification.$el[0].offsetHeight / 2;
+ }
+
+ isMoved = true;
+ touchesDiff = pageY - touchesStart.y;
+ var newTranslate = touchesDiff;
+
+ if (touchesDiff > 0) {
+ newTranslate = Math.pow(touchesDiff, 0.8);
+ }
+
+ notification.$el.transform("translate3d(0, " + newTranslate + "px, 0)");
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+
+ if (touchesDiff === 0) {
+ return;
+ }
+
+ var timeDiff = (0, _utils.now)() - touchStartTime;
+ notification.$el.transition('');
+ notification.$el.addClass('notification-transitioning');
+ notification.$el.transform('');
+
+ if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {
+ notification.close();
+ }
+ }
+
+ function attachTouchEvents() {
+ notification.$el.on(app.touchEvents.start, handleTouchStart, {
+ passive: true
+ });
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ }
+
+ function detachTouchEvents() {
+ notification.$el.off(app.touchEvents.start, handleTouchStart, {
+ passive: true
+ });
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ }
+
+ var timeoutId;
+
+ function closeOnTimeout() {
+ timeoutId = (0, _utils.nextTick)(function () {
+ if (isTouched && isMoved) {
+ closeOnTimeout();
+ return;
+ }
+
+ notification.close();
+ }, closeTimeout);
+ }
+
+ notification.on('open', function () {
+ if (notification.params.swipeToClose) {
+ attachTouchEvents();
+ }
+
+ (0, _dom.default)('.notification.modal-in').each(function (openedEl) {
+ var notificationInstance = app.notification.get(openedEl);
+
+ if (openedEl !== notification.el && notificationInstance) {
+ notificationInstance.close();
+ }
+ });
+
+ if (closeTimeout) {
+ closeOnTimeout();
+ }
+ });
+ notification.on('close beforeDestroy', function () {
+ if (notification.params.swipeToClose) {
+ detachTouchEvents();
+ }
+
+ clearTimeout(timeoutId);
+ });
+ return notification || _assertThisInitialized(_this);
+ }
+
+ var _proto = Notification.prototype;
+
+ _proto.render = function render() {
+ var notification = this;
+ if (notification.params.render) return notification.params.render.call(notification, notification);
+ var _notification$params2 = notification.params,
+ icon = _notification$params2.icon,
+ title = _notification$params2.title,
+ titleRightText = _notification$params2.titleRightText,
+ subtitle = _notification$params2.subtitle,
+ text = _notification$params2.text,
+ closeButton = _notification$params2.closeButton,
+ cssClass = _notification$params2.cssClass;
+ return (0, _$jsx.default)("div", {
+ class: "notification " + (cssClass || '')
+ }, (0, _$jsx.default)("div", {
+ class: "notification-header"
+ }, icon && (0, _$jsx.default)("div", {
+ class: "notification-icon"
+ }, icon), title && (0, _$jsx.default)("div", {
+ class: "notification-title"
+ }, title), titleRightText && (0, _$jsx.default)("div", {
+ class: "notification-title-right-text"
+ }, titleRightText), closeButton && (0, _$jsx.default)("span", {
+ class: "notification-close-button"
+ })), (0, _$jsx.default)("div", {
+ class: "notification-content"
+ }, subtitle && (0, _$jsx.default)("div", {
+ class: "notification-subtitle"
+ }, subtitle), text && (0, _$jsx.default)("div", {
+ class: "notification-text"
+ }, text)));
+ };
+
+ return Notification;
+}(_modalClass.default);
+
+var _default = Notification;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/notification/notification.js b/www/assets/framework7/cjs/components/notification/notification.js
new file mode 100644
index 000000000..3590ed3ad
--- /dev/null
+++ b/www/assets/framework7/cjs/components/notification/notification.js
@@ -0,0 +1,44 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _notificationClass = _interopRequireDefault(require("./notification-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'notification',
+ static: {
+ Notification: _notificationClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.notification = (0, _utils.extend)({}, (0, _modalMethods.default)({
+ app: app,
+ constructor: _notificationClass.default,
+ defaultSelector: '.notification.modal-in'
+ }));
+ },
+ params: {
+ notification: {
+ icon: null,
+ title: null,
+ titleRightText: null,
+ subtitle: null,
+ text: null,
+ closeButton: false,
+ closeTimeout: null,
+ closeOnClick: false,
+ swipeToClose: true,
+ cssClass: null,
+ render: null,
+ containerEl: null
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/page/page.js b/www/assets/framework7/cjs/components/page/page.js
new file mode 100644
index 000000000..82c3ca0e0
--- /dev/null
+++ b/www/assets/framework7/cjs/components/page/page.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'page'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/panel/panel-class.js b/www/assets/framework7/cjs/components/panel/panel-class.js
new file mode 100644
index 000000000..0e3a929a4
--- /dev/null
+++ b/www/assets/framework7/cjs/components/panel/panel-class.js
@@ -0,0 +1,660 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _swipePanel = _interopRequireDefault(require("./swipe-panel"));
+
+var _resizablePanel = _interopRequireDefault(require("./resizable-panel"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Panel = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Panel, _Framework7Class);
+
+ function Panel(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.panel, params);
+ _this = _Framework7Class.call(this, extendedParams, [app]) || this;
+
+ var panel = _assertThisInitialized(_this);
+
+ panel.params = extendedParams;
+ panel.$containerEl = panel.params.containerEl ? (0, _dom.default)(panel.params.containerEl).eq(0) : app.$el;
+ panel.containerEl = panel.$containerEl[0];
+
+ if (!panel.containerEl) {
+ panel.$containerEl = app.$el;
+ panel.containerEl = app.$el[0];
+ }
+
+ var $el;
+
+ if (panel.params.el) {
+ $el = (0, _dom.default)(panel.params.el).eq(0);
+ } else if (panel.params.content) {
+ $el = (0, _dom.default)(panel.params.content).filter(function (node) {
+ return node.nodeType === 1;
+ }).eq(0);
+ }
+
+ if ($el.length === 0) return panel || _assertThisInitialized(_this);
+ if ($el[0].f7Panel) return $el[0].f7Panel || _assertThisInitialized(_this);
+ $el[0].f7Panel = panel;
+ var _panel$params = panel.params,
+ side = _panel$params.side,
+ effect = _panel$params.effect,
+ resizable = _panel$params.resizable;
+ if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';
+ if (typeof effect === 'undefined') // eslint-disable-next-line
+ effect = $el.hasClass('panel-cover') ? 'cover' : $el.hasClass('panel-push') ? 'push' : 'reveal';
+ if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');
+ var $backdropEl;
+
+ if (panel.params.backdrop && panel.params.backdropEl) {
+ $backdropEl = (0, _dom.default)(panel.params.backdropEl);
+ } else if (panel.params.backdrop) {
+ $backdropEl = panel.$containerEl.children('.panel-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+ panel.$containerEl.prepend($backdropEl);
+ }
+ }
+
+ (0, _utils.extend)(panel, {
+ app: app,
+ side: side,
+ effect: effect,
+ resizable: resizable,
+ $el: $el,
+ el: $el[0],
+ opened: false,
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0]
+ }); // Install Modules
+
+ panel.useModules(); // Init
+
+ panel.init();
+ return panel || _assertThisInitialized(_this);
+ }
+
+ var _proto = Panel.prototype;
+
+ _proto.getViewEl = function getViewEl() {
+ var panel = this;
+ var viewEl;
+
+ if (panel.$containerEl.children('.views').length > 0) {
+ viewEl = panel.$containerEl.children('.views')[0];
+ } else {
+ viewEl = panel.$containerEl.children('.view')[0];
+ }
+
+ return viewEl;
+ };
+
+ _proto.setStateClasses = function setStateClasses(state) {
+ var panel = this;
+ var side = panel.side,
+ el = panel.el;
+ var viewEl = panel.getViewEl();
+ var panelInView = viewEl && viewEl.contains(el);
+ var $targetEl = !viewEl || panelInView ? panel.$containerEl : (0, _dom.default)('html');
+
+ if (state === 'open') {
+ $targetEl.addClass("with-panel with-panel-" + panel.side + "-" + panel.effect);
+ }
+
+ if (state === 'before-closing') {
+ $targetEl.addClass('with-panel-closing');
+ }
+
+ if (state === 'closing') {
+ $targetEl.addClass('with-panel-closing');
+ $targetEl.removeClass("with-panel with-panel-" + panel.side + "-" + panel.effect);
+ }
+
+ if (state === 'after-closing') {
+ $targetEl.removeClass('with-panel-closing');
+ }
+
+ if (state === 'closed') {
+ $targetEl.removeClass("with-panel-" + side + "-reveal with-panel-" + side + "-cover with-panel-" + side + "-push with-panel");
+ }
+ };
+
+ _proto.enableVisibleBreakpoint = function enableVisibleBreakpoint() {
+ var panel = this;
+ panel.visibleBreakpointDisabled = false;
+ panel.setVisibleBreakpoint();
+ return panel;
+ };
+
+ _proto.disableVisibleBreakpoint = function disableVisibleBreakpoint() {
+ var panel = this;
+ panel.visibleBreakpointDisabled = true;
+ panel.setVisibleBreakpoint();
+ return panel;
+ };
+
+ _proto.toggleVisibleBreakpoint = function toggleVisibleBreakpoint() {
+ var panel = this;
+ panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;
+ panel.setVisibleBreakpoint();
+ return panel;
+ };
+
+ _proto.setVisibleBreakpoint = function setVisibleBreakpoint(emitEvents) {
+ if (emitEvents === void 0) {
+ emitEvents = true;
+ }
+
+ var panel = this;
+ var app = panel.app;
+
+ if (!panel.visibleBreakpointResizeHandler) {
+ panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {
+ panel.setVisibleBreakpoint();
+ };
+
+ app.on('resize', panel.visibleBreakpointResizeHandler);
+ }
+
+ var side = panel.side,
+ $el = panel.$el,
+ $containerEl = panel.$containerEl,
+ params = panel.params,
+ visibleBreakpointDisabled = panel.visibleBreakpointDisabled;
+ var breakpoint = params.visibleBreakpoint;
+ var $viewEl = (0, _dom.default)(panel.getViewEl());
+ var wasVisible = $el.hasClass('panel-in-breakpoint');
+
+ if ($containerEl && $containerEl.hasClass('page')) {
+ $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));
+ }
+
+ if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {
+ if (!wasVisible) {
+ var _$viewEl$css;
+
+ panel.setStateClasses('closed');
+ $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');
+ panel.onOpen(false);
+ panel.onOpened();
+ $viewEl.css((_$viewEl$css = {}, _$viewEl$css["margin-" + side] = $el.width() + "px", _$viewEl$css));
+ app.allowPanelOpen = true;
+
+ if (emitEvents) {
+ panel.emit('local::breakpoint panelBreakpoint', panel);
+ panel.$el.trigger('panel:breakpoint');
+ }
+ } else {
+ var _$viewEl$css2;
+
+ $viewEl.css((_$viewEl$css2 = {}, _$viewEl$css2["margin-" + side] = $el.width() + "px", _$viewEl$css2));
+ }
+ } else if (wasVisible) {
+ var _$viewEl$css3;
+
+ $el.removeClass('panel-in-breakpoint panel-in');
+ panel.onClose();
+ panel.onClosed();
+ $viewEl.css((_$viewEl$css3 = {}, _$viewEl$css3["margin-" + side] = '', _$viewEl$css3));
+
+ if (emitEvents) {
+ panel.emit('local::breakpoint panelBreakpoint', panel);
+ panel.$el.trigger('panel:breakpoint');
+ }
+ }
+ };
+
+ _proto.enableCollapsedBreakpoint = function enableCollapsedBreakpoint() {
+ var panel = this;
+ panel.collapsedBreakpointDisabled = false;
+ panel.setCollapsedBreakpoint();
+ return panel;
+ };
+
+ _proto.disableCollapsedBreakpoint = function disableCollapsedBreakpoint() {
+ var panel = this;
+ panel.collapsedBreakpointDisabled = true;
+ panel.setCollapsedBreakpoint();
+ return panel;
+ };
+
+ _proto.toggleCollapsedBreakpoint = function toggleCollapsedBreakpoint() {
+ var panel = this;
+ panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;
+ panel.setCollapsedBreakpoint();
+ return panel;
+ };
+
+ _proto.setCollapsedBreakpoint = function setCollapsedBreakpoint(emitEvents) {
+ if (emitEvents === void 0) {
+ emitEvents = true;
+ }
+
+ var panel = this;
+ var app = panel.app;
+
+ if (!panel.collapsedBreakpointResizeHandler) {
+ panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {
+ panel.setCollapsedBreakpoint();
+ };
+
+ app.on('resize', panel.collapsedBreakpointResizeHandler);
+ }
+
+ var $el = panel.$el,
+ params = panel.params,
+ collapsedBreakpointDisabled = panel.collapsedBreakpointDisabled;
+ if ($el.hasClass('panel-in-breakpoint')) return;
+ var breakpoint = params.collapsedBreakpoint;
+ var wasVisible = $el.hasClass('panel-in-collapsed');
+
+ if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {
+ if (!wasVisible) {
+ panel.setStateClasses('closed');
+ $el.addClass('panel-in-collapsed').removeClass('panel-in');
+ panel.collapsed = true;
+ app.allowPanelOpen = true;
+
+ if (emitEvents) {
+ panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);
+ panel.$el.trigger('panel:collapsedbreakpoint');
+ }
+ }
+ } else if (wasVisible) {
+ $el.removeClass('panel-in-collapsed panel-in');
+ panel.collapsed = false;
+
+ if (emitEvents) {
+ panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);
+ panel.$el.trigger('panel:collapsedbreakpoint');
+ }
+ }
+ };
+
+ _proto.enableResizable = function enableResizable() {
+ var panel = this;
+
+ if (panel.resizableInitialized) {
+ panel.resizable = true;
+ panel.$el.addClass('panel-resizable');
+ } else {
+ (0, _resizablePanel.default)(panel);
+ }
+
+ return panel;
+ };
+
+ _proto.disableResizable = function disableResizable() {
+ var panel = this;
+ panel.resizable = false;
+ panel.$el.removeClass('panel-resizable');
+ return panel;
+ };
+
+ _proto.enableSwipe = function enableSwipe() {
+ var panel = this;
+
+ if (panel.swipeInitialized) {
+ panel.swipeable = true;
+ } else {
+ (0, _swipePanel.default)(panel);
+ }
+
+ return panel;
+ };
+
+ _proto.disableSwipe = function disableSwipe() {
+ var panel = this;
+ panel.swipeable = false;
+ return panel;
+ };
+
+ _proto.onOpen = function onOpen(modifyHtmlClasses) {
+ if (modifyHtmlClasses === void 0) {
+ modifyHtmlClasses = true;
+ }
+
+ var panel = this;
+ var app = panel.app;
+ panel.opened = true;
+ app.panel.allowOpen = false;
+ panel.$el.trigger('panel:beforeopen');
+ panel.emit('local::beforeOpen panelBeforeOpen', panel);
+
+ if (modifyHtmlClasses) {
+ panel.setStateClasses('open');
+ }
+
+ panel.$el.trigger('panel:open');
+ panel.emit('local::open panelOpen', panel);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var panel = this;
+ var app = panel.app;
+ app.panel.allowOpen = true;
+ panel.$el.trigger('panel:opened');
+ panel.emit('local::opened panelOpened', panel);
+ };
+
+ _proto.onClose = function onClose() {
+ var panel = this;
+ var app = panel.app;
+ panel.opened = false;
+ app.panel.allowOpen = false;
+ panel.$el.trigger('panel:beforeclose');
+ panel.emit('local::beforeClose panelBeforeClose', panel);
+ panel.setStateClasses('closing');
+ panel.$el.trigger('panel:close');
+ panel.emit('local::close panelClose', panel);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var panel = this;
+ var app = panel.app;
+ app.panel.allowOpen = true;
+ panel.setStateClasses('after-closing');
+ panel.$el.removeClass('panel-out');
+
+ if (panel.$backdropEl) {
+ var otherPanel = app.panel.get('.panel-in');
+ var shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;
+
+ if (shouldHideBackdrop) {
+ panel.$backdropEl.removeClass('panel-backdrop-in');
+ }
+ }
+
+ panel.$el.trigger('panel:closed');
+ panel.emit('local::closed panelClosed', panel);
+ };
+
+ _proto.toggle = function toggle(animate) {
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var panel = this;
+ var breakpoint = panel.params.visibleBreakpoint;
+ var app = panel.app;
+
+ if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {
+ return panel.toggleVisibleBreakpoint();
+ }
+
+ if (panel.opened) panel.close(animate);else panel.open(animate);
+ return panel;
+ };
+
+ _proto.insertToRoot = function insertToRoot() {
+ var panel = this;
+ var document = (0, _ssrWindow.getDocument)();
+ var $el = panel.$el,
+ $backdropEl = panel.$backdropEl,
+ $containerEl = panel.$containerEl;
+ var $panelParentEl = $el.parent();
+ var wasInDom = $el.parents(document).length > 0;
+
+ if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {
+ var $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);
+ var $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);
+
+ if ($insertBeforeEl.length) {
+ $el.insertBefore($insertBeforeEl);
+ } else if ($insertAfterEl) {
+ $el.insertBefore($insertAfterEl);
+ } else {
+ $containerEl.prepend($el);
+ }
+
+ if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {
+ $backdropEl.insertBefore($el);
+ }
+
+ panel.once('panelClosed', function () {
+ if (wasInDom) {
+ $panelParentEl.append($el);
+ } else {
+ $el.remove();
+ }
+ });
+ }
+ };
+
+ _proto.open = function open(animate) {
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var panel = this;
+ var app = panel.app;
+ if (!app.panel.allowOpen) return false;
+ var effect = panel.effect,
+ $el = panel.$el,
+ $backdropEl = panel.$backdropEl,
+ opened = panel.opened,
+ $containerEl = panel.$containerEl;
+
+ if (!$el || $el.hasClass('panel-in')) {
+ return panel;
+ }
+
+ panel.insertToRoot(); // Ignore if opened
+
+ if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false; // Close if some panel is opened
+
+ var otherOpenedPanel = app.panel.get('.panel-in');
+
+ if (otherOpenedPanel && otherOpenedPanel !== panel) {
+ otherOpenedPanel.close(animate);
+ }
+
+ $el[animate ? 'removeClass' : 'addClass']('not-animated');
+ $el.addClass('panel-in');
+
+ if ($backdropEl) {
+ $backdropEl.addClass('panel-backdrop-in');
+ $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
+ }
+
+ if (panel.effect === 'cover' || panel.effect === 'push') {
+ /* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
+ panel._clientLeft = $el[0].clientLeft;
+ } // Transitionend
+
+
+ var $viewEl = (0, _dom.default)(panel.getViewEl());
+
+ if ($containerEl && $containerEl.hasClass('page')) {
+ $viewEl.add($containerEl.children('.page-content, .tabs'));
+ }
+
+ var transitionEndTarget = effect === 'reveal' ? $viewEl : $el;
+
+ function panelTransitionEnd() {
+ transitionEndTarget.transitionEnd(function (e) {
+ if ((0, _dom.default)(e.target).is(transitionEndTarget)) {
+ if ($el.hasClass('panel-out')) {
+ panel.onClosed();
+ } else {
+ panel.onOpened();
+ }
+ } else panelTransitionEnd();
+ });
+ }
+
+ if (animate) {
+ if ($backdropEl) {
+ $backdropEl.removeClass('not-animated');
+ }
+
+ panelTransitionEnd();
+ $el.removeClass('panel-out not-animated').addClass('panel-in');
+ panel.onOpen();
+ } else {
+ if ($backdropEl) {
+ $backdropEl.addClass('not-animated');
+ }
+
+ $el.removeClass('panel-out').addClass('panel-in not-animated');
+ panel.onOpen();
+ panel.onOpened();
+ }
+
+ return true;
+ };
+
+ _proto.close = function close(animate) {
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var panel = this;
+ var effect = panel.effect,
+ $el = panel.$el,
+ $backdropEl = panel.$backdropEl,
+ opened = panel.opened,
+ $containerEl = panel.$containerEl;
+ if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;
+ $el[animate ? 'removeClass' : 'addClass']('not-animated');
+
+ if ($backdropEl) {
+ $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
+ }
+
+ var $viewEl = (0, _dom.default)(panel.getViewEl());
+
+ if ($containerEl && $containerEl.hasClass('page')) {
+ $viewEl.add($containerEl.children('.page-content, .tabs'));
+ }
+
+ var transitionEndTarget = effect === 'reveal' ? $viewEl : $el;
+
+ function transitionEnd() {
+ if ($el.hasClass('panel-out')) {
+ panel.onClosed();
+ } else if ($el.hasClass('panel-in')) {
+ panel.onOpened();
+ }
+
+ panel.setStateClasses('after-closing');
+ }
+
+ if (animate) {
+ transitionEndTarget.transitionEnd(function () {
+ transitionEnd();
+ });
+ $el.removeClass('panel-in').addClass('panel-out'); // Emit close
+
+ panel.onClose();
+ } else {
+ $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out'); // Emit close
+
+ panel.onClose();
+ panel.onClosed();
+ }
+
+ return panel;
+ };
+
+ _proto.init = function init() {
+ var panel = this; // const app = panel.app;
+
+ if (typeof panel.params.visibleBreakpoint !== 'undefined') {
+ panel.setVisibleBreakpoint();
+ }
+
+ if (typeof panel.params.collapsedBreakpoint !== 'undefined') {
+ panel.setCollapsedBreakpoint();
+ }
+
+ if (panel.params.swipe) {
+ panel.enableSwipe();
+ }
+
+ if (panel.resizable) {
+ panel.enableResizable();
+ }
+ };
+
+ _proto.destroy = function destroy() {
+ var panel = this;
+ var app = panel.app;
+ var _panel = panel,
+ $containerEl = _panel.$containerEl;
+
+ if (!panel.$el) {
+ // Panel already destroyed
+ return;
+ }
+
+ panel.emit('local::beforeDestroy panelBeforeDestroy', panel);
+ panel.$el.trigger('panel:beforedestroy');
+
+ if (panel.visibleBreakpointResizeHandler) {
+ app.off('resize', panel.visibleBreakpointResizeHandler);
+ }
+
+ if (panel.collapsedBreakpointResizeHandler) {
+ app.off('resize', panel.collapsedBreakpointResizeHandler);
+ }
+
+ if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {
+ var _$viewEl$css4;
+
+ var $viewEl = (0, _dom.default)(panel.getViewEl());
+
+ if ($containerEl && $containerEl.hasClass('page')) {
+ $viewEl.add($containerEl.children('.page-content, .tabs'));
+ }
+
+ panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');
+ $viewEl.css((_$viewEl$css4 = {}, _$viewEl$css4["margin-" + panel.side] = '', _$viewEl$css4));
+ panel.emit('local::breakpoint panelBreakpoint', panel);
+ panel.$el.trigger('panel:breakpoint');
+ }
+
+ panel.$el.trigger('panel:destroy');
+ panel.emit('local::destroy panelDestroy', panel);
+
+ if (panel.el) {
+ panel.el.f7Panel = null;
+ delete panel.el.f7Panel;
+ }
+
+ (0, _utils.deleteProps)(panel);
+ panel = null;
+ };
+
+ return Panel;
+}(_class.default);
+
+var _default = Panel;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/panel/panel.js b/www/assets/framework7/cjs/components/panel/panel.js
new file mode 100644
index 000000000..12dcedccb
--- /dev/null
+++ b/www/assets/framework7/cjs/components/panel/panel.js
@@ -0,0 +1,219 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _panelClass = _interopRequireDefault(require("./panel-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'panel',
+ params: {
+ panel: {
+ opened: undefined,
+ // default based on panel-in class
+ side: undefined,
+ // default based on panel class
+ effect: undefined,
+ // default based on panel class
+ resizable: undefined,
+ // default based on panel-resizable class
+ backdrop: true,
+ backdropEl: undefined,
+ visibleBreakpoint: undefined,
+ collapsedBreakpoint: undefined,
+ swipe: false,
+ // or true
+ swipeNoFollow: false,
+ // or true
+ swipeOnlyClose: false,
+ swipeActiveArea: 0,
+ swipeThreshold: 0,
+ closeByBackdropClick: true,
+ containerEl: undefined
+ }
+ },
+ static: {
+ Panel: _panelClass.default
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.extend)(app, {
+ panel: {
+ allowOpen: true,
+ create: function create(params) {
+ return new _panelClass.default(app, params);
+ },
+ get: function get(el) {
+ if (el === void 0) {
+ el = '.panel';
+ }
+
+ if (el instanceof _panelClass.default) return el;
+ if (el === 'left' || el === 'right') el = ".panel-" + el; // eslint-disable-line
+
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0 || $el.length > 1) return undefined;
+ return $el[0].f7Panel;
+ },
+ destroy: function destroy(el) {
+ if (el === void 0) {
+ el = '.panel';
+ }
+
+ var panel = app.panel.get(el);
+ if (panel && panel.destroy) return panel.destroy();
+ return undefined;
+ },
+ open: function open(el, animate) {
+ if (el === void 0) {
+ el = '.panel';
+ }
+
+ if (el === 'left' || el === 'right') el = ".panel-" + el; // eslint-disable-line
+
+ var panel = app.panel.get(el);
+ if (panel && panel.open) return panel.open(animate);
+
+ if (!panel) {
+ panel = app.panel.create({
+ el: el
+ });
+ return panel.open(animate);
+ }
+
+ return undefined;
+ },
+ close: function close(el, animate) {
+ if (el === void 0) {
+ el = '.panel-in';
+ }
+
+ if (el === 'left' || el === 'right') el = ".panel-" + el; // eslint-disable-line
+
+ var panel = app.panel.get(el);
+ if (panel && panel.open) return panel.close(animate);
+
+ if (!panel) {
+ panel = app.panel.create({
+ el: el
+ });
+ return panel.close(animate);
+ }
+
+ return undefined;
+ },
+ toggle: function toggle(el, animate) {
+ if (el === void 0) {
+ el = '.panel';
+ }
+
+ if (el === 'left' || el === 'right') el = ".panel-" + el; // eslint-disable-line
+
+ var panel = app.panel.get(el);
+ if (panel && panel.toggle) return panel.toggle(animate);
+
+ if (!panel) {
+ panel = app.panel.create({
+ el: el
+ });
+ return panel.toggle(animate);
+ }
+
+ return undefined;
+ }
+ }
+ });
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ (0, _dom.default)('.panel-init').each(function (panelEl) {
+ var params = Object.assign({
+ el: panelEl
+ }, (0, _dom.default)(panelEl).dataset() || {});
+ app.panel.create(params);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.panel-init').each(function (panelEl) {
+ var params = Object.assign({
+ el: panelEl
+ }, (0, _dom.default)(panelEl).dataset() || {});
+ app.panel.create(params);
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.panel-init').each(function (panelEl) {
+ var panel = app.panel.get(panelEl);
+ if (panel && panel.destroy) panel.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'panel-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var panelEl = vnode.elm;
+ var params = Object.assign({
+ el: panelEl
+ }, (0, _dom.default)(panelEl).dataset() || {});
+ app.panel.create(params);
+ },
+ destroy: function destroy(vnode) {
+ var app = this;
+ var panelEl = vnode.elm;
+ var panel = app.panel.get(panelEl);
+ if (panel && panel.destroy) panel.destroy();
+ }
+ }
+ },
+ clicks: {
+ '.panel-open': function open(clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.panel.open(data.panel, data.animate);
+ },
+ '.panel-close': function close(clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.panel.close(data.panel, data.animate);
+ },
+ '.panel-toggle': function close(clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.panel.toggle(data.panel, data.animate);
+ },
+ '.panel-backdrop': function close() {
+ var app = this;
+ var $panelEl = (0, _dom.default)('.panel-in:not(.panel-out)');
+ if (!$panelEl.length) return;
+ var instance = $panelEl[0] && $panelEl[0].f7Panel;
+ $panelEl.trigger('panel:backdrop-click');
+
+ if (instance) {
+ instance.emit('backdropClick', instance);
+ }
+
+ app.emit('panelBackdropClick', instance || $panelEl[0]);
+ if (app.params.panel.closeByBackdropClick) app.panel.close();
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/panel/resizable-panel.js b/www/assets/framework7/cjs/components/panel/resizable-panel.js
new file mode 100644
index 000000000..638ebd9ab
--- /dev/null
+++ b/www/assets/framework7/cjs/components/panel/resizable-panel.js
@@ -0,0 +1,197 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function resizablePanel(panel) {
+ var app = panel.app;
+ var support = (0, _getSupport.getSupport)();
+ if (panel.resizableInitialized) return;
+ (0, _utils.extend)(panel, {
+ resizable: true,
+ resizableWidth: null,
+ resizableInitialized: true
+ });
+ var $htmlEl = (0, _dom.default)('html');
+ var $el = panel.$el,
+ $backdropEl = panel.$backdropEl,
+ side = panel.side,
+ effect = panel.effect;
+ if (!$el) return;
+ var isTouched;
+ var isMoved;
+ var touchesStart = {};
+ var touchesDiff;
+ var panelWidth;
+ var $viewEl;
+ var panelMinWidth;
+ var panelMaxWidth;
+ var visibleByBreakpoint;
+
+ function transformCSSWidth(v) {
+ if (!v) return null;
+
+ if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {
+ return parseInt(v, 10) / 100 * app.width;
+ }
+
+ var newV = parseInt(v, 10);
+ if (Number.isNaN(newV)) return null;
+ return newV;
+ }
+
+ function isResizable() {
+ return panel.resizable && $el.hasClass('panel-resizable');
+ }
+
+ function handleTouchStart(e) {
+ if (!isResizable()) return;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ isMoved = false;
+ isTouched = true;
+ panelMinWidth = transformCSSWidth($el.css('min-width'));
+ panelMaxWidth = transformCSSWidth($el.css('max-width'));
+ visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+
+ if (!isMoved) {
+ panelWidth = $el[0].offsetWidth;
+ $el.transition(0);
+ $el.addClass('panel-resizing');
+ $htmlEl.css('cursor', 'col-resize');
+
+ if (effect !== 'cover' || visibleByBreakpoint) {
+ $viewEl = (0, _dom.default)(panel.getViewEl());
+
+ if (panel.$containerEl && panel.$containerEl.hasClass('page')) {
+ $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));
+ }
+ }
+
+ if (effect !== 'cover' && !visibleByBreakpoint) {
+ $backdropEl.transition(0);
+ $viewEl.transition(0);
+ }
+ }
+
+ isMoved = true;
+ e.preventDefault();
+ touchesDiff = pageX - touchesStart.x;
+ var newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;
+
+ if (panelMinWidth && !Number.isNaN(panelMinWidth)) {
+ newPanelWidth = Math.max(newPanelWidth, panelMinWidth);
+ }
+
+ if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {
+ newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);
+ }
+
+ newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);
+ panel.resizableWidth = newPanelWidth;
+ $el[0].style.width = newPanelWidth + "px";
+
+ if (effect !== 'cover' && !visibleByBreakpoint) {
+ if ($viewEl) {
+ $viewEl.transform("translate3d(" + (side === 'left' ? newPanelWidth : -newPanelWidth) + "px, 0, 0)");
+ }
+
+ if ($backdropEl) {
+ $backdropEl.transform("translate3d(" + (side === 'left' ? newPanelWidth : -newPanelWidth) + "px, 0, 0)");
+ }
+ } else if (visibleByBreakpoint && $viewEl) {
+ $viewEl.css("margin-" + side, newPanelWidth + "px");
+ }
+
+ $el.trigger('panel:resize', newPanelWidth);
+ panel.emit('local::resize panelResize', panel, newPanelWidth);
+ }
+
+ function handleTouchEnd() {
+ (0, _dom.default)('html').css('cursor', '');
+
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ $htmlEl[0].style.setProperty("--f7-panel-" + side + "-width", panel.resizableWidth + "px");
+ $el[0].style.width = '';
+
+ if (effect !== 'cover' && !visibleByBreakpoint) {
+ $viewEl.transform('');
+ $backdropEl.transform('');
+ }
+
+ $el.removeClass('panel-resizing');
+ (0, _utils.nextFrame)(function () {
+ $el.transition('');
+
+ if (effect !== 'cover') {
+ $backdropEl.transition('');
+ if ($viewEl) $viewEl.transition('');
+ }
+ });
+ }
+
+ function handleResize() {
+ if (!panel.opened || !panel.resizableWidth) return;
+ panelMinWidth = transformCSSWidth($el.css('min-width'));
+ panelMaxWidth = transformCSSWidth($el.css('max-width'));
+
+ if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {
+ panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);
+ }
+
+ if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {
+ panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);
+ }
+
+ panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);
+ $htmlEl[0].style.setProperty("--f7-panel-" + side + "-width", panel.resizableWidth + "px");
+ }
+
+ if (panel.$el.find('.panel-resize-handler').length === 0) {
+ panel.$el.append('');
+ }
+
+ panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');
+ $el.addClass('panel-resizable'); // Add Events
+
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('resize', handleResize);
+ panel.on('beforeOpen', handleResize);
+ panel.once('panelDestroy', function () {
+ $el.removeClass('panel-resizable');
+ panel.$resizeHandlerEl.remove();
+ panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('resize', handleResize);
+ panel.off('beforeOpen', handleResize);
+ });
+}
+
+var _default = resizablePanel;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/panel/swipe-panel.js b/www/assets/framework7/cjs/components/panel/swipe-panel.js
new file mode 100644
index 000000000..38649b163
--- /dev/null
+++ b/www/assets/framework7/cjs/components/panel/swipe-panel.js
@@ -0,0 +1,363 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function swipePanel(panel) {
+ var app = panel.app;
+
+ if (panel.swipeInitialized) {
+ return;
+ }
+
+ (0, _utils.extend)(panel, {
+ swipeable: true,
+ swipeInitialized: true
+ });
+ var params = panel.params;
+ var $el = panel.$el,
+ $backdropEl = panel.$backdropEl,
+ side = panel.side,
+ effect = panel.effect;
+ var otherPanel;
+ var isTouched;
+ var isGestureStarted;
+ var isMoved;
+ var isScrolling;
+ var isInterrupted;
+ var touchesStart = {};
+ var touchStartTime;
+ var touchesDiff;
+ var translate;
+ var backdropOpacity;
+ var panelWidth;
+ var direction;
+ var $viewEl;
+ var touchMoves = 0;
+
+ function handleTouchStart(e) {
+ if (!panel.swipeable || isGestureStarted) return;
+ if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;
+ if ((0, _dom.default)('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;
+ otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};
+ var otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');
+
+ if (!panel.opened && otherPanelOpened) {
+ return;
+ }
+
+ if (!params.swipeOnlyClose) {
+ if (otherPanelOpened) return;
+ }
+
+ if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;
+ if ((0, _dom.default)(e.target).closest('.range-slider, .tabs-swipeable-wrap, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (params.swipeOnlyClose && !panel.opened) {
+ return;
+ }
+
+ if (params.swipeActiveArea && !panel.opened) {
+ if (side === 'left') {
+ if (touchesStart.x > params.swipeActiveArea) return;
+ }
+
+ if (side === 'right') {
+ if (touchesStart.x < app.width - params.swipeActiveArea) return;
+ }
+ }
+
+ touchMoves = 0;
+ $viewEl = (0, _dom.default)(panel.getViewEl());
+ isMoved = false;
+ isTouched = true;
+ isScrolling = undefined;
+ isInterrupted = false;
+ touchStartTime = (0, _utils.now)();
+ direction = undefined;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched || isGestureStarted || isInterrupted) return;
+ touchMoves += 1;
+ if (touchMoves < 2) return;
+
+ if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {
+ isTouched = false;
+ return;
+ }
+
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ return;
+ }
+
+ if (!direction) {
+ if (pageX > touchesStart.x) {
+ direction = 'to-right';
+ } else {
+ direction = 'to-left';
+ }
+
+ if (params.swipeActiveArea > 0 && !panel.opened) {
+ if (side === 'left' && touchesStart.x > params.swipeActiveArea) {
+ isTouched = false;
+ return;
+ }
+
+ if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {
+ isTouched = false;
+ return;
+ }
+ }
+
+ if ($el.hasClass('panel-in-breakpoint')) {
+ isTouched = false;
+ return;
+ }
+
+ if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {
+ isTouched = false;
+ return;
+ }
+ }
+
+ var threshold = panel.opened ? 0 : -params.swipeThreshold;
+ if (side === 'right') threshold = -threshold;
+
+ if (!isMoved) {
+ if (!panel.opened) {
+ panel.insertToRoot();
+ $el.addClass('panel-in-swipe');
+ $backdropEl.css('visibility', 'visible');
+ $el.trigger('panel:swipeopen');
+ panel.emit('local::swipeOpen panelSwipeOpen', panel);
+ }
+
+ panelWidth = $el[0].offsetWidth;
+
+ if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {
+ panelWidth -= parseFloat($viewEl.css("margin-" + side));
+ }
+
+ $el.transition(0);
+ }
+
+ isMoved = true;
+
+ if (e.cancelable) {
+ e.preventDefault();
+ }
+
+ touchesDiff = pageX - touchesStart.x + threshold;
+
+ if (side === 'right') {
+ if (effect === 'cover' || effect === 'push') {
+ translate = touchesDiff + (panel.opened ? 0 : panelWidth);
+ if (translate < 0) translate = 0;
+
+ if (translate > panelWidth) {
+ translate = panelWidth;
+ }
+ } else {
+ translate = touchesDiff - (panel.opened ? panelWidth : 0);
+ if (translate > 0) translate = 0;
+
+ if (translate < -panelWidth) {
+ translate = -panelWidth;
+ }
+ }
+ } else {
+ translate = touchesDiff + (panel.opened ? panelWidth : 0);
+ if (translate < 0) translate = 0;
+
+ if (translate > panelWidth) {
+ translate = panelWidth;
+ }
+ }
+
+ var noFollowProgress = Math.abs(translate / panelWidth);
+
+ if (effect === 'reveal') {
+ if (!params.swipeNoFollow) {
+ $viewEl.transform("translate3d(" + translate + "px,0,0)").transition(0);
+ $backdropEl.transform("translate3d(" + translate + "px,0,0)").transition(0);
+ }
+
+ $el.trigger('panel:swipe', Math.abs(translate / panelWidth));
+ panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));
+ } else {
+ if (side === 'left') translate -= panelWidth;
+
+ if (!params.swipeNoFollow) {
+ $backdropEl.transition(0);
+ backdropOpacity = 1 - Math.abs(translate / panelWidth);
+ $backdropEl.css({
+ opacity: backdropOpacity
+ });
+ $el.transform("translate3d(" + translate + "px,0,0)").transition(0);
+
+ if (effect === 'push') {
+ var viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;
+ $viewEl.transform("translate3d(" + viewTranslate + "px,0,0)").transition(0);
+ $backdropEl.transform("translate3d(" + viewTranslate + "px,0,0)").transition(0);
+ }
+ }
+
+ $el.trigger('panel:swipe', Math.abs(translate / panelWidth));
+ panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));
+ }
+
+ if (params.swipeNoFollow) {
+ var stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;
+
+ if (stateChanged) {
+ isInterrupted = true; // eslint-disable-next-line
+
+ handleTouchEnd(e);
+ }
+ }
+ }
+
+ function handleTouchEnd(e) {
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ var isGesture = e.type === 'gesturestart' || isGestureStarted;
+ isTouched = false;
+ isMoved = false;
+ var timeDiff = new Date().getTime() - touchStartTime;
+ var action;
+ var edge = (translate === 0 || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;
+ var threshold = params.swipeThreshold || 0;
+
+ if (isGesture) {
+ action = 'reset';
+ } else if (!panel.opened) {
+ if (Math.abs(touchesDiff) < threshold) {
+ action = 'reset';
+ } else if (effect === 'cover' || effect === 'push') {
+ if (translate === 0) {
+ action = 'swap'; // open
+ } else if (timeDiff < 300 && Math.abs(translate) > 0) {
+ action = 'swap'; // open
+ } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {
+ action = 'swap'; // open
+ } else {
+ action = 'reset'; // close
+ }
+ } else if (translate === 0) {
+ action = 'reset';
+ } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {
+ action = 'swap';
+ } else {
+ action = 'reset';
+ }
+ } else if (effect === 'cover' || effect === 'push') {
+ if (translate === 0) {
+ action = 'reset'; // open
+ } else if (timeDiff < 300 && Math.abs(translate) > 0) {
+ action = 'swap'; // open
+ } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {
+ action = 'reset'; // open
+ } else {
+ action = 'swap'; // close
+ }
+ } else if (translate === -panelWidth) {
+ action = 'reset';
+ } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {
+ if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';
+ } else {
+ action = 'reset';
+ }
+
+ if (action === 'swap') {
+ if (panel.opened) {
+ panel.close(!edge);
+ } else {
+ panel.open(!edge);
+ }
+ }
+
+ var removePanelInClass = true;
+
+ if (action === 'reset') {
+ if (!panel.opened) {
+ if (edge) {
+ // edge position
+ $el.removeClass('panel-in-swipe');
+ } else {
+ removePanelInClass = false;
+ var target = effect === 'reveal' ? $viewEl : $el;
+ panel.setStateClasses('before-closing');
+ target.transitionEnd(function () {
+ if ($el.hasClass('panel-in')) return;
+ $el.removeClass('panel-in-swipe');
+ panel.setStateClasses('after-closing');
+ });
+ }
+ }
+ }
+
+ if (effect === 'reveal' || effect === 'push') {
+ (0, _utils.nextFrame)(function () {
+ $viewEl.transition('');
+ $viewEl.transform('');
+ });
+ }
+
+ if (removePanelInClass) {
+ $el.removeClass('panel-in-swipe');
+ }
+
+ $el.transition('').transform('');
+ $backdropEl.transform('').transition('').css({
+ opacity: '',
+ visibility: ''
+ });
+ }
+
+ function handleGestureStart(e) {
+ isGestureStarted = true;
+ handleTouchEnd(e);
+ }
+
+ function handleGestureEnd() {
+ isGestureStarted = false;
+ } // Add Events
+
+
+ app.on('touchstart:passive', handleTouchStart);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('gesturestart', handleGestureStart);
+ app.on('gestureend', handleGestureEnd);
+ panel.on('panelDestroy', function () {
+ app.off('touchstart:passive', handleTouchStart);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('gesturestart', handleGestureStart);
+ app.off('gestureend', handleGestureEnd);
+ });
+}
+
+var _default = swipePanel;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/photo-browser/photo-browser-class.js b/www/assets/framework7/cjs/components/photo-browser/photo-browser-class.js
new file mode 100644
index 000000000..8443eecd2
--- /dev/null
+++ b/www/assets/framework7/cjs/components/photo-browser/photo-browser-class.js
@@ -0,0 +1,781 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var PhotoBrowser = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(PhotoBrowser, _Framework7Class);
+
+ function PhotoBrowser(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var pb = _assertThisInitialized(_this);
+
+ pb.app = app;
+ var defaults = (0, _utils.extend)({
+ on: {}
+ }, app.params.photoBrowser); // Extend defaults with modules params
+
+ pb.useModulesParams(defaults);
+ pb.params = (0, _utils.extend)(defaults, params);
+ (0, _utils.extend)(pb, {
+ exposed: false,
+ opened: false,
+ activeIndex: pb.params.swiper.initialSlide,
+ url: pb.params.url,
+ swipeToClose: {
+ allow: true,
+ isTouched: false,
+ diff: undefined,
+ start: undefined,
+ current: undefined,
+ started: false,
+ activeSlide: undefined,
+ timeStart: undefined
+ }
+ }); // Install Modules
+
+ pb.useModules(); // Init
+
+ pb.init();
+ return _this;
+ }
+
+ var _proto = PhotoBrowser.prototype;
+
+ _proto.onSlideChange = function onSlideChange(swiper) {
+ var pb = this;
+ pb.activeIndex = swiper.activeIndex;
+ var current = swiper.activeIndex + 1;
+ var total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;
+
+ if (swiper.params.loop) {
+ total -= 2;
+ current -= swiper.loopedSlides;
+ if (current < 1) current = total + current;
+ if (current > total) current -= total;
+ }
+
+ var $activeSlideEl = pb.params.virtualSlides ? swiper.$wrapperEl.find(".swiper-slide[data-swiper-slide-index=\"" + swiper.activeIndex + "\"]") : swiper.slides.eq(swiper.activeIndex);
+ var $previousSlideEl = pb.params.virtualSlides ? swiper.$wrapperEl.find(".swiper-slide[data-swiper-slide-index=\"" + swiper.previousIndex + "\"]") : swiper.slides.eq(swiper.previousIndex);
+ var $currentEl = pb.$el.find('.photo-browser-current');
+ var $totalEl = pb.$el.find('.photo-browser-total');
+ var navbarEl;
+
+ if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {
+ navbarEl = pb.app.navbar.getElByPage(pb.$el);
+
+ if (navbarEl) {
+ $currentEl = (0, _dom.default)(navbarEl).find('.photo-browser-current');
+ $totalEl = (0, _dom.default)(navbarEl).find('.photo-browser-total');
+ }
+ }
+
+ if ($currentEl.length && $totalEl.length) {
+ $currentEl.text(current);
+ $totalEl.text(total);
+ if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];
+
+ if (navbarEl) {
+ pb.app.navbar.size(navbarEl);
+ }
+ } // Update captions
+
+
+ if (pb.captions.length > 0) {
+ var captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;
+ pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');
+ pb.$captionsContainerEl.find("[data-caption-index=\"" + captionIndex + "\"]").addClass('photo-browser-caption-active');
+ } // Stop Video
+
+
+ var previousSlideVideo = $previousSlideEl.find('video');
+
+ if (previousSlideVideo.length > 0) {
+ if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();
+ }
+ };
+
+ _proto.onTouchStart = function onTouchStart() {
+ var pb = this;
+ var swipeToClose = pb.swipeToClose;
+ if (!swipeToClose.allow) return;
+ swipeToClose.isTouched = true;
+ };
+
+ _proto.onTouchMove = function onTouchMove(e) {
+ var pb = this;
+ var swipeToClose = pb.swipeToClose;
+ if (!swipeToClose.isTouched) return;
+
+ if (!swipeToClose.started) {
+ swipeToClose.started = true;
+ swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (pb.params.virtualSlides) {
+ swipeToClose.activeSlide = pb.swiper.$wrapperEl.children('.swiper-slide-active');
+ } else {
+ swipeToClose.activeSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);
+ }
+
+ swipeToClose.timeStart = (0, _utils.now)();
+ }
+
+ e.preventDefault();
+ swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ swipeToClose.diff = swipeToClose.start - swipeToClose.current;
+ pb.$el.transition(0).transform("translate3d(0," + -swipeToClose.diff + "px,0)");
+ };
+
+ _proto.onTouchEnd = function onTouchEnd() {
+ var pb = this;
+ var swipeToClose = pb.swipeToClose;
+ swipeToClose.isTouched = false;
+
+ if (!swipeToClose.started) {
+ swipeToClose.started = false;
+ return;
+ }
+
+ swipeToClose.started = false;
+ swipeToClose.allow = false;
+ var diff = Math.abs(swipeToClose.diff);
+ var timeDiff = new Date().getTime() - swipeToClose.timeStart;
+
+ if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {
+ (0, _utils.nextTick)(function () {
+ if (pb.$el) {
+ if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');
+ }
+
+ pb.emit('local::swipeToClose', pb);
+ pb.$el.transform('').transition('');
+ pb.close();
+ swipeToClose.allow = true;
+ });
+ return;
+ }
+
+ if (diff !== 0) {
+ pb.$el.addClass('photo-browser-transitioning').transitionEnd(function () {
+ swipeToClose.allow = true;
+ pb.$el.removeClass('photo-browser-transitioning');
+ });
+ } else {
+ swipeToClose.allow = true;
+ }
+
+ (0, _utils.nextTick)(function () {
+ pb.$el.transform('').transition('');
+ });
+ } // Render Functions
+ ;
+
+ _proto.renderNavbar = function renderNavbar() {
+ var pb = this;
+ if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);
+ var iconsColor = pb.params.iconsColor;
+ if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';
+ var pageBackLinkText = (pb.app.theme === 'ios' || pb.app.theme === 'aurora') && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';
+ var renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;
+ var isPopup = pb.params.type !== 'page';
+ return (0, _$jsx.default)("div", {
+ class: "navbar navbar-photo-browser " + (pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : '')
+ }, (0, _$jsx.default)("div", {
+ class: "navbar-bg"
+ }), (0, _$jsx.default)("div", {
+ class: "navbar-inner navbar-inner-centered-title sliding"
+ }, !isPopup && (0, _$jsx.default)("div", {
+ class: "left"
+ }, (0, _$jsx.default)("a", {
+ class: "link " + (!pageBackLinkText ? 'icon-only' : '') + " back"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-back " + (iconsColor ? "color-" + iconsColor : '')
+ }), pageBackLinkText && (0, _$jsx.default)("span", null, pageBackLinkText))), renderNavbarCount && (0, _$jsx.default)("div", {
+ class: "title"
+ }, (0, _$jsx.default)("span", {
+ class: "photo-browser-current"
+ }), (0, _$jsx.default)("span", {
+ class: "photo-browser-of"
+ }, pb.params.navbarOfText), (0, _$jsx.default)("span", {
+ class: "photo-browser-total"
+ })), isPopup && (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link popup-close",
+ "data-popup": ".photo-browser-popup"
+ }, (0, _$jsx.default)("span", null, pb.params.popupCloseLinkText)))));
+ };
+
+ _proto.renderToolbar = function renderToolbar() {
+ var pb = this;
+ if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);
+ var iconsColor = pb.params.iconsColor;
+ if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';
+ return (0, _$jsx.default)("div", {
+ class: "toolbar toolbar-bottom tabbar"
+ }, (0, _$jsx.default)("div", {
+ class: "toolbar-inner"
+ }, (0, _$jsx.default)("a", {
+ class: "link photo-browser-prev"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-back " + (iconsColor ? "color-" + iconsColor : '')
+ })), (0, _$jsx.default)("a", {
+ class: "link photo-browser-next"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-forward " + (iconsColor ? "color-" + iconsColor : '')
+ }))));
+ };
+
+ _proto.renderCaption = function renderCaption(caption, index) {
+ var pb = this;
+ if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);
+ return (0, _$jsx.default)("div", {
+ class: "photo-browser-caption",
+ "data-caption-index": index
+ }, caption);
+ };
+
+ _proto.renderObject = function renderObject(photo, index) {
+ var pb = this;
+ if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);
+ return (0, _$jsx.default)("div", {
+ class: "photo-browser-slide photo-browser-object-slide swiper-slide",
+ "data-swiper-slide-index": index
+ }, photo.html ? photo.html : photo);
+ };
+
+ _proto.renderLazyPhoto = function renderLazyPhoto(photo, index) {
+ var pb = this;
+ if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);
+ return (0, _$jsx.default)("div", {
+ class: "photo-browser-slide photo-browser-slide-lazy swiper-slide",
+ "data-swiper-slide-index": index
+ }, (0, _$jsx.default)("div", {
+ class: "swiper-lazy-preloader"
+ }), (0, _$jsx.default)("span", {
+ class: "swiper-zoom-container"
+ }, (0, _$jsx.default)("img", {
+ "data-src": photo.url ? photo.url : photo,
+ class: "swiper-lazy"
+ })));
+ };
+
+ _proto.renderPhoto = function renderPhoto(photo, index) {
+ var pb = this;
+ if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);
+ return (0, _$jsx.default)("div", {
+ class: "photo-browser-slide swiper-slide",
+ "data-swiper-slide-index": index
+ }, (0, _$jsx.default)("span", {
+ class: "swiper-zoom-container"
+ }, (0, _$jsx.default)("img", {
+ src: photo.url ? photo.url : photo
+ })));
+ };
+
+ _proto.render = function render() {
+ var pb = this;
+ if (pb.params.render) return pb.params.render.call(pb, pb.params);
+ return (0, _$jsx.default)("div", {
+ class: "photo-browser photo-browser-" + pb.params.theme
+ }, (0, _$jsx.default)("div", {
+ class: "view"
+ }, (0, _$jsx.default)("div", {
+ class: "page photo-browser-page photo-browser-page-" + pb.params.theme + " no-toolbar " + (!pb.params.navbar ? 'no-navbar' : ''),
+ "data-name": "photo-browser-page"
+ }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), (0, _$jsx.default)("div", {
+ class: "photo-browser-captions photo-browser-captions-" + (pb.params.captionsTheme || pb.params.theme)
+ }, pb.params.photos.map(function (photo, index) {
+ if (photo.caption) return pb.renderCaption(photo.caption, index);
+ return '';
+ })), (0, _$jsx.default)("div", {
+ class: "photo-browser-swiper-container swiper-container"
+ }, (0, _$jsx.default)("div", {
+ class: "photo-browser-swiper-wrapper swiper-wrapper"
+ }, !pb.params.virtualSlides && pb.params.photos.map(function (photo, index) {
+ if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {
+ return pb.renderObject(photo, index);
+ }
+
+ if (pb.params.swiper.lazy === true || pb.params.swiper.lazy && pb.params.swiper.lazy.enabled) {
+ return pb.renderLazyPhoto(photo, index);
+ }
+
+ return pb.renderPhoto(photo, index);
+ }))))));
+ };
+
+ _proto.renderStandalone = function renderStandalone() {
+ var pb = this;
+ if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);
+ var standaloneHtml = "";
+ return standaloneHtml;
+ };
+
+ _proto.renderPage = function renderPage() {
+ var pb = this;
+ if (pb.params.renderPage) return pb.params.renderPage.call(pb);
+ var pageHtml = pb.render();
+ return pageHtml;
+ };
+
+ _proto.renderPopup = function renderPopup() {
+ var pb = this;
+ if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);
+ var popupHtml = "";
+ return popupHtml;
+ } // Callbacks
+ ;
+
+ _proto.onOpen = function onOpen(type, el) {
+ var pb = this;
+ var app = pb.app;
+ var $el = (0, _dom.default)(el);
+ $el[0].f7PhotoBrowser = pb;
+ pb.$el = $el;
+ pb.el = $el[0];
+ pb.openedIn = type;
+ pb.opened = true;
+ pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');
+ pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');
+ pb.slides = pb.$el.find('.photo-browser-slide');
+ pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');
+ pb.captions = pb.$el.find('.photo-browser-caption'); // Init Swiper
+
+ var clickTimeout;
+ var swiperParams = (0, _utils.extend)({}, pb.params.swiper, {
+ initialSlide: pb.activeIndex,
+ on: {
+ click: function click(e) {
+ clearTimeout(clickTimeout);
+
+ if (pb.params.exposition) {
+ clickTimeout = setTimeout(function () {
+ pb.expositionToggle();
+ }, 350);
+ }
+
+ pb.emit('local::tap', e);
+ pb.emit('local::click', e);
+ },
+ doubleClick: function doubleClick(e) {
+ clearTimeout(clickTimeout);
+ pb.emit('local::doubleTap', e);
+ pb.emit('local::doubleClick', e);
+ },
+ slideChange: function slideChange() {
+ var swiper = this;
+ pb.onSlideChange(swiper);
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ pb.emit.apply(pb, ['local::slideChange'].concat(args));
+ },
+ transitionStart: function transitionStart() {
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ pb.emit.apply(pb, ['local::transitionStart'].concat(args));
+ },
+ transitionEnd: function transitionEnd() {
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+
+ pb.emit.apply(pb, ['local::transitionEnd'].concat(args));
+ },
+ slideChangeTransitionStart: function slideChangeTransitionStart() {
+ var swiper = this;
+ pb.onSlideChange(swiper);
+
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ pb.emit.apply(pb, ['local::slideChangeTransitionStart'].concat(args));
+ },
+ slideChangeTransitionEnd: function slideChangeTransitionEnd() {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+
+ pb.emit.apply(pb, ['local::slideChangeTransitionEnd'].concat(args));
+ },
+ lazyImageLoad: function lazyImageLoad() {
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
+ args[_key6] = arguments[_key6];
+ }
+
+ pb.emit.apply(pb, ['local::lazyImageLoad'].concat(args));
+ },
+ lazyImageReady: function lazyImageReady() {
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
+ args[_key7] = arguments[_key7];
+ }
+
+ var slideEl = args[0];
+ (0, _dom.default)(slideEl).removeClass('photo-browser-slide-lazy');
+ pb.emit.apply(pb, ['local::lazyImageReady'].concat(args));
+ }
+ }
+ });
+
+ if (pb.params.swipeToClose && pb.params.type !== 'page') {
+ (0, _utils.extend)(swiperParams.on, {
+ touchStart: function touchStart(swiper, e) {
+ pb.onTouchStart(e);
+ pb.emit('local::touchStart', e);
+ },
+ touchMoveOpposite: function touchMoveOpposite(swiper, e) {
+ pb.onTouchMove(e);
+ pb.emit('local::touchMoveOpposite', e);
+ },
+ touchEnd: function touchEnd(swiper, e) {
+ pb.onTouchEnd(e);
+ pb.emit('local::touchEnd', e);
+ }
+ });
+ }
+
+ if (pb.params.virtualSlides) {
+ (0, _utils.extend)(swiperParams, {
+ virtual: {
+ slides: pb.params.photos,
+ renderSlide: function renderSlide(photo, index) {
+ if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {
+ return pb.renderObject(photo, index);
+ }
+
+ if (pb.params.swiper.lazy === true || pb.params.swiper.lazy && pb.params.swiper.lazy.enabled) {
+ return pb.renderLazyPhoto(photo, index);
+ }
+
+ return pb.renderPhoto(photo, index);
+ }
+ }
+ });
+ }
+
+ var window = (0, _ssrWindow.getWindow)();
+ pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl, swiperParams) : new window.Swiper(pb.$swiperContainerEl, swiperParams);
+
+ if (pb.activeIndex === 0) {
+ pb.onSlideChange(pb.swiper);
+ }
+
+ if (pb.$el) {
+ pb.$el.trigger('photobrowser:open');
+ }
+
+ pb.emit('local::open photoBrowserOpen', pb);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var pb = this;
+
+ if (pb.$el && pb.params.type === 'standalone') {
+ pb.$el.css('animation', 'none');
+ }
+
+ if (pb.$el) {
+ pb.$el.trigger('photobrowser:opened');
+ }
+
+ pb.emit('local::opened photoBrowserOpened', pb);
+ };
+
+ _proto.onClose = function onClose() {
+ var pb = this;
+ if (pb.destroyed) return; // Destroy Swiper
+
+ if (pb.swiper && pb.swiper.destroy) {
+ pb.swiper.destroy(true, false);
+ pb.swiper = null;
+ delete pb.swiper;
+ }
+
+ if (pb.$el) {
+ pb.$el.trigger('photobrowser:close');
+ }
+
+ pb.emit('local::close photoBrowserClose', pb);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var pb = this;
+ if (pb.destroyed) return;
+ pb.opened = false;
+ pb.$el = null;
+ pb.el = null;
+ delete pb.$el;
+ delete pb.el;
+
+ if (pb.$el) {
+ pb.$el.trigger('photobrowser:closed');
+ }
+
+ pb.emit('local::closed photoBrowserClosed', pb);
+ } // Open
+ ;
+
+ _proto.openPage = function openPage() {
+ var pb = this;
+ if (pb.opened) return pb;
+ var pageHtml = pb.renderPage();
+ pb.view.router.navigate({
+ url: pb.url,
+ route: {
+ content: pageHtml,
+ path: pb.url,
+ on: {
+ pageBeforeIn: function pageBeforeIn(e, page) {
+ pb.view.$el.addClass("with-photo-browser-page with-photo-browser-page-" + pb.params.theme);
+ pb.onOpen('page', page.el);
+ },
+ pageAfterIn: function pageAfterIn(e, page) {
+ pb.onOpened('page', page.el);
+ },
+ pageBeforeOut: function pageBeforeOut(e, page) {
+ pb.view.$el.removeClass("with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-" + pb.params.theme);
+ pb.onClose('page', page.el);
+ },
+ pageAfterOut: function pageAfterOut(e, page) {
+ pb.onClosed('page', page.el);
+ }
+ }
+ }
+ });
+ return pb;
+ };
+
+ _proto.openStandalone = function openStandalone() {
+ var pb = this;
+ if (pb.opened) return pb;
+ var standaloneHtml = pb.renderStandalone();
+ var popupParams = {
+ backdrop: false,
+ content: standaloneHtml,
+ on: {
+ popupOpen: function popupOpen(popup) {
+ pb.onOpen('popup', popup.el);
+ },
+ popupOpened: function popupOpened(popup) {
+ pb.onOpened('popup', popup.el);
+ },
+ popupClose: function popupClose(popup) {
+ pb.onClose('popup', popup.el);
+ },
+ popupClosed: function popupClosed(popup) {
+ pb.onClosed('popup', popup.el);
+ }
+ }
+ };
+
+ if (pb.params.routableModals && pb.view) {
+ pb.view.router.navigate({
+ url: pb.url,
+ route: {
+ path: pb.url,
+ popup: popupParams
+ }
+ });
+ } else {
+ pb.modal = pb.app.popup.create(popupParams).open();
+ }
+
+ return pb;
+ };
+
+ _proto.openPopup = function openPopup() {
+ var pb = this;
+ if (pb.opened) return pb;
+ var popupHtml = pb.renderPopup();
+ var popupParams = {
+ content: popupHtml,
+ push: pb.params.popupPush,
+ on: {
+ popupOpen: function popupOpen(popup) {
+ pb.onOpen('popup', popup.el);
+ },
+ popupOpened: function popupOpened(popup) {
+ pb.onOpened('popup', popup.el);
+ },
+ popupClose: function popupClose(popup) {
+ pb.onClose('popup', popup.el);
+ },
+ popupClosed: function popupClosed(popup) {
+ pb.onClosed('popup', popup.el);
+ }
+ }
+ };
+
+ if (pb.params.routableModals && pb.view) {
+ pb.view.router.navigate({
+ url: pb.url,
+ route: {
+ path: pb.url,
+ popup: popupParams
+ }
+ });
+ } else {
+ pb.modal = pb.app.popup.create(popupParams).open();
+ }
+
+ return pb;
+ } // Exposition
+ ;
+
+ _proto.expositionEnable = function expositionEnable() {
+ var pb = this;
+
+ if (pb.params.type === 'page') {
+ pb.view.$el.addClass('with-photo-browser-page-exposed');
+ }
+
+ if (pb.$el) pb.$el.addClass('photo-browser-exposed');
+ if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');
+ pb.exposed = true;
+ return pb;
+ };
+
+ _proto.expositionDisable = function expositionDisable() {
+ var pb = this;
+
+ if (pb.params.type === 'page') {
+ pb.view.$el.removeClass('with-photo-browser-page-exposed');
+ }
+
+ if (pb.$el) pb.$el.removeClass('photo-browser-exposed');
+ if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');
+ pb.exposed = false;
+ return pb;
+ };
+
+ _proto.expositionToggle = function expositionToggle() {
+ var pb = this;
+
+ if (pb.params.type === 'page') {
+ pb.view.$el.toggleClass('with-photo-browser-page-exposed');
+ }
+
+ if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');
+ if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');
+ pb.exposed = !pb.exposed;
+ return pb;
+ };
+
+ _proto.open = function open(index) {
+ var pb = this;
+ var type = pb.params.type;
+
+ if (pb.opened) {
+ if (pb.swiper && typeof index !== 'undefined') {
+ pb.swiper.slideTo(parseInt(index, 10));
+ }
+
+ return pb;
+ }
+
+ if (typeof index !== 'undefined') {
+ pb.activeIndex = index;
+ }
+
+ if (type === 'standalone') {
+ pb.openStandalone();
+ }
+
+ if (type === 'page') {
+ pb.openPage();
+ }
+
+ if (type === 'popup') {
+ pb.openPopup();
+ }
+
+ return pb;
+ };
+
+ _proto.close = function close() {
+ var pb = this;
+ if (!pb.opened) return pb;
+
+ if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {
+ pb.view.router.back();
+ } else {
+ pb.modal.once('modalClosed', function () {
+ (0, _utils.nextTick)(function () {
+ if (pb.destroyed) return;
+ pb.modal.destroy();
+ delete pb.modal;
+ });
+ });
+ pb.modal.close();
+ }
+
+ return pb;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.init = function init() {};
+
+ _proto.destroy = function destroy() {
+ var pb = this;
+ pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);
+
+ if (pb.$el) {
+ pb.$el.trigger('photobrowser:beforedestroy');
+ pb.$el[0].f7PhotoBrowser = null;
+ delete pb.$el[0].f7PhotoBrowser;
+ }
+
+ (0, _utils.deleteProps)(pb);
+ pb.destroyed = true;
+ pb = null;
+ };
+
+ _createClass(PhotoBrowser, [{
+ key: "view",
+ get: function get() {
+ var params = this.params,
+ app = this.app;
+ return params.view || app.views.main;
+ }
+ }]);
+
+ return PhotoBrowser;
+}(_class.default);
+
+var _default = PhotoBrowser;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/photo-browser/photo-browser.js b/www/assets/framework7/cjs/components/photo-browser/photo-browser.js
new file mode 100644
index 000000000..061bcdeb9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/photo-browser/photo-browser.js
@@ -0,0 +1,78 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _photoBrowserClass = _interopRequireDefault(require("./photo-browser-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'photoBrowser',
+ params: {
+ photoBrowser: {
+ photos: [],
+ exposition: true,
+ expositionHideCaptions: false,
+ type: 'standalone',
+ navbar: true,
+ toolbar: true,
+ theme: 'light',
+ captionsTheme: undefined,
+ iconsColor: undefined,
+ popupPush: false,
+ swipeToClose: true,
+ pageBackLinkText: 'Back',
+ popupCloseLinkText: 'Close',
+ navbarOfText: 'of',
+ navbarShowCount: undefined,
+ view: undefined,
+ url: 'photos/',
+ routableModals: false,
+ virtualSlides: true,
+ renderNavbar: undefined,
+ renderToolbar: undefined,
+ renderCaption: undefined,
+ renderObject: undefined,
+ renderLazyPhoto: undefined,
+ renderPhoto: undefined,
+ renderPage: undefined,
+ renderPopup: undefined,
+ renderStandalone: undefined,
+ swiper: {
+ initialSlide: 0,
+ spaceBetween: 20,
+ speed: 300,
+ loop: false,
+ preloadImages: true,
+ navigation: {
+ nextEl: '.photo-browser-next',
+ prevEl: '.photo-browser-prev'
+ },
+ zoom: {
+ enabled: true,
+ maxRatio: 3,
+ minRatio: 1
+ },
+ lazy: {
+ enabled: true
+ }
+ }
+ }
+ },
+ create: function create() {
+ var app = this;
+ app.photoBrowser = (0, _constructorMethods.default)({
+ defaultSelector: '.photo-browser-popup, .photo-browser-page',
+ constructor: _photoBrowserClass.default,
+ app: app,
+ domProp: 'f7PhotoBrowser'
+ });
+ },
+ static: {
+ PhotoBrowser: _photoBrowserClass.default
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/picker/picker-class.js b/www/assets/framework7/cjs/components/picker/picker-class.js
new file mode 100644
index 000000000..4ea48fb3d
--- /dev/null
+++ b/www/assets/framework7/cjs/components/picker/picker-class.js
@@ -0,0 +1,704 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getDevice = require("../../shared/get-device");
+
+var _pickerColumn = _interopRequireDefault(require("./picker-column"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Picker = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Picker, _Framework7Class);
+
+ function Picker(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var picker = _assertThisInitialized(_this);
+
+ var device = (0, _getDevice.getDevice)();
+ var window = (0, _ssrWindow.getWindow)();
+ picker.params = (0, _utils.extend)({}, app.params.picker, params);
+ var $containerEl;
+
+ if (picker.params.containerEl) {
+ $containerEl = (0, _dom.default)(picker.params.containerEl);
+ if ($containerEl.length === 0) return picker || _assertThisInitialized(_this);
+ }
+
+ var $inputEl;
+
+ if (picker.params.inputEl) {
+ $inputEl = (0, _dom.default)(picker.params.inputEl);
+ }
+
+ var $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;
+
+ if (picker.params.scrollToEl) {
+ var scrollToEl = (0, _dom.default)(picker.params.scrollToEl);
+
+ if (scrollToEl.length > 0) {
+ $scrollToEl = scrollToEl;
+ }
+ }
+
+ (0, _utils.extend)(picker, {
+ app: app,
+ $containerEl: $containerEl,
+ containerEl: $containerEl && $containerEl[0],
+ inline: $containerEl && $containerEl.length > 0,
+ needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,
+ cols: [],
+ $inputEl: $inputEl,
+ inputEl: $inputEl && $inputEl[0],
+ $scrollToEl: $scrollToEl,
+ initialized: false,
+ opened: false,
+ url: picker.params.url
+ });
+
+ function onResize() {
+ picker.resizeCols();
+ }
+
+ function onInputClick() {
+ picker.open();
+ }
+
+ function onInputFocus(e) {
+ e.preventDefault();
+ }
+
+ var htmlTouchStartTarget = null;
+
+ function onHtmlTouchStart(e) {
+ htmlTouchStartTarget = e.target;
+ }
+
+ function onHtmlClick(e) {
+ if (picker.destroyed || !picker.params) return;
+ var $targetEl = (0, _dom.default)(e.target);
+ if (picker.isPopover()) return;
+ if (!picker.opened || picker.closing) return;
+ if ($targetEl.closest('[class*="backdrop"]').length) return;
+
+ if ($inputEl && $inputEl.length > 0) {
+ if (htmlTouchStartTarget === e.target && $targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {
+ picker.close();
+ }
+ } else if ((0, _dom.default)(e.target).closest('.sheet-modal').length === 0) {
+ picker.close();
+ }
+ } // Events
+
+
+ (0, _utils.extend)(picker, {
+ attachResizeEvent: function attachResizeEvent() {
+ app.on('resize', onResize);
+ },
+ detachResizeEvent: function detachResizeEvent() {
+ app.off('resize', onResize);
+ },
+ attachInputEvents: function attachInputEvents() {
+ picker.$inputEl.on('click', onInputClick);
+
+ if (picker.params.inputReadOnly) {
+ picker.$inputEl.on('focus mousedown', onInputFocus);
+
+ if (picker.$inputEl[0]) {
+ picker.$inputEl[0].f7ValidateReadonly = true;
+ }
+ }
+ },
+ detachInputEvents: function detachInputEvents() {
+ picker.$inputEl.off('click', onInputClick);
+
+ if (picker.params.inputReadOnly) {
+ picker.$inputEl.off('focus mousedown', onInputFocus);
+
+ if (picker.$inputEl[0]) {
+ delete picker.$inputEl[0].f7ValidateReadonly;
+ }
+ }
+ },
+ attachHtmlEvents: function attachHtmlEvents() {
+ app.on('click', onHtmlClick);
+ app.on('touchstart', onHtmlTouchStart);
+ },
+ detachHtmlEvents: function detachHtmlEvents() {
+ app.off('click', onHtmlClick);
+ app.off('touchstart', onHtmlTouchStart);
+ }
+ });
+ picker.init();
+ return picker || _assertThisInitialized(_this);
+ }
+
+ var _proto = Picker.prototype;
+
+ _proto.initInput = function initInput() {
+ var picker = this;
+ if (!picker.$inputEl) return;
+ if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);
+ };
+
+ _proto.resizeCols = function resizeCols() {
+ var picker = this;
+ if (!picker.opened) return;
+
+ for (var i = 0; i < picker.cols.length; i += 1) {
+ if (!picker.cols[i].divider) {
+ picker.cols[i].calcSize();
+ picker.cols[i].setValue(picker.cols[i].value, 0, false);
+ }
+ }
+ };
+
+ _proto.isPopover = function isPopover() {
+ var picker = this;
+ var app = picker.app,
+ modal = picker.modal,
+ params = picker.params;
+ var device = (0, _getDevice.getDevice)();
+ if (params.openIn === 'sheet') return false;
+ if (modal && modal.type !== 'popover') return false;
+
+ if (!picker.inline && picker.inputEl) {
+ if (params.openIn === 'popover') return true;
+
+ if (device.ios) {
+ return !!device.ipad;
+ }
+
+ if (app.width >= 768) {
+ return true;
+ }
+
+ if (device.desktop && app.theme === 'aurora') {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ _proto.formatValue = function formatValue() {
+ var picker = this;
+ var value = picker.value,
+ displayValue = picker.displayValue;
+
+ if (picker.params.formatValue) {
+ return picker.params.formatValue.call(picker, value, displayValue);
+ }
+
+ return value.join(' ');
+ };
+
+ _proto.setValue = function setValue(values, transition) {
+ var picker = this;
+ var valueIndex = 0;
+
+ if (picker.cols.length === 0) {
+ picker.value = values;
+ picker.updateValue(values);
+ return;
+ }
+
+ for (var i = 0; i < picker.cols.length; i += 1) {
+ if (picker.cols[i] && !picker.cols[i].divider) {
+ picker.cols[i].setValue(values[valueIndex], transition);
+ valueIndex += 1;
+ }
+ }
+ };
+
+ _proto.getValue = function getValue() {
+ var picker = this;
+ return picker.value;
+ };
+
+ _proto.updateValue = function updateValue(forceValues) {
+ var picker = this;
+ var newValue = forceValues || [];
+ var newDisplayValue = [];
+ var column;
+
+ if (picker.cols.length === 0) {
+ var noDividerColumns = picker.params.cols.filter(function (c) {
+ return !c.divider;
+ });
+
+ for (var i = 0; i < noDividerColumns.length; i += 1) {
+ column = noDividerColumns[i];
+
+ if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {
+ newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);
+ } else {
+ newDisplayValue.push(newValue[i]);
+ }
+ }
+ } else {
+ for (var _i = 0; _i < picker.cols.length; _i += 1) {
+ if (!picker.cols[_i].divider) {
+ newValue.push(picker.cols[_i].value);
+ newDisplayValue.push(picker.cols[_i].displayValue);
+ }
+ }
+ }
+
+ if (newValue.indexOf(undefined) >= 0) {
+ return;
+ }
+
+ picker.value = newValue;
+ picker.displayValue = newDisplayValue;
+ picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);
+
+ if (picker.inputEl) {
+ picker.$inputEl.val(picker.formatValue());
+ picker.$inputEl.trigger('change');
+ }
+ };
+
+ _proto.initColumn = function initColumn(colEl, updateItems) {
+ var picker = this;
+
+ _pickerColumn.default.call(picker, colEl, updateItems);
+ } // eslint-disable-next-line
+ ;
+
+ _proto.destroyColumn = function destroyColumn(colEl) {
+ var picker = this;
+ var $colEl = (0, _dom.default)(colEl);
+ var index = $colEl.index();
+
+ if (picker.cols[index] && picker.cols[index].destroy) {
+ picker.cols[index].destroy();
+ }
+ };
+
+ _proto.renderToolbar = function renderToolbar() {
+ var picker = this;
+ if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);
+ return (0, _$jsx.default)("div", {
+ class: "toolbar toolbar-top no-shadow"
+ }, (0, _$jsx.default)("div", {
+ class: "toolbar-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "left"
+ }), (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link sheet-close popover-close"
+ }, picker.params.toolbarCloseText))));
+ } // eslint-disable-next-line
+ ;
+
+ _proto.renderColumn = function renderColumn(col, onlyItems) {
+ var colClasses = "picker-column " + (col.textAlign ? "picker-column-" + col.textAlign : '') + " " + (col.cssClass || '');
+ var columnHtml;
+ var columnItemsHtml;
+
+ if (col.divider) {
+ // prettier-ignore
+ columnHtml = "\n " + col.content + "
\n ";
+ } else {
+ // prettier-ignore
+ columnItemsHtml = col.values.map(function (value, index) {
+ return "\n \n " + (col.displayValues ? col.displayValues[index] : value) + "\n
\n ";
+ }).join(''); // prettier-ignore
+
+ columnHtml = "\n \n
" + columnItemsHtml + "
\n
\n ";
+ }
+
+ return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();
+ };
+
+ _proto.renderInline = function renderInline() {
+ var picker = this;
+ var _picker$params = picker.params,
+ rotateEffect = _picker$params.rotateEffect,
+ cssClass = _picker$params.cssClass,
+ toolbar = _picker$params.toolbar;
+ var inlineHtml = (0, _$jsx.default)("div", {
+ class: "picker picker-inline " + (rotateEffect ? 'picker-3d' : '') + " " + (cssClass || '')
+ }, toolbar && picker.renderToolbar(), (0, _$jsx.default)("div", {
+ class: "picker-columns"
+ }, picker.cols.map(function (col) {
+ return picker.renderColumn(col);
+ }), (0, _$jsx.default)("div", {
+ class: "picker-center-highlight"
+ })));
+ return inlineHtml;
+ };
+
+ _proto.renderSheet = function renderSheet() {
+ var picker = this;
+ var _picker$params2 = picker.params,
+ rotateEffect = _picker$params2.rotateEffect,
+ cssClass = _picker$params2.cssClass,
+ toolbar = _picker$params2.toolbar;
+ var sheetHtml = (0, _$jsx.default)("div", {
+ class: "sheet-modal picker picker-sheet " + (rotateEffect ? 'picker-3d' : '') + " " + (cssClass || '')
+ }, toolbar && picker.renderToolbar(), (0, _$jsx.default)("div", {
+ class: "sheet-modal-inner picker-columns"
+ }, picker.cols.map(function (col) {
+ return picker.renderColumn(col);
+ }), (0, _$jsx.default)("div", {
+ class: "picker-center-highlight"
+ })));
+ return sheetHtml;
+ };
+
+ _proto.renderPopover = function renderPopover() {
+ var picker = this;
+ var _picker$params3 = picker.params,
+ rotateEffect = _picker$params3.rotateEffect,
+ cssClass = _picker$params3.cssClass,
+ toolbar = _picker$params3.toolbar;
+ var popoverHtml = (0, _$jsx.default)("div", {
+ class: "popover picker-popover"
+ }, (0, _$jsx.default)("div", {
+ class: "popover-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "picker " + (rotateEffect ? 'picker-3d' : '') + " " + (cssClass || '')
+ }, toolbar && picker.renderToolbar(), (0, _$jsx.default)("div", {
+ class: "picker-columns"
+ }, picker.cols.map(function (col) {
+ return picker.renderColumn(col);
+ }), (0, _$jsx.default)("div", {
+ class: "picker-center-highlight"
+ })))));
+ return popoverHtml;
+ };
+
+ _proto.render = function render() {
+ var picker = this;
+ if (picker.params.render) return picker.params.render.call(picker);
+
+ if (!picker.inline) {
+ if (picker.isPopover()) return picker.renderPopover();
+ return picker.renderSheet();
+ }
+
+ return picker.renderInline();
+ };
+
+ _proto.onOpen = function onOpen() {
+ var picker = this;
+ var initialized = picker.initialized,
+ $el = picker.$el,
+ app = picker.app,
+ $inputEl = picker.$inputEl,
+ inline = picker.inline,
+ value = picker.value,
+ params = picker.params;
+ picker.opened = true;
+ picker.closing = false;
+ picker.opening = true; // Init main events
+
+ picker.attachResizeEvent(); // Init cols
+
+ $el.find('.picker-column').each(function (colEl) {
+ var updateItems = true;
+
+ if (!initialized && params.value || initialized && value) {
+ updateItems = false;
+ }
+
+ picker.initColumn(colEl, updateItems);
+ }); // Set value
+
+ if (!initialized) {
+ if (value) picker.setValue(value, 0);else if (params.value) {
+ picker.setValue(params.value, 0);
+ }
+ } else if (value) {
+ picker.setValue(value, 0);
+ } // Extra focus
+
+
+ if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
+ $inputEl.trigger('focus');
+ }
+
+ picker.initialized = true; // Trigger events
+
+ if ($el) {
+ $el.trigger('picker:open');
+ }
+
+ if ($inputEl) {
+ $inputEl.trigger('picker:open');
+ }
+
+ picker.emit('local::open pickerOpen', picker);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var picker = this;
+ picker.opening = false;
+
+ if (picker.$el) {
+ picker.$el.trigger('picker:opened');
+ }
+
+ if (picker.$inputEl) {
+ picker.$inputEl.trigger('picker:opened');
+ }
+
+ picker.emit('local::opened pickerOpened', picker);
+ };
+
+ _proto.onClose = function onClose() {
+ var picker = this;
+ var app = picker.app;
+ picker.opening = false;
+ picker.closing = true; // Detach events
+
+ picker.detachResizeEvent();
+ picker.cols.forEach(function (col) {
+ if (col.destroy) col.destroy();
+ });
+
+ if (picker.$inputEl) {
+ if (app.theme === 'md') {
+ picker.$inputEl.trigger('blur');
+ } else {
+ var validate = picker.$inputEl.attr('validate');
+ var required = picker.$inputEl.attr('required');
+
+ if (validate && required) {
+ app.input.validate(picker.$inputEl);
+ }
+ }
+ }
+
+ if (picker.$el) {
+ picker.$el.trigger('picker:close');
+ }
+
+ if (picker.$inputEl) {
+ picker.$inputEl.trigger('picker:close');
+ }
+
+ picker.emit('local::close pickerClose', picker);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var picker = this;
+ picker.opened = false;
+ picker.closing = false;
+
+ if (!picker.inline) {
+ (0, _utils.nextTick)(function () {
+ if (picker.modal && picker.modal.el && picker.modal.destroy) {
+ if (!picker.params.routableModals) {
+ picker.modal.destroy();
+ }
+ }
+
+ delete picker.modal;
+ });
+ }
+
+ if (picker.$el) {
+ picker.$el.trigger('picker:closed');
+ }
+
+ if (picker.$inputEl) {
+ picker.$inputEl.trigger('picker:closed');
+ }
+
+ picker.emit('local::closed pickerClosed', picker);
+ };
+
+ _proto.open = function open() {
+ var picker = this;
+ var app = picker.app,
+ opened = picker.opened,
+ inline = picker.inline,
+ $inputEl = picker.$inputEl,
+ $scrollToEl = picker.$scrollToEl,
+ params = picker.params;
+ if (opened) return;
+
+ if (picker.cols.length === 0 && params.cols.length) {
+ params.cols.forEach(function (col) {
+ picker.cols.push(col);
+ });
+ }
+
+ if (inline) {
+ picker.$el = (0, _dom.default)(picker.render());
+ picker.$el[0].f7Picker = picker;
+ picker.$containerEl.append(picker.$el);
+ picker.onOpen();
+ picker.onOpened();
+ return;
+ }
+
+ var isPopover = picker.isPopover();
+ var modalType = isPopover ? 'popover' : 'sheet';
+ var modalParams = {
+ targetEl: $inputEl,
+ scrollToEl: $scrollToEl,
+ content: picker.render(),
+ backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,
+ on: {
+ open: function open() {
+ var modal = this;
+ picker.modal = modal;
+ picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;
+ picker.$el[0].f7Picker = picker;
+ picker.onOpen();
+ },
+ opened: function opened() {
+ picker.onOpened();
+ },
+ close: function close() {
+ picker.onClose();
+ },
+ closed: function closed() {
+ picker.onClosed();
+ }
+ }
+ };
+
+ if (modalType === 'sheet') {
+ modalParams.push = params.sheetPush;
+ modalParams.swipeToClose = params.sheetSwipeToClose;
+ }
+
+ if (params.routableModals && picker.view) {
+ var _route;
+
+ picker.view.router.navigate({
+ url: picker.url,
+ route: (_route = {
+ path: picker.url
+ }, _route[modalType] = modalParams, _route)
+ });
+ } else {
+ picker.modal = app[modalType].create(modalParams);
+ picker.modal.open();
+ }
+ };
+
+ _proto.close = function close() {
+ var picker = this;
+ var opened = picker.opened,
+ inline = picker.inline;
+ if (!opened) return;
+
+ if (inline) {
+ picker.onClose();
+ picker.onClosed();
+ return;
+ }
+
+ if (picker.params.routableModals && picker.view) {
+ picker.view.router.back();
+ } else {
+ picker.modal.close();
+ }
+ };
+
+ _proto.init = function init() {
+ var picker = this;
+ picker.initInput();
+
+ if (picker.inline) {
+ picker.open();
+ picker.emit('local::init pickerInit', picker);
+ return;
+ }
+
+ if (!picker.initialized && picker.params.value) {
+ picker.setValue(picker.params.value);
+ } // Attach input Events
+
+
+ if (picker.$inputEl) {
+ picker.attachInputEvents();
+ }
+
+ if (picker.params.closeByOutsideClick) {
+ picker.attachHtmlEvents();
+ }
+
+ picker.emit('local::init pickerInit', picker);
+ };
+
+ _proto.destroy = function destroy() {
+ var picker = this;
+ if (picker.destroyed) return;
+ var $el = picker.$el;
+ picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);
+ if ($el) $el.trigger('picker:beforedestroy');
+ picker.close(); // Detach Events
+
+ if (picker.$inputEl) {
+ picker.detachInputEvents();
+ }
+
+ if (picker.params.closeByOutsideClick) {
+ picker.detachHtmlEvents();
+ }
+
+ if ($el && $el.length) delete picker.$el[0].f7Picker;
+ (0, _utils.deleteProps)(picker);
+ picker.destroyed = true;
+ };
+
+ _createClass(Picker, [{
+ key: "view",
+ get: function get() {
+ var app = this.app,
+ params = this.params,
+ $inputEl = this.$inputEl;
+ var view;
+
+ if (params.view) {
+ view = params.view;
+ } else if ($inputEl) {
+ view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
+ }
+
+ if (!view) view = app.views.main;
+ return view;
+ }
+ }]);
+
+ return Picker;
+}(_class.default);
+
+var _default = Picker;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/picker/picker-column.js b/www/assets/framework7/cjs/components/picker/picker-column.js
new file mode 100644
index 000000000..9dd68dd21
--- /dev/null
+++ b/www/assets/framework7/cjs/components/picker/picker-column.js
@@ -0,0 +1,389 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = pickerColumn;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function pickerColumn(colEl, updateItems) {
+ var picker = this;
+ var app = picker.app;
+ var $colEl = (0, _dom.default)(colEl);
+ var colIndex = $colEl.index();
+ var col = picker.cols[colIndex];
+ if (col.divider) return;
+ col.$el = $colEl;
+ col.el = $colEl[0];
+ col.$itemsEl = col.$el.find('.picker-items');
+ col.items = col.$itemsEl.find('.picker-item');
+ var itemHeight;
+ var itemsHeight;
+ var minTranslate;
+ var maxTranslate;
+ var animationFrameId;
+
+ function updateDuringScroll() {
+ animationFrameId = (0, _utils.requestAnimationFrame)(function () {
+ col.updateItems(undefined, undefined, 0);
+ updateDuringScroll();
+ });
+ }
+
+ col.replaceValues = function replaceColValues(values, displayValues) {
+ col.detachEvents();
+ col.values = values;
+ col.displayValues = displayValues;
+ col.$itemsEl.html(picker.renderColumn(col, true));
+ col.items = col.$itemsEl.find('.picker-item');
+ col.calcSize();
+ col.setValue(col.values[0], 0, true);
+ col.attachEvents();
+ };
+
+ col.calcSize = function calcColSize() {
+ if (picker.params.rotateEffect) {
+ col.$el.removeClass('picker-column-absolute');
+ if (!col.width) col.$el.css({
+ width: ''
+ });
+ }
+
+ var colWidth = 0;
+ var colHeight = col.$el[0].offsetHeight;
+ itemHeight = col.items[0].offsetHeight;
+ itemsHeight = itemHeight * col.items.length;
+ minTranslate = colHeight / 2 - itemsHeight + itemHeight / 2;
+ maxTranslate = colHeight / 2 - itemHeight / 2;
+
+ if (col.width) {
+ colWidth = col.width;
+ if (parseInt(colWidth, 10) === colWidth) colWidth += 'px';
+ col.$el.css({
+ width: colWidth
+ });
+ }
+
+ if (picker.params.rotateEffect) {
+ if (!col.width) {
+ col.items.each(function (itemEl) {
+ var item = (0, _dom.default)(itemEl).children('span');
+ colWidth = Math.max(colWidth, item[0].offsetWidth);
+ });
+ col.$el.css({
+ width: colWidth + 2 + "px"
+ });
+ }
+
+ col.$el.addClass('picker-column-absolute');
+ }
+ };
+
+ col.setValue = function setColValue(newValue, transition, valueCallbacks) {
+ if (transition === void 0) {
+ transition = '';
+ }
+
+ var newActiveIndex = col.$itemsEl.find(".picker-item[data-picker-value=\"" + newValue + "\"]").index();
+
+ if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {
+ return;
+ }
+
+ var newTranslate = -newActiveIndex * itemHeight + maxTranslate; // Update wrapper
+
+ col.$itemsEl.transition(transition);
+ col.$itemsEl.transform("translate3d(0," + newTranslate + "px,0)"); // Watch items
+
+ if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {
+ cancelAnimationFrame(animationFrameId);
+ col.$itemsEl.transitionEnd(function () {
+ cancelAnimationFrame(animationFrameId);
+ });
+ updateDuringScroll();
+ } // Update items
+
+
+ col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);
+ };
+
+ col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {
+ if (typeof translate === 'undefined') {
+ // eslint-disable-next-line
+ translate = (0, _utils.getTranslate)(col.$itemsEl[0], 'y');
+ }
+
+ if (typeof activeIndex === 'undefined') // eslint-disable-next-line
+ activeIndex = -Math.round((translate - maxTranslate) / itemHeight); // eslint-disable-next-line
+
+ if (activeIndex < 0) activeIndex = 0; // eslint-disable-next-line
+
+ if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;
+ var previousActiveIndex = col.activeIndex;
+ col.activeIndex = activeIndex;
+ col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');
+ col.items.transition(transition);
+ var selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform(''); // Set 3D rotate effect
+
+ if (picker.params.rotateEffect) {
+ col.items.each(function (itemEl) {
+ var $itemEl = (0, _dom.default)(itemEl);
+ var itemOffsetTop = $itemEl.index() * itemHeight;
+ var translateOffset = maxTranslate - translate;
+ var itemOffset = itemOffsetTop - translateOffset;
+ var percentage = itemOffset / itemHeight;
+ var itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;
+ var angle = -18 * percentage;
+ if (angle > 180) angle = 180;
+ if (angle < -180) angle = -180;
+
+ if (Math.abs(percentage) > itemsFit) {
+ $itemEl.addClass('picker-item-far');
+ } else {
+ $itemEl.removeClass('picker-item-far');
+ }
+
+ $itemEl.transform("translate3d(0, " + (-translate + maxTranslate) + "px, " + (picker.needsOriginFix ? -110 : 0) + "px) rotateX(" + angle + "deg)");
+ });
+ }
+
+ if (valueCallbacks || typeof valueCallbacks === 'undefined') {
+ // Update values
+ col.value = selectedItem.attr('data-picker-value');
+ col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value; // On change callback
+
+ if (previousActiveIndex !== activeIndex) {
+ if (col.onChange) {
+ col.onChange(picker, col.value, col.displayValue);
+ }
+
+ picker.updateValue();
+ }
+ }
+ };
+
+ var allowItemClick = true;
+ var isTouched;
+ var isMoved;
+ var touchStartY;
+ var touchCurrentY;
+ var touchStartTime;
+ var touchEndTime;
+ var startTranslate;
+ var returnTo;
+ var currentTranslate;
+ var prevTranslate;
+ var velocityTranslate;
+
+ function handleTouchStart(e) {
+ if (isMoved || isTouched) return;
+ e.preventDefault();
+ isTouched = true;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchCurrentY = touchStartY;
+ touchStartTime = new Date().getTime();
+ allowItemClick = true;
+ startTranslate = (0, _utils.getTranslate)(col.$itemsEl[0], 'y');
+ currentTranslate = startTranslate;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ e.preventDefault();
+ allowItemClick = false;
+ touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (!isMoved) {
+ // First move
+ cancelAnimationFrame(animationFrameId);
+ isMoved = true;
+ startTranslate = (0, _utils.getTranslate)(col.$itemsEl[0], 'y');
+ currentTranslate = startTranslate;
+ col.$itemsEl.transition(0);
+ }
+
+ var diff = touchCurrentY - touchStartY;
+ currentTranslate = startTranslate + diff;
+ returnTo = undefined; // Normalize translate
+
+ if (currentTranslate < minTranslate) {
+ currentTranslate = minTranslate - Math.pow(minTranslate - currentTranslate, 0.8);
+ returnTo = 'min';
+ }
+
+ if (currentTranslate > maxTranslate) {
+ currentTranslate = maxTranslate + Math.pow(currentTranslate - maxTranslate, 0.8);
+ returnTo = 'max';
+ } // Transform wrapper
+
+
+ col.$itemsEl.transform("translate3d(0," + currentTranslate + "px,0)"); // Update items
+
+ col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove); // Calc velocity
+
+ velocityTranslate = currentTranslate - prevTranslate || currentTranslate;
+ prevTranslate = currentTranslate;
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ col.$itemsEl.transition('');
+
+ if (returnTo) {
+ if (returnTo === 'min') {
+ col.$itemsEl.transform("translate3d(0," + minTranslate + "px,0)");
+ } else {
+ col.$itemsEl.transform("translate3d(0," + maxTranslate + "px,0)");
+ }
+ }
+
+ touchEndTime = new Date().getTime();
+ var newTranslate;
+
+ if (touchEndTime - touchStartTime > 300) {
+ newTranslate = currentTranslate;
+ } else {
+ newTranslate = currentTranslate + velocityTranslate * picker.params.momentumRatio;
+ }
+
+ newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate); // Active Index
+
+ var activeIndex = Math.round(Math.abs((newTranslate - maxTranslate) / itemHeight)); // Normalize translate
+
+ if (!picker.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate; // Transform wrapper
+
+ col.$itemsEl.transform("translate3d(0," + parseInt(newTranslate, 10) + "px,0)"); // Update items
+
+ col.updateItems(activeIndex, newTranslate, '', true); // Watch items
+
+ if (picker.params.updateValuesOnMomentum) {
+ updateDuringScroll();
+ col.$itemsEl.transitionEnd(function () {
+ cancelAnimationFrame(animationFrameId);
+ });
+ } // Allow click
+
+
+ setTimeout(function () {
+ allowItemClick = true;
+ }, 100);
+ }
+
+ var mousewheelTimeout;
+
+ function handleMouseWheel(e) {
+ var deltaX = e.deltaX,
+ deltaY = e.deltaY;
+ if (Math.abs(deltaX) > Math.abs(deltaY)) return;
+ clearTimeout(mousewheelTimeout);
+ e.preventDefault();
+ cancelAnimationFrame(animationFrameId);
+ startTranslate = (0, _utils.getTranslate)(col.$itemsEl[0], 'y');
+ col.$itemsEl.transition(0);
+ currentTranslate = startTranslate - deltaY;
+ returnTo = undefined; // Normalize translate
+
+ if (currentTranslate < minTranslate) {
+ currentTranslate = minTranslate;
+ returnTo = 'min';
+ }
+
+ if (currentTranslate > maxTranslate) {
+ currentTranslate = maxTranslate;
+ returnTo = 'max';
+ } // Transform wrapper
+
+
+ col.$itemsEl.transform("translate3d(0," + currentTranslate + "px,0)"); // Update items
+
+ col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnMousewheel); // On end
+
+ mousewheelTimeout = setTimeout(function () {
+ col.$itemsEl.transition('');
+
+ if (returnTo) {
+ if (returnTo === 'min') {
+ col.$itemsEl.transform("translate3d(0," + minTranslate + "px,0)");
+ } else {
+ col.$itemsEl.transform("translate3d(0," + maxTranslate + "px,0)");
+ }
+ }
+
+ touchEndTime = new Date().getTime();
+ var newTranslate = currentTranslate;
+ newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate); // Active Index
+
+ var activeIndex = Math.round(Math.abs((newTranslate - maxTranslate) / itemHeight)); // Normalize translate
+
+ if (!picker.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate; // Transform wrapper
+
+ col.$itemsEl.transform("translate3d(0," + parseInt(newTranslate, 10) + "px,0)"); // Update items
+
+ col.updateItems(activeIndex, newTranslate, '', true);
+ }, 200);
+ }
+
+ function handleClick() {
+ if (!allowItemClick) return;
+ cancelAnimationFrame(animationFrameId);
+ var value = (0, _dom.default)(this).attr('data-picker-value');
+ col.setValue(value);
+ }
+
+ var activeListener = (0, _getSupport.getSupport)().passiveListener ? {
+ passive: false,
+ capture: false
+ } : false;
+
+ col.attachEvents = function attachColEvents() {
+ col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+
+ if (picker.params.mousewheel) {
+ col.$el.on('wheel', handleMouseWheel);
+ }
+
+ col.items.on('click', handleClick);
+ };
+
+ col.detachEvents = function detachColEvents() {
+ col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+
+ if (picker.params.mousewheel) {
+ col.$el.off('wheel', handleMouseWheel);
+ }
+
+ col.items.off('click', handleClick);
+ };
+
+ col.init = function initCol() {
+ col.calcSize();
+ col.$itemsEl.transform("translate3d(0," + maxTranslate + "px,0)").transition(0);
+ if (colIndex === 0) col.$el.addClass('picker-column-first');
+ if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last'); // Update items on init
+
+ if (updateItems) col.updateItems(0, maxTranslate, 0);
+ col.attachEvents();
+ };
+
+ col.destroy = function destroyCol() {
+ col.detachEvents();
+ };
+
+ col.init();
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/picker/picker.js b/www/assets/framework7/cjs/components/picker/picker.js
new file mode 100644
index 000000000..55eba762b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/picker/picker.js
@@ -0,0 +1,77 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+var _pickerClass = _interopRequireDefault(require("./picker-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'picker',
+ static: {
+ Picker: _pickerClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.picker = (0, _constructorMethods.default)({
+ defaultSelector: '.picker',
+ constructor: _pickerClass.default,
+ app: app,
+ domProp: 'f7Picker'
+ });
+
+ app.picker.close = function close(el) {
+ if (el === void 0) {
+ el = '.picker';
+ }
+
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ var picker = $el[0].f7Picker;
+ if (!picker || picker && !picker.opened) return;
+ picker.close();
+ };
+ },
+ params: {
+ picker: {
+ // Picker settings
+ updateValuesOnMomentum: false,
+ updateValuesOnTouchmove: true,
+ updateValuesOnMousewheel: true,
+ mousewheel: true,
+ rotateEffect: false,
+ momentumRatio: 7,
+ freeMode: false,
+ cols: [],
+ // Common opener settings
+ containerEl: null,
+ openIn: 'auto',
+ // or 'popover' or 'sheet'
+ sheetPush: false,
+ sheetSwipeToClose: undefined,
+ backdrop: undefined,
+ // uses Popover or Sheet defaults
+ formatValue: null,
+ inputEl: null,
+ inputReadOnly: true,
+ closeByOutsideClick: true,
+ scrollToInput: true,
+ scrollToEl: undefined,
+ toolbar: true,
+ toolbarCloseText: 'Done',
+ cssClass: null,
+ routableModals: false,
+ view: null,
+ url: 'select/',
+ // Render functions
+ renderToolbar: null,
+ render: null
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/pie-chart/pie-chart-class.js b/www/assets/framework7/cjs/components/pie-chart/pie-chart-class.js
new file mode 100644
index 000000000..5d30a9664
--- /dev/null
+++ b/www/assets/framework7/cjs/components/pie-chart/pie-chart-class.js
@@ -0,0 +1,290 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var PieChart = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(PieChart, _Framework7Class);
+
+ function PieChart(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var self = _assertThisInitialized(_this);
+
+ var defaults = (0, _utils.extend)({}, app.params.pieChart); // Extend defaults with modules params
+
+ self.useModulesParams(defaults);
+ self.params = (0, _utils.extend)(defaults, params);
+ var el = self.params.el;
+ if (!el) return self || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return self || _assertThisInitialized(_this);
+ if ($el[0].f7PieChart) return $el[0].f7PieChart || _assertThisInitialized(_this);
+ (0, _utils.extend)(self, {
+ app: app,
+ $el: $el,
+ el: $el && $el[0],
+ currentIndex: null,
+ f7Tooltip: null
+ });
+ $el[0].f7PieChart = self; // Install Modules
+
+ self.useModules();
+ self.showTooltip = self.showTooltip.bind(_assertThisInitialized(_this));
+ self.hideTooltip = self.hideTooltip.bind(_assertThisInitialized(_this));
+ self.init();
+ return self || _assertThisInitialized(_this);
+ }
+
+ var _proto = PieChart.prototype;
+
+ _proto.getSummValue = function getSummValue() {
+ var datasets = this.params.datasets;
+ var summ = 0;
+ datasets.map(function (d) {
+ return d.value || 0;
+ }).forEach(function (value) {
+ summ += value;
+ });
+ return summ;
+ };
+
+ _proto.getPaths = function getPaths() {
+ var _this2 = this;
+
+ var _this$params = this.params,
+ datasets = _this$params.datasets,
+ size = _this$params.size;
+ var paths = [];
+ var cumulativePercentage = 0;
+
+ function getCoordinatesForPercentage(percentage) {
+ var x = Math.cos(2 * Math.PI * percentage) * (size / 3);
+ var y = Math.sin(2 * Math.PI * percentage) * (size / 3);
+ return [x, y];
+ }
+
+ datasets.forEach(function (_ref) {
+ var value = _ref.value,
+ label = _ref.label,
+ color = _ref.color;
+
+ var percentage = value / _this2.getSummValue();
+
+ var _getCoordinatesForPer = getCoordinatesForPercentage(cumulativePercentage),
+ startX = _getCoordinatesForPer[0],
+ startY = _getCoordinatesForPer[1];
+
+ cumulativePercentage += percentage;
+
+ var _getCoordinatesForPer2 = getCoordinatesForPercentage(cumulativePercentage),
+ endX = _getCoordinatesForPer2[0],
+ endY = _getCoordinatesForPer2[1];
+
+ var largeArcFlag = percentage > 0.5 ? 1 : 0;
+ var points = ["M " + startX + " " + startY, // Move
+ "A " + size / 3 + " " + size / 3 + " 0 " + largeArcFlag + " 1 " + endX + " " + endY, // Arc
+ 'L 0 0' // Line
+ ].join(' ');
+ paths.push({
+ points: points,
+ label: label,
+ color: color
+ });
+ });
+ return paths;
+ };
+
+ _proto.formatTooltipText = function formatTooltipText() {
+ var datasets = this.params.datasets;
+ var currentIndex = this.currentIndex;
+ if (currentIndex === null) return '';
+ var _datasets$currentInde = datasets[currentIndex],
+ value = _datasets$currentInde.value,
+ label = _datasets$currentInde.label,
+ color = _datasets$currentInde.color;
+ var percentage = value / this.getSummValue() * 100;
+
+ var round = function round(v) {
+ if (parseInt(v, 10) === v) return v;
+ return Math.round(v * 100) / 100;
+ };
+
+ if (this.params.formatTooltip) {
+ return this.params.formatTooltip.call(this, {
+ index: currentIndex,
+ value: value,
+ label: label,
+ color: color,
+ percentage: percentage
+ });
+ }
+
+ var tooltipText = "" + (label ? label + ": " : '') + round(value) + " (" + round(percentage) + "%)";
+ return "\n \n " + tooltipText + "\n
\n ";
+ };
+
+ _proto.setTooltip = function setTooltip() {
+ var self = this;
+ var currentIndex = self.currentIndex,
+ el = self.el,
+ app = self.app,
+ params = self.params;
+ var tooltip = params.tooltip;
+ if (currentIndex === null && !self.f7Tooltip) return;
+ if (!tooltip || !el) return;
+
+ if (currentIndex !== null && !self.f7Tooltip) {
+ self.f7Tooltip = app.tooltip.create({
+ trigger: 'manual',
+ containerEl: el,
+ targetEl: el.querySelector("path[data-index=\"" + currentIndex + "\"]"),
+ text: self.formatTooltipText(),
+ cssClass: 'pie-chart-tooltip'
+ });
+ self.f7Tooltip.show();
+ return;
+ }
+
+ if (!self.f7Tooltip) return;
+
+ if (currentIndex !== null) {
+ self.f7Tooltip.setText(self.formatTooltipText());
+ self.f7Tooltip.setTargetEl(el.querySelector("path[data-index=\"" + currentIndex + "\"]"));
+ self.f7Tooltip.show();
+ } else {
+ self.f7Tooltip.hide();
+ }
+ };
+
+ _proto.render = function render() {
+ var self = this;
+ var size = self.params.size;
+ var paths = self.getPaths();
+ return (0, _$jsx.default)("svg", {
+ xmlns: "http://www.w3.org/2000/svg",
+ width: size,
+ viewBox: "-" + size / 3 + " -" + size / 3 + " " + size * 2 / 3 + " " + size * 2 / 3,
+ style: "transform: rotate(-90deg)"
+ }, paths.map(function (path, index) {
+ return (0, _$jsx.default)("path", {
+ d: path.points,
+ fill: path.color,
+ "data-index": index
+ });
+ }));
+ };
+
+ _proto.update = function update(newParams) {
+ if (newParams === void 0) {
+ newParams = {};
+ }
+
+ var self = this;
+ var params = self.params;
+ Object.keys(newParams).forEach(function (param) {
+ if (typeof newParams[param] !== 'undefined') {
+ params[param] = newParams[param];
+ }
+ });
+ if (self.$svgEl.length === 0) return self;
+ self.$svgEl.remove();
+ delete self.$svgEl.f7PieChart;
+ var $svgEl = (0, _dom.default)(self.render()).eq(0);
+ $svgEl.f7PieChart = self;
+ (0, _utils.extend)(self, {
+ $svgEl: $svgEl,
+ svgEl: $svgEl && $svgEl[0]
+ });
+ self.$el.append($svgEl);
+ return self;
+ };
+
+ _proto.setCurrentIndex = function setCurrentIndex(index) {
+ var self = this;
+ if (index === self.currentIndex) return;
+ var datasets = self.params.datasets;
+ self.currentIndex = index;
+ self.$el.trigger('piechart:select', {
+ index: index,
+ dataset: datasets[index]
+ });
+ self.emit('local::select pieChartSelect', self, index, datasets[index]);
+ };
+
+ _proto.showTooltip = function showTooltip(e) {
+ var _this3 = this;
+
+ var newIndex = parseInt(e.target.getAttribute('data-index'), 10);
+ this.setCurrentIndex(newIndex);
+ this.$svgEl.find('path').removeClass('pie-chart-hidden').forEach(function (el, index) {
+ if (index !== _this3.currentIndex) (0, _dom.default)(el).addClass('pie-chart-hidden');
+ });
+ this.setTooltip();
+ };
+
+ _proto.hideTooltip = function hideTooltip() {
+ this.setCurrentIndex(null);
+ this.$svgEl.find('path').removeClass('pie-chart-hidden');
+ this.setTooltip();
+ };
+
+ _proto.init = function init() {
+ var self = this;
+ var $svgEl = (0, _dom.default)(self.render()).eq(0);
+ $svgEl.f7PieChart = self;
+ (0, _utils.extend)(self, {
+ $svgEl: $svgEl,
+ svgEl: $svgEl && $svgEl[0]
+ });
+ self.$el.append($svgEl);
+ self.$el.on('click mouseenter', 'path', self.showTooltip, true);
+ self.$el.on('mouseleave', 'path', self.hideTooltip, true);
+ return self;
+ };
+
+ _proto.destroy = function destroy() {
+ var self = this;
+ if (!self.$el || self.destroyed) return;
+ self.$el.trigger('piechart:beforedestroy');
+ self.emit('local::beforeDestroy pieChartBeforeDestroy', self);
+ self.$el.off('click mouseenter', 'path', self.showTooltip, true);
+ self.$el.off('mouseleave', 'path', self.hideTooltip, true);
+ self.$svgEl.remove();
+
+ if (self.f7Tooltip && self.f7Tooltip.destroy) {
+ self.f7Tooltip.destroy();
+ }
+
+ delete self.$el[0].f7PieChart;
+ (0, _utils.deleteProps)(self);
+ self.destroyed = true;
+ };
+
+ return PieChart;
+}(_class.default);
+
+var _default = PieChart;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/pie-chart/pie-chart.js b/www/assets/framework7/cjs/components/pie-chart/pie-chart.js
new file mode 100644
index 000000000..a15f6a81c
--- /dev/null
+++ b/www/assets/framework7/cjs/components/pie-chart/pie-chart.js
@@ -0,0 +1,44 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _pieChartClass = _interopRequireDefault(require("./pie-chart-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'pieChart',
+ params: {
+ pieChart: {
+ el: null,
+ datasets: [],
+ size: 320,
+ tooltip: false,
+ formatTooltip: null
+ }
+ },
+ create: function create() {
+ var app = this;
+ app.pieChart = (0, _constructorMethods.default)({
+ defaultSelector: '.pie-chart',
+ constructor: _pieChartClass.default,
+ app: app,
+ domProp: 'f7PieChart'
+ });
+
+ app.pieChart.update = function update(el, newParams) {
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var pieChart = app.pieChart.get(el);
+ if (!pieChart) return undefined;
+ pieChart.update(newParams);
+ return pieChart;
+ };
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/popover/popover-class.js b/www/assets/framework7/cjs/components/popover/popover-class.js
new file mode 100644
index 000000000..c07e51acc
--- /dev/null
+++ b/www/assets/framework7/cjs/components/popover/popover-class.js
@@ -0,0 +1,365 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Popover = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Popover, _Modal);
+
+ function Popover(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.popover, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var popover = _assertThisInitialized(_this);
+
+ var device = (0, _getDevice.getDevice)();
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ popover.params = extendedParams; // Find Element
+
+ var $el;
+
+ if (!popover.params.el) {
+ $el = (0, _dom.default)(popover.params.content).filter(function (node) {
+ return node.nodeType === 1;
+ }).eq(0);
+ } else {
+ $el = (0, _dom.default)(popover.params.el).eq(0);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ } // Find Target
+
+
+ var $targetEl = (0, _dom.default)(popover.params.targetEl).eq(0);
+
+ if ($el.length === 0) {
+ return popover.destroy() || _assertThisInitialized(_this);
+ } // Backdrop
+
+
+ var $backdropEl;
+
+ if (popover.params.backdrop && popover.params.backdropEl) {
+ $backdropEl = (0, _dom.default)(popover.params.backdropEl);
+ } else if (popover.params.backdrop) {
+ $backdropEl = popover.$containerEl.children('.popover-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+ popover.$containerEl.append($backdropEl);
+ }
+ } // Find Angle
+
+
+ var $angleEl;
+
+ if ($el.find('.popover-angle').length === 0) {
+ $angleEl = (0, _dom.default)('');
+ $el.prepend($angleEl);
+ } else {
+ $angleEl = $el.find('.popover-angle');
+ } // Open
+
+
+ var originalOpen = popover.open;
+ (0, _utils.extend)(popover, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $targetEl: $targetEl,
+ targetEl: $targetEl[0],
+ $angleEl: $angleEl,
+ angleEl: $angleEl[0],
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ type: 'popover',
+ open: function open() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var targetEl = args[0],
+ animate = args[1];
+
+ if (typeof args[0] === 'boolean') {
+ animate = args[0];
+ targetEl = args[1];
+ }
+
+ if (targetEl) {
+ popover.$targetEl = (0, _dom.default)(targetEl);
+ popover.targetEl = popover.$targetEl[0];
+ }
+
+ return originalOpen.call(popover, animate);
+ }
+ });
+
+ function handleResize() {
+ popover.resize();
+ }
+
+ popover.on('popoverOpen', function () {
+ popover.resize();
+ app.on('resize', handleResize);
+ (0, _dom.default)(window).on('keyboardDidShow keyboardDidHide', handleResize);
+ popover.on('popoverClose popoverBeforeDestroy', function () {
+ app.off('resize', handleResize);
+ (0, _dom.default)(window).off('keyboardDidShow keyboardDidHide', handleResize);
+ });
+ });
+ var touchStartTarget = null;
+
+ function handleTouchStart(e) {
+ touchStartTarget = e.target;
+ }
+
+ function handleClick(e) {
+ var target = e.target;
+ var $target = (0, _dom.default)(target);
+ var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
+ if (keyboardOpened) return;
+
+ if ($target.closest(popover.el).length === 0) {
+ if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target && touchStartTarget === target) {
+ popover.close();
+ } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {
+ popover.close();
+ }
+ }
+ }
+
+ function onKeyDown(e) {
+ var keyCode = e.keyCode;
+
+ if (keyCode === 27 && popover.params.closeOnEscape) {
+ popover.close();
+ }
+ }
+
+ if (popover.params.closeOnEscape) {
+ popover.on('popoverOpen', function () {
+ (0, _dom.default)(document).on('keydown', onKeyDown);
+ });
+ popover.on('popoverClose', function () {
+ (0, _dom.default)(document).off('keydown', onKeyDown);
+ });
+ }
+
+ popover.on('popoverOpened', function () {
+ if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {
+ app.on('touchstart', handleTouchStart);
+ app.on('click', handleClick);
+ }
+ });
+ popover.on('popoverClose', function () {
+ if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {
+ app.off('touchstart', handleTouchStart);
+ app.off('click', handleClick);
+ }
+ });
+ $el[0].f7Modal = popover;
+ return popover || _assertThisInitialized(_this);
+ }
+
+ var _proto = Popover.prototype;
+
+ _proto.resize = function resize() {
+ var popover = this;
+ var app = popover.app,
+ $el = popover.$el,
+ $targetEl = popover.$targetEl,
+ $angleEl = popover.$angleEl;
+ var _popover$params = popover.params,
+ targetX = _popover$params.targetX,
+ targetY = _popover$params.targetY;
+ $el.css({
+ left: '',
+ top: ''
+ });
+ var _ref = [$el.width(), $el.height()],
+ width = _ref[0],
+ height = _ref[1];
+ var angleSize = 0;
+ var angleLeft;
+ var angleTop;
+
+ if (app.theme === 'ios' || app.theme === 'aurora') {
+ $angleEl.removeClass('on-left on-right on-top on-bottom').css({
+ left: '',
+ top: ''
+ });
+ angleSize = $angleEl.width() / 2;
+ } else {
+ $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({
+ left: '',
+ top: ''
+ });
+ }
+
+ var targetWidth;
+ var targetHeight;
+ var targetOffsetLeft;
+ var targetOffsetTop;
+ var safeAreaTop = parseInt((0, _dom.default)('html').css('--f7-safe-area-top'), 10);
+ var safeAreaLeft = parseInt((0, _dom.default)('html').css('--f7-safe-area-left'), 10);
+ var safeAreaRight = parseInt((0, _dom.default)('html').css('--f7-safe-area-right'), 10);
+ if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;
+ if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;
+ if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;
+
+ if ($targetEl && $targetEl.length > 0) {
+ targetWidth = $targetEl.outerWidth();
+ targetHeight = $targetEl.outerHeight();
+ var targetOffset = $targetEl.offset();
+ targetOffsetLeft = targetOffset.left - app.left;
+ targetOffsetTop = targetOffset.top - app.top;
+ var targetParentPage = $targetEl.parents('.page');
+
+ if (targetParentPage.length > 0) {
+ targetOffsetTop -= targetParentPage[0].scrollTop;
+ }
+ } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {
+ targetOffsetLeft = targetX;
+ targetOffsetTop = targetY;
+ targetWidth = popover.params.targetWidth || 0;
+ targetHeight = popover.params.targetHeight || 0;
+ }
+
+ var left = 0,
+ top = 0,
+ diff = 0; // Top Position
+
+ var position = app.theme === 'md' ? 'bottom' : 'top';
+
+ if (app.theme === 'md') {
+ if (height < app.height - targetOffsetTop - targetHeight) {
+ // On bottom
+ position = 'bottom';
+ top = targetOffsetTop + targetHeight;
+ } else if (height < targetOffsetTop - safeAreaTop) {
+ // On top
+ top = targetOffsetTop - height;
+ position = 'top';
+ } else {
+ // On middle
+ position = 'middle';
+ top = targetHeight / 2 + targetOffsetTop - height / 2;
+ }
+
+ top = Math.max(8, Math.min(top, app.height - height - 8)); // Horizontal Position
+
+ var hPosition;
+
+ if (targetOffsetLeft < app.width / 2) {
+ hPosition = 'right';
+ left = position === 'middle' ? targetOffsetLeft + targetWidth : targetOffsetLeft;
+ } else {
+ hPosition = 'left';
+ left = position === 'middle' ? targetOffsetLeft - width : targetOffsetLeft + targetWidth - width;
+ }
+
+ left = Math.max(8, Math.min(left, app.width - width - 8 - safeAreaRight), safeAreaLeft);
+ $el.addClass("popover-on-" + position + " popover-on-" + hPosition);
+ } else {
+ // ios and aurora
+ if (height + angleSize < targetOffsetTop - safeAreaTop) {
+ // On top
+ top = targetOffsetTop - height - angleSize;
+ } else if (height + angleSize < app.height - targetOffsetTop - targetHeight) {
+ // On bottom
+ position = 'bottom';
+ top = targetOffsetTop + targetHeight + angleSize;
+ } else {
+ // On middle
+ position = 'middle';
+ top = targetHeight / 2 + targetOffsetTop - height / 2;
+ diff = top;
+ top = Math.max(5, Math.min(top, app.height - height - 5));
+ diff -= top;
+ } // Horizontal Position
+
+
+ if (position === 'top' || position === 'bottom') {
+ left = targetWidth / 2 + targetOffsetLeft - width / 2;
+ diff = left;
+ left = Math.max(5, Math.min(left, app.width - width - 5));
+
+ if (safeAreaLeft) {
+ left = Math.max(left, safeAreaLeft);
+ }
+
+ if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {
+ left = app.width - 5 - safeAreaRight - width;
+ }
+
+ if (position === 'top') {
+ $angleEl.addClass('on-bottom');
+ }
+
+ if (position === 'bottom') {
+ $angleEl.addClass('on-top');
+ }
+
+ diff -= left;
+ angleLeft = width / 2 - angleSize + diff;
+ angleLeft = Math.max(Math.min(angleLeft, width - angleSize * 2 - 13), 13);
+ $angleEl.css({
+ left: angleLeft + "px"
+ });
+ } else if (position === 'middle') {
+ left = targetOffsetLeft - width - angleSize;
+ $angleEl.addClass('on-right');
+
+ if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {
+ if (left < 5) left = targetOffsetLeft + targetWidth + angleSize;
+ if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;
+ if (left < safeAreaLeft) left = safeAreaLeft;
+ $angleEl.removeClass('on-right').addClass('on-left');
+ }
+
+ angleTop = height / 2 - angleSize + diff;
+ angleTop = Math.max(Math.min(angleTop, height - angleSize * 2 - 13), 13);
+ $angleEl.css({
+ top: angleTop + "px"
+ });
+ }
+ } // Apply Styles
+
+
+ $el.css({
+ top: top + "px",
+ left: left + "px"
+ });
+ };
+
+ return Popover;
+}(_modalClass.default);
+
+var _default = Popover;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/popover/popover.js b/www/assets/framework7/cjs/components/popover/popover.js
new file mode 100644
index 000000000..9bb6fb27c
--- /dev/null
+++ b/www/assets/framework7/cjs/components/popover/popover.js
@@ -0,0 +1,93 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _popoverClass = _interopRequireDefault(require("./popover-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'popover',
+ params: {
+ popover: {
+ backdrop: true,
+ backdropEl: undefined,
+ closeByBackdropClick: true,
+ closeByOutsideClick: true,
+ closeOnEscape: false,
+ containerEl: null
+ }
+ },
+ static: {
+ Popover: _popoverClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.popover = (0, _utils.extend)((0, _modalMethods.default)({
+ app: app,
+ constructor: _popoverClass.default,
+ defaultSelector: '.popover.modal-in'
+ }), {
+ open: function open(popoverEl, targetEl, animate) {
+ var $popoverEl = (0, _dom.default)(popoverEl);
+
+ if ($popoverEl.length > 1) {
+ // check if same popover in other page
+ var $targetPage = (0, _dom.default)(targetEl).parents('.page');
+
+ if ($targetPage.length) {
+ $popoverEl.each(function (el) {
+ var $el = (0, _dom.default)(el);
+
+ if ($el.parents($targetPage)[0] === $targetPage[0]) {
+ $popoverEl = $el;
+ }
+ });
+ }
+ }
+
+ if ($popoverEl.length > 1) {
+ $popoverEl = $popoverEl.eq($popoverEl.length - 1);
+ }
+
+ var popover = $popoverEl[0].f7Modal;
+ var data = $popoverEl.dataset();
+
+ if (!popover) {
+ popover = new _popoverClass.default(app, Object.assign({
+ el: $popoverEl,
+ targetEl: targetEl
+ }, data));
+ }
+
+ return popover.open(targetEl, animate);
+ }
+ });
+ },
+ clicks: {
+ '.popover-open': function openPopover($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.popover.open(data.popover, $clickedEl, data.animate);
+ },
+ '.popover-close': function closePopover($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.popover.close(data.popover, data.animate, $clickedEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/popup/popup-class.js b/www/assets/framework7/cjs/components/popup/popup-class.js
new file mode 100644
index 000000000..c16832d80
--- /dev/null
+++ b/www/assets/framework7/cjs/components/popup/popup-class.js
@@ -0,0 +1,416 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+var _getDevice = require("../../shared/get-device");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Popup = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Popup, _Modal);
+
+ function Popup(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.popup, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var popup = _assertThisInitialized(_this);
+
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var support = (0, _getSupport.getSupport)();
+ var device = (0, _getDevice.getDevice)();
+ popup.params = extendedParams; // Find Element
+
+ var $el;
+
+ if (!popup.params.el) {
+ $el = (0, _dom.default)(popup.params.content).filter(function (node) {
+ return node.nodeType === 1;
+ }).eq(0);
+ } else {
+ $el = (0, _dom.default)(popup.params.el).eq(0);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return popup.destroy() || _assertThisInitialized(_this);
+ }
+
+ var $backdropEl;
+
+ if (popup.params.backdrop && popup.params.backdropEl) {
+ $backdropEl = (0, _dom.default)(popup.params.backdropEl);
+ } else if (popup.params.backdrop) {
+ $backdropEl = popup.$containerEl.children('.popup-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+ popup.$containerEl.append($backdropEl);
+ }
+ }
+
+ (0, _utils.extend)(popup, {
+ app: app,
+ push: $el.hasClass('popup-push') || popup.params.push,
+ $el: $el,
+ el: $el[0],
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ type: 'popup',
+ $htmlEl: (0, _dom.default)('html')
+ });
+
+ if (popup.params.push) {
+ $el.addClass('popup-push');
+ }
+
+ function handleClick(e) {
+ var target = e.target;
+ var $target = (0, _dom.default)(target);
+ var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
+ if (keyboardOpened) return;
+
+ if ($target.closest(popup.el).length === 0) {
+ if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {
+ var needToClose = true;
+ popup.$el.nextAll('.popup.modal-in').each(function (popupEl) {
+ var popupInstance = popupEl.f7Modal;
+ if (!popupInstance) return;
+
+ if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {
+ needToClose = false;
+ }
+ });
+
+ if (needToClose) {
+ popup.close();
+ }
+ }
+ }
+ }
+
+ function onKeyDown(e) {
+ var keyCode = e.keyCode;
+
+ if (keyCode === 27 && popup.params.closeOnEscape) {
+ popup.close();
+ }
+ }
+
+ var pushOffset;
+ var isPush;
+
+ function pushViewScale(offset) {
+ return (app.height - offset * 2) / app.height;
+ }
+
+ var allowSwipeToClose = true;
+ var isTouched = false;
+ var startTouch;
+ var currentTouch;
+ var isScrolling;
+ var touchStartTime;
+ var touchesDiff;
+ var isMoved = false;
+ var pageContentEl;
+ var pageContentScrollTop;
+ var pageContentOffsetHeight;
+ var pageContentScrollHeight;
+ var popupHeight;
+ var $pushEl;
+
+ function handleTouchStart(e) {
+ if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose) return;
+
+ if (popup.params.swipeHandler && (0, _dom.default)(e.target).closest(popup.params.swipeHandler).length === 0) {
+ return;
+ }
+
+ isTouched = true;
+ isMoved = false;
+ startTouch = {
+ x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,
+ y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY
+ };
+ touchStartTime = (0, _utils.now)();
+ isScrolling = undefined;
+
+ if (!popup.params.swipeHandler && e.type === 'touchstart') {
+ pageContentEl = (0, _dom.default)(e.target).closest('.page-content')[0];
+ }
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ currentTouch = {
+ x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,
+ y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY
+ };
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ touchesDiff = startTouch.y - currentTouch.y;
+
+ if (isPush && pushOffset && touchesDiff > 0) {
+ touchesDiff = 0;
+ }
+
+ var direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
+ $el.transition(0);
+
+ if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {
+ $el.transform('');
+ $el.transition('');
+ return;
+ }
+
+ if (!isMoved) {
+ if (isPush && pushOffset) {
+ popupHeight = $el[0].offsetHeight;
+ $pushEl = $el.prevAll('.popup.modal-in').eq(0);
+
+ if ($pushEl.length === 0) {
+ $pushEl = app.$el.children('.view, .views');
+ }
+ }
+
+ if (pageContentEl) {
+ pageContentScrollTop = pageContentEl.scrollTop;
+ pageContentScrollHeight = pageContentEl.scrollHeight;
+ pageContentOffsetHeight = pageContentEl.offsetHeight;
+
+ if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {
+ $el.transform('');
+ $el.transition('');
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+ }
+
+ isMoved = true;
+ popup.emit('local::swipeStart popupSwipeStart', popup);
+ popup.$el.trigger('popup:swipestart');
+ } else {
+ popup.emit('local::swipeMove popupSwipeMove', popup);
+ popup.$el.trigger('popup:swipemove');
+ }
+
+ e.preventDefault();
+
+ if (isPush && pushOffset) {
+ var pushProgress = 1 - Math.abs(touchesDiff / popupHeight);
+ var scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;
+
+ if ($pushEl.hasClass('popup')) {
+ if ($pushEl.hasClass('popup-push')) {
+ $pushEl.transition(0).forEach(function (el) {
+ el.style.setProperty('transform', "translate3d(0, calc(-1 * " + pushProgress + " * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(" + scale + ")", 'important');
+ });
+ } else {
+ $pushEl.transition(0).forEach(function (el) {
+ el.style.setProperty('transform', "translate3d(0, 0px , 0px) scale(" + scale + ")", 'important');
+ });
+ }
+ } else {
+ $pushEl.transition(0).forEach(function (el) {
+ el.style.setProperty('transform', "translate3d(0,0,0) scale(" + scale + ")", 'important');
+ });
+ }
+ }
+
+ $el.transition(0).transform("translate3d(0," + -touchesDiff + "px,0)");
+ }
+
+ function handleTouchEnd() {
+ isTouched = false;
+
+ if (!isMoved) {
+ return;
+ }
+
+ popup.emit('local::swipeEnd popupSwipeEnd', popup);
+ popup.$el.trigger('popup:swipeend');
+ isMoved = false;
+ allowSwipeToClose = false;
+ $el.transition('');
+
+ if (isPush && pushOffset) {
+ $pushEl.transition('').transform('');
+ }
+
+ var direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';
+
+ if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {
+ $el.transform('');
+ allowSwipeToClose = true;
+ return;
+ }
+
+ var diff = Math.abs(touchesDiff);
+ var timeDiff = new Date().getTime() - touchStartTime;
+
+ if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {
+ (0, _utils.nextTick)(function () {
+ if (direction === 'to-bottom') {
+ $el.addClass('swipe-close-to-bottom');
+ } else {
+ $el.addClass('swipe-close-to-top');
+ }
+
+ $el.transform('');
+ popup.emit('local::swipeclose popupSwipeClose', popup);
+ popup.$el.trigger('popup:swipeclose');
+ popup.close();
+ allowSwipeToClose = true;
+ });
+ return;
+ }
+
+ allowSwipeToClose = true;
+ $el.transform('');
+ }
+
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+
+ if (popup.params.swipeToClose) {
+ $el.on(app.touchEvents.start, handleTouchStart, passive);
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ popup.once('popupDestroy', function () {
+ $el.off(app.touchEvents.start, handleTouchStart, passive);
+ app.off('touchmove', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ });
+ }
+
+ var hasPreviousPushPopup;
+
+ var updatePushOffset = function updatePushOffset() {
+ var wasPush = isPush;
+
+ if (popup.push) {
+ isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));
+ }
+
+ if (isPush && !wasPush) {
+ // eslint-disable-next-line
+ setPushOffset();
+ } else if (isPush && wasPush) {
+ popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));
+ } else if (!isPush && wasPush) {
+ popup.$htmlEl.removeClass('with-modal-popup-push');
+ popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');
+ }
+ };
+
+ var setPushOffset = function setPushOffset() {
+ app.off('resize', updatePushOffset);
+
+ if (popup.push) {
+ isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));
+ }
+
+ if (isPush) {
+ pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);
+ if (Number.isNaN(pushOffset)) pushOffset = 0;
+
+ if (pushOffset) {
+ $el.addClass('popup-push');
+ popup.$htmlEl.addClass('with-modal-popup-push');
+ popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));
+ }
+ }
+
+ app.on('resize', updatePushOffset);
+ };
+
+ popup.on('open', function () {
+ hasPreviousPushPopup = false;
+
+ if (popup.params.closeOnEscape) {
+ (0, _dom.default)(document).on('keydown', onKeyDown);
+ }
+
+ $el.prevAll('.popup.modal-in').addClass('popup-behind');
+ setPushOffset();
+ });
+ popup.on('opened', function () {
+ $el.removeClass('swipe-close-to-bottom swipe-close-to-top');
+
+ if (popup.params.closeByBackdropClick) {
+ app.on('click', handleClick);
+ }
+ });
+ popup.on('close', function () {
+ hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;
+
+ if (popup.params.closeOnEscape) {
+ (0, _dom.default)(document).off('keydown', onKeyDown);
+ }
+
+ if (popup.params.closeByBackdropClick) {
+ app.off('click', handleClick);
+ }
+
+ $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');
+
+ if (isPush && pushOffset && !hasPreviousPushPopup) {
+ popup.$htmlEl.removeClass('with-modal-popup-push');
+ popup.$htmlEl.addClass('with-modal-popup-push-closing');
+ }
+
+ app.off('resize', updatePushOffset);
+ });
+ popup.on('closed', function () {
+ $el.removeClass('popup-behind');
+
+ if (isPush && pushOffset && !hasPreviousPushPopup) {
+ popup.$htmlEl.removeClass('with-modal-popup-push-closing');
+ popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');
+ }
+ });
+ $el[0].f7Modal = popup;
+ return popup || _assertThisInitialized(_this);
+ }
+
+ return Popup;
+}(_modalClass.default);
+
+var _default = Popup;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/popup/popup.js b/www/assets/framework7/cjs/components/popup/popup.js
new file mode 100644
index 000000000..92c8cd0c8
--- /dev/null
+++ b/www/assets/framework7/cjs/components/popup/popup.js
@@ -0,0 +1,57 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _popupClass = _interopRequireDefault(require("./popup-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'popup',
+ params: {
+ popup: {
+ backdrop: true,
+ backdropEl: undefined,
+ closeByBackdropClick: true,
+ closeOnEscape: false,
+ swipeToClose: false,
+ swipeHandler: null,
+ push: false,
+ containerEl: null
+ }
+ },
+ static: {
+ Popup: _popupClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.popup = (0, _modalMethods.default)({
+ app: app,
+ constructor: _popupClass.default,
+ defaultSelector: '.popup.modal-in',
+ parentSelector: '.popup'
+ });
+ },
+ clicks: {
+ '.popup-open': function openPopup($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.popup.open(data.popup, data.animate, $clickedEl);
+ },
+ '.popup-close': function closePopup($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.popup.close(data.popup, data.animate, $clickedEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/preloader/preloader.js b/www/assets/framework7/cjs/components/preloader/preloader.js
new file mode 100644
index 000000000..9e3aad6d9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/preloader/preloader.js
@@ -0,0 +1,111 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Preloader = {
+ init: function init(el) {
+ var app = this;
+ var preloaders = {
+ iosPreloaderContent: _utils.iosPreloaderContent,
+ mdPreloaderContent: _utils.mdPreloaderContent,
+ auroraPreloaderContent: _utils.auroraPreloaderContent
+ };
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;
+ $el.append(preloaders[app.theme + "PreloaderContent"]);
+ },
+ // Modal
+ visible: false,
+ show: function show(color) {
+ if (color === void 0) {
+ color = 'white';
+ }
+
+ var app = this;
+ if (Preloader.visible) return;
+ var preloaders = {
+ iosPreloaderContent: _utils.iosPreloaderContent,
+ mdPreloaderContent: _utils.mdPreloaderContent,
+ auroraPreloaderContent: _utils.auroraPreloaderContent
+ };
+ var preloaderInner = preloaders[app.theme + "PreloaderContent"] || '';
+ (0, _dom.default)('html').addClass('with-modal-preloader'); // prettier-ignore
+
+ app.$el.append("\n \n \n
" + preloaderInner + "
\n
\n ");
+ Preloader.visible = true;
+ },
+ showIn: function showIn(el, color) {
+ if (color === void 0) {
+ color = 'white';
+ }
+
+ var app = this;
+ var preloaders = {
+ iosPreloaderContent: _utils.iosPreloaderContent,
+ mdPreloaderContent: _utils.mdPreloaderContent,
+ auroraPreloaderContent: _utils.auroraPreloaderContent
+ };
+ var preloaderInner = preloaders[app.theme + "PreloaderContent"] || '';
+ (0, _dom.default)(el || 'html').addClass('with-modal-preloader'); // prettier-ignore
+
+ (0, _dom.default)(el || app.$el).append("\n \n \n
" + preloaderInner + "
\n
\n ");
+ },
+ hide: function hide() {
+ var app = this;
+ if (!Preloader.visible) return;
+ (0, _dom.default)('html').removeClass('with-modal-preloader');
+ app.$el.find('.preloader-backdrop, .preloader-modal').remove();
+ Preloader.visible = false;
+ },
+ hideIn: function hideIn(el) {
+ var app = this;
+ (0, _dom.default)(el || 'html').removeClass('with-modal-preloader');
+ (0, _dom.default)(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();
+ }
+};
+var _default = {
+ name: 'preloader',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ preloader: Preloader
+ });
+ },
+ on: {
+ photoBrowserOpen: function photoBrowserOpen(pb) {
+ var app = this;
+ pb.$el.find('.preloader').each(function (preloaderEl) {
+ app.preloader.init(preloaderEl);
+ });
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.preloader').each(function (preloaderEl) {
+ app.preloader.init(preloaderEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.preloader').each(function (preloaderEl) {
+ app.preloader.init(preloaderEl);
+ });
+ }
+ },
+ vnode: {
+ preloader: {
+ insert: function insert(vnode) {
+ var app = this;
+ var preloaderEl = vnode.elm;
+ app.preloader.init(preloaderEl);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/progressbar/progressbar.js b/www/assets/framework7/cjs/components/progressbar/progressbar.js
new file mode 100644
index 000000000..8606aebee
--- /dev/null
+++ b/www/assets/framework7/cjs/components/progressbar/progressbar.js
@@ -0,0 +1,185 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Progressbar = {
+ set: function set() {
+ var app = this;
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var el = args[0],
+ progress = args[1],
+ duration = args[2];
+
+ if (typeof args[0] === 'number') {
+ progress = args[0];
+ duration = args[1];
+ el = app.$el;
+ }
+
+ if (typeof progress === 'undefined' || progress === null) return el;
+ if (!progress) progress = 0;
+ var $el = (0, _dom.default)(el || app.$el);
+
+ if ($el.length === 0) {
+ return el;
+ }
+
+ var progressNormalized = Math.min(Math.max(progress, 0), 100);
+ var $progressbarEl;
+ if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {
+ $progressbarEl = $el.children('.progressbar');
+ }
+
+ if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {
+ return $progressbarEl;
+ }
+
+ var $progressbarLine = $progressbarEl.children('span');
+
+ if ($progressbarLine.length === 0) {
+ $progressbarLine = (0, _dom.default)('');
+ $progressbarEl.append($progressbarLine);
+ }
+
+ $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform("translate3d(" + (-100 + progressNormalized) * (app.rtl ? -1 : 1) + "%,0,0)");
+ return $progressbarEl[0];
+ },
+ show: function show() {
+ var app = this; // '.page', 50, 'multi'
+
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ var el = args[0],
+ progress = args[1],
+ color = args[2];
+ var type = 'determined';
+
+ if (args.length === 2) {
+ if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {
+ // '.page', 'multi'
+ el = args[0];
+ color = args[1];
+ progress = args[2];
+ type = 'infinite';
+ } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {
+ // 50, 'multi'
+ progress = args[0];
+ color = args[1];
+ el = app.$el;
+ }
+ } else if (args.length === 1) {
+ if (typeof args[0] === 'number') {
+ el = app.$el;
+ progress = args[0];
+ } else if (typeof args[0] === 'string') {
+ type = 'infinite';
+ el = app.$el;
+ color = args[0];
+ }
+ } else if (args.length === 0) {
+ type = 'infinite';
+ el = app.$el;
+ }
+
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var $progressbarEl;
+
+ if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {
+ $progressbarEl = $el;
+ } else {
+ $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');
+
+ if ($progressbarEl.length === 0) {
+ $progressbarEl = (0, _dom.default)("\n \n " + (type === 'infinite' ? '' : '') + "\n ");
+ $el.append($progressbarEl);
+ }
+ }
+
+ if (typeof progress !== 'undefined') {
+ app.progressbar.set($progressbarEl, progress);
+ }
+
+ return $progressbarEl[0];
+ },
+ hide: function hide(el, removeAfterHide) {
+ if (removeAfterHide === void 0) {
+ removeAfterHide = true;
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el || app.$el);
+ if ($el.length === 0) return undefined;
+ var $progressbarEl;
+
+ if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {
+ $progressbarEl = $el;
+ } else {
+ $progressbarEl = $el.children('.progressbar, .progressbar-infinite');
+ }
+
+ if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {
+ return $progressbarEl;
+ }
+
+ $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(function () {
+ if (removeAfterHide) {
+ $progressbarEl.remove();
+ }
+ });
+ return $progressbarEl;
+ }
+};
+var _default = {
+ name: 'progressbar',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ progressbar: Progressbar
+ });
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.progressbar').each(function (progressbarEl) {
+ var $progressbarEl = (0, _dom.default)(progressbarEl);
+ app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.progressbar').each(function (progressbarEl) {
+ var $progressbarEl = (0, _dom.default)(progressbarEl);
+ app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));
+ });
+ }
+ },
+ vnode: {
+ progressbar: {
+ insert: function insert(vnode) {
+ var app = this;
+ var el = vnode.elm;
+ app.progressbar.set(el, el.getAttribute('data-progress'));
+ },
+ update: function update(vnode) {
+ var app = this;
+ var el = vnode.elm;
+ app.progressbar.set(el, el.getAttribute('data-progress'));
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/pull-to-refresh/pull-to-refresh-class.js b/www/assets/framework7/cjs/components/pull-to-refresh/pull-to-refresh-class.js
new file mode 100644
index 000000000..7b892ba48
--- /dev/null
+++ b/www/assets/framework7/cjs/components/pull-to-refresh/pull-to-refresh-class.js
@@ -0,0 +1,627 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getSupport = require("../../shared/get-support");
+
+var _getDevice = require("../../shared/get-device");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var PullToRefresh = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(PullToRefresh, _Framework7Class);
+
+ function PullToRefresh(app, el) {
+ var _this;
+
+ _this = _Framework7Class.call(this, {}, [app]) || this;
+
+ var ptr = _assertThisInitialized(_this);
+
+ var device = (0, _getDevice.getDevice)();
+ var support = (0, _getSupport.getSupport)();
+ var $el = (0, _dom.default)(el);
+ var $preloaderEl = $el.find('.ptr-preloader');
+ ptr.$el = $el;
+ ptr.el = $el[0];
+ ptr.app = app;
+ ptr.bottom = ptr.$el.hasClass('ptr-bottom'); // Extend defaults with modules params
+
+ ptr.useModulesParams({});
+ var isMaterial = app.theme === 'md';
+ var isIos = app.theme === 'ios';
+ var isAurora = app.theme === 'aurora'; // Done
+
+ ptr.done = function done() {
+ var $transitionTarget = isMaterial ? $preloaderEl : $el;
+
+ var onTranstionEnd = function onTranstionEnd(e) {
+ if ((0, _dom.default)(e.target).closest($preloaderEl).length) return;
+ $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');
+ $el.trigger('ptr:done');
+ ptr.emit('local::done ptrDone', $el[0]);
+ $transitionTarget.off('transitionend', onTranstionEnd);
+ };
+
+ $transitionTarget.on('transitionend', onTranstionEnd);
+ $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');
+ return ptr;
+ };
+
+ ptr.refresh = function refresh() {
+ if ($el.hasClass('ptr-refreshing')) return ptr;
+ $el.addClass('ptr-transitioning ptr-refreshing');
+ $el.trigger('ptr:refresh', ptr.done);
+ ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);
+ return ptr;
+ }; // Mousewheel
+
+
+ ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true'; // Events handling
+
+ var touchId;
+ var isTouched;
+ var isMoved;
+ var touchesStart = {};
+ var isScrolling;
+ var touchesDiff;
+ var refresh = false;
+ var useTranslate = false;
+ var forceUseTranslate = false;
+ var startTranslate = 0;
+ var translate;
+ var scrollTop;
+ var wasScrolled;
+ var triggerDistance;
+ var dynamicTriggerDistance;
+ var pullStarted;
+ var hasNavbar = false;
+ var scrollHeight;
+ var offsetHeight;
+ var maxScrollTop;
+ var $pageEl = $el.parents('.page');
+ if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;
+ if ($pageEl.hasClass('no-navbar')) hasNavbar = false;
+
+ if (!ptr.bottom) {
+ var pageNavbarEl = app.navbar.getElByPage($pageEl[0]);
+
+ if (pageNavbarEl) {
+ var $pageNavbarEl = (0, _dom.default)(pageNavbarEl);
+ var isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');
+ var isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');
+
+ if (isLargeTransparent) {
+ $el.addClass('ptr-with-navbar-large-transparent');
+ } else if (isTransparent) {
+ $el.addClass('ptr-with-navbar-transparent');
+ }
+ }
+ }
+
+ if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar'); // Define trigger distance
+
+ if ($el.attr('data-ptr-distance')) {
+ dynamicTriggerDistance = true;
+ } else if (isMaterial) {
+ triggerDistance = 66;
+ } else if (isIos) {
+ triggerDistance = 44;
+ } else if (isAurora) {
+ triggerDistance = 38;
+ }
+
+ function setPreloaderProgress(progress) {
+ if (progress === void 0) {
+ progress = 0;
+ }
+
+ var $bars = $preloaderEl.find('.preloader-inner-line');
+ var perBarProgress = 1 / $bars.length;
+ $bars.forEach(function (barEl, barIndex) {
+ var barProgress = (progress - barIndex * perBarProgress) / perBarProgress;
+ barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;
+ });
+ }
+
+ function unsetPreloaderProgress() {
+ $preloaderEl.find('.preloader-inner-line').css('opacity', '');
+ }
+
+ function handleTouchStart(e) {
+ if (isTouched) {
+ if (device.os === 'android') {
+ if ('targetTouches' in e && e.targetTouches.length > 1) return;
+ } else return;
+ }
+
+ if ($el.hasClass('ptr-refreshing')) {
+ return;
+ }
+
+ if ((0, _dom.default)(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;
+ isMoved = false;
+ pullStarted = false;
+ isTouched = true;
+ isScrolling = undefined;
+ wasScrolled = undefined;
+ if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var pageX;
+ var pageY;
+ var touch;
+
+ if (e.type === 'touchmove') {
+ if (touchId && e.touches) {
+ for (var i = 0; i < e.touches.length; i += 1) {
+ if (e.touches[i].identifier === touchId) {
+ touch = e.touches[i];
+ }
+ }
+ }
+
+ if (!touch) touch = e.targetTouches[0];
+ pageX = touch.pageX;
+ pageY = touch.pageY;
+ } else {
+ pageX = e.pageX;
+ pageY = e.pageY;
+ }
+
+ if (!pageX || !pageY) return;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
+ }
+
+ if (!isScrolling) {
+ isTouched = false;
+ return;
+ }
+
+ scrollTop = $el[0].scrollTop;
+
+ if (!isMoved) {
+ $el.removeClass('ptr-transitioning');
+
+ if (isIos) {
+ setPreloaderProgress(0);
+ }
+
+ var targetIsScrollable;
+ scrollHeight = $el[0].scrollHeight;
+ offsetHeight = $el[0].offsetHeight;
+
+ if (ptr.bottom) {
+ maxScrollTop = scrollHeight - offsetHeight;
+ }
+
+ if (scrollTop > scrollHeight) {
+ isTouched = false;
+ return;
+ }
+
+ var $ptrWatchScrollable = (0, _dom.default)(e.target).closest('.ptr-watch-scroll');
+
+ if ($ptrWatchScrollable.length) {
+ $ptrWatchScrollable.each(function (ptrScrollableEl) {
+ if (ptrScrollableEl === el) return;
+
+ if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && (0, _dom.default)(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {
+ targetIsScrollable = true;
+ }
+ });
+ }
+
+ if (targetIsScrollable) {
+ isTouched = false;
+ return;
+ }
+
+ if (dynamicTriggerDistance) {
+ triggerDistance = $el.attr('data-ptr-distance');
+ if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;
+ }
+
+ startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;
+
+ if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {
+ useTranslate = true;
+ } else {
+ useTranslate = false;
+ }
+
+ forceUseTranslate = false;
+ }
+
+ isMoved = true;
+ touchesDiff = pageY - touchesStart.y;
+ if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;
+ var ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;
+
+ if (ptrStarted) {
+ // iOS 8 fix
+ if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {
+ if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;
+ if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;
+ }
+
+ if (!useTranslate && ptr.bottom && !isMaterial) {
+ $el.css('-webkit-overflow-scrolling', 'auto');
+ $el.scrollTop(maxScrollTop);
+ forceUseTranslate = true;
+ }
+
+ if (useTranslate || forceUseTranslate) {
+ if (e.cancelable) {
+ e.preventDefault();
+ }
+
+ translate = (ptr.bottom ? -1 * Math.pow(Math.abs(touchesDiff), 0.85) : Math.pow(touchesDiff, 0.85)) + startTranslate;
+
+ if (isMaterial) {
+ $preloaderEl.transform("translate3d(0," + translate + "px,0)").find('.ptr-arrow').transform("rotate(" + (180 * (Math.abs(touchesDiff) / 66) + 100) + "deg)");
+ } else {
+ // eslint-disable-next-line
+ if (ptr.bottom || isIos) {
+ $el.children().transform("translate3d(0," + translate + "px,0)");
+ } else {
+ // eslint-disable-next-line
+ $el.transform("translate3d(0," + translate + "px,0)");
+ }
+
+ if (isIos) {
+ $preloaderEl.transform("translate3d(0,0px,0)");
+ }
+ }
+ } else if (isIos && !ptr.bottom) {
+ $preloaderEl.transform("translate3d(0," + scrollTop + "px,0)");
+ }
+
+ var progress;
+
+ if (isIos && !refresh) {
+ progress = useTranslate || forceUseTranslate ? Math.pow(Math.abs(touchesDiff), 0.85) / triggerDistance : Math.abs(touchesDiff) / (triggerDistance * 2);
+ setPreloaderProgress(progress);
+ }
+
+ if ((useTranslate || forceUseTranslate) && Math.pow(Math.abs(touchesDiff), 0.85) > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {
+ refresh = true;
+ $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');
+ unsetPreloaderProgress();
+ } else {
+ refresh = false;
+ $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');
+ }
+
+ if (!pullStarted) {
+ $el.trigger('ptr:pullstart');
+ ptr.emit('local::pullStart ptrPullStart', $el[0]);
+ pullStarted = true;
+ }
+
+ $el.trigger('ptr:pullmove', {
+ event: e,
+ scrollTop: scrollTop,
+ translate: translate,
+ touchesDiff: touchesDiff
+ });
+ ptr.emit('local::pullMove ptrPullMove', $el[0], {
+ event: e,
+ scrollTop: scrollTop,
+ translate: translate,
+ touchesDiff: touchesDiff
+ });
+ } else {
+ pullStarted = false;
+ $el.removeClass('ptr-pull-up ptr-pull-down');
+ refresh = false;
+ }
+ }
+
+ function handleTouchEnd(e) {
+ if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {
+ if (e.changedTouches[0].identifier !== touchId) {
+ isTouched = false;
+ isScrolling = false;
+ isMoved = false;
+ touchId = null;
+ return;
+ }
+ }
+
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ if (translate) {
+ $el.addClass('ptr-transitioning');
+ translate = 0;
+ }
+
+ if (isMaterial) {
+ $preloaderEl.transform('').find('.ptr-arrow').transform('');
+ } else {
+ $preloaderEl.transform('');
+
+ if (ptr.bottom || isIos) {
+ $el.children().transform('');
+ } else {
+ $el.transform('');
+ }
+ }
+
+ if (!useTranslate && ptr.bottom && !isMaterial) {
+ $el.css('-webkit-overflow-scrolling', '');
+ }
+
+ if (refresh) {
+ $el.addClass('ptr-refreshing');
+ $el.trigger('ptr:refresh', ptr.done);
+ ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);
+ } else {
+ $el.removeClass('ptr-pull-down');
+ }
+
+ isTouched = false;
+ isMoved = false;
+
+ if (pullStarted) {
+ $el.trigger('ptr:pullend');
+ ptr.emit('local::pullEnd ptrPullEnd', $el[0]);
+ }
+ }
+
+ var mousewheelTimeout;
+ var mousewheelMoved;
+ var mousewheelAllow = true;
+ var mousewheelTranslate = 0;
+
+ function handleMouseWheelRelease() {
+ mousewheelAllow = true;
+ mousewheelMoved = false;
+ mousewheelTranslate = 0;
+
+ if (translate) {
+ $el.addClass('ptr-transitioning');
+ translate = 0;
+ }
+
+ if (isMaterial) {
+ $preloaderEl.transform('').find('.ptr-arrow').transform('');
+ } else {
+ $preloaderEl.transform('');
+
+ if (ptr.bottom) {
+ $el.children().transform('');
+ } else {
+ $el.transform('');
+ }
+ }
+
+ if (refresh) {
+ $el.addClass('ptr-refreshing');
+ $el.trigger('ptr:refresh', ptr.done);
+ ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);
+ } else {
+ $el.removeClass('ptr-pull-down');
+ }
+
+ if (pullStarted) {
+ $el.trigger('ptr:pullend');
+ ptr.emit('local::pullEnd ptrPullEnd', $el[0]);
+ }
+ }
+
+ function handleMouseWheel(e) {
+ if (!mousewheelAllow) return;
+ var deltaX = e.deltaX,
+ deltaY = e.deltaY;
+ if (Math.abs(deltaX) > Math.abs(deltaY)) return;
+
+ if ($el.hasClass('ptr-refreshing')) {
+ return;
+ }
+
+ if ((0, _dom.default)(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;
+ clearTimeout(mousewheelTimeout);
+ scrollTop = $el[0].scrollTop;
+
+ if (!mousewheelMoved) {
+ $el.removeClass('ptr-transitioning');
+
+ if (isIos) {
+ setPreloaderProgress(0);
+ }
+
+ var targetIsScrollable;
+ scrollHeight = $el[0].scrollHeight;
+ offsetHeight = $el[0].offsetHeight;
+
+ if (ptr.bottom) {
+ maxScrollTop = scrollHeight - offsetHeight;
+ }
+
+ if (scrollTop > scrollHeight) {
+ mousewheelAllow = false;
+ return;
+ }
+
+ var $ptrWatchScrollable = (0, _dom.default)(e.target).closest('.ptr-watch-scroll');
+
+ if ($ptrWatchScrollable.length) {
+ $ptrWatchScrollable.each(function (ptrScrollableEl) {
+ if (ptrScrollableEl === el) return;
+
+ if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && (0, _dom.default)(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {
+ targetIsScrollable = true;
+ }
+ });
+ }
+
+ if (targetIsScrollable) {
+ mousewheelAllow = false;
+ return;
+ }
+
+ if (dynamicTriggerDistance) {
+ triggerDistance = $el.attr('data-ptr-distance');
+ if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;
+ }
+ }
+
+ isMoved = true;
+ mousewheelTranslate -= deltaY;
+ touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;
+
+ if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;
+ var ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;
+
+ if (ptrStarted) {
+ if (e.cancelable) {
+ e.preventDefault();
+ }
+
+ translate = touchesDiff;
+
+ if (Math.abs(translate) > triggerDistance) {
+ translate = triggerDistance + Math.pow(Math.abs(translate) - triggerDistance, 0.7);
+ if (ptr.bottom) translate = -translate;
+ }
+
+ if (isMaterial) {
+ $preloaderEl.transform("translate3d(0," + translate + "px,0)").find('.ptr-arrow').transform("rotate(" + (180 * (Math.abs(touchesDiff) / 66) + 100) + "deg)");
+ } else {
+ // eslint-disable-next-line
+ if (ptr.bottom) {
+ $el.children().transform("translate3d(0," + translate + "px,0)");
+ } else {
+ $el.transform("translate3d(0," + translate + "px,0)");
+
+ if (isIos) {
+ $preloaderEl.transform("translate3d(0," + -translate + "px,0)");
+ }
+ }
+ }
+
+ var progress;
+
+ if (isIos && !refresh) {
+ progress = Math.abs(translate) / triggerDistance;
+ setPreloaderProgress(progress);
+ }
+
+ if (Math.abs(translate) > triggerDistance) {
+ refresh = true;
+ $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');
+ unsetPreloaderProgress();
+ } else {
+ refresh = false;
+ $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');
+ }
+
+ if (!pullStarted) {
+ $el.trigger('ptr:pullstart');
+ ptr.emit('local::pullStart ptrPullStart', $el[0]);
+ pullStarted = true;
+ }
+
+ $el.trigger('ptr:pullmove', {
+ event: e,
+ scrollTop: scrollTop,
+ translate: translate,
+ touchesDiff: touchesDiff
+ });
+ ptr.emit('local::pullMove ptrPullMove', $el[0], {
+ event: e,
+ scrollTop: scrollTop,
+ translate: translate,
+ touchesDiff: touchesDiff
+ });
+ } else {
+ pullStarted = false;
+ $el.removeClass('ptr-pull-up ptr-pull-down');
+ refresh = false;
+ }
+
+ mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);
+ }
+
+ if (!$pageEl.length || !$el.length) return ptr || _assertThisInitialized(_this);
+ $el[0].f7PullToRefresh = ptr; // Events
+
+ ptr.attachEvents = function attachEvents() {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ $el.on(app.touchEvents.start, handleTouchStart, passive);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+
+ if (ptr.mousewheel && !ptr.bottom) {
+ $el.on('wheel', handleMouseWheel);
+ }
+ };
+
+ ptr.detachEvents = function detachEvents() {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ $el.off(app.touchEvents.start, handleTouchStart, passive);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+
+ if (ptr.mousewheel && !ptr.bottom) {
+ $el.off('wheel', handleMouseWheel);
+ }
+ }; // Install Modules
+
+
+ ptr.useModules(); // Init
+
+ ptr.init();
+ return ptr || _assertThisInitialized(_this);
+ }
+
+ var _proto = PullToRefresh.prototype;
+
+ _proto.init = function init() {
+ var ptr = this;
+ ptr.attachEvents();
+ };
+
+ _proto.destroy = function destroy() {
+ var ptr = this;
+ ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);
+ ptr.$el.trigger('ptr:beforedestroy');
+ delete ptr.el.f7PullToRefresh;
+ ptr.detachEvents();
+ (0, _utils.deleteProps)(ptr);
+ ptr = null;
+ };
+
+ return PullToRefresh;
+}(_class.default);
+
+var _default = PullToRefresh;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/pull-to-refresh/pull-to-refresh.js b/www/assets/framework7/cjs/components/pull-to-refresh/pull-to-refresh.js
new file mode 100644
index 000000000..9fa8a11e5
--- /dev/null
+++ b/www/assets/framework7/cjs/components/pull-to-refresh/pull-to-refresh.js
@@ -0,0 +1,74 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _pullToRefreshClass = _interopRequireDefault(require("./pull-to-refresh-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'pullToRefresh',
+ create: function create() {
+ var app = this;
+ app.ptr = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: '.ptr-content',
+ constructor: _pullToRefreshClass.default,
+ app: app,
+ domProp: 'f7PullToRefresh'
+ }), {
+ done: function done(el) {
+ var ptr = app.ptr.get(el);
+ if (ptr) return ptr.done();
+ return undefined;
+ },
+ refresh: function refresh(el) {
+ var ptr = app.ptr.get(el);
+ if (ptr) return ptr.refresh();
+ return undefined;
+ }
+ });
+ },
+ static: {
+ PullToRefresh: _pullToRefreshClass.default
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ var $tabEl = (0, _dom.default)(tabEl);
+ var $ptrEls = $tabEl.find('.ptr-content');
+ if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);
+ $ptrEls.each(function (el) {
+ app.ptr.create(el);
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var $tabEl = (0, _dom.default)(tabEl);
+ var app = this;
+ var $ptrEls = $tabEl.find('.ptr-content');
+ if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);
+ $ptrEls.each(function (el) {
+ app.ptr.destroy(el);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.ptr-content').each(function (el) {
+ app.ptr.create(el);
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.ptr-content').each(function (el) {
+ app.ptr.destroy(el);
+ });
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/radio/radio.js b/www/assets/framework7/cjs/components/radio/radio.js
new file mode 100644
index 000000000..c65da6ea1
--- /dev/null
+++ b/www/assets/framework7/cjs/components/radio/radio.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'radio'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/range/range-class.js b/www/assets/framework7/cjs/components/range/range-class.js
new file mode 100644
index 000000000..96671556f
--- /dev/null
+++ b/www/assets/framework7/cjs/components/range/range-class.js
@@ -0,0 +1,674 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Range = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Range, _Framework7Class);
+
+ function Range(app, params) {
+ var _this;
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var range = _assertThisInitialized(_this);
+
+ var support = (0, _getSupport.getSupport)();
+ var defaults = {
+ el: null,
+ inputEl: null,
+ dual: false,
+ step: 1,
+ label: false,
+ min: 0,
+ max: 100,
+ value: 0,
+ draggableBar: true,
+ vertical: false,
+ verticalReversed: false,
+ formatLabel: null,
+ scale: false,
+ scaleSteps: 5,
+ scaleSubSteps: 0,
+ formatScaleLabel: null,
+ limitKnobPosition: app.theme === 'ios'
+ }; // Extend defaults with modules params
+
+ range.useModulesParams(defaults);
+ range.params = (0, _utils.extend)(defaults, params);
+ var el = range.params.el;
+ if (!el) return range || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return range || _assertThisInitialized(_this);
+ if ($el[0].f7Range) return $el[0].f7Range || _assertThisInitialized(_this);
+ var dataset = $el.dataset();
+ 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(function (paramName) {
+ if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {
+ range.params[paramName] = parseFloat(dataset[paramName]);
+ }
+ });
+ 'dual label vertical verticalReversed scale'.split(' ').forEach(function (paramName) {
+ if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {
+ range.params[paramName] = dataset[paramName];
+ }
+ });
+
+ if (!range.params.value) {
+ if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;
+
+ if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {
+ range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];
+ }
+ }
+
+ var $inputEl;
+
+ if (!range.params.dual) {
+ if (range.params.inputEl) {
+ $inputEl = (0, _dom.default)(range.params.inputEl);
+ } else if ($el.find('input[type="range"]').length) {
+ $inputEl = $el.find('input[type="range"]').eq(0);
+ }
+ }
+
+ var _range$params = range.params,
+ dual = _range$params.dual,
+ step = _range$params.step,
+ label = _range$params.label,
+ min = _range$params.min,
+ max = _range$params.max,
+ value = _range$params.value,
+ vertical = _range$params.vertical,
+ verticalReversed = _range$params.verticalReversed,
+ scale = _range$params.scale,
+ scaleSteps = _range$params.scaleSteps,
+ scaleSubSteps = _range$params.scaleSubSteps,
+ limitKnobPosition = _range$params.limitKnobPosition;
+ (0, _utils.extend)(range, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $inputEl: $inputEl,
+ inputEl: $inputEl ? $inputEl[0] : undefined,
+ dual: dual,
+ step: step,
+ label: label,
+ min: min,
+ max: max,
+ value: value,
+ previousValue: value,
+ vertical: vertical,
+ verticalReversed: verticalReversed,
+ scale: scale,
+ scaleSteps: scaleSteps,
+ scaleSubSteps: scaleSubSteps,
+ limitKnobPosition: limitKnobPosition
+ });
+
+ if ($inputEl) {
+ 'step min max'.split(' ').forEach(function (paramName) {
+ if (!params[paramName] && $inputEl.attr(paramName)) {
+ range.params[paramName] = parseFloat($inputEl.attr(paramName));
+ range[paramName] = parseFloat($inputEl.attr(paramName));
+ }
+ });
+
+ if (typeof $inputEl.val() !== 'undefined') {
+ range.params.value = parseFloat($inputEl.val());
+ range.value = parseFloat($inputEl.val());
+ }
+ } // Dual
+
+
+ if (range.dual) {
+ $el.addClass('range-slider-dual');
+ }
+
+ if (range.label) {
+ $el.addClass('range-slider-label');
+ } // Vertical
+
+
+ if (range.vertical) {
+ $el.addClass('range-slider-vertical');
+
+ if (range.verticalReversed) {
+ $el.addClass('range-slider-vertical-reversed');
+ }
+ } else {
+ $el.addClass('range-slider-horizontal');
+ } // Check for layout
+
+
+ var $barEl = (0, _dom.default)('');
+ var $barActiveEl = (0, _dom.default)('');
+ $barEl.append($barActiveEl); // Create Knobs
+ // prettier-ignore
+
+ var knobHTML = "\n \n
\n " + (range.label ? '
' : '') + "\n
\n ";
+ var knobs = [(0, _dom.default)(knobHTML)];
+
+ if (range.dual) {
+ knobs.push((0, _dom.default)(knobHTML));
+ }
+
+ $el.append($barEl);
+ knobs.forEach(function ($knobEl) {
+ $el.append($knobEl);
+ }); // Labels
+
+ var labels = [];
+
+ if (range.label) {
+ labels.push(knobs[0].find('.range-knob-label'));
+
+ if (range.dual) {
+ labels.push(knobs[1].find('.range-knob-label'));
+ }
+ } // Scale
+
+
+ var $scaleEl;
+
+ if (range.scale && range.scaleSteps >= 1) {
+ $scaleEl = (0, _dom.default)("\n \n " + range.renderScale() + "\n
\n ");
+ $el.append($scaleEl);
+ }
+
+ (0, _utils.extend)(range, {
+ knobs: knobs,
+ labels: labels,
+ $barEl: $barEl,
+ $barActiveEl: $barActiveEl,
+ $scaleEl: $scaleEl
+ });
+ $el[0].f7Range = range; // Touch Events
+
+ var isTouched;
+ var touchesStart = {};
+ var isScrolling;
+ var rangeOffset;
+ var rangeOffsetLeft;
+ var rangeOffsetTop;
+ var $touchedKnobEl;
+ var dualValueIndex;
+ var valueChangedByTouch;
+ var targetTouchIdentifier;
+
+ function onTouchChange() {
+ valueChangedByTouch = true;
+ }
+
+ function handleTouchStart(e) {
+ if (isTouched) return;
+
+ if (!range.params.draggableBar) {
+ if ((0, _dom.default)(e.target).closest('.range-knob').length === 0) {
+ return;
+ }
+ }
+
+ valueChangedByTouch = false;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (e.type === 'touchstart') {
+ targetTouchIdentifier = e.targetTouches[0].identifier;
+ }
+
+ isTouched = true;
+ isScrolling = undefined;
+ rangeOffset = $el.offset();
+ rangeOffsetLeft = rangeOffset.left;
+ rangeOffsetTop = rangeOffset.top;
+ var progress;
+
+ if (range.vertical) {
+ progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;
+ if (!range.verticalReversed) progress = 1 - progress;
+ } else if (range.app.rtl) {
+ progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;
+ } else {
+ progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;
+ }
+
+ var newValue = progress * (range.max - range.min) + range.min;
+
+ if (range.dual) {
+ if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {
+ dualValueIndex = 0;
+ $touchedKnobEl = range.knobs[0];
+ newValue = [newValue, range.value[1]];
+ } else {
+ dualValueIndex = 1;
+ $touchedKnobEl = range.knobs[1];
+ newValue = [range.value[0], newValue];
+ }
+ } else {
+ $touchedKnobEl = range.knobs[0];
+ newValue = progress * (range.max - range.min) + range.min;
+ }
+
+ (0, _utils.nextTick)(function () {
+ if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');
+ }, 70);
+ range.on('change', onTouchChange);
+ range.setValue(newValue, true);
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var pageX;
+ var pageY;
+
+ if (e.type === 'touchmove') {
+ for (var i = 0; i < e.targetTouches.length; i += 1) {
+ if (e.targetTouches[i].identifier === targetTouchIdentifier) {
+ pageX = e.targetTouches[i].pageX;
+ pageY = e.targetTouches[i].pageY;
+ }
+ }
+ } else {
+ pageX = e.pageX;
+ pageY = e.pageY;
+ }
+
+ if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;
+
+ if (typeof isScrolling === 'undefined' && !range.vertical) {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ return;
+ }
+
+ e.preventDefault();
+ var progress;
+
+ if (range.vertical) {
+ progress = (pageY - rangeOffsetTop) / range.rangeHeight;
+ if (!range.verticalReversed) progress = 1 - progress;
+ } else if (range.app.rtl) {
+ progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;
+ } else {
+ progress = (pageX - rangeOffsetLeft) / range.rangeWidth;
+ }
+
+ var newValue = progress * (range.max - range.min) + range.min;
+
+ if (range.dual) {
+ var leftValue;
+ var rightValue;
+
+ if (dualValueIndex === 0) {
+ leftValue = newValue;
+ rightValue = range.value[1];
+
+ if (leftValue > rightValue) {
+ rightValue = leftValue;
+ }
+ } else {
+ leftValue = range.value[0];
+ rightValue = newValue;
+
+ if (rightValue < leftValue) {
+ leftValue = rightValue;
+ }
+ }
+
+ newValue = [leftValue, rightValue];
+ }
+
+ range.setValue(newValue, true);
+ }
+
+ function handleTouchEnd(e) {
+ if (e.type === 'touchend') {
+ var touchEnded;
+
+ for (var i = 0; i < e.changedTouches.length; i += 1) {
+ if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;
+ }
+
+ if (!touchEnded) return;
+ }
+
+ if (!isTouched) {
+ if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');
+ isTouched = false;
+ return;
+ }
+
+ range.off('change', onTouchChange);
+ isTouched = false;
+ $touchedKnobEl.removeClass('range-knob-active-state');
+
+ if (valueChangedByTouch && range.$inputEl && !range.dual) {
+ range.$inputEl.trigger('change');
+ }
+
+ valueChangedByTouch = false;
+
+ if (typeof range.previousValue !== 'undefined') {
+ if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {
+ range.$el.trigger('range:changed', range.value);
+ range.emit('local::changed rangeChanged', range, range.value);
+ }
+ }
+ }
+
+ function handleResize() {
+ range.calcSize();
+ range.layout();
+ }
+
+ var parentModals;
+ var parentPanel;
+ var parentPage;
+
+ range.attachEvents = function attachEvents() {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ range.$el.on(app.touchEvents.start, handleTouchStart, passive);
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('tabShow', handleResize);
+ app.on('resize', handleResize);
+ parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');
+ parentModals.on('modal:open', handleResize);
+ parentPanel = range.$el.parents('.panel');
+ parentPanel.on('panel:open panel:resize', handleResize);
+ parentPage = range.$el.parents('.page').eq(0);
+ parentPage.on('page:reinit', handleResize);
+ };
+
+ range.detachEvents = function detachEvents() {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ range.$el.off(app.touchEvents.start, handleTouchStart, passive);
+ app.off('touchmove', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('tabShow', handleResize);
+ app.off('resize', handleResize);
+
+ if (parentModals) {
+ parentModals.off('modal:open', handleResize);
+ }
+
+ if (parentPanel) {
+ parentPanel.off('panel:open panel:resize', handleResize);
+ }
+
+ if (parentPage) {
+ parentPage.off('page:reinit', handleResize);
+ }
+
+ parentModals = null;
+ parentPanel = null;
+ parentPage = null;
+ }; // Install Modules
+
+
+ range.useModules(); // Init
+
+ range.init();
+ return range || _assertThisInitialized(_this);
+ }
+
+ var _proto = Range.prototype;
+
+ _proto.calcSize = function calcSize() {
+ var range = this;
+
+ if (range.vertical) {
+ var height = range.$el.outerHeight();
+ if (height === 0) return;
+ range.rangeHeight = height;
+ range.knobHeight = range.knobs[0].outerHeight();
+ } else {
+ var width = range.$el.outerWidth();
+ if (width === 0) return;
+ range.rangeWidth = width;
+ range.knobWidth = range.knobs[0].outerWidth();
+ }
+ };
+
+ _proto.layout = function layout() {
+ var range = this;
+ var app = range.app,
+ knobWidth = range.knobWidth,
+ knobHeight = range.knobHeight,
+ rangeWidth = range.rangeWidth,
+ rangeHeight = range.rangeHeight,
+ min = range.min,
+ max = range.max,
+ knobs = range.knobs,
+ $barActiveEl = range.$barActiveEl,
+ value = range.value,
+ label = range.label,
+ labels = range.labels,
+ vertical = range.vertical,
+ verticalReversed = range.verticalReversed,
+ limitKnobPosition = range.limitKnobPosition;
+ var knobSize = vertical ? knobHeight : knobWidth;
+ var rangeSize = vertical ? rangeHeight : rangeWidth; // eslint-disable-next-line
+
+ var positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';
+
+ if (range.dual) {
+ var _$barActiveEl$css;
+
+ var progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];
+ $barActiveEl.css((_$barActiveEl$css = {}, _$barActiveEl$css[positionProperty] = progress[0] * 100 + "%", _$barActiveEl$css[vertical ? 'height' : 'width'] = (progress[1] - progress[0]) * 100 + "%", _$barActiveEl$css));
+ knobs.forEach(function ($knobEl, knobIndex) {
+ var startPos = rangeSize * progress[knobIndex];
+
+ if (limitKnobPosition) {
+ var realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;
+ if (realStartPos < 0) startPos = knobSize / 2;
+ if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;
+ }
+
+ $knobEl.css(positionProperty, startPos + "px");
+ if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));
+ });
+ } else {
+ var _progress = (value - min) / (max - min);
+
+ $barActiveEl.css(vertical ? 'height' : 'width', _progress * 100 + "%");
+ var startPos = rangeSize * _progress;
+
+ if (limitKnobPosition) {
+ var realStartPos = rangeSize * _progress - knobSize / 2;
+ if (realStartPos < 0) startPos = knobSize / 2;
+ if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;
+ }
+
+ knobs[0].css(positionProperty, startPos + "px");
+ if (label) labels[0].text(range.formatLabel(value, labels[0][0]));
+ }
+
+ if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {
+ range.$el.addClass('range-slider-min');
+ } else {
+ range.$el.removeClass('range-slider-min');
+ }
+
+ if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {
+ range.$el.addClass('range-slider-max');
+ } else {
+ range.$el.removeClass('range-slider-max');
+ }
+ };
+
+ _proto.setValue = function setValue(newValue, byTouchMove) {
+ var range = this;
+ var step = range.step,
+ min = range.min,
+ max = range.max;
+ var valueChanged;
+ var oldValue;
+
+ if (range.dual) {
+ oldValue = [range.value[0], range.value[1]];
+ var newValues = newValue;
+ if (!Array.isArray(newValues)) newValues = [newValue, newValue];
+
+ if (newValue[0] > newValue[1]) {
+ newValues = [newValues[0], newValues[0]];
+ }
+
+ newValues = newValues.map(function (value) {
+ return Math.max(Math.min(Math.round(value / step) * step, max), min);
+ });
+
+ if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {
+ return range;
+ }
+
+ newValues.forEach(function (value, valueIndex) {
+ range.value[valueIndex] = value;
+ });
+ valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];
+ range.layout();
+ } else {
+ oldValue = range.value;
+ var value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);
+ range.value = value;
+ range.layout();
+ valueChanged = oldValue !== value;
+ }
+
+ if (valueChanged) {
+ range.previousValue = oldValue;
+ } // Events
+
+
+ if (!valueChanged) return range;
+ range.$el.trigger('range:change', range.value);
+
+ if (range.$inputEl && !range.dual) {
+ range.$inputEl.val(range.value);
+
+ if (!byTouchMove) {
+ range.$inputEl.trigger('input change');
+ } else {
+ range.$inputEl.trigger('input');
+ }
+ }
+
+ if (!byTouchMove) {
+ range.$el.trigger('range:changed', range.value);
+ range.emit('local::changed rangeChanged', range, range.value);
+ }
+
+ range.emit('local::change rangeChange', range, range.value);
+ return range;
+ };
+
+ _proto.getValue = function getValue() {
+ return this.value;
+ };
+
+ _proto.formatLabel = function formatLabel(value, labelEl) {
+ var range = this;
+ if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);
+ return value;
+ };
+
+ _proto.formatScaleLabel = function formatScaleLabel(value) {
+ var range = this;
+ if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);
+ return value;
+ };
+
+ _proto.renderScale = function renderScale() {
+ var range = this;
+ var app = range.app,
+ verticalReversed = range.verticalReversed,
+ vertical = range.vertical; // eslint-disable-next-line
+
+ var positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';
+ var html = '';
+ Array.from({
+ length: range.scaleSteps + 1
+ }).forEach(function (scaleEl, index) {
+ var scaleStepValue = (range.max - range.min) / range.scaleSteps;
+ var scaleValue = range.min + scaleStepValue * index;
+ var progress = (scaleValue - range.min) / (range.max - range.min);
+ html += "" + range.formatScaleLabel(scaleValue) + "
";
+
+ if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {
+ Array.from({
+ length: range.scaleSubSteps - 1
+ }).forEach(function (subStepEl, subIndex) {
+ var subStep = scaleStepValue / range.scaleSubSteps;
+ var scaleSubValue = scaleValue + subStep * (subIndex + 1);
+ var subProgress = (scaleSubValue - range.min) / (range.max - range.min);
+ html += "";
+ });
+ }
+ });
+ return html;
+ };
+
+ _proto.updateScale = function updateScale() {
+ var range = this;
+
+ if (!range.scale || range.scaleSteps < 1) {
+ if (range.$scaleEl) range.$scaleEl.remove();
+ delete range.$scaleEl;
+ return;
+ }
+
+ if (!range.$scaleEl) {
+ range.$scaleEl = (0, _dom.default)('');
+ range.$el.append(range.$scaleEl);
+ }
+
+ range.$scaleEl.html(range.renderScale());
+ };
+
+ _proto.init = function init() {
+ var range = this;
+ range.calcSize();
+ range.layout();
+ range.attachEvents();
+ return range;
+ };
+
+ _proto.destroy = function destroy() {
+ var range = this;
+ range.$el.trigger('range:beforedestroy');
+ range.emit('local::beforeDestroy rangeBeforeDestroy', range);
+ delete range.$el[0].f7Range;
+ range.detachEvents();
+ (0, _utils.deleteProps)(range);
+ range = null;
+ };
+
+ return Range;
+}(_class.default);
+
+var _default = Range;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/range/range.js b/www/assets/framework7/cjs/components/range/range.js
new file mode 100644
index 000000000..1d88de516
--- /dev/null
+++ b/www/assets/framework7/cjs/components/range/range.js
@@ -0,0 +1,93 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _rangeClass = _interopRequireDefault(require("./range-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'range',
+ create: function create() {
+ var app = this;
+ app.range = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: '.range-slider',
+ constructor: _rangeClass.default,
+ app: app,
+ domProp: 'f7Range'
+ }), {
+ getValue: function getValue(el) {
+ if (el === void 0) {
+ el = '.range-slider';
+ }
+
+ var range = app.range.get(el);
+ if (range) return range.getValue();
+ return undefined;
+ },
+ setValue: function setValue(el, value) {
+ if (el === void 0) {
+ el = '.range-slider';
+ }
+
+ var range = app.range.get(el);
+ if (range) return range.setValue(value);
+ return undefined;
+ }
+ });
+ },
+ static: {
+ Range: _rangeClass.default
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.range-slider-init').each(function (rangeEl) {
+ return new _rangeClass.default(app, {
+ el: rangeEl
+ });
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.range-slider-init').each(function (rangeEl) {
+ if (rangeEl.f7Range) rangeEl.f7Range.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.range-slider-init').each(function (rangeEl) {
+ return new _rangeClass.default(app, {
+ el: rangeEl
+ });
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.range-slider-init').each(function (rangeEl) {
+ if (rangeEl.f7Range) rangeEl.f7Range.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'range-slider-init': {
+ insert: function insert(vnode) {
+ var rangeEl = vnode.elm;
+ var app = this;
+ app.range.create({
+ el: rangeEl
+ });
+ },
+ destroy: function destroy(vnode) {
+ var rangeEl = vnode.elm;
+ if (rangeEl.f7Range) rangeEl.f7Range.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/searchbar/remove-diacritics.js b/www/assets/framework7/cjs/components/searchbar/remove-diacritics.js
new file mode 100644
index 000000000..62b874a97
--- /dev/null
+++ b/www/assets/framework7/cjs/components/searchbar/remove-diacritics.js
@@ -0,0 +1,283 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/* eslint no-control-regex: "off" */
+var defaultDiacriticsRemovalap = [{
+ base: 'A',
+ letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F"
+}, {
+ base: 'AA',
+ letters: "\uA732"
+}, {
+ base: 'AE',
+ letters: "\xC6\u01FC\u01E2"
+}, {
+ base: 'AO',
+ letters: "\uA734"
+}, {
+ base: 'AU',
+ letters: "\uA736"
+}, {
+ base: 'AV',
+ letters: "\uA738\uA73A"
+}, {
+ base: 'AY',
+ letters: "\uA73C"
+}, {
+ base: 'B',
+ letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181"
+}, {
+ base: 'C',
+ letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E"
+}, {
+ base: 'D',
+ letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779"
+}, {
+ base: 'DZ',
+ letters: "\u01F1\u01C4"
+}, {
+ base: 'Dz',
+ letters: "\u01F2\u01C5"
+}, {
+ base: 'E',
+ letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E"
+}, {
+ base: 'F',
+ letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B"
+}, {
+ base: 'G',
+ letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E"
+}, {
+ base: 'H',
+ letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D"
+}, {
+ base: 'I',
+ letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197"
+}, {
+ base: 'J',
+ letters: "J\u24BF\uFF2A\u0134\u0248"
+}, {
+ base: 'K',
+ letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2"
+}, {
+ base: 'L',
+ letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780"
+}, {
+ base: 'LJ',
+ letters: "\u01C7"
+}, {
+ base: 'Lj',
+ letters: "\u01C8"
+}, {
+ base: 'M',
+ letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C"
+}, {
+ base: 'N',
+ letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4"
+}, {
+ base: 'NJ',
+ letters: "\u01CA"
+}, {
+ base: 'Nj',
+ letters: "\u01CB"
+}, {
+ base: 'O',
+ letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C"
+}, {
+ base: 'OI',
+ letters: "\u01A2"
+}, {
+ base: 'OO',
+ letters: "\uA74E"
+}, {
+ base: 'OU',
+ letters: "\u0222"
+}, {
+ base: 'OE',
+ letters: "\x8C\u0152"
+}, {
+ base: 'oe',
+ letters: "\x9C\u0153"
+}, {
+ base: 'P',
+ letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754"
+}, {
+ base: 'Q',
+ letters: "Q\u24C6\uFF31\uA756\uA758\u024A"
+}, {
+ base: 'R',
+ letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782"
+}, {
+ base: 'S',
+ letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784"
+}, {
+ base: 'T',
+ letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786"
+}, {
+ base: 'TZ',
+ letters: "\uA728"
+}, {
+ base: 'U',
+ letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244"
+}, {
+ base: 'V',
+ letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245"
+}, {
+ base: 'VY',
+ letters: "\uA760"
+}, {
+ base: 'W',
+ letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72"
+}, {
+ base: 'X',
+ letters: "X\u24CD\uFF38\u1E8A\u1E8C"
+}, {
+ base: 'Y',
+ letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE"
+}, {
+ base: 'Z',
+ letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762"
+}, {
+ base: 'a',
+ letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250"
+}, {
+ base: 'aa',
+ letters: "\uA733"
+}, {
+ base: 'ae',
+ letters: "\xE6\u01FD\u01E3"
+}, {
+ base: 'ao',
+ letters: "\uA735"
+}, {
+ base: 'au',
+ letters: "\uA737"
+}, {
+ base: 'av',
+ letters: "\uA739\uA73B"
+}, {
+ base: 'ay',
+ letters: "\uA73D"
+}, {
+ base: 'b',
+ letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253"
+}, {
+ base: 'c',
+ letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184"
+}, {
+ base: 'd',
+ letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A"
+}, {
+ base: 'dz',
+ letters: "\u01F3\u01C6"
+}, {
+ base: 'e',
+ letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD"
+}, {
+ base: 'f',
+ letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C"
+}, {
+ base: 'g',
+ letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F"
+}, {
+ base: 'h',
+ letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265"
+}, {
+ base: 'hv',
+ letters: "\u0195"
+}, {
+ base: 'i',
+ letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131"
+}, {
+ base: 'j',
+ letters: "j\u24D9\uFF4A\u0135\u01F0\u0249"
+}, {
+ base: 'k',
+ letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3"
+}, {
+ base: 'l',
+ letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747"
+}, {
+ base: 'lj',
+ letters: "\u01C9"
+}, {
+ base: 'm',
+ letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F"
+}, {
+ base: 'n',
+ letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5"
+}, {
+ base: 'nj',
+ letters: "\u01CC"
+}, {
+ base: 'o',
+ letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275"
+}, {
+ base: 'oi',
+ letters: "\u01A3"
+}, {
+ base: 'ou',
+ letters: "\u0223"
+}, {
+ base: 'oo',
+ letters: "\uA74F"
+}, {
+ base: 'p',
+ letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755"
+}, {
+ base: 'q',
+ letters: "q\u24E0\uFF51\u024B\uA757\uA759"
+}, {
+ base: 'r',
+ letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783"
+}, {
+ base: 's',
+ letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B"
+}, {
+ base: 't',
+ letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787"
+}, {
+ base: 'tz',
+ letters: "\uA729"
+}, {
+ base: 'u',
+ letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289"
+}, {
+ base: 'v',
+ letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C"
+}, {
+ base: 'vy',
+ letters: "\uA761"
+}, {
+ base: 'w',
+ letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73"
+}, {
+ base: 'x',
+ letters: "x\u24E7\uFF58\u1E8B\u1E8D"
+}, {
+ base: 'y',
+ letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF"
+}, {
+ base: 'z',
+ letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763"
+}];
+var diacriticsMap = {};
+
+for (var i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {
+ var letters = defaultDiacriticsRemovalap[i].letters;
+
+ for (var j = 0; j < letters.length; j += 1) {
+ diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
+ }
+}
+
+function removeDiacritics(str) {
+ return str.replace(/[^\u0000-\u007E]/g, function (a) {
+ return diacriticsMap[a] || a;
+ });
+}
+
+var _default = removeDiacritics;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/searchbar/searchbar-class.js b/www/assets/framework7/cjs/components/searchbar/searchbar-class.js
new file mode 100644
index 000000000..64a830f29
--- /dev/null
+++ b/www/assets/framework7/cjs/components/searchbar/searchbar-class.js
@@ -0,0 +1,739 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getDevice = require("../../shared/get-device");
+
+var _removeDiacritics = _interopRequireDefault(require("./remove-diacritics"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Searchbar = /*#__PURE__*/function (_FrameworkClass) {
+ _inheritsLoose(Searchbar, _FrameworkClass);
+
+ function Searchbar(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _FrameworkClass.call(this, params, [app]) || this;
+
+ var sb = _assertThisInitialized(_this);
+
+ var defaults = {
+ el: undefined,
+ inputEl: undefined,
+ inputEvents: 'change input compositionend',
+ disableButton: true,
+ disableButtonEl: undefined,
+ backdropEl: undefined,
+ searchContainer: undefined,
+ // container to search, HTMLElement or CSS selector
+ searchItem: 'li',
+ // single item selector, CSS selector
+ searchIn: undefined,
+ // where to search in item, CSS selector
+ searchGroup: '.list-group',
+ searchGroupTitle: '.item-divider, .list-group-title',
+ ignore: '.searchbar-ignore',
+ foundEl: '.searchbar-found',
+ notFoundEl: '.searchbar-not-found',
+ hideOnEnableEl: '.searchbar-hide-on-enable',
+ hideOnSearchEl: '.searchbar-hide-on-search',
+ backdrop: undefined,
+ removeDiacritics: true,
+ customSearch: false,
+ hideDividers: true,
+ hideGroups: true,
+ disableOnBackdropClick: true,
+ expandable: false,
+ inline: false
+ }; // Extend defaults with modules params
+
+ sb.useModulesParams(defaults);
+ sb.params = (0, _utils.extend)(defaults, params);
+ var $el = (0, _dom.default)(sb.params.el);
+ if ($el.length === 0) return sb || _assertThisInitialized(_this);
+ if ($el[0].f7Searchbar) return $el[0].f7Searchbar || _assertThisInitialized(_this);
+ $el[0].f7Searchbar = sb;
+ var $pageEl;
+ var $navbarEl = $el.parents('.navbar');
+
+ if ($el.parents('.page').length > 0) {
+ $pageEl = $el.parents('.page');
+ } else if ($navbarEl.length > 0) {
+ $pageEl = (0, _dom.default)(app.navbar.getPageByEl($navbarEl[0]));
+
+ if (!$pageEl.length) {
+ var $currentPageEl = $el.parents('.view').find('.page-current');
+
+ if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {
+ $pageEl = $currentPageEl;
+ }
+ }
+ }
+
+ var $foundEl;
+
+ if (params.foundEl) {
+ $foundEl = (0, _dom.default)(params.foundEl);
+ } else if (typeof sb.params.foundEl === 'string' && $pageEl) {
+ $foundEl = $pageEl.find(sb.params.foundEl);
+ }
+
+ var $notFoundEl;
+
+ if (params.notFoundEl) {
+ $notFoundEl = (0, _dom.default)(params.notFoundEl);
+ } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {
+ $notFoundEl = $pageEl.find(sb.params.notFoundEl);
+ }
+
+ var $hideOnEnableEl;
+
+ if (params.hideOnEnableEl) {
+ $hideOnEnableEl = (0, _dom.default)(params.hideOnEnableEl);
+ } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {
+ $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);
+ }
+
+ var $hideOnSearchEl;
+
+ if (params.hideOnSearchEl) {
+ $hideOnSearchEl = (0, _dom.default)(params.hideOnSearchEl);
+ } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {
+ $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);
+ }
+
+ var expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');
+ var inline = sb.params.inline || $el.hasClass('searchbar-inline');
+
+ if (typeof sb.params.backdrop === 'undefined') {
+ if (!inline) sb.params.backdrop = app.theme !== 'aurora';else sb.params.backdrop = false;
+ }
+
+ var $backdropEl;
+
+ if (sb.params.backdrop) {
+ if (sb.params.backdropEl) {
+ $backdropEl = (0, _dom.default)(sb.params.backdropEl);
+ } else if ($pageEl && $pageEl.length > 0) {
+ $backdropEl = $pageEl.find('.searchbar-backdrop');
+ } else {
+ $backdropEl = $el.siblings('.searchbar-backdrop');
+ }
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+
+ if ($pageEl && $pageEl.length) {
+ if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {
+ $backdropEl.insertBefore($el);
+ } else {
+ $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));
+ }
+ } else {
+ $backdropEl.insertBefore($el);
+ }
+ }
+ }
+
+ var $searchContainer;
+
+ if (sb.params.searchContainer) {
+ $searchContainer = (0, _dom.default)(sb.params.searchContainer);
+ }
+
+ var $inputEl;
+
+ if (sb.params.inputEl) {
+ $inputEl = (0, _dom.default)(sb.params.inputEl);
+ } else {
+ $inputEl = $el.find('input[type="search"]').eq(0);
+ }
+
+ var $disableButtonEl;
+
+ if (sb.params.disableButton) {
+ if (sb.params.disableButtonEl) {
+ $disableButtonEl = (0, _dom.default)(sb.params.disableButtonEl);
+ } else {
+ $disableButtonEl = $el.find('.searchbar-disable-button');
+ }
+ }
+
+ (0, _utils.extend)(sb, {
+ app: app,
+ view: app.views.get($el.parents('.view')),
+ $el: $el,
+ el: $el[0],
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ $searchContainer: $searchContainer,
+ searchContainer: $searchContainer && $searchContainer[0],
+ $inputEl: $inputEl,
+ inputEl: $inputEl[0],
+ $disableButtonEl: $disableButtonEl,
+ disableButtonEl: $disableButtonEl && $disableButtonEl[0],
+ disableButtonHasMargin: false,
+ $pageEl: $pageEl,
+ pageEl: $pageEl && $pageEl[0],
+ $navbarEl: $navbarEl,
+ navbarEl: $navbarEl && $navbarEl[0],
+ $foundEl: $foundEl,
+ foundEl: $foundEl && $foundEl[0],
+ $notFoundEl: $notFoundEl,
+ notFoundEl: $notFoundEl && $notFoundEl[0],
+ $hideOnEnableEl: $hideOnEnableEl,
+ hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],
+ $hideOnSearchEl: $hideOnSearchEl,
+ hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],
+ previousQuery: '',
+ query: '',
+ isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),
+ virtualList: undefined,
+ enabled: false,
+ expandable: expandable,
+ inline: inline
+ }); // Events
+
+ function preventSubmit(e) {
+ e.preventDefault();
+ }
+
+ function onInputFocus(e) {
+ sb.enable(e);
+ sb.$el.addClass('searchbar-focused');
+ }
+
+ function onInputBlur() {
+ sb.$el.removeClass('searchbar-focused');
+
+ if (app.theme === 'aurora' && (!$disableButtonEl || !$disableButtonEl.length || !sb.params.disableButton) && !sb.query) {
+ sb.disable();
+ }
+ }
+
+ function onInputChange() {
+ var value = sb.$inputEl.val().trim();
+
+ if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {
+ sb.search(value, true);
+ }
+ }
+
+ function onInputClear(e, previousValue) {
+ sb.$el.trigger('searchbar:clear', previousValue);
+ sb.emit('local::clear searchbarClear', sb, previousValue);
+ }
+
+ function disableOnClick(e) {
+ sb.disable(e);
+ }
+
+ function onPageBeforeOut() {
+ if (!sb || sb && !sb.$el) return;
+
+ if (sb.enabled) {
+ sb.$el.removeClass('searchbar-enabled');
+
+ if (sb.expandable) {
+ sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');
+ }
+ }
+ }
+
+ function onPageBeforeIn() {
+ if (!sb || sb && !sb.$el) return;
+
+ if (sb.enabled) {
+ sb.$el.addClass('searchbar-enabled');
+
+ if (sb.expandable) {
+ sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');
+ }
+ }
+ }
+
+ sb.attachEvents = function attachEvents() {
+ $el.on('submit', preventSubmit);
+
+ if (sb.params.disableButton) {
+ sb.$disableButtonEl.on('click', disableOnClick);
+ }
+
+ if (sb.params.disableOnBackdropClick && sb.$backdropEl) {
+ sb.$backdropEl.on('click', disableOnClick);
+ }
+
+ if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {
+ sb.$pageEl.on('page:beforeout', onPageBeforeOut);
+ sb.$pageEl.on('page:beforein', onPageBeforeIn);
+ }
+
+ sb.$inputEl.on('focus', onInputFocus);
+ sb.$inputEl.on('blur', onInputBlur);
+ sb.$inputEl.on(sb.params.inputEvents, onInputChange);
+ sb.$inputEl.on('input:clear', onInputClear);
+ };
+
+ sb.detachEvents = function detachEvents() {
+ $el.off('submit', preventSubmit);
+
+ if (sb.params.disableButton) {
+ sb.$disableButtonEl.off('click', disableOnClick);
+ }
+
+ if (sb.params.disableOnBackdropClick && sb.$backdropEl) {
+ sb.$backdropEl.off('click', disableOnClick);
+ }
+
+ if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {
+ sb.$pageEl.off('page:beforeout', onPageBeforeOut);
+ sb.$pageEl.off('page:beforein', onPageBeforeIn);
+ }
+
+ sb.$inputEl.off('focus', onInputFocus);
+ sb.$inputEl.off('blur', onInputBlur);
+ sb.$inputEl.off(sb.params.inputEvents, onInputChange);
+ sb.$inputEl.off('input:clear', onInputClear);
+ }; // Install Modules
+
+
+ sb.useModules(); // Init
+
+ sb.init();
+ return sb || _assertThisInitialized(_this);
+ }
+
+ var _proto = Searchbar.prototype;
+
+ _proto.clear = function clear(e) {
+ var sb = this;
+
+ if (!sb.query && e && (0, _dom.default)(e.target).hasClass('searchbar-clear')) {
+ sb.disable();
+ return sb;
+ }
+
+ var previousQuery = sb.value;
+ sb.$inputEl.val('').trigger('change').focus();
+ sb.$el.trigger('searchbar:clear', previousQuery);
+ sb.emit('local::clear searchbarClear', sb, previousQuery);
+ return sb;
+ };
+
+ _proto.setDisableButtonMargin = function setDisableButtonMargin() {
+ var sb = this;
+ if (sb.expandable) return;
+ var app = sb.app;
+ sb.$disableButtonEl.transition(0).show();
+ sb.$disableButtonEl.css("margin-" + (app.rtl ? 'left' : 'right'), -sb.disableButtonEl.offsetWidth + "px");
+ /* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
+
+ sb._clientLeft = sb.$disableButtonEl[0].clientLeft;
+ sb.$disableButtonEl.transition('');
+ sb.disableButtonHasMargin = true;
+ };
+
+ _proto.enable = function enable(setFocus) {
+ var sb = this;
+ if (sb.enabled) return sb;
+ var app = sb.app;
+ var document = (0, _ssrWindow.getDocument)();
+ var device = (0, _getDevice.getDevice)();
+ sb.enabled = true;
+
+ function enable() {
+ if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {
+ sb.backdropShow();
+ }
+
+ sb.$el.addClass('searchbar-enabled');
+
+ if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {
+ sb.$el.addClass('searchbar-enabled-no-disable-button');
+ }
+
+ if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {
+ if (!sb.disableButtonHasMargin) {
+ sb.setDisableButtonMargin();
+ }
+
+ sb.$disableButtonEl.css("margin-" + (app.rtl ? 'left' : 'right'), '0px');
+ }
+
+ if (sb.expandable) {
+ var $navbarEl = sb.$el.parents('.navbar');
+
+ if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {
+ var $pageContentEl = sb.$pageEl.find('.page-content');
+ var $titleLargeEl = $navbarEl.find('.title-large');
+ $pageContentEl.addClass('with-searchbar-expandable-enabled');
+
+ if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {
+ $pageContentEl.transition(0);
+ $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;
+ setTimeout(function () {
+ $pageContentEl.transition('');
+ }, 200);
+ }
+ }
+
+ if (app.theme === 'md' && $navbarEl.length) {
+ $navbarEl.addClass('with-searchbar-expandable-enabled');
+ } else {
+ $navbarEl.addClass('with-searchbar-expandable-enabled');
+
+ if ($navbarEl.hasClass('navbar-large')) {
+ $navbarEl.addClass('navbar-large-collapsed');
+ }
+ }
+ }
+
+ if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');
+ sb.$el.trigger('searchbar:enable');
+ sb.emit('local::enable searchbarEnable', sb);
+ }
+
+ var needsFocus = false;
+
+ if (setFocus === true) {
+ if (document.activeElement !== sb.inputEl) {
+ needsFocus = true;
+ }
+ }
+
+ var isIos = device.ios && app.theme === 'ios';
+
+ if (isIos) {
+ if (sb.expandable) {
+ if (needsFocus) sb.$inputEl.focus();
+ enable();
+ } else {
+ if (needsFocus) sb.$inputEl.focus();
+
+ if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {
+ (0, _utils.nextTick)(function () {
+ enable();
+ }, 400);
+ } else {
+ enable();
+ }
+ }
+ } else {
+ if (needsFocus) sb.$inputEl.focus();
+
+ if (app.theme === 'md' && sb.expandable) {
+ sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);
+ }
+
+ enable();
+ }
+
+ return sb;
+ };
+
+ _proto.disable = function disable() {
+ var sb = this;
+ if (!sb.enabled) return sb;
+ var app = sb.app;
+ sb.$inputEl.val('').trigger('change');
+ sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');
+
+ if (sb.expandable) {
+ var $navbarEl = sb.$el.parents('.navbar');
+ var $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');
+
+ if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {
+ var $titleLargeEl = $navbarEl.find('.title-large');
+ sb.$el.transitionEnd(function () {
+ $pageContentEl.removeClass('with-searchbar-expandable-closing');
+ });
+
+ if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {
+ var scrollTop = $pageContentEl[0].scrollTop;
+ var titleLargeHeight = $titleLargeEl[0].offsetHeight;
+
+ if (scrollTop > titleLargeHeight) {
+ $pageContentEl.transition(0);
+ $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;
+ setTimeout(function () {
+ $pageContentEl.transition('');
+ }, 200);
+ }
+ }
+
+ $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');
+ }
+
+ if (app.theme === 'md' && $navbarEl.length) {
+ $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');
+ sb.$el.transitionEnd(function () {
+ $navbarEl.removeClass('with-searchbar-expandable-closing');
+ });
+ } else {
+ $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');
+ sb.$el.transitionEnd(function () {
+ $navbarEl.removeClass('with-searchbar-expandable-closing');
+ });
+
+ if (sb.$pageEl) {
+ sb.$pageEl.find('.page-content').trigger('scroll');
+ }
+ }
+ }
+
+ if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {
+ sb.$disableButtonEl.css("margin-" + (app.rtl ? 'left' : 'right'), -sb.disableButtonEl.offsetWidth + "px");
+ }
+
+ if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {
+ sb.backdropHide();
+ }
+
+ sb.enabled = false;
+ sb.$inputEl.blur();
+ if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');
+ sb.$el.trigger('searchbar:disable');
+ sb.emit('local::disable searchbarDisable', sb);
+ return sb;
+ };
+
+ _proto.toggle = function toggle() {
+ var sb = this;
+ if (sb.enabled) sb.disable();else sb.enable(true);
+ return sb;
+ };
+
+ _proto.backdropShow = function backdropShow() {
+ var sb = this;
+
+ if (sb.$backdropEl) {
+ sb.$backdropEl.addClass('searchbar-backdrop-in');
+ }
+
+ return sb;
+ };
+
+ _proto.backdropHide = function backdropHide() {
+ var sb = this;
+
+ if (sb.$backdropEl) {
+ sb.$backdropEl.removeClass('searchbar-backdrop-in');
+ }
+
+ return sb;
+ };
+
+ _proto.search = function search(query, internal) {
+ var sb = this;
+ sb.previousQuery = sb.query || '';
+ if (query === sb.previousQuery) return sb;
+
+ if (!internal) {
+ if (!sb.enabled) {
+ sb.enable();
+ }
+
+ sb.$inputEl.val(query);
+ sb.$inputEl.trigger('input');
+ }
+
+ sb.query = query;
+ sb.value = query;
+ var $searchContainer = sb.$searchContainer,
+ $el = sb.$el,
+ $foundEl = sb.$foundEl,
+ $notFoundEl = sb.$notFoundEl,
+ $hideOnSearchEl = sb.$hideOnSearchEl,
+ isVirtualList = sb.isVirtualList; // Hide on search element
+
+ if (query.length > 0 && $hideOnSearchEl) {
+ $hideOnSearchEl.addClass('hidden-by-searchbar');
+ } else if ($hideOnSearchEl) {
+ $hideOnSearchEl.removeClass('hidden-by-searchbar');
+ } // Add active/inactive classes on overlay
+
+
+ if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {
+ if (query.length === 0) {
+ sb.backdropShow();
+ } else {
+ sb.backdropHide();
+ }
+ }
+
+ if (sb.params.customSearch) {
+ $el.trigger('searchbar:search', {
+ query: query,
+ previousQuery: sb.previousQuery
+ });
+ sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);
+ return sb;
+ }
+
+ var foundItems = [];
+ var vlQuery;
+
+ if (isVirtualList) {
+ sb.virtualList = $searchContainer[0].f7VirtualList;
+
+ if (query.trim() === '') {
+ sb.virtualList.resetFilter();
+ if ($notFoundEl) $notFoundEl.hide();
+ if ($foundEl) $foundEl.show();
+ $el.trigger('searchbar:search', {
+ query: query,
+ previousQuery: sb.previousQuery
+ });
+ sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);
+ return sb;
+ }
+
+ vlQuery = sb.params.removeDiacritics ? (0, _removeDiacritics.default)(query) : query;
+
+ if (sb.virtualList.params.searchAll) {
+ foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];
+ } else if (sb.virtualList.params.searchByItem) {
+ for (var i = 0; i < sb.virtualList.items.length; i += 1) {
+ if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {
+ foundItems.push(i);
+ }
+ }
+ }
+ } else {
+ var values;
+ if (sb.params.removeDiacritics) values = (0, _removeDiacritics.default)(query.trim().toLowerCase()).split(' ');else {
+ values = query.trim().toLowerCase().split(' ');
+ }
+ $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(function (itemEl) {
+ var $itemEl = (0, _dom.default)(itemEl);
+ var compareWithText = [];
+ var $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;
+
+ if (sb.params.searchIn === sb.params.searchItem) {
+ $searchIn = $itemEl;
+ }
+
+ $searchIn.each(function (searchInEl) {
+ var itemText = (0, _dom.default)(searchInEl).text().trim().toLowerCase();
+ if (sb.params.removeDiacritics) itemText = (0, _removeDiacritics.default)(itemText);
+ compareWithText.push(itemText);
+ });
+ compareWithText = compareWithText.join(' ');
+ var wordsMatch = 0;
+
+ for (var _i = 0; _i < values.length; _i += 1) {
+ if (compareWithText.indexOf(values[_i]) >= 0) wordsMatch += 1;
+ }
+
+ if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {
+ $itemEl.addClass('hidden-by-searchbar');
+ } else {
+ foundItems.push($itemEl[0]);
+ }
+ });
+
+ if (sb.params.hideDividers) {
+ $searchContainer.find(sb.params.searchGroupTitle).each(function (titleEl) {
+ var $titleEl = (0, _dom.default)(titleEl);
+ var $nextElements = $titleEl.nextAll(sb.params.searchItem);
+ var hide = true;
+
+ for (var _i2 = 0; _i2 < $nextElements.length; _i2 += 1) {
+ var $nextEl = $nextElements.eq(_i2);
+ if ($nextEl.is(sb.params.searchGroupTitle)) break;
+
+ if (!$nextEl.hasClass('hidden-by-searchbar')) {
+ hide = false;
+ }
+ }
+
+ var ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);
+ if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');
+ });
+ }
+
+ if (sb.params.hideGroups) {
+ $searchContainer.find(sb.params.searchGroup).each(function (groupEl) {
+ var $groupEl = (0, _dom.default)(groupEl);
+ var ignore = sb.params.ignore && $groupEl.is(sb.params.ignore); // eslint-disable-next-line
+
+ var notHidden = $groupEl.find(sb.params.searchItem).filter(function (el) {
+ return !(0, _dom.default)(el).hasClass('hidden-by-searchbar');
+ });
+
+ if (notHidden.length === 0 && !ignore) {
+ $groupEl.addClass('hidden-by-searchbar');
+ } else {
+ $groupEl.removeClass('hidden-by-searchbar');
+ }
+ });
+ }
+ }
+
+ if (foundItems.length === 0) {
+ if ($notFoundEl) $notFoundEl.show();
+ if ($foundEl) $foundEl.hide();
+ } else {
+ if ($notFoundEl) $notFoundEl.hide();
+ if ($foundEl) $foundEl.show();
+ }
+
+ if (isVirtualList && sb.virtualList) {
+ sb.virtualList.filterItems(foundItems);
+ }
+
+ $el.trigger('searchbar:search', {
+ query: query,
+ previousQuery: sb.previousQuery,
+ foundItems: foundItems
+ });
+ sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);
+ return sb;
+ };
+
+ _proto.init = function init() {
+ var sb = this;
+ if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');
+ if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');
+ sb.attachEvents();
+ };
+
+ _proto.destroy = function destroy() {
+ var sb = this;
+ sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);
+ sb.$el.trigger('searchbar:beforedestroy');
+ sb.detachEvents();
+
+ if (sb.$el[0]) {
+ sb.$el[0].f7Searchbar = null;
+ delete sb.$el[0].f7Searchbar;
+ }
+
+ (0, _utils.deleteProps)(sb);
+ };
+
+ return Searchbar;
+}(_class.default);
+
+var _default = Searchbar;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/searchbar/searchbar.js b/www/assets/framework7/cjs/components/searchbar/searchbar.js
new file mode 100644
index 000000000..2f1d2205b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/searchbar/searchbar.js
@@ -0,0 +1,141 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _searchbarClass = _interopRequireDefault(require("./searchbar-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'searchbar',
+ static: {
+ Searchbar: _searchbarClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.searchbar = (0, _constructorMethods.default)({
+ defaultSelector: '.searchbar',
+ constructor: _searchbarClass.default,
+ app: app,
+ domProp: 'f7Searchbar',
+ addMethods: 'clear enable disable toggle search'.split(' ')
+ });
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.searchbar-init').each(function (searchbarEl) {
+ var $searchbarEl = (0, _dom.default)(searchbarEl);
+ app.searchbar.create((0, _utils.extend)($searchbarEl.dataset(), {
+ el: searchbarEl
+ }));
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.searchbar-init').each(function (searchbarEl) {
+ if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
+ searchbarEl.f7Searchbar.destroy();
+ }
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.searchbar-init').each(function (searchbarEl) {
+ var $searchbarEl = (0, _dom.default)(searchbarEl);
+ app.searchbar.create((0, _utils.extend)($searchbarEl.dataset(), {
+ el: searchbarEl
+ }));
+ });
+
+ if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
+ page.$navbarEl.find('.searchbar-init').each(function (searchbarEl) {
+ var $searchbarEl = (0, _dom.default)(searchbarEl);
+ app.searchbar.create((0, _utils.extend)($searchbarEl.dataset(), {
+ el: searchbarEl
+ }));
+ });
+ }
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.searchbar-init').each(function (searchbarEl) {
+ if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
+ searchbarEl.f7Searchbar.destroy();
+ }
+ });
+
+ if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
+ page.$navbarEl.find('.searchbar-init').each(function (searchbarEl) {
+ if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
+ searchbarEl.f7Searchbar.destroy();
+ }
+ });
+ }
+ }
+ },
+ clicks: {
+ '.searchbar-clear': function clear($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ var sb = app.searchbar.get(data.searchbar);
+ if (sb) sb.clear();
+ },
+ '.searchbar-enable': function enable($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ var sb = app.searchbar.get(data.searchbar);
+ if (sb) sb.enable(true);
+ },
+ '.searchbar-disable': function disable($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ var sb = app.searchbar.get(data.searchbar);
+ if (sb) sb.disable();
+ },
+ '.searchbar-toggle': function toggle($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ var sb = app.searchbar.get(data.searchbar);
+ if (sb) sb.toggle();
+ }
+ },
+ vnode: {
+ 'searchbar-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var searchbarEl = vnode.elm;
+ var $searchbarEl = (0, _dom.default)(searchbarEl);
+ app.searchbar.create((0, _utils.extend)($searchbarEl.dataset(), {
+ el: searchbarEl
+ }));
+ },
+ destroy: function destroy(vnode) {
+ var searchbarEl = vnode.elm;
+
+ if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
+ searchbarEl.f7Searchbar.destroy();
+ }
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/sheet/sheet-class.js b/www/assets/framework7/cjs/components/sheet/sheet-class.js
new file mode 100644
index 000000000..af8e3e580
--- /dev/null
+++ b/www/assets/framework7/cjs/components/sheet/sheet-class.js
@@ -0,0 +1,593 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+var _getDevice = require("../../shared/get-device");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Sheet = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Sheet, _Modal);
+
+ function Sheet(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.sheet, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var sheet = _assertThisInitialized(_this);
+
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var support = (0, _getSupport.getSupport)();
+ var device = (0, _getDevice.getDevice)();
+ sheet.params = extendedParams;
+
+ if (typeof sheet.params.backdrop === 'undefined') {
+ sheet.params.backdrop = app.theme !== 'ios';
+ } // Find Element
+
+
+ var $el;
+
+ if (!sheet.params.el) {
+ $el = (0, _dom.default)(sheet.params.content).filter(function (node) {
+ return node.nodeType === 1;
+ }).eq(0);
+ } else {
+ $el = (0, _dom.default)(sheet.params.el).eq(0);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return sheet.destroy() || _assertThisInitialized(_this);
+ }
+
+ var $backdropEl;
+
+ if (sheet.params.backdrop && sheet.params.backdropEl) {
+ $backdropEl = (0, _dom.default)(sheet.params.backdropEl);
+ } else if (sheet.params.backdrop) {
+ $backdropEl = sheet.$containerEl.children('.sheet-backdrop');
+
+ if ($backdropEl.length === 0) {
+ $backdropEl = (0, _dom.default)('');
+ sheet.$containerEl.append($backdropEl);
+ }
+ }
+
+ (0, _utils.extend)(sheet, {
+ app: app,
+ push: $el.hasClass('sheet-modal-push') || sheet.params.push,
+ $el: $el,
+ el: $el[0],
+ $backdropEl: $backdropEl,
+ backdropEl: $backdropEl && $backdropEl[0],
+ type: 'sheet',
+ $htmlEl: (0, _dom.default)('html')
+ });
+
+ if (sheet.params.push) {
+ $el.addClass('sheet-modal-push');
+ }
+
+ var $pageContentEl;
+
+ function scrollToElementOnOpen() {
+ var $scrollEl = (0, _dom.default)(sheet.params.scrollToEl).eq(0);
+ if ($scrollEl.length === 0) return;
+ $pageContentEl = $scrollEl.parents('.page-content');
+ if ($pageContentEl.length === 0) return;
+ var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);
+ var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
+ var pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();
+ var pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();
+ var pageScroll = $pageContentEl.scrollTop();
+ var newPaddingBottom;
+ var scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;
+
+ if (scrollElTop > pageHeight) {
+ var scrollTop = pageScroll + scrollElTop - pageHeight;
+
+ if (scrollTop + pageHeight > pageScrollHeight) {
+ newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;
+
+ if (pageHeight === pageScrollHeight) {
+ newPaddingBottom = $el.height();
+ }
+
+ $pageContentEl.css({
+ 'padding-bottom': newPaddingBottom + "px"
+ });
+ }
+
+ $pageContentEl.scrollTop(scrollTop, 300);
+ }
+ }
+
+ function scrollToElementOnClose() {
+ if ($pageContentEl && $pageContentEl.length > 0) {
+ $pageContentEl.css({
+ 'padding-bottom': ''
+ });
+ }
+ }
+
+ function handleClick(e) {
+ var target = e.target;
+ var $target = (0, _dom.default)(target);
+ var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
+ if (keyboardOpened) return;
+
+ if ($target.closest(sheet.el).length === 0) {
+ if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {
+ sheet.close();
+ } else if (sheet.params.closeByOutsideClick) {
+ sheet.close();
+ }
+ }
+ }
+
+ function onKeyDown(e) {
+ var keyCode = e.keyCode;
+
+ if (keyCode === 27 && sheet.params.closeOnEscape) {
+ sheet.close();
+ }
+ }
+
+ var pushOffset;
+
+ function pushViewScale(offset) {
+ return (app.height - offset * 2) / app.height;
+ }
+
+ var isTouched = false;
+ var startTouch;
+ var currentTouch;
+ var isScrolling;
+ var touchStartTime;
+ var touchesDiff;
+ var isMoved = false;
+ var isTopSheetModal;
+ var swipeStepTranslate;
+ var startTranslate;
+ var currentTranslate;
+ var sheetElOffsetHeight;
+ var minTranslate;
+ var maxTranslate;
+ var $pushViewEl;
+ var pushBorderRadius;
+ var sheetPageContentEl;
+ var sheetPageContentScrollTop;
+ var sheetPageContentScrollHeight;
+ var sheetPageContentOffsetHeight;
+
+ function handleTouchStart(e) {
+ if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep)) return;
+
+ if (sheet.params.swipeHandler && (0, _dom.default)(e.target).closest(sheet.params.swipeHandler).length === 0) {
+ return;
+ }
+
+ isTouched = true;
+ isMoved = false;
+ startTouch = {
+ x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,
+ y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY
+ };
+ touchStartTime = (0, _utils.now)();
+ isScrolling = undefined;
+ isTopSheetModal = $el.hasClass('sheet-modal-top');
+
+ if (!sheet.params.swipeHandler && e.type === 'touchstart') {
+ sheetPageContentEl = (0, _dom.default)(e.target).closest('.page-content')[0];
+ }
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ currentTouch = {
+ x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,
+ y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY
+ };
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ touchesDiff = startTouch.y - currentTouch.y;
+ var direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
+
+ if (!isMoved) {
+ if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {
+ sheetPageContentScrollTop = sheetPageContentEl.scrollTop;
+ sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;
+ sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;
+
+ if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {
+ $el.transform('');
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+ }
+
+ if (sheet.push && pushOffset) {
+ $pushViewEl = app.$el.children('.view, .views');
+ }
+
+ sheetElOffsetHeight = $el[0].offsetHeight;
+ startTranslate = (0, _utils.getTranslate)($el[0], 'y');
+
+ if (isTopSheetModal) {
+ minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;
+ maxTranslate = 0;
+ } else {
+ minTranslate = 0;
+ maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : swipeStepTranslate;
+ }
+
+ isMoved = true;
+ }
+
+ currentTranslate = startTranslate - touchesDiff;
+ currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);
+ e.preventDefault();
+
+ if (sheet.push && pushOffset) {
+ var progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;
+
+ if (sheet.params.swipeToStep) {
+ if (isTopSheetModal) {
+ progress = currentTranslate / swipeStepTranslate;
+ } else {
+ progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;
+ }
+ }
+
+ progress = Math.abs(progress);
+ progress = Math.min(Math.max(progress, 0), 1);
+ var pushProgress = 1 - progress;
+ var scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;
+ $pushViewEl.transition(0).forEach(function (el) {
+ el.style.setProperty('transform', "translate3d(0,0,0) scale(" + scale + ")", 'important');
+ });
+
+ if (sheet.params.swipeToStep) {
+ $pushViewEl.css('border-radius', pushBorderRadius * pushProgress + "px");
+ }
+ }
+
+ $el.transition(0).transform("translate3d(0," + currentTranslate + "px,0)");
+
+ if (sheet.params.swipeToStep) {
+ var _progress;
+
+ if (isTopSheetModal) {
+ _progress = 1 - currentTranslate / swipeStepTranslate;
+ } else {
+ _progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;
+ }
+
+ _progress = Math.min(Math.max(_progress, 0), 1);
+ $el.trigger('sheet:stepprogress', _progress);
+ sheet.emit('local::stepProgress sheetStepProgress', sheet, _progress);
+ }
+ }
+
+ function handleTouchEnd() {
+ isTouched = false;
+
+ if (!isMoved) {
+ return;
+ }
+
+ isMoved = false;
+ $el.transform('').transition('');
+
+ if (sheet.push && pushOffset) {
+ $pushViewEl.transition('').transform('');
+ $pushViewEl.css('border-radius', '');
+ }
+
+ var direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
+ var diff = Math.abs(touchesDiff);
+ if (diff === 0 || currentTranslate === startTranslate) return;
+ var timeDiff = new Date().getTime() - touchStartTime;
+
+ if (!sheet.params.swipeToStep) {
+ if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {
+ return;
+ }
+
+ if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {
+ sheet.close();
+ }
+
+ return;
+ }
+
+ var openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';
+ var closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';
+ var absCurrentTranslate = Math.abs(currentTranslate);
+ var absSwipeStepTranslate = Math.abs(swipeStepTranslate);
+
+ if (timeDiff < 300 && diff > 10) {
+ if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {
+ // open step
+ $el.removeClass('modal-in-swipe-step');
+ $el.trigger('sheet:stepprogress', 1);
+ sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);
+ sheet.emit('local::_swipeStep', false);
+ $el.trigger('sheet:stepopen');
+ sheet.emit('local::stepOpen sheetStepOpen', sheet);
+
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
+ $pushViewEl.css('border-radius', '');
+ }
+ }
+
+ if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {
+ // close sheet
+ if (sheet.params.swipeToClose) {
+ sheet.close();
+ } else {
+ // close step
+ $el.addClass('modal-in-swipe-step');
+ $el.trigger('sheet:stepprogress', 0);
+ sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);
+ sheet.emit('local::_swipeStep', true);
+ $el.trigger('sheet:stepclose');
+ sheet.emit('local::stepClose sheetStepClose', sheet);
+
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
+ $pushViewEl.css('border-radius', '0px');
+ }
+ }
+ }
+
+ if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {
+ // close step
+ $el.addClass('modal-in-swipe-step');
+ $el.trigger('sheet:stepprogress', 0);
+ sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);
+ sheet.emit('local::_swipeStep', true);
+ $el.trigger('sheet:stepclose');
+ sheet.emit('local::stepClose sheetStepClose', sheet);
+
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
+ $pushViewEl.css('border-radius', '0px');
+ }
+ }
+
+ return;
+ }
+
+ if (timeDiff >= 300) {
+ var stepOpened = !$el.hasClass('modal-in-swipe-step');
+
+ if (!stepOpened) {
+ if (absCurrentTranslate < absSwipeStepTranslate / 2) {
+ // open step
+ $el.removeClass('modal-in-swipe-step');
+ $el.trigger('sheet:stepprogress', 1);
+ sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);
+ sheet.emit('local::_swipeStep', false);
+ $el.trigger('sheet:stepopen');
+ sheet.emit('local::stepOpen sheetStepOpen', sheet);
+
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
+ $pushViewEl.css('border-radius', '');
+ }
+ } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {
+ // close sheet
+ if (sheet.params.swipeToClose) sheet.close();
+ }
+ } else if (stepOpened) {
+ if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {
+ // close sheet
+ if (sheet.params.swipeToClose) sheet.close();
+ } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {
+ // close step
+ $el.addClass('modal-in-swipe-step');
+ $el.trigger('sheet:stepprogress', 0);
+ sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);
+ sheet.emit('local::_swipeStep', true);
+ $el.trigger('sheet:stepclose');
+ sheet.emit('local::stepClose sheetStepClose', sheet);
+
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
+ $pushViewEl.css('border-radius', '0px');
+ }
+ }
+ }
+ }
+ }
+
+ sheet.setSwipeStep = function setSwipeStep(byResize) {
+ if (byResize === void 0) {
+ byResize = true;
+ }
+
+ var $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);
+ if (!$swipeStepEl.length) return;
+
+ if ($el.hasClass('sheet-modal-top')) {
+ swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);
+ } else {
+ swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);
+ }
+
+ $el[0].style.setProperty('--f7-sheet-swipe-step', swipeStepTranslate + "px");
+
+ if (!byResize) {
+ $el.addClass('modal-in-swipe-step');
+ sheet.emit('local::_swipeStep', true);
+ }
+ };
+
+ function onResize() {
+ sheet.setSwipeStep(true);
+ }
+
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+
+ if (sheet.params.swipeToClose || sheet.params.swipeToStep) {
+ $el.on(app.touchEvents.start, handleTouchStart, passive);
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ sheet.once('sheetDestroy', function () {
+ $el.off(app.touchEvents.start, handleTouchStart, passive);
+ app.off('touchmove', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ });
+ }
+
+ sheet.on('open', function () {
+ if (sheet.params.closeOnEscape) {
+ (0, _dom.default)(document).on('keydown', onKeyDown);
+ }
+
+ $el.prevAll('.popup.modal-in').addClass('popup-behind');
+
+ if (sheet.params.swipeToStep) {
+ sheet.setSwipeStep(false);
+ app.on('resize', onResize);
+ }
+
+ if (sheet.params.scrollToEl) {
+ scrollToElementOnOpen();
+ }
+
+ if (sheet.push) {
+ pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);
+ if (Number.isNaN(pushOffset)) pushOffset = 0;
+
+ if (pushOffset) {
+ $el.addClass('sheet-modal-push');
+ sheet.$htmlEl.addClass('with-modal-sheet-push');
+
+ if (!sheet.params.swipeToStep) {
+ sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
+ } else {
+ $pushViewEl = app.$el.children('.view, .views');
+ pushBorderRadius = parseFloat($el.css("border-" + (isTopSheetModal ? 'bottom' : 'top') + "-left-radius"));
+ $pushViewEl.css('border-radius', '0px');
+ }
+ }
+ }
+ });
+ sheet.on('opened', function () {
+ if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {
+ app.on('click', handleClick);
+ }
+ });
+ sheet.on('close', function () {
+ if (sheet.params.swipeToStep) {
+ $el.removeClass('modal-in-swipe-step');
+ sheet.emit('local::_swipeStep', false);
+ app.off('resize', onResize);
+ }
+
+ if (sheet.params.closeOnEscape) {
+ (0, _dom.default)(document).off('keydown', onKeyDown);
+ }
+
+ if (sheet.params.scrollToEl) {
+ scrollToElementOnClose();
+ }
+
+ if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {
+ app.off('click', handleClick);
+ }
+
+ $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');
+
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl.removeClass('with-modal-sheet-push');
+ sheet.$htmlEl.addClass('with-modal-sheet-push-closing');
+ }
+ });
+ sheet.on('closed', function () {
+ if (sheet.push && pushOffset) {
+ sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');
+ sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
+ }
+ });
+
+ sheet.stepOpen = function stepOpen() {
+ $el.removeClass('modal-in-swipe-step');
+ sheet.emit('local::_swipeStep', false);
+
+ if (sheet.push) {
+ if (!pushOffset) {
+ pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);
+ if (Number.isNaN(pushOffset)) pushOffset = 0;
+ }
+
+ if (pushOffset) {
+ sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
+ }
+ }
+ };
+
+ sheet.stepClose = function stepClose() {
+ $el.addClass('modal-in-swipe-step');
+ sheet.emit('local::_swipeStep', true);
+
+ if (sheet.push) {
+ sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
+ }
+ };
+
+ sheet.stepToggle = function stepToggle() {
+ $el.toggleClass('modal-in-swipe-step');
+ sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));
+ };
+
+ $el[0].f7Modal = sheet;
+ return sheet || _assertThisInitialized(_this);
+ }
+
+ return Sheet;
+}(_modalClass.default);
+
+var _default = Sheet;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/sheet/sheet.js b/www/assets/framework7/cjs/components/sheet/sheet.js
new file mode 100644
index 000000000..4d7254c7f
--- /dev/null
+++ b/www/assets/framework7/cjs/components/sheet/sheet.js
@@ -0,0 +1,83 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _sheetClass = _interopRequireDefault(require("./sheet-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'sheet',
+ params: {
+ sheet: {
+ push: false,
+ backdrop: undefined,
+ backdropEl: undefined,
+ closeByBackdropClick: true,
+ closeByOutsideClick: false,
+ closeOnEscape: false,
+ swipeToClose: false,
+ swipeToStep: false,
+ swipeHandler: null,
+ containerEl: null
+ }
+ },
+ static: {
+ Sheet: _sheetClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.sheet = (0, _utils.extend)({}, (0, _modalMethods.default)({
+ app: app,
+ constructor: _sheetClass.default,
+ defaultSelector: '.sheet-modal.modal-in'
+ }), {
+ stepOpen: function stepOpen(sheet) {
+ var sheetInstance = app.sheet.get(sheet);
+ if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();
+ return undefined;
+ },
+ stepClose: function stepClose(sheet) {
+ var sheetInstance = app.sheet.get(sheet);
+ if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();
+ return undefined;
+ },
+ stepToggle: function stepToggle(sheet) {
+ var sheetInstance = app.sheet.get(sheet);
+ if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();
+ return undefined;
+ }
+ });
+ },
+ clicks: {
+ '.sheet-open': function openSheet($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+
+ if ((0, _dom.default)('.sheet-modal.modal-in').length > 0 && data.sheet && (0, _dom.default)(data.sheet)[0] !== (0, _dom.default)('.sheet-modal.modal-in')[0]) {
+ app.sheet.close('.sheet-modal.modal-in');
+ }
+
+ app.sheet.open(data.sheet, data.animate, $clickedEl);
+ },
+ '.sheet-close': function closeSheet($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.sheet.close(data.sheet, data.animate, $clickedEl);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/skeleton/skeleton.js b/www/assets/framework7/cjs/components/skeleton/skeleton.js
new file mode 100644
index 000000000..051a99657
--- /dev/null
+++ b/www/assets/framework7/cjs/components/skeleton/skeleton.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'skeleton'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/smart-select/smart-select-class.js b/www/assets/framework7/cjs/components/smart-select/smart-select-class.js
new file mode 100644
index 000000000..a01d78df2
--- /dev/null
+++ b/www/assets/framework7/cjs/components/smart-select/smart-select-class.js
@@ -0,0 +1,1005 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var SmartSelect = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(SmartSelect, _Framework7Class);
+
+ function SmartSelect(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var ss = _assertThisInitialized(_this);
+
+ var defaults = (0, _utils.extend)({
+ on: {}
+ }, app.params.smartSelect);
+
+ if (typeof defaults.searchbarDisableButton === 'undefined') {
+ defaults.searchbarDisableButton = app.theme !== 'aurora';
+ } // Extend defaults with modules params
+
+
+ ss.useModulesParams(defaults);
+ ss.params = (0, _utils.extend)({}, defaults, params);
+ ss.app = app;
+ var $el = (0, _dom.default)(ss.params.el).eq(0);
+ if ($el.length === 0) return ss || _assertThisInitialized(_this);
+ if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect || _assertThisInitialized(_this);
+ var $selectEl = $el.find('select').eq(0);
+ if ($selectEl.length === 0) return ss || _assertThisInitialized(_this);
+ var $valueEl;
+
+ if (ss.params.setValueText) {
+ $valueEl = (0, _dom.default)(ss.params.valueEl);
+
+ if ($valueEl.length === 0) {
+ $valueEl = $el.find('.item-after');
+ }
+
+ if ($valueEl.length === 0) {
+ $valueEl = (0, _dom.default)('');
+ $valueEl.insertAfter($el.find('.item-title'));
+ }
+ } // Url
+
+
+ var url = params.url;
+
+ if (!url) {
+ if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = $selectEl.attr('name').toLowerCase() + "-select/";
+ }
+
+ if (!url) url = ss.params.url;
+ var multiple = $selectEl[0].multiple;
+ var inputType = multiple ? 'checkbox' : 'radio';
+ var selectId = (0, _utils.id)();
+ (0, _utils.extend)(ss, {
+ $el: $el,
+ el: $el[0],
+ $selectEl: $selectEl,
+ selectEl: $selectEl[0],
+ $valueEl: $valueEl,
+ valueEl: $valueEl && $valueEl[0],
+ url: url,
+ multiple: multiple,
+ inputType: inputType,
+ id: selectId,
+ inputName: inputType + "-" + selectId,
+ selectName: $selectEl.attr('name'),
+ maxLength: $selectEl.attr('maxlength') || params.maxLength
+ });
+ $el[0].f7SmartSelect = ss; // Events
+
+ function onClick() {
+ ss.open();
+ }
+
+ function onChange() {
+ var value = ss.$selectEl.val();
+ ss.$el.trigger('smartselect:change', value);
+ ss.emit('local::change smartSelectChange', ss, value);
+
+ if (ss.vl) {
+ ss.vl.clearCache();
+ }
+
+ ss.setValueText();
+ }
+
+ ss.attachEvents = function attachEvents() {
+ $el.on('click', onClick);
+ $el.on('change', 'select', onChange);
+ };
+
+ ss.detachEvents = function detachEvents() {
+ $el.off('click', onClick);
+ $el.off('change', 'select', onChange);
+ };
+
+ function handleInputChange() {
+ var optionEl;
+ var text;
+ var inputEl = this;
+ var value = inputEl.value;
+ var optionText = [];
+ var displayAs;
+
+ if (inputEl.type === 'checkbox') {
+ for (var i = 0; i < ss.selectEl.options.length; i += 1) {
+ optionEl = ss.selectEl.options[i];
+
+ if (optionEl.value === value) {
+ optionEl.selected = inputEl.checked;
+ }
+
+ if (optionEl.selected) {
+ displayAs = optionEl.dataset ? optionEl.dataset.displayAs : (0, _dom.default)(optionEl).data('display-value-as');
+ text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
+ optionText.push(text.trim());
+ }
+ }
+
+ if (ss.maxLength) {
+ ss.checkMaxLength();
+ }
+ } else {
+ optionEl = ss.$selectEl.find("option[value=\"" + value + "\"]")[0];
+
+ if (!optionEl) {
+ optionEl = ss.$selectEl.find('option').filter(function (optEl) {
+ return optEl.value === value;
+ })[0];
+ }
+
+ displayAs = optionEl.dataset ? optionEl.dataset.displayAs : (0, _dom.default)(optionEl).data('display-as');
+ text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
+ optionText = [text];
+ ss.selectEl.value = value;
+ }
+
+ ss.$selectEl.trigger('change');
+
+ if (ss.params.setValueText) {
+ ss.$valueEl.text(ss.formatValueText(optionText));
+ }
+
+ if (ss.params.closeOnSelect && ss.inputType === 'radio') {
+ ss.close();
+ }
+ }
+
+ ss.attachInputsEvents = function attachInputsEvents() {
+ ss.$containerEl.on('change', 'input[type="checkbox"], input[type="radio"]', handleInputChange);
+ };
+
+ ss.detachInputsEvents = function detachInputsEvents() {
+ ss.$containerEl.off('change', 'input[type="checkbox"], input[type="radio"]', handleInputChange);
+ }; // Install Modules
+
+
+ ss.useModules(); // Init
+
+ ss.init();
+ return ss || _assertThisInitialized(_this);
+ }
+
+ var _proto = SmartSelect.prototype;
+
+ _proto.setValue = function setValue(value) {
+ var ss = this;
+ var newValue = value;
+ var optionText = [];
+ var optionEl;
+ var displayAs;
+ var text;
+
+ if (ss.multiple) {
+ if (!Array.isArray(newValue)) newValue = [newValue];
+
+ for (var i = 0; i < ss.selectEl.options.length; i += 1) {
+ optionEl = ss.selectEl.options[i];
+
+ if (newValue.indexOf(optionEl.value) >= 0) {
+ optionEl.selected = true;
+ } else {
+ optionEl.selected = false;
+ }
+
+ if (optionEl.selected) {
+ displayAs = optionEl.dataset ? optionEl.dataset.displayAs : (0, _dom.default)(optionEl).data('display-value-as');
+ text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
+ optionText.push(text.trim());
+ }
+ }
+ } else {
+ optionEl = ss.$selectEl.find("option[value=\"" + newValue + "\"]")[0];
+
+ if (optionEl) {
+ displayAs = optionEl.dataset ? optionEl.dataset.displayAs : (0, _dom.default)(optionEl).data('display-as');
+ text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
+ optionText = [text];
+ }
+
+ ss.selectEl.value = newValue;
+ }
+
+ if (ss.params.setValueText) {
+ ss.$valueEl.text(ss.formatValueText(optionText));
+ }
+
+ ss.$selectEl.trigger('change');
+ return ss;
+ };
+
+ _proto.unsetValue = function unsetValue() {
+ var ss = this;
+
+ if (ss.params.setValueText) {
+ ss.$valueEl.text(ss.formatValueText([]));
+ }
+
+ ss.$selectEl.find('option').each(function (optionEl) {
+ optionEl.selected = false;
+ optionEl.checked = false;
+ });
+ ss.$selectEl[0].value = null;
+
+ if (ss.$containerEl) {
+ ss.$containerEl.find("input[name=\"" + ss.inputName + "\"][type=\"checkbox\"], input[name=\"" + ss.inputName + "\"][type=\"radio\"]").prop('checked', false);
+ }
+
+ ss.$selectEl.trigger('change');
+ };
+
+ _proto.getValue = function getValue() {
+ var ss = this;
+ return ss.$selectEl.val();
+ };
+
+ _proto.checkMaxLength = function checkMaxLength() {
+ var ss = this;
+ var $containerEl = ss.$containerEl;
+
+ if (ss.selectEl.selectedOptions.length >= ss.maxLength) {
+ $containerEl.find('input[type="checkbox"]').each(function (inputEl) {
+ if (!inputEl.checked) {
+ (0, _dom.default)(inputEl).parents('li').addClass('disabled');
+ } else {
+ (0, _dom.default)(inputEl).parents('li').removeClass('disabled');
+ }
+ });
+ } else {
+ $containerEl.find('.disabled').removeClass('disabled');
+ }
+ };
+
+ _proto.formatValueText = function formatValueText(values) {
+ var ss = this;
+ var textValue;
+
+ if (ss.params.formatValueText) {
+ textValue = ss.params.formatValueText.call(ss, values, ss);
+ } else {
+ textValue = values.join(', ');
+ }
+
+ return textValue;
+ };
+
+ _proto.setValueText = function setValueText(value) {
+ var ss = this;
+ var valueArray = [];
+
+ if (typeof value !== 'undefined') {
+ if (Array.isArray(value)) {
+ valueArray = value;
+ } else {
+ valueArray = [value];
+ }
+ } else {
+ ss.$selectEl.find('option').each(function (optionEl) {
+ var $optionEl = (0, _dom.default)(optionEl);
+
+ if (optionEl.selected) {
+ var displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');
+
+ if (displayAs && typeof displayAs !== 'undefined') {
+ valueArray.push(displayAs);
+ } else {
+ valueArray.push(optionEl.textContent.trim());
+ }
+ }
+ });
+ }
+
+ if (ss.params.setValueText) {
+ ss.$valueEl.text(ss.formatValueText(valueArray));
+ }
+ };
+
+ _proto.getItemsData = function getItemsData() {
+ var ss = this;
+ var theme = ss.app.theme;
+ var items = [];
+ var previousGroupEl;
+ ss.$selectEl.find('option').each(function (optionEl) {
+ var $optionEl = (0, _dom.default)(optionEl);
+ var optionData = $optionEl.dataset();
+ var optionImage = optionData.optionImage || ss.params.optionImage;
+ var optionIcon = optionData.optionIcon || ss.params.optionIcon;
+ var optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);
+ var optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);
+ var optionIconAurora = theme === 'aurora' && (optionData.optionIconAurora || ss.params.optionIconAurora);
+ var optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd || optionIconAurora;
+ var optionColor = optionData.optionColor;
+ var optionClassName = optionData.optionClass || '';
+ if ($optionEl[0].disabled) optionClassName += ' disabled';
+ var optionGroupEl = $optionEl.parent('optgroup')[0];
+ var optionGroupLabel = optionGroupEl && optionGroupEl.label;
+ var optionIsLabel = false;
+
+ if (optionGroupEl && optionGroupEl !== previousGroupEl) {
+ optionIsLabel = true;
+ previousGroupEl = optionGroupEl;
+ items.push({
+ groupLabel: optionGroupLabel,
+ isLabel: optionIsLabel
+ });
+ }
+
+ items.push({
+ value: $optionEl[0].value,
+ text: $optionEl[0].textContent.trim(),
+ selected: $optionEl[0].selected,
+ groupEl: optionGroupEl,
+ groupLabel: optionGroupLabel,
+ image: optionImage,
+ icon: optionIcon,
+ iconIos: optionIconIos,
+ iconMd: optionIconMd,
+ iconAurora: optionIconAurora,
+ color: optionColor,
+ className: optionClassName,
+ disabled: $optionEl[0].disabled,
+ id: ss.id,
+ hasMedia: optionHasMedia,
+ checkbox: ss.inputType === 'checkbox',
+ radio: ss.inputType === 'radio',
+ inputName: ss.inputName,
+ inputType: ss.inputType
+ });
+ });
+ ss.items = items;
+ return items;
+ };
+
+ _proto.renderSearchbar = function renderSearchbar() {
+ var ss = this;
+ if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);
+ return (0, _$jsx.default)("form", {
+ class: "searchbar"
+ }, (0, _$jsx.default)("div", {
+ class: "searchbar-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "searchbar-input-wrap"
+ }, (0, _$jsx.default)("input", {
+ type: "search",
+ spellcheck: ss.params.searchbarSpellcheck || 'false',
+ placeholder: ss.params.searchbarPlaceholder
+ }), (0, _$jsx.default)("i", {
+ class: "searchbar-icon"
+ }), (0, _$jsx.default)("span", {
+ class: "input-clear-button"
+ })), ss.params.searchbarDisableButton && (0, _$jsx.default)("span", {
+ class: "searchbar-disable-button"
+ }, ss.params.searchbarDisableText)));
+ };
+
+ _proto.renderItem = function renderItem(item, index) {
+ var ss = this;
+ if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);
+
+ function getIconContent(iconValue) {
+ if (iconValue === void 0) {
+ iconValue = '';
+ }
+
+ if (iconValue.indexOf(':') >= 0) {
+ return iconValue.split(':')[1];
+ }
+
+ return '';
+ }
+
+ function getIconClass(iconValue) {
+ if (iconValue === void 0) {
+ iconValue = '';
+ }
+
+ if (iconValue.indexOf(':') >= 0) {
+ var className = iconValue.split(':')[0];
+ if (className === 'f7') className = 'f7-icons';
+ if (className === 'material') className = 'material-icons';
+ return className;
+ }
+
+ return iconValue;
+ }
+
+ var itemHtml;
+
+ if (item.isLabel) {
+ itemHtml = "" + item.groupLabel + "";
+ } else {
+ var selected = item.selected;
+ var disabled;
+
+ if (ss.params.virtualList) {
+ var ssValue = ss.getValue();
+ selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;
+
+ if (ss.multiple) {
+ disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);
+ }
+ }
+
+ var icon = item.icon,
+ iconIos = item.iconIos,
+ iconMd = item.iconMd,
+ iconAurora = item.iconAurora;
+ var hasIcon = icon || iconIos || iconMd || iconAurora;
+ var iconContent = getIconContent(icon || iconIos || iconMd || iconAurora || '');
+ var iconClass = getIconClass(icon || iconIos || iconMd || iconAurora || '');
+ itemHtml = (0, _$jsx.default)("li", {
+ class: "" + (item.className || '') + (disabled ? ' disabled' : '')
+ }, (0, _$jsx.default)("label", {
+ class: "item-" + item.inputType + " item-content"
+ }, (0, _$jsx.default)("input", {
+ type: item.inputType,
+ name: item.inputName,
+ value: item.value,
+ _checked: selected
+ }), (0, _$jsx.default)("i", {
+ class: "icon icon-" + item.inputType
+ }), item.hasMedia && (0, _$jsx.default)("div", {
+ class: "item-media"
+ }, hasIcon && (0, _$jsx.default)("i", {
+ class: "icon " + iconClass
+ }, iconContent), item.image && (0, _$jsx.default)("img", {
+ src: item.image
+ })), (0, _$jsx.default)("div", {
+ class: "item-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "item-title" + (item.color ? " text-color-" + item.color : '')
+ }, item.text))));
+ }
+
+ return itemHtml;
+ };
+
+ _proto.renderItems = function renderItems() {
+ var ss = this;
+ if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);
+ var itemsHtml = "\n " + ss.items.map(function (item, index) {
+ return "" + ss.renderItem(item, index);
+ }).join('') + "\n ";
+ return itemsHtml;
+ };
+
+ _proto.renderPage = function renderPage() {
+ var ss = this;
+ if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);
+ var pageTitle = ss.params.pageTitle;
+
+ if (typeof pageTitle === 'undefined') {
+ var $itemTitleEl = ss.$el.find('.item-title');
+ pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';
+ }
+
+ var cssClass = ss.params.cssClass;
+ return (0, _$jsx.default)("div", {
+ class: "page smart-select-page " + cssClass,
+ "data-name": "smart-select-page",
+ "data-select-name": ss.selectName
+ }, (0, _$jsx.default)("div", {
+ class: "navbar " + (ss.params.navbarColorTheme ? "color-" + ss.params.navbarColorTheme : '')
+ }, (0, _$jsx.default)("div", {
+ class: "navbar-bg"
+ }), (0, _$jsx.default)("div", {
+ class: "navbar-inner sliding " + (ss.params.navbarColorTheme ? "color-" + ss.params.navbarColorTheme : '')
+ }, (0, _$jsx.default)("div", {
+ class: "left"
+ }, (0, _$jsx.default)("a", {
+ class: "link back"
+ }, (0, _$jsx.default)("i", {
+ class: "icon icon-back"
+ }), (0, _$jsx.default)("span", {
+ class: "if-not-md"
+ }, ss.params.pageBackLinkText))), pageTitle && (0, _$jsx.default)("div", {
+ class: "title"
+ }, pageTitle), ss.params.searchbar && (0, _$jsx.default)("div", {
+ class: "subnavbar"
+ }, ss.renderSearchbar()))), ss.params.searchbar && (0, _$jsx.default)("div", {
+ class: "searchbar-backdrop"
+ }), (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, (0, _$jsx.default)("div", {
+ class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
+ }, (0, _$jsx.default)("ul", null, !ss.params.virtualList && ss.renderItems(ss.items)))));
+ };
+
+ _proto.renderPopup = function renderPopup() {
+ var ss = this;
+ if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);
+ var pageTitle = ss.params.pageTitle;
+
+ if (typeof pageTitle === 'undefined') {
+ var $itemTitleEl = ss.$el.find('.item-title');
+ pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';
+ }
+
+ var cssClass = ss.params.cssClass || '';
+ return (0, _$jsx.default)("div", {
+ class: "popup smart-select-popup " + cssClass + " " + (ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''),
+ "data-select-name": ss.selectName
+ }, (0, _$jsx.default)("div", {
+ class: "view"
+ }, (0, _$jsx.default)("div", {
+ class: "page smart-select-page " + (ss.params.searchbar ? 'page-with-subnavbar' : ''),
+ "data-name": "smart-select-page"
+ }, (0, _$jsx.default)("div", {
+ class: "navbar " + (ss.params.navbarColorTheme ? "color-" + ss.params.navbarColorTheme : '')
+ }, (0, _$jsx.default)("div", {
+ class: "navbar-bg"
+ }), (0, _$jsx.default)("div", {
+ class: "navbar-inner sliding"
+ }, pageTitle && (0, _$jsx.default)("div", {
+ class: "title"
+ }, pageTitle), (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link popup-close",
+ "data-popup": ".smart-select-popup[data-select-name='" + ss.selectName + "']"
+ }, ss.params.popupCloseLinkText)), ss.params.searchbar && (0, _$jsx.default)("div", {
+ class: "subnavbar"
+ }, ss.renderSearchbar()))), ss.params.searchbar && (0, _$jsx.default)("div", {
+ class: "searchbar-backdrop"
+ }), (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, (0, _$jsx.default)("div", {
+ class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
+ }, (0, _$jsx.default)("ul", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));
+ };
+
+ _proto.renderSheet = function renderSheet() {
+ var ss = this;
+ if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);
+ var cssClass = ss.params.cssClass; // prettier-ignore
+
+ return (0, _$jsx.default)("div", {
+ class: "sheet-modal smart-select-sheet " + cssClass,
+ "data-select-name": ss.selectName
+ }, (0, _$jsx.default)("div", {
+ class: "toolbar toolbar-top " + (ss.params.toolbarColorTheme ? "color-" + ss.params.toolbarColorTheme : '')
+ }, (0, _$jsx.default)("div", {
+ class: "toolbar-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "left"
+ }), (0, _$jsx.default)("div", {
+ class: "right"
+ }, (0, _$jsx.default)("a", {
+ class: "link sheet-close"
+ }, ss.params.sheetCloseLinkText)))), (0, _$jsx.default)("div", {
+ class: "sheet-modal-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "page-content"
+ }, (0, _$jsx.default)("div", {
+ class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
+ }, (0, _$jsx.default)("ul", null, !ss.params.virtualList && ss.renderItems(ss.items))))));
+ };
+
+ _proto.renderPopover = function renderPopover() {
+ var ss = this;
+ if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);
+ var cssClass = ss.params.cssClass; // prettier-ignore
+
+ return (0, _$jsx.default)("div", {
+ class: "popover smart-select-popover " + cssClass,
+ "data-select-name": ss.selectName
+ }, (0, _$jsx.default)("div", {
+ class: "popover-inner"
+ }, (0, _$jsx.default)("div", {
+ class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
+ }, (0, _$jsx.default)("ul", null, !ss.params.virtualList && ss.renderItems(ss.items)))));
+ };
+
+ _proto.scrollToSelectedItem = function scrollToSelectedItem() {
+ var ss = this;
+ var params = ss.params,
+ $containerEl = ss.$containerEl;
+ if (!ss.opened) return ss;
+
+ if (params.virtualList) {
+ var selectedIndex;
+ ss.vl.items.forEach(function (item, index) {
+ if (typeof selectedIndex === 'undefined' && item.selected) {
+ selectedIndex = index;
+ }
+ });
+
+ if (typeof selectedIndex !== 'undefined') {
+ ss.vl.scrollToItem(selectedIndex);
+ }
+ } else {
+ var $selectedItemEl = $containerEl.find('input:checked').parents('li');
+ if (!$selectedItemEl.length) return ss;
+ var $scrollableEl = $containerEl.find('.page-content, .popover-inner');
+ if (!$scrollableEl.length) return ss;
+ $scrollableEl.scrollTop($selectedItemEl.offset().top - $scrollableEl.offset().top - parseInt($scrollableEl.css('padding-top'), 10));
+ }
+
+ return ss;
+ };
+
+ _proto.onOpen = function onOpen(type, containerEl) {
+ var ss = this;
+ var app = ss.app;
+ var $containerEl = (0, _dom.default)(containerEl);
+ ss.$containerEl = $containerEl;
+ ss.openedIn = type;
+ ss.opened = true; // Init VL
+
+ if (ss.params.virtualList) {
+ ss.vl = app.virtualList.create({
+ el: $containerEl.find('.virtual-list'),
+ items: ss.items,
+ renderItem: ss.renderItem.bind(ss),
+ height: ss.params.virtualListHeight,
+ searchByItem: function searchByItem(query, item) {
+ if (item.text && item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;
+ return false;
+ }
+ });
+ }
+
+ if (ss.params.scrollToSelectedItem) {
+ ss.scrollToSelectedItem();
+ } // Init SB
+
+
+ if (ss.params.searchbar) {
+ var $searchbarEl = $containerEl.find('.searchbar');
+
+ if (type === 'page' && app.theme === 'ios') {
+ $searchbarEl = (0, _dom.default)(app.navbar.getElByPage($containerEl)).find('.searchbar');
+ }
+
+ if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {
+ var $notFoundEl = null;
+
+ if (typeof ss.params.appendSearchbarNotFound === 'string') {
+ $notFoundEl = (0, _dom.default)("" + ss.params.appendSearchbarNotFound + "
");
+ } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {
+ $notFoundEl = (0, _dom.default)('Nothing found
');
+ } else {
+ $notFoundEl = ss.params.appendSearchbarNotFound;
+ }
+
+ if ($notFoundEl) {
+ $containerEl.find('.page-content').append($notFoundEl[0]);
+ }
+ }
+
+ var searchbarParams = (0, _utils.extend)({
+ el: $searchbarEl,
+ backdropEl: $containerEl.find('.searchbar-backdrop'),
+ searchContainer: ".smart-select-list-" + ss.id,
+ searchIn: '.item-title'
+ }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});
+ ss.searchbar = app.searchbar.create(searchbarParams);
+ } // Check for max length
+
+
+ if (ss.maxLength) {
+ ss.checkMaxLength();
+ } // Close on select
+
+
+ if (ss.params.closeOnSelect) {
+ ss.$containerEl.find("input[type=\"radio\"][name=\"" + ss.inputName + "\"]:checked").parents('label').once('click', function () {
+ ss.close();
+ });
+ } // Attach input events
+
+
+ ss.attachInputsEvents();
+ ss.$el.trigger('smartselect:open');
+ ss.emit('local::open smartSelectOpen', ss);
+ };
+
+ _proto.onOpened = function onOpened() {
+ var ss = this;
+ ss.$el.trigger('smartselect:opened');
+ ss.emit('local::opened smartSelectOpened', ss);
+ };
+
+ _proto.onClose = function onClose() {
+ var ss = this;
+ if (ss.destroyed) return; // Destroy VL
+
+ if (ss.vl && ss.vl.destroy) {
+ ss.vl.destroy();
+ ss.vl = null;
+ delete ss.vl;
+ } // Destroy SB
+
+
+ if (ss.searchbar && ss.searchbar.destroy) {
+ ss.searchbar.destroy();
+ ss.searchbar = null;
+ delete ss.searchbar;
+ } // Detach events
+
+
+ ss.detachInputsEvents();
+ ss.$el.trigger('smartselect:close');
+ ss.emit('local::close smartSelectClose', ss);
+ };
+
+ _proto.onClosed = function onClosed() {
+ var ss = this;
+ if (ss.destroyed) return;
+ ss.opened = false;
+ ss.$containerEl = null;
+ delete ss.$containerEl;
+ ss.$el.trigger('smartselect:closed');
+ ss.emit('local::closed smartSelectClosed', ss);
+ };
+
+ _proto.openPage = function openPage() {
+ var ss = this;
+ if (ss.opened) return ss;
+ ss.getItemsData();
+ var pageHtml = ss.renderPage(ss.items);
+ ss.view.router.navigate({
+ url: ss.url,
+ route: {
+ content: pageHtml,
+ path: ss.url,
+ on: {
+ pageBeforeIn: function pageBeforeIn(e, page) {
+ ss.onOpen('page', page.el);
+ },
+ pageAfterIn: function pageAfterIn(e, page) {
+ ss.onOpened('page', page.el);
+ },
+ pageBeforeOut: function pageBeforeOut(e, page) {
+ ss.onClose('page', page.el);
+ },
+ pageAfterOut: function pageAfterOut(e, page) {
+ ss.onClosed('page', page.el);
+ }
+ }
+ }
+ });
+ return ss;
+ };
+
+ _proto.openPopup = function openPopup() {
+ var ss = this;
+ if (ss.opened) return ss;
+ ss.getItemsData();
+ var popupHtml = ss.renderPopup(ss.items);
+ var popupParams = {
+ content: popupHtml,
+ push: ss.params.popupPush,
+ swipeToClose: ss.params.popupSwipeToClose,
+ on: {
+ popupOpen: function popupOpen(popup) {
+ ss.onOpen('popup', popup.el);
+ },
+ popupOpened: function popupOpened(popup) {
+ ss.onOpened('popup', popup.el);
+ },
+ popupClose: function popupClose(popup) {
+ ss.onClose('popup', popup.el);
+ },
+ popupClosed: function popupClosed(popup) {
+ ss.onClosed('popup', popup.el);
+ }
+ }
+ };
+
+ if (ss.params.routableModals && ss.view) {
+ ss.view.router.navigate({
+ url: ss.url,
+ route: {
+ path: ss.url,
+ popup: popupParams
+ }
+ });
+ } else {
+ ss.modal = ss.app.popup.create(popupParams).open();
+ }
+
+ return ss;
+ };
+
+ _proto.openSheet = function openSheet() {
+ var ss = this;
+ if (ss.opened) return ss;
+ ss.getItemsData();
+ var sheetHtml = ss.renderSheet(ss.items);
+ var sheetParams = {
+ content: sheetHtml,
+ backdrop: ss.params.sheetBackdrop,
+ scrollToEl: ss.$el,
+ closeByOutsideClick: true,
+ push: ss.params.sheetPush,
+ swipeToClose: ss.params.sheetSwipeToClose,
+ on: {
+ sheetOpen: function sheetOpen(sheet) {
+ ss.onOpen('sheet', sheet.el);
+ },
+ sheetOpened: function sheetOpened(sheet) {
+ ss.onOpened('sheet', sheet.el);
+ },
+ sheetClose: function sheetClose(sheet) {
+ ss.onClose('sheet', sheet.el);
+ },
+ sheetClosed: function sheetClosed(sheet) {
+ ss.onClosed('sheet', sheet.el);
+ }
+ }
+ };
+
+ if (ss.params.routableModals && ss.view) {
+ ss.view.router.navigate({
+ url: ss.url,
+ route: {
+ path: ss.url,
+ sheet: sheetParams
+ }
+ });
+ } else {
+ ss.modal = ss.app.sheet.create(sheetParams).open();
+ }
+
+ return ss;
+ };
+
+ _proto.openPopover = function openPopover() {
+ var ss = this;
+ if (ss.opened) return ss;
+ ss.getItemsData();
+ var popoverHtml = ss.renderPopover(ss.items);
+ var popoverParams = {
+ content: popoverHtml,
+ targetEl: ss.$el,
+ on: {
+ popoverOpen: function popoverOpen(popover) {
+ ss.onOpen('popover', popover.el);
+ },
+ popoverOpened: function popoverOpened(popover) {
+ ss.onOpened('popover', popover.el);
+ },
+ popoverClose: function popoverClose(popover) {
+ ss.onClose('popover', popover.el);
+ },
+ popoverClosed: function popoverClosed(popover) {
+ ss.onClosed('popover', popover.el);
+ }
+ }
+ };
+
+ if (ss.params.routableModals && ss.view) {
+ ss.view.router.navigate({
+ url: ss.url,
+ route: {
+ path: ss.url,
+ popover: popoverParams
+ }
+ });
+ } else {
+ ss.modal = ss.app.popover.create(popoverParams).open();
+ }
+
+ return ss;
+ };
+
+ _proto.open = function open(type) {
+ var ss = this;
+ if (ss.opened) return ss;
+ var prevented = false;
+
+ function prevent() {
+ prevented = true;
+ }
+
+ if (ss.$el) {
+ ss.$el.trigger('smartselect:beforeopen', {
+ prevent: prevent
+ });
+ }
+
+ ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);
+ if (prevented) return ss;
+ var openIn = type || ss.params.openIn;
+ ss["open" + openIn.split('').map(function (el, index) {
+ if (index === 0) return el.toUpperCase();
+ return el;
+ }).join('')]();
+ return ss;
+ };
+
+ _proto.close = function close() {
+ var ss = this;
+ if (!ss.opened) return ss;
+
+ if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {
+ ss.view.router.back();
+ } else {
+ ss.modal.once('modalClosed', function () {
+ (0, _utils.nextTick)(function () {
+ if (ss.destroyed) return;
+ ss.modal.destroy();
+ delete ss.modal;
+ });
+ });
+ ss.modal.close();
+ }
+
+ return ss;
+ };
+
+ _proto.init = function init() {
+ var ss = this;
+ ss.attachEvents();
+ ss.setValueText();
+ };
+
+ _proto.destroy = function destroy() {
+ var ss = this;
+ ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);
+ ss.$el.trigger('smartselect:beforedestroy');
+ ss.detachEvents();
+ delete ss.$el[0].f7SmartSelect;
+ (0, _utils.deleteProps)(ss);
+ ss.destroyed = true;
+ };
+
+ _createClass(SmartSelect, [{
+ key: "view",
+ get: function get() {
+ var params = this.params,
+ $el = this.$el;
+ var view;
+
+ if (params.view) {
+ view = params.view;
+ }
+
+ if (!view) {
+ view = $el.parents('.view').length && $el.parents('.view')[0].f7View;
+ }
+
+ if (!view && params.openIn === 'page') {
+ throw Error('Smart Select requires initialized View');
+ }
+
+ return view;
+ }
+ }]);
+
+ return SmartSelect;
+}(_class.default);
+
+var _default = SmartSelect;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/smart-select/smart-select.js b/www/assets/framework7/cjs/components/smart-select/smart-select.js
new file mode 100644
index 000000000..01105e3c1
--- /dev/null
+++ b/www/assets/framework7/cjs/components/smart-select/smart-select.js
@@ -0,0 +1,151 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _smartSelectClass = _interopRequireDefault(require("./smart-select-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'smartSelect',
+ params: {
+ smartSelect: {
+ el: undefined,
+ valueEl: undefined,
+ setValueText: true,
+ formatValueText: null,
+ openIn: 'page',
+ // or 'popup' or 'sheet' or 'popover'
+ popupPush: false,
+ popupSwipeToClose: undefined,
+ // defaults to app
+ sheetPush: false,
+ sheetSwipeToClose: undefined,
+ // defaults to app
+ sheetBackdrop: false,
+ pageTitle: undefined,
+ pageBackLinkText: 'Back',
+ popupCloseLinkText: 'Close',
+ popupTabletFullscreen: false,
+ sheetCloseLinkText: 'Done',
+ searchbar: false,
+ searchbarPlaceholder: 'Search',
+ searchbarDisableText: 'Cancel',
+ searchbarDisableButton: undefined,
+ searchbarSpellcheck: false,
+ closeOnSelect: false,
+ virtualList: false,
+ virtualListHeight: undefined,
+ scrollToSelectedItem: false,
+ formColorTheme: undefined,
+ navbarColorTheme: undefined,
+ routableModals: false,
+ url: 'select/',
+ cssClass: '',
+
+ /*
+ Custom render functions
+ */
+ renderPage: undefined,
+ renderPopup: undefined,
+ renderSheet: undefined,
+ renderPopover: undefined,
+ renderItems: undefined,
+ renderItem: undefined,
+ renderSearchbar: undefined
+ }
+ },
+ static: {
+ SmartSelect: _smartSelectClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.smartSelect = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: '.smart-select',
+ constructor: _smartSelectClass.default,
+ app: app,
+ domProp: 'f7SmartSelect'
+ }), {
+ open: function open(smartSelectEl) {
+ var ss = app.smartSelect.get(smartSelectEl);
+ if (ss && ss.open) return ss.open();
+ return undefined;
+ },
+ close: function close(smartSelectEl) {
+ var ss = app.smartSelect.get(smartSelectEl);
+ if (ss && ss.close) return ss.close();
+ return undefined;
+ }
+ });
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.smart-select-init').each(function (smartSelectEl) {
+ app.smartSelect.create((0, _utils.extend)({
+ el: smartSelectEl
+ }, (0, _dom.default)(smartSelectEl).dataset()));
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.smart-select-init').each(function (smartSelectEl) {
+ if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {
+ smartSelectEl.f7SmartSelect.destroy();
+ }
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.smart-select-init').each(function (smartSelectEl) {
+ app.smartSelect.create((0, _utils.extend)({
+ el: smartSelectEl
+ }, (0, _dom.default)(smartSelectEl).dataset()));
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.smart-select-init').each(function (smartSelectEl) {
+ if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {
+ smartSelectEl.f7SmartSelect.destroy();
+ }
+ });
+ }
+ },
+ clicks: {
+ '.smart-select': function open($clickedEl, data) {
+ var app = this;
+
+ if (!$clickedEl[0].f7SmartSelect) {
+ var ss = app.smartSelect.create((0, _utils.extend)({
+ el: $clickedEl
+ }, data));
+ ss.open();
+ }
+ }
+ },
+ vnode: {
+ 'smart-select-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var smartSelectEl = vnode.elm;
+ app.smartSelect.create((0, _utils.extend)({
+ el: smartSelectEl
+ }, (0, _dom.default)(smartSelectEl).dataset()));
+ },
+ destroy: function destroy(vnode) {
+ var smartSelectEl = vnode.elm;
+
+ if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {
+ smartSelectEl.f7SmartSelect.destroy();
+ }
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/sortable/sortable.js b/www/assets/framework7/cjs/components/sortable/sortable.js
new file mode 100644
index 000000000..b263519e5
--- /dev/null
+++ b/www/assets/framework7/cjs/components/sortable/sortable.js
@@ -0,0 +1,335 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Sortable = {
+ init: function init() {
+ var app = this;
+ var document = (0, _ssrWindow.getDocument)();
+ var isTouched;
+ var isMoved;
+ var touchStartY;
+ var touchesDiff;
+ var $sortingEl;
+ var $sortingItems;
+ var $sortableContainer;
+ var sortingElHeight;
+ var minTop;
+ var maxTop;
+ var $insertAfterEl;
+ var $insertBeforeEl;
+ var indexFrom;
+ var $pageEl;
+ var $pageContentEl;
+ var pageHeight;
+ var pageOffset;
+ var sortingElOffsetLocal;
+ var sortingElOffsetTop;
+ var initialScrollTop;
+ var wasTapHold;
+
+ function handleTouchStart(e, isTapHold) {
+ isMoved = false;
+ isTouched = true;
+ wasTapHold = false;
+ touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ $sortingEl = (0, _dom.default)(e.target).closest('li').eq(0);
+ indexFrom = $sortingEl.index();
+ $sortableContainer = $sortingEl.parents('.sortable');
+ var $listGroup = $sortingEl.parents('.list-group');
+
+ if ($listGroup.length && $listGroup.parents($sortableContainer).length) {
+ $sortableContainer = $listGroup;
+ }
+
+ $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');
+ if (app.panel) app.panel.allowOpen = false;
+ if (app.swipeout) app.swipeout.allow = false;
+
+ if (isTapHold) {
+ $sortingEl.addClass('sorting');
+ $sortableContainer.addClass('sortable-sorting');
+ wasTapHold = true;
+ }
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched || !$sortingEl) return;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (!isMoved) {
+ $pageEl = $sortingEl.parents('.page');
+ $pageContentEl = $sortingEl.parents('.page-content');
+ var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);
+ var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
+ initialScrollTop = $pageContentEl[0].scrollTop;
+ pageOffset = $pageEl.offset().top + paddingTop;
+ pageHeight = $pageEl.height() - paddingTop - paddingBottom;
+ $sortingEl.addClass('sorting');
+ $sortableContainer.addClass('sortable-sorting');
+ sortingElOffsetLocal = $sortingEl[0].offsetTop;
+ minTop = $sortingEl[0].offsetTop;
+ maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();
+ sortingElHeight = $sortingEl[0].offsetHeight;
+ sortingElOffsetTop = $sortingEl.offset().top;
+ }
+
+ isMoved = true;
+ e.preventDefault();
+ e.f7PreventSwipePanel = true;
+ touchesDiff = pageY - touchStartY;
+ var translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;
+ var translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);
+ $sortingEl.transform("translate3d(0," + translate + "px,0)");
+ var scrollAddition = 44;
+ var allowScroll = true;
+
+ if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {
+ allowScroll = false;
+ }
+
+ if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {
+ allowScroll = false;
+ }
+
+ $insertBeforeEl = undefined;
+ $insertAfterEl = undefined;
+ var scrollDiff;
+
+ if (allowScroll) {
+ if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {
+ // To Bottom
+ scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);
+ }
+
+ if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {
+ // To Top
+ scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;
+ }
+
+ if (scrollDiff) {
+ $pageContentEl[0].scrollTop += scrollDiff;
+ }
+ }
+
+ $sortingItems.each(function (el) {
+ var $currentEl = (0, _dom.default)(el);
+ if ($currentEl[0] === $sortingEl[0]) return;
+ var currentElOffset = $currentEl[0].offsetTop;
+ var currentElHeight = $currentEl.height();
+ var sortingElOffset = sortingElOffsetLocal + translate;
+ var currentTranslate;
+ var prevTranslate = $currentEl[0].f7Translate;
+
+ if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {
+ currentTranslate = -sortingElHeight;
+ $currentEl.transform("translate3d(0, " + currentTranslate + "px,0)");
+ $insertAfterEl = $currentEl;
+ $insertBeforeEl = undefined;
+ } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {
+ currentTranslate = sortingElHeight;
+ $currentEl[0].f7Translate = currentTranslate;
+ $currentEl.transform("translate3d(0, " + currentTranslate + "px,0)");
+ $insertAfterEl = undefined;
+ if (!$insertBeforeEl) $insertBeforeEl = $currentEl;
+ } else {
+ currentTranslate = undefined;
+ $currentEl.transform('translate3d(0, 0%,0)');
+ }
+
+ if (prevTranslate !== currentTranslate) {
+ $currentEl.trigger('sortable:move');
+ app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);
+ }
+
+ $currentEl[0].f7Translate = currentTranslate;
+ });
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched || !isMoved) {
+ if (isTouched && !isMoved) {
+ if (app.panel) app.panel.allowOpen = true;
+ if (app.swipeout) app.swipeout.allow = true;
+
+ if (wasTapHold) {
+ $sortingEl.removeClass('sorting');
+ $sortableContainer.removeClass('sortable-sorting');
+ }
+ }
+
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ if (app.panel) app.panel.allowOpen = true;
+ if (app.swipeout) app.swipeout.allow = true;
+ $sortingItems.transform('');
+ $sortingEl.removeClass('sorting');
+ $sortableContainer.removeClass('sortable-sorting');
+ var indexTo;
+ if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();
+ var moveElements = $sortableContainer.dataset().sortableMoveElements;
+
+ if (typeof moveElements === 'undefined') {
+ moveElements = app.params.sortable.moveElements;
+ }
+
+ if (moveElements) {
+ if ($insertAfterEl) {
+ $sortingEl.insertAfter($insertAfterEl);
+ }
+
+ if ($insertBeforeEl) {
+ $sortingEl.insertBefore($insertBeforeEl);
+ }
+ }
+
+ if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {
+ indexFrom = $sortingEl[0].f7VirtualListIndex;
+ if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');
+
+ if ($insertBeforeEl) {
+ indexTo = $insertBeforeEl[0].f7VirtualListIndex;
+ if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');
+ } else {
+ indexTo = $insertAfterEl[0].f7VirtualListIndex;
+ if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');
+ }
+
+ if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;
+ var virtualList = $sortableContainer[0].f7VirtualList;
+ if (indexFrom) indexFrom = parseInt(indexFrom, 10);
+ if (indexTo) indexTo = parseInt(indexTo, 10);
+ if (virtualList) virtualList.moveItem(indexFrom, indexTo);
+ }
+
+ if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {
+ $sortingEl.trigger('sortable:sort', {
+ from: indexFrom,
+ to: indexTo
+ });
+ app.emit('sortableSort', $sortingEl[0], {
+ from: indexFrom,
+ to: indexTo,
+ el: $sortingEl[0]
+ }, $sortableContainer[0]);
+ }
+
+ $insertBeforeEl = undefined;
+ $insertAfterEl = undefined;
+ isTouched = false;
+ isMoved = false;
+ }
+
+ var activeListener = (0, _getSupport.getSupport)().passiveListener ? {
+ passive: false,
+ capture: false
+ } : false;
+ (0, _dom.default)(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ (0, _dom.default)(document).on('taphold', '.sortable-tap-hold', function (e, pointerEvent) {
+ handleTouchStart(pointerEvent, true);
+ });
+ },
+ enable: function enable(el) {
+ if (el === void 0) {
+ el = '.list.sortable';
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ $el.addClass('sortable-enabled');
+ $el.trigger('sortable:enable');
+ app.emit('sortableEnable', $el[0]);
+ },
+ disable: function disable(el) {
+ if (el === void 0) {
+ el = '.list.sortable';
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ $el.removeClass('sortable-enabled');
+ $el.trigger('sortable:disable');
+ app.emit('sortableDisable', $el[0]);
+ },
+ toggle: function toggle(el) {
+ if (el === void 0) {
+ el = '.list.sortable';
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+
+ if ($el.hasClass('sortable-enabled')) {
+ app.sortable.disable($el);
+ } else {
+ app.sortable.enable($el);
+ }
+ }
+};
+var _default = {
+ name: 'sortable',
+ params: {
+ sortable: {
+ moveElements: true
+ }
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ sortable: Sortable
+ });
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ if (!app.params.sortable) return;
+ app.sortable.init();
+ }
+ },
+ clicks: {
+ '.sortable-enable': function enable($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.sortable.enable(data.sortable);
+ },
+ '.sortable-disable': function disable($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.sortable.disable(data.sortable);
+ },
+ '.sortable-toggle': function toggle($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.sortable.toggle(data.sortable);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/statusbar/statusbar.js b/www/assets/framework7/cjs/components/statusbar/statusbar.js
new file mode 100644
index 000000000..7bad9e388
--- /dev/null
+++ b/www/assets/framework7/cjs/components/statusbar/statusbar.js
@@ -0,0 +1,226 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var isCapacitor = function isCapacitor() {
+ var window = (0, _ssrWindow.getWindow)();
+ return window.Capacitor && window.Capacitor.isNative && window.Capacitor.Plugins && window.Capacitor.Plugins.StatusBar;
+};
+
+var Statusbar = {
+ hide: function hide() {
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+
+ if (device.cordova && window.StatusBar) {
+ window.StatusBar.hide();
+ }
+
+ if (isCapacitor()) {
+ window.Capacitor.Plugins.StatusBar.hide();
+ }
+ },
+ show: function show() {
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+
+ if (device.cordova && window.StatusBar) {
+ window.StatusBar.show();
+ }
+
+ if (isCapacitor()) {
+ window.Capacitor.Plugins.StatusBar.show();
+ }
+ },
+ onClick: function onClick() {
+ var app = this;
+ var pageContent;
+
+ if ((0, _dom.default)('.popup.modal-in').length > 0) {
+ // Check for opened popup
+ pageContent = (0, _dom.default)('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
+ } else if ((0, _dom.default)('.panel.panel-in').length > 0) {
+ // Check for opened panel
+ pageContent = (0, _dom.default)('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
+ } else if ((0, _dom.default)('.views > .view.tab-active').length > 0) {
+ // View in tab bar app layout
+ pageContent = (0, _dom.default)('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
+ } else if ((0, _dom.default)('.views').length > 0) {
+ pageContent = (0, _dom.default)('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
+ } else {
+ pageContent = app.$el.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
+ }
+
+ if (pageContent && pageContent.length > 0) {
+ // Check for tab
+ if (pageContent.hasClass('tab')) {
+ pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');
+ }
+
+ if (pageContent.length > 0) pageContent.scrollTop(0, 300);
+ }
+ },
+ setTextColor: function setTextColor(color) {
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+
+ if (device.cordova && window.StatusBar) {
+ if (color === 'white') {
+ window.StatusBar.styleLightContent();
+ } else {
+ window.StatusBar.styleDefault();
+ }
+ }
+
+ if (isCapacitor()) {
+ if (color === 'white') {
+ window.Capacitor.Plugins.StatusBar.setStyle({
+ style: 'DARK'
+ });
+ } else {
+ window.Capacitor.Plugins.StatusBar.setStyle({
+ style: 'LIGHT'
+ });
+ }
+ }
+ },
+ setBackgroundColor: function setBackgroundColor(color) {
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+
+ if (device.cordova && window.StatusBar) {
+ window.StatusBar.backgroundColorByHexString(color);
+ }
+
+ if (isCapacitor()) {
+ window.Capacitor.Plugins.StatusBar.setBackgroundColor({
+ color: color
+ });
+ }
+ },
+ isVisible: function isVisible() {
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+ return new Promise(function (resolve) {
+ if (device.cordova && window.StatusBar) {
+ resolve(window.StatusBar.isVisible);
+ }
+
+ if (isCapacitor()) {
+ window.Capacitor.Plugins.StatusBar.getInfo().then(function (info) {
+ resolve(info.visible);
+ });
+ }
+
+ resolve(false);
+ });
+ },
+ overlaysWebView: function overlaysWebView(overlays) {
+ if (overlays === void 0) {
+ overlays = true;
+ }
+
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+
+ if (device.cordova && window.StatusBar) {
+ window.StatusBar.overlaysWebView(overlays);
+ }
+
+ if (isCapacitor()) {
+ window.Capacitor.Plugins.StatusBar.setOverlaysWebView({
+ overlay: overlays
+ });
+ }
+ },
+ init: function init() {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var device = (0, _getDevice.getDevice)();
+ var params = app.params.statusbar;
+ if (!params.enabled) return;
+ var isCordova = device.cordova && window.StatusBar;
+ var isCap = isCapacitor();
+
+ if (isCordova || isCap) {
+ if (params.scrollTopOnClick) {
+ (0, _dom.default)(window).on('statusTap', Statusbar.onClick.bind(app));
+ }
+
+ if (device.ios) {
+ if (params.iosOverlaysWebView) {
+ Statusbar.overlaysWebView(true);
+ } else {
+ Statusbar.overlaysWebView(false);
+ }
+
+ if (params.iosTextColor === 'white') {
+ Statusbar.setTextColor('white');
+ } else {
+ Statusbar.setTextColor('black');
+ }
+ }
+
+ if (device.android) {
+ if (params.androidOverlaysWebView) {
+ Statusbar.overlaysWebView(true);
+ } else {
+ Statusbar.overlaysWebView(false);
+ }
+
+ if (params.androidTextColor === 'white') {
+ Statusbar.setTextColor('white');
+ } else {
+ Statusbar.setTextColor('black');
+ }
+ }
+ }
+
+ if (params.iosBackgroundColor && device.ios) {
+ Statusbar.setBackgroundColor(params.iosBackgroundColor);
+ }
+
+ if (params.androidBackgroundColor && device.android) {
+ Statusbar.setBackgroundColor(params.androidBackgroundColor);
+ }
+ }
+};
+var _default = {
+ name: 'statusbar',
+ params: {
+ statusbar: {
+ enabled: true,
+ scrollTopOnClick: true,
+ iosOverlaysWebView: true,
+ iosTextColor: 'black',
+ iosBackgroundColor: null,
+ androidOverlaysWebView: false,
+ androidTextColor: 'black',
+ androidBackgroundColor: null
+ }
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ statusbar: Statusbar
+ });
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ Statusbar.init.call(app);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/stepper/stepper-class.js b/www/assets/framework7/cjs/components/stepper/stepper-class.js
new file mode 100644
index 000000000..ab053259b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/stepper/stepper-class.js
@@ -0,0 +1,497 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Stepper = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Stepper, _Framework7Class);
+
+ function Stepper(app, params) {
+ var _this;
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var stepper = _assertThisInitialized(_this);
+
+ var defaults = {
+ el: null,
+ inputEl: null,
+ valueEl: null,
+ value: 0,
+ formatValue: null,
+ step: 1,
+ min: 0,
+ max: 100,
+ watchInput: true,
+ autorepeat: false,
+ autorepeatDynamic: false,
+ wraps: false,
+ manualInputMode: false,
+ decimalPoint: 4,
+ buttonsEndInputMode: true
+ }; // Extend defaults with modules params
+
+ stepper.useModulesParams(defaults);
+ stepper.params = (0, _utils.extend)(defaults, params);
+
+ if (stepper.params.value < stepper.params.min) {
+ stepper.params.value = stepper.params.min;
+ }
+
+ if (stepper.params.value > stepper.params.max) {
+ stepper.params.value = stepper.params.max;
+ }
+
+ var el = stepper.params.el;
+ if (!el) return stepper || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return stepper || _assertThisInitialized(_this);
+ if ($el[0].f7Stepper) return $el[0].f7Stepper || _assertThisInitialized(_this);
+ var $inputEl;
+
+ if (stepper.params.inputEl) {
+ $inputEl = (0, _dom.default)(stepper.params.inputEl);
+ } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {
+ $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);
+ }
+
+ if ($inputEl && $inputEl.length) {
+ 'step min max'.split(' ').forEach(function (paramName) {
+ if (!params[paramName] && $inputEl.attr(paramName)) {
+ stepper.params[paramName] = parseFloat($inputEl.attr(paramName));
+ }
+ });
+
+ var _decimalPoint = parseInt(stepper.params.decimalPoint, 10);
+
+ if (Number.isNaN(_decimalPoint)) {
+ stepper.params.decimalPoint = 0;
+ } else {
+ stepper.params.decimalPoint = _decimalPoint;
+ }
+
+ var inputValue = parseFloat($inputEl.val());
+
+ if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {
+ stepper.params.value = inputValue;
+ }
+ }
+
+ var $valueEl;
+
+ if (stepper.params.valueEl) {
+ $valueEl = (0, _dom.default)(stepper.params.valueEl);
+ } else if ($el.find('.stepper-value').length) {
+ $valueEl = $el.find('.stepper-value').eq(0);
+ }
+
+ var $buttonPlusEl = $el.find('.stepper-button-plus');
+ var $buttonMinusEl = $el.find('.stepper-button-minus');
+ var _stepper$params = stepper.params,
+ step = _stepper$params.step,
+ min = _stepper$params.min,
+ max = _stepper$params.max,
+ value = _stepper$params.value,
+ decimalPoint = _stepper$params.decimalPoint;
+ (0, _utils.extend)(stepper, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $buttonPlusEl: $buttonPlusEl,
+ buttonPlusEl: $buttonPlusEl[0],
+ $buttonMinusEl: $buttonMinusEl,
+ buttonMinusEl: $buttonMinusEl[0],
+ $inputEl: $inputEl,
+ inputEl: $inputEl ? $inputEl[0] : undefined,
+ $valueEl: $valueEl,
+ valueEl: $valueEl ? $valueEl[0] : undefined,
+ step: step,
+ min: min,
+ max: max,
+ value: value,
+ decimalPoint: decimalPoint,
+ typeModeChanged: false
+ });
+ $el[0].f7Stepper = stepper; // Handle Events
+
+ var touchesStart = {};
+ var isTouched;
+ var isScrolling;
+ var preventButtonClick;
+ var intervalId;
+ var timeoutId;
+ var autorepeatAction = null;
+ var autorepeatInAction = false;
+ var manualInput = false;
+
+ function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {
+ clearTimeout(timeoutId);
+ timeoutId = setTimeout(function () {
+ if (current === 1) {
+ preventButtonClick = true;
+ autorepeatInAction = true;
+ }
+
+ clearInterval(intervalId);
+ action();
+ intervalId = setInterval(function () {
+ action();
+ }, repeatEvery);
+
+ if (current < progressions) {
+ dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);
+ }
+ }, current === 1 ? startsIn : progressionStep);
+ }
+
+ function onTouchStart(e) {
+ if (isTouched) return;
+
+ if (manualInput) {
+ return;
+ }
+
+ if ((0, _dom.default)(e.target).closest($buttonPlusEl).length) {
+ autorepeatAction = 'increment';
+ } else if ((0, _dom.default)(e.target).closest($buttonMinusEl).length) {
+ autorepeatAction = 'decrement';
+ }
+
+ if (!autorepeatAction) return;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ isTouched = true;
+ isScrolling = undefined;
+ var progressions = stepper.params.autorepeatDynamic ? 4 : 1;
+ dynamicRepeat(1, progressions, 500, 1000, 300, function () {
+ stepper[autorepeatAction]();
+ });
+ }
+
+ function onTouchMove(e) {
+ if (!isTouched) return;
+
+ if (manualInput) {
+ return;
+ }
+
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined' && !autorepeatInAction) {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
+ }
+
+ var distance = Math.pow(Math.pow(pageX - touchesStart.x, 2) + Math.pow(pageY - touchesStart.y, 2), 0.5);
+
+ if (isScrolling || distance > 20) {
+ isTouched = false;
+ clearTimeout(timeoutId);
+ clearInterval(intervalId);
+ }
+ }
+
+ function onTouchEnd() {
+ clearTimeout(timeoutId);
+ clearInterval(intervalId);
+ autorepeatAction = null;
+ autorepeatInAction = false;
+ isTouched = false;
+ }
+
+ function onMinusClick() {
+ if (manualInput) {
+ if (stepper.params.buttonsEndInputMode) {
+ manualInput = false;
+ stepper.endTypeMode(true);
+ }
+
+ return;
+ }
+
+ if (preventButtonClick) {
+ preventButtonClick = false;
+ return;
+ }
+
+ stepper.decrement(true);
+ }
+
+ function onPlusClick() {
+ if (manualInput) {
+ if (stepper.params.buttonsEndInputMode) {
+ manualInput = false;
+ stepper.endTypeMode(true);
+ }
+
+ return;
+ }
+
+ if (preventButtonClick) {
+ preventButtonClick = false;
+ return;
+ }
+
+ stepper.increment(true);
+ }
+
+ function onInputClick(e) {
+ if (!e.target.readOnly && stepper.params.manualInputMode) {
+ manualInput = true;
+
+ if (typeof e.target.selectionStart === 'number') {
+ e.target.selectionStart = e.target.value.length;
+ e.target.selectionEnd = e.target.value.length;
+ }
+ }
+ }
+
+ function onInputKey(e) {
+ if (e.keyCode === 13 || e.which === 13) {
+ e.preventDefault();
+ manualInput = false;
+ stepper.endTypeMode();
+ }
+ }
+
+ function onInputBlur() {
+ manualInput = false;
+ stepper.endTypeMode(true);
+ }
+
+ function onInput(e) {
+ if (manualInput) {
+ stepper.typeValue(e.target.value);
+ return;
+ }
+
+ if (e.detail && e.detail.sentByF7Stepper) return;
+ stepper.setValue(e.target.value, true);
+ }
+
+ stepper.attachEvents = function attachEvents() {
+ $buttonMinusEl.on('click', onMinusClick);
+ $buttonPlusEl.on('click', onPlusClick);
+
+ if (stepper.params.watchInput && $inputEl && $inputEl.length) {
+ $inputEl.on('input', onInput);
+ $inputEl.on('click', onInputClick);
+ $inputEl.on('blur', onInputBlur);
+ $inputEl.on('keyup', onInputKey);
+ }
+
+ if (stepper.params.autorepeat) {
+ app.on('touchstart:passive', onTouchStart);
+ app.on('touchmove:active', onTouchMove);
+ app.on('touchend:passive', onTouchEnd);
+ }
+ };
+
+ stepper.detachEvents = function detachEvents() {
+ $buttonMinusEl.off('click', onMinusClick);
+ $buttonPlusEl.off('click', onPlusClick);
+
+ if (stepper.params.watchInput && $inputEl && $inputEl.length) {
+ $inputEl.off('input', onInput);
+ $inputEl.off('click', onInputClick);
+ $inputEl.off('blur', onInputBlur);
+ $inputEl.off('keyup', onInputKey);
+ }
+ }; // Install Modules
+
+
+ stepper.useModules(); // Init
+
+ stepper.init();
+ return stepper || _assertThisInitialized(_this);
+ }
+
+ var _proto = Stepper.prototype;
+
+ _proto.minus = function minus() {
+ return this.decrement();
+ };
+
+ _proto.plus = function plus() {
+ return this.increment();
+ };
+
+ _proto.decrement = function decrement() {
+ var stepper = this;
+ return stepper.setValue(stepper.value - stepper.step, false, true);
+ };
+
+ _proto.increment = function increment() {
+ var stepper = this;
+ return stepper.setValue(stepper.value + stepper.step, false, true);
+ };
+
+ _proto.setValue = function setValue(newValue, forceUpdate, withWraps) {
+ var stepper = this;
+ var step = stepper.step,
+ min = stepper.min,
+ max = stepper.max;
+ var oldValue = stepper.value;
+ var value = Math.round(newValue / step) * step;
+
+ if (stepper.params.wraps && withWraps) {
+ if (value > max) value = min;
+ if (value < min) value = max;
+ } else {
+ value = Math.max(Math.min(value, max), min);
+ }
+
+ if (Number.isNaN(value)) {
+ value = oldValue;
+ }
+
+ stepper.value = value;
+ var valueChanged = oldValue !== value; // Events
+
+ if (!valueChanged && !forceUpdate) return stepper;
+ stepper.$el.trigger('stepper:change', stepper.value);
+ var formattedValue = stepper.formatValue(stepper.value);
+
+ if (stepper.$inputEl && stepper.$inputEl.length) {
+ stepper.$inputEl.val(formattedValue);
+ stepper.$inputEl.trigger('input change', {
+ sentByF7Stepper: true
+ });
+ }
+
+ if (stepper.$valueEl && stepper.$valueEl.length) {
+ stepper.$valueEl.html(formattedValue);
+ }
+
+ stepper.emit('local::change stepperChange', stepper, stepper.value);
+ return stepper;
+ };
+
+ _proto.endTypeMode = function endTypeMode(noBlur) {
+ var stepper = this;
+ var min = stepper.min,
+ max = stepper.max;
+ var value = parseFloat(stepper.value);
+ if (Number.isNaN(value)) value = 0;
+ value = Math.max(Math.min(value, max), min);
+ stepper.value = value;
+
+ if (!stepper.typeModeChanged) {
+ if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {
+ stepper.$inputEl.blur();
+ }
+
+ return stepper;
+ }
+
+ stepper.typeModeChanged = false;
+ stepper.$el.trigger('stepper:change', stepper.value);
+ var formattedValue = stepper.formatValue(stepper.value);
+
+ if (stepper.$inputEl && stepper.$inputEl.length) {
+ stepper.$inputEl.val(formattedValue);
+ stepper.$inputEl.trigger('input change', {
+ sentByF7Stepper: true
+ });
+ if (!noBlur) stepper.$inputEl.blur();
+ }
+
+ if (stepper.$valueEl && stepper.$valueEl.length) {
+ stepper.$valueEl.html(formattedValue);
+ }
+
+ stepper.emit('local::change stepperChange', stepper, stepper.value);
+ return stepper;
+ };
+
+ _proto.typeValue = function typeValue(value) {
+ var stepper = this;
+ stepper.typeModeChanged = true;
+ var inputTxt = String(value);
+ if (inputTxt.length === 1 && inputTxt === '-') return stepper;
+
+ if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {
+ if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {
+ inputTxt = inputTxt.slice(0, -1);
+ stepper.value = inputTxt;
+ stepper.$inputEl.val(stepper.value);
+ return stepper;
+ }
+ } else {
+ var newValue = parseFloat(inputTxt.replace(',', '.'));
+
+ if (newValue === 0) {
+ stepper.value = inputTxt.replace(',', '.');
+ stepper.$inputEl.val(stepper.value);
+ return stepper;
+ }
+
+ if (Number.isNaN(newValue)) {
+ stepper.value = 0;
+ stepper.$inputEl.val(stepper.value);
+ return stepper;
+ }
+
+ var powVal = Math.pow(10, stepper.params.decimalPoint);
+ newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;
+ stepper.value = parseFloat(String(newValue).replace(',', '.'));
+ stepper.$inputEl.val(stepper.value);
+ return stepper;
+ }
+
+ stepper.value = inputTxt;
+ stepper.$inputEl.val(inputTxt);
+ return stepper;
+ };
+
+ _proto.getValue = function getValue() {
+ return this.value;
+ };
+
+ _proto.formatValue = function formatValue(value) {
+ var stepper = this;
+ if (!stepper.params.formatValue) return value;
+ return stepper.params.formatValue.call(stepper, value);
+ };
+
+ _proto.init = function init() {
+ var stepper = this;
+ stepper.attachEvents();
+
+ if (stepper.$valueEl && stepper.$valueEl.length) {
+ var formattedValue = stepper.formatValue(stepper.value);
+ stepper.$valueEl.html(formattedValue);
+ }
+
+ return stepper;
+ };
+
+ _proto.destroy = function destroy() {
+ var stepper = this;
+ stepper.$el.trigger('stepper:beforedestroy');
+ stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);
+ delete stepper.$el[0].f7Stepper;
+ stepper.detachEvents();
+ (0, _utils.deleteProps)(stepper);
+ stepper = null;
+ };
+
+ return Stepper;
+}(_class.default);
+
+var _default = Stepper;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/stepper/stepper.js b/www/assets/framework7/cjs/components/stepper/stepper.js
new file mode 100644
index 000000000..9afdea4db
--- /dev/null
+++ b/www/assets/framework7/cjs/components/stepper/stepper.js
@@ -0,0 +1,96 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _stepperClass = _interopRequireDefault(require("./stepper-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'stepper',
+ create: function create() {
+ var app = this;
+ app.stepper = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: '.stepper',
+ constructor: _stepperClass.default,
+ app: app,
+ domProp: 'f7Stepper'
+ }), {
+ getValue: function getValue(el) {
+ if (el === void 0) {
+ el = '.stepper';
+ }
+
+ var stepper = app.stepper.get(el);
+ if (stepper) return stepper.getValue();
+ return undefined;
+ },
+ setValue: function setValue(el, value) {
+ if (el === void 0) {
+ el = '.stepper';
+ }
+
+ var stepper = app.stepper.get(el);
+ if (stepper) return stepper.setValue(value);
+ return undefined;
+ }
+ });
+ },
+ static: {
+ Stepper: _stepperClass.default
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.stepper-init').each(function (stepperEl) {
+ var dataset = (0, _dom.default)(stepperEl).dataset();
+ app.stepper.create((0, _utils.extend)({
+ el: stepperEl
+ }, dataset || {}));
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.stepper-init').each(function (stepperEl) {
+ if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.stepper-init').each(function (stepperEl) {
+ var dataset = (0, _dom.default)(stepperEl).dataset();
+ app.stepper.create((0, _utils.extend)({
+ el: stepperEl
+ }, dataset || {}));
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.stepper-init').each(function (stepperEl) {
+ if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'stepper-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var stepperEl = vnode.elm;
+ var dataset = (0, _dom.default)(stepperEl).dataset();
+ app.stepper.create((0, _utils.extend)({
+ el: stepperEl
+ }, dataset || {}));
+ },
+ destroy: function destroy(vnode) {
+ var stepperEl = vnode.elm;
+ if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/subnavbar/subnavbar.js b/www/assets/framework7/cjs/components/subnavbar/subnavbar.js
new file mode 100644
index 000000000..fcdebde57
--- /dev/null
+++ b/www/assets/framework7/cjs/components/subnavbar/subnavbar.js
@@ -0,0 +1,28 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'subnavbar',
+ on: {
+ pageInit: function pageInit(page) {
+ if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {
+ page.$el.addClass('page-with-subnavbar');
+ }
+
+ var $innerSubnavbars = page.$el.find('.subnavbar').filter(function (subnavbarEl) {
+ return (0, _dom.default)(subnavbarEl).parents('.page')[0] === page.$el[0];
+ });
+
+ if ($innerSubnavbars.length) {
+ page.$el.addClass('page-with-subnavbar');
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/swipeout/swipeout.js b/www/assets/framework7/cjs/components/swipeout/swipeout.js
new file mode 100644
index 000000000..07b81b0b3
--- /dev/null
+++ b/www/assets/framework7/cjs/components/swipeout/swipeout.js
@@ -0,0 +1,618 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Swipeout = {
+ init: function init() {
+ var app = this;
+ var document = (0, _ssrWindow.getDocument)();
+ var touchesStart = {};
+ var isTouched;
+ var isMoved;
+ var isScrolling;
+ var touchStartTime;
+ var touchesDiff;
+ var $swipeoutEl;
+ var $swipeoutContent;
+ var $actionsRight;
+ var $actionsLeft;
+ var actionsLeftWidth;
+ var actionsRightWidth;
+ var translate;
+ var opened;
+ var openedActionsSide;
+ var $leftButtons;
+ var $rightButtons;
+ var direction;
+ var $overswipeLeftButton;
+ var $overswipeRightButton;
+ var overswipeLeft;
+ var overswipeRight;
+
+ function handleTouchStart(e) {
+ if (!app.swipeout.allow) return;
+ isMoved = false;
+ isTouched = true;
+ isScrolling = undefined;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchStartTime = new Date().getTime();
+ $swipeoutEl = (0, _dom.default)(this);
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ return;
+ }
+
+ if (!isMoved) {
+ if ((0, _dom.default)('.list.sortable-opened').length > 0) return;
+ $swipeoutContent = $swipeoutEl.find('.swipeout-content');
+ $actionsRight = $swipeoutEl.find('.swipeout-actions-right');
+ $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');
+ actionsLeftWidth = null;
+ actionsRightWidth = null;
+ $leftButtons = null;
+ $rightButtons = null;
+ $overswipeRightButton = null;
+ $overswipeLeftButton = null;
+
+ if ($actionsLeft.length > 0) {
+ actionsLeftWidth = $actionsLeft.outerWidth();
+ $leftButtons = $actionsLeft.children('a');
+ $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');
+ }
+
+ if ($actionsRight.length > 0) {
+ actionsRightWidth = $actionsRight.outerWidth();
+ $rightButtons = $actionsRight.children('a');
+ $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');
+ }
+
+ opened = $swipeoutEl.hasClass('swipeout-opened');
+
+ if (opened) {
+ openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';
+ }
+
+ $swipeoutEl.removeClass('swipeout-transitioning');
+
+ if (!app.params.swipeout.noFollow) {
+ $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');
+ $swipeoutEl.removeClass('swipeout-opened');
+ }
+ }
+
+ isMoved = true;
+
+ if (e.cancelable) {
+ e.preventDefault();
+ }
+
+ touchesDiff = pageX - touchesStart.x;
+ translate = touchesDiff;
+
+ if (opened) {
+ if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;
+ }
+
+ if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {
+ if (!opened) {
+ isTouched = false;
+ isMoved = false;
+ $swipeoutContent.transform('');
+
+ if ($rightButtons && $rightButtons.length > 0) {
+ $rightButtons.transform('');
+ }
+
+ if ($leftButtons && $leftButtons.length > 0) {
+ $leftButtons.transform('');
+ }
+
+ return;
+ }
+
+ translate = 0;
+ }
+
+ if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';
+ var buttonOffset;
+ var progress;
+ e.f7PreventSwipePanel = true;
+
+ if (app.params.swipeout.noFollow) {
+ if (opened) {
+ if (openedActionsSide === 'right' && touchesDiff > 0) {
+ app.swipeout.close($swipeoutEl);
+ }
+
+ if (openedActionsSide === 'left' && touchesDiff < 0) {
+ app.swipeout.close($swipeoutEl);
+ }
+ } else {
+ if (touchesDiff < 0 && $actionsRight.length > 0) {
+ app.swipeout.open($swipeoutEl, 'right');
+ }
+
+ if (touchesDiff > 0 && $actionsLeft.length > 0) {
+ app.swipeout.open($swipeoutEl, 'left');
+ }
+ }
+
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ overswipeLeft = false;
+ overswipeRight = false;
+
+ if ($actionsRight.length > 0) {
+ // Show right actions
+ var buttonTranslate = translate;
+ progress = buttonTranslate / actionsRightWidth;
+
+ if (buttonTranslate < -actionsRightWidth) {
+ var ratio = buttonTranslate / -actionsRightWidth;
+ buttonTranslate = -actionsRightWidth - Math.pow(-buttonTranslate - actionsRightWidth, 0.8);
+ translate = buttonTranslate;
+
+ if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {
+ overswipeRight = true;
+ }
+ }
+
+ if (direction !== 'to-left') {
+ progress = 0;
+ buttonTranslate = 0;
+ }
+
+ $rightButtons.each(function (buttonEl) {
+ var $buttonEl = (0, _dom.default)(buttonEl);
+
+ if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
+ $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
+ }
+
+ buttonOffset = buttonEl.f7SwipeoutButtonOffset;
+
+ if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {
+ $buttonEl.css({
+ left: (overswipeRight ? -buttonOffset : 0) + "px"
+ });
+
+ if (overswipeRight) {
+ if (!$buttonEl.hasClass('swipeout-overswipe-active')) {
+ $swipeoutEl.trigger('swipeout:overswipeenter');
+ app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);
+ }
+
+ $buttonEl.addClass('swipeout-overswipe-active');
+ } else {
+ if ($buttonEl.hasClass('swipeout-overswipe-active')) {
+ $swipeoutEl.trigger('swipeout:overswipeexit');
+ app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);
+ }
+
+ $buttonEl.removeClass('swipeout-overswipe-active');
+ }
+ }
+
+ $buttonEl.transform("translate3d(" + (buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))) + "px,0,0)");
+ });
+ }
+
+ if ($actionsLeft.length > 0) {
+ // Show left actions
+ var _buttonTranslate = translate;
+ progress = _buttonTranslate / actionsLeftWidth;
+
+ if (_buttonTranslate > actionsLeftWidth) {
+ var _ratio = _buttonTranslate / actionsRightWidth;
+
+ _buttonTranslate = actionsLeftWidth + Math.pow(_buttonTranslate - actionsLeftWidth, 0.8);
+ translate = _buttonTranslate;
+
+ if ($overswipeLeftButton.length > 0 && _ratio > app.params.swipeout.overswipeRatio) {
+ overswipeLeft = true;
+ }
+ }
+
+ if (direction !== 'to-right') {
+ _buttonTranslate = 0;
+ progress = 0;
+ }
+
+ $leftButtons.each(function (buttonEl, index) {
+ var $buttonEl = (0, _dom.default)(buttonEl);
+
+ if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
+ $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
+ }
+
+ buttonOffset = buttonEl.f7SwipeoutButtonOffset;
+
+ if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {
+ $buttonEl.css({
+ left: (overswipeLeft ? buttonOffset : 0) + "px"
+ });
+
+ if (overswipeLeft) {
+ if (!$buttonEl.hasClass('swipeout-overswipe-active')) {
+ $swipeoutEl.trigger('swipeout:overswipeenter');
+ app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);
+ }
+
+ $buttonEl.addClass('swipeout-overswipe-active');
+ } else {
+ if ($buttonEl.hasClass('swipeout-overswipe-active')) {
+ $swipeoutEl.trigger('swipeout:overswipeexit');
+ app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);
+ }
+
+ $buttonEl.removeClass('swipeout-overswipe-active');
+ }
+ }
+
+ if ($leftButtons.length > 1) {
+ $buttonEl.css('z-index', $leftButtons.length - index);
+ }
+
+ $buttonEl.transform("translate3d(" + (_buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))) + "px,0,0)");
+ });
+ }
+
+ $swipeoutEl.trigger('swipeout', progress);
+ app.emit('swipeout', $swipeoutEl[0], progress);
+ $swipeoutContent.transform("translate3d(" + translate + "px,0,0)");
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ var timeDiff = new Date().getTime() - touchStartTime;
+ var $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;
+ var actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;
+ var action;
+ var $buttons;
+ var i;
+
+ if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {
+ action = 'open';
+ } else {
+ action = 'close';
+ }
+
+ if (timeDiff < 300) {
+ if (Math.abs(translate) === 0) action = 'close';
+ if (Math.abs(translate) === actionsWidth) action = 'open';
+ }
+
+ if (action === 'open') {
+ Swipeout.el = $swipeoutEl[0];
+ $swipeoutEl.trigger('swipeout:open');
+ app.emit('swipeoutOpen', $swipeoutEl[0]);
+ $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');
+ var newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;
+ $swipeoutContent.transform("translate3d(" + newTranslate + "px,0,0)");
+ $actions.addClass('swipeout-actions-opened');
+ $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;
+
+ if ($buttons) {
+ for (i = 0; i < $buttons.length; i += 1) {
+ (0, _dom.default)($buttons[i]).transform("translate3d(" + newTranslate + "px,0,0)");
+ }
+ }
+
+ if (overswipeRight) {
+ $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');
+ }
+
+ if (overswipeLeft) {
+ $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');
+ }
+ } else {
+ $swipeoutEl.trigger('swipeout:close');
+ app.emit('swipeoutClose', $swipeoutEl[0]);
+ Swipeout.el = undefined;
+ $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');
+ $swipeoutContent.transform('');
+ $actions.removeClass('swipeout-actions-opened');
+ }
+
+ var buttonOffset;
+
+ if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {
+ $leftButtons.each(function (buttonEl) {
+ var $buttonEl = (0, _dom.default)(buttonEl);
+ buttonOffset = buttonEl.f7SwipeoutButtonOffset;
+
+ if (typeof buttonOffset === 'undefined') {
+ $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
+ }
+
+ $buttonEl.transform("translate3d(" + buttonOffset + "px,0,0)");
+ });
+ }
+
+ if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {
+ $rightButtons.each(function (buttonEl) {
+ var $buttonEl = (0, _dom.default)(buttonEl);
+ buttonOffset = buttonEl.f7SwipeoutButtonOffset;
+
+ if (typeof buttonOffset === 'undefined') {
+ $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
+ }
+
+ $buttonEl.transform("translate3d(" + -buttonOffset + "px,0,0)");
+ });
+ }
+
+ $swipeoutContent.transitionEnd(function () {
+ if (opened && action === 'open' || !opened && action === 'close') return;
+ $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');
+ app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);
+ $swipeoutEl.removeClass('swipeout-transitioning');
+
+ if (opened && action === 'close') {
+ if ($actionsRight.length > 0) {
+ $rightButtons.transform('');
+ }
+
+ if ($actionsLeft.length > 0) {
+ $leftButtons.transform('');
+ }
+ }
+ });
+ }
+
+ var passiveListener = (0, _getSupport.getSupport)().passiveListener ? {
+ passive: true
+ } : false;
+ app.on('touchstart', function (e) {
+ if (Swipeout.el) {
+ var $targetEl = (0, _dom.default)(e.target);
+
+ if (!((0, _dom.default)(Swipeout.el).is($targetEl[0]) || $targetEl.parents('.swipeout').is(Swipeout.el) || $targetEl.hasClass('modal-in') || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 || $targetEl.hasClass('actions-modal') || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0)) {
+ app.swipeout.close(Swipeout.el);
+ }
+ }
+ });
+ (0, _dom.default)(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ },
+ allow: true,
+ el: undefined,
+ open: function open() {
+ var app = this;
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var el = args[0],
+ side = args[1],
+ callback = args[2];
+
+ if (typeof args[1] === 'function') {
+ el = args[0];
+ callback = args[1];
+ side = args[2];
+ }
+
+ var $el = (0, _dom.default)(el).eq(0);
+ if ($el.length === 0) return;
+ if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;
+
+ if (!side) {
+ if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';
+ }
+
+ var $swipeoutActions = $el.find(".swipeout-actions-" + side);
+ var $swipeoutContent = $el.find('.swipeout-content');
+ if ($swipeoutActions.length === 0) return;
+ $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');
+ app.emit('swipeoutOpen', $el[0]);
+ $swipeoutActions.addClass('swipeout-actions-opened');
+ var $buttons = $swipeoutActions.children('a');
+ var swipeoutActionsWidth = $swipeoutActions.outerWidth();
+ var translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;
+
+ if ($buttons.length > 1) {
+ $buttons.each(function (buttonEl, buttonIndex) {
+ var $buttonEl = (0, _dom.default)(buttonEl);
+
+ if (side === 'right') {
+ $buttonEl.transform("translate3d(" + -buttonEl.offsetLeft + "px,0,0)");
+ } else {
+ $buttonEl.css('z-index', $buttons.length - buttonIndex).transform("translate3d(" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + "px,0,0)");
+ }
+ });
+ }
+
+ $el.addClass('swipeout-transitioning');
+ $swipeoutContent.transitionEnd(function () {
+ $el.trigger('swipeout:opened');
+ app.emit('swipeoutOpened', $el[0]);
+ if (callback) callback.call($el[0]);
+ });
+ (0, _utils.nextFrame)(function () {
+ $buttons.transform("translate3d(" + translate + "px,0,0)");
+ $swipeoutContent.transform("translate3d(" + translate + "px,0,0)");
+ });
+ Swipeout.el = $el[0];
+ },
+ close: function close(el, callback) {
+ var app = this;
+ var $el = (0, _dom.default)(el).eq(0);
+ if ($el.length === 0) return;
+ if (!$el.hasClass('swipeout-opened')) return;
+ var side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';
+ var $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');
+ var $buttons = $swipeoutActions.children('a');
+ var swipeoutActionsWidth = $swipeoutActions.outerWidth();
+ app.swipeout.allow = false;
+ $el.trigger('swipeout:close');
+ app.emit('swipeoutClose', $el[0]);
+ $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');
+ var closeTimeout;
+
+ function onSwipeoutClose() {
+ app.swipeout.allow = true;
+ if ($el.hasClass('swipeout-opened')) return;
+ $el.removeClass('swipeout-transitioning');
+ $buttons.transform('');
+ $el.trigger('swipeout:closed');
+ app.emit('swipeoutClosed', $el[0]);
+ if (callback) callback.call($el[0]);
+ if (closeTimeout) clearTimeout(closeTimeout);
+ }
+
+ $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);
+ closeTimeout = setTimeout(onSwipeoutClose, 500);
+ $buttons.each(function (buttonEl) {
+ var $buttonEl = (0, _dom.default)(buttonEl);
+
+ if (side === 'right') {
+ $buttonEl.transform("translate3d(" + -buttonEl.offsetLeft + "px,0,0)");
+ } else {
+ $buttonEl.transform("translate3d(" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + "px,0,0)");
+ }
+
+ $buttonEl.css({
+ left: '0px'
+ }).removeClass('swipeout-overswipe-active');
+ });
+ if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;
+ },
+ delete: function _delete(el, callback) {
+ var app = this;
+ var $el = (0, _dom.default)(el).eq(0);
+ if ($el.length === 0) return;
+ Swipeout.el = undefined;
+ $el.trigger('swipeout:delete');
+ app.emit('swipeoutDelete', $el[0]);
+ $el.css({
+ height: $el.outerHeight() + "px"
+ });
+ $el.transitionEnd(function () {
+ $el.trigger('swipeout:deleted');
+ app.emit('swipeoutDeleted', $el[0]);
+ if (callback) callback.call($el[0]);
+
+ if ($el.parents('.virtual-list').length > 0) {
+ var virtualList = $el.parents('.virtual-list')[0].f7VirtualList;
+ var virtualIndex = $el[0].f7VirtualListIndex;
+ if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);
+ } else if (app.params.swipeout.removeElements) {
+ if (app.params.swipeout.removeElementsWithTimeout) {
+ setTimeout(function () {
+ $el.remove();
+ }, app.params.swipeout.removeElementsTimeout);
+ } else {
+ $el.remove();
+ }
+ } else {
+ $el.removeClass('swipeout-deleting swipeout-transitioning');
+ }
+ }); // eslint-disable-next-line
+ // $el[0]._clientLeft = $el[0].clientLeft;
+
+ (0, _utils.nextFrame)(function () {
+ $el.addClass('swipeout-deleting swipeout-transitioning').css({
+ height: '0px'
+ }).find('.swipeout-content').transform('translate3d(-100%,0,0)');
+ });
+ }
+};
+var _default = {
+ name: 'swipeout',
+ params: {
+ swipeout: {
+ actionsNoFold: false,
+ noFollow: false,
+ removeElements: true,
+ removeElementsWithTimeout: false,
+ removeElementsTimeout: 0,
+ overswipeRatio: 1.2
+ }
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ swipeout: Swipeout
+ });
+ },
+ clicks: {
+ '.swipeout-open': function openSwipeout($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ app.swipeout.open(data.swipeout, data.side);
+ },
+ '.swipeout-close': function closeSwipeout($clickedEl) {
+ var app = this;
+ var $swipeoutEl = $clickedEl.closest('.swipeout');
+ if ($swipeoutEl.length === 0) return;
+ app.swipeout.close($swipeoutEl);
+ },
+ '.swipeout-delete': function deleteSwipeout($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ var app = this;
+ var $swipeoutEl = $clickedEl.closest('.swipeout');
+ if ($swipeoutEl.length === 0) return;
+ var _data = data,
+ confirm = _data.confirm,
+ confirmTitle = _data.confirmTitle;
+
+ if (data.confirm) {
+ app.dialog.confirm(confirm, confirmTitle, function () {
+ app.swipeout.delete($swipeoutEl);
+ });
+ } else {
+ app.swipeout.delete($swipeoutEl);
+ }
+ }
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ if (!app.params.swipeout) return;
+ app.swipeout.init();
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/swiper/swiper.js b/www/assets/framework7/cjs/components/swiper/swiper.js
new file mode 100644
index 000000000..b6f44a6ff
--- /dev/null
+++ b/www/assets/framework7/cjs/components/swiper/swiper.js
@@ -0,0 +1,189 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _bundle = _interopRequireDefault(require("swiper/bundle"));
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+
+
+
+function initSwiper(swiperEl) {
+ var app = this;
+ var $swiperEl = (0, _dom.default)(swiperEl);
+ if ($swiperEl.length === 0) return;
+ if ($swiperEl[0].swiper) return;
+ var initialSlide;
+ var params = {};
+ var isTabs;
+ var isRoutableTabs;
+
+ if ($swiperEl.hasClass('tabs-swipeable-wrap')) {
+ $swiperEl.addClass('swiper-container').children('.tabs').addClass('swiper-wrapper').children('.tab').addClass('swiper-slide');
+ initialSlide = $swiperEl.children('.tabs').children('.tab-active').index();
+ isTabs = true;
+ isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;
+ }
+
+ if ($swiperEl.attr('data-swiper')) {
+ params = JSON.parse($swiperEl.attr('data-swiper'));
+ } else if ($swiperEl[0].f7SwiperParams) {
+ params = $swiperEl[0].f7SwiperParams;
+ } else {
+ params = $swiperEl.dataset();
+ Object.keys(params).forEach(function (key) {
+ var value = params[key];
+
+ if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {
+ try {
+ params[key] = JSON.parse(value);
+ } catch (e) {// not JSON
+ }
+ }
+ });
+ }
+
+ if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {
+ params.initialSlide = initialSlide;
+ }
+
+ var swiper = app.swiper.create($swiperEl[0], params);
+
+ function updateSwiper() {
+ swiper.update();
+ }
+
+ var $tabEl = $swiperEl.parents('.tab').filter(function (tabEl) {
+ return (0, _dom.default)(tabEl).parent('.tabs').parent('.tabs-animated-wrap, .tabs-swipeable-wrap').length === 0;
+ }).eq(0);
+ $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);
+ $swiperEl.parents('.panel').on('panel:open', updateSwiper);
+
+ if ($tabEl && $tabEl.length) {
+ $tabEl.on('tab:show', updateSwiper);
+ }
+
+ swiper.on('beforeDestroy', function () {
+ $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);
+ $swiperEl.parents('.panel').off('panel:open', updateSwiper);
+
+ if ($tabEl && $tabEl.length) {
+ $tabEl.off('tab:show', updateSwiper);
+ }
+ });
+
+ if (isTabs) {
+ swiper.on('slideChange', function () {
+ if (isRoutableTabs) {
+ var view = app.views.get($swiperEl.parents('.view'));
+ if (!view) view = app.views.main;
+ var router = view.router;
+ var tabRouteUrl = router.findTabRouteUrl(swiper.slides.eq(swiper.activeIndex)[0]);
+
+ if (tabRouteUrl) {
+ setTimeout(function () {
+ router.navigate(tabRouteUrl);
+ }, 0);
+ }
+ } else {
+ app.tab.show({
+ tabEl: swiper.slides.eq(swiper.activeIndex)
+ });
+ }
+ });
+ }
+}
+
+var _default = {
+ name: 'swiper',
+ static: {
+ Swiper: _bundle.default
+ },
+ create: function create() {
+ var app = this;
+ app.swiper = (0, _constructorMethods.default)({
+ defaultSelector: '.swiper-container',
+ constructor: _bundle.default,
+ domProp: 'swiper'
+ });
+ },
+ on: {
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
+ app.swiper.destroy(swiperEl);
+ });
+ },
+ pageMounted: function pageMounted(page) {
+ var app = this;
+ page.$el.find('.tabs-swipeable-wrap').each(function (swiperEl) {
+ initSwiper.call(app, swiperEl);
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
+ initSwiper.call(app, swiperEl);
+ });
+ },
+ pageReinit: function pageReinit(page) {
+ var app = this;
+ page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
+ var swiper = app.swiper.get(swiperEl);
+ if (swiper && swiper.update) swiper.update();
+ });
+ },
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
+ initSwiper.call(app, swiperEl);
+ });
+ },
+ tabShow: function tabShow(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
+ var swiper = app.swiper.get(swiperEl);
+ if (swiper && swiper.update) swiper.update();
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
+ app.swiper.destroy(swiperEl);
+ });
+ }
+ },
+ vnode: {
+ 'swiper-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var swiperEl = vnode.elm;
+ initSwiper.call(app, swiperEl);
+ },
+ destroy: function destroy(vnode) {
+ var app = this;
+ var swiperEl = vnode.elm;
+ app.swiper.destroy(swiperEl);
+ }
+ },
+ 'tabs-swipeable-wrap': {
+ insert: function insert(vnode) {
+ var app = this;
+ var swiperEl = vnode.elm;
+ initSwiper.call(app, swiperEl);
+ },
+ destroy: function destroy(vnode) {
+ var app = this;
+ var swiperEl = vnode.elm;
+ app.swiper.destroy(swiperEl);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/tabs/tabs.js b/www/assets/framework7/cjs/components/tabs/tabs.js
new file mode 100644
index 000000000..bde47cc12
--- /dev/null
+++ b/www/assets/framework7/cjs/components/tabs/tabs.js
@@ -0,0 +1,295 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Tab = {
+ show: function show() {
+ var app = this;
+ var tabEl;
+ var tabLinkEl;
+ var animate;
+ var tabRoute;
+ var animatedInit;
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ if (args.length === 1 && args[0] && args[0].constructor === Object) {
+ tabEl = args[0].tabEl;
+ tabLinkEl = args[0].tabLinkEl;
+ animate = args[0].animate;
+ tabRoute = args[0].tabRoute;
+ animatedInit = args[0].animatedInit;
+ } else {
+ tabEl = args[0];
+ tabLinkEl = args[1];
+ animate = args[2];
+ tabRoute = args[3];
+
+ if (typeof args[1] === 'boolean') {
+ tabEl = args[0];
+ animate = args[1];
+ tabLinkEl = args[2];
+ tabRoute = args[3];
+
+ if (args.length > 2 && tabLinkEl.constructor === Object) {
+ tabEl = args[0];
+ animate = args[1];
+ tabRoute = args[2];
+ tabLinkEl = args[3];
+ }
+ }
+ }
+
+ if (typeof animate === 'undefined') animate = true;
+ var $newTabEl = (0, _dom.default)(tabEl);
+
+ if (tabRoute && $newTabEl[0]) {
+ $newTabEl[0].f7TabRoute = tabRoute;
+ }
+
+ if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {
+ return {
+ $newTabEl: $newTabEl,
+ newTabEl: $newTabEl[0]
+ };
+ }
+
+ var $tabLinkEl;
+ if (tabLinkEl) $tabLinkEl = (0, _dom.default)(tabLinkEl);
+ var $tabsEl = $newTabEl.parent('.tabs');
+
+ if ($tabsEl.length === 0) {
+ return {
+ $newTabEl: $newTabEl,
+ newTabEl: $newTabEl[0]
+ };
+ } // Release swipeouts in hidden tabs
+
+
+ if (app.swipeout) app.swipeout.allowOpen = true; // Animated tabs
+
+ var tabsChangedCallbacks = [];
+
+ function onTabsChanged(callback) {
+ tabsChangedCallbacks.push(callback);
+ }
+
+ function tabsChanged() {
+ tabsChangedCallbacks.forEach(function (callback) {
+ callback();
+ });
+ }
+
+ var animated = false;
+
+ if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {
+ $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');
+ var transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));
+
+ if (animate && transitionDuration) {
+ $tabsEl.transitionEnd(tabsChanged);
+ animated = true;
+ }
+
+ var tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;
+ $tabsEl.transform("translate3d(" + tabsTranslate + "%,0,0)");
+ } // Swipeable tabs
+
+
+ var swiper;
+
+ if ($tabsEl.parent().hasClass('tabs-swipeable-wrap') && app.swiper) {
+ swiper = $tabsEl.parent()[0].swiper;
+
+ if (swiper && swiper.activeIndex !== $newTabEl.index()) {
+ animated = true;
+ swiper.once('slideChangeTransitionEnd', function () {
+ tabsChanged();
+ }).slideTo($newTabEl.index(), animate ? undefined : 0);
+ } else if (swiper && swiper.animating) {
+ animated = true;
+ swiper.once('slideChangeTransitionEnd', function () {
+ tabsChanged();
+ });
+ }
+ } // Remove active class from old tabs
+
+
+ var $oldTabEl = $tabsEl.children('.tab-active');
+ $oldTabEl.removeClass('tab-active');
+
+ if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {
+ if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {
+ $oldTabEl.children('.page').each(function (pageEl) {
+ (0, _dom.default)(pageEl).trigger('page:tabhide');
+ app.emit('pageTabHide', pageEl);
+ });
+ }
+
+ $oldTabEl.trigger('tab:hide');
+ app.emit('tabHide', $oldTabEl[0]);
+ } // Trigger 'show' event on new tab
+
+
+ $newTabEl.addClass('tab-active');
+
+ if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {
+ if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {
+ $newTabEl.children('.page').each(function (pageEl) {
+ (0, _dom.default)(pageEl).trigger('page:tabshow');
+ app.emit('pageTabShow', pageEl);
+ });
+ }
+
+ $newTabEl.trigger('tab:show');
+ app.emit('tabShow', $newTabEl[0]);
+ } // Find related link for new tab
+
+
+ if (!$tabLinkEl) {
+ // Search by id
+ if (typeof tabEl === 'string') $tabLinkEl = (0, _dom.default)(".tab-link[href=\"" + tabEl + "\"]");else $tabLinkEl = (0, _dom.default)(".tab-link[href=\"#" + $newTabEl.attr('id') + "\"]"); // Search by data-tab
+
+ if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {
+ (0, _dom.default)('[data-tab]').each(function (el) {
+ if ($newTabEl.is((0, _dom.default)(el).attr('data-tab'))) $tabLinkEl = (0, _dom.default)(el);
+ });
+ }
+
+ if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {
+ $tabLinkEl = (0, _dom.default)("[data-route-tab-id=\"" + tabRoute.route.tab.id + "\"]");
+
+ if ($tabLinkEl.length === 0) {
+ $tabLinkEl = (0, _dom.default)(".tab-link[href=\"" + tabRoute.url + "\"]");
+ }
+ }
+
+ if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {
+ // eslint-disable-next-line
+ $tabLinkEl = $tabLinkEl.filter(function (tabLinkElement) {
+ return (0, _dom.default)(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];
+ });
+
+ if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {
+ var $pageEl = $newTabEl.parents('.page');
+ var $navbarEl = (0, _dom.default)(app.navbar.getElByPage($pageEl));
+ $tabLinkEl = $navbarEl.find("[data-route-tab-id=\"" + tabRoute.route.tab.id + "\"]");
+
+ if ($tabLinkEl.length === 0) {
+ $tabLinkEl = $navbarEl.find(".tab-link[href=\"" + tabRoute.url + "\"]");
+ }
+ }
+ }
+ }
+
+ if ($tabLinkEl.length > 0) {
+ // Find related link for old tab
+ var $oldTabLinkEl;
+
+ if ($oldTabEl && $oldTabEl.length > 0) {
+ // Search by id
+ var oldTabId = $oldTabEl.attr('id');
+
+ if (oldTabId) {
+ $oldTabLinkEl = (0, _dom.default)(".tab-link[href=\"#" + oldTabId + "\"]"); // Search by data-route-tab-id
+
+ if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {
+ $oldTabLinkEl = (0, _dom.default)(".tab-link[data-route-tab-id=\"" + oldTabId + "\"]");
+ }
+ } // Search by data-tab
+
+
+ if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {
+ (0, _dom.default)('[data-tab]').each(function (tabLinkElement) {
+ if ($oldTabEl.is((0, _dom.default)(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = (0, _dom.default)(tabLinkElement);
+ });
+ }
+
+ if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {
+ $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');
+ }
+ } else if (tabRoute) {
+ $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');
+ }
+
+ if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {
+ // eslint-disable-next-line
+ $oldTabLinkEl = $oldTabLinkEl.filter(function (tabLinkElement) {
+ return (0, _dom.default)(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];
+ });
+ }
+
+ if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active'); // Update links' classes
+
+ if ($tabLinkEl && $tabLinkEl.length > 0) {
+ $tabLinkEl.addClass('tab-link-active'); // Material Highlight
+
+ var $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-labels');
+ var hasHighlight = app.toolbar && $tabbarEl.length > 0 && ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');
+
+ if (hasHighlight) {
+ app.toolbar.setHighlight($tabbarEl);
+ }
+ }
+ }
+
+ return {
+ $newTabEl: $newTabEl,
+ newTabEl: $newTabEl[0],
+ $oldTabEl: $oldTabEl,
+ oldTabEl: $oldTabEl[0],
+ onTabsChanged: onTabsChanged,
+ animated: animated
+ };
+ }
+};
+var _default = {
+ name: 'tabs',
+ create: function create() {
+ var app = this;
+ (0, _utils.extend)(app, {
+ tab: {
+ show: Tab.show.bind(app)
+ }
+ });
+ },
+ on: {
+ 'pageInit tabMounted': function onInit(pageOrTabEl) {
+ var $el = (0, _dom.default)(pageOrTabEl.el || pageOrTabEl);
+ var animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];
+ if (!animatedTabEl) return;
+ var app = this;
+ app.tab.show({
+ tabEl: animatedTabEl,
+ animatedInit: true,
+ animate: false
+ });
+ }
+ },
+ clicks: {
+ '.tab-link': function tabLinkClick($clickedEl, data) {
+ if (data === void 0) {
+ data = {};
+ }
+
+ if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {
+ var app = this;
+ app.tab.show({
+ tabEl: data.tab || $clickedEl.attr('href'),
+ tabLinkEl: $clickedEl,
+ animate: data.animate
+ });
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/text-editor/text-editor-class.js b/www/assets/framework7/cjs/components/text-editor/text-editor-class.js
new file mode 100644
index 000000000..8223648df
--- /dev/null
+++ b/www/assets/framework7/cjs/components/text-editor/text-editor-class.js
@@ -0,0 +1,627 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getDevice = require("../../shared/get-device");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var textEditorButtonsMap = {
+ // f7-icon, material-icon, command
+ bold: ['bold', 'format_bold', 'bold'],
+ italic: ['italic', 'format_italic', 'italic'],
+ underline: ['underline', 'format_underlined', 'underline'],
+ strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],
+ orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],
+ unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],
+ link: ['link', 'link', 'createLink'],
+ image: ['photo', 'image', 'insertImage'],
+ paragraph: ['paragraph', '¶', 'formatBlock.P'],
+ h1: ['H1', 'H1', 'formatBlock.H1'],
+ h2: ['H2', 'H2', 'formatBlock.H2'],
+ h3: ['H3', 'H3', 'formatBlock.H3'],
+ alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],
+ alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],
+ alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],
+ alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],
+ subscript: ['textformat_subscript', 'A1', 'subscript'],
+ superscript: ['textformat_superscript', 'A1', 'superscript'],
+ indent: ['increase_indent', 'format_indent_increase', 'indent'],
+ outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']
+};
+
+var TextEditor = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(TextEditor, _Framework7Class);
+
+ function TextEditor(app, params) {
+ var _this;
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var self = _assertThisInitialized(_this);
+
+ var document = (0, _ssrWindow.getDocument)();
+ var device = (0, _getDevice.getDevice)();
+ var defaults = (0, _utils.extend)({}, app.params.textEditor); // Extend defaults with modules params
+
+ self.useModulesParams(defaults);
+ self.params = (0, _utils.extend)(defaults, params);
+ var el = self.params.el;
+ if (!el) return self || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return self || _assertThisInitialized(_this);
+ if ($el[0].f7TextEditor) return $el[0].f7TextEditor || _assertThisInitialized(_this);
+ var $contentEl = $el.children('.text-editor-content');
+
+ if (!$contentEl.length) {
+ $el.append('');
+ $contentEl = $el.children('.text-editor-content');
+ }
+
+ (0, _utils.extend)(self, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $contentEl: $contentEl,
+ contentEl: $contentEl[0]
+ });
+
+ if ('value' in params) {
+ self.value = self.params.value;
+ }
+
+ if (self.params.mode === 'keyboard-toolbar') {
+ if (!(device.cordova || device.capacitor) && !device.android) {
+ self.params.mode = 'popover';
+ }
+ }
+
+ if (typeof self.params.buttons === 'string') {
+ try {
+ self.params.buttons = JSON.parse(self.params.buttons);
+ } catch (err) {
+ throw new Error('Framework7: TextEditor: wrong "buttons" parameter format');
+ }
+ }
+
+ $el[0].f7TextEditor = self; // Bind
+
+ self.onButtonClick = self.onButtonClick.bind(self);
+ self.onFocus = self.onFocus.bind(self);
+ self.onBlur = self.onBlur.bind(self);
+ self.onInput = self.onInput.bind(self);
+ self.onPaste = self.onPaste.bind(self);
+ self.onSelectionChange = self.onSelectionChange.bind(self);
+ self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self); // Handle Events
+
+ self.attachEvents = function attachEvents() {
+ if (self.params.mode === 'toolbar') {
+ self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);
+ }
+
+ if (self.params.mode === 'keyboard-toolbar') {
+ self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);
+ self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);
+ }
+
+ if (self.params.mode === 'popover' && self.popover) {
+ self.popover.$el.on('click', 'button', self.onButtonClick);
+ }
+
+ self.$contentEl.on('paste', self.onPaste);
+ self.$contentEl.on('focus', self.onFocus);
+ self.$contentEl.on('blur', self.onBlur);
+ self.$contentEl.on('input', self.onInput, true);
+ (0, _dom.default)(document).on('selectionchange', self.onSelectionChange);
+ };
+
+ self.detachEvents = function detachEvents() {
+ if (self.params.mode === 'toolbar') {
+ self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);
+ }
+
+ if (self.params.mode === 'keyboard-toolbar') {
+ self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);
+ self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);
+ }
+
+ if (self.params.mode === 'popover' && self.popover) {
+ self.popover.$el.off('click', 'button', self.onButtonClick);
+ }
+
+ self.$contentEl.off('paste', self.onPaste);
+ self.$contentEl.off('focus', self.onFocus);
+ self.$contentEl.off('blur', self.onBlur);
+ self.$contentEl.off('input', self.onInput, true);
+ (0, _dom.default)(document).off('selectionchange', self.onSelectionChange);
+ }; // Install Modules
+
+
+ self.useModules(); // Init
+
+ self.init();
+ return self || _assertThisInitialized(_this);
+ }
+
+ var _proto = TextEditor.prototype;
+
+ _proto.setValue = function setValue(newValue) {
+ var self = this;
+ var currentValue = self.value;
+ if (currentValue === newValue) return self;
+ self.value = newValue;
+ self.$contentEl.html(newValue);
+ self.$el.trigger('texteditor:change', self.value);
+ self.emit('local::change textEditorChange', self, self.value);
+ return self;
+ };
+
+ _proto.getValue = function getValue() {
+ var self = this;
+ return self.value;
+ };
+
+ _proto.clearValue = function clearValue() {
+ var self = this;
+ self.setValue('');
+
+ if (self.params.placeholder && !self.$contentEl.html()) {
+ self.insertPlaceholder();
+ }
+
+ return self;
+ };
+
+ _proto.createLink = function createLink() {
+ var self = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var currentSelection = window.getSelection();
+ var selectedNodes = [];
+ var $selectedLinks;
+
+ if (currentSelection && currentSelection.anchorNode && (0, _dom.default)(currentSelection.anchorNode).parents(self.$el).length) {
+ var anchorNode = currentSelection.anchorNode;
+
+ while (anchorNode) {
+ selectedNodes.push(anchorNode);
+
+ if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {
+ anchorNode = null;
+ }
+
+ if (anchorNode) {
+ anchorNode = anchorNode.nextSibling;
+ }
+ }
+
+ var selectedNodesLinks = [];
+ var $selectedNodes = (0, _dom.default)(selectedNodes);
+
+ for (var i = 0; i < $selectedNodes.length; i += 1) {
+ var childNodes = $selectedNodes[i].children;
+
+ if (childNodes) {
+ for (var j = 0; j < childNodes.length; j += 1) {
+ if ((0, _dom.default)(childNodes[j]).is('a')) {
+ selectedNodesLinks.push(childNodes[j]);
+ }
+ }
+ }
+ }
+
+ $selectedLinks = $selectedNodes.closest('a').add((0, _dom.default)(selectedNodesLinks));
+ }
+
+ if ($selectedLinks && $selectedLinks.length) {
+ $selectedLinks.each(function (linkNode) {
+ var selection = window.getSelection();
+ var range = document.createRange();
+ range.selectNodeContents(linkNode);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('unlink', false);
+ selection.removeAllRanges();
+ });
+ return self;
+ }
+
+ var currentRange = self.getSelectionRange();
+ if (!currentRange) return self;
+ var dialog = self.app.dialog.prompt(self.params.linkUrlText, '', function (link) {
+ if (link && link.trim().length) {
+ self.setSelectionRange(currentRange);
+ document.execCommand('createLink', false, link.trim());
+ self.$el.trigger('texteditor:insertlink', {
+ url: link.trim()
+ });
+ self.emit('local:insertLink textEditorInsertLink', self, link.trim());
+ }
+ });
+ dialog.$el.find('input').focus();
+ return self;
+ };
+
+ _proto.insertImage = function insertImage() {
+ var self = this;
+ var document = (0, _ssrWindow.getDocument)();
+ var currentRange = self.getSelectionRange();
+ if (!currentRange) return self;
+ var dialog = self.app.dialog.prompt(self.params.imageUrlText, '', function (imageUrl) {
+ if (imageUrl && imageUrl.trim().length) {
+ self.setSelectionRange(currentRange);
+ document.execCommand('insertImage', false, imageUrl.trim());
+ self.$el.trigger('texteditor:insertimage', {
+ url: imageUrl.trim()
+ });
+ self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());
+ }
+ });
+ dialog.$el.find('input').focus();
+ return self;
+ };
+
+ _proto.removePlaceholder = function removePlaceholder() {
+ var self = this;
+ self.$contentEl.find('.text-editor-placeholder').remove();
+ };
+
+ _proto.insertPlaceholder = function insertPlaceholder() {
+ var self = this;
+ self.$contentEl.append("" + self.params.placeholder + "
");
+ };
+
+ _proto.onSelectionChange = function onSelectionChange() {
+ var self = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ if (self.params.mode === 'toolbar') return;
+ var selection = window.getSelection();
+ var selectionIsInContent = (0, _dom.default)(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;
+
+ if (self.params.mode === 'keyboard-toolbar') {
+ if (!selectionIsInContent) {
+ self.closeKeyboardToolbar();
+ } else {
+ self.openKeyboardToolbar();
+ }
+
+ return;
+ }
+
+ if (self.params.mode === 'popover') {
+ var selectionIsInPopover = (0, _dom.default)(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;
+
+ if (!selectionIsInContent && !selectionIsInPopover) {
+ self.closePopover();
+ return;
+ }
+
+ if (!selection.isCollapsed && selection.rangeCount) {
+ var range = selection.getRangeAt(0);
+ var rect = range.getBoundingClientRect();
+ var rootEl = self.app.$el[0] || document.body;
+ self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);
+ } else if (selection.isCollapsed) {
+ self.closePopover();
+ }
+ }
+ };
+
+ _proto.onPaste = function onPaste(e) {
+ var self = this;
+ var document = (0, _ssrWindow.getDocument)();
+
+ if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {
+ var text = e.clipboardData.getData('text/plain');
+ e.preventDefault();
+ document.execCommand('insertText', false, text);
+ }
+ };
+
+ _proto.onInput = function onInput() {
+ var self = this;
+ var value = self.$contentEl.html();
+ self.value = value;
+ self.$el.trigger('texteditor:input');
+ self.emit('local:input textEditorInput', self, self.value);
+ self.$el.trigger('texteditor:change', self.value);
+ self.emit('local::change textEditorChange', self, self.value);
+ };
+
+ _proto.onFocus = function onFocus() {
+ var self = this;
+ self.removePlaceholder();
+ self.$contentEl.focus();
+ self.$el.trigger('texteditor:focus');
+ self.emit('local::focus textEditorFocus', self);
+ };
+
+ _proto.onBlur = function onBlur() {
+ var self = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+
+ if (self.params.placeholder && self.$contentEl.html() === '') {
+ self.insertPlaceholder();
+ }
+
+ if (self.params.mode === 'popover') {
+ var selection = window.getSelection();
+ var selectionIsInContent = (0, _dom.default)(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;
+ var inPopover = document.activeElement && self.popover && (0, _dom.default)(document.activeElement).closest(self.popover.$el).length;
+
+ if (!inPopover && !selectionIsInContent) {
+ self.closePopover();
+ }
+ }
+
+ if (self.params.mode === 'keyboard-toolbar') {
+ var _selection = window.getSelection();
+
+ var _selectionIsInContent = (0, _dom.default)(_selection.anchorNode).parents(self.contentEl).length || _selection.anchorNode === self.contentEl;
+
+ if (!_selectionIsInContent) {
+ self.closeKeyboardToolbar();
+ }
+ }
+
+ self.$el.trigger('texteditor:blur');
+ self.emit('local::blur textEditorBlur', self);
+ };
+
+ _proto.onButtonClick = function onButtonClick(e) {
+ var self = this;
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var selection = window.getSelection();
+ var selectionIsInContent = (0, _dom.default)(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;
+ if (!selectionIsInContent) return;
+ var $buttonEl = (0, _dom.default)(e.target).closest('button');
+
+ if ($buttonEl.parents('form').length) {
+ e.preventDefault();
+ }
+
+ var button = $buttonEl.attr('data-button');
+ var buttonData = self.params.customButtons && self.params.customButtons[button];
+ if (!button || !(textEditorButtonsMap[button] || buttonData)) return;
+ $buttonEl.trigger('texteditor:buttonclick', button);
+ self.emit('local::buttonClick textEditorButtonClick', self, button);
+
+ if (buttonData) {
+ if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);
+ return;
+ }
+
+ var command = textEditorButtonsMap[button][2];
+
+ if (command === 'createLink') {
+ self.createLink();
+ return;
+ }
+
+ if (command === 'insertImage') {
+ self.insertImage();
+ return;
+ }
+
+ if (command.indexOf('formatBlock') === 0) {
+ var tagName = command.split('.')[1];
+ var $anchorNode = (0, _dom.default)(selection.anchorNode);
+
+ if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {
+ document.execCommand('formatBlock', false, 'div');
+ } else {
+ document.execCommand('formatBlock', false, tagName);
+ }
+
+ return;
+ }
+
+ document.execCommand(command, false);
+ } // eslint-disable-next-line
+ ;
+
+ _proto.getSelectionRange = function getSelectionRange() {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+
+ if (window.getSelection) {
+ var sel = window.getSelection();
+
+ if (sel.getRangeAt && sel.rangeCount) {
+ return sel.getRangeAt(0);
+ }
+ } else if (document.selection && document.selection.createRange) {
+ return document.selection.createRange();
+ }
+
+ return null;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.setSelectionRange = function setSelectionRange(range) {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+
+ if (range) {
+ if (window.getSelection) {
+ var sel = window.getSelection();
+ sel.removeAllRanges();
+ sel.addRange(range);
+ } else if (document.selection && range.select) {
+ range.select();
+ }
+ }
+ };
+
+ _proto.renderButtons = function renderButtons() {
+ var self = this;
+ var html = '';
+
+ function renderButton(button) {
+ var iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';
+
+ if (self.params.customButtons && self.params.customButtons[button]) {
+ var buttonData = self.params.customButtons[button];
+ return "";
+ }
+
+ if (!textEditorButtonsMap[button]) return '';
+ var iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];
+ return ("").trim();
+ }
+
+ self.params.buttons.forEach(function (button, buttonIndex) {
+ if (Array.isArray(button)) {
+ button.forEach(function (b) {
+ html += renderButton(b);
+ });
+
+ if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {
+ html += '';
+ }
+ } else {
+ html += renderButton(button);
+ }
+ });
+ return html;
+ };
+
+ _proto.createToolbar = function createToolbar() {
+ var self = this;
+ self.$el.prepend("" + self.renderButtons() + "
");
+ };
+
+ _proto.createKeyboardToolbar = function createKeyboardToolbar() {
+ var self = this;
+ self.$keyboardToolbarEl = (0, _dom.default)("");
+ };
+
+ _proto.createPopover = function createPopover() {
+ var self = this;
+ self.popover = self.app.popover.create({
+ content: "\n \n
" + self.renderButtons() + "
\n
\n ",
+ closeByOutsideClick: false,
+ backdrop: false
+ });
+ };
+
+ _proto.openKeyboardToolbar = function openKeyboardToolbar() {
+ var self = this;
+ if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;
+ self.$el.trigger('texteditor:keyboardopen');
+ self.emit('local::keyboardOpen textEditorKeyboardOpen', self);
+ self.app.$el.append(self.$keyboardToolbarEl);
+ };
+
+ _proto.closeKeyboardToolbar = function closeKeyboardToolbar() {
+ var self = this;
+ self.$keyboardToolbarEl.remove();
+ self.$el.trigger('texteditor:keyboardclose');
+ self.emit('local::keyboardClose textEditorKeyboardClose', self);
+ };
+
+ _proto.openPopover = function openPopover(targetX, targetY, targetWidth, targetHeight) {
+ var self = this;
+ if (!self.popover) return;
+ Object.assign(self.popover.params, {
+ targetX: targetX,
+ targetY: targetY,
+ targetWidth: targetWidth,
+ targetHeight: targetHeight
+ });
+ clearTimeout(self.popoverTimeout);
+ self.popoverTimeout = setTimeout(function () {
+ if (!self.popover) return;
+
+ if (self.popover.opened) {
+ self.popover.resize();
+ } else {
+ self.$el.trigger('texteditor:popoveropen');
+ self.emit('local::popoverOpen textEditorPopoverOpen', self);
+ self.popover.open();
+ }
+ }, 400);
+ };
+
+ _proto.closePopover = function closePopover() {
+ var self = this;
+ clearTimeout(self.popoverTimeout);
+ if (!self.popover || !self.popover.opened) return;
+ self.popoverTimeout = setTimeout(function () {
+ if (!self.popover) return;
+ self.$el.trigger('texteditor:popoverclose');
+ self.emit('local::popoverClose textEditorPopoverClose', self);
+ self.popover.close();
+ }, 400);
+ };
+
+ _proto.init = function init() {
+ var self = this;
+
+ if (self.value) {
+ self.$contentEl.html(self.value);
+ } else {
+ self.value = self.$contentEl.html();
+ }
+
+ if (self.params.placeholder && self.value === '') {
+ self.insertPlaceholder();
+ }
+
+ if (self.params.mode === 'toolbar') {
+ self.createToolbar();
+ } else if (self.params.mode === 'popover') {
+ self.createPopover();
+ } else if (self.params.mode === 'keyboard-toolbar') {
+ self.createKeyboardToolbar();
+ }
+
+ self.attachEvents();
+ self.$el.trigger('texteditor:init');
+ self.emit('local::init textEditorInit', self);
+ return self;
+ };
+
+ _proto.destroy = function destroy() {
+ var self = this;
+ self.$el.trigger('texteditor:beforedestroy');
+ self.emit('local::beforeDestroy textEditorBeforeDestroy', self);
+ self.detachEvents();
+
+ if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {
+ self.$keyboardToolbarEl.remove();
+ }
+
+ if (self.popover) {
+ self.popover.close(false);
+ self.popover.destroy();
+ }
+
+ delete self.$el[0].f7TextEditor;
+ (0, _utils.deleteProps)(self);
+ self = null;
+ };
+
+ return TextEditor;
+}(_class.default);
+
+var _default = TextEditor;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/text-editor/text-editor.js b/www/assets/framework7/cjs/components/text-editor/text-editor.js
new file mode 100644
index 000000000..a765e3961
--- /dev/null
+++ b/www/assets/framework7/cjs/components/text-editor/text-editor.js
@@ -0,0 +1,93 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _textEditorClass = _interopRequireDefault(require("./text-editor-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'textEditor',
+ params: {
+ textEditor: {
+ el: null,
+ mode: 'toolbar',
+ // or 'popover'
+ value: undefined,
+ // will use html content
+ customButtons: null,
+ buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],
+ dividers: true,
+ imageUrlText: 'Insert image URL',
+ linkUrlText: 'Insert link URL',
+ placeholder: null,
+ clearFormattingOnPaste: true
+ }
+ },
+ create: function create() {
+ var app = this;
+ app.textEditor = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: '.text-editor',
+ constructor: _textEditorClass.default,
+ app: app,
+ domProp: 'f7TextEditor'
+ }));
+ },
+ static: {
+ TextEditor: _textEditorClass.default
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.text-editor-init').each(function (editorEl) {
+ var dataset = (0, _dom.default)(editorEl).dataset();
+ app.textEditor.create((0, _utils.extend)({
+ el: editorEl
+ }, dataset || {}));
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.text-editor-init').each(function (editorEl) {
+ if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.text-editor-init').each(function (editorEl) {
+ var dataset = (0, _dom.default)(editorEl).dataset();
+ app.textEditor.create((0, _utils.extend)({
+ el: editorEl
+ }, dataset || {}));
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.text-editor-init').each(function (editorEl) {
+ if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'text-editor-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var editorEl = vnode.elm;
+ var dataset = (0, _dom.default)(editorEl).dataset();
+ app.textEditor.create((0, _utils.extend)({
+ el: editorEl
+ }, dataset || {}));
+ },
+ destroy: function destroy(vnode) {
+ var editorEl = vnode.elm;
+ if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/timeline/timeline.js b/www/assets/framework7/cjs/components/timeline/timeline.js
new file mode 100644
index 000000000..fd80d91e2
--- /dev/null
+++ b/www/assets/framework7/cjs/components/timeline/timeline.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'timeline'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/toast/toast-class.js b/www/assets/framework7/cjs/components/toast/toast-class.js
new file mode 100644
index 000000000..aed8bcf99
--- /dev/null
+++ b/www/assets/framework7/cjs/components/toast/toast-class.js
@@ -0,0 +1,142 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _modalClass = _interopRequireDefault(require("../modal/modal-class"));
+
+var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Toast = /*#__PURE__*/function (_Modal) {
+ _inheritsLoose(Toast, _Modal);
+
+ function Toast(app, params) {
+ var _this;
+
+ var extendedParams = (0, _utils.extend)({
+ on: {}
+ }, app.params.toast, params); // Extends with open/close Modal methods;
+
+ _this = _Modal.call(this, app, extendedParams) || this;
+
+ var toast = _assertThisInitialized(_this);
+
+ var window = (0, _ssrWindow.getWindow)();
+ toast.app = app;
+ toast.params = extendedParams;
+ var _toast$params = toast.params,
+ closeButton = _toast$params.closeButton,
+ closeTimeout = _toast$params.closeTimeout;
+ var $el;
+
+ if (!toast.params.el) {
+ // Find Element
+ var toastHtml = toast.render();
+ $el = (0, _dom.default)(toastHtml);
+ } else {
+ $el = (0, _dom.default)(toast.params.el);
+ }
+
+ if ($el && $el.length > 0 && $el[0].f7Modal) {
+ return $el[0].f7Modal || _assertThisInitialized(_this);
+ }
+
+ if ($el.length === 0) {
+ return toast.destroy() || _assertThisInitialized(_this);
+ }
+
+ (0, _utils.extend)(toast, {
+ $el: $el,
+ el: $el[0],
+ type: 'toast'
+ });
+ $el[0].f7Modal = toast;
+
+ if (closeButton) {
+ $el.find('.toast-button').on('click', function () {
+ toast.emit('local::closeButtonClick toastCloseButtonClick', toast);
+ toast.close();
+ });
+ toast.on('beforeDestroy', function () {
+ $el.find('.toast-button').off('click');
+ });
+ }
+
+ var timeoutId;
+ toast.on('open', function () {
+ (0, _dom.default)('.toast.modal-in').each(function (openedEl) {
+ var toastInstance = app.toast.get(openedEl);
+
+ if (openedEl !== toast.el && toastInstance) {
+ toastInstance.close();
+ }
+ });
+
+ if (closeTimeout) {
+ timeoutId = (0, _utils.nextTick)(function () {
+ toast.close();
+ }, closeTimeout);
+ }
+ });
+ toast.on('close', function () {
+ window.clearTimeout(timeoutId);
+ });
+
+ if (toast.params.destroyOnClose) {
+ toast.once('closed', function () {
+ setTimeout(function () {
+ toast.destroy();
+ }, 0);
+ });
+ }
+
+ return toast || _assertThisInitialized(_this);
+ }
+
+ var _proto = Toast.prototype;
+
+ _proto.render = function render() {
+ var toast = this;
+ if (toast.params.render) return toast.params.render.call(toast, toast);
+ var _toast$params2 = toast.params,
+ position = _toast$params2.position,
+ horizontalPosition = _toast$params2.horizontalPosition,
+ cssClass = _toast$params2.cssClass,
+ icon = _toast$params2.icon,
+ text = _toast$params2.text,
+ closeButton = _toast$params2.closeButton,
+ closeButtonColor = _toast$params2.closeButtonColor,
+ closeButtonText = _toast$params2.closeButtonText;
+ var horizontalClass = position === 'top' || position === 'bottom' ? "toast-horizontal-" + horizontalPosition : '';
+ return (0, _$jsx.default)("div", {
+ class: "toast toast-" + position + " " + horizontalClass + " " + (cssClass || '') + " " + (icon ? 'toast-with-icon' : '')
+ }, (0, _$jsx.default)("div", {
+ class: "toast-content"
+ }, icon && (0, _$jsx.default)("div", {
+ class: "toast-icon"
+ }, icon), (0, _$jsx.default)("div", {
+ class: "toast-text"
+ }, text), closeButton && !icon && (0, _$jsx.default)("a", {
+ class: "toast-button button " + (closeButtonColor ? "color-" + closeButtonColor : '')
+ }, closeButtonText)));
+ };
+
+ return Toast;
+}(_modalClass.default);
+
+var _default = Toast;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/toast/toast.js b/www/assets/framework7/cjs/components/toast/toast.js
new file mode 100644
index 000000000..4a65bd525
--- /dev/null
+++ b/www/assets/framework7/cjs/components/toast/toast.js
@@ -0,0 +1,51 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _toastClass = _interopRequireDefault(require("./toast-class"));
+
+var _modalMethods = _interopRequireDefault(require("../../shared/modal-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'toast',
+ static: {
+ Toast: _toastClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.toast = (0, _utils.extend)({}, (0, _modalMethods.default)({
+ app: app,
+ constructor: _toastClass.default,
+ defaultSelector: '.toast.modal-in'
+ }), {
+ // Shortcuts
+ show: function show(params) {
+ (0, _utils.extend)(params, {
+ destroyOnClose: true
+ });
+ return new _toastClass.default(app, params).open();
+ }
+ });
+ },
+ params: {
+ toast: {
+ icon: null,
+ text: null,
+ position: 'bottom',
+ horizontalPosition: 'left',
+ closeButton: false,
+ closeButtonColor: null,
+ closeButtonText: 'Ok',
+ closeTimeout: null,
+ cssClass: null,
+ render: null,
+ containerEl: null
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/toggle/toggle-class.js b/www/assets/framework7/cjs/components/toggle/toggle-class.js
new file mode 100644
index 000000000..482e3a432
--- /dev/null
+++ b/www/assets/framework7/cjs/components/toggle/toggle-class.js
@@ -0,0 +1,213 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Toggle = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Toggle, _Framework7Class);
+
+ function Toggle(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var toggle = _assertThisInitialized(_this);
+
+ var support = (0, _getSupport.getSupport)();
+ var defaults = {}; // Extend defaults with modules params
+
+ toggle.useModulesParams(defaults);
+ toggle.params = (0, _utils.extend)(defaults, params);
+ var el = toggle.params.el;
+ if (!el) return toggle || _assertThisInitialized(_this);
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return toggle || _assertThisInitialized(_this);
+ if ($el[0].f7Toggle) return $el[0].f7Toggle || _assertThisInitialized(_this);
+ var $inputEl = $el.children('input[type="checkbox"]');
+ (0, _utils.extend)(toggle, {
+ app: app,
+ $el: $el,
+ el: $el[0],
+ $inputEl: $inputEl,
+ inputEl: $inputEl[0],
+ disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled
+ });
+ Object.defineProperty(toggle, 'checked', {
+ enumerable: true,
+ configurable: true,
+ set: function set(checked) {
+ if (!toggle || typeof toggle.$inputEl === 'undefined') return;
+ if (toggle.checked === checked) return;
+ $inputEl[0].checked = checked;
+ toggle.$inputEl.trigger('change');
+ },
+ get: function get() {
+ return $inputEl[0].checked;
+ }
+ });
+ $el[0].f7Toggle = toggle;
+ var isTouched;
+ var touchesStart = {};
+ var isScrolling;
+ var touchesDiff;
+ var toggleWidth;
+ var touchStartTime;
+ var touchStartChecked;
+
+ function handleTouchStart(e) {
+ if (isTouched || toggle.disabled) return;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchesDiff = 0;
+ isTouched = true;
+ isScrolling = undefined;
+ touchStartTime = (0, _utils.now)();
+ touchStartChecked = toggle.checked;
+ toggleWidth = $el[0].offsetWidth;
+ (0, _utils.nextTick)(function () {
+ if (isTouched) {
+ $el.addClass('toggle-active-state');
+ }
+ });
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched || toggle.disabled) return;
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ var inverter = app.rtl ? -1 : 1;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
+ }
+
+ if (isScrolling) {
+ isTouched = false;
+ return;
+ }
+
+ e.preventDefault();
+ touchesDiff = pageX - touchesStart.x;
+ var changed;
+
+ if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {
+ changed = true;
+ }
+
+ if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {
+ changed = true;
+ }
+
+ if (changed) {
+ touchesStart.x = pageX;
+ toggle.checked = !touchStartChecked;
+ touchStartChecked = !touchStartChecked;
+ }
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched || toggle.disabled) {
+ if (isScrolling) $el.removeClass('toggle-active-state');
+ isTouched = false;
+ return;
+ }
+
+ var inverter = app.rtl ? -1 : 1;
+ isTouched = false;
+ $el.removeClass('toggle-active-state');
+ var changed;
+
+ if ((0, _utils.now)() - touchStartTime < 300) {
+ if (touchesDiff * inverter < 0 && touchStartChecked) {
+ changed = true;
+ }
+
+ if (touchesDiff * inverter > 0 && !touchStartChecked) {
+ changed = true;
+ }
+
+ if (changed) {
+ toggle.checked = !touchStartChecked;
+ }
+ }
+ }
+
+ function handleInputChange() {
+ toggle.$el.trigger('toggle:change');
+ toggle.emit('local::change toggleChange', toggle);
+ }
+
+ toggle.attachEvents = function attachEvents() {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ $el.on(app.touchEvents.start, handleTouchStart, passive);
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ toggle.$inputEl.on('change', handleInputChange);
+ };
+
+ toggle.detachEvents = function detachEvents() {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ $el.off(app.touchEvents.start, handleTouchStart, passive);
+ app.off('touchmove', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ toggle.$inputEl.off('change', handleInputChange);
+ }; // Install Modules
+
+
+ toggle.useModules(); // Init
+
+ toggle.init();
+ return _this;
+ }
+
+ var _proto = Toggle.prototype;
+
+ _proto.toggle = function toggle() {
+ var toggle = this;
+ toggle.checked = !toggle.checked;
+ };
+
+ _proto.init = function init() {
+ var toggle = this;
+ toggle.attachEvents();
+ };
+
+ _proto.destroy = function destroy() {
+ var toggle = this;
+ toggle.$el.trigger('toggle:beforedestroy');
+ toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);
+ delete toggle.$el[0].f7Toggle;
+ toggle.detachEvents();
+ (0, _utils.deleteProps)(toggle);
+ toggle = null;
+ };
+
+ return Toggle;
+}(_class.default);
+
+var _default = Toggle;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/toggle/toggle.js b/www/assets/framework7/cjs/components/toggle/toggle.js
new file mode 100644
index 000000000..2beaff1a9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/toggle/toggle.js
@@ -0,0 +1,72 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+var _toggleClass = _interopRequireDefault(require("./toggle-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'toggle',
+ create: function create() {
+ var app = this;
+ app.toggle = (0, _constructorMethods.default)({
+ defaultSelector: '.toggle',
+ constructor: _toggleClass.default,
+ app: app,
+ domProp: 'f7Toggle'
+ });
+ },
+ static: {
+ Toggle: _toggleClass.default
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.toggle-init').each(function (toggleEl) {
+ return app.toggle.create({
+ el: toggleEl
+ });
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.toggle-init').each(function (toggleEl) {
+ if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.toggle-init').each(function (toggleEl) {
+ return app.toggle.create({
+ el: toggleEl
+ });
+ });
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ page.$el.find('.toggle-init').each(function (toggleEl) {
+ if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'toggle-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var toggleEl = vnode.elm;
+ app.toggle.create({
+ el: toggleEl
+ });
+ },
+ destroy: function destroy(vnode) {
+ var toggleEl = vnode.elm;
+ if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/toolbar/toolbar.js b/www/assets/framework7/cjs/components/toolbar/toolbar.js
new file mode 100644
index 000000000..885b0699a
--- /dev/null
+++ b/www/assets/framework7/cjs/components/toolbar/toolbar.js
@@ -0,0 +1,234 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Toolbar = {
+ setHighlight: function setHighlight(tabbarEl) {
+ var app = this;
+ var $tabbarEl = (0, _dom.default)(tabbarEl);
+ if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;
+ if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) return;
+ var $highlightEl = $tabbarEl.find('.tab-link-highlight');
+ var tabLinksCount = $tabbarEl.find('.tab-link').length;
+
+ if (tabLinksCount === 0) {
+ $highlightEl.remove();
+ return;
+ }
+
+ if ($highlightEl.length === 0) {
+ $tabbarEl.children('.toolbar-inner').append('');
+ $highlightEl = $tabbarEl.find('.tab-link-highlight');
+ } else if ($highlightEl.next().length) {
+ $tabbarEl.children('.toolbar-inner').append($highlightEl);
+ }
+
+ var $activeLink = $tabbarEl.find('.tab-link-active');
+ var highlightWidth;
+ var highlightTranslate;
+
+ if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {
+ highlightWidth = $activeLink[0].offsetWidth + "px";
+ highlightTranslate = $activeLink[0].offsetLeft + "px";
+ } else {
+ var activeIndex = $activeLink.index();
+ highlightWidth = 100 / tabLinksCount + "%";
+ highlightTranslate = (app.rtl ? -activeIndex : activeIndex) * 100 + "%";
+ }
+
+ (0, _utils.nextFrame)(function () {
+ $highlightEl.css('width', highlightWidth).transform("translate3d(" + highlightTranslate + ",0,0)");
+ });
+ },
+ init: function init(tabbarEl) {
+ var app = this;
+ app.toolbar.setHighlight(tabbarEl);
+ },
+ hide: function hide(el, animate) {
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ if ($el.hasClass('toolbar-hidden')) return;
+ var className = "toolbar-hidden" + (animate ? ' toolbar-transitioning' : '');
+ $el.transitionEnd(function () {
+ $el.removeClass('toolbar-transitioning');
+ });
+ $el.addClass(className);
+ $el.trigger('toolbar:hide');
+ app.emit('toolbarHide', $el[0]);
+ },
+ show: function show(el, animate) {
+ if (animate === void 0) {
+ animate = true;
+ }
+
+ var app = this;
+ var $el = (0, _dom.default)(el);
+ if (!$el.hasClass('toolbar-hidden')) return;
+
+ if (animate) {
+ $el.addClass('toolbar-transitioning');
+ $el.transitionEnd(function () {
+ $el.removeClass('toolbar-transitioning');
+ });
+ }
+
+ $el.removeClass('toolbar-hidden');
+ $el.trigger('toolbar:show');
+ app.emit('toolbarShow', $el[0]);
+ },
+ initToolbarOnScroll: function initToolbarOnScroll(pageEl) {
+ var app = this;
+ var $pageEl = (0, _dom.default)(pageEl);
+ var $toolbarEl = $pageEl.parents('.view').children('.toolbar');
+
+ if ($toolbarEl.length === 0) {
+ $toolbarEl = $pageEl.find('.toolbar');
+ }
+
+ if ($toolbarEl.length === 0) {
+ $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');
+ }
+
+ if ($toolbarEl.length === 0) {
+ return;
+ }
+
+ var previousScrollTop;
+ var currentScrollTop;
+ var scrollHeight;
+ var offsetHeight;
+ var reachEnd;
+ var action;
+ var toolbarHidden;
+
+ function handleScroll(e) {
+ if ($pageEl.hasClass('page-with-card-opened')) return;
+ if ($pageEl.hasClass('page-previous')) return;
+ var scrollContent = this;
+
+ if (e && e.target && e.target !== scrollContent) {
+ return;
+ }
+
+ currentScrollTop = scrollContent.scrollTop;
+ scrollHeight = scrollContent.scrollHeight;
+ offsetHeight = scrollContent.offsetHeight;
+ reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
+ toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');
+
+ if (reachEnd) {
+ if (app.params.toolbar.showOnPageScrollEnd) {
+ action = 'show';
+ }
+ } else if (previousScrollTop > currentScrollTop) {
+ if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {
+ action = 'show';
+ } else {
+ action = 'hide';
+ }
+ } else if (currentScrollTop > 44) {
+ action = 'hide';
+ } else {
+ action = 'show';
+ }
+
+ if (action === 'show' && toolbarHidden) {
+ app.toolbar.show($toolbarEl);
+ toolbarHidden = false;
+ } else if (action === 'hide' && !toolbarHidden) {
+ app.toolbar.hide($toolbarEl);
+ toolbarHidden = true;
+ }
+
+ previousScrollTop = currentScrollTop;
+ }
+
+ $pageEl.on('scroll', '.page-content', handleScroll, true);
+ $pageEl[0].f7ScrollToolbarHandler = handleScroll;
+ }
+};
+var _default = {
+ name: 'toolbar',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ toolbar: Toolbar
+ });
+ },
+ params: {
+ toolbar: {
+ hideOnPageScroll: false,
+ showOnPageScrollEnd: true,
+ showOnPageScrollTop: true
+ }
+ },
+ on: {
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ if (page.$el[0].f7ScrollToolbarHandler) {
+ page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);
+ }
+ },
+ pageBeforeIn: function pageBeforeIn(page) {
+ var app = this;
+ var $toolbarEl = page.$el.parents('.view').children('.toolbar');
+
+ if ($toolbarEl.length === 0) {
+ $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');
+ }
+
+ if ($toolbarEl.length === 0) {
+ $toolbarEl = page.$el.find('.toolbar');
+ }
+
+ if ($toolbarEl.length === 0) {
+ return;
+ }
+
+ if (page.$el.hasClass('no-toolbar')) {
+ app.toolbar.hide($toolbarEl);
+ } else {
+ app.toolbar.show($toolbarEl);
+ }
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.tabbar, .tabbar-labels').each(function (tabbarEl) {
+ app.toolbar.init(tabbarEl);
+ });
+
+ if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
+ if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
+ return;
+ }
+
+ app.toolbar.initToolbarOnScroll(page.el);
+ }
+ },
+ init: function init() {
+ var app = this;
+ app.$el.find('.tabbar, .tabbar-labels').each(function (tabbarEl) {
+ app.toolbar.init(tabbarEl);
+ });
+ }
+ },
+ vnode: {
+ tabbar: {
+ insert: function insert(vnode) {
+ var app = this;
+ app.toolbar.init(vnode.elm);
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/tooltip/tooltip-class.js b/www/assets/framework7/cjs/components/tooltip/tooltip-class.js
new file mode 100644
index 000000000..dc9648c0b
--- /dev/null
+++ b/www/assets/framework7/cjs/components/tooltip/tooltip-class.js
@@ -0,0 +1,409 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Tooltip = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Tooltip, _Framework7Class);
+
+ function Tooltip(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var tooltip = _assertThisInitialized(_this);
+
+ var support = (0, _getSupport.getSupport)();
+ var defaults = (0, _utils.extend)({}, app.params.tooltip);
+ var document = (0, _ssrWindow.getDocument)(); // Extend defaults with modules params
+
+ tooltip.useModulesParams(defaults);
+ tooltip.params = (0, _utils.extend)(defaults, params);
+
+ if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {
+ tooltip.params.offset = 10;
+ }
+
+ var _tooltip$params = tooltip.params,
+ targetEl = _tooltip$params.targetEl,
+ containerEl = _tooltip$params.containerEl;
+ if (!targetEl && !tooltip.params.delegated) return tooltip || _assertThisInitialized(_this);
+ var $targetEl = (0, _dom.default)(targetEl);
+ if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip || _assertThisInitialized(_this);
+ if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip || _assertThisInitialized(_this);
+ var $containerEl = (0, _dom.default)(containerEl || app.$el).eq(0);
+
+ if ($containerEl.length === 0) {
+ $containerEl = app.$el;
+ }
+
+ var $el = (0, _dom.default)(tooltip.render()).eq(0);
+ (0, _utils.extend)(tooltip, {
+ app: app,
+ $targetEl: $targetEl,
+ targetEl: $targetEl && $targetEl[0],
+ $containerEl: $containerEl,
+ containerEl: $containerEl && $containerEl[0],
+ $el: $el,
+ el: $el && $el[0],
+ text: tooltip.params.text || '',
+ visible: false,
+ opened: false
+ });
+ if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;
+ var touchesStart = {};
+ var isTouched;
+
+ function handleClick() {
+ if (tooltip.opened) tooltip.hide();else tooltip.show(this);
+ }
+
+ function handleClickOut(e) {
+ if (tooltip.opened && ((0, _dom.default)(e.target).closest($targetEl).length || (0, _dom.default)(e.target).closest(tooltip.$el).length)) return;
+ tooltip.hide();
+ }
+
+ function handleTouchStart(e) {
+ if (isTouched) return;
+ isTouched = true;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ tooltip.show(this);
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+ var distance = Math.pow(Math.pow(x - touchesStart.x, 2) + Math.pow(y - touchesStart.y, 2), 0.5);
+
+ if (distance > 50) {
+ isTouched = false;
+ tooltip.hide();
+ }
+ }
+
+ function handleTouchEnd() {
+ if (!isTouched) return;
+ isTouched = false;
+ tooltip.hide();
+ }
+
+ function handleMouseEnter() {
+ tooltip.show(this);
+ }
+
+ function handleMouseLeave() {
+ tooltip.hide();
+ }
+
+ function handleTransitionEnd() {
+ if (!$el.hasClass('tooltip-in')) {
+ $el.removeClass('tooltip-out').remove();
+ }
+ }
+
+ tooltip.attachEvents = function attachEvents() {
+ $el.on('transitionend', handleTransitionEnd);
+
+ if (tooltip.params.trigger === 'click') {
+ if (tooltip.params.delegated) {
+ (0, _dom.default)(document).on('click', tooltip.params.targetEl, handleClick);
+ } else {
+ tooltip.$targetEl.on('click', handleClick);
+ }
+
+ (0, _dom.default)('html').on('click', handleClickOut);
+ return;
+ }
+
+ if (tooltip.params.trigger === 'manual') return;
+
+ if (support.touch) {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+
+ if (tooltip.params.delegated) {
+ (0, _dom.default)(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);
+ } else {
+ tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);
+ }
+
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ } else {
+ // eslint-disable-next-line
+ if (tooltip.params.delegated) {
+ (0, _dom.default)(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);
+ (0, _dom.default)(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);
+ } else {
+ tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);
+ tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);
+ }
+ }
+ };
+
+ tooltip.detachEvents = function detachEvents() {
+ $el.off('transitionend', handleTransitionEnd);
+
+ if (tooltip.params.trigger === 'click') {
+ if (tooltip.params.delegated) {
+ (0, _dom.default)(document).on('click', tooltip.params.targetEl, handleClick);
+ } else {
+ tooltip.$targetEl.off('click', handleClick);
+ }
+
+ (0, _dom.default)('html').off('click', handleClickOut);
+ return;
+ }
+
+ if (tooltip.params.trigger === 'manual') return;
+
+ if (support.touch) {
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+
+ if (tooltip.params.delegated) {
+ (0, _dom.default)(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);
+ } else {
+ tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);
+ }
+
+ app.off('touchmove', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ } else {
+ // eslint-disable-next-line
+ if (tooltip.params.delegated) {
+ (0, _dom.default)(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);
+ (0, _dom.default)(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);
+ } else {
+ tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);
+ tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);
+ }
+ }
+ }; // Install Modules
+
+
+ tooltip.useModules();
+ tooltip.init();
+ return tooltip || _assertThisInitialized(_this);
+ }
+
+ var _proto = Tooltip.prototype;
+
+ _proto.setTargetEl = function setTargetEl(targetEl) {
+ var tooltip = this;
+ tooltip.detachEvents();
+ tooltip.$targetEl = (0, _dom.default)(targetEl);
+ tooltip.targetEl = tooltip.$targetEl[0];
+ tooltip.attachEvents();
+ return tooltip;
+ };
+
+ _proto.position = function position(targetEl) {
+ var tooltip = this;
+ var $el = tooltip.$el,
+ app = tooltip.app,
+ $containerEl = tooltip.$containerEl;
+ var hasContainerEl = !!tooltip.params.containerEl;
+ var tooltipOffset = tooltip.params.offset || 0;
+ $el.css({
+ left: '',
+ top: ''
+ });
+ var $targetEl = (0, _dom.default)(targetEl || tooltip.targetEl);
+ var _ref = [$el.width(), $el.height()],
+ width = _ref[0],
+ height = _ref[1];
+ $el.css({
+ left: '',
+ top: ''
+ });
+ var targetWidth;
+ var targetHeight;
+ var targetOffsetLeft;
+ var targetOffsetTop;
+ var boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;
+
+ if ($targetEl && $targetEl.length > 0) {
+ targetWidth = $targetEl.outerWidth();
+ targetHeight = $targetEl.outerHeight();
+
+ if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {
+ var clientRect = $targetEl[0].getBoundingClientRect();
+ targetWidth = clientRect.width;
+ targetHeight = clientRect.height;
+ }
+
+ var targetOffset = $targetEl.offset();
+ targetOffsetLeft = targetOffset.left - boundaries.left;
+ targetOffsetTop = targetOffset.top - boundaries.top;
+ var targetParentPage = $targetEl.parents('.page');
+
+ if (targetParentPage.length > 0) {
+ targetOffsetTop -= targetParentPage[0].scrollTop;
+ }
+ }
+
+ var _ref2 = [0, 0, 0],
+ left = _ref2[0],
+ top = _ref2[1]; // Top Position
+
+ var position = 'top';
+
+ if (height + tooltipOffset < targetOffsetTop) {
+ // On top
+ top = targetOffsetTop - height - tooltipOffset;
+ } else if (height < boundaries.height - targetOffsetTop - targetHeight) {
+ // On bottom
+ position = 'bottom';
+ top = targetOffsetTop + targetHeight + tooltipOffset;
+ } else {
+ // On middle
+ position = 'middle';
+ top = targetHeight / 2 + targetOffsetTop - height / 2;
+
+ if (top <= 0) {
+ top = 8;
+ } else if (top + height >= boundaries.height) {
+ top = boundaries.height - height - 8;
+ }
+ } // Horizontal Position
+
+
+ if (position === 'top' || position === 'bottom') {
+ left = targetWidth / 2 + targetOffsetLeft - width / 2;
+ if (left < 8) left = 8;
+ if (left + width > boundaries.width) left = boundaries.width - width - 8;
+ if (left < 0) left = 0;
+ } else if (position === 'middle') {
+ left = targetOffsetLeft - width;
+
+ if (left < 8 || left + width > boundaries.width) {
+ if (left < 8) left = targetOffsetLeft + targetWidth;
+ if (left + width > boundaries.width) left = boundaries.width - width - 8;
+ }
+ } // Apply Styles
+
+
+ $el.css({
+ top: top + "px",
+ left: left + "px"
+ });
+ };
+
+ _proto.show = function show(aroundEl) {
+ var tooltip = this;
+ var $el = tooltip.$el,
+ $targetEl = tooltip.$targetEl,
+ $containerEl = tooltip.$containerEl;
+
+ if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {
+ $containerEl.append($el);
+ }
+
+ tooltip.position(aroundEl);
+ var $aroundEl = (0, _dom.default)(aroundEl);
+ tooltip.visible = true;
+ tooltip.opened = true;
+ $targetEl.trigger('tooltip:show');
+ $el.trigger('tooltip:show');
+
+ if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {
+ $aroundEl.trigger('tooltip:show');
+ }
+
+ tooltip.emit('local::show tooltipShow', tooltip);
+ $el.removeClass('tooltip-out').addClass('tooltip-in');
+ return tooltip;
+ };
+
+ _proto.hide = function hide() {
+ var tooltip = this;
+ var $el = tooltip.$el,
+ $targetEl = tooltip.$targetEl;
+ tooltip.visible = false;
+ tooltip.opened = false;
+ $targetEl.trigger('tooltip:hide');
+ $el.trigger('tooltip:hide');
+ tooltip.emit('local::hide tooltipHide', tooltip);
+ $el.addClass('tooltip-out').removeClass('tooltip-in');
+ return tooltip;
+ };
+
+ _proto.render = function render() {
+ var tooltip = this;
+ if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);
+ var _tooltip$params2 = tooltip.params,
+ cssClass = _tooltip$params2.cssClass,
+ text = _tooltip$params2.text;
+ return ("\n \n ").trim();
+ };
+
+ _proto.setText = function setText(newText) {
+ var tooltip = this;
+
+ if (typeof newText === 'undefined') {
+ return tooltip;
+ }
+
+ tooltip.params.text = newText;
+ tooltip.text = newText;
+
+ if (tooltip.$el) {
+ tooltip.$el.children('.tooltip-content').html(newText);
+ }
+
+ if (tooltip.opened) {
+ tooltip.position();
+ }
+
+ return tooltip;
+ };
+
+ _proto.init = function init() {
+ var tooltip = this;
+ tooltip.attachEvents();
+ };
+
+ _proto.destroy = function destroy() {
+ var tooltip = this;
+ if (!tooltip.$targetEl || tooltip.destroyed) return;
+ tooltip.$targetEl.trigger('tooltip:beforedestroy');
+ tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);
+ tooltip.$el.remove();
+ if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;
+ tooltip.detachEvents();
+ (0, _utils.deleteProps)(tooltip);
+ tooltip.destroyed = true;
+ };
+
+ return Tooltip;
+}(_class.default);
+
+var _default = Tooltip;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/tooltip/tooltip.js b/www/assets/framework7/cjs/components/tooltip/tooltip.js
new file mode 100644
index 000000000..038fdd558
--- /dev/null
+++ b/www/assets/framework7/cjs/components/tooltip/tooltip.js
@@ -0,0 +1,146 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _tooltipClass = _interopRequireDefault(require("./tooltip-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'tooltip',
+ static: {
+ Tooltip: _tooltipClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.tooltip = (0, _constructorMethods.default)({
+ defaultSelector: '.tooltip',
+ constructor: _tooltipClass.default,
+ app: app,
+ domProp: 'f7Tooltip'
+ });
+
+ app.tooltip.show = function show(el) {
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var tooltip = $el[0].f7Tooltip;
+ if (!tooltip) return undefined;
+ tooltip.show($el[0]);
+ return tooltip;
+ };
+
+ app.tooltip.hide = function hide(el) {
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var tooltip = $el[0].f7Tooltip;
+ if (!tooltip) return undefined;
+ tooltip.hide();
+ return tooltip;
+ };
+
+ app.tooltip.setText = function text(el, newText) {
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ var tooltip = $el[0].f7Tooltip;
+ if (!tooltip) return undefined;
+ tooltip.setText(newText);
+ return tooltip;
+ };
+ },
+ params: {
+ tooltip: {
+ targetEl: null,
+ delegated: false,
+ text: null,
+ cssClass: null,
+ render: null,
+ offset: 0,
+ trigger: 'hover',
+ containerEl: undefined
+ }
+ },
+ on: {
+ tabMounted: function tabMounted(tabEl) {
+ var app = this;
+ (0, _dom.default)(tabEl).find('.tooltip-init').each(function (el) {
+ var text = (0, _dom.default)(el).attr('data-tooltip');
+ if (!text) return;
+ app.tooltip.create({
+ targetEl: el,
+ text: text
+ });
+ });
+ },
+ tabBeforeRemove: function tabBeforeRemove(tabEl) {
+ (0, _dom.default)(tabEl).find('.tooltip-init').each(function (el) {
+ if (el.f7Tooltip) el.f7Tooltip.destroy();
+ });
+ },
+ pageInit: function pageInit(page) {
+ var app = this;
+ page.$el.find('.tooltip-init').each(function (el) {
+ var text = (0, _dom.default)(el).attr('data-tooltip');
+ if (!text) return;
+ app.tooltip.create({
+ targetEl: el,
+ text: text
+ });
+ });
+
+ if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
+ page.$navbarEl.find('.tooltip-init').each(function (el) {
+ var text = (0, _dom.default)(el).attr('data-tooltip');
+ if (!text) return;
+ app.tooltip.create({
+ targetEl: el,
+ text: text
+ });
+ });
+ }
+ },
+ pageBeforeRemove: function pageBeforeRemove(page) {
+ var app = this;
+ page.$el.find('.tooltip-init').each(function (el) {
+ if (el.f7Tooltip) el.f7Tooltip.destroy();
+ });
+
+ if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
+ page.$navbarEl.find('.tooltip-init').each(function (el) {
+ if (el.f7Tooltip) el.f7Tooltip.destroy();
+ });
+ }
+ }
+ },
+ vnode: {
+ 'tooltip-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var el = vnode.elm;
+ var text = (0, _dom.default)(el).attr('data-tooltip');
+ if (!text) return;
+ app.tooltip.create({
+ targetEl: el,
+ text: text
+ });
+ },
+ update: function update(vnode) {
+ var el = vnode.elm;
+ if (!el.f7Tooltip) return;
+
+ if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {
+ el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);
+ }
+ },
+ destroy: function destroy(vnode) {
+ var el = vnode.elm;
+ if (el.f7Tooltip) el.f7Tooltip.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/touch-ripple/touch-ripple-class.js b/www/assets/framework7/cjs/components/touch-ripple/touch-ripple-class.js
new file mode 100644
index 000000000..57a253400
--- /dev/null
+++ b/www/assets/framework7/cjs/components/touch-ripple/touch-ripple-class.js
@@ -0,0 +1,110 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var TouchRipple = /*#__PURE__*/function () {
+ function TouchRipple(app, $el, x, y) {
+ var ripple = this;
+ if (!$el) return undefined;
+
+ var _$el$0$getBoundingCli = $el[0].getBoundingClientRect(),
+ left = _$el$0$getBoundingCli.left,
+ top = _$el$0$getBoundingCli.top,
+ width = _$el$0$getBoundingCli.width,
+ height = _$el$0$getBoundingCli.height;
+
+ var center = {
+ x: x - left,
+ y: y - top
+ };
+ var diameter = Math.max(Math.pow(Math.pow(height, 2) + Math.pow(width, 2), 0.5), 48);
+ var isInset = false;
+ var insetElements = app.params.touch.touchRippleInsetElements || '';
+
+ if (insetElements && $el.is(insetElements)) {
+ isInset = true;
+ }
+
+ if (isInset) {
+ diameter = Math.max(Math.min(width, height), 48);
+ }
+
+ if (!isInset && $el.css('overflow') === 'hidden') {
+ var distanceFromCenter = Math.pow(Math.pow(center.x - width / 2, 2) + Math.pow(center.y - height / 2, 2), 0.5);
+ var scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);
+ ripple.rippleTransform = "translate3d(0px, 0px, 0) scale(" + scale + ")";
+ } else {
+ // prettier-ignore
+ ripple.rippleTransform = "translate3d(" + (-center.x + width / 2) + "px, " + (-center.y + height / 2) + "px, 0) scale(1)";
+ }
+
+ if (isInset) {
+ $el.addClass('ripple-inset');
+ }
+
+ ripple.$rippleWaveEl = (0, _dom.default)("");
+ $el.prepend(ripple.$rippleWaveEl);
+ ripple.$rippleWaveEl.animationEnd(function () {
+ if (!ripple.$rippleWaveEl) return;
+ if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;
+ ripple.$rippleWaveEl.addClass('ripple-wave-in');
+
+ if (ripple.shouldBeRemoved) {
+ ripple.out();
+ }
+ });
+ return ripple;
+ }
+
+ var _proto = TouchRipple.prototype;
+
+ _proto.destroy = function destroy() {
+ var ripple = this;
+
+ if (ripple.$rippleWaveEl) {
+ ripple.$rippleWaveEl.remove();
+ }
+
+ Object.keys(ripple).forEach(function (key) {
+ ripple[key] = null;
+ delete ripple[key];
+ });
+ ripple = null;
+ };
+
+ _proto.out = function out() {
+ var ripple = this;
+ var $rippleWaveEl = this.$rippleWaveEl;
+ clearTimeout(ripple.removeTimeout);
+ $rippleWaveEl.addClass('ripple-wave-out');
+ ripple.removeTimeout = setTimeout(function () {
+ ripple.destroy();
+ }, 300);
+ $rippleWaveEl.animationEnd(function () {
+ clearTimeout(ripple.removeTimeout);
+ ripple.destroy();
+ });
+ };
+
+ _proto.remove = function remove() {
+ var ripple = this;
+ if (ripple.shouldBeRemoved) return;
+ ripple.removeTimeout = setTimeout(function () {
+ ripple.destroy();
+ }, 400);
+ ripple.shouldBeRemoved = true;
+
+ if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {
+ ripple.out();
+ }
+ };
+
+ return TouchRipple;
+}();
+
+exports.default = TouchRipple;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/touch-ripple/touch-ripple.js b/www/assets/framework7/cjs/components/touch-ripple/touch-ripple.js
new file mode 100644
index 000000000..34ce327b8
--- /dev/null
+++ b/www/assets/framework7/cjs/components/touch-ripple/touch-ripple.js
@@ -0,0 +1,34 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _touchRippleClass = _interopRequireDefault(require("./touch-ripple-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var _default = {
+ name: 'touch-ripple',
+ static: {
+ TouchRipple: _touchRippleClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.touchRipple = {
+ create: function create() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return _construct(_touchRippleClass.default, args);
+ }
+ };
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/treeview/treeview.js b/www/assets/framework7/cjs/components/treeview/treeview.js
new file mode 100644
index 000000000..c5d02a235
--- /dev/null
+++ b/www/assets/framework7/cjs/components/treeview/treeview.js
@@ -0,0 +1,88 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var Treeview = {
+ open: function open(itemEl) {
+ var app = this;
+ var $itemEl = (0, _dom.default)(itemEl).eq(0);
+ if (!$itemEl.length) return;
+ $itemEl.addClass('treeview-item-opened');
+ $itemEl.trigger('treeview:open');
+ app.emit('treeviewOpen', $itemEl[0]);
+
+ function done(cancel) {
+ if (cancel) {
+ $itemEl.removeClass('treeview-item-opened');
+ $itemEl.trigger('treeview:close');
+ app.emit('treeviewClose', $itemEl[0]);
+ } else {
+ $itemEl[0].f7TreeviewChildrenLoaded = true;
+ }
+
+ $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');
+ $itemEl.find('.treeview-preloader').remove();
+ }
+
+ if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {
+ var preloaders = {
+ iosPreloaderContent: _utils.iosPreloaderContent,
+ mdPreloaderContent: _utils.mdPreloaderContent,
+ auroraPreloaderContent: _utils.auroraPreloaderContent
+ };
+ $itemEl.trigger('treeview:loadchildren', done);
+ app.emit('treeviewLoadChildren', $itemEl[0], done);
+ $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');
+ $itemEl.find('.treeview-item-root').prepend("" + preloaders[app.theme + "PreloaderContent"] + "
");
+ }
+ },
+ close: function close(itemEl) {
+ var app = this;
+ var $itemEl = (0, _dom.default)(itemEl).eq(0);
+ if (!$itemEl.length) return;
+ $itemEl.removeClass('treeview-item-opened');
+ $itemEl.trigger('treeview:close');
+ app.emit('treeviewClose', $itemEl[0]);
+ },
+ toggle: function toggle(itemEl) {
+ var app = this;
+ var $itemEl = (0, _dom.default)(itemEl).eq(0);
+ if (!$itemEl.length) return;
+ var wasOpened = $itemEl.hasClass('treeview-item-opened');
+ app.treeview[wasOpened ? 'close' : 'open']($itemEl);
+ }
+};
+var _default = {
+ name: 'treeview',
+ create: function create() {
+ var app = this;
+ (0, _utils.bindMethods)(app, {
+ treeview: Treeview
+ });
+ },
+ clicks: {
+ '.treeview-toggle': function toggle($clickedEl, clickedData, e) {
+ var app = this;
+ if ($clickedEl.parents('.treeview-item-toggle').length) return;
+ var $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);
+ if (!$treeviewItemEl.length) return;
+ e.preventF7Router = true;
+ app.treeview.toggle($treeviewItemEl[0]);
+ },
+ '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {
+ var app = this;
+ var $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);
+ if (!$treeviewItemEl.length) return;
+ e.preventF7Router = true;
+ app.treeview.toggle($treeviewItemEl[0]);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/typography/typography.js b/www/assets/framework7/cjs/components/typography/typography.js
new file mode 100644
index 000000000..bec68a934
--- /dev/null
+++ b/www/assets/framework7/cjs/components/typography/typography.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ name: 'typography'
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/view/resizable-view.js b/www/assets/framework7/cjs/components/view/resizable-view.js
new file mode 100644
index 000000000..69402e5a1
--- /dev/null
+++ b/www/assets/framework7/cjs/components/view/resizable-view.js
@@ -0,0 +1,155 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getSupport = require("../../shared/get-support");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function resizableView(view) {
+ var app = view.app;
+ var support = (0, _getSupport.getSupport)();
+ if (view.resizableInitialized) return;
+ (0, _utils.extend)(view, {
+ resizable: true,
+ resizableWidth: null,
+ resizableInitialized: true
+ });
+ var $htmlEl = (0, _dom.default)('html');
+ var $el = view.$el;
+ if (!$el) return;
+ var $resizeHandlerEl;
+ var isTouched;
+ var isMoved;
+ var touchesStart = {};
+ var touchesDiff;
+ var width;
+ var minWidth;
+ var maxWidth;
+
+ function transformCSSWidth(v) {
+ if (!v) return null;
+
+ if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {
+ return parseInt(v, 10) / 100 * app.width;
+ }
+
+ var newV = parseInt(v, 10);
+ if (Number.isNaN(newV)) return null;
+ return newV;
+ }
+
+ function isResizable() {
+ return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');
+ }
+
+ function handleTouchStart(e) {
+ if (!isResizable()) return;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ isMoved = false;
+ isTouched = true;
+ var $pageMasterEl = $el.children('.page-master');
+ minWidth = transformCSSWidth($pageMasterEl.css('min-width'));
+ maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ e.f7PreventSwipePanel = true;
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+
+ if (!isMoved) {
+ width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;
+ $el.addClass('view-resizing');
+ $htmlEl.css('cursor', 'col-resize');
+ }
+
+ isMoved = true;
+ e.preventDefault();
+ touchesDiff = pageX - touchesStart.x;
+ var newWidth = width + touchesDiff;
+
+ if (minWidth && !Number.isNaN(minWidth)) {
+ newWidth = Math.max(newWidth, minWidth);
+ }
+
+ if (maxWidth && !Number.isNaN(maxWidth)) {
+ newWidth = Math.min(newWidth, maxWidth);
+ }
+
+ newWidth = Math.min(Math.max(newWidth, 0), app.width);
+ view.resizableWidth = newWidth;
+ $htmlEl[0].style.setProperty('--f7-page-master-width', newWidth + "px");
+ $el.trigger('view:resize', newWidth);
+ view.emit('local::resize viewResize', view, newWidth);
+ }
+
+ function handleTouchEnd() {
+ (0, _dom.default)('html').css('cursor', '');
+
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ $htmlEl[0].style.setProperty('--f7-page-master-width', view.resizableWidth + "px");
+ $el.removeClass('view-resizing');
+ }
+
+ function handleResize() {
+ if (!view.resizableWidth) return;
+ minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));
+ maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));
+
+ if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {
+ view.resizableWidth = Math.max(view.resizableWidth, minWidth);
+ }
+
+ if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {
+ view.resizableWidth = Math.min(view.resizableWidth, maxWidth);
+ }
+
+ view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);
+ $htmlEl[0].style.setProperty('--f7-page-master-width', view.resizableWidth + "px");
+ }
+
+ $resizeHandlerEl = view.$el.children('.view-resize-handler');
+
+ if (!$resizeHandlerEl.length) {
+ view.$el.append('');
+ $resizeHandlerEl = view.$el.children('.view-resize-handler');
+ }
+
+ view.$resizeHandlerEl = $resizeHandlerEl;
+ $el.addClass('view-resizable'); // Add Events
+
+ var passive = support.passiveListener ? {
+ passive: true
+ } : false;
+ view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ app.on('resize', handleResize);
+ view.on('beforeOpen', handleResize);
+ view.once('viewDestroy', function () {
+ $el.removeClass('view-resizable');
+ view.$resizeHandlerEl.remove();
+ view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ app.off('resize', handleResize);
+ view.off('beforeOpen', handleResize);
+ });
+}
+
+var _default = resizableView;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/view/view-class.js b/www/assets/framework7/cjs/components/view/view-class.js
new file mode 100644
index 000000000..684008661
--- /dev/null
+++ b/www/assets/framework7/cjs/components/view/view-class.js
@@ -0,0 +1,251 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _router = _interopRequireDefault(require("../../modules/router/router"));
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _resizableView = _interopRequireDefault(require("./resizable-view"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var View = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(View, _Framework7Class);
+
+ function View(app, el, viewParams) {
+ var _this;
+
+ if (viewParams === void 0) {
+ viewParams = {};
+ }
+
+ _this = _Framework7Class.call(this, viewParams, [app]) || this;
+
+ var view = _assertThisInitialized(_this);
+
+ var ssr = view.params.routerId;
+ var defaults = {
+ routes: [],
+ routesAdd: []
+ };
+
+ if (!ssr) {
+ var $el = (0, _dom.default)(el);
+
+ if (!$el.length) {
+ var message = "Framework7: can't create a View instance because ";
+ message += typeof el === 'string' ? "the selector \"" + el + "\" didn't match any element" : 'el must be an HTMLElement or Dom7 object';
+ throw new Error(message);
+ }
+ } // Default View params
+
+
+ view.params = (0, _utils.extend)({
+ el: el
+ }, defaults, app.params.view, viewParams); // Routes
+
+ if (view.params.routes.length > 0) {
+ view.routes = view.params.routes;
+ } else {
+ view.routes = [].concat(app.routes, view.params.routesAdd);
+ } // View Props
+
+
+ (0, _utils.extend)(false, view, {
+ app: app,
+ name: view.params.name,
+ main: view.params.main,
+ history: [],
+ scrollHistory: {}
+ }); // Install Modules
+
+ view.useModules(); // Add to app
+
+ app.views.push(view);
+
+ if (view.main) {
+ app.views.main = view;
+ }
+
+ if (view.name) {
+ app.views[view.name] = view;
+ } // Index
+
+
+ view.index = app.views.indexOf(view); // View ID
+
+ var viewId;
+
+ if (view.name) {
+ viewId = "view_" + view.name;
+ } else if (view.main) {
+ viewId = 'view_main';
+ } else {
+ viewId = "view_" + view.index;
+ }
+
+ view.id = viewId;
+
+ if (!view.params.init) {
+ return view || _assertThisInitialized(_this);
+ } // Init View
+
+
+ if (app.initialized) {
+ view.init();
+ } else {
+ app.on('init', function () {
+ view.init();
+ });
+ }
+
+ return view || _assertThisInitialized(_this);
+ }
+
+ var _proto = View.prototype;
+
+ _proto.destroy = function destroy() {
+ var view = this;
+ var app = view.app;
+ view.$el.trigger('view:beforedestroy');
+ view.emit('local::beforeDestroy viewBeforeDestroy', view);
+ app.off('resize', view.checkMasterDetailBreakpoint);
+
+ if (view.main) {
+ app.views.main = null;
+ delete app.views.main;
+ } else if (view.name) {
+ app.views[view.name] = null;
+ delete app.views[view.name];
+ }
+
+ view.$el[0].f7View = null;
+ delete view.$el[0].f7View;
+ app.views.splice(app.views.indexOf(view), 1); // Destroy Router
+
+ if (view.params.router && view.router) {
+ view.router.destroy();
+ }
+
+ view.emit('local::destroy viewDestroy', view); // Delete props & methods
+
+ Object.keys(view).forEach(function (viewProp) {
+ view[viewProp] = null;
+ delete view[viewProp];
+ });
+ view = null;
+ };
+
+ _proto.checkMasterDetailBreakpoint = function checkMasterDetailBreakpoint(force) {
+ var view = this;
+ var app = view.app;
+ var wasMasterDetail = view.$el.hasClass('view-master-detail');
+ var isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;
+
+ if (typeof force === 'undefined' && isMasterDetail || force === true) {
+ view.$el.addClass('view-master-detail');
+
+ if (!wasMasterDetail) {
+ view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);
+ view.$el.trigger('view:masterDetailBreakpoint');
+ }
+ } else {
+ view.$el.removeClass('view-master-detail');
+
+ if (wasMasterDetail) {
+ view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);
+ view.$el.trigger('view:masterDetailBreakpoint');
+ }
+ }
+ };
+
+ _proto.initMasterDetail = function initMasterDetail() {
+ var view = this;
+ var app = view.app;
+ view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);
+ view.checkMasterDetailBreakpoint();
+
+ if (view.params.masterDetailResizable) {
+ (0, _resizableView.default)(view);
+ }
+
+ app.on('resize', view.checkMasterDetailBreakpoint);
+ };
+
+ _proto.mount = function mount(viewEl) {
+ var view = this;
+ var app = view.app;
+ var el = view.params.el || viewEl;
+ var $el = (0, _dom.default)(el); // Selector
+
+ var selector;
+ if (typeof el === 'string') selector = el;else {
+ // Supposed to be HTMLElement or Dom7
+ selector = ($el.attr('id') ? "#" + $el.attr('id') : '') + ($el.attr('class') ? "." + $el.attr('class').replace(/ /g, '.').replace('.active', '') : '');
+ } // DynamicNavbar
+
+ var $navbarsEl;
+
+ if (app.theme === 'ios' && view.params.iosDynamicNavbar) {
+ $navbarsEl = $el.children('.navbars').eq(0);
+
+ if ($navbarsEl.length === 0) {
+ $navbarsEl = (0, _dom.default)('');
+ }
+ }
+
+ (0, _utils.extend)(view, {
+ $el: $el,
+ el: $el[0],
+ main: view.main || $el.hasClass('view-main'),
+ $navbarsEl: $navbarsEl,
+ navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,
+ selector: selector
+ });
+
+ if (view.main) {
+ app.views.main = view;
+ } // Save in DOM
+
+
+ if ($el && $el[0]) {
+ $el[0].f7View = view;
+ }
+
+ view.emit('local::mount viewMount', view);
+ };
+
+ _proto.init = function init(viewEl) {
+ var view = this;
+ view.mount(viewEl);
+
+ if (view.params.router) {
+ if (view.params.masterDetailBreakpoint > 0) {
+ view.initMasterDetail();
+ }
+
+ view.router.init();
+ view.$el.trigger('view:init');
+ view.emit('local::init viewInit', view);
+ }
+ };
+
+ return View;
+}(_class.default); // Use Router
+
+
+View.use(_router.default);
+var _default = View;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/view/view.js b/www/assets/framework7/cjs/components/view/view.js
new file mode 100644
index 000000000..97597c39e
--- /dev/null
+++ b/www/assets/framework7/cjs/components/view/view.js
@@ -0,0 +1,196 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _viewClass = _interopRequireDefault(require("./view-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function getCurrentView(app) {
+ var $popoverView = (0, _dom.default)('.popover.modal-in .view');
+ var $popupView = (0, _dom.default)('.popup.modal-in .view');
+ var $panelView = (0, _dom.default)('.panel.panel-in .view');
+ var $viewsEl = (0, _dom.default)('.views');
+ if ($viewsEl.length === 0) $viewsEl = app.$el; // Find active view as tab
+
+ var $viewEl = $viewsEl.children('.view');
+
+ if ($viewEl.length === 0) {
+ $viewEl = $viewsEl.children('.tabs').children('.view');
+ } // Propably in tabs or split view
+
+
+ if ($viewEl.length > 1) {
+ if ($viewEl.hasClass('tab')) {
+ // Tabs
+ $viewEl = $viewsEl.children('.view.tab-active');
+
+ if ($viewEl.length === 0) {
+ $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');
+ }
+ } else {// Split View, leave appView intact
+ }
+ }
+
+ if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;
+ if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;
+ if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;
+
+ if ($viewEl.length > 0) {
+ if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;
+
+ if ($viewEl.length > 1) {
+ return app.views.main;
+ }
+ }
+
+ return undefined;
+}
+
+var _default = {
+ name: 'view',
+ params: {
+ view: {
+ init: true,
+ name: undefined,
+ main: false,
+ router: true,
+ linksView: null,
+ stackPages: false,
+ xhrCache: true,
+ xhrCacheIgnore: [],
+ xhrCacheIgnoreGetParameters: false,
+ xhrCacheDuration: 1000 * 60 * 10,
+ // Ten minutes
+ componentCache: true,
+ preloadPreviousPage: true,
+ allowDuplicateUrls: false,
+ reloadPages: false,
+ reloadDetail: false,
+ masterDetailBreakpoint: 0,
+ masterDetailResizable: false,
+ removeElements: true,
+ removeElementsWithTimeout: false,
+ removeElementsTimeout: 0,
+ restoreScrollTopOnBack: true,
+ unloadTabContent: true,
+ passRouteQueryToRequest: true,
+ passRouteParamsToRequest: false,
+ loadInitialPage: true,
+ // Swipe Back
+ iosSwipeBack: true,
+ iosSwipeBackAnimateShadow: true,
+ iosSwipeBackAnimateOpacity: true,
+ iosSwipeBackActiveArea: 30,
+ iosSwipeBackThreshold: 0,
+ mdSwipeBack: false,
+ mdSwipeBackAnimateShadow: true,
+ mdSwipeBackAnimateOpacity: false,
+ mdSwipeBackActiveArea: 30,
+ mdSwipeBackThreshold: 0,
+ auroraSwipeBack: false,
+ auroraSwipeBackAnimateShadow: false,
+ auroraSwipeBackAnimateOpacity: true,
+ auroraSwipeBackActiveArea: 30,
+ auroraSwipeBackThreshold: 0,
+ // Push State
+ browserHistory: false,
+ browserHistoryRoot: undefined,
+ browserHistoryAnimate: true,
+ browserHistoryAnimateOnLoad: false,
+ browserHistorySeparator: '#!',
+ browserHistoryOnLoad: true,
+ browserHistoryInitialMatch: false,
+ browserHistoryStoreHistory: true,
+ // Animate Pages
+ animate: true,
+ // iOS Dynamic Navbar
+ iosDynamicNavbar: true,
+ // Animate iOS Navbar Back Icon
+ iosAnimateNavbarBackIcon: true,
+ // Delays
+ iosPageLoadDelay: 0,
+ mdPageLoadDelay: 0,
+ auroraPageLoadDelay: 0,
+ // Routes hooks
+ routesBeforeEnter: null,
+ routesBeforeLeave: null
+ }
+ },
+ static: {
+ View: _viewClass.default
+ },
+ create: function create() {
+ var app = this;
+ (0, _utils.extend)(app, {
+ views: (0, _utils.extend)([], {
+ create: function create(el, params) {
+ return new _viewClass.default(app, el, params);
+ },
+ get: function get(viewEl) {
+ var $viewEl = (0, _dom.default)(viewEl);
+ if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;
+ return undefined;
+ }
+ })
+ });
+ Object.defineProperty(app.views, 'current', {
+ enumerable: true,
+ configurable: true,
+ get: function get() {
+ return getCurrentView(app);
+ }
+ }); // Alias
+
+ app.view = app.views;
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ (0, _dom.default)('.view-init').each(function (viewEl) {
+ if (viewEl.f7View) return;
+ var viewParams = (0, _dom.default)(viewEl).dataset();
+ app.views.create(viewEl, viewParams);
+ });
+ },
+ 'modalOpen panelOpen': function onOpen(instance) {
+ var app = this;
+ instance.$el.find('.view-init').each(function (viewEl) {
+ if (viewEl.f7View) return;
+ var viewParams = (0, _dom.default)(viewEl).dataset();
+ app.views.create(viewEl, viewParams);
+ });
+ },
+ 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {
+ if (!instance || !instance.$el) return;
+ instance.$el.find('.view-init').each(function (viewEl) {
+ var view = viewEl.f7View;
+ if (!view) return;
+ view.destroy();
+ });
+ }
+ },
+ vnode: {
+ 'view-init': {
+ insert: function insert(vnode) {
+ var app = this;
+ var viewEl = vnode.elm;
+ if (viewEl.f7View) return;
+ var viewParams = (0, _dom.default)(viewEl).dataset();
+ app.views.create(viewEl, viewParams);
+ },
+ destroy: function destroy(vnode) {
+ var viewEl = vnode.elm;
+ var view = viewEl.f7View;
+ if (!view) return;
+ view.destroy();
+ }
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/virtual-list/virtual-list-class.js b/www/assets/framework7/cjs/components/virtual-list/virtual-list-class.js
new file mode 100644
index 000000000..3a362b1d9
--- /dev/null
+++ b/www/assets/framework7/cjs/components/virtual-list/virtual-list-class.js
@@ -0,0 +1,654 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _getDevice = require("../../shared/get-device");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var VirtualList = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(VirtualList, _Framework7Class);
+
+ function VirtualList(app, params) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ _this = _Framework7Class.call(this, params, [app]) || this;
+
+ var vl = _assertThisInitialized(_this);
+
+ var device = (0, _getDevice.getDevice)();
+ var document = (0, _ssrWindow.getDocument)();
+ var defaultHeight;
+
+ if (app.theme === 'md') {
+ defaultHeight = 48;
+ } else if (app.theme === 'ios') {
+ defaultHeight = 44;
+ } else if (app.theme === 'aurora') {
+ defaultHeight = 38;
+ }
+
+ var defaults = {
+ cols: 1,
+ height: defaultHeight,
+ cache: true,
+ dynamicHeightBufferSize: 1,
+ showFilteredItemsOnly: false,
+ renderExternal: undefined,
+ setListHeight: true,
+ searchByItem: undefined,
+ searchAll: undefined,
+ ul: null,
+ createUl: true,
+ scrollableParentEl: undefined,
+ renderItem: function renderItem(item) {
+ return ("\n \n \n \n ").trim();
+ },
+ on: {}
+ }; // Extend defaults with modules params
+
+ vl.useModulesParams(defaults);
+ vl.params = (0, _utils.extend)(defaults, params);
+
+ if (vl.params.height === undefined || !vl.params.height) {
+ vl.params.height = defaultHeight;
+ }
+
+ vl.$el = (0, _dom.default)(params.el);
+ vl.el = vl.$el[0];
+ if (vl.$el.length === 0) return undefined || _assertThisInitialized(_this);
+ vl.$el[0].f7VirtualList = vl;
+ vl.items = vl.params.items;
+
+ if (vl.params.showFilteredItemsOnly) {
+ vl.filteredItems = [];
+ }
+
+ if (vl.params.renderItem) {
+ vl.renderItem = vl.params.renderItem;
+ }
+
+ vl.$pageContentEl = vl.$el.parents('.page-content');
+ vl.pageContentEl = vl.$pageContentEl[0];
+ vl.$scrollableParentEl = vl.params.scrollableParentEl ? (0, _dom.default)(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;
+
+ if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {
+ vl.$scrollableParentEl = vl.$pageContentEl;
+ }
+
+ vl.scrollableParentEl = vl.$scrollableParentEl[0]; // Bad scroll
+
+ if (typeof vl.params.updatableScroll !== 'undefined') {
+ vl.updatableScroll = vl.params.updatableScroll;
+ } else {
+ vl.updatableScroll = true;
+
+ if (device.ios && device.osVersion.split('.')[0] < 8) {
+ vl.updatableScroll = false;
+ }
+ } // Append
+
+
+ var ul = vl.params.ul;
+ vl.$ul = ul ? (0, _dom.default)(vl.params.ul) : vl.$el.children('ul');
+
+ if (vl.$ul.length === 0 && vl.params.createUl) {
+ vl.$el.append('');
+ vl.$ul = vl.$el.children('ul');
+ }
+
+ vl.ul = vl.$ul[0];
+ var $itemsWrapEl;
+ if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;
+ (0, _utils.extend)(vl, {
+ $itemsWrapEl: $itemsWrapEl,
+ itemsWrapEl: $itemsWrapEl[0],
+ // DOM cached items
+ domCache: {},
+ displayDomCache: {},
+ // Temporary DOM Element
+ tempDomElement: document.createElement('ul'),
+ // Last repain position
+ lastRepaintY: null,
+ // Fragment
+ fragment: document.createDocumentFragment(),
+ // Props
+ pageHeight: undefined,
+ rowsPerScreen: undefined,
+ rowsBefore: undefined,
+ rowsAfter: undefined,
+ rowsToRender: undefined,
+ maxBufferHeight: 0,
+ listHeight: undefined,
+ dynamicHeight: typeof vl.params.height === 'function'
+ }); // Install Modules
+
+ vl.useModules(); // Attach events
+
+ var handleScrollBound = vl.handleScroll.bind(vl);
+ var handleResizeBound = vl.handleResize.bind(vl);
+ var $pageEl;
+ var $tabEl;
+ var $panelEl;
+ var $popupEl;
+
+ vl.attachEvents = function attachEvents() {
+ $pageEl = vl.$el.parents('.page').eq(0);
+ $tabEl = vl.$el.parents('.tab').filter(function (tabEl) {
+ return (0, _dom.default)(tabEl).parent('.tabs').parent('.tabs-animated-wrap, .tabs-swipeable-wrap').length === 0;
+ }).eq(0);
+ $panelEl = vl.$el.parents('.panel').eq(0);
+ $popupEl = vl.$el.parents('.popup').eq(0);
+ vl.$scrollableParentEl.on('scroll', handleScrollBound);
+ if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);
+ if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);
+ if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);
+ if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);
+ app.on('resize', handleResizeBound);
+ };
+
+ vl.detachEvents = function attachEvents() {
+ vl.$scrollableParentEl.off('scroll', handleScrollBound);
+ if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);
+ if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);
+ if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);
+ if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);
+ app.off('resize', handleResizeBound);
+ }; // Init
+
+
+ vl.init();
+ return vl || _assertThisInitialized(_this);
+ }
+
+ var _proto = VirtualList.prototype;
+
+ _proto.setListSize = function setListSize() {
+ var vl = this;
+ var items = vl.filteredItems || vl.items;
+ vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;
+
+ if (vl.dynamicHeight) {
+ vl.listHeight = 0;
+ vl.heights = [];
+
+ for (var i = 0; i < items.length; i += 1) {
+ var itemHeight = vl.params.height(items[i]);
+ vl.listHeight += itemHeight;
+ vl.heights.push(itemHeight);
+ }
+ } else {
+ vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;
+ vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);
+ vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;
+ vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;
+ vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;
+ vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;
+ }
+
+ if (vl.updatableScroll || vl.params.setListHeight) {
+ vl.$itemsWrapEl.css({
+ height: vl.listHeight + "px"
+ });
+ }
+ };
+
+ _proto.render = function render(force, forceScrollTop) {
+ var vl = this;
+ if (force) vl.lastRepaintY = null;
+ var scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);
+ if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;
+
+ if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {
+ vl.lastRepaintY = scrollTop;
+ } else {
+ return;
+ }
+
+ var items = vl.filteredItems || vl.items;
+ var fromIndex;
+ var toIndex;
+ var heightBeforeFirstItem = 0;
+ var heightBeforeLastItem = 0;
+
+ if (vl.dynamicHeight) {
+ var itemTop = 0;
+ var itemHeight;
+ vl.maxBufferHeight = vl.pageHeight;
+
+ for (var j = 0; j < vl.heights.length; j += 1) {
+ itemHeight = vl.heights[j];
+
+ if (typeof fromIndex === 'undefined') {
+ if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;
+ }
+
+ if (typeof toIndex === 'undefined') {
+ if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;
+ heightBeforeLastItem += itemHeight;
+ }
+
+ itemTop += itemHeight;
+ }
+
+ toIndex = Math.min(toIndex, items.length);
+ } else {
+ fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;
+
+ if (fromIndex < 0) {
+ fromIndex = 0;
+ }
+
+ toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);
+ }
+
+ var topPosition;
+ var renderExternalItems = [];
+ vl.reachEnd = false;
+ var i;
+
+ for (i = fromIndex; i < toIndex; i += 1) {
+ var itemEl = void 0; // Define real item index
+
+ var index = vl.items.indexOf(items[i]);
+ if (i === fromIndex) vl.currentFromIndex = index;
+ if (i === toIndex - 1) vl.currentToIndex = index;
+
+ if (vl.filteredItems) {
+ if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;
+ } else if (index === vl.items.length - 1) vl.reachEnd = true; // Find items
+
+
+ if (vl.params.renderExternal) {
+ renderExternalItems.push(items[i]);
+ } else if (vl.domCache[index]) {
+ itemEl = vl.domCache[index];
+ itemEl.f7VirtualListIndex = index;
+ } else {
+ if (vl.renderItem) {
+ vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();
+ } else {
+ vl.tempDomElement.innerHTML = items[i].toString().trim();
+ }
+
+ itemEl = vl.tempDomElement.childNodes[0];
+ if (vl.params.cache) vl.domCache[index] = itemEl;
+ itemEl.f7VirtualListIndex = index;
+ } // Set item top position
+
+
+ if (i === fromIndex) {
+ if (vl.dynamicHeight) {
+ topPosition = heightBeforeFirstItem;
+ } else {
+ topPosition = i * vl.params.height / vl.params.cols;
+ }
+ }
+
+ if (!vl.params.renderExternal) {
+ itemEl.style.top = topPosition + "px"; // Before item insert
+
+ vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]); // Append item to fragment
+
+ vl.fragment.appendChild(itemEl);
+ }
+ } // Update list height with not updatable scroll
+
+
+ if (!vl.updatableScroll) {
+ if (vl.dynamicHeight) {
+ vl.itemsWrapEl.style.height = heightBeforeLastItem + "px";
+ } else {
+ vl.itemsWrapEl.style.height = i * vl.params.height / vl.params.cols + "px";
+ }
+ } // Update list html
+
+
+ if (vl.params.renderExternal) {
+ if (items && items.length === 0) {
+ vl.reachEnd = true;
+ }
+ } else {
+ vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);
+ vl.itemsWrapEl.innerHTML = '';
+ vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);
+
+ if (items && items.length === 0) {
+ vl.reachEnd = true;
+ if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;
+ } else {
+ vl.itemsWrapEl.appendChild(vl.fragment);
+ }
+
+ vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);
+ }
+
+ if (typeof forceScrollTop !== 'undefined' && force) {
+ vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);
+ }
+
+ if (vl.params.renderExternal) {
+ vl.params.renderExternal(vl, {
+ fromIndex: fromIndex,
+ toIndex: toIndex,
+ listHeight: vl.listHeight,
+ topPosition: topPosition,
+ items: renderExternalItems
+ });
+ }
+ } // Filter
+ ;
+
+ _proto.filterItems = function filterItems(indexes, resetScrollTop) {
+ if (resetScrollTop === void 0) {
+ resetScrollTop = true;
+ }
+
+ var vl = this;
+ vl.filteredItems = [];
+
+ for (var i = 0; i < indexes.length; i += 1) {
+ vl.filteredItems.push(vl.items[indexes[i]]);
+ }
+
+ if (resetScrollTop) {
+ vl.$scrollableParentEl[0].scrollTop = 0;
+ }
+
+ vl.update();
+ };
+
+ _proto.resetFilter = function resetFilter() {
+ var vl = this;
+
+ if (vl.params.showFilteredItemsOnly) {
+ vl.filteredItems = [];
+ } else {
+ vl.filteredItems = null;
+ delete vl.filteredItems;
+ }
+
+ vl.update();
+ };
+
+ _proto.scrollToItem = function scrollToItem(index) {
+ var vl = this;
+ if (index > vl.items.length) return false;
+ var itemTop = 0;
+
+ if (vl.dynamicHeight) {
+ for (var i = 0; i < index; i += 1) {
+ itemTop += vl.heights[i];
+ }
+ } else {
+ itemTop = index * vl.params.height;
+ }
+
+ var listTop = vl.$el[0].offsetTop;
+ vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));
+ return true;
+ };
+
+ _proto.handleScroll = function handleScroll() {
+ var vl = this;
+ vl.render();
+ } // Handle resize event
+ ;
+
+ _proto.isVisible = function isVisible() {
+ var vl = this;
+ return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);
+ };
+
+ _proto.handleResize = function handleResize() {
+ var vl = this;
+
+ if (vl.isVisible()) {
+ vl.setListSize();
+ vl.render(true);
+ }
+ } // Append
+ ;
+
+ _proto.appendItems = function appendItems(items) {
+ var vl = this;
+
+ for (var i = 0; i < items.length; i += 1) {
+ vl.items.push(items[i]);
+ }
+
+ vl.update();
+ };
+
+ _proto.appendItem = function appendItem(item) {
+ var vl = this;
+ vl.appendItems([item]);
+ } // Replace
+ ;
+
+ _proto.replaceAllItems = function replaceAllItems(items) {
+ var vl = this;
+ vl.items = items;
+ delete vl.filteredItems;
+ vl.domCache = {};
+ vl.update();
+ };
+
+ _proto.replaceItem = function replaceItem(index, item) {
+ var vl = this;
+ vl.items[index] = item;
+ if (vl.params.cache) delete vl.domCache[index];
+ vl.update();
+ } // Prepend
+ ;
+
+ _proto.prependItems = function prependItems(items) {
+ var vl = this;
+
+ for (var i = items.length - 1; i >= 0; i -= 1) {
+ vl.items.unshift(items[i]);
+ }
+
+ if (vl.params.cache) {
+ var newCache = {};
+ Object.keys(vl.domCache).forEach(function (cached) {
+ newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];
+ });
+ vl.domCache = newCache;
+ }
+
+ vl.update();
+ };
+
+ _proto.prependItem = function prependItem(item) {
+ var vl = this;
+ vl.prependItems([item]);
+ } // Move
+ ;
+
+ _proto.moveItem = function moveItem(from, to) {
+ var vl = this;
+ var fromIndex = from;
+ var toIndex = to;
+ if (fromIndex === toIndex) return; // remove item from array
+
+ var item = vl.items.splice(fromIndex, 1)[0];
+
+ if (toIndex >= vl.items.length) {
+ // Add item to the end
+ vl.items.push(item);
+ toIndex = vl.items.length - 1;
+ } else {
+ // Add item to new index
+ vl.items.splice(toIndex, 0, item);
+ } // Update cache
+
+
+ if (vl.params.cache) {
+ var newCache = {};
+ Object.keys(vl.domCache).forEach(function (cached) {
+ var cachedIndex = parseInt(cached, 10);
+ var leftIndex = fromIndex < toIndex ? fromIndex : toIndex;
+ var rightIndex = fromIndex < toIndex ? toIndex : fromIndex;
+ var indexShift = fromIndex < toIndex ? -1 : 1;
+ if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];
+ if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];
+ if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];
+ });
+ vl.domCache = newCache;
+ }
+
+ vl.update();
+ } // Insert before
+ ;
+
+ _proto.insertItemBefore = function insertItemBefore(index, item) {
+ var vl = this;
+
+ if (index === 0) {
+ vl.prependItem(item);
+ return;
+ }
+
+ if (index >= vl.items.length) {
+ vl.appendItem(item);
+ return;
+ }
+
+ vl.items.splice(index, 0, item); // Update cache
+
+ if (vl.params.cache) {
+ var newCache = {};
+ Object.keys(vl.domCache).forEach(function (cached) {
+ var cachedIndex = parseInt(cached, 10);
+
+ if (cachedIndex >= index) {
+ newCache[cachedIndex + 1] = vl.domCache[cachedIndex];
+ }
+ });
+ vl.domCache = newCache;
+ }
+
+ vl.update();
+ } // Delete
+ ;
+
+ _proto.deleteItems = function deleteItems(indexes) {
+ var vl = this;
+ var prevIndex;
+ var indexShift = 0;
+
+ var _loop = function _loop(i) {
+ var index = indexes[i];
+
+ if (typeof prevIndex !== 'undefined') {
+ if (index > prevIndex) {
+ indexShift = -i;
+ }
+ }
+
+ index += indexShift;
+ prevIndex = indexes[i]; // Delete item
+
+ var deletedItem = vl.items.splice(index, 1)[0]; // Delete from filtered
+
+ if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {
+ vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);
+ } // Update cache
+
+
+ if (vl.params.cache) {
+ var newCache = {};
+ Object.keys(vl.domCache).forEach(function (cached) {
+ var cachedIndex = parseInt(cached, 10);
+
+ if (cachedIndex === index) {
+ delete vl.domCache[index];
+ } else if (parseInt(cached, 10) > index) {
+ newCache[cachedIndex - 1] = vl.domCache[cached];
+ } else {
+ newCache[cachedIndex] = vl.domCache[cached];
+ }
+ });
+ vl.domCache = newCache;
+ }
+ };
+
+ for (var i = 0; i < indexes.length; i += 1) {
+ _loop(i);
+ }
+
+ vl.update();
+ };
+
+ _proto.deleteAllItems = function deleteAllItems() {
+ var vl = this;
+ vl.items = [];
+ delete vl.filteredItems;
+ if (vl.params.cache) vl.domCache = {};
+ vl.update();
+ };
+
+ _proto.deleteItem = function deleteItem(index) {
+ var vl = this;
+ vl.deleteItems([index]);
+ } // Clear cache
+ ;
+
+ _proto.clearCache = function clearCache() {
+ var vl = this;
+ vl.domCache = {};
+ } // Update Virtual List
+ ;
+
+ _proto.update = function update(deleteCache) {
+ var vl = this;
+
+ if (deleteCache && vl.params.cache) {
+ vl.domCache = {};
+ }
+
+ vl.setListSize();
+ vl.render(true);
+ };
+
+ _proto.init = function init() {
+ var vl = this;
+ vl.attachEvents();
+ vl.setListSize();
+ vl.render();
+ };
+
+ _proto.destroy = function destroy() {
+ var vl = this;
+ vl.detachEvents();
+ vl.$el[0].f7VirtualList = null;
+ delete vl.$el[0].f7VirtualList;
+ (0, _utils.deleteProps)(vl);
+ vl = null;
+ };
+
+ return VirtualList;
+}(_class.default);
+
+var _default = VirtualList;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/components/virtual-list/virtual-list.js b/www/assets/framework7/cjs/components/virtual-list/virtual-list.js
new file mode 100644
index 000000000..c5eb18e50
--- /dev/null
+++ b/www/assets/framework7/cjs/components/virtual-list/virtual-list.js
@@ -0,0 +1,27 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _virtualListClass = _interopRequireDefault(require("./virtual-list-class"));
+
+var _constructorMethods = _interopRequireDefault(require("../../shared/constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'virtualList',
+ static: {
+ VirtualList: _virtualListClass.default
+ },
+ create: function create() {
+ var app = this;
+ app.virtualList = (0, _constructorMethods.default)({
+ defaultSelector: '.virtual-list',
+ constructor: _virtualListClass.default,
+ app: app,
+ domProp: 'f7VirtualList'
+ });
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/framework7-bundle.js b/www/assets/framework7/cjs/framework7-bundle.js
new file mode 100644
index 000000000..279708c0a
--- /dev/null
+++ b/www/assets/framework7/cjs/framework7-bundle.js
@@ -0,0 +1,208 @@
+/**
+ * Framework7 6.3.16
+ * Full featured mobile HTML framework for building iOS & Android apps
+ * https://framework7.io/
+ *
+ * Copyright 2014-2022 Vladimir Kharlampidi
+ *
+ * Released under the MIT License
+ *
+ * Released on: February 10, 2022
+ */
+
+"use strict";
+
+exports.__esModule = true;
+exports.utils = exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("./shared/dom7"));
+
+exports.Dom7 = _dom.default;
+
+var _appClass = _interopRequireDefault(require("./components/app/app-class"));
+
+var _request = _interopRequireDefault(require("./shared/request"));
+
+exports.request = _request.default;
+
+var utils = _interopRequireWildcard(require("./shared/utils"));
+
+exports.utils = utils;
+
+var _getSupport = require("./shared/get-support");
+
+exports.getSupport = _getSupport.getSupport;
+
+var _getDevice = require("./shared/get-device");
+
+exports.getDevice = _getDevice.getDevice;
+
+var _device = _interopRequireDefault(require("./modules/device/device"));
+
+var _support = _interopRequireDefault(require("./modules/support/support"));
+
+var _utils2 = _interopRequireDefault(require("./modules/utils/utils"));
+
+var _resize = _interopRequireDefault(require("./modules/resize/resize"));
+
+var _request2 = _interopRequireDefault(require("./modules/request/request"));
+
+var _touch = _interopRequireDefault(require("./modules/touch/touch"));
+
+var _clicks = _interopRequireDefault(require("./modules/clicks/clicks"));
+
+var _router = _interopRequireDefault(require("./modules/router/router"));
+
+var _componentLoader = _interopRequireDefault(require("./modules/router/component-loader"));
+
+var _component = _interopRequireWildcard(require("./modules/component/component"));
+
+exports.Component = _component.Component;
+exports.$jsx = _component.$jsx;
+
+var _history = _interopRequireDefault(require("./modules/history/history"));
+
+var _serviceWorker = _interopRequireDefault(require("./modules/service-worker/service-worker"));
+
+var _store = _interopRequireWildcard(require("./modules/store/store"));
+
+exports.createStore = _store.createStore;
+
+var _statusbar = _interopRequireDefault(require("./components/statusbar/statusbar"));
+
+var _view = _interopRequireDefault(require("./components/view/view"));
+
+var _navbar = _interopRequireDefault(require("./components/navbar/navbar"));
+
+var _toolbar = _interopRequireDefault(require("./components/toolbar/toolbar"));
+
+var _subnavbar = _interopRequireDefault(require("./components/subnavbar/subnavbar"));
+
+var _touchRipple = _interopRequireDefault(require("./components/touch-ripple/touch-ripple"));
+
+var _modal = _interopRequireDefault(require("./components/modal/modal"));
+
+var _routerClass = _interopRequireDefault(require("./modules/router/router-class"));
+
+var _appbar = _interopRequireDefault(require("./components/appbar/appbar"));
+
+var _dialog = _interopRequireDefault(require("./components/dialog/dialog"));
+
+var _popup = _interopRequireDefault(require("./components/popup/popup"));
+
+var _loginScreen = _interopRequireDefault(require("./components/login-screen/login-screen"));
+
+var _popover = _interopRequireDefault(require("./components/popover/popover"));
+
+var _actions = _interopRequireDefault(require("./components/actions/actions"));
+
+var _sheet = _interopRequireDefault(require("./components/sheet/sheet"));
+
+var _toast = _interopRequireDefault(require("./components/toast/toast"));
+
+var _preloader = _interopRequireDefault(require("./components/preloader/preloader"));
+
+var _progressbar = _interopRequireDefault(require("./components/progressbar/progressbar"));
+
+var _sortable = _interopRequireDefault(require("./components/sortable/sortable"));
+
+var _swipeout = _interopRequireDefault(require("./components/swipeout/swipeout"));
+
+var _accordion = _interopRequireDefault(require("./components/accordion/accordion"));
+
+var _contactsList = _interopRequireDefault(require("./components/contacts-list/contacts-list"));
+
+var _virtualList = _interopRequireDefault(require("./components/virtual-list/virtual-list"));
+
+var _listIndex = _interopRequireDefault(require("./components/list-index/list-index"));
+
+var _timeline = _interopRequireDefault(require("./components/timeline/timeline"));
+
+var _tabs = _interopRequireDefault(require("./components/tabs/tabs"));
+
+var _panel = _interopRequireDefault(require("./components/panel/panel"));
+
+var _card = _interopRequireDefault(require("./components/card/card"));
+
+var _chip = _interopRequireDefault(require("./components/chip/chip"));
+
+var _form = _interopRequireDefault(require("./components/form/form"));
+
+var _input = _interopRequireDefault(require("./components/input/input"));
+
+var _checkbox = _interopRequireDefault(require("./components/checkbox/checkbox"));
+
+var _radio = _interopRequireDefault(require("./components/radio/radio"));
+
+var _toggle = _interopRequireDefault(require("./components/toggle/toggle"));
+
+var _range = _interopRequireDefault(require("./components/range/range"));
+
+var _stepper = _interopRequireDefault(require("./components/stepper/stepper"));
+
+var _smartSelect = _interopRequireDefault(require("./components/smart-select/smart-select"));
+
+var _grid = _interopRequireDefault(require("./components/grid/grid"));
+
+var _calendar = _interopRequireDefault(require("./components/calendar/calendar"));
+
+var _picker = _interopRequireDefault(require("./components/picker/picker"));
+
+var _infiniteScroll = _interopRequireDefault(require("./components/infinite-scroll/infinite-scroll"));
+
+var _pullToRefresh = _interopRequireDefault(require("./components/pull-to-refresh/pull-to-refresh"));
+
+var _lazy = _interopRequireDefault(require("./components/lazy/lazy"));
+
+var _dataTable = _interopRequireDefault(require("./components/data-table/data-table"));
+
+var _fab = _interopRequireDefault(require("./components/fab/fab"));
+
+var _searchbar = _interopRequireDefault(require("./components/searchbar/searchbar"));
+
+var _messages = _interopRequireDefault(require("./components/messages/messages"));
+
+var _messagebar = _interopRequireDefault(require("./components/messagebar/messagebar"));
+
+var _swiper = _interopRequireDefault(require("./components/swiper/swiper"));
+
+var _photoBrowser = _interopRequireDefault(require("./components/photo-browser/photo-browser"));
+
+var _notification = _interopRequireDefault(require("./components/notification/notification"));
+
+var _autocomplete = _interopRequireDefault(require("./components/autocomplete/autocomplete"));
+
+var _tooltip = _interopRequireDefault(require("./components/tooltip/tooltip"));
+
+var _gauge = _interopRequireDefault(require("./components/gauge/gauge"));
+
+var _skeleton = _interopRequireDefault(require("./components/skeleton/skeleton"));
+
+var _menu = _interopRequireDefault(require("./components/menu/menu"));
+
+var _colorPicker = _interopRequireDefault(require("./components/color-picker/color-picker"));
+
+var _treeview = _interopRequireDefault(require("./components/treeview/treeview"));
+
+var _textEditor = _interopRequireDefault(require("./components/text-editor/text-editor"));
+
+var _pieChart = _interopRequireDefault(require("./components/pie-chart/pie-chart"));
+
+var _areaChart = _interopRequireDefault(require("./components/area-chart/area-chart"));
+
+var _elevation = _interopRequireDefault(require("./components/elevation/elevation"));
+
+var _typography = _interopRequireDefault(require("./components/typography/typography"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_routerClass.default.use([_componentLoader.default]);
+
+_appClass.default.use([_device.default, _support.default, _utils2.default, _resize.default, _request2.default, _touch.default, _clicks.default, _router.default, _history.default, _component.default, _serviceWorker.default, _store.default, _statusbar.default, _view.default, _navbar.default, _toolbar.default, _subnavbar.default, _touchRipple.default, _modal.default, _appbar.default, _dialog.default, _popup.default, _loginScreen.default, _popover.default, _actions.default, _sheet.default, _toast.default, _preloader.default, _progressbar.default, _sortable.default, _swipeout.default, _accordion.default, _contactsList.default, _virtualList.default, _listIndex.default, _timeline.default, _tabs.default, _panel.default, _card.default, _chip.default, _form.default, _input.default, _checkbox.default, _radio.default, _toggle.default, _range.default, _stepper.default, _smartSelect.default, _grid.default, _calendar.default, _picker.default, _infiniteScroll.default, _pullToRefresh.default, _lazy.default, _dataTable.default, _fab.default, _searchbar.default, _messages.default, _messagebar.default, _swiper.default, _photoBrowser.default, _notification.default, _autocomplete.default, _tooltip.default, _gauge.default, _skeleton.default, _menu.default, _colorPicker.default, _treeview.default, _textEditor.default, _pieChart.default, _areaChart.default, _elevation.default, _typography.default]);
+
+var _default = _appClass.default;
+exports.default = _default;
diff --git a/www/assets/framework7/cjs/framework7-lite-bundle.js b/www/assets/framework7/cjs/framework7-lite-bundle.js
new file mode 100644
index 000000000..338843b9b
--- /dev/null
+++ b/www/assets/framework7/cjs/framework7-lite-bundle.js
@@ -0,0 +1,191 @@
+/**
+ * Framework7 6.3.16
+ * Full featured mobile HTML framework for building iOS & Android apps
+ * https://framework7.io/
+ *
+ * Copyright 2014-2022 Vladimir Kharlampidi
+ *
+ * Released under the MIT License
+ *
+ * Released on: February 10, 2022
+ */
+
+"use strict";
+
+exports.__esModule = true;
+exports.utils = exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("./shared/dom7"));
+
+exports.Dom7 = _dom.default;
+
+var _appClass = _interopRequireDefault(require("./components/app/app-class"));
+
+var _request = _interopRequireDefault(require("./shared/request"));
+
+exports.request = _request.default;
+
+var utils = _interopRequireWildcard(require("./shared/utils"));
+
+exports.utils = utils;
+
+var _getSupport = require("./shared/get-support");
+
+exports.getSupport = _getSupport.getSupport;
+
+var _getDevice = require("./shared/get-device");
+
+exports.getDevice = _getDevice.getDevice;
+
+var _device = _interopRequireDefault(require("./modules/device/device"));
+
+var _support = _interopRequireDefault(require("./modules/support/support"));
+
+var _utils2 = _interopRequireDefault(require("./modules/utils/utils"));
+
+var _resize = _interopRequireDefault(require("./modules/resize/resize"));
+
+var _request2 = _interopRequireDefault(require("./modules/request/request"));
+
+var _touch = _interopRequireDefault(require("./modules/touch/touch"));
+
+var _clicks = _interopRequireDefault(require("./modules/clicks/clicks"));
+
+var _router = _interopRequireDefault(require("./modules/router/router"));
+
+var _history = _interopRequireDefault(require("./modules/history/history"));
+
+var _serviceWorker = _interopRequireDefault(require("./modules/service-worker/service-worker"));
+
+var _store = _interopRequireWildcard(require("./modules/store/store"));
+
+exports.createStore = _store.createStore;
+
+var _statusbar = _interopRequireDefault(require("./components/statusbar/statusbar"));
+
+var _view = _interopRequireDefault(require("./components/view/view"));
+
+var _navbar = _interopRequireDefault(require("./components/navbar/navbar"));
+
+var _toolbar = _interopRequireDefault(require("./components/toolbar/toolbar"));
+
+var _subnavbar = _interopRequireDefault(require("./components/subnavbar/subnavbar"));
+
+var _touchRipple = _interopRequireDefault(require("./components/touch-ripple/touch-ripple"));
+
+var _modal = _interopRequireDefault(require("./components/modal/modal"));
+
+var _appbar = _interopRequireDefault(require("./components/appbar/appbar"));
+
+var _dialog = _interopRequireDefault(require("./components/dialog/dialog"));
+
+var _popup = _interopRequireDefault(require("./components/popup/popup"));
+
+var _loginScreen = _interopRequireDefault(require("./components/login-screen/login-screen"));
+
+var _popover = _interopRequireDefault(require("./components/popover/popover"));
+
+var _actions = _interopRequireDefault(require("./components/actions/actions"));
+
+var _sheet = _interopRequireDefault(require("./components/sheet/sheet"));
+
+var _toast = _interopRequireDefault(require("./components/toast/toast"));
+
+var _preloader = _interopRequireDefault(require("./components/preloader/preloader"));
+
+var _progressbar = _interopRequireDefault(require("./components/progressbar/progressbar"));
+
+var _sortable = _interopRequireDefault(require("./components/sortable/sortable"));
+
+var _swipeout = _interopRequireDefault(require("./components/swipeout/swipeout"));
+
+var _accordion = _interopRequireDefault(require("./components/accordion/accordion"));
+
+var _contactsList = _interopRequireDefault(require("./components/contacts-list/contacts-list"));
+
+var _virtualList = _interopRequireDefault(require("./components/virtual-list/virtual-list"));
+
+var _listIndex = _interopRequireDefault(require("./components/list-index/list-index"));
+
+var _timeline = _interopRequireDefault(require("./components/timeline/timeline"));
+
+var _tabs = _interopRequireDefault(require("./components/tabs/tabs"));
+
+var _panel = _interopRequireDefault(require("./components/panel/panel"));
+
+var _card = _interopRequireDefault(require("./components/card/card"));
+
+var _chip = _interopRequireDefault(require("./components/chip/chip"));
+
+var _form = _interopRequireDefault(require("./components/form/form"));
+
+var _input = _interopRequireDefault(require("./components/input/input"));
+
+var _checkbox = _interopRequireDefault(require("./components/checkbox/checkbox"));
+
+var _radio = _interopRequireDefault(require("./components/radio/radio"));
+
+var _toggle = _interopRequireDefault(require("./components/toggle/toggle"));
+
+var _range = _interopRequireDefault(require("./components/range/range"));
+
+var _stepper = _interopRequireDefault(require("./components/stepper/stepper"));
+
+var _smartSelect = _interopRequireDefault(require("./components/smart-select/smart-select"));
+
+var _grid = _interopRequireDefault(require("./components/grid/grid"));
+
+var _calendar = _interopRequireDefault(require("./components/calendar/calendar"));
+
+var _picker = _interopRequireDefault(require("./components/picker/picker"));
+
+var _infiniteScroll = _interopRequireDefault(require("./components/infinite-scroll/infinite-scroll"));
+
+var _pullToRefresh = _interopRequireDefault(require("./components/pull-to-refresh/pull-to-refresh"));
+
+var _lazy = _interopRequireDefault(require("./components/lazy/lazy"));
+
+var _dataTable = _interopRequireDefault(require("./components/data-table/data-table"));
+
+var _fab = _interopRequireDefault(require("./components/fab/fab"));
+
+var _searchbar = _interopRequireDefault(require("./components/searchbar/searchbar"));
+
+var _messages = _interopRequireDefault(require("./components/messages/messages"));
+
+var _messagebar = _interopRequireDefault(require("./components/messagebar/messagebar"));
+
+var _swiper = _interopRequireDefault(require("./components/swiper/swiper"));
+
+var _photoBrowser = _interopRequireDefault(require("./components/photo-browser/photo-browser"));
+
+var _notification = _interopRequireDefault(require("./components/notification/notification"));
+
+var _autocomplete = _interopRequireDefault(require("./components/autocomplete/autocomplete"));
+
+var _tooltip = _interopRequireDefault(require("./components/tooltip/tooltip"));
+
+var _skeleton = _interopRequireDefault(require("./components/skeleton/skeleton"));
+
+var _menu = _interopRequireDefault(require("./components/menu/menu"));
+
+var _colorPicker = _interopRequireDefault(require("./components/color-picker/color-picker"));
+
+var _treeview = _interopRequireDefault(require("./components/treeview/treeview"));
+
+var _textEditor = _interopRequireDefault(require("./components/text-editor/text-editor"));
+
+var _elevation = _interopRequireDefault(require("./components/elevation/elevation"));
+
+var _typography = _interopRequireDefault(require("./components/typography/typography"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_appClass.default.use([_device.default, _support.default, _utils2.default, _resize.default, _request2.default, _touch.default, _clicks.default, _router.default, _history.default, _serviceWorker.default, _store.default, _statusbar.default, _view.default, _navbar.default, _toolbar.default, _subnavbar.default, _touchRipple.default, _modal.default, _appbar.default, _dialog.default, _popup.default, _loginScreen.default, _popover.default, _actions.default, _sheet.default, _toast.default, _preloader.default, _progressbar.default, _sortable.default, _swipeout.default, _accordion.default, _contactsList.default, _virtualList.default, _listIndex.default, _timeline.default, _tabs.default, _panel.default, _card.default, _chip.default, _form.default, _input.default, _checkbox.default, _radio.default, _toggle.default, _range.default, _stepper.default, _smartSelect.default, _grid.default, _calendar.default, _picker.default, _infiniteScroll.default, _pullToRefresh.default, _lazy.default, _dataTable.default, _fab.default, _searchbar.default, _messages.default, _messagebar.default, _swiper.default, _photoBrowser.default, _notification.default, _autocomplete.default, _tooltip.default, _skeleton.default, _menu.default, _colorPicker.default, _treeview.default, _textEditor.default, _elevation.default, _typography.default]);
+
+var _default = _appClass.default;
+exports.default = _default;
diff --git a/www/assets/framework7/cjs/framework7-lite.js b/www/assets/framework7/cjs/framework7-lite.js
new file mode 100644
index 000000000..caf5deb1b
--- /dev/null
+++ b/www/assets/framework7/cjs/framework7-lite.js
@@ -0,0 +1,87 @@
+/**
+ * Framework7 6.3.16
+ * Full featured mobile HTML framework for building iOS & Android apps
+ * https://framework7.io/
+ *
+ * Copyright 2014-2022 Vladimir Kharlampidi
+ *
+ * Released under the MIT License
+ *
+ * Released on: February 10, 2022
+ */
+
+"use strict";
+
+exports.__esModule = true;
+exports.utils = exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("./shared/dom7"));
+
+exports.Dom7 = _dom.default;
+
+var _appClass = _interopRequireDefault(require("./components/app/app-class"));
+
+var _request = _interopRequireDefault(require("./shared/request"));
+
+exports.request = _request.default;
+
+var utils = _interopRequireWildcard(require("./shared/utils"));
+
+exports.utils = utils;
+
+var _getSupport = require("./shared/get-support");
+
+exports.getSupport = _getSupport.getSupport;
+
+var _getDevice = require("./shared/get-device");
+
+exports.getDevice = _getDevice.getDevice;
+
+var _device = _interopRequireDefault(require("./modules/device/device"));
+
+var _support = _interopRequireDefault(require("./modules/support/support"));
+
+var _utils2 = _interopRequireDefault(require("./modules/utils/utils"));
+
+var _resize = _interopRequireDefault(require("./modules/resize/resize"));
+
+var _request2 = _interopRequireDefault(require("./modules/request/request"));
+
+var _touch = _interopRequireDefault(require("./modules/touch/touch"));
+
+var _clicks = _interopRequireDefault(require("./modules/clicks/clicks"));
+
+var _router = _interopRequireDefault(require("./modules/router/router"));
+
+var _history = _interopRequireDefault(require("./modules/history/history"));
+
+var _serviceWorker = _interopRequireDefault(require("./modules/service-worker/service-worker"));
+
+var _store = _interopRequireWildcard(require("./modules/store/store"));
+
+exports.createStore = _store.createStore;
+
+var _statusbar = _interopRequireDefault(require("./components/statusbar/statusbar"));
+
+var _view = _interopRequireDefault(require("./components/view/view"));
+
+var _navbar = _interopRequireDefault(require("./components/navbar/navbar"));
+
+var _toolbar = _interopRequireDefault(require("./components/toolbar/toolbar"));
+
+var _subnavbar = _interopRequireDefault(require("./components/subnavbar/subnavbar"));
+
+var _touchRipple = _interopRequireDefault(require("./components/touch-ripple/touch-ripple"));
+
+var _modal = _interopRequireDefault(require("./components/modal/modal"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_appClass.default.use([_device.default, _support.default, _utils2.default, _resize.default, _request2.default, _touch.default, _clicks.default, _router.default, _history.default, _serviceWorker.default, _store.default, _statusbar.default, _view.default, _navbar.default, _toolbar.default, _subnavbar.default, _touchRipple.default, _modal.default]);
+
+var _default = _appClass.default;
+exports.default = _default;
diff --git a/www/assets/framework7/cjs/framework7.js b/www/assets/framework7/cjs/framework7.js
new file mode 100644
index 000000000..b59fecfa7
--- /dev/null
+++ b/www/assets/framework7/cjs/framework7.js
@@ -0,0 +1,98 @@
+/**
+ * Framework7 6.3.16
+ * Full featured mobile HTML framework for building iOS & Android apps
+ * https://framework7.io/
+ *
+ * Copyright 2014-2022 Vladimir Kharlampidi
+ *
+ * Released under the MIT License
+ *
+ * Released on: February 10, 2022
+ */
+
+"use strict";
+
+exports.__esModule = true;
+exports.utils = exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("./shared/dom7"));
+
+exports.Dom7 = _dom.default;
+
+var _appClass = _interopRequireDefault(require("./components/app/app-class"));
+
+var _request = _interopRequireDefault(require("./shared/request"));
+
+exports.request = _request.default;
+
+var utils = _interopRequireWildcard(require("./shared/utils"));
+
+exports.utils = utils;
+
+var _getSupport = require("./shared/get-support");
+
+exports.getSupport = _getSupport.getSupport;
+
+var _getDevice = require("./shared/get-device");
+
+exports.getDevice = _getDevice.getDevice;
+
+var _device = _interopRequireDefault(require("./modules/device/device"));
+
+var _support = _interopRequireDefault(require("./modules/support/support"));
+
+var _utils2 = _interopRequireDefault(require("./modules/utils/utils"));
+
+var _resize = _interopRequireDefault(require("./modules/resize/resize"));
+
+var _request2 = _interopRequireDefault(require("./modules/request/request"));
+
+var _touch = _interopRequireDefault(require("./modules/touch/touch"));
+
+var _clicks = _interopRequireDefault(require("./modules/clicks/clicks"));
+
+var _router = _interopRequireDefault(require("./modules/router/router"));
+
+var _componentLoader = _interopRequireDefault(require("./modules/router/component-loader"));
+
+var _component = _interopRequireWildcard(require("./modules/component/component"));
+
+exports.Component = _component.Component;
+exports.$jsx = _component.$jsx;
+
+var _history = _interopRequireDefault(require("./modules/history/history"));
+
+var _serviceWorker = _interopRequireDefault(require("./modules/service-worker/service-worker"));
+
+var _store = _interopRequireWildcard(require("./modules/store/store"));
+
+exports.createStore = _store.createStore;
+
+var _statusbar = _interopRequireDefault(require("./components/statusbar/statusbar"));
+
+var _view = _interopRequireDefault(require("./components/view/view"));
+
+var _navbar = _interopRequireDefault(require("./components/navbar/navbar"));
+
+var _toolbar = _interopRequireDefault(require("./components/toolbar/toolbar"));
+
+var _subnavbar = _interopRequireDefault(require("./components/subnavbar/subnavbar"));
+
+var _touchRipple = _interopRequireDefault(require("./components/touch-ripple/touch-ripple"));
+
+var _modal = _interopRequireDefault(require("./components/modal/modal"));
+
+var _routerClass = _interopRequireDefault(require("./modules/router/router-class"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+_routerClass.default.use([_componentLoader.default]);
+
+_appClass.default.use([_device.default, _support.default, _utils2.default, _resize.default, _request2.default, _touch.default, _clicks.default, _router.default, _history.default, _component.default, _serviceWorker.default, _store.default, _statusbar.default, _view.default, _navbar.default, _toolbar.default, _subnavbar.default, _touchRipple.default, _modal.default]);
+
+var _default = _appClass.default;
+exports.default = _default;
diff --git a/www/assets/framework7/cjs/modules/clicks/clicks.js b/www/assets/framework7/cjs/modules/clicks/clicks.js
new file mode 100644
index 000000000..f0a52e6bb
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/clicks/clicks.js
@@ -0,0 +1,115 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _viewClass = _interopRequireDefault(require("../../components/view/view-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function initClicks(app) {
+ function handleClicks(e) {
+ var window = (0, _ssrWindow.getWindow)();
+ var $clickedEl = (0, _dom.default)(e.target);
+ var $clickedLinkEl = $clickedEl.closest('a');
+ var isLink = $clickedLinkEl.length > 0;
+ var url = isLink && $clickedLinkEl.attr('href'); // Check if link is external
+
+ if (isLink) {
+ if ($clickedLinkEl.is(app.params.clicks.externalLinks) || // eslint-disable-next-line
+ url && url.indexOf('javascript:') >= 0) {
+ var target = $clickedLinkEl.attr('target');
+
+ if (url && window.cordova && window.cordova.InAppBrowser && (target === '_system' || target === '_blank')) {
+ e.preventDefault();
+ window.cordova.InAppBrowser.open(url, target);
+ } else if (url && window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Browser && (target === '_system' || target === '_blank')) {
+ e.preventDefault();
+ window.Capacitor.Plugins.Browser.open({
+ url: url
+ });
+ }
+
+ return;
+ }
+ } // Modules Clicks
+
+
+ Object.keys(app.modules).forEach(function (moduleName) {
+ var moduleClicks = app.modules[moduleName].clicks;
+ if (!moduleClicks) return;
+ if (e.preventF7Router) return;
+ Object.keys(moduleClicks).forEach(function (clickSelector) {
+ var matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);
+
+ if (matchingClickedElement.length > 0) {
+ moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);
+ }
+ });
+ }); // Load Page
+
+ var clickedLinkData = {};
+
+ if (isLink) {
+ e.preventDefault();
+ clickedLinkData = $clickedLinkEl.dataset();
+ }
+
+ clickedLinkData.clickedEl = $clickedLinkEl[0]; // Prevent Router
+
+ if (e.preventF7Router) return;
+ if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;
+ var validUrl = url && url.length > 0 && url[0] !== '#';
+
+ if (validUrl || $clickedLinkEl.hasClass('back')) {
+ var view;
+
+ if (clickedLinkData.view && clickedLinkData.view === 'current') {
+ view = app.views.current;
+ } else if (clickedLinkData.view) {
+ view = (0, _dom.default)(clickedLinkData.view)[0].f7View;
+ } else {
+ view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;
+
+ if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {
+ if (typeof view.params.linksView === 'string') view = (0, _dom.default)(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof _viewClass.default) view = view.params.linksView;
+ }
+ }
+
+ if (!view) {
+ if (app.views.main) view = app.views.main;
+ }
+
+ if (!view || !view.router) return;
+
+ if ($clickedLinkEl[0].f7RouteProps) {
+ clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;
+ }
+
+ if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);else view.router.navigate(url, clickedLinkData);
+ }
+ }
+
+ app.on('click', handleClicks);
+}
+
+var _default = {
+ name: 'clicks',
+ params: {
+ clicks: {
+ // External Links
+ externalLinks: '.external'
+ }
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ initClicks(app);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/$h.js b/www/assets/framework7/cjs/modules/component/$h.js
new file mode 100644
index 000000000..5278d976f
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/$h.js
@@ -0,0 +1,31 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _htm = _interopRequireDefault(require("htm"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var ignoreChildren = [false, null, '', undefined];
+
+var h = function h(type, props) {
+ for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+ children[_key - 2] = arguments[_key];
+ }
+
+ return {
+ type: type,
+ props: props || {},
+ children: (0, _utils.flattenArray)(children.filter(function (child) {
+ return ignoreChildren.indexOf(child) < 0;
+ }))
+ };
+};
+
+var $h = _htm.default.bind(h);
+
+var _default = $h;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/$jsx.js b/www/assets/framework7/cjs/modules/component/$jsx.js
new file mode 100644
index 000000000..0cb20c827
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/$jsx.js
@@ -0,0 +1,31 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var ignoreChildren = [false, null, '', undefined];
+
+var $jsx = function $jsx(type, props) {
+ for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+ children[_key - 2] = arguments[_key];
+ }
+
+ var flatChildren = (0, _utils.flattenArray)((children || []).filter(function (child) {
+ return ignoreChildren.indexOf(child) < 0;
+ }));
+
+ if (type === 'Fragment') {
+ return flatChildren;
+ }
+
+ return {
+ type: type,
+ props: props || {},
+ children: flatChildren
+ };
+};
+
+var _default = $jsx;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/component-class.js b/www/assets/framework7/cjs/modules/component/component-class.js
new file mode 100644
index 000000000..2dc3eaa56
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/component-class.js
@@ -0,0 +1,434 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _$h = _interopRequireDefault(require("./$h"));
+
+var _utils = require("../../shared/utils");
+
+var _vdom = _interopRequireDefault(require("./vdom"));
+
+var _patch = _interopRequireDefault(require("./patch"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint no-underscore-dangle: "off" */
+var Component = /*#__PURE__*/function () {
+ function Component(app, component, props, _temp) {
+ var _this = this;
+
+ if (props === void 0) {
+ props = {};
+ }
+
+ var _ref = _temp === void 0 ? {} : _temp,
+ el = _ref.el,
+ context = _ref.context,
+ children = _ref.children;
+
+ var document = (0, _ssrWindow.getDocument)();
+ (0, _utils.merge)(this, {
+ f7: app,
+ props: props || {},
+ context: context || {},
+ id: component.id || (0, _utils.id)(),
+ children: children || [],
+ theme: {
+ ios: app.theme === 'ios',
+ md: app.theme === 'md',
+ aurora: app.theme === 'aurora'
+ },
+ style: component.style,
+ __updateQueue: [],
+ __eventHandlers: [],
+ __onceEventHandlers: [],
+ __onBeforeMount: [],
+ __onMounted: [],
+ __onBeforeUpdate: [],
+ __onUpdated: [],
+ __onBeforeUnmount: [],
+ __onUnmounted: []
+ });
+
+ var createComponent = function createComponent() {
+ return component(_this.props, _this.getComponentContext(true));
+ };
+
+ var getRenderFuncion = function getRenderFuncion(componentResult) {
+ return new Promise(function (resolve, reject) {
+ if (typeof componentResult === 'function') {
+ resolve(componentResult);
+ } else if (componentResult instanceof Promise) {
+ componentResult.then(function (render) {
+ resolve(render);
+ }).catch(function (err) {
+ reject(err);
+ });
+ } else {
+ reject(new Error('Framework7: Component render function is not a "function" type. Didn\'t you forget to "return $render"?'));
+ }
+ });
+ };
+
+ return new Promise(function (resolve, reject) {
+ var componentResult = createComponent();
+ getRenderFuncion(componentResult).then(function (render) {
+ _this.renderFunction = render;
+
+ var tree = _this.render();
+
+ if (el) {
+ _this.vnode = (0, _vdom.default)(tree, _this, true);
+
+ if (_this.style) {
+ _this.styleEl = document.createElement('style');
+ _this.styleEl.innerHTML = _this.style;
+ }
+
+ _this.el = el;
+ (0, _patch.default)(_this.el, _this.vnode);
+ _this.el = _this.vnode.elm;
+ _this.$el = (0, _dom.default)(_this.el);
+
+ _this.attachEvents();
+
+ _this.el.f7Component = _this;
+
+ _this.mount();
+
+ resolve(_this);
+ return;
+ } // Make Dom
+
+
+ if (tree) {
+ _this.vnode = (0, _vdom.default)(tree, _this, true);
+ _this.el = document.createElement(_this.vnode.sel || 'div');
+ (0, _patch.default)(_this.el, _this.vnode);
+ _this.$el = (0, _dom.default)(_this.el);
+ }
+
+ if (_this.style) {
+ _this.styleEl = document.createElement('style');
+ _this.styleEl.innerHTML = _this.style;
+ }
+
+ _this.attachEvents();
+
+ if (_this.el) {
+ _this.el.f7Component = _this;
+ }
+
+ resolve(_this);
+ }).catch(function (err) {
+ reject(err);
+ });
+ });
+ }
+
+ var _proto = Component.prototype;
+
+ _proto.on = function on(eventName, handler) {
+ if (!this.__eventHandlers) return;
+
+ this.__eventHandlers.push({
+ eventName: eventName,
+ handler: handler
+ });
+ };
+
+ _proto.once = function once(eventName, handler) {
+ if (!this.__eventHandlers) return;
+
+ this.__onceEventHandlers.push({
+ eventName: eventName,
+ handler: handler
+ });
+ };
+
+ _proto.getComponentRef = function getComponentRef() {
+ var self = this;
+ return function (initialValue) {
+ var value = initialValue;
+ var obj = {};
+ Object.defineProperty(obj, 'value', {
+ get: function get() {
+ return value;
+ },
+ set: function set(v) {
+ value = v;
+ self.update();
+ }
+ });
+ return obj;
+ };
+ };
+
+ _proto.getComponentStore = function getComponentStore() {
+ var _this2 = this;
+
+ var _this$f7$store = this.f7.store,
+ state = _this$f7$store.state,
+ _gettersPlain = _this$f7$store._gettersPlain,
+ dispatch = _this$f7$store.dispatch;
+ var $store = {
+ state: state,
+ dispatch: dispatch
+ };
+ $store.getters = new Proxy(_gettersPlain, {
+ get: function get(target, prop) {
+ var obj = target[prop];
+
+ var callback = function callback(v) {
+ obj.value = v;
+
+ _this2.update();
+ };
+
+ obj.onUpdated(callback);
+ return obj;
+ }
+ });
+ return $store;
+ };
+
+ _proto.getComponentContext = function getComponentContext(includeHooks) {
+ var _this3 = this;
+
+ var ctx = {
+ $f7route: this.context.f7route,
+ $f7router: this.context.f7router,
+ $h: _$h.default,
+ $: _dom.default,
+ $id: this.id,
+ $f7: this.f7,
+ $f7ready: this.f7ready.bind(this),
+ $theme: this.theme,
+ $tick: this.tick.bind(this),
+ $update: this.update.bind(this),
+ $emit: this.emit.bind(this),
+ $store: this.getComponentStore(),
+ $ref: this.getComponentRef(),
+ $el: {}
+ };
+ Object.defineProperty(ctx.$el, 'value', {
+ get: function get() {
+ return _this3.$el;
+ }
+ });
+ if (includeHooks) Object.assign(ctx, {
+ $on: this.on.bind(this),
+ $once: this.once.bind(this),
+ $onBeforeMount: function $onBeforeMount(handler) {
+ return _this3.__onBeforeMount.push(handler);
+ },
+ $onMounted: function $onMounted(handler) {
+ return _this3.__onMounted.push(handler);
+ },
+ $onBeforeUpdate: function $onBeforeUpdate(handler) {
+ return _this3.__onBeforeUpdate.push(handler);
+ },
+ $onUpdated: function $onUpdated(handler) {
+ return _this3.__onUpdated.push(handler);
+ },
+ $onBeforeUnmount: function $onBeforeUnmount(handler) {
+ return _this3.__onBeforeUnmount.push(handler);
+ },
+ $onUnmounted: function $onUnmounted(handler) {
+ return _this3.__onUnmounted.push(handler);
+ }
+ });
+ return ctx;
+ };
+
+ _proto.render = function render() {
+ return this.renderFunction(this.getComponentContext());
+ };
+
+ _proto.emit = function emit(name, data) {
+ if (!this.el) return;
+ this.$el.trigger(name, data);
+ };
+
+ _proto.attachEvents = function attachEvents() {
+ var $el = this.$el;
+ if (!this.__eventHandlers) return;
+
+ this.__eventHandlers.forEach(function (_ref2) {
+ var eventName = _ref2.eventName,
+ handler = _ref2.handler;
+ $el.on((0, _utils.eventNameToColonCase)(eventName), handler);
+ });
+
+ this.__onceEventHandlers.forEach(function (_ref3) {
+ var eventName = _ref3.eventName,
+ handler = _ref3.handler;
+ $el.once((0, _utils.eventNameToColonCase)(eventName), handler);
+ });
+ };
+
+ _proto.detachEvents = function detachEvents() {
+ var $el = this.$el;
+ if (!this.__eventHandlers) return;
+
+ this.__eventHandlers.forEach(function (_ref4) {
+ var eventName = _ref4.eventName,
+ handler = _ref4.handler;
+ $el.on((0, _utils.eventNameToColonCase)(eventName), handler);
+ });
+
+ this.__onceEventHandlers.forEach(function (_ref5) {
+ var eventName = _ref5.eventName,
+ handler = _ref5.handler;
+ $el.once((0, _utils.eventNameToColonCase)(eventName), handler);
+ });
+ };
+
+ _proto.startUpdateQueue = function startUpdateQueue() {
+ var _this4 = this;
+
+ var window = (0, _ssrWindow.getWindow)();
+ if (this.__requestAnimationFrameId) return;
+
+ var update = function update() {
+ _this4.hook('onBeforeUpdate');
+
+ var tree = _this4.render(); // Make Dom
+
+
+ if (tree) {
+ var newVNode = (0, _vdom.default)(tree, _this4, false);
+ _this4.vnode = (0, _patch.default)(_this4.vnode, newVNode);
+ }
+ };
+
+ this.__requestAnimationFrameId = window.requestAnimationFrame(function () {
+ if (_this4.__updateIsPending) update();
+ var resolvers = [].concat(_this4.__updateQueue);
+ _this4.__updateQueue = [];
+ _this4.__updateIsPending = false;
+ window.cancelAnimationFrame(_this4.__requestAnimationFrameId);
+ delete _this4.__requestAnimationFrameId;
+ delete _this4.__updateIsPending;
+ resolvers.forEach(function (resolver) {
+ return resolver();
+ });
+ resolvers = [];
+ });
+ };
+
+ _proto.tick = function tick(callback) {
+ var _this5 = this;
+
+ return new Promise(function (resolve) {
+ function resolver() {
+ resolve();
+ if (callback) callback();
+ }
+
+ _this5.__updateQueue.push(resolver);
+
+ _this5.startUpdateQueue();
+ });
+ };
+
+ _proto.update = function update(callback) {
+ var _this6 = this;
+
+ if (this.__destroyed) return new Promise(function () {});
+ return new Promise(function (resolve) {
+ var resolver = function resolver() {
+ resolve();
+ if (callback) callback();
+ };
+
+ _this6.__updateIsPending = true;
+
+ _this6.__updateQueue.push(resolver);
+
+ _this6.startUpdateQueue();
+ });
+ };
+
+ _proto.setState = function setState(callback) {
+ return this.update(callback);
+ };
+
+ _proto.f7ready = function f7ready(callback) {
+ var _this7 = this;
+
+ if (this.f7.initialized) {
+ callback(this.f7);
+ return;
+ }
+
+ this.f7.once('init', function () {
+ callback(_this7.f7);
+ });
+ };
+
+ _proto.mount = function mount(mountMethod) {
+ this.hook('onBeforeMount', this.$el);
+ if (this.styleEl) (0, _dom.default)('head').append(this.styleEl);
+ if (mountMethod) mountMethod(this.el);
+ this.hook('onMounted', this.$el);
+ };
+
+ _proto.destroy = function destroy() {
+ if (this.__destroyed) return;
+ var window = (0, _ssrWindow.getWindow)();
+ this.hook('onBeforeUnmount');
+ if (this.styleEl) (0, _dom.default)(this.styleEl).remove();
+ this.detachEvents();
+ this.hook('onUnmounted'); // Delete component instance
+
+ if (this.el && this.el.f7Component) {
+ this.el.f7Component = null;
+ delete this.el.f7Component;
+ } // Patch with empty node
+
+
+ if (this.vnode) {
+ this.vnode = (0, _patch.default)(this.vnode, {
+ sel: this.vnode.sel,
+ data: {}
+ });
+ } // Clear update queue
+
+
+ window.cancelAnimationFrame(this.__requestAnimationFrameId);
+ this.__updateQueue = [];
+ this.__eventHandlers = [];
+ this.__onceEventHandlers = [];
+ this.__onBeforeMount = [];
+ this.__onMounted = [];
+ this.__onBeforeUpdate = [];
+ this.__onUpdated = [];
+ this.__onBeforeUnmount = [];
+ this.__onUnmounted = []; // Delete all props
+
+ (0, _utils.deleteProps)(this);
+ this.__destroyed = true;
+ };
+
+ _proto.hook = function hook(name) {
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ if (this.__destroyed) return;
+ this["__" + name].forEach(function (handler) {
+ handler.apply(void 0, args);
+ });
+ };
+
+ return Component;
+}();
+
+var _default = Component;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/component.js b/www/assets/framework7/cjs/modules/component/component.js
new file mode 100644
index 000000000..a1ecc1ab0
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/component.js
@@ -0,0 +1,58 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _componentClass = _interopRequireDefault(require("./component-class"));
+
+exports.Component = _componentClass.default;
+
+var _parseComponent = _interopRequireDefault(require("./parse-component"));
+
+var _customComponents = _interopRequireDefault(require("./custom-components"));
+
+var _$jsx = _interopRequireDefault(require("./$jsx"));
+
+exports.$jsx = _$jsx.default;
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function registerComponent(tagName, component) {
+ _customComponents.default[tagName] = component;
+}
+
+function unregisterComponent(tagName) {
+ delete _customComponents.default[tagName];
+}
+
+var _default = {
+ name: 'component',
+ static: {
+ Component: _componentClass.default,
+ registerComponent: registerComponent,
+ unregisterComponent: unregisterComponent
+ },
+ create: function create() {
+ var app = this;
+ app.component = {
+ registerComponent: registerComponent,
+ unregisterComponent: unregisterComponent,
+ parse: function parse(componentString) {
+ return (0, _parseComponent.default)(componentString);
+ },
+ create: function create(component, props, _ref) {
+ var root = _ref.root,
+ el = _ref.el,
+ context = _ref.context,
+ children = _ref.children;
+ return new _componentClass.default(app, component, props, {
+ root: root,
+ el: el,
+ context: context,
+ children: children
+ });
+ }
+ };
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/custom-components.js b/www/assets/framework7/cjs/modules/component/custom-components.js
new file mode 100644
index 000000000..8882b4497
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/custom-components.js
@@ -0,0 +1,6 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/eventslisteners.js b/www/assets/framework7/cjs/modules/component/eventslisteners.js
new file mode 100644
index 000000000..b84ef4854
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/eventslisteners.js
@@ -0,0 +1,90 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function invokeHandler(handler, event, args) {
+ if (typeof handler === 'function') {
+ // call function handler
+ handler.apply(void 0, [event].concat(args));
+ }
+}
+
+function handleEvent(event, args, vnode) {
+ var name = event.type;
+ var on = vnode.data.on; // call event handler(s) if exists
+
+ if (on && on[name]) {
+ invokeHandler(on[name], event, args, vnode);
+ }
+}
+
+function createListener() {
+ return function handler(event) {
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ handleEvent(event, args, handler.vnode);
+ };
+}
+
+function updateEvents(oldVnode, vnode) {
+ var oldOn = oldVnode.data.on;
+ var oldListener = oldVnode.listener;
+ var oldElm = oldVnode.elm;
+ var on = vnode && vnode.data.on;
+ var elm = vnode && vnode.elm; // optimization for reused immutable handlers
+
+ if (oldOn === on) {
+ return;
+ } // remove existing listeners which no longer used
+
+
+ if (oldOn && oldListener) {
+ // if element changed or deleted we remove all existing listeners unconditionally
+ if (!on) {
+ Object.keys(oldOn).forEach(function (name) {
+ (0, _dom.default)(oldElm).off(name, oldListener);
+ });
+ } else {
+ Object.keys(oldOn).forEach(function (name) {
+ if (!on[name]) {
+ (0, _dom.default)(oldElm).off(name, oldListener);
+ }
+ });
+ }
+ } // add new listeners which has not already attached
+
+
+ if (on) {
+ // reuse existing listener or create new
+ var listener = oldVnode.listener || createListener();
+ vnode.listener = listener; // update vnode for listener
+
+ listener.vnode = vnode; // if element changed or added we add all needed listeners unconditionally
+
+ if (!oldOn) {
+ Object.keys(on).forEach(function (name) {
+ (0, _dom.default)(elm).on(name, listener);
+ });
+ } else {
+ Object.keys(on).forEach(function (name) {
+ if (!oldOn[name]) {
+ (0, _dom.default)(elm).on(name, listener);
+ }
+ });
+ }
+ }
+}
+
+var _default = {
+ create: updateEvents,
+ update: updateEvents,
+ destroy: updateEvents
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/parse-component.js b/www/assets/framework7/cjs/modules/component/parse-component.js
new file mode 100644
index 000000000..8d05f1745
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/parse-component.js
@@ -0,0 +1,80 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function parseComponent(componentString) {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var componentId = (0, _utils.id)();
+ var callbackCreateName = "f7_component_create_callback_" + componentId; // Template
+
+ var template;
+ var hasTemplate = componentString.match(//);
+
+ if (hasTemplate) {
+ template = componentString.split(//).filter(function (item, index) {
+ return index > 0;
+ }).join('').split('').filter(function (item, index, arr) {
+ return index < arr.length - 1;
+ }).join('').replace(/{{#raw}}([ \n]*)([ \n]*){{\/raw}}/g, '/template>{{/raw}}').replace(/([ \n])([ \n])/g, '/template>{{/raw}}$1');
+ } // Parse Styles
+
+
+ var style = null;
+
+ if (componentString.indexOf('')[0];
+ }
+
+ if (componentString.indexOf('')[0];
+ } // Parse Script
+
+
+ var scriptContent;
+
+ if (componentString.indexOf('')[0].trim();
+ } else {
+ scriptContent = 'return () => {return $render}';
+ }
+
+ if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}'; // Parse Template
+
+ if (template) {
+ scriptContent = scriptContent.replace('$render', "function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h`" + template + "`\n }\n ").replace(/export default/g, 'return');
+ } // Execute Script
+
+
+ scriptContent = "window." + callbackCreateName + " = function () {" + scriptContent + "}"; // Insert Script El
+
+ var scriptEl = document.createElement('script');
+ scriptEl.innerHTML = scriptContent;
+ (0, _dom.default)('head').append(scriptEl);
+ var component = window[callbackCreateName](); // Remove Script El
+
+ (0, _dom.default)(scriptEl).remove();
+ window[callbackCreateName] = null;
+ delete window[callbackCreateName]; // Assign Style
+
+ if (style) {
+ component.style = style;
+ } // Component ID
+
+
+ component.id = componentId;
+ return component;
+}
+
+var _default = parseComponent;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/patch.js b/www/assets/framework7/cjs/modules/component/patch.js
new file mode 100644
index 000000000..5934591bd
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/patch.js
@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _snabbdom = require("./snabbdom/snabbdom");
+
+var _attributes = _interopRequireDefault(require("./snabbdom/modules/attributes"));
+
+var _props = _interopRequireDefault(require("./snabbdom/modules/props"));
+
+var _style = _interopRequireDefault(require("./snabbdom/modules/style"));
+
+var _eventslisteners = _interopRequireDefault(require("./eventslisteners"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint import/no-named-as-default: off */
+var patch = (0, _snabbdom.init)([_attributes.default, _props.default, _style.default, _eventslisteners.default]);
+var _default = patch;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/h.js b/www/assets/framework7/cjs/modules/component/snabbdom/h.js
new file mode 100644
index 000000000..bdba96da0
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/h.js
@@ -0,0 +1,72 @@
+"use strict";
+
+exports.__esModule = true;
+exports.h = h;
+exports.default = void 0;
+
+var _vnode = require("./vnode");
+
+var is = _interopRequireWildcard(require("./is"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function addNS(data, children, sel) {
+ data.ns = 'http://www.w3.org/2000/svg';
+
+ if (sel !== 'foreignObject' && children !== undefined) {
+ for (var i = 0; i < children.length; ++i) {
+ var childData = children[i].data;
+
+ if (childData !== undefined) {
+ addNS(childData, children[i].children, children[i].sel);
+ }
+ }
+ }
+}
+
+function h(sel, b, c) {
+ var data = {},
+ children,
+ text,
+ i;
+
+ if (c !== undefined) {
+ data = b;
+
+ if (is.array(c)) {
+ children = c;
+ } else if (is.primitive(c)) {
+ text = c;
+ } else if (c && c.sel) {
+ children = [c];
+ }
+ } else if (b !== undefined) {
+ if (is.array(b)) {
+ children = b;
+ } else if (is.primitive(b)) {
+ text = b;
+ } else if (b && b.sel) {
+ children = [b];
+ } else {
+ data = b;
+ }
+ }
+
+ if (is.array(children)) {
+ for (i = 0; i < children.length; ++i) {
+ if (is.primitive(children[i])) children[i] = (0, _vnode.vnode)(undefined, undefined, undefined, children[i], undefined);
+ }
+ }
+
+ if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' && (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {
+ addNS(data, children, sel);
+ }
+
+ return (0, _vnode.vnode)(sel, data, children, text, undefined);
+}
+
+;
+var _default = h;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/helpers/attachto.js b/www/assets/framework7/cjs/modules/component/snabbdom/helpers/attachto.js
new file mode 100644
index 000000000..86a24aeaf
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/helpers/attachto.js
@@ -0,0 +1,62 @@
+"use strict";
+
+exports.__esModule = true;
+exports.attachTo = attachTo;
+exports.default = void 0;
+
+function pre(vnode, newVnode) {
+ var attachData = vnode.data.attachData; // Copy created placeholder and real element from old vnode
+
+ newVnode.data.attachData.placeholder = attachData.placeholder;
+ newVnode.data.attachData.real = attachData.real; // Mount real element in vnode so the patch process operates on it
+
+ vnode.elm = vnode.data.attachData.real;
+}
+
+function post(_, vnode) {
+ // Mount dummy placeholder in vnode so potential reorders use it
+ vnode.elm = vnode.data.attachData.placeholder;
+}
+
+function destroy(vnode) {
+ // Remove placeholder
+ if (vnode.elm !== undefined) {
+ vnode.elm.parentNode.removeChild(vnode.elm);
+ } // Remove real element from where it was inserted
+
+
+ vnode.elm = vnode.data.attachData.real;
+}
+
+function create(_, vnode) {
+ var real = vnode.elm,
+ attachData = vnode.data.attachData;
+ var placeholder = document.createElement('span'); // Replace actual element with dummy placeholder
+ // Snabbdom will then insert placeholder instead
+
+ vnode.elm = placeholder;
+ attachData.target.appendChild(real);
+ attachData.real = real;
+ attachData.placeholder = placeholder;
+}
+
+function attachTo(target, vnode) {
+ if (vnode.data === undefined) vnode.data = {};
+ if (vnode.data.hook === undefined) vnode.data.hook = {};
+ var data = vnode.data;
+ var hook = vnode.data.hook;
+ data.attachData = {
+ target: target,
+ placeholder: undefined,
+ real: undefined
+ };
+ hook.create = create;
+ hook.prepatch = pre;
+ hook.postpatch = post;
+ hook.destroy = destroy;
+ return vnode;
+}
+
+;
+var _default = attachTo;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/hooks.js b/www/assets/framework7/cjs/modules/component/snabbdom/hooks.js
new file mode 100644
index 000000000..9a390c31f
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/hooks.js
@@ -0,0 +1 @@
+"use strict";
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/htmldomapi.js b/www/assets/framework7/cjs/modules/component/snabbdom/htmldomapi.js
new file mode 100644
index 000000000..d69e8c48d
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/htmldomapi.js
@@ -0,0 +1,90 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.htmlDomApi = void 0;
+
+function createElement(tagName) {
+ return document.createElement(tagName);
+}
+
+function createElementNS(namespaceURI, qualifiedName) {
+ return document.createElementNS(namespaceURI, qualifiedName);
+}
+
+function createTextNode(text) {
+ return document.createTextNode(text);
+}
+
+function createComment(text) {
+ return document.createComment(text);
+}
+
+function insertBefore(parentNode, newNode, referenceNode) {
+ if (referenceNode && referenceNode.parentNode !== parentNode) {
+ if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;
+ }
+
+ parentNode.insertBefore(newNode, referenceNode);
+}
+
+function removeChild(node, child) {
+ if (!node) return;
+ node.removeChild(child);
+}
+
+function appendChild(node, child) {
+ node.appendChild(child);
+}
+
+function parentNode(node) {
+ return node.parentNode;
+}
+
+function nextSibling(node) {
+ return node.nextSibling;
+}
+
+function tagName(elm) {
+ return elm.tagName;
+}
+
+function setTextContent(node, text) {
+ node.textContent = text;
+}
+
+function getTextContent(node) {
+ return node.textContent;
+}
+
+function isElement(node) {
+ return node.nodeType === 1;
+}
+
+function isText(node) {
+ return node.nodeType === 3;
+}
+
+function isComment(node) {
+ return node.nodeType === 8;
+}
+
+var htmlDomApi = {
+ createElement: createElement,
+ createElementNS: createElementNS,
+ createTextNode: createTextNode,
+ createComment: createComment,
+ insertBefore: insertBefore,
+ removeChild: removeChild,
+ appendChild: appendChild,
+ parentNode: parentNode,
+ nextSibling: nextSibling,
+ tagName: tagName,
+ setTextContent: setTextContent,
+ getTextContent: getTextContent,
+ isElement: isElement,
+ isText: isText,
+ isComment: isComment
+};
+exports.htmlDomApi = htmlDomApi;
+var _default = htmlDomApi;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/is.js b/www/assets/framework7/cjs/modules/component/snabbdom/is.js
new file mode 100644
index 000000000..24465738a
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/is.js
@@ -0,0 +1,11 @@
+"use strict";
+
+exports.__esModule = true;
+exports.primitive = primitive;
+exports.array = void 0;
+var array = Array.isArray;
+exports.array = array;
+
+function primitive(s) {
+ return typeof s === 'string' || typeof s === 'number';
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/attributes.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/attributes.js
new file mode 100644
index 000000000..2111fe9e5
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/attributes.js
@@ -0,0 +1,61 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.attributesModule = void 0;
+var xlinkNS = 'http://www.w3.org/1999/xlink';
+var xmlNS = 'http://www.w3.org/XML/1998/namespace';
+var colonChar = 58;
+var xChar = 120;
+
+function updateAttrs(oldVnode, vnode) {
+ var key,
+ elm = vnode.elm,
+ oldAttrs = oldVnode.data.attrs,
+ attrs = vnode.data.attrs;
+ if (!oldAttrs && !attrs) return;
+ if (oldAttrs === attrs) return;
+ oldAttrs = oldAttrs || {};
+ attrs = attrs || {}; // update modified attributes, add new attributes
+
+ for (key in attrs) {
+ var cur = attrs[key];
+ var old = oldAttrs[key];
+
+ if (old !== cur) {
+ if (cur === true) {
+ elm.setAttribute(key, "");
+ } else if (cur === false) {
+ elm.removeAttribute(key);
+ } else {
+ if (key.charCodeAt(0) !== xChar) {
+ elm.setAttribute(key, cur);
+ } else if (key.charCodeAt(3) === colonChar) {
+ // Assume xml namespace
+ elm.setAttributeNS(xmlNS, key, cur);
+ } else if (key.charCodeAt(5) === colonChar) {
+ // Assume xlink namespace
+ elm.setAttributeNS(xlinkNS, key, cur);
+ } else {
+ elm.setAttribute(key, cur);
+ }
+ }
+ }
+ } // remove removed attributes
+ // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)
+ // the other option is to remove all attributes with value == undefined
+
+
+ for (key in oldAttrs) {
+ if (!(key in attrs)) {
+ elm.removeAttribute(key);
+ }
+ }
+}
+
+var attributesModule = {
+ create: updateAttrs,
+ update: updateAttrs
+};
+exports.attributesModule = attributesModule;
+var _default = attributesModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/class.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/class.js
new file mode 100644
index 000000000..e533ff1dc
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/class.js
@@ -0,0 +1,38 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.classModule = void 0;
+
+function updateClass(oldVnode, vnode) {
+ var cur,
+ name,
+ elm = vnode.elm,
+ oldClass = oldVnode.data.class,
+ klass = vnode.data.class;
+ if (!oldClass && !klass) return;
+ if (oldClass === klass) return;
+ oldClass = oldClass || {};
+ klass = klass || {};
+
+ for (name in oldClass) {
+ if (!klass[name]) {
+ elm.classList.remove(name);
+ }
+ }
+
+ for (name in klass) {
+ cur = klass[name];
+
+ if (cur !== oldClass[name]) {
+ elm.classList[cur ? 'add' : 'remove'](name);
+ }
+ }
+}
+
+var classModule = {
+ create: updateClass,
+ update: updateClass
+};
+exports.classModule = classModule;
+var _default = classModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/dataset.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/dataset.js
new file mode 100644
index 000000000..dbb88e567
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/dataset.js
@@ -0,0 +1,47 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.datasetModule = void 0;
+var CAPS_REGEX = /[A-Z]/g;
+
+function updateDataset(oldVnode, vnode) {
+ var elm = vnode.elm,
+ oldDataset = oldVnode.data.dataset,
+ dataset = vnode.data.dataset,
+ key;
+ if (!oldDataset && !dataset) return;
+ if (oldDataset === dataset) return;
+ oldDataset = oldDataset || {};
+ dataset = dataset || {};
+ var d = elm.dataset;
+
+ for (key in oldDataset) {
+ if (!dataset[key]) {
+ if (d) {
+ if (key in d) {
+ delete d[key];
+ }
+ } else {
+ elm.removeAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase());
+ }
+ }
+ }
+
+ for (key in dataset) {
+ if (oldDataset[key] !== dataset[key]) {
+ if (d) {
+ d[key] = dataset[key];
+ } else {
+ elm.setAttribute('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase(), dataset[key]);
+ }
+ }
+ }
+}
+
+var datasetModule = {
+ create: updateDataset,
+ update: updateDataset
+};
+exports.datasetModule = datasetModule;
+var _default = datasetModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/eventlisteners.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/eventlisteners.js
new file mode 100644
index 000000000..935f0375f
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/eventlisteners.js
@@ -0,0 +1,106 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.eventListenersModule = void 0;
+
+function invokeHandler(handler, vnode, event) {
+ if (typeof handler === "function") {
+ // call function handler
+ handler.call(vnode, event, vnode);
+ } else if (typeof handler === "object") {
+ // call handler with arguments
+ if (typeof handler[0] === "function") {
+ // special case for single argument for performance
+ if (handler.length === 2) {
+ handler[0].call(vnode, handler[1], event, vnode);
+ } else {
+ var args = handler.slice(1);
+ args.push(event);
+ args.push(vnode);
+ handler[0].apply(vnode, args);
+ }
+ } else {
+ // call multiple handlers
+ for (var i = 0; i < handler.length; i++) {
+ invokeHandler(handler[i]);
+ }
+ }
+ }
+}
+
+function handleEvent(event, vnode) {
+ var name = event.type,
+ on = vnode.data.on; // call event handler(s) if exists
+
+ if (on && on[name]) {
+ invokeHandler(on[name], vnode, event);
+ }
+}
+
+function createListener() {
+ return function handler(event) {
+ handleEvent(event, handler.vnode);
+ };
+}
+
+function updateEventListeners(oldVnode, vnode) {
+ var oldOn = oldVnode.data.on,
+ oldListener = oldVnode.listener,
+ oldElm = oldVnode.elm,
+ on = vnode && vnode.data.on,
+ elm = vnode && vnode.elm,
+ name; // optimization for reused immutable handlers
+
+ if (oldOn === on) {
+ return;
+ } // remove existing listeners which no longer used
+
+
+ if (oldOn && oldListener) {
+ // if element changed or deleted we remove all existing listeners unconditionally
+ if (!on) {
+ for (name in oldOn) {
+ // remove listener if element was changed or existing listeners removed
+ oldElm.removeEventListener(name, oldListener, false);
+ }
+ } else {
+ for (name in oldOn) {
+ // remove listener if existing listener removed
+ if (!on[name]) {
+ oldElm.removeEventListener(name, oldListener, false);
+ }
+ }
+ }
+ } // add new listeners which has not already attached
+
+
+ if (on) {
+ // reuse existing listener or create new
+ var listener = vnode.listener = oldVnode.listener || createListener(); // update vnode for listener
+
+ listener.vnode = vnode; // if element changed or added we add all needed listeners unconditionally
+
+ if (!oldOn) {
+ for (name in on) {
+ // add listener if element was changed or new listeners added
+ elm.addEventListener(name, listener, false);
+ }
+ } else {
+ for (name in on) {
+ // add listener if new listener added
+ if (!oldOn[name]) {
+ elm.addEventListener(name, listener, false);
+ }
+ }
+ }
+ }
+}
+
+var eventListenersModule = {
+ create: updateEventListeners,
+ update: updateEventListeners,
+ destroy: updateEventListeners
+};
+exports.eventListenersModule = eventListenersModule;
+var _default = eventListenersModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/hero.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/hero.js
new file mode 100644
index 000000000..0d959ca69
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/hero.js
@@ -0,0 +1,193 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.heroModule = void 0;
+var raf = typeof window !== 'undefined' && window.requestAnimationFrame || setTimeout;
+
+var nextFrame = function nextFrame(fn) {
+ raf(function () {
+ raf(fn);
+ });
+};
+
+function setNextFrame(obj, prop, val) {
+ nextFrame(function () {
+ obj[prop] = val;
+ });
+}
+
+function getTextNodeRect(textNode) {
+ var rect;
+
+ if (document.createRange) {
+ var range = document.createRange();
+ range.selectNodeContents(textNode);
+
+ if (range.getBoundingClientRect) {
+ rect = range.getBoundingClientRect();
+ }
+ }
+
+ return rect;
+}
+
+function calcTransformOrigin(isTextNode, textRect, boundingRect) {
+ if (isTextNode) {
+ if (textRect) {
+ //calculate pixels to center of text from left edge of bounding box
+ var relativeCenterX = textRect.left + textRect.width / 2 - boundingRect.left;
+ var relativeCenterY = textRect.top + textRect.height / 2 - boundingRect.top;
+ return relativeCenterX + 'px ' + relativeCenterY + 'px';
+ }
+ }
+
+ return '0 0'; //top left
+}
+
+function getTextDx(oldTextRect, newTextRect) {
+ if (oldTextRect && newTextRect) {
+ return oldTextRect.left + oldTextRect.width / 2 - (newTextRect.left + newTextRect.width / 2);
+ }
+
+ return 0;
+}
+
+function getTextDy(oldTextRect, newTextRect) {
+ if (oldTextRect && newTextRect) {
+ return oldTextRect.top + oldTextRect.height / 2 - (newTextRect.top + newTextRect.height / 2);
+ }
+
+ return 0;
+}
+
+function isTextElement(elm) {
+ return elm.childNodes.length === 1 && elm.childNodes[0].nodeType === 3;
+}
+
+var removed, created;
+
+function pre() {
+ removed = {};
+ created = [];
+}
+
+function create(oldVnode, vnode) {
+ var hero = vnode.data.hero;
+
+ if (hero && hero.id) {
+ created.push(hero.id);
+ created.push(vnode);
+ }
+}
+
+function destroy(vnode) {
+ var hero = vnode.data.hero;
+
+ if (hero && hero.id) {
+ var elm = vnode.elm;
+ vnode.isTextNode = isTextElement(elm); //is this a text node?
+
+ vnode.boundingRect = elm.getBoundingClientRect(); //save the bounding rectangle to a new property on the vnode
+
+ vnode.textRect = vnode.isTextNode ? getTextNodeRect(elm.childNodes[0]) : null; //save bounding rect of inner text node
+
+ var computedStyle = window.getComputedStyle(elm, void 0); //get current styles (includes inherited properties)
+
+ vnode.savedStyle = JSON.parse(JSON.stringify(computedStyle)); //save a copy of computed style values
+
+ removed[hero.id] = vnode;
+ }
+}
+
+function post() {
+ var i, id, newElm, oldVnode, oldElm, hRatio, wRatio, oldRect, newRect, dx, dy, origTransform, origTransition, newStyle, oldStyle, newComputedStyle, isTextNode, newTextRect, oldTextRect;
+
+ for (i = 0; i < created.length; i += 2) {
+ id = created[i];
+ newElm = created[i + 1].elm;
+ oldVnode = removed[id];
+
+ if (oldVnode) {
+ isTextNode = oldVnode.isTextNode && isTextElement(newElm); //Are old & new both text?
+
+ newStyle = newElm.style;
+ newComputedStyle = window.getComputedStyle(newElm, void 0); //get full computed style for new element
+
+ oldElm = oldVnode.elm;
+ oldStyle = oldElm.style; //Overall element bounding boxes
+
+ newRect = newElm.getBoundingClientRect();
+ oldRect = oldVnode.boundingRect; //previously saved bounding rect
+ //Text node bounding boxes & distances
+
+ if (isTextNode) {
+ newTextRect = getTextNodeRect(newElm.childNodes[0]);
+ oldTextRect = oldVnode.textRect;
+ dx = getTextDx(oldTextRect, newTextRect);
+ dy = getTextDy(oldTextRect, newTextRect);
+ } else {
+ //Calculate distances between old & new positions
+ dx = oldRect.left - newRect.left;
+ dy = oldRect.top - newRect.top;
+ }
+
+ hRatio = newRect.height / Math.max(oldRect.height, 1);
+ wRatio = isTextNode ? hRatio : newRect.width / Math.max(oldRect.width, 1); //text scales based on hRatio
+ // Animate new element
+
+ origTransform = newStyle.transform;
+ origTransition = newStyle.transition;
+ if (newComputedStyle.display === 'inline') newStyle.display = 'inline-block'; //this does not appear to have any negative side effects
+
+ newStyle.transition = origTransition + 'transform 0s';
+ newStyle.transformOrigin = calcTransformOrigin(isTextNode, newTextRect, newRect);
+ newStyle.opacity = '0';
+ newStyle.transform = origTransform + 'translate(' + dx + 'px, ' + dy + 'px) ' + 'scale(' + 1 / wRatio + ', ' + 1 / hRatio + ')';
+ setNextFrame(newStyle, 'transition', origTransition);
+ setNextFrame(newStyle, 'transform', origTransform);
+ setNextFrame(newStyle, 'opacity', '1'); // Animate old element
+
+ for (var key in oldVnode.savedStyle) {
+ if (parseInt(key) != key) {
+ var ms = key.substring(0, 2) === 'ms';
+ var moz = key.substring(0, 3) === 'moz';
+ var webkit = key.substring(0, 6) === 'webkit';
+ if (!ms && !moz && !webkit) oldStyle[key] = oldVnode.savedStyle[key];
+ }
+ }
+
+ oldStyle.position = 'absolute';
+ oldStyle.top = oldRect.top + 'px'; //start at existing position
+
+ oldStyle.left = oldRect.left + 'px';
+ oldStyle.width = oldRect.width + 'px'; //Needed for elements who were sized relative to their parents
+
+ oldStyle.height = oldRect.height + 'px'; //Needed for elements who were sized relative to their parents
+
+ oldStyle.margin = '0'; //Margin on hero element leads to incorrect positioning
+
+ oldStyle.transformOrigin = calcTransformOrigin(isTextNode, oldTextRect, oldRect);
+ oldStyle.transform = '';
+ oldStyle.opacity = '1';
+ document.body.appendChild(oldElm);
+ setNextFrame(oldStyle, 'transform', 'translate(' + -dx + 'px, ' + -dy + 'px) scale(' + wRatio + ', ' + hRatio + ')'); //scale must be on far right for translate to be correct
+
+ setNextFrame(oldStyle, 'opacity', '0');
+ oldElm.addEventListener('transitionend', function (ev) {
+ if (ev.propertyName === 'transform') document.body.removeChild(ev.target);
+ });
+ }
+ }
+
+ removed = created = undefined;
+}
+
+var heroModule = {
+ pre: pre,
+ create: create,
+ destroy: destroy,
+ post: post
+};
+exports.heroModule = heroModule;
+var _default = heroModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/module.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/module.js
new file mode 100644
index 000000000..9a390c31f
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/module.js
@@ -0,0 +1 @@
+"use strict";
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/props.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/props.js
new file mode 100644
index 000000000..0d10d6ff9
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/props.js
@@ -0,0 +1,40 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.propsModule = void 0;
+
+function updateProps(oldVnode, vnode) {
+ var key,
+ cur,
+ old,
+ elm = vnode.elm,
+ oldProps = oldVnode.data.props,
+ props = vnode.data.props;
+ if (!oldProps && !props) return;
+ if (oldProps === props) return;
+ oldProps = oldProps || {};
+ props = props || {};
+
+ for (key in oldProps) {
+ if (!props[key]) {
+ delete elm[key];
+ }
+ }
+
+ for (key in props) {
+ cur = props[key];
+ old = oldProps[key];
+
+ if (old !== cur && (key !== 'value' || elm[key] !== cur)) {
+ elm[key] = cur;
+ }
+ }
+}
+
+var propsModule = {
+ create: updateProps,
+ update: updateProps
+};
+exports.propsModule = propsModule;
+var _default = propsModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/modules/style.js b/www/assets/framework7/cjs/modules/component/snabbdom/modules/style.js
new file mode 100644
index 000000000..043e395ca
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/modules/style.js
@@ -0,0 +1,116 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.styleModule = void 0;
+var raf = typeof window !== 'undefined' && window.requestAnimationFrame || setTimeout;
+
+var nextFrame = function nextFrame(fn) {
+ raf(function () {
+ raf(fn);
+ });
+};
+
+function setNextFrame(obj, prop, val) {
+ nextFrame(function () {
+ obj[prop] = val;
+ });
+}
+
+function updateStyle(oldVnode, vnode) {
+ var cur,
+ name,
+ elm = vnode.elm,
+ oldStyle = oldVnode.data.style,
+ style = vnode.data.style;
+ if (!oldStyle && !style) return;
+ if (oldStyle === style) return;
+ oldStyle = oldStyle || {};
+ style = style || {};
+ var oldHasDel = ('delayed' in oldStyle);
+
+ for (name in oldStyle) {
+ if (!style[name]) {
+ if (name[0] === '-' && name[1] === '-') {
+ elm.style.removeProperty(name);
+ } else {
+ elm.style[name] = '';
+ }
+ }
+ }
+
+ for (name in style) {
+ cur = style[name];
+
+ if (name === 'delayed' && style.delayed) {
+ for (var name2 in style.delayed) {
+ cur = style.delayed[name2];
+
+ if (!oldHasDel || cur !== oldStyle.delayed[name2]) {
+ setNextFrame(elm.style, name2, cur);
+ }
+ }
+ } else if (name !== 'remove' && cur !== oldStyle[name]) {
+ if (name[0] === '-' && name[1] === '-') {
+ elm.style.setProperty(name, cur);
+ } else {
+ elm.style[name] = cur;
+ }
+ }
+ }
+}
+
+function applyDestroyStyle(vnode) {
+ var style,
+ name,
+ elm = vnode.elm,
+ s = vnode.data.style;
+ if (!s || !(style = s.destroy)) return;
+
+ for (name in style) {
+ elm.style[name] = style[name];
+ }
+}
+
+function applyRemoveStyle(vnode, rm) {
+ var s = vnode.data.style;
+
+ if (!s || !s.remove) {
+ rm();
+ return;
+ }
+
+ var name,
+ elm = vnode.elm,
+ i = 0,
+ compStyle,
+ style = s.remove,
+ amount = 0,
+ applied = [];
+
+ for (name in style) {
+ applied.push(name);
+ elm.style[name] = style[name];
+ }
+
+ compStyle = getComputedStyle(elm);
+ var props = compStyle['transition-property'].split(', ');
+
+ for (; i < props.length; ++i) {
+ if (applied.indexOf(props[i]) !== -1) amount++;
+ }
+
+ elm.addEventListener('transitionend', function (ev) {
+ if (ev.target === elm) --amount;
+ if (amount === 0) rm();
+ });
+}
+
+var styleModule = {
+ create: updateStyle,
+ update: updateStyle,
+ destroy: applyDestroyStyle,
+ remove: applyRemoveStyle
+};
+exports.styleModule = styleModule;
+var _default = styleModule;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/snabbdom.bundle.js b/www/assets/framework7/cjs/modules/component/snabbdom/snabbdom.bundle.js
new file mode 100644
index 000000000..e9aff24cd
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/snabbdom.bundle.js
@@ -0,0 +1,33 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.snabbdomBundle = void 0;
+
+var _snabbdom = require("./snabbdom");
+
+var _attributes = require("./modules/attributes");
+
+var _class = require("./modules/class");
+
+var _props = require("./modules/props");
+
+var _style = require("./modules/style");
+
+var _eventlisteners = require("./modules/eventlisteners");
+
+var _h = require("./h");
+
+// for setting attributes on DOM elements
+// makes it easy to toggle classes
+// for setting properties on DOM elements
+// handles styling on elements with support for animations
+// attaches event listeners
+// helper function for creating vnodes
+var patch = (0, _snabbdom.init)([_attributes.attributesModule, _class.classModule, _props.propsModule, _style.styleModule, _eventlisteners.eventListenersModule]);
+var snabbdomBundle = {
+ patch: patch,
+ h: _h.h
+};
+exports.snabbdomBundle = snabbdomBundle;
+var _default = snabbdomBundle;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/snabbdom.js b/www/assets/framework7/cjs/modules/component/snabbdom/snabbdom.js
new file mode 100644
index 000000000..0c3d9cb8e
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/snabbdom.js
@@ -0,0 +1,374 @@
+"use strict";
+
+exports.__esModule = true;
+exports.init = init;
+exports.thunk = exports.h = void 0;
+
+var _vnode = _interopRequireDefault(require("./vnode"));
+
+var is = _interopRequireWildcard(require("./is"));
+
+var _htmldomapi = _interopRequireDefault(require("./htmldomapi"));
+
+var _h = require("./h");
+
+exports.h = _h.h;
+
+var _thunk = require("./thunk");
+
+exports.thunk = _thunk.thunk;
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function isUndef(s) {
+ return s === undefined;
+}
+
+function isDef(s) {
+ return s !== undefined;
+}
+
+var emptyNode = (0, _vnode.default)('', {}, [], undefined, undefined);
+
+function sameVnode(vnode1, vnode2) {
+ return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;
+}
+
+function isVnode(vnode) {
+ return vnode.sel !== undefined;
+}
+
+function createKeyToOldIdx(children, beginIdx, endIdx) {
+ var i,
+ map = {},
+ key,
+ ch;
+
+ for (i = beginIdx; i <= endIdx; ++i) {
+ ch = children[i];
+
+ if (ch != null) {
+ key = ch.key;
+ if (key !== undefined) map[key] = i;
+ }
+ }
+
+ return map;
+}
+
+var hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];
+
+function init(modules, domApi) {
+ var i,
+ j,
+ cbs = {};
+ var api = domApi !== undefined ? domApi : _htmldomapi.default;
+
+ for (i = 0; i < hooks.length; ++i) {
+ cbs[hooks[i]] = [];
+
+ for (j = 0; j < modules.length; ++j) {
+ var hook = modules[j][hooks[i]];
+
+ if (hook !== undefined) {
+ cbs[hooks[i]].push(hook);
+ }
+ }
+ }
+
+ function emptyNodeAt(elm) {
+ var id = elm.id ? '#' + elm.id : '';
+ var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';
+ return (0, _vnode.default)(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);
+ }
+
+ function createRmCb(childElm, listeners) {
+ return function rmCb() {
+ if (--listeners === 0) {
+ var parent_1 = api.parentNode(childElm);
+ api.removeChild(parent_1, childElm);
+ }
+ };
+ }
+
+ function createElm(vnode, insertedVnodeQueue) {
+ var i,
+ data = vnode.data;
+
+ if (data !== undefined) {
+ if (isDef(i = data.hook) && isDef(i = i.init)) {
+ i(vnode);
+ data = vnode.data;
+ }
+ }
+
+ var children = vnode.children,
+ sel = vnode.sel;
+
+ if (sel === '!') {
+ if (isUndef(vnode.text)) {
+ vnode.text = '';
+ }
+
+ vnode.elm = api.createComment(vnode.text);
+ } else if (sel !== undefined) {
+ // Parse selector
+ var hashIdx = sel.indexOf('#');
+ var dotIdx = sel.indexOf('.', hashIdx);
+ var hash = hashIdx > 0 ? hashIdx : sel.length;
+ var dot = dotIdx > 0 ? dotIdx : sel.length;
+ var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;
+ var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag) : api.createElement(tag);
+ if (hash < dot) elm.setAttribute('id', sel.slice(hash + 1, dot));
+ if (dotIdx > 0) elm.setAttribute('class', sel.slice(dot + 1).replace(/\./g, ' '));
+
+ for (i = 0; i < cbs.create.length; ++i) {
+ cbs.create[i](emptyNode, vnode);
+ }
+
+ if (is.array(children)) {
+ for (i = 0; i < children.length; ++i) {
+ var ch = children[i];
+
+ if (ch != null) {
+ api.appendChild(elm, createElm(ch, insertedVnodeQueue));
+ }
+ }
+ } else if (is.primitive(vnode.text)) {
+ api.appendChild(elm, api.createTextNode(vnode.text));
+ }
+
+ i = vnode.data.hook; // Reuse variable
+
+ if (isDef(i)) {
+ if (i.create) i.create(emptyNode, vnode);
+ if (i.insert) insertedVnodeQueue.push(vnode);
+ }
+ } else {
+ vnode.elm = api.createTextNode(vnode.text);
+ }
+
+ return vnode.elm;
+ }
+
+ function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {
+ for (; startIdx <= endIdx; ++startIdx) {
+ var ch = vnodes[startIdx];
+
+ if (ch != null) {
+ api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);
+ }
+ }
+ }
+
+ function invokeDestroyHook(vnode) {
+ var i,
+ j,
+ data = vnode.data;
+
+ if (data !== undefined) {
+ if (isDef(i = data.hook) && isDef(i = i.destroy)) i(vnode);
+
+ for (i = 0; i < cbs.destroy.length; ++i) {
+ cbs.destroy[i](vnode);
+ }
+
+ if (vnode.children !== undefined) {
+ for (j = 0; j < vnode.children.length; ++j) {
+ i = vnode.children[j];
+
+ if (i != null && typeof i !== "string") {
+ invokeDestroyHook(i);
+ }
+ }
+ }
+ }
+ }
+
+ function removeVnodes(parentElm, vnodes, startIdx, endIdx) {
+ for (; startIdx <= endIdx; ++startIdx) {
+ var i_1 = void 0,
+ listeners = void 0,
+ rm = void 0,
+ ch = vnodes[startIdx];
+
+ if (ch != null) {
+ if (isDef(ch.sel)) {
+ invokeDestroyHook(ch);
+ listeners = cbs.remove.length + 1;
+ rm = createRmCb(ch.elm, listeners);
+
+ for (i_1 = 0; i_1 < cbs.remove.length; ++i_1) {
+ cbs.remove[i_1](ch, rm);
+ }
+
+ if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {
+ i_1(ch, rm);
+ } else {
+ rm();
+ }
+ } else {
+ api.removeChild(parentElm, ch.elm);
+ }
+ }
+ }
+ }
+
+ function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {
+ var oldStartIdx = 0,
+ newStartIdx = 0;
+ var oldEndIdx = oldCh.length - 1;
+ var oldStartVnode = oldCh[0];
+ var oldEndVnode = oldCh[oldEndIdx];
+ var newEndIdx = newCh.length - 1;
+ var newStartVnode = newCh[0];
+ var newEndVnode = newCh[newEndIdx];
+ var oldKeyToIdx;
+ var idxInOld;
+ var elmToMove;
+ var before;
+
+ while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
+ if (oldStartVnode == null) {
+ oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left
+ } else if (oldEndVnode == null) {
+ oldEndVnode = oldCh[--oldEndIdx];
+ } else if (newStartVnode == null) {
+ newStartVnode = newCh[++newStartIdx];
+ } else if (newEndVnode == null) {
+ newEndVnode = newCh[--newEndIdx];
+ } else if (sameVnode(oldStartVnode, newStartVnode)) {
+ patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
+ oldStartVnode = oldCh[++oldStartIdx];
+ newStartVnode = newCh[++newStartIdx];
+ } else if (sameVnode(oldEndVnode, newEndVnode)) {
+ patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
+ oldEndVnode = oldCh[--oldEndIdx];
+ newEndVnode = newCh[--newEndIdx];
+ } else if (sameVnode(oldStartVnode, newEndVnode)) {
+ patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
+ api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));
+ oldStartVnode = oldCh[++oldStartIdx];
+ newEndVnode = newCh[--newEndIdx];
+ } else if (sameVnode(oldEndVnode, newStartVnode)) {
+ patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
+ api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
+ oldEndVnode = oldCh[--oldEndIdx];
+ newStartVnode = newCh[++newStartIdx];
+ } else {
+ if (oldKeyToIdx === undefined) {
+ oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
+ }
+
+ idxInOld = oldKeyToIdx[newStartVnode.key];
+
+ if (isUndef(idxInOld)) {
+ api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);
+ newStartVnode = newCh[++newStartIdx];
+ } else {
+ elmToMove = oldCh[idxInOld];
+
+ if (elmToMove.sel !== newStartVnode.sel) {
+ api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);
+ } else {
+ patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);
+ oldCh[idxInOld] = undefined;
+ api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);
+ }
+
+ newStartVnode = newCh[++newStartIdx];
+ }
+ }
+ }
+
+ if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {
+ if (oldStartIdx > oldEndIdx) {
+ before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;
+ addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
+ } else {
+ removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
+ }
+ }
+ }
+
+ function patchVnode(oldVnode, vnode, insertedVnodeQueue) {
+ var i, hook;
+
+ if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {
+ i(oldVnode, vnode);
+ }
+
+ var elm = vnode.elm = oldVnode.elm;
+ var oldCh = oldVnode.children;
+ var ch = vnode.children;
+ if (oldVnode === vnode) return;
+
+ if (vnode.data !== undefined) {
+ for (i = 0; i < cbs.update.length; ++i) {
+ cbs.update[i](oldVnode, vnode);
+ }
+
+ i = vnode.data.hook;
+ if (isDef(i) && isDef(i = i.update)) i(oldVnode, vnode);
+ }
+
+ if (isUndef(vnode.text)) {
+ if (isDef(oldCh) && isDef(ch)) {
+ if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue);
+ } else if (isDef(ch)) {
+ if (isDef(oldVnode.text)) api.setTextContent(elm, '');
+ addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
+ } else if (isDef(oldCh)) {
+ removeVnodes(elm, oldCh, 0, oldCh.length - 1);
+ } else if (isDef(oldVnode.text)) {
+ api.setTextContent(elm, '');
+ }
+ } else if (oldVnode.text !== vnode.text) {
+ api.setTextContent(elm, vnode.text);
+ }
+
+ if (isDef(hook) && isDef(i = hook.postpatch)) {
+ i(oldVnode, vnode);
+ }
+ }
+
+ return function patch(oldVnode, vnode) {
+ var i, elm, parent;
+ var insertedVnodeQueue = [];
+
+ for (i = 0; i < cbs.pre.length; ++i) {
+ cbs.pre[i]();
+ }
+
+ if (!isVnode(oldVnode)) {
+ oldVnode = emptyNodeAt(oldVnode);
+ }
+
+ if (sameVnode(oldVnode, vnode)) {
+ patchVnode(oldVnode, vnode, insertedVnodeQueue);
+ } else {
+ elm = oldVnode.elm;
+ parent = api.parentNode(elm);
+ createElm(vnode, insertedVnodeQueue);
+
+ if (parent !== null) {
+ api.insertBefore(parent, vnode.elm, api.nextSibling(elm));
+ removeVnodes(parent, [oldVnode], 0, 0);
+ }
+ }
+
+ for (i = 0; i < insertedVnodeQueue.length; ++i) {
+ insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);
+ }
+
+ for (i = 0; i < cbs.post.length; ++i) {
+ cbs.post[i]();
+ }
+
+ return vnode;
+ };
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/thunk.js b/www/assets/framework7/cjs/modules/component/snabbdom/thunk.js
new file mode 100644
index 000000000..bf8e21614
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/thunk.js
@@ -0,0 +1,66 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = exports.thunk = void 0;
+
+var _h = require("./h");
+
+function copyToThunk(vnode, thunk) {
+ thunk.elm = vnode.elm;
+ vnode.data.fn = thunk.data.fn;
+ vnode.data.args = thunk.data.args;
+ thunk.data = vnode.data;
+ thunk.children = vnode.children;
+ thunk.text = vnode.text;
+ thunk.elm = vnode.elm;
+}
+
+function init(thunk) {
+ var cur = thunk.data;
+ var vnode = cur.fn.apply(undefined, cur.args);
+ copyToThunk(vnode, thunk);
+}
+
+function prepatch(oldVnode, thunk) {
+ var i,
+ old = oldVnode.data,
+ cur = thunk.data;
+ var oldArgs = old.args,
+ args = cur.args;
+
+ if (old.fn !== cur.fn || oldArgs.length !== args.length) {
+ copyToThunk(cur.fn.apply(undefined, args), thunk);
+ return;
+ }
+
+ for (i = 0; i < args.length; ++i) {
+ if (oldArgs[i] !== args[i]) {
+ copyToThunk(cur.fn.apply(undefined, args), thunk);
+ return;
+ }
+ }
+
+ copyToThunk(oldVnode, thunk);
+}
+
+var thunk = function thunk(sel, key, fn, args) {
+ if (args === undefined) {
+ args = fn;
+ fn = key;
+ key = undefined;
+ }
+
+ return (0, _h.h)(sel, {
+ key: key,
+ hook: {
+ init: init,
+ prepatch: prepatch
+ },
+ fn: fn,
+ args: args
+ });
+};
+
+exports.thunk = thunk;
+var _default = thunk;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/tovnode.js b/www/assets/framework7/cjs/modules/component/snabbdom/tovnode.js
new file mode 100644
index 000000000..ff4c7047a
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/tovnode.js
@@ -0,0 +1,57 @@
+"use strict";
+
+exports.__esModule = true;
+exports.toVNode = toVNode;
+exports.default = void 0;
+
+var _vnode = _interopRequireDefault(require("./vnode"));
+
+var _htmldomapi = _interopRequireDefault(require("./htmldomapi"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function toVNode(node, domApi) {
+ var api = domApi !== undefined ? domApi : _htmldomapi.default;
+ var text;
+
+ if (api.isElement(node)) {
+ var id = node.id ? '#' + node.id : '';
+ var cn = node.getAttribute('class');
+ var c = cn ? '.' + cn.split(' ').join('.') : '';
+ var sel = api.tagName(node).toLowerCase() + id + c;
+ var attrs = {};
+ var children = [];
+ var name_1;
+ var i = void 0,
+ n = void 0;
+ var elmAttrs = node.attributes;
+ var elmChildren = node.childNodes;
+
+ for (i = 0, n = elmAttrs.length; i < n; i++) {
+ name_1 = elmAttrs[i].nodeName;
+
+ if (name_1 !== 'id' && name_1 !== 'class') {
+ attrs[name_1] = elmAttrs[i].nodeValue;
+ }
+ }
+
+ for (i = 0, n = elmChildren.length; i < n; i++) {
+ children.push(toVNode(elmChildren[i]));
+ }
+
+ return (0, _vnode.default)(sel, {
+ attrs: attrs
+ }, children, undefined, node);
+ } else if (api.isText(node)) {
+ text = api.getTextContent(node);
+ return (0, _vnode.default)(undefined, undefined, undefined, text, node);
+ } else if (api.isComment(node)) {
+ text = api.getTextContent(node);
+ return (0, _vnode.default)('!', {}, [], text, node);
+ } else {
+ return (0, _vnode.default)('', {}, [], undefined, node);
+ }
+}
+
+var _default = toVNode;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/snabbdom/vnode.js b/www/assets/framework7/cjs/modules/component/snabbdom/vnode.js
new file mode 100644
index 000000000..428eb0df3
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/snabbdom/vnode.js
@@ -0,0 +1,20 @@
+"use strict";
+
+exports.__esModule = true;
+exports.vnode = vnode;
+exports.default = void 0;
+
+function vnode(sel, data, children, text, elm) {
+ var key = data === undefined ? undefined : data.key;
+ return {
+ sel: sel,
+ data: data,
+ children: children,
+ text: text,
+ elm: elm,
+ key: key
+ };
+}
+
+var _default = vnode;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/component/vdom.js b/www/assets/framework7/cjs/modules/component/vdom.js
new file mode 100644
index 000000000..ae25dfa19
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/component/vdom.js
@@ -0,0 +1,393 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = vdom;
+
+var _h = _interopRequireDefault(require("./snabbdom/h"));
+
+var _customComponents = _interopRequireDefault(require("./custom-components"));
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _readOnlyError(name) { throw new TypeError("\"" + name + "\" is read-only"); }
+
+var SELF_CLOSING = 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(' ');
+var PROPS_ATTRS = 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(' ');
+var BOOLEAN_PROPS = 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(' ');
+
+var getTagName = function getTagName(treeNode) {
+ return typeof treeNode.type === 'function' ? treeNode.type.name || 'CustomComponent' : treeNode.type;
+};
+
+var toCamelCase = function toCamelCase(name) {
+ return name.split('-').map(function (word, index) {
+ if (index === 0) return word.toLowerCase();
+ return word[0].toUpperCase() + word.substr(1);
+ }).join('');
+};
+
+var propsFromAttrs = function propsFromAttrs() {
+ var context = {};
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ args.forEach(function (obj) {
+ if (obj === void 0) {
+ obj = {};
+ }
+
+ Object.keys(obj).forEach(function (key) {
+ context[toCamelCase(key)] = obj[key];
+ });
+ });
+ return context;
+};
+
+var createCustomComponent = function createCustomComponent(_ref) {
+ var f7 = _ref.f7,
+ treeNode = _ref.treeNode,
+ vnode = _ref.vnode,
+ data = _ref.data;
+ var component = typeof treeNode.type === 'function' ? treeNode.type : _customComponents.default[treeNode.type];
+ f7.component.create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {
+ el: vnode.elm,
+ children: treeNode.children
+ }).then(function (c) {
+ if (vnode.data && vnode.data.on && c && c.$el) {
+ Object.keys(vnode.data.on).forEach(function (eventName) {
+ c.$el.on(eventName, vnode.data.on[eventName]);
+ });
+ } // eslint-disable-next-line
+
+
+ vnode.elm.__component__ = c;
+ });
+};
+
+var updateCustomComponent = function updateCustomComponent(vnode) {
+ // eslint-disable-next-line
+ var component = vnode && vnode.elm && vnode.elm.__component__;
+ if (!component) return;
+ var newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});
+ component.children = vnode.data.treeNode.children;
+ Object.assign(component.props, newProps);
+ component.update();
+};
+
+var destroyCustomComponent = function destroyCustomComponent(vnode) {
+ // eslint-disable-next-line
+ var component = vnode && vnode.elm && vnode.elm.__component__;
+
+ if (component) {
+ var el = component.el,
+ $el = component.$el;
+
+ if (vnode.data && vnode.data.on && $el) {
+ Object.keys(vnode.data.on).forEach(function (eventName) {
+ $el.off(eventName, vnode.data.on[eventName]);
+ });
+ }
+
+ if (component.destroy) component.destroy();
+ if (el && el.parentNode) el.parentNode.removeChild(el);
+ delete vnode.elm.__component__; // eslint-disable-line
+ }
+};
+
+var isCustomComponent = function isCustomComponent(treeNodeType) {
+ return typeof treeNodeType === 'function' || treeNodeType && treeNodeType.indexOf('-') > 0 && _customComponents.default[treeNodeType];
+};
+
+function getHooks(treeNode, data, f7, initial, isRoot) {
+ var hooks = {};
+ var insert = [];
+ var destroy = [];
+ var update = [];
+ var postpatch = [];
+ var isFakeElement = false;
+ var tagName = getTagName(treeNode);
+
+ if (data && data.attrs && data.attrs.component) {
+ // eslint-disable-next-line
+ data.attrs.component, _readOnlyError("tagName");
+ delete data.attrs.component;
+ isFakeElement = true;
+ }
+
+ var isCustom = isCustomComponent(treeNode.type);
+
+ if (isCustom) {
+ insert.push(function (vnode) {
+ if (vnode.sel !== tagName && !isFakeElement) return;
+ createCustomComponent({
+ f7: f7,
+ treeNode: treeNode,
+ vnode: vnode,
+ data: data
+ });
+ });
+ destroy.push(function (vnode) {
+ destroyCustomComponent(vnode);
+ });
+ update.push(function (oldVnode, vnode) {
+ updateCustomComponent(vnode);
+ });
+ }
+
+ if (!isCustom) {
+ if (!data || !data.attrs || !data.attrs.class) return hooks;
+ var classNames = data.attrs.class;
+ classNames.split(' ').forEach(function (className) {
+ if (!initial) {
+ insert.push.apply(insert, f7.getVnodeHooks('insert', className));
+ }
+
+ destroy.push.apply(destroy, f7.getVnodeHooks('destroy', className));
+ update.push.apply(update, f7.getVnodeHooks('update', className));
+ postpatch.push.apply(postpatch, f7.getVnodeHooks('postpatch', className));
+ });
+ }
+
+ if (isRoot && !initial) {
+ postpatch.push(function (oldVnode, vnode) {
+ var vn = vnode || oldVnode;
+ if (!vn) return;
+
+ if (vn.data && vn.data.component) {
+ vn.data.component.hook('onUpdated');
+ }
+ });
+ }
+
+ if (insert.length === 0 && destroy.length === 0 && update.length === 0 && postpatch.length === 0) {
+ return hooks;
+ }
+
+ if (insert.length) {
+ hooks.insert = function (vnode) {
+ insert.forEach(function (f) {
+ return f(vnode);
+ });
+ };
+ }
+
+ if (destroy.length) {
+ hooks.destroy = function (vnode) {
+ destroy.forEach(function (f) {
+ return f(vnode);
+ });
+ };
+ }
+
+ if (update.length) {
+ hooks.update = function (oldVnode, vnode) {
+ update.forEach(function (f) {
+ return f(oldVnode, vnode);
+ });
+ };
+ }
+
+ if (postpatch.length) {
+ hooks.postpatch = function (oldVnode, vnode) {
+ postpatch.forEach(function (f) {
+ return f(oldVnode, vnode);
+ });
+ };
+ }
+
+ return hooks;
+}
+
+var getEventHandler = function getEventHandler(eventHandler, _temp) {
+ var _ref2 = _temp === void 0 ? {} : _temp,
+ stop = _ref2.stop,
+ prevent = _ref2.prevent,
+ once = _ref2.once;
+
+ var fired = false;
+
+ function handler() {
+ var e = arguments.length <= 0 ? undefined : arguments[0];
+ if (once && fired) return;
+ if (stop) e.stopPropagation();
+ if (prevent) e.preventDefault();
+ fired = true;
+ eventHandler.apply(void 0, arguments);
+ }
+
+ return handler;
+};
+
+var getData = function getData(treeNode, component, f7, initial, isRoot) {
+ var data = {
+ component: component,
+ treeNode: treeNode
+ };
+ var tagName = getTagName(treeNode);
+ Object.keys(treeNode.props).forEach(function (attrName) {
+ var attrValue = treeNode.props[attrName];
+ if (typeof attrValue === 'undefined') return;
+
+ if (PROPS_ATTRS.indexOf(attrName) >= 0) {
+ // Props
+ if (!data.props) data.props = {};
+
+ if (attrName === 'readonly') {
+ // eslint-disable-next-line
+ attrName = 'readOnly';
+ }
+
+ if (attrName === 'routeProps') {
+ // eslint-disable-next-line
+ attrName = 'f7RouteProps';
+ }
+
+ if (tagName === 'option' && attrName === 'value') {
+ if (!data.attrs) data.attrs = {};
+ data.attrs.value = attrValue;
+ }
+
+ if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {
+ // eslint-disable-next-line
+ data.props[attrName] = attrValue === false ? false : true;
+ } else {
+ data.props[attrName] = attrValue;
+ }
+ } else if (attrName === 'key') {
+ // Key
+ data.key = attrValue;
+ } else if (attrName.indexOf('@') === 0 || attrName.indexOf('on') === 0 && attrName.length > 2) {
+ // Events
+ if (!data.on) data.on = {};
+ var eventName = attrName.indexOf('@') === 0 ? attrName.substr(1) : (0, _utils.eventNameToColonCase)(attrName.substr(2));
+ var stop = false;
+ var prevent = false;
+ var once = false;
+
+ if (eventName.indexOf('.') >= 0) {
+ eventName.split('.').forEach(function (eventNamePart, eventNameIndex) {
+ if (eventNameIndex === 0) eventName = eventNamePart;else {
+ if (eventNamePart === 'stop') stop = true;
+ if (eventNamePart === 'prevent') prevent = true;
+ if (eventNamePart === 'once') once = true;
+ }
+ });
+ }
+
+ data.on[eventName] = getEventHandler(attrValue, {
+ stop: stop,
+ prevent: prevent,
+ once: once
+ });
+ } else if (attrName === 'style') {
+ // Style
+ if (typeof attrValue !== 'string') {
+ data.style = attrValue;
+ } else {
+ if (!data.attrs) data.attrs = {};
+ data.attrs.style = attrValue;
+ }
+ } else {
+ // Rest of attribures
+ if (!data.attrs) data.attrs = {};
+ data.attrs[attrName] = attrValue; // ID -> Key
+
+ if (attrName === 'id' && !data.key && !isRoot) {
+ data.key = attrValue;
+ }
+ }
+ });
+ var hooks = getHooks(treeNode, data, f7, initial, isRoot);
+
+ hooks.prepatch = function (oldVnode, vnode) {
+ if (!oldVnode || !vnode) return;
+
+ if (oldVnode && oldVnode.data && oldVnode.data.props) {
+ Object.keys(oldVnode.data.props).forEach(function (key) {
+ if (BOOLEAN_PROPS.indexOf(key) < 0) return;
+ if (!vnode.data) vnode.data = {};
+ if (!vnode.data.props) vnode.data.props = {};
+
+ if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {
+ vnode.data.props[key] = false;
+ }
+ });
+ }
+ };
+
+ data.hook = hooks;
+ return data;
+};
+
+var getChildren = function getChildren(treeNode, component, f7, initial) {
+ if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {
+ return [];
+ }
+
+ var children = [];
+ var nodes = treeNode.children;
+
+ for (var i = 0; i < nodes.length; i += 1) {
+ var childNode = nodes[i];
+ var child = treeNodeToVNode(childNode, component, f7, initial, false);
+
+ if (Array.isArray(child)) {
+ children.push.apply(children, child);
+ } else if (child) {
+ children.push(child);
+ }
+ }
+
+ return children;
+};
+
+var getSlots = function getSlots(treeNode, component, f7, initial) {
+ var slotName = treeNode.props.name || 'default';
+ var slotNodes = (component.children || []).filter(function (childTreeNode) {
+ var childSlotName = 'default';
+
+ if (childTreeNode.props) {
+ childSlotName = childTreeNode.props.slot || 'default';
+ }
+
+ return childSlotName === slotName;
+ });
+
+ if (slotNodes.length === 0) {
+ return getChildren(treeNode, component, f7, initial);
+ }
+
+ return slotNodes.map(function (subTreeNode) {
+ return treeNodeToVNode(subTreeNode, component, f7, initial);
+ });
+};
+
+var isTreeNode = function isTreeNode(treeNode) {
+ return (0, _utils.isObject)(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;
+};
+
+var treeNodeToVNode = function treeNodeToVNode(treeNode, component, f7, initial, isRoot) {
+ if (!isTreeNode(treeNode)) {
+ return String(treeNode);
+ }
+
+ if (treeNode.type === 'slot') {
+ return getSlots(treeNode, component, f7, initial);
+ }
+
+ var data = getData(treeNode, component, f7, initial, isRoot);
+ var children = isCustomComponent(treeNode.type) ? [] : getChildren(treeNode, component, f7, initial);
+ return (0, _h.default)(getTagName(treeNode), data, children);
+};
+
+function vdom(tree, component, initial) {
+ if (tree === void 0) {
+ tree = {};
+ }
+
+ return treeNodeToVNode(tree, component, component.f7, initial, true);
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/demo-module.js b/www/assets/framework7/cjs/modules/demo-module.js
new file mode 100644
index 000000000..f04f16da5
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/demo-module.js
@@ -0,0 +1,49 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _default = {
+ // Module Name
+ name: 'demo-module',
+ install: function install(params) {
+ var Class = this;
+ console.log(Class, params);
+ },
+ create: function create(instance) {
+ console.log('init', instance);
+ },
+ // App Params related to module
+ params: {
+ a: 1,
+ b: 2,
+ c: 3
+ },
+ // Extend Prototype
+ proto: {
+ demo: function demo() {
+ return 'demo-module-proto-method';
+ },
+ demoStatic: 'demo-module-proto-static'
+ },
+ // Extend Class, e.g. Class.myMethod
+ static: {
+ demo: function demo() {
+ return 'demo-module-class-method';
+ },
+ demoStatic: 'demo-module-class-static'
+ },
+ // Initialized instance Props & Methods
+ instance: {
+ demoProp: true,
+ demoMethod: function demoMethod() {
+ return 'demo-method';
+ }
+ },
+ // Add Event Listeners
+ on: {
+ demoEvent: function demoEvent(a, b) {
+ console.log('demo-event', a, b);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/device/device.js b/www/assets/framework7/cjs/modules/device/device.js
new file mode 100644
index 000000000..fc8449bd7
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/device/device.js
@@ -0,0 +1,56 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _getDevice = require("../../shared/get-device");
+
+var _default = {
+ name: 'device',
+ static: {
+ getDevice: _getDevice.getDevice
+ },
+ on: {
+ init: function init() {
+ var document = (0, _ssrWindow.getDocument)();
+ var device = (0, _getDevice.getDevice)();
+ var classNames = [];
+ var html = document.querySelector('html');
+ var metaStatusbar = document.querySelector('meta[name="apple-mobile-web-app-status-bar-style"]');
+ if (!html) return;
+
+ if (device.standalone && device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {
+ classNames.push('device-full-viewport');
+ } // Pixel Ratio
+
+
+ classNames.push("device-pixel-ratio-" + Math.floor(device.pixelRatio)); // OS classes
+
+ if (device.os && !device.desktop) {
+ classNames.push("device-" + device.os);
+ } else if (device.desktop) {
+ classNames.push('device-desktop');
+
+ if (device.os) {
+ classNames.push("device-" + device.os);
+ }
+ }
+
+ if (device.cordova || device.phonegap) {
+ classNames.push('device-cordova');
+ }
+
+ if (device.capacitor) {
+ classNames.push('device-capacitor');
+ } // Add html classes
+
+
+ classNames.forEach(function (className) {
+ html.classList.add(className);
+ });
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/history/history.js b/www/assets/framework7/cjs/modules/history/history.js
new file mode 100644
index 000000000..d59a9bbb9
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/history/history.js
@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'history',
+ static: {
+ history: _history.default
+ },
+ on: {
+ init: function init() {
+ _history.default.init(this);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/request/request.js b/www/assets/framework7/cjs/modules/request/request.js
new file mode 100644
index 000000000..de46d2645
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/request/request.js
@@ -0,0 +1,20 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _request = _interopRequireDefault(require("../../shared/request"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint no-param-reassign: "off" */
+var _default = {
+ name: 'request',
+ proto: {
+ request: _request.default
+ },
+ static: {
+ request: _request.default
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/resize/resize.js b/www/assets/framework7/cjs/modules/resize/resize.js
new file mode 100644
index 000000000..cd6274f23
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/resize/resize.js
@@ -0,0 +1,72 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _getDevice = require("../../shared/get-device");
+
+var _default = {
+ name: 'resize',
+ create: function create() {
+ var app = this;
+
+ app.getSize = function () {
+ if (!app.el) return {
+ width: 0,
+ height: 0,
+ left: 0,
+ top: 0
+ };
+ var offset = app.$el.offset();
+ var _ref = [app.el.offsetWidth, app.el.offsetHeight, offset.left, offset.top],
+ width = _ref[0],
+ height = _ref[1],
+ left = _ref[2],
+ top = _ref[3];
+ app.width = width;
+ app.height = height;
+ app.left = left;
+ app.top = top;
+ return {
+ width: width,
+ height: height,
+ left: left,
+ top: top
+ };
+ };
+ },
+ on: {
+ init: function init() {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)(); // Get Size
+
+ app.getSize(); // Emit resize
+
+ window.addEventListener('resize', function () {
+ app.emit('resize');
+ }, false); // Emit orientationchange
+
+ window.addEventListener('orientationchange', function () {
+ app.emit('orientationchange');
+ });
+ },
+ orientationchange: function orientationchange() {
+ var document = (0, _ssrWindow.getDocument)();
+ var device = (0, _getDevice.getDevice)(); // Fix iPad weird body scroll
+
+ if (device.ipad) {
+ document.body.scrollLeft = 0;
+ setTimeout(function () {
+ document.body.scrollLeft = 0;
+ }, 0);
+ }
+ },
+ resize: function resize() {
+ var app = this;
+ app.getSize();
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/app-router-check.js b/www/assets/framework7/cjs/modules/router/app-router-check.js
new file mode 100644
index 000000000..89494f6c4
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/app-router-check.js
@@ -0,0 +1,10 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = appRouterCheck;
+
+function appRouterCheck(router, method) {
+ if (!router.view) {
+ throw new Error("Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router." + method + "(...)");
+ }
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/async-component.js b/www/assets/framework7/cjs/modules/router/async-component.js
new file mode 100644
index 000000000..28cbaedde
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/async-component.js
@@ -0,0 +1,33 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = asyncComponent;
+
+function asyncComponent(router, component, resolve, reject) {
+ function resolvePromise(componentPromise) {
+ componentPromise.then(function (c) {
+ // eslint-disable-next-line
+ resolve({
+ component: c.default || c._default || c
+ });
+ }).catch(function (err) {
+ reject();
+ throw new Error(err);
+ });
+ }
+
+ if (component instanceof Promise) {
+ resolvePromise(component);
+ return;
+ }
+
+ var asyncComponentResult = component.call(router);
+
+ if (asyncComponentResult instanceof Promise) {
+ resolvePromise(asyncComponentResult);
+ } else {
+ resolve({
+ component: asyncComponentResult
+ });
+ }
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/back.js b/www/assets/framework7/cjs/modules/router/back.js
new file mode 100644
index 000000000..0c66d06ea
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/back.js
@@ -0,0 +1,908 @@
+"use strict";
+
+exports.__esModule = true;
+exports.back = back;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _getDevice = require("../../shared/get-device");
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+var _redirect = _interopRequireDefault(require("./redirect"));
+
+var _processRouteQueue = _interopRequireDefault(require("./process-route-queue"));
+
+var _appRouterCheck = _interopRequireDefault(require("./app-router-check"));
+
+var _asyncComponent = _interopRequireDefault(require("./async-component"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function backward(router, el, backwardOptions) {
+ var device = (0, _getDevice.getDevice)();
+ var document = (0, _ssrWindow.getDocument)();
+ var $el = (0, _dom.default)(el);
+ var app = router.app;
+ var view = router.view;
+ var options = (0, _utils.extend)(false, {
+ animate: router.params.animate,
+ browserHistory: true,
+ replaceState: false
+ }, backwardOptions);
+ var masterDetailEnabled = router.params.masterDetailBreakpoint > 0;
+ var isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));
+ var masterPageEl;
+ var masterPageRemoved;
+ var dynamicNavbar = router.dynamicNavbar;
+ var $newPage = $el;
+ var $oldPage = router.$el.children('.page-current');
+ var initialPreload = $oldPage.length === 0 && options.preload;
+ var currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');
+
+ if ($newPage.length) {
+ // Remove theme elements
+ router.removeThemeElements($newPage);
+ }
+
+ var $navbarsEl;
+ var $newNavbarEl;
+ var $oldNavbarEl;
+
+ if (dynamicNavbar) {
+ $newNavbarEl = $newPage.children('.navbar');
+ $navbarsEl = router.$navbarsEl;
+
+ if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {
+ // Try from pageData
+ $newNavbarEl = $newPage[0].f7Page.$navbarEl;
+ }
+
+ $oldNavbarEl = $navbarsEl.find('.navbar-current');
+ }
+
+ router.allowPageChange = false;
+
+ if ($newPage.length === 0 || $oldPage.length === 0 && !options.preload) {
+ router.allowPageChange = true;
+ return router;
+ } // Remove theme elements
+
+
+ router.removeThemeElements($newPage); // Save Keep Alive Cache
+
+ if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {
+ options.route.route.keepAliveData = {
+ pageEl: $el[0]
+ };
+ } // Pages In View
+
+
+ var isDetail;
+ var isDetailRoot;
+
+ if (masterDetailEnabled) {
+ var $pagesInView = router.$el.children('.page:not(.stacked)').filter(function (pageInView) {
+ return pageInView !== $newPage[0];
+ }); // Find Detail' master page
+
+ for (var i = 0; i < $pagesInView.length; i += 1) {
+ if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {
+ masterPageEl = $pagesInView[i];
+ continue; // eslint-disable-line
+ }
+ }
+
+ isDetail = !isMaster && masterPageEl && router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url);
+
+ if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {
+ isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;
+ }
+ }
+
+ if (isDetail && masterPageEl && masterPageEl.f7Page) {
+ isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;
+ } // New Page
+
+
+ $newPage.addClass("page-" + (initialPreload ? 'current' : 'previous') + (isMaster ? ' page-master' : '') + (isDetail ? ' page-master-detail' : '') + (isDetailRoot ? ' page-master-detail-root' : '')).removeClass('stacked').removeAttr('aria-hidden').trigger('page:unstack').trigger('page:position', {
+ position: initialPreload ? 'current' : 'previous'
+ });
+ router.emit('pageUnstack', $newPage[0]);
+ router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');
+
+ if (isMaster || isDetail) {
+ $newPage.trigger('page:role', {
+ role: isMaster ? 'master' : 'detail',
+ root: !!isDetailRoot
+ });
+ router.emit('pageRole', $newPage[0], {
+ role: isMaster ? 'master' : 'detail',
+ detailRoot: !!isDetailRoot
+ });
+ }
+
+ if (dynamicNavbar && $newNavbarEl.length > 0) {
+ $newNavbarEl.addClass("navbar-" + (initialPreload ? 'current' : 'previous') + (isMaster ? ' navbar-master' : '') + (isDetail ? ' navbar-master-detail' : '') + (isDetailRoot ? ' navbar-master-detail-root' : '')).removeClass('stacked').removeAttr('aria-hidden');
+ $newNavbarEl.trigger('navbar:position', {
+ position: initialPreload ? 'current' : 'previous'
+ });
+ router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');
+
+ if (isMaster || isDetailRoot) {
+ router.emit('navbarRole', $newNavbarEl[0], {
+ role: isMaster ? 'master' : 'detail',
+ detailRoot: !!isDetailRoot
+ });
+ }
+ } // Remove previous page in case of "forced"
+
+
+ var backIndex;
+
+ if (options.force) {
+ if ($oldPage.prev('.page-previous:not(.stacked)').length > 0 || $oldPage.prev('.page-previous').length === 0) {
+ if (router.history.indexOf(options.route.url) >= 0) {
+ backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;
+ router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);
+ view.history = router.history;
+ } else if (router.history[[router.history.length - 2]]) {
+ router.history[router.history.length - 2] = options.route.url;
+ } else {
+ router.history.unshift(router.url);
+ }
+
+ if (backIndex && router.params.stackPages) {
+ $oldPage.prevAll('.page-previous').each(function (pageToRemove) {
+ var $pageToRemove = (0, _dom.default)(pageToRemove);
+ var $navbarToRemove;
+
+ if (dynamicNavbar) {
+ // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);
+ $navbarToRemove = (0, _dom.default)(app.navbar.getElByPage($pageToRemove));
+ }
+
+ if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {
+ if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {
+ $pageToRemove.addClass('stacked');
+ $pageToRemove.trigger('page:stack');
+ router.emit('pageStack', $pageToRemove[0]);
+
+ if (dynamicNavbar) {
+ $navbarToRemove.addClass('stacked');
+ }
+ } else {
+ router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);
+
+ if ($pageToRemove[0] === masterPageEl) {
+ masterPageRemoved = true;
+ }
+
+ router.removePage($pageToRemove);
+
+ if (dynamicNavbar && $navbarToRemove.length > 0) {
+ router.removeNavbar($navbarToRemove);
+ }
+ }
+ }
+ });
+ } else {
+ var $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');
+ var $navbarToRemove;
+
+ if (dynamicNavbar) {
+ // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');
+ $navbarToRemove = (0, _dom.default)(app.navbar.getElByPage($pageToRemove));
+ }
+
+ if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {
+ $pageToRemove.addClass('stacked');
+ $pageToRemove.trigger('page:stack');
+ router.emit('pageStack', $pageToRemove[0]);
+ $navbarToRemove.addClass('stacked');
+ } else if ($pageToRemove.length > 0) {
+ router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);
+
+ if ($pageToRemove[0] === masterPageEl) {
+ masterPageRemoved = true;
+ }
+
+ router.removePage($pageToRemove);
+
+ if (dynamicNavbar && $navbarToRemove.length) {
+ router.removeNavbar($navbarToRemove);
+ }
+ }
+ }
+ }
+ } // Insert new page
+
+
+ var newPageInDom = $newPage.parents(document).length > 0;
+ var f7Component = $newPage[0].f7Component;
+
+ function insertPage() {
+ if (initialPreload) {
+ if (!newPageInDom && f7Component) {
+ f7Component.mount(function (componentEl) {
+ router.$el.append(componentEl);
+ });
+ } else {
+ router.$el.append($newPage);
+ }
+ }
+
+ if ($newPage.next($oldPage).length === 0) {
+ if (!newPageInDom && f7Component) {
+ f7Component.mount(function (componentEl) {
+ (0, _dom.default)(componentEl).insertBefore($oldPage);
+ });
+ } else {
+ $newPage.insertBefore($oldPage);
+ }
+ }
+
+ if (dynamicNavbar && $newNavbarEl.length) {
+ if ($newNavbarEl.find('.title-large').length) {
+ $newNavbarEl.addClass('navbar-large');
+ }
+
+ $newNavbarEl.insertBefore($oldNavbarEl);
+
+ if ($oldNavbarEl.length > 0) {
+ $newNavbarEl.insertBefore($oldNavbarEl);
+ } else {
+ if (!router.$navbarsEl.parents(document).length) {
+ router.$el.prepend(router.$navbarsEl);
+ }
+
+ $navbarsEl.append($newNavbarEl);
+ }
+ }
+
+ if (!newPageInDom) {
+ router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
+ } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {
+ $newPage[0].f7PageMounted = true;
+ router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
+ }
+ }
+
+ if (options.preload) {
+ // Insert Page
+ insertPage(); // Tab route
+
+ if (options.route.route.tab) {
+ router.tabLoad(options.route.route.tab, (0, _utils.extend)({}, options, {
+ history: false,
+ browserHistory: false,
+ preload: true
+ }));
+ }
+
+ if (isMaster) {
+ $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');
+ router.emit('pageMasterUnstack', $newPage[0]);
+
+ if (dynamicNavbar) {
+ (0, _dom.default)(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');
+ router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));
+ }
+ } // Page init and before init events
+
+
+ router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
+
+ if (initialPreload) {
+ router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);
+ router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);
+ }
+
+ var $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');
+
+ if ($previousPages.length > 0) {
+ $previousPages.each(function (pageToRemove) {
+ var $pageToRemove = (0, _dom.default)(pageToRemove);
+ var $navbarToRemove;
+
+ if (dynamicNavbar) {
+ // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);
+ $navbarToRemove = (0, _dom.default)(app.navbar.getElByPage($pageToRemove));
+ }
+
+ if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {
+ $pageToRemove.addClass('stacked');
+ $pageToRemove.trigger('page:stack');
+ router.emit('pageStack', $pageToRemove[0]);
+
+ if (dynamicNavbar) {
+ $navbarToRemove.addClass('stacked');
+ }
+ } else {
+ router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);
+ router.removePage($pageToRemove);
+
+ if (dynamicNavbar && $navbarToRemove.length) {
+ router.removeNavbar($navbarToRemove);
+ }
+ }
+ });
+ }
+
+ router.allowPageChange = true;
+ return router;
+ } // History State
+
+
+ if (!(device.ie || device.edge || device.firefox && !device.ios)) {
+ if (router.params.browserHistory && options.browserHistory) {
+ if (options.replaceState) {
+ var browserHistoryRoot = router.params.browserHistoryRoot || '';
+
+ _history.default.replace(view.id, {
+ url: options.route.url
+ }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);
+ } else if (backIndex) {
+ _history.default.go(-backIndex);
+ } else {
+ _history.default.back();
+ }
+ }
+ } // Update History
+
+
+ if (options.replaceState) {
+ router.history[router.history.length - 1] = options.route.url;
+ } else {
+ if (router.history.length === 1) {
+ router.history.unshift(router.url);
+ }
+
+ router.history.pop();
+ }
+
+ router.saveHistory(); // Current Page & Navbar
+
+ router.currentPageEl = $newPage[0];
+
+ if (dynamicNavbar && $newNavbarEl.length) {
+ router.currentNavbarEl = $newNavbarEl[0];
+ } else {
+ delete router.currentNavbarEl;
+ } // Current Route
+
+
+ router.currentRoute = options.route; // History State
+
+ if (device.ie || device.edge || device.firefox && !device.ios) {
+ if (router.params.browserHistory && options.browserHistory) {
+ if (options.replaceState) {
+ var _browserHistoryRoot = router.params.browserHistoryRoot || '';
+
+ _history.default.replace(view.id, {
+ url: options.route.url
+ }, _browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);
+ } else if (backIndex) {
+ _history.default.go(-backIndex);
+ } else {
+ _history.default.back();
+ }
+ }
+ } // Insert Page
+
+
+ insertPage(); // Load Tab
+
+ if (options.route.route.tab) {
+ router.tabLoad(options.route.route.tab, (0, _utils.extend)({}, options, {
+ history: false,
+ browserHistory: false
+ }));
+ } // Check master detail
+
+
+ if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {
+ view.checkMasterDetailBreakpoint(false);
+ } // Page init and before init events
+
+
+ router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage); // Before animation callback
+
+ router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);
+ router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options); // Animation
+
+ function afterAnimation() {
+ // Set classes
+ router.setPagePosition($newPage, 'current', false);
+ router.setPagePosition($oldPage, 'next', true);
+
+ if (dynamicNavbar) {
+ router.setNavbarPosition($newNavbarEl, 'current', false);
+ router.setNavbarPosition($oldNavbarEl, 'next', true);
+ } // After animation event
+
+
+ router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);
+ router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options); // Remove Old Page
+
+ if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {
+ $oldPage.addClass('stacked');
+ $oldPage.trigger('page:stack');
+ router.emit('pageStack', $oldPage[0]);
+
+ if (dynamicNavbar) {
+ $oldNavbarEl.addClass('stacked');
+ }
+ } else {
+ router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);
+ router.removePage($oldPage);
+
+ if (dynamicNavbar && $oldNavbarEl.length) {
+ router.removeNavbar($oldNavbarEl);
+ }
+ }
+
+ router.allowPageChange = true;
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router); // Preload previous page
+
+ var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
+
+ if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {
+ router.back(router.history[router.history.length - 2], {
+ preload: true
+ });
+ }
+
+ if (router.params.browserHistory) {
+ _history.default.clearRouterQueue();
+ }
+ }
+
+ function setPositionClasses() {
+ router.setPagePosition($oldPage, 'current');
+ router.setPagePosition($newPage, 'previous', false);
+
+ if (dynamicNavbar) {
+ router.setNavbarPosition($oldNavbarEl, 'current');
+ router.setNavbarPosition($newNavbarEl, 'previous', false);
+ }
+ }
+
+ if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {
+ var transition = router.params.transition;
+
+ if ($oldPage[0] && $oldPage[0].f7PageTransition) {
+ transition = $oldPage[0].f7PageTransition;
+ delete $oldPage[0].f7PageTransition;
+ }
+
+ if (options.transition) transition = options.transition;
+
+ if (!transition && router.previousRoute && router.previousRoute.route) {
+ transition = router.previousRoute.route.transition;
+ }
+
+ if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {
+ transition = router.previousRoute.route.options.transition;
+ }
+
+ setPositionClasses();
+ router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, function () {
+ afterAnimation();
+ });
+ } else {
+ afterAnimation();
+ }
+
+ return router;
+}
+
+function loadBack(router, backParams, backOptions, ignorePageChange) {
+ if (!router.allowPageChange && !ignorePageChange) return router;
+ var params = backParams;
+ var options = backOptions;
+ var url = params.url,
+ content = params.content,
+ el = params.el,
+ pageName = params.pageName,
+ component = params.component,
+ componentUrl = params.componentUrl;
+
+ if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {
+ return false;
+ }
+
+ if (!options.route && url) {
+ options.route = router.parseRouteUrl(url);
+ } // Component Callbacks
+
+
+ function resolve(pageEl, newOptions) {
+ return backward(router, pageEl, (0, _utils.extend)(options, newOptions));
+ }
+
+ function reject() {
+ router.allowPageChange = true;
+ return router;
+ }
+
+ if (url || componentUrl || component) {
+ router.allowPageChange = false;
+ } // Proceed
+
+
+ if (content) {
+ backward(router, router.getPageEl(content), options);
+ } else if (el) {
+ // Load page from specified HTMLElement or by page name in pages container
+ backward(router, router.getPageEl(el), options);
+ } else if (pageName) {
+ // Load page by page name in pages container
+ backward(router, router.$el.children(".page[data-name=\"" + pageName + "\"]").eq(0), options);
+ } else if (component || componentUrl) {
+ // Load from component (F7/Vue/React/...)
+ try {
+ router.pageComponentLoader({
+ routerEl: router.el,
+ component: component,
+ componentUrl: componentUrl,
+ options: options,
+ resolve: resolve,
+ reject: reject
+ });
+ } catch (err) {
+ router.allowPageChange = true;
+ throw err;
+ }
+ } else if (url) {
+ // Load using XHR
+ if (router.xhrAbortController) {
+ router.xhrAbortController.abort();
+ router.xhrAbortController = false;
+ }
+
+ router.xhrRequest(url, options).then(function (pageContent) {
+ backward(router, router.getPageEl(pageContent), options);
+ }).catch(function () {
+ router.allowPageChange = true;
+ });
+ }
+
+ return router;
+}
+
+function back() {
+ var router = this;
+ var device = (0, _getDevice.getDevice)();
+ if (router.swipeBackActive) return router;
+ var navigateUrl;
+ var navigateOptions;
+ var route;
+
+ if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'object') {
+ navigateOptions = (arguments.length <= 0 ? undefined : arguments[0]) || {};
+ } else {
+ navigateUrl = arguments.length <= 0 ? undefined : arguments[0];
+ navigateOptions = (arguments.length <= 1 ? undefined : arguments[1]) || {};
+ }
+
+ var _navigateOptions = navigateOptions,
+ name = _navigateOptions.name,
+ params = _navigateOptions.params,
+ query = _navigateOptions.query;
+
+ if (name) {
+ navigateUrl = router.generateUrl({
+ name: name,
+ params: params,
+ query: query
+ });
+
+ if (navigateUrl) {
+ return router.back(navigateUrl, (0, _utils.extend)({}, navigateOptions, {
+ name: null,
+ params: null,
+ query: null
+ }));
+ }
+
+ return router;
+ }
+
+ var app = router.app;
+ (0, _appRouterCheck.default)(router, 'back');
+ var currentRouteIsModal = router.currentRoute.modal;
+ var modalType;
+
+ if (!currentRouteIsModal) {
+ 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
+ if (router.currentRoute.route[modalLoadProp]) {
+ currentRouteIsModal = true;
+ modalType = modalLoadProp;
+ }
+ });
+ }
+
+ if (currentRouteIsModal && !navigateOptions.preload) {
+ var modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();
+ var previousUrl = router.history[router.history.length - 2];
+ var previousRoute; // check if previous route is modal too
+
+ if (modalToClose && modalToClose.$el) {
+ var prevOpenedModals = modalToClose.$el.prevAll('.modal-in');
+
+ if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {
+ var modalEl = prevOpenedModals[0]; // check if current router not inside of the modalEl
+
+ if (!router.$el.parents(modalEl).length) {
+ previousRoute = modalEl.f7Modal.route;
+ }
+ }
+ }
+
+ if (!previousRoute) {
+ previousRoute = router.findMatchingRoute(previousUrl);
+ }
+
+ if (!previousRoute && previousUrl) {
+ previousRoute = {
+ url: previousUrl,
+ path: previousUrl.split('?')[0],
+ query: (0, _utils.parseUrlQuery)(previousUrl),
+ route: {
+ path: previousUrl.split('?')[0],
+ url: previousUrl
+ }
+ };
+ }
+
+ if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {
+ if (!previousRoute || !modalToClose) {
+ return router;
+ }
+ }
+
+ var forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;
+
+ if (previousRoute && modalToClose) {
+ var isBrokenBrowserHistory = device.ie || device.edge || device.firefox && !device.ios;
+ var needHistoryBack = router.params.browserHistory && navigateOptions.browserHistory !== false;
+ var currentRouteWithoutBrowserHistory = router.currentRoute && router.currentRoute.route && router.currentRoute.route.options && router.currentRoute.route.options.browserHistory === false;
+
+ if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {
+ _history.default.back();
+ }
+
+ router.currentRoute = previousRoute;
+ router.history.pop();
+ router.saveHistory();
+
+ if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {
+ _history.default.back();
+ }
+
+ router.modalRemove(modalToClose);
+
+ if (forceOtherUrl) {
+ router.navigate(navigateUrl, {
+ reloadCurrent: true
+ });
+ }
+ } else if (modalToClose) {
+ router.modalRemove(modalToClose);
+
+ if (navigateUrl) {
+ router.navigate(navigateUrl, {
+ reloadCurrent: true
+ });
+ }
+ }
+
+ return router;
+ }
+
+ var $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);
+ var skipMaster;
+
+ if (router.params.masterDetailBreakpoint > 0) {
+ var classes = [];
+ router.$el.children('.page').each(function (pageEl) {
+ classes.push(pageEl.className);
+ });
+ var $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);
+
+ if ($previousMaster.length) {
+ var expectedPreviousPageUrl = router.history[router.history.length - 2];
+ var expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);
+
+ if (expectedPreviousPageRoute && $previousMaster[0].f7Page && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {
+ $previousPage = $previousMaster;
+
+ if (!navigateOptions.preload) {
+ skipMaster = app.width >= router.params.masterDetailBreakpoint;
+ }
+ }
+ }
+ }
+
+ if (!navigateOptions.force && $previousPage.length && !skipMaster) {
+ if (router.params.browserHistory && $previousPage[0].f7Page && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url) {
+ router.back(router.history[router.history.length - 2], (0, _utils.extend)(navigateOptions, {
+ force: true
+ }));
+ return router;
+ }
+
+ var previousPageRoute = $previousPage[0].f7Page.route;
+
+ if (navigateOptions.preload && $previousPage.hasClass('stacked')) {
+ loadBack(router, {
+ el: $previousPage
+ }, (0, _utils.extend)(navigateOptions, {
+ route: previousPageRoute
+ }));
+ return router;
+ }
+
+ _processRouteQueue.default.call(router, previousPageRoute, router.currentRoute, function () {
+ loadBack(router, {
+ el: $previousPage
+ }, (0, _utils.extend)(navigateOptions, {
+ route: previousPageRoute
+ }));
+ }, function () {}, 'backward');
+
+ return router;
+ } // Navigate URL
+
+
+ if (navigateUrl === '#') {
+ navigateUrl = undefined;
+ }
+
+ if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {
+ navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');
+ }
+
+ if (!navigateUrl && router.history.length > 1) {
+ navigateUrl = router.history[router.history.length - 2];
+ }
+
+ if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {
+ return router.back(router.history[router.history.length - 3], (0, _utils.extend)({}, navigateOptions || {}, {
+ force: true,
+ animate: false
+ }));
+ }
+
+ if (skipMaster && !navigateOptions.force) {
+ return router;
+ } // Find route to load
+
+
+ route = router.findMatchingRoute(navigateUrl);
+
+ if (!route) {
+ if (navigateUrl) {
+ route = {
+ url: navigateUrl,
+ path: navigateUrl.split('?')[0],
+ query: (0, _utils.parseUrlQuery)(navigateUrl),
+ route: {
+ path: navigateUrl.split('?')[0],
+ url: navigateUrl
+ }
+ };
+ }
+ }
+
+ if (!route) {
+ return router;
+ }
+
+ if (route.route.redirect) {
+ return _redirect.default.call(router, 'backward', route, navigateOptions);
+ }
+
+ var options = {};
+
+ if (route.route.options) {
+ (0, _utils.extend)(options, route.route.options, navigateOptions);
+ } else {
+ (0, _utils.extend)(options, navigateOptions);
+ }
+
+ options.route = route;
+ var backForceLoaded;
+
+ if (options.force && router.params.stackPages) {
+ router.$el.children('.page-previous.stacked').each(function (pageEl) {
+ if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {
+ backForceLoaded = true;
+ loadBack(router, {
+ el: pageEl
+ }, options);
+ }
+ });
+
+ if (backForceLoaded) {
+ return router;
+ }
+ }
+
+ function resolve() {
+ var routerLoaded = false;
+
+ if (route.route.keepAlive && route.route.keepAliveData) {
+ loadBack(router, {
+ el: route.route.keepAliveData.pageEl
+ }, options);
+ routerLoaded = true;
+ }
+
+ 'url content component pageName el componentUrl'.split(' ').forEach(function (pageLoadProp) {
+ if (route.route[pageLoadProp] && !routerLoaded) {
+ var _loadBack;
+
+ routerLoaded = true;
+ loadBack(router, (_loadBack = {}, _loadBack[pageLoadProp] = route.route[pageLoadProp], _loadBack), options);
+ }
+ });
+ if (routerLoaded) return; // Async
+
+ function asyncResolve(resolveParams, resolveOptions) {
+ router.allowPageChange = false;
+ loadBack(router, resolveParams, (0, _utils.extend)(options, resolveOptions), true);
+ }
+
+ function asyncReject() {
+ router.allowPageChange = true;
+ }
+
+ if (route.route.async) {
+ router.allowPageChange = false;
+ route.route.async.call(router, {
+ router: router,
+ to: route,
+ from: router.currentRoute,
+ resolve: asyncResolve,
+ reject: asyncReject,
+ direction: 'backward',
+ app: app
+ });
+ }
+
+ if (route.route.asyncComponent) {
+ (0, _asyncComponent.default)(router, route.route.asyncComponent, asyncResolve, asyncReject);
+ }
+ }
+
+ function reject() {
+ router.allowPageChange = true;
+ }
+
+ if (options.preload) {
+ resolve();
+ } else {
+ _processRouteQueue.default.call(router, route, router.currentRoute, function () {
+ if (route.route.modules) {
+ app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ resolve();
+ }
+ }, function () {
+ reject();
+ }, 'backward');
+ } // Return Router
+
+
+ return router;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/clear-previous-history.js b/www/assets/framework7/cjs/modules/router/clear-previous-history.js
new file mode 100644
index 000000000..8618a1c06
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/clear-previous-history.js
@@ -0,0 +1,50 @@
+"use strict";
+
+exports.__esModule = true;
+exports.clearPreviousHistory = clearPreviousHistory;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _appRouterCheck = _interopRequireDefault(require("./app-router-check"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function clearPreviousPages(router) {
+ (0, _appRouterCheck.default)(router, 'clearPreviousPages');
+ var app = router.app;
+ var dynamicNavbar = router.dynamicNavbar;
+ var $pagesToRemove = router.$el.children('.page').filter(function (pageInView) {
+ if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;
+ return pageInView !== router.currentPageEl;
+ });
+ $pagesToRemove.each(function (pageEl) {
+ var $oldPageEl = (0, _dom.default)(pageEl);
+ var $oldNavbarEl = (0, _dom.default)(app.navbar.getElByPage($oldPageEl));
+
+ if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {
+ $oldPageEl.addClass('stacked');
+
+ if (dynamicNavbar) {
+ $oldNavbarEl.addClass('stacked');
+ }
+ } else {
+ // Page remove event
+ router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});
+ router.removePage($oldPageEl);
+
+ if (dynamicNavbar && $oldNavbarEl.length) {
+ router.removeNavbar($oldNavbarEl);
+ }
+ }
+ });
+}
+
+function clearPreviousHistory() {
+ var router = this;
+ (0, _appRouterCheck.default)(router, 'clearPreviousHistory');
+ var url = router.history[router.history.length - 1];
+ clearPreviousPages(router);
+ router.history = [url];
+ router.view.history = [url];
+ router.saveHistory();
+} // eslint-disable-line
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/component-loader.js b/www/assets/framework7/cjs/modules/router/component-loader.js
new file mode 100644
index 000000000..4dbcf53e5
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/component-loader.js
@@ -0,0 +1,140 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+var _default = {
+ name: 'routerComponentLoader',
+ proto: {
+ componentLoader: function componentLoader(component, componentUrl, options, resolve, reject) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var router = this;
+ var app = router.app;
+ var url = typeof component === 'string' ? component : componentUrl;
+ var compiledUrl = router.replaceRequestUrlParams(url, options);
+
+ function compile(componentFunction) {
+ var context = options.context || {};
+ if (typeof context === 'function') context = context.call(router);else if (typeof context === 'string') {
+ try {
+ context = JSON.parse(context);
+ } catch (err) {
+ reject(err);
+ throw err;
+ }
+ }
+ var componentContext = (0, _utils.merge)({}, context, {
+ f7route: options.route,
+ f7router: router
+ });
+ var componentProps = (0, _utils.merge)(options.route ? options.route.params || {} : {}, options.props || {}, options.routeProps || {});
+ var componentEl;
+ var componentRoot;
+
+ if (options.componentOptions && options.componentOptions.el) {
+ componentEl = options.componentOptions.el;
+ }
+
+ if (options.componentOptions && options.componentOptions.root) {
+ componentRoot = options.componentOptions.root;
+ }
+
+ app.component.create(componentFunction, componentProps, {
+ context: componentContext,
+ el: componentEl,
+ root: componentRoot
+ }).then(function (createdComponent) {
+ resolve(createdComponent.el);
+ }).catch(function (err) {
+ reject(err);
+ throw new Error(err);
+ });
+ }
+
+ var cachedComponent;
+
+ if (compiledUrl && router.params.componentCache) {
+ router.cache.components.forEach(function (cached) {
+ if (cached.url === compiledUrl) cachedComponent = cached.component;
+ });
+ }
+
+ if (compiledUrl && cachedComponent) {
+ compile(cachedComponent);
+ } else if (compiledUrl && !cachedComponent) {
+ // Load via XHR
+ if (router.xhrAbortController) {
+ router.xhrAbortController.abort();
+ router.xhrAbortController = false;
+ }
+
+ router.xhrRequest(url, options).then(function (loadedComponent) {
+ var parsedComponent = app.component.parse(loadedComponent);
+
+ if (router.params.componentCache) {
+ router.cache.components.push({
+ url: compiledUrl,
+ component: parsedComponent
+ });
+ }
+
+ compile(parsedComponent);
+ }).catch(function (err) {
+ reject();
+ throw err;
+ });
+ } else {
+ compile(component);
+ }
+ },
+ modalComponentLoader: function modalComponentLoader(_temp) {
+ var _ref = _temp === void 0 ? {} : _temp,
+ component = _ref.component,
+ componentUrl = _ref.componentUrl,
+ options = _ref.options,
+ resolve = _ref.resolve,
+ reject = _ref.reject;
+
+ var router = this;
+ router.componentLoader(component, componentUrl, options, function (el) {
+ resolve(el);
+ }, reject);
+ },
+ tabComponentLoader: function tabComponentLoader(_temp2) {
+ var _ref2 = _temp2 === void 0 ? {} : _temp2,
+ component = _ref2.component,
+ componentUrl = _ref2.componentUrl,
+ options = _ref2.options,
+ resolve = _ref2.resolve,
+ reject = _ref2.reject;
+
+ var router = this;
+ router.componentLoader(component, componentUrl, options, function (el) {
+ resolve(el);
+ }, reject);
+ },
+ pageComponentLoader: function pageComponentLoader(_temp3) {
+ var _ref3 = _temp3 === void 0 ? {} : _temp3,
+ component = _ref3.component,
+ componentUrl = _ref3.componentUrl,
+ options = _ref3.options,
+ resolve = _ref3.resolve,
+ reject = _ref3.reject;
+
+ var router = this;
+ router.componentLoader(component, componentUrl, options, function (el, newOptions) {
+ if (newOptions === void 0) {
+ newOptions = {};
+ }
+
+ resolve(el, newOptions);
+ }, reject);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/modal.js b/www/assets/framework7/cjs/modules/router/modal.js
new file mode 100644
index 000000000..2552b464e
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/modal.js
@@ -0,0 +1,254 @@
+"use strict";
+
+exports.__esModule = true;
+exports.modalLoad = modalLoad;
+exports.modalRemove = modalRemove;
+
+var _utils = require("../../shared/utils");
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+var _asyncComponent = _interopRequireDefault(require("./async-component"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function modalLoad(modalType, route, loadOptions, direction) {
+ if (loadOptions === void 0) {
+ loadOptions = {};
+ }
+
+ var router = this;
+ var app = router.app;
+ var isPanel = modalType === 'panel';
+ var modalOrPanel = isPanel ? 'panel' : 'modal';
+ var options = (0, _utils.extend)({
+ animate: router.params.animate,
+ browserHistory: true,
+ history: true,
+ on: {},
+ once: {}
+ }, loadOptions);
+ var modalParams = (0, _utils.extend)({}, route.route[modalType]);
+ var modalRoute = route.route;
+
+ var routeCallback = function routeCallback(modal, name) {
+ var on = options.on,
+ once = options.once;
+ var callback;
+
+ if (name === 'open') {
+ callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;
+ }
+
+ if (name === 'close') {
+ callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;
+ }
+
+ if (name === 'closed') {
+ callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;
+ }
+
+ if (callback) callback(modal);
+ };
+
+ function onModalLoaded() {
+ // Create Modal
+ var modal = app[modalType].create(modalParams);
+ modalRoute.modalInstance = modal;
+ var hasEl = modal.el;
+
+ function closeOnSwipeBack() {
+ modal.close();
+ }
+
+ modal.on(modalOrPanel + "Open", function () {
+ if (!hasEl) {
+ // Remove theme elements
+ router.removeThemeElements(modal.el); // Emit events
+
+ modal.$el.trigger(modalType.toLowerCase() + ":init " + modalType.toLowerCase() + ":mounted", route, modal);
+ router.emit((!isPanel ? 'modalInit' : '') + " " + modalType + "Init " + modalType + "Mounted", modal.el, route, modal);
+ }
+
+ router.once('swipeBackMove', closeOnSwipeBack);
+ routeCallback(modal, 'open');
+ });
+ modal.on(modalOrPanel + "Close", function () {
+ router.off('swipeBackMove', closeOnSwipeBack);
+
+ if (!modal.closeByRouter) {
+ router.back();
+ }
+
+ routeCallback(modal, 'close');
+ });
+ modal.on(modalOrPanel + "Closed", function () {
+ modal.$el.trigger(modalType.toLowerCase() + ":beforeremove", route, modal);
+ modal.emit("" + (!isPanel ? 'modalBeforeRemove ' : '') + modalType + "BeforeRemove", modal.el, route, modal);
+ var modalComponent = modal.el.f7Component;
+ routeCallback(modal, 'closed');
+
+ if (modalComponent) {
+ modalComponent.destroy();
+ }
+
+ (0, _utils.nextTick)(function () {
+ if (modalComponent || modalParams.component || modalParams.asyncComponent) {
+ router.removeModal(modal.el);
+ }
+
+ modal.destroy();
+ delete modal.route;
+ delete modalRoute.modalInstance;
+ });
+ });
+
+ if (options.route) {
+ // Update Browser History
+ if (router.params.browserHistory && options.browserHistory) {
+ _history.default.push(router.view.id, {
+ url: options.route.url,
+ modal: modalType
+ }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);
+ } // Set Route
+
+
+ if (options.route !== router.currentRoute) {
+ modal.route = (0, _utils.extend)(options.route, {
+ modal: modal
+ });
+ router.currentRoute = modal.route;
+ } // Update Router History
+
+
+ if (options.history && !options.reloadCurrent) {
+ router.history.push(options.route.url);
+ router.saveHistory();
+ }
+ }
+
+ if (hasEl) {
+ // Remove theme elements
+ router.removeThemeElements(modal.el); // Emit events
+
+ modal.$el.trigger(modalType.toLowerCase() + ":init " + modalType.toLowerCase() + ":mounted", route, modal);
+ router.emit(modalOrPanel + "Init " + modalType + "Init " + modalType + "Mounted", modal.el, route, modal);
+ } // Open
+
+
+ modal.open(options.animate === false || options.animate === true ? options.animate : undefined);
+ } // Load Modal Content
+
+
+ function loadModal(loadModalParams, loadModalOptions) {
+ // Load Modal Props
+ var url = loadModalParams.url,
+ content = loadModalParams.content,
+ component = loadModalParams.component,
+ componentUrl = loadModalParams.componentUrl; // Component/Template Callbacks
+
+ function resolve(contentEl) {
+ if (contentEl) {
+ if (typeof contentEl === 'string') {
+ modalParams.content = contentEl;
+ } else if (contentEl.f7Component) {
+ contentEl.f7Component.mount(function (componentEl) {
+ modalParams.el = componentEl;
+ app.$el.append(componentEl);
+ });
+ } else {
+ modalParams.el = contentEl;
+ }
+
+ onModalLoaded();
+ }
+ }
+
+ function reject() {
+ router.allowPageChange = true;
+ return router;
+ }
+
+ if (content) {
+ resolve(content);
+ } else if (component || componentUrl) {
+ // Load from component (F7/Vue/React/...)
+ try {
+ router.modalComponentLoader({
+ rootEl: app.el,
+ component: component,
+ componentUrl: componentUrl,
+ options: loadModalOptions,
+ resolve: resolve,
+ reject: reject
+ });
+ } catch (err) {
+ router.allowPageChange = true;
+ throw err;
+ }
+ } else if (url) {
+ // Load using XHR
+ if (router.xhrAbortController) {
+ router.xhrAbortController.abort();
+ router.xhrAbortController = false;
+ }
+
+ router.xhrRequest(url, loadModalOptions).then(function (modalContent) {
+ modalParams.content = modalContent;
+ onModalLoaded();
+ }).catch(function () {
+ router.allowPageChange = true;
+ });
+ } else {
+ onModalLoaded();
+ }
+ }
+
+ var foundLoadProp;
+ 'url content component el componentUrl template'.split(' ').forEach(function (modalLoadProp) {
+ if (modalParams[modalLoadProp] && !foundLoadProp) {
+ var _loadModal;
+
+ foundLoadProp = true;
+ loadModal((_loadModal = {}, _loadModal[modalLoadProp] = modalParams[modalLoadProp], _loadModal), options);
+ }
+ });
+
+ if (!foundLoadProp && modalType === 'actions') {
+ onModalLoaded();
+ } // Async
+
+
+ function asyncResolve(resolveParams, resolveOptions) {
+ loadModal(resolveParams, (0, _utils.extend)(options, resolveOptions));
+ }
+
+ function asyncReject() {
+ router.allowPageChange = true;
+ }
+
+ if (modalParams.async) {
+ modalParams.async.call(router, {
+ router: router,
+ to: options.route,
+ from: router.currentRoute,
+ resolve: asyncResolve,
+ reject: asyncReject,
+ direction: direction,
+ app: app
+ });
+ }
+
+ if (modalParams.asyncComponent) {
+ (0, _asyncComponent.default)(router, modalParams.asyncComponent, asyncResolve, asyncReject);
+ }
+
+ return router;
+}
+
+function modalRemove(modal) {
+ (0, _utils.extend)(modal, {
+ closeByRouter: true
+ });
+ modal.close();
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/navigate.js b/www/assets/framework7/cjs/modules/router/navigate.js
new file mode 100644
index 000000000..91dce7c14
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/navigate.js
@@ -0,0 +1,1054 @@
+"use strict";
+
+exports.__esModule = true;
+exports.refreshPage = refreshPage;
+exports.navigate = navigate;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+var _redirect = _interopRequireDefault(require("./redirect"));
+
+var _processRouteQueue = _interopRequireDefault(require("./process-route-queue"));
+
+var _appRouterCheck = _interopRequireDefault(require("./app-router-check"));
+
+var _asyncComponent = _interopRequireDefault(require("./async-component"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function refreshPage() {
+ var router = this;
+ (0, _appRouterCheck.default)(router, 'refreshPage');
+ return router.navigate(router.currentRoute.url, {
+ ignoreCache: true,
+ reloadCurrent: true
+ });
+}
+
+function forward(router, el, forwardOptions) {
+ if (forwardOptions === void 0) {
+ forwardOptions = {};
+ }
+
+ var document = (0, _ssrWindow.getDocument)();
+ var $el = (0, _dom.default)(el);
+ var app = router.app;
+ var view = router.view;
+ var options = (0, _utils.extend)(false, {
+ animate: router.params.animate,
+ browserHistory: true,
+ replaceState: false,
+ history: true,
+ reloadCurrent: router.params.reloadPages,
+ reloadPrevious: false,
+ reloadAll: false,
+ clearPreviousHistory: false,
+ reloadDetail: router.params.reloadDetail,
+ on: {}
+ }, forwardOptions);
+ var masterDetailEnabled = router.params.masterDetailBreakpoint > 0;
+ var isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));
+ var masterPageEl;
+ var otherDetailPageEl;
+ var detailsInBetweenRemoved = 0;
+ var currentRouteIsModal = router.currentRoute.modal;
+ var modalType;
+
+ if (!currentRouteIsModal) {
+ 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
+ if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {
+ currentRouteIsModal = true;
+ modalType = modalLoadProp;
+ }
+ });
+ }
+
+ if (currentRouteIsModal) {
+ var modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();
+ var previousUrl = router.history[router.history.length - 2];
+ var previousRoute = router.findMatchingRoute(previousUrl);
+
+ if (!previousRoute && previousUrl) {
+ previousRoute = {
+ url: previousUrl,
+ path: previousUrl.split('?')[0],
+ query: (0, _utils.parseUrlQuery)(previousUrl),
+ route: {
+ path: previousUrl.split('?')[0],
+ url: previousUrl
+ }
+ };
+ }
+
+ router.modalRemove(modalToClose);
+ }
+
+ var dynamicNavbar = router.dynamicNavbar;
+ var $viewEl = router.$el;
+ var $newPage = $el;
+ var reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;
+ var $oldPage;
+ var $navbarsEl;
+ var $newNavbarEl;
+ var $oldNavbarEl;
+ router.allowPageChange = false;
+
+ if ($newPage.length === 0) {
+ router.allowPageChange = true;
+ return router;
+ }
+
+ if ($newPage.length) {
+ // Remove theme elements
+ router.removeThemeElements($newPage);
+ }
+
+ if (dynamicNavbar) {
+ $newNavbarEl = $newPage.children('.navbar');
+ $navbarsEl = router.$navbarsEl;
+
+ if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {
+ // Try from pageData
+ $newNavbarEl = $newPage[0].f7Page.$navbarEl;
+ }
+ } // Save Keep Alive Cache
+
+
+ if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {
+ options.route.route.keepAliveData = {
+ pageEl: $el[0]
+ };
+ } // Pages In View
+
+
+ var $pagesInView = $viewEl.children('.page:not(.stacked)').filter(function (pageInView) {
+ return pageInView !== $newPage[0];
+ }); // Navbars In View
+
+ var $navbarsInView;
+
+ if (dynamicNavbar) {
+ $navbarsInView = $navbarsEl.children('.navbar:not(.stacked)').filter(function (navbarInView) {
+ return navbarInView !== $newNavbarEl[0];
+ });
+ } // Exit when reload previous and only 1 page in view so nothing ro reload
+
+
+ if (options.reloadPrevious && $pagesInView.length < 2) {
+ router.allowPageChange = true;
+ return router;
+ } // Find Detail' master page
+
+
+ var isDetail;
+ var reloadDetail;
+ var isDetailRoot;
+
+ if (masterDetailEnabled && !options.reloadAll) {
+ for (var i = 0; i < $pagesInView.length; i += 1) {
+ if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {
+ masterPageEl = $pagesInView[i];
+ continue; // eslint-disable-line
+ }
+ }
+
+ isDetail = !isMaster && masterPageEl;
+
+ if (isDetail) {
+ // Find Other Detail
+ if (masterPageEl) {
+ for (var _i = 0; _i < $pagesInView.length; _i += 1) {
+ if ($pagesInView[_i].classList.contains('page-master-detail')) {
+ otherDetailPageEl = $pagesInView[_i];
+ continue; // eslint-disable-line
+ }
+ }
+ }
+ }
+
+ reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;
+ }
+
+ if (isDetail) {
+ isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;
+ } // New Page
+
+
+ var newPagePosition = 'next';
+
+ if (options.reloadCurrent || options.reloadAll || reloadDetail) {
+ newPagePosition = 'current';
+ } else if (options.reloadPrevious) {
+ newPagePosition = 'previous';
+ }
+
+ $newPage.removeClass('page-previous page-current page-next').addClass("page-" + newPagePosition + (isMaster ? ' page-master' : '') + (isDetail ? ' page-master-detail' : '') + (isDetailRoot ? ' page-master-detail-root' : '')).removeClass('stacked').trigger('page:unstack').trigger('page:position', {
+ position: newPagePosition
+ });
+ router.emit('pageUnstack', $newPage[0]);
+ router.emit('pagePosition', $newPage[0], newPagePosition);
+
+ if (isMaster || isDetail) {
+ $newPage.trigger('page:role', {
+ role: isMaster ? 'master' : 'detail',
+ root: !!isDetailRoot
+ });
+ router.emit('pageRole', $newPage[0], {
+ role: isMaster ? 'master' : 'detail',
+ detailRoot: !!isDetailRoot
+ });
+ }
+
+ if (dynamicNavbar && $newNavbarEl.length) {
+ $newNavbarEl.removeClass('navbar-previous navbar-current navbar-next').addClass("navbar-" + newPagePosition + (isMaster ? ' navbar-master' : '') + (isDetail ? ' navbar-master-detail' : '') + (isDetailRoot ? ' navbar-master-detail-root' : '')).removeClass('stacked');
+ $newNavbarEl.trigger('navbar:position', {
+ position: newPagePosition
+ });
+ router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);
+
+ if (isMaster || isDetail) {
+ router.emit('navbarRole', $newNavbarEl[0], {
+ role: isMaster ? 'master' : 'detail',
+ detailRoot: !!isDetailRoot
+ });
+ }
+ } // Find Old Page
+
+
+ if (options.reloadCurrent || reloadDetail) {
+ if (reloadDetail) {
+ $oldPage = $pagesInView.filter(function (pageEl) {
+ return !pageEl.classList.contains('page-master');
+ });
+
+ if (dynamicNavbar) {
+ $oldNavbarEl = (0, _dom.default)($oldPage.map(function (pageEl) {
+ return app.navbar.getElByPage(pageEl);
+ }));
+ }
+
+ if ($oldPage.length > 1 && masterPageEl) {
+ detailsInBetweenRemoved = $oldPage.length - 1;
+ (0, _dom.default)(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');
+ router.emit('pageMasterUnstack', masterPageEl);
+
+ if (dynamicNavbar) {
+ (0, _dom.default)(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');
+ router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));
+ }
+ }
+ } else {
+ $oldPage = $pagesInView.eq($pagesInView.length - 1);
+
+ if (dynamicNavbar) {
+ $oldNavbarEl = (0, _dom.default)(app.navbar.getElByPage($oldPage));
+ }
+ }
+ } else if (options.reloadPrevious) {
+ $oldPage = $pagesInView.eq($pagesInView.length - 2);
+
+ if (dynamicNavbar) {
+ // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);
+ $oldNavbarEl = (0, _dom.default)(app.navbar.getElByPage($oldPage));
+ }
+ } else if (options.reloadAll) {
+ $oldPage = $pagesInView.filter(function (pageEl) {
+ return pageEl !== $newPage[0];
+ });
+
+ if (dynamicNavbar) {
+ $oldNavbarEl = $navbarsInView.filter(function (navbarEl) {
+ return navbarEl !== $newNavbarEl[0];
+ });
+ }
+ } else {
+ var removedPageEls = [];
+ var removedNavbarEls = [];
+
+ if ($pagesInView.length > 1) {
+ var _i2 = 0;
+
+ for (_i2 = 0; _i2 < $pagesInView.length - 1; _i2 += 1) {
+ if (masterPageEl && $pagesInView[_i2] === masterPageEl) {
+ $pagesInView.eq(_i2).addClass('page-master-stacked');
+ $pagesInView.eq(_i2).trigger('page:masterstack');
+ router.emit('pageMasterStack', $pagesInView[_i2]);
+
+ if (dynamicNavbar) {
+ (0, _dom.default)(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');
+ router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));
+ }
+
+ continue; // eslint-disable-line
+ }
+
+ var oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(_i2));
+
+ if (router.params.stackPages) {
+ $pagesInView.eq(_i2).addClass('stacked');
+ $pagesInView.eq(_i2).trigger('page:stack');
+ router.emit('pageStack', $pagesInView[_i2]);
+
+ if (dynamicNavbar) {
+ (0, _dom.default)(oldNavbarEl).addClass('stacked');
+ }
+ } else {
+ // Page remove event
+ removedPageEls.push($pagesInView[_i2]);
+ router.pageCallback('beforeRemove', $pagesInView[_i2], $navbarsInView && $navbarsInView[_i2], 'previous', undefined, options);
+ router.removePage($pagesInView[_i2]);
+
+ if (dynamicNavbar && oldNavbarEl) {
+ removedNavbarEls.push(oldNavbarEl);
+ router.removeNavbar(oldNavbarEl);
+ }
+ }
+ }
+ }
+
+ $oldPage = $viewEl.children('.page:not(.stacked)').filter(function (pageEl) {
+ return pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0;
+ });
+
+ if (dynamicNavbar) {
+ $oldNavbarEl = $navbarsEl.children('.navbar:not(.stacked)').filter(function (navbarEl) {
+ return navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0;
+ });
+ }
+
+ removedPageEls = [];
+ removedNavbarEls = [];
+ }
+
+ if (isDetail && !options.reloadAll) {
+ if ($oldPage.length > 1 || reloadDetail) {
+ $oldPage = $oldPage.filter(function (pageEl) {
+ return !pageEl.classList.contains('page-master');
+ });
+ }
+
+ if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {
+ $oldNavbarEl = $oldNavbarEl.filter(function (navbarEl) {
+ return !navbarEl.classList.contains('navbar-master');
+ });
+ }
+ } // Push State
+
+
+ if (router.params.browserHistory && (options.browserHistory || options.replaceState) && !options.reloadPrevious) {
+ var browserHistoryRoot = router.params.browserHistoryRoot || '';
+
+ _history.default[options.reloadCurrent || reloadDetail && otherDetailPageEl || options.reloadAll || options.replaceState ? 'replace' : 'push'](view.id, {
+ url: options.route.url
+ }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);
+ }
+
+ if (!options.reloadPrevious) {
+ // Current Page & Navbar
+ router.currentPageEl = $newPage[0];
+
+ if (dynamicNavbar && $newNavbarEl.length) {
+ router.currentNavbarEl = $newNavbarEl[0];
+ } else {
+ delete router.currentNavbarEl;
+ } // Current Route
+
+
+ router.currentRoute = options.route;
+ } // Update router history
+
+
+ var url = options.route.url;
+
+ if (options.history) {
+ if (((options.reloadCurrent || reloadDetail && otherDetailPageEl) && router.history.length) > 0 || options.replaceState) {
+ if (reloadDetail && detailsInBetweenRemoved > 0) {
+ router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);
+ }
+
+ router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;
+ } else if (options.reloadPrevious) {
+ router.history[router.history.length - 2] = url;
+ } else if (options.reloadAll) {
+ router.history = [url];
+ } else {
+ router.history.push(url);
+ }
+ }
+
+ router.saveHistory(); // Insert new page and navbar
+
+ var newPageInDom = $newPage.parents(document).length > 0;
+ var f7Component = $newPage[0].f7Component;
+
+ if (options.reloadPrevious) {
+ if (f7Component && !newPageInDom) {
+ f7Component.mount(function (componentEl) {
+ (0, _dom.default)(componentEl).insertBefore($oldPage);
+ });
+ } else {
+ $newPage.insertBefore($oldPage);
+ }
+
+ if (dynamicNavbar && $newNavbarEl.length) {
+ if ($newNavbarEl.find('.title-large').length) {
+ $newNavbarEl.addClass('navbar-large');
+ }
+
+ if ($oldNavbarEl.length) {
+ $newNavbarEl.insertBefore($oldNavbarEl);
+ } else {
+ if (!router.$navbarsEl.parents(document).length) {
+ router.$el.prepend(router.$navbarsEl);
+ }
+
+ $navbarsEl.append($newNavbarEl);
+ }
+ }
+ } else {
+ if ($oldPage.next('.page')[0] !== $newPage[0]) {
+ if (f7Component && !newPageInDom) {
+ f7Component.mount(function (componentEl) {
+ $viewEl.append(componentEl);
+ });
+ } else {
+ $viewEl.append($newPage[0]);
+ }
+ }
+
+ if (dynamicNavbar && $newNavbarEl.length) {
+ if ($newNavbarEl.find('.title-large').length) {
+ $newNavbarEl.addClass('navbar-large');
+ }
+
+ if (!router.$navbarsEl.parents(document).length) {
+ router.$el.prepend(router.$navbarsEl);
+ }
+
+ $navbarsEl.append($newNavbarEl[0]);
+ }
+ }
+
+ if (!newPageInDom) {
+ router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);
+ } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {
+ $newPage[0].f7PageMounted = true;
+ router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);
+ } // Remove old page
+
+
+ if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {
+ if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {
+ $oldPage.addClass('stacked');
+ $oldPage.trigger('page:stack');
+ router.emit('pageStack', $oldPage[0]);
+
+ if (dynamicNavbar) {
+ $oldNavbarEl.addClass('stacked');
+ }
+ } else {
+ // Page remove event
+ router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
+ router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
+ router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);
+ router.removePage($oldPage);
+
+ if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {
+ router.removeNavbar($oldNavbarEl);
+ }
+ }
+ } else if (options.reloadAll) {
+ $oldPage.each(function (pageEl, index) {
+ var $oldPageEl = (0, _dom.default)(pageEl);
+ var $oldNavbarElEl = (0, _dom.default)(app.navbar.getElByPage($oldPageEl));
+
+ if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {
+ $oldPageEl.addClass('stacked');
+ $oldPageEl.trigger('page:stack');
+ router.emit('pageStack', $oldPageEl[0]);
+
+ if (dynamicNavbar) {
+ $oldNavbarElEl.addClass('stacked');
+ }
+ } else {
+ // Page remove event
+ if ($oldPageEl.hasClass('page-current')) {
+ router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
+ router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
+ }
+
+ router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);
+ router.removePage($oldPageEl);
+
+ if (dynamicNavbar && $oldNavbarElEl.length) {
+ router.removeNavbar($oldNavbarElEl);
+ }
+ }
+ });
+ } else if (options.reloadPrevious) {
+ if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {
+ $oldPage.addClass('stacked');
+ $oldPage.trigger('page:stack');
+ router.emit('pageStack', $oldPage[0]);
+
+ if (dynamicNavbar) {
+ $oldNavbarEl.addClass('stacked');
+ }
+ } else {
+ // Page remove event
+ router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);
+ router.removePage($oldPage);
+
+ if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {
+ router.removeNavbar($oldNavbarEl);
+ }
+ }
+ } // Load Tab
+
+
+ if (options.route.route.tab) {
+ router.tabLoad(options.route.route.tab, (0, _utils.extend)({}, options, {
+ history: false,
+ browserHistory: false
+ }));
+ } // Check master detail
+
+
+ if (masterDetailEnabled) {
+ view.checkMasterDetailBreakpoint();
+ } // Page init and before init events
+
+
+ router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);
+
+ if (options.reloadCurrent || options.reloadAll || reloadDetail) {
+ router.allowPageChange = true;
+ router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);
+ $newPage.removeAttr('aria-hidden');
+
+ if (dynamicNavbar && $newNavbarEl) {
+ $newNavbarEl.removeAttr('aria-hidden');
+ }
+
+ router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);
+ if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();
+
+ if (reloadDetail) {
+ router.setPagePosition((0, _dom.default)(masterPageEl), 'previous');
+
+ if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {
+ router.setNavbarPosition((0, _dom.default)(masterPageEl.f7Page.navbarEl), 'previous');
+ }
+ }
+
+ return router;
+ }
+
+ if (options.reloadPrevious) {
+ router.allowPageChange = true;
+ return router;
+ } // Before animation event
+
+
+ router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);
+ router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options); // Animation
+
+ function afterAnimation() {
+ router.setPagePosition($newPage, 'current', false);
+ router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));
+
+ if (dynamicNavbar) {
+ router.setNavbarPosition($newNavbarEl, 'current', false);
+ router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));
+ } // After animation event
+
+
+ router.allowPageChange = true;
+ router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);
+ router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);
+ var keepOldPage = (router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"]) && !isMaster;
+
+ if (!keepOldPage) {
+ if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {
+ keepOldPage = true;
+ }
+ }
+
+ if (!keepOldPage) {
+ if (router.params.stackPages) {
+ $oldPage.addClass('stacked');
+ $oldPage.trigger('page:stack');
+ router.emit('pageStack', $oldPage[0]);
+
+ if (dynamicNavbar) {
+ $oldNavbarEl.addClass('stacked');
+ }
+ } else if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {
+ // Remove event
+ router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);
+ router.removePage($oldPage);
+
+ if (dynamicNavbar && $oldNavbarEl.length) {
+ router.removeNavbar($oldNavbarEl);
+ }
+ }
+ }
+
+ if (options.clearPreviousHistory) router.clearPreviousHistory();
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
+
+ if (router.params.browserHistory) {
+ _history.default.clearRouterQueue();
+ }
+ }
+
+ function setPositionClasses() {
+ router.setPagePosition($oldPage, 'current', false);
+ router.setPagePosition($newPage, 'next', false);
+
+ if (dynamicNavbar) {
+ router.setNavbarPosition($oldNavbarEl, 'current', false);
+ router.setNavbarPosition($newNavbarEl, 'next', false);
+ }
+ }
+
+ if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {
+ var delay = router.params[router.app.theme + "PageLoadDelay"];
+ var transition = router.params.transition;
+ if (options.transition) transition = options.transition;
+
+ if (!transition && router.currentRoute && router.currentRoute.route) {
+ transition = router.currentRoute.route.transition;
+ }
+
+ if (!transition && router.currentRoute && router.currentRoute.route.options) {
+ transition = router.currentRoute.route.options.transition;
+ }
+
+ if (transition) {
+ $newPage[0].f7PageTransition = transition;
+ }
+
+ if (delay) {
+ setTimeout(function () {
+ setPositionClasses();
+ router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, function () {
+ afterAnimation();
+ });
+ }, delay);
+ } else {
+ setPositionClasses();
+ router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, function () {
+ afterAnimation();
+ });
+ }
+ } else {
+ afterAnimation();
+ }
+
+ return router;
+}
+
+function load(router, loadParams, loadOptions, ignorePageChange) {
+ if (loadParams === void 0) {
+ loadParams = {};
+ }
+
+ if (loadOptions === void 0) {
+ loadOptions = {};
+ }
+
+ if (!router.allowPageChange && !ignorePageChange) return router;
+ var params = loadParams;
+ var options = loadOptions;
+ var url = params.url,
+ content = params.content,
+ el = params.el,
+ pageName = params.pageName,
+ component = params.component,
+ componentUrl = params.componentUrl;
+
+ if (!options.reloadCurrent && options.route && options.route.route && options.route.route.parentPath && router.currentRoute.route && router.currentRoute.route.parentPath === options.route.route.parentPath) {
+ // Do something nested
+ if (options.route.url === router.url) {
+ router.allowPageChange = true;
+ return false;
+ } // Check for same params
+
+
+ var sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;
+
+ if (sameParams) {
+ // Check for equal params name
+ Object.keys(options.route.params).forEach(function (paramName) {
+ if (!(paramName in router.currentRoute.params) || router.currentRoute.params[paramName] !== options.route.params[paramName]) {
+ sameParams = false;
+ }
+ });
+ }
+
+ if (sameParams) {
+ if (options.route.route.tab) {
+ return router.tabLoad(options.route.route.tab, options);
+ }
+
+ return false;
+ }
+
+ if (!sameParams && options.route.route.tab && router.currentRoute.route.tab && router.currentRoute.parentPath === options.route.parentPath) {
+ return router.tabLoad(options.route.route.tab, options);
+ }
+ }
+
+ if (options.route && options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {
+ router.allowPageChange = true;
+ return false;
+ }
+
+ if (!options.route && url) {
+ options.route = router.parseRouteUrl(url);
+ (0, _utils.extend)(options.route, {
+ route: {
+ url: url,
+ path: url
+ }
+ });
+ } // Component Callbacks
+
+
+ function resolve(pageEl, newOptions) {
+ return forward(router, pageEl, (0, _utils.extend)(options, newOptions));
+ }
+
+ function reject() {
+ router.allowPageChange = true;
+ return router;
+ }
+
+ if (url || componentUrl || component) {
+ router.allowPageChange = false;
+ } // Proceed
+
+
+ if (content) {
+ forward(router, router.getPageEl(content), options);
+ } else if (el) {
+ // Load page from specified HTMLElement or by page name in pages container
+ forward(router, router.getPageEl(el), options);
+ } else if (pageName) {
+ // Load page by page name in pages container
+ forward(router, router.$el.children(".page[data-name=\"" + pageName + "\"]").eq(0), options);
+ } else if (component || componentUrl) {
+ // Load from component (F7/Vue/React/...)
+ try {
+ router.pageComponentLoader({
+ routerEl: router.el,
+ component: component,
+ componentUrl: componentUrl,
+ options: options,
+ resolve: resolve,
+ reject: reject
+ });
+ } catch (err) {
+ router.allowPageChange = true;
+ throw err;
+ }
+ } else if (url) {
+ // Load using XHR
+ if (router.xhrAbortController) {
+ router.xhrAbortController.abort();
+ router.xhrAbortController = false;
+ }
+
+ router.xhrRequest(url, options).then(function (pageContent) {
+ forward(router, router.getPageEl(pageContent), options);
+ }).catch(function () {
+ router.allowPageChange = true;
+ });
+ }
+
+ return router;
+}
+
+function openIn(router, url, options) {
+ var navigateOptions = {
+ url: url,
+ route: {
+ path: url,
+ options: _extends({}, options, {
+ openIn: undefined
+ })
+ }
+ };
+
+ var params = _extends({}, options);
+
+ if (options.openIn === 'popup') {
+ params.content = "";
+ navigateOptions.route.popup = params;
+ }
+
+ if (options.openIn === 'loginScreen') {
+ params.content = "";
+ navigateOptions.route.loginScreen = params;
+ }
+
+ if (options.openIn === 'sheet') {
+ params.content = "";
+ navigateOptions.route.sheet = params;
+ }
+
+ if (options.openIn === 'popover') {
+ params.targetEl = options.clickedEl || options.targetEl;
+ params.content = "";
+ navigateOptions.route.popover = params;
+ }
+
+ if (options.openIn.indexOf('panel') >= 0) {
+ var parts = options.openIn.split(':');
+ var side = parts[1] || 'left';
+ var effect = parts[2] || 'cover';
+ params.targetEl = options.clickedEl || options.targetEl;
+ params.content = "";
+ navigateOptions.route.panel = params;
+ }
+
+ return router.navigate(navigateOptions);
+}
+
+function navigate(navigateParams, navigateOptions) {
+ if (navigateOptions === void 0) {
+ navigateOptions = {};
+ }
+
+ var router = this;
+ if (router.swipeBackActive) return router;
+ var url;
+ var createRoute;
+ var name;
+ var path;
+ var query;
+ var params;
+ var route;
+
+ if (typeof navigateParams === 'string') {
+ url = navigateParams;
+ } else {
+ url = navigateParams.url;
+ createRoute = navigateParams.route;
+ name = navigateParams.name;
+ path = navigateParams.path;
+ query = navigateParams.query;
+ params = navigateParams.params;
+ }
+
+ if (name || path) {
+ url = router.generateUrl({
+ path: path,
+ name: name,
+ params: params,
+ query: query
+ });
+
+ if (url) {
+ return router.navigate(url, navigateOptions);
+ }
+
+ return router;
+ }
+
+ var app = router.app;
+ (0, _appRouterCheck.default)(router, 'navigate');
+
+ if (url === '#' || url === '') {
+ return router;
+ }
+
+ var navigateUrl = url.replace('./', '');
+
+ if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {
+ var currentPath = router.currentRoute.parentPath || router.currentRoute.path;
+ navigateUrl = ((currentPath ? currentPath + "/" : '/') + navigateUrl).replace('///', '/').replace('//', '/');
+ }
+
+ if (createRoute) {
+ route = (0, _utils.extend)(router.parseRouteUrl(navigateUrl), {
+ route: (0, _utils.extend)({}, createRoute)
+ });
+ } else {
+ route = router.findMatchingRoute(navigateUrl);
+ }
+
+ if (!route) {
+ return router;
+ }
+
+ if (route.route && route.route.viewName) {
+ var anotherViewName = route.route.viewName;
+ var anotherView = app.views[anotherViewName];
+
+ if (!anotherView) {
+ throw new Error("Framework7: There is no View with \"" + anotherViewName + "\" name that was specified in this route");
+ }
+
+ if (anotherView !== router.view) {
+ return anotherView.router.navigate(navigateParams, navigateOptions);
+ }
+ }
+
+ if (route.route.redirect) {
+ return _redirect.default.call(router, 'forward', route, navigateOptions);
+ }
+
+ var options = {};
+
+ if (route.route.options) {
+ (0, _utils.extend)(options, route.route.options, navigateOptions);
+ } else {
+ (0, _utils.extend)(options, navigateOptions);
+ }
+
+ if (options.openIn && (!router.params.ignoreOpenIn || router.params.ignoreOpenIn && router.history.length > 0)) {
+ return openIn(router, navigateUrl, options);
+ }
+
+ options.route = route;
+
+ function resolve() {
+ var routerLoaded = false;
+ 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
+ if (route.route[modalLoadProp] && !routerLoaded) {
+ routerLoaded = true;
+ router.modalLoad(modalLoadProp, route, options, 'forward');
+ }
+ });
+
+ if (route.route.keepAlive && route.route.keepAliveData) {
+ load(router, {
+ el: route.route.keepAliveData.pageEl
+ }, options, false);
+ routerLoaded = true;
+ }
+
+ 'url content component pageName el componentUrl'.split(' ').forEach(function (pageLoadProp) {
+ if (route.route[pageLoadProp] && !routerLoaded) {
+ var _load;
+
+ routerLoaded = true;
+ load(router, (_load = {}, _load[pageLoadProp] = route.route[pageLoadProp], _load), options, false);
+ }
+ });
+ if (routerLoaded) return; // Async
+
+ function asyncResolve(resolveParams, resolveOptions) {
+ router.allowPageChange = false;
+ var resolvedAsModal = false;
+ 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
+ if (resolveParams[modalLoadProp]) {
+ resolvedAsModal = true;
+ var modalRoute = (0, _utils.extend)({}, route, {
+ route: resolveParams
+ });
+ router.allowPageChange = true;
+ router.modalLoad(modalLoadProp, modalRoute, (0, _utils.extend)(options, resolveOptions), 'forward');
+ }
+ });
+ if (resolvedAsModal) return;
+ load(router, resolveParams, (0, _utils.extend)(options, resolveOptions), true);
+ }
+
+ function asyncReject() {
+ router.allowPageChange = true;
+ }
+
+ if (route.route.async) {
+ router.allowPageChange = false;
+ route.route.async.call(router, {
+ router: router,
+ to: options.route,
+ from: router.currentRoute,
+ resolve: asyncResolve,
+ reject: asyncReject,
+ direction: 'forward',
+ app: app
+ });
+ }
+
+ if (route.route.asyncComponent) {
+ (0, _asyncComponent.default)(router, route.route.asyncComponent, asyncResolve, asyncReject);
+ }
+ }
+
+ function reject() {
+ router.allowPageChange = true;
+ }
+
+ if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {
+ // load detail route
+ var preloadMaster = true;
+ var masterLoaded = false;
+
+ if (router.currentRoute && router.currentRoute.route) {
+ if ((router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && (router.currentRoute.route === route.route.masterRoute || router.currentRoute.route.path === route.route.masterRoute.path)) {
+ preloadMaster = false;
+ }
+
+ if (router.currentRoute.route.masterRoute && (router.currentRoute.route.masterRoute === route.route.masterRoute || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)) {
+ preloadMaster = false;
+ masterLoaded = true;
+ }
+ }
+
+ if (preloadMaster || masterLoaded && navigateOptions.reloadAll) {
+ router.navigate({
+ path: route.route.masterRoute.path,
+ params: route.params || {}
+ }, {
+ animate: false,
+ reloadAll: navigateOptions.reloadAll,
+ reloadCurrent: navigateOptions.reloadCurrent,
+ reloadPrevious: navigateOptions.reloadPrevious,
+ browserHistory: !navigateOptions.initial,
+ history: !navigateOptions.initial,
+ once: {
+ pageAfterIn: function pageAfterIn() {
+ router.navigate(navigateParams, (0, _utils.extend)({}, navigateOptions, {
+ animate: false,
+ reloadAll: false,
+ reloadCurrent: false,
+ reloadPrevious: false,
+ history: !navigateOptions.initial,
+ browserHistory: !navigateOptions.initial
+ }));
+ }
+ }
+ });
+ return router;
+ }
+ }
+
+ _processRouteQueue.default.call(router, route, router.currentRoute, function () {
+ if (route.route.modules) {
+ app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ resolve();
+ }
+ }, function () {
+ reject();
+ }, 'forward'); // Return Router
+
+
+ return router;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/process-route-queue.js b/www/assets/framework7/cjs/modules/router/process-route-queue.js
new file mode 100644
index 000000000..48684784c
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/process-route-queue.js
@@ -0,0 +1,80 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = processRouteQueue;
+
+function processQueue(router, routerQueue, routeQueue, to, from, resolve, _reject, direction) {
+ var queue = [];
+
+ if (Array.isArray(routeQueue)) {
+ queue.push.apply(queue, routeQueue);
+ } else if (routeQueue && typeof routeQueue === 'function') {
+ queue.push(routeQueue);
+ }
+
+ if (routerQueue) {
+ if (Array.isArray(routerQueue)) {
+ queue.push.apply(queue, routerQueue);
+ } else {
+ queue.push(routerQueue);
+ }
+ }
+
+ function next() {
+ if (queue.length === 0) {
+ resolve();
+ return;
+ }
+
+ var queueItem = queue.shift();
+ queueItem.call(router, {
+ router: router,
+ to: to,
+ from: from,
+ resolve: function resolve() {
+ next();
+ },
+ reject: function reject() {
+ _reject();
+ },
+ direction: direction,
+ app: router.app
+ });
+ }
+
+ next();
+}
+
+function processRouteQueue(to, from, resolve, reject, direction) {
+ var router = this;
+
+ function enterNextRoute() {
+ if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {
+ router.allowPageChange = false;
+ processQueue(router, router.params.routesBeforeEnter, to.route.beforeEnter, to, from, function () {
+ router.allowPageChange = true;
+ resolve();
+ }, function () {
+ reject();
+ }, direction);
+ } else {
+ resolve();
+ }
+ }
+
+ function leaveCurrentRoute() {
+ if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {
+ router.allowPageChange = false;
+ processQueue(router, router.params.routesBeforeLeave, from.route.beforeLeave, to, from, function () {
+ router.allowPageChange = true;
+ enterNextRoute();
+ }, function () {
+ reject();
+ }, direction);
+ } else {
+ enterNextRoute();
+ }
+ }
+
+ leaveCurrentRoute();
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/redirect.js b/www/assets/framework7/cjs/modules/router/redirect.js
new file mode 100644
index 000000000..cb3781718
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/redirect.js
@@ -0,0 +1,52 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = redirect;
+
+var _utils = require("../../shared/utils");
+
+function redirect(direction, route, options) {
+ var router = this;
+ var r = route.route.redirect;
+ var method = direction === 'forward' ? 'navigate' : 'back';
+
+ if (options.initial && router.params.browserHistory) {
+ options.replaceState = true; // eslint-disable-line
+
+ options.history = true; // eslint-disable-line
+ }
+
+ function redirectResolve(redirectUrl, redirectOptions) {
+ if (redirectOptions === void 0) {
+ redirectOptions = {};
+ }
+
+ router.allowPageChange = true;
+ router[method](redirectUrl, (0, _utils.extend)({}, options, redirectOptions));
+ }
+
+ function redirectReject() {
+ router.allowPageChange = true;
+ }
+
+ if (typeof r === 'function') {
+ router.allowPageChange = false;
+ var redirectUrl = r.call(router, {
+ router: router,
+ to: route,
+ resolve: redirectResolve,
+ reject: redirectReject,
+ direction: direction,
+ app: router.app
+ });
+
+ if (redirectUrl && typeof redirectUrl === 'string') {
+ router.allowPageChange = true;
+ return router[method](redirectUrl, options);
+ }
+
+ return router;
+ }
+
+ return router[method](r, options);
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/router-class.js b/www/assets/framework7/cjs/modules/router/router-class.js
new file mode 100644
index 000000000..3c3eed835
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/router-class.js
@@ -0,0 +1,1500 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _pathToRegexp = require("path-to-regexp");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _class = _interopRequireDefault(require("../../shared/class"));
+
+var _utils = require("../../shared/utils");
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+var _swipeBack = _interopRequireDefault(require("./swipe-back"));
+
+var _navigate = require("./navigate");
+
+var _tab = require("./tab");
+
+var _modal = require("./modal");
+
+var _back = require("./back");
+
+var _clearPreviousHistory = require("./clear-previous-history");
+
+var _appRouterCheck = _interopRequireDefault(require("./app-router-check"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Router = /*#__PURE__*/function (_Framework7Class) {
+ _inheritsLoose(Router, _Framework7Class);
+
+ function Router(app, view) {
+ var _this;
+
+ _this = _Framework7Class.call(this, {}, [typeof view === 'undefined' ? app : view]) || this;
+
+ var router = _assertThisInitialized(_this); // Is App Router
+
+
+ router.isAppRouter = typeof view === 'undefined';
+
+ if (router.isAppRouter) {
+ // App Router
+ (0, _utils.extend)(false, router, {
+ app: app,
+ params: app.params.view,
+ routes: app.routes || [],
+ cache: app.cache
+ });
+ } else {
+ // View Router
+ (0, _utils.extend)(false, router, {
+ app: app,
+ view: view,
+ viewId: view.id,
+ id: view.params.routerId,
+ params: view.params,
+ routes: view.routes,
+ history: view.history,
+ scrollHistory: view.scrollHistory,
+ cache: app.cache,
+ dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,
+ initialPages: [],
+ initialNavbars: []
+ });
+ } // Install Modules
+
+
+ router.useModules(); // AllowPageChage
+
+ router.allowPageChange = true; // Current Route
+
+ var currentRoute = {};
+ var previousRoute = {};
+ Object.defineProperty(router, 'currentRoute', {
+ enumerable: true,
+ configurable: true,
+ set: function set(newRoute) {
+ if (newRoute === void 0) {
+ newRoute = {};
+ }
+
+ previousRoute = (0, _utils.extend)({}, currentRoute);
+ currentRoute = newRoute;
+ if (!currentRoute) return;
+ router.url = currentRoute.url;
+ router.emit('routeChange', newRoute, previousRoute, router);
+ },
+ get: function get() {
+ return currentRoute;
+ }
+ });
+ Object.defineProperty(router, 'previousRoute', {
+ enumerable: true,
+ configurable: true,
+ get: function get() {
+ return previousRoute;
+ },
+ set: function set(newRoute) {
+ previousRoute = newRoute;
+ }
+ });
+ return router || _assertThisInitialized(_this);
+ }
+
+ var _proto = Router.prototype;
+
+ _proto.mount = function mount() {
+ var router = this;
+ var view = router.view;
+ var document = (0, _ssrWindow.getDocument)();
+ (0, _utils.extend)(false, router, {
+ tempDom: document.createElement('div'),
+ $el: view.$el,
+ el: view.el,
+ $navbarsEl: view.$navbarsEl,
+ navbarsEl: view.navbarsEl
+ });
+ router.emit('local::mount routerMount', router);
+ };
+
+ _proto.animatableNavElements = function animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {
+ var router = this;
+ var dynamicNavbar = router.dynamicNavbar;
+ var animateIcon = router.params.iosAnimateNavbarBackIcon;
+ var newNavEls;
+ var oldNavEls;
+
+ function animatableNavEl($el, $navbarInner) {
+ var isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');
+ var isSubnavbar = $el.hasClass('subnavbar');
+ var needsOpacityTransition = isSliding ? !isSubnavbar : true;
+ var $iconEl = $el.find('.back .icon');
+ var isIconLabel;
+
+ if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {
+ $el = $iconEl.next('span'); // eslint-disable-line
+
+ isIconLabel = true;
+ }
+
+ return {
+ $el: $el,
+ isIconLabel: isIconLabel,
+ leftOffset: $el[0].f7NavbarLeftOffset,
+ rightOffset: $el[0].f7NavbarRightOffset,
+ isSliding: isSliding,
+ isSubnavbar: isSubnavbar,
+ needsOpacityTransition: needsOpacityTransition
+ };
+ }
+
+ if (dynamicNavbar) {
+ newNavEls = [];
+ oldNavEls = [];
+ $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(function (navEl) {
+ var $navEl = (0, _dom.default)(navEl);
+ if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;
+ if ($navEl.hasClass('title') && toLarge) return;
+ newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));
+ });
+
+ if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {
+ $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(function (navEl) {
+ var $navEl = (0, _dom.default)(navEl);
+ if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;
+ if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;
+
+ if ($navEl.hasClass('title') && fromLarge) {
+ return;
+ }
+
+ oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));
+ });
+ }
+
+ [oldNavEls, newNavEls].forEach(function (navEls) {
+ navEls.forEach(function (navEl) {
+ var n = navEl;
+ var isSliding = navEl.isSliding,
+ $el = navEl.$el;
+ var otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;
+ if (!(isSliding && $el.hasClass('title') && otherEls)) return;
+ otherEls.forEach(function (otherNavEl) {
+ if (otherNavEl.isIconLabel) {
+ var iconTextEl = otherNavEl.$el[0];
+ n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;
+ }
+ });
+ });
+ });
+ }
+
+ return {
+ newNavEls: newNavEls,
+ oldNavEls: oldNavEls
+ };
+ };
+
+ _proto.animate = function animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {
+ var router = this;
+
+ if (router.params.animateCustom) {
+ router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);
+ return;
+ }
+
+ var dynamicNavbar = router.dynamicNavbar;
+ var ios = router.app.theme === 'ios';
+
+ if (transition) {
+ var routerCustomTransitionClass = "router-transition-custom router-transition-" + transition + "-" + direction; // Animate
+
+ var onCustomTransitionDone = function onCustomTransitionDone() {
+ router.$el.removeClass(routerCustomTransitionClass);
+
+ if (dynamicNavbar && router.$navbarsEl.length) {
+ if ($newNavbarEl) {
+ router.$navbarsEl.prepend($newNavbarEl);
+ }
+
+ if ($oldNavbarEl) {
+ router.$navbarsEl.prepend($oldNavbarEl);
+ }
+ }
+
+ if (callback) callback();
+ };
+
+ (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);
+
+ if (dynamicNavbar) {
+ if ($newNavbarEl && $newPageEl) {
+ router.setNavbarPosition($newNavbarEl, '');
+ $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');
+ $newPageEl.prepend($newNavbarEl);
+ }
+
+ if ($oldNavbarEl && $oldPageEl) {
+ router.setNavbarPosition($oldNavbarEl, '');
+ $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');
+ $oldPageEl.prepend($oldNavbarEl);
+ }
+ }
+
+ router.$el.addClass(routerCustomTransitionClass);
+ return;
+ } // Router Animation class
+
+
+ var routerTransitionClass = "router-transition-" + direction + " router-transition";
+ var newNavEls;
+ var oldNavEls;
+ var fromLarge;
+ var toLarge;
+ var toDifferent;
+ var oldIsLarge;
+ var newIsLarge;
+
+ if (ios && dynamicNavbar) {
+ var betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));
+
+ if (!betweenMasterAndDetail) {
+ oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');
+ newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');
+ fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');
+ toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');
+ toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;
+ }
+
+ var navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);
+ newNavEls = navEls.newNavEls;
+ oldNavEls = navEls.oldNavEls;
+ }
+
+ function animateNavbars(progress) {
+ if (!(ios && dynamicNavbar)) return;
+
+ if (progress === 1) {
+ if (toLarge) {
+ $newNavbarEl.addClass('router-navbar-transition-to-large');
+ $oldNavbarEl.addClass('router-navbar-transition-to-large');
+ }
+
+ if (fromLarge) {
+ $newNavbarEl.addClass('router-navbar-transition-from-large');
+ $oldNavbarEl.addClass('router-navbar-transition-from-large');
+ }
+ }
+
+ newNavEls.forEach(function (navEl) {
+ var $el = navEl.$el;
+ var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;
+
+ if (navEl.isSliding) {
+ if (navEl.isSubnavbar && newIsLarge) {
+ // prettier-ignore
+ $el[0].style.setProperty('transform', "translate3d(" + offset * (1 - progress) + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)", 'important');
+ } else {
+ $el.transform("translate3d(" + offset * (1 - progress) + "px,0,0)");
+ }
+ }
+ });
+ oldNavEls.forEach(function (navEl) {
+ var $el = navEl.$el;
+ var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;
+
+ if (navEl.isSliding) {
+ if (navEl.isSubnavbar && oldIsLarge) {
+ $el.transform("translate3d(" + offset * progress + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)");
+ } else {
+ $el.transform("translate3d(" + offset * progress + "px,0,0)");
+ }
+ }
+ });
+ } // AnimationEnd Callback
+
+
+ function onDone() {
+ if (router.dynamicNavbar) {
+ if ($newNavbarEl) {
+ $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');
+ $newNavbarEl.addClass('navbar-no-title-large-transition');
+ (0, _utils.nextFrame)(function () {
+ $newNavbarEl.removeClass('navbar-no-title-large-transition');
+ });
+ }
+
+ if ($oldNavbarEl) {
+ $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');
+ }
+
+ if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {
+ $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');
+ } else {
+ $newNavbarEl.find('.sliding').transform('');
+ }
+
+ if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {
+ $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');
+ } else {
+ $oldNavbarEl.find('.sliding').transform('');
+ }
+ }
+
+ router.$el.removeClass(routerTransitionClass);
+ if (callback) callback();
+ }
+
+ (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(function () {
+ onDone();
+ }); // Animate
+
+ if (dynamicNavbar) {
+ // Prepare Navbars
+ animateNavbars(0);
+ (0, _utils.nextFrame)(function () {
+ // Add class, start animation
+ router.$el.addClass(routerTransitionClass);
+
+ if (toDifferent) {
+ // eslint-disable-next-line
+ router.el._clientLeft = router.el.clientLeft;
+ }
+
+ animateNavbars(1);
+ });
+ } else {
+ // Add class, start animation
+ router.$el.addClass(routerTransitionClass);
+ }
+ };
+
+ _proto.removeModal = function removeModal(modalEl) {
+ var router = this;
+ router.removeEl(modalEl);
+ } // eslint-disable-next-line
+ ;
+
+ _proto.removeTabContent = function removeTabContent(tabEl) {
+ var $tabEl = (0, _dom.default)(tabEl);
+ $tabEl.html('');
+ };
+
+ _proto.removeNavbar = function removeNavbar(el) {
+ var router = this;
+ router.removeEl(el);
+ };
+
+ _proto.removePage = function removePage(el) {
+ var $el = (0, _dom.default)(el);
+ var f7Page = $el && $el[0] && $el[0].f7Page;
+ var router = this;
+
+ if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {
+ $el.remove();
+ return;
+ }
+
+ router.removeEl(el);
+ };
+
+ _proto.removeEl = function removeEl(el) {
+ if (!el) return;
+ var router = this;
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return;
+ $el.find('.tab').each(function (tabEl) {
+ (0, _dom.default)(tabEl).children().each(function (tabChild) {
+ if (tabChild.f7Component) {
+ (0, _dom.default)(tabChild).trigger('tab:beforeremove');
+ tabChild.f7Component.destroy();
+ }
+ });
+ });
+
+ if ($el[0].f7Component && $el[0].f7Component.destroy) {
+ $el[0].f7Component.destroy();
+ }
+
+ if (!router.params.removeElements) {
+ return;
+ }
+
+ if (router.params.removeElementsWithTimeout) {
+ setTimeout(function () {
+ $el.remove();
+ }, router.params.removeElementsTimeout);
+ } else {
+ $el.remove();
+ }
+ };
+
+ _proto.getPageEl = function getPageEl(content) {
+ var router = this;
+
+ if (typeof content === 'string') {
+ router.tempDom.innerHTML = content;
+ } else {
+ if ((0, _dom.default)(content).hasClass('page')) {
+ return content;
+ }
+
+ router.tempDom.innerHTML = '';
+ (0, _dom.default)(router.tempDom).append(content);
+ }
+
+ return router.findElement('.page', router.tempDom);
+ };
+
+ _proto.findElement = function findElement(stringSelector, container, notStacked) {
+ var router = this;
+ var view = router.view;
+ var app = router.app; // Modals Selector
+
+ var modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';
+ var $container = (0, _dom.default)(container);
+ var selector = stringSelector;
+ if (notStacked) selector += ':not(.stacked)';
+ var found = $container.find(selector).filter(function (el) {
+ return (0, _dom.default)(el).parents(modalsSelector).length === 0;
+ });
+
+ if (found.length > 1) {
+ if (typeof view.selector === 'string') {
+ // Search in related view
+ found = $container.find(view.selector + " " + selector);
+ }
+
+ if (found.length > 1) {
+ // Search in main view
+ found = $container.find("." + app.params.viewMainClass + " " + selector);
+ }
+ }
+
+ if (found.length === 1) return found; // Try to find not stacked
+
+ if (!notStacked) found = router.findElement(selector, $container, true);
+ if (found && found.length === 1) return found;
+ if (found && found.length > 1) return (0, _dom.default)(found[0]);
+ return undefined;
+ };
+
+ _proto.flattenRoutes = function flattenRoutes(routes) {
+ if (routes === void 0) {
+ routes = this.routes;
+ }
+
+ var router = this;
+ var flattenedRoutes = [];
+ routes.forEach(function (route) {
+ var hasTabRoutes = false;
+
+ if ('tabs' in route && route.tabs) {
+ var mergedPathsRoutes = route.tabs.map(function (tabRoute) {
+ var tRoute = (0, _utils.extend)({}, route, {
+ path: (route.path + "/" + tabRoute.path).replace('///', '/').replace('//', '/'),
+ parentPath: route.path,
+ tab: tabRoute
+ });
+ delete tRoute.tabs;
+ delete tRoute.routes;
+ return tRoute;
+ });
+ hasTabRoutes = true;
+ flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));
+ }
+
+ if ('detailRoutes' in route) {
+ var _mergedPathsRoutes = route.detailRoutes.map(function (detailRoute) {
+ var dRoute = (0, _utils.extend)({}, detailRoute);
+ dRoute.masterRoute = route;
+ dRoute.masterRoutePath = route.path;
+ return dRoute;
+ });
+
+ flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(_mergedPathsRoutes));
+ }
+
+ if ('routes' in route) {
+ var _mergedPathsRoutes2 = route.routes.map(function (childRoute) {
+ var cRoute = (0, _utils.extend)({}, childRoute);
+ cRoute.path = (route.path + "/" + cRoute.path).replace('///', '/').replace('//', '/');
+ return cRoute;
+ });
+
+ if (hasTabRoutes) {
+ flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(_mergedPathsRoutes2));
+ } else {
+ flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(_mergedPathsRoutes2));
+ }
+ }
+
+ if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {
+ flattenedRoutes.push(route);
+ }
+ });
+ return flattenedRoutes;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.parseRouteUrl = function parseRouteUrl(url) {
+ if (!url) return {};
+ var query = (0, _utils.parseUrlQuery)(url);
+ var hash = url.split('#')[1];
+ var params = {};
+ var path = url.split('#')[0].split('?')[0];
+ return {
+ query: query,
+ hash: hash,
+ params: params,
+ url: url,
+ path: path
+ };
+ };
+
+ _proto.generateUrl = function generateUrl(parameters) {
+ if (parameters === void 0) {
+ parameters = {};
+ }
+
+ if (typeof parameters === 'string') {
+ return parameters;
+ }
+
+ var _parameters = parameters,
+ name = _parameters.name,
+ path = _parameters.path,
+ params = _parameters.params,
+ query = _parameters.query;
+
+ if (!name && !path) {
+ throw new Error('Framework7: "name" or "path" parameter is required');
+ }
+
+ var router = this;
+ var route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);
+
+ if (!route) {
+ if (name) {
+ throw new Error("Framework7: route with name \"" + name + "\" not found");
+ } else {
+ throw new Error("Framework7: route with path \"" + path + "\" not found");
+ }
+ }
+
+ var url = router.constructRouteUrl(route, {
+ params: params,
+ query: query
+ });
+
+ if (!url) {
+ throw new Error("Framework7: can't construct URL for route with name \"" + name + "\"");
+ }
+
+ return url;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.constructRouteUrl = function constructRouteUrl(route, _temp) {
+ var _ref = _temp === void 0 ? {} : _temp,
+ params = _ref.params,
+ query = _ref.query;
+
+ var path = route.path;
+ var toUrl = (0, _pathToRegexp.compile)(path);
+ var url;
+
+ try {
+ url = toUrl(params || {});
+ } catch (error) {
+ throw new Error("Framework7: error constructing route URL from passed params:\nRoute: " + path + "\n" + error.toString());
+ }
+
+ if (query) {
+ if (typeof query === 'string') url += "?" + query;else if (Object.keys(query).length) url += "?" + (0, _utils.serializeObject)(query);
+ }
+
+ return url;
+ };
+
+ _proto.findTabRouteUrl = function findTabRouteUrl(tabEl) {
+ var router = this;
+ var $tabEl = (0, _dom.default)(tabEl);
+ var parentPath = router.currentRoute.route.parentPath;
+ var tabId = $tabEl.attr('id');
+ var flattenedRoutes = router.flattenRoutes(router.routes);
+ var foundTabRouteUrl;
+ flattenedRoutes.forEach(function (route) {
+ if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {
+ if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {
+ foundTabRouteUrl = router.constructRouteUrl(route, {
+ params: router.currentRoute.params,
+ query: router.currentRoute.query
+ });
+ } else {
+ foundTabRouteUrl = route.path;
+ }
+ }
+ });
+ return foundTabRouteUrl;
+ };
+
+ _proto.findRouteByKey = function findRouteByKey(key, value) {
+ var router = this;
+ var routes = router.routes;
+ var flattenedRoutes = router.flattenRoutes(routes);
+ var matchingRoute;
+ flattenedRoutes.forEach(function (route) {
+ if (matchingRoute) return;
+
+ if (route[key] === value) {
+ matchingRoute = route;
+ }
+ });
+ return matchingRoute;
+ };
+
+ _proto.findMatchingRoute = function findMatchingRoute(url) {
+ if (!url) return undefined;
+ var router = this;
+ var routes = router.routes;
+ var flattenedRoutes = router.flattenRoutes(routes);
+
+ var _router$parseRouteUrl = router.parseRouteUrl(url),
+ path = _router$parseRouteUrl.path,
+ query = _router$parseRouteUrl.query,
+ hash = _router$parseRouteUrl.hash,
+ params = _router$parseRouteUrl.params;
+
+ var matchingRoute;
+ flattenedRoutes.forEach(function (route) {
+ if (matchingRoute) return;
+ var keys = [];
+ var pathsToMatch = [route.path];
+
+ if (route.alias) {
+ if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {
+ route.alias.forEach(function (aliasPath) {
+ pathsToMatch.push(aliasPath);
+ });
+ }
+ }
+
+ var matched;
+ pathsToMatch.forEach(function (pathToMatch) {
+ if (matched) return;
+ matched = (0, _pathToRegexp.pathToRegexp)(pathToMatch, keys).exec(path);
+ });
+
+ if (matched) {
+ keys.forEach(function (keyObj, index) {
+ if (typeof keyObj.name === 'number') return;
+ var paramValue = matched[index + 1];
+
+ if (typeof paramValue === 'undefined' || paramValue === null) {
+ params[keyObj.name] = paramValue;
+ } else {
+ params[keyObj.name] = decodeURIComponent(paramValue);
+ }
+ });
+ var parentPath;
+
+ if (route.parentPath) {
+ parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');
+ }
+
+ matchingRoute = {
+ query: query,
+ hash: hash,
+ params: params,
+ url: url,
+ path: path,
+ parentPath: parentPath,
+ route: route,
+ name: route.name
+ };
+ }
+ });
+ return matchingRoute;
+ } // eslint-disable-next-line
+ ;
+
+ _proto.replaceRequestUrlParams = function replaceRequestUrlParams(url, options) {
+ if (url === void 0) {
+ url = '';
+ }
+
+ if (options === void 0) {
+ options = {};
+ }
+
+ var compiledUrl = url;
+
+ if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {
+ Object.keys(options.route.params).forEach(function (paramName) {
+ var regExp = new RegExp("{{" + paramName + "}}", 'g');
+ compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');
+ });
+ }
+
+ return compiledUrl;
+ };
+
+ _proto.removeFromXhrCache = function removeFromXhrCache(url) {
+ var router = this;
+ var xhrCache = router.cache.xhr;
+ var index = false;
+
+ for (var i = 0; i < xhrCache.length; i += 1) {
+ if (xhrCache[i].url === url) index = i;
+ }
+
+ if (index !== false) xhrCache.splice(index, 1);
+ };
+
+ _proto.xhrRequest = function xhrRequest(requestUrl, options) {
+ var router = this;
+ var params = router.params;
+ var ignoreCache = options.ignoreCache;
+ var url = requestUrl;
+ var hasQuery = url.indexOf('?') >= 0;
+
+ if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {
+ url += "" + (hasQuery ? '&' : '?') + (0, _utils.serializeObject)(options.route.query);
+ hasQuery = true;
+ }
+
+ if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {
+ url += "" + (hasQuery ? '&' : '?') + (0, _utils.serializeObject)(options.route.params);
+ hasQuery = true;
+ }
+
+ if (url.indexOf('{{') >= 0) {
+ url = router.replaceRequestUrlParams(url, options);
+ } // should we ignore get params or not
+
+
+ if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {
+ url = url.split('?')[0];
+ }
+
+ return new Promise(function (resolve, reject) {
+ if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {
+ for (var i = 0; i < router.cache.xhr.length; i += 1) {
+ var cachedUrl = router.cache.xhr[i];
+
+ if (cachedUrl.url === url) {
+ // Check expiration
+ if ((0, _utils.now)() - cachedUrl.time < params.xhrCacheDuration) {
+ // Load from cache
+ resolve(cachedUrl.content);
+ return;
+ }
+ }
+ }
+ }
+
+ router.xhrAbortController = router.app.request.abortController();
+ router.app.request({
+ abortController: router.xhrAbortController,
+ url: url,
+ method: 'GET',
+ beforeSend: function beforeSend(xhr) {
+ router.emit('routerAjaxStart', xhr, options);
+ },
+ complete: function complete(xhr, status) {
+ router.emit('routerAjaxComplete', xhr);
+
+ if (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
+ if (params.xhrCache && xhr.responseText !== '') {
+ router.removeFromXhrCache(url);
+ router.cache.xhr.push({
+ url: url,
+ time: (0, _utils.now)(),
+ content: xhr.responseText
+ });
+ }
+
+ router.emit('routerAjaxSuccess', xhr, options);
+ resolve(xhr.responseText);
+ } else {
+ router.emit('routerAjaxError', xhr, options);
+ reject(xhr);
+ }
+ },
+ error: function error(xhr) {
+ router.emit('routerAjaxError', xhr, options);
+ reject(xhr);
+ }
+ });
+ });
+ };
+
+ _proto.setNavbarPosition = function setNavbarPosition($el, position, ariaHidden) {
+ var router = this;
+ $el.removeClass('navbar-previous navbar-current navbar-next');
+
+ if (position) {
+ $el.addClass("navbar-" + position);
+ }
+
+ if (ariaHidden === false) {
+ $el.removeAttr('aria-hidden');
+ } else if (ariaHidden === true) {
+ $el.attr('aria-hidden', 'true');
+ }
+
+ $el.trigger('navbar:position', {
+ position: position
+ });
+ router.emit('navbarPosition', $el[0], position);
+ };
+
+ _proto.setPagePosition = function setPagePosition($el, position, ariaHidden) {
+ var router = this;
+ $el.removeClass('page-previous page-current page-next');
+ $el.addClass("page-" + position);
+
+ if (ariaHidden === false) {
+ $el.removeAttr('aria-hidden');
+ } else if (ariaHidden === true) {
+ $el.attr('aria-hidden', 'true');
+ }
+
+ $el.trigger('page:position', {
+ position: position
+ });
+ router.emit('pagePosition', $el[0], position);
+ } // Remove theme elements
+ ;
+
+ _proto.removeThemeElements = function removeThemeElements(el) {
+ var router = this;
+ var theme = router.app.theme;
+ var toRemove;
+
+ if (theme === 'ios') {
+ toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';
+ } else if (theme === 'md') {
+ toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';
+ } else if (theme === 'aurora') {
+ toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';
+ }
+
+ (0, _dom.default)(el).find(toRemove).remove();
+ };
+
+ _proto.getPageData = function getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {
+ if (route === void 0) {
+ route = {};
+ }
+
+ var router = this;
+ var $pageEl = (0, _dom.default)(pageEl).eq(0);
+ var $navbarEl = (0, _dom.default)(navbarEl).eq(0);
+ var currentPage = $pageEl[0].f7Page || {};
+ var direction;
+ var pageFrom;
+ if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';
+ if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';
+
+ if (currentPage && !currentPage.fromPage) {
+ var $pageFromEl = (0, _dom.default)(pageFromEl);
+
+ if ($pageFromEl.length) {
+ pageFrom = $pageFromEl[0].f7Page;
+ }
+ }
+
+ pageFrom = currentPage.pageFrom || pageFrom;
+
+ if (pageFrom && pageFrom.pageFrom) {
+ pageFrom.pageFrom = null;
+ }
+
+ var page = {
+ app: router.app,
+ view: router.view,
+ router: router,
+ $el: $pageEl,
+ el: $pageEl[0],
+ $pageEl: $pageEl,
+ pageEl: $pageEl[0],
+ $navbarEl: $navbarEl,
+ navbarEl: $navbarEl[0],
+ name: $pageEl.attr('data-name'),
+ position: from,
+ from: from,
+ to: to,
+ direction: direction,
+ route: currentPage.route ? currentPage.route : route,
+ pageFrom: pageFrom
+ };
+ $pageEl[0].f7Page = page;
+ return page;
+ } // Callbacks
+ ;
+
+ _proto.pageCallback = function pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ if (!pageEl) return;
+ var router = this;
+ var $pageEl = (0, _dom.default)(pageEl);
+ if (!$pageEl.length) return;
+ var $navbarEl = (0, _dom.default)(navbarEl);
+ var _options = options,
+ route = _options.route;
+ var restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);
+ var keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;
+
+ if (callback === 'beforeRemove' && keepAlive) {
+ callback = 'beforeUnmount'; // eslint-disable-line
+ }
+
+ var camelName = "page" + (callback[0].toUpperCase() + callback.slice(1, callback.length));
+ var colonName = "page:" + callback.toLowerCase();
+ var page = {};
+
+ if (callback === 'beforeRemove' && $pageEl[0].f7Page) {
+ page = (0, _utils.extend)($pageEl[0].f7Page, {
+ from: from,
+ to: to,
+ position: from
+ });
+ } else {
+ page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);
+ }
+
+ page.swipeBack = !!options.swipeBack;
+
+ var _ref2 = options.route ? options.route.route : {},
+ _ref2$on = _ref2.on,
+ on = _ref2$on === void 0 ? {} : _ref2$on,
+ _ref2$once = _ref2.once,
+ once = _ref2$once === void 0 ? {} : _ref2$once;
+
+ if (options.on) {
+ (0, _utils.extend)(on, options.on);
+ }
+
+ if (options.once) {
+ (0, _utils.extend)(once, options.once);
+ }
+
+ function attachEvents() {
+ if ($pageEl[0].f7RouteEventsAttached) return;
+ $pageEl[0].f7RouteEventsAttached = true;
+
+ if (on && Object.keys(on).length > 0) {
+ $pageEl[0].f7RouteEventsOn = on;
+ Object.keys(on).forEach(function (eventName) {
+ on[eventName] = on[eventName].bind(router);
+ $pageEl.on((0, _utils.eventNameToColonCase)(eventName), on[eventName]);
+ });
+ }
+
+ if (once && Object.keys(once).length > 0) {
+ $pageEl[0].f7RouteEventsOnce = once;
+ Object.keys(once).forEach(function (eventName) {
+ once[eventName] = once[eventName].bind(router);
+ $pageEl.once((0, _utils.eventNameToColonCase)(eventName), once[eventName]);
+ });
+ }
+ }
+
+ function detachEvents() {
+ if (!$pageEl[0].f7RouteEventsAttached) return;
+
+ if ($pageEl[0].f7RouteEventsOn) {
+ Object.keys($pageEl[0].f7RouteEventsOn).forEach(function (eventName) {
+ $pageEl.off((0, _utils.eventNameToColonCase)(eventName), $pageEl[0].f7RouteEventsOn[eventName]);
+ });
+ }
+
+ if ($pageEl[0].f7RouteEventsOnce) {
+ Object.keys($pageEl[0].f7RouteEventsOnce).forEach(function (eventName) {
+ $pageEl.off((0, _utils.eventNameToColonCase)(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);
+ });
+ }
+
+ $pageEl[0].f7RouteEventsAttached = null;
+ $pageEl[0].f7RouteEventsOn = null;
+ $pageEl[0].f7RouteEventsOnce = null;
+ delete $pageEl[0].f7RouteEventsAttached;
+ delete $pageEl[0].f7RouteEventsOn;
+ delete $pageEl[0].f7RouteEventsOnce;
+ }
+
+ if (callback === 'mounted') {
+ attachEvents();
+ }
+
+ if (callback === 'init') {
+ if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {
+ var $pageContent = $pageEl.find('.page-content');
+
+ if ($pageContent.length > 0) {
+ // eslint-disable-next-line
+ $pageContent = $pageContent.filter(function (pageContentEl) {
+ return (0, _dom.default)(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !(0, _dom.default)(pageContentEl).is('.tab:not(.tab-active)');
+ });
+ }
+
+ $pageContent.scrollTop(router.scrollHistory[page.route.url]);
+ }
+
+ attachEvents();
+
+ if ($pageEl[0].f7PageInitialized) {
+ $pageEl.trigger('page:reinit', page);
+ router.emit('pageReinit', page);
+ return;
+ }
+
+ $pageEl[0].f7PageInitialized = true;
+ }
+
+ if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {
+ // Save scroll position
+ var _$pageContent = $pageEl.find('.page-content');
+
+ if (_$pageContent.length > 0) {
+ // eslint-disable-next-line
+ _$pageContent = _$pageContent.filter(function (pageContentEl) {
+ return (0, _dom.default)(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !(0, _dom.default)(pageContentEl).is('.tab:not(.tab-active)');
+ });
+ }
+
+ router.scrollHistory[page.route.url] = _$pageContent.scrollTop();
+ }
+
+ if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {
+ // Delete scroll position
+ delete router.scrollHistory[page.route.url];
+ }
+
+ $pageEl.trigger(colonName, page);
+ router.emit(camelName, page);
+
+ if (callback === 'beforeRemove' || callback === 'beforeUnmount') {
+ detachEvents();
+
+ if (!keepAlive) {
+ if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {
+ delete $pageEl[0].f7Page.navbarEl.f7Page;
+ }
+
+ $pageEl[0].f7Page = null;
+ }
+ }
+ };
+
+ _proto.saveHistory = function saveHistory() {
+ var router = this;
+ var window = (0, _ssrWindow.getWindow)();
+ router.view.history = router.history;
+
+ if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {
+ window.localStorage["f7router-" + router.view.id + "-history"] = JSON.stringify(router.history);
+ }
+ };
+
+ _proto.restoreHistory = function restoreHistory() {
+ var router = this;
+ var window = (0, _ssrWindow.getWindow)();
+
+ if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage["f7router-" + router.view.id + "-history"]) {
+ router.history = JSON.parse(window.localStorage["f7router-" + router.view.id + "-history"]);
+ router.view.history = router.history;
+ }
+ };
+
+ _proto.clearHistory = function clearHistory() {
+ var router = this;
+ router.history = [];
+ if (router.view) router.view.history = [];
+ router.saveHistory();
+ };
+
+ _proto.updateCurrentUrl = function updateCurrentUrl(newUrl) {
+ var router = this;
+ (0, _appRouterCheck.default)(router, 'updateCurrentUrl'); // Update history
+
+ if (router.history.length) {
+ router.history[router.history.length - 1] = newUrl;
+ } else {
+ router.history.push(newUrl);
+ } // Update current route params
+
+
+ var _router$parseRouteUrl2 = router.parseRouteUrl(newUrl),
+ query = _router$parseRouteUrl2.query,
+ hash = _router$parseRouteUrl2.hash,
+ params = _router$parseRouteUrl2.params,
+ url = _router$parseRouteUrl2.url,
+ path = _router$parseRouteUrl2.path;
+
+ if (router.currentRoute) {
+ (0, _utils.extend)(router.currentRoute, {
+ query: query,
+ hash: hash,
+ params: params,
+ url: url,
+ path: path
+ });
+ }
+
+ if (router.params.browserHistory) {
+ var browserHistoryRoot = router.params.browserHistoryRoot || '';
+
+ _history.default.replace(router.view.id, {
+ url: newUrl
+ }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);
+ } // Save History
+
+
+ router.saveHistory();
+ router.emit('routeUrlUpdate', router.currentRoute, router);
+ };
+
+ _proto.getInitialUrl = function getInitialUrl() {
+ var router = this;
+
+ if (router.initialUrl) {
+ return {
+ initialUrl: router.initialUrl,
+ historyRestored: router.historyRestored
+ };
+ }
+
+ var app = router.app,
+ view = router.view;
+ var document = (0, _ssrWindow.getDocument)();
+ var window = (0, _ssrWindow.getWindow)();
+ var location = app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined' ? new URL(app.params.url) : document.location;
+ var initialUrl = router.params.url;
+ var documentUrl = location.href.split(location.origin)[1];
+ var historyRestored;
+ var _router$params = router.params,
+ browserHistory = _router$params.browserHistory,
+ browserHistoryOnLoad = _router$params.browserHistoryOnLoad,
+ browserHistorySeparator = _router$params.browserHistorySeparator;
+ var browserHistoryRoot = router.params.browserHistoryRoot;
+
+ if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {
+ // eslint-disable-next-line
+ console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');
+ browserHistoryRoot = location.pathname.split('index.html')[0];
+ }
+
+ if (!browserHistory || !browserHistoryOnLoad) {
+ if (!initialUrl) {
+ initialUrl = documentUrl;
+ }
+
+ if (location.search && initialUrl.indexOf('?') < 0) {
+ initialUrl += location.search;
+ }
+
+ if (location.hash && initialUrl.indexOf('#') < 0) {
+ initialUrl += location.hash;
+ }
+ } else {
+ if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {
+ documentUrl = documentUrl.split(browserHistoryRoot)[1];
+ if (documentUrl === '') documentUrl = '/';
+ }
+
+ if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {
+ initialUrl = documentUrl.split(browserHistorySeparator)[1];
+ } else {
+ initialUrl = documentUrl;
+ }
+
+ router.restoreHistory();
+
+ if (router.history.indexOf(initialUrl) >= 0) {
+ router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);
+ } else if (router.params.url === initialUrl) {
+ router.history = [initialUrl];
+ } else if (_history.default.state && _history.default.state[view.id] && _history.default.state[view.id].url === router.history[router.history.length - 1]) {
+ initialUrl = router.history[router.history.length - 1];
+ } else {
+ router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];
+ }
+
+ if (router.history.length > 1) {
+ historyRestored = true;
+ } else {
+ router.history = [];
+ }
+
+ router.saveHistory();
+ }
+
+ router.initialUrl = initialUrl;
+ router.historyRestored = historyRestored;
+ return {
+ initialUrl: initialUrl,
+ historyRestored: historyRestored
+ };
+ };
+
+ _proto.init = function init() {
+ var router = this;
+ var app = router.app,
+ view = router.view;
+ var document = (0, _ssrWindow.getDocument)();
+ router.mount();
+
+ var _router$getInitialUrl = router.getInitialUrl(),
+ initialUrl = _router$getInitialUrl.initialUrl,
+ historyRestored = _router$getInitialUrl.historyRestored; // Init Swipeback
+
+
+ if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md' || view && router.params.auroraSwipeBack && app.theme === 'aurora') {
+ (0, _swipeBack.default)(router);
+ }
+
+ var _router$params2 = router.params,
+ browserHistory = _router$params2.browserHistory,
+ browserHistoryOnLoad = _router$params2.browserHistoryOnLoad,
+ browserHistoryAnimateOnLoad = _router$params2.browserHistoryAnimateOnLoad,
+ browserHistoryInitialMatch = _router$params2.browserHistoryInitialMatch;
+ var currentRoute;
+
+ if (router.history.length > 1) {
+ // Will load page
+ var initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];
+ currentRoute = router.findMatchingRoute(initUrl);
+
+ if (!currentRoute) {
+ currentRoute = (0, _utils.extend)(router.parseRouteUrl(initUrl), {
+ route: {
+ url: initUrl,
+ path: initUrl.split('?')[0]
+ }
+ });
+ }
+ } else {
+ // Don't load page
+ currentRoute = router.findMatchingRoute(initialUrl);
+
+ if (!currentRoute) {
+ currentRoute = (0, _utils.extend)(router.parseRouteUrl(initialUrl), {
+ route: {
+ url: initialUrl,
+ path: initialUrl.split('?')[0]
+ }
+ });
+ }
+ }
+
+ if (router.params.stackPages) {
+ router.$el.children('.page').each(function (pageEl) {
+ var $pageEl = (0, _dom.default)(pageEl);
+ router.initialPages.push($pageEl[0]);
+
+ if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {
+ router.initialNavbars.push($pageEl.children('.navbar')[0]);
+ }
+ });
+ }
+
+ if (router.$el.children('.page:not(.stacked)').length === 0 && initialUrl && router.params.loadInitialPage) {
+ // No pages presented in DOM, reload new page
+ router.navigate(initialUrl, {
+ initial: true,
+ reloadCurrent: true,
+ browserHistory: false,
+ animate: false,
+ once: {
+ modalOpen: function modalOpen() {
+ if (!historyRestored) return;
+ var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
+
+ if (preloadPreviousPage && router.history.length > 1) {
+ router.back({
+ preload: true
+ });
+ }
+ },
+ pageAfterIn: function pageAfterIn() {
+ if (!historyRestored) return;
+ var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
+
+ if (preloadPreviousPage && router.history.length > 1) {
+ router.back({
+ preload: true
+ });
+ }
+ }
+ }
+ });
+ } else if (router.$el.children('.page:not(.stacked)').length) {
+ // Init current DOM page
+ var hasTabRoute;
+ router.currentRoute = currentRoute;
+ router.$el.children('.page:not(.stacked)').each(function (pageEl) {
+ var $pageEl = (0, _dom.default)(pageEl);
+ var $navbarEl;
+ router.setPagePosition($pageEl, 'current');
+
+ if (router.dynamicNavbar) {
+ $navbarEl = $pageEl.children('.navbar');
+
+ if ($navbarEl.length > 0) {
+ if (!router.$navbarsEl.parents(document).length) {
+ router.$el.prepend(router.$navbarsEl);
+ }
+
+ router.setNavbarPosition($navbarEl, 'current');
+ router.$navbarsEl.append($navbarEl);
+
+ if ($navbarEl.children('.title-large').length) {
+ $navbarEl.addClass('navbar-large');
+ }
+
+ $pageEl.children('.navbar').remove();
+ } else {
+ router.$navbarsEl.addClass('navbar-hidden');
+
+ if ($navbarEl.children('.title-large').length) {
+ router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');
+ }
+ }
+ }
+
+ if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {
+ $pageEl.addClass('page-master');
+ $pageEl.trigger('page:role', {
+ role: 'master'
+ });
+
+ if ($navbarEl && $navbarEl.length) {
+ $navbarEl.addClass('navbar-master');
+ }
+
+ view.checkMasterDetailBreakpoint();
+ }
+
+ var initOptions = {
+ route: router.currentRoute
+ };
+
+ if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {
+ (0, _utils.extend)(initOptions, router.currentRoute.route.options);
+ }
+
+ router.currentPageEl = $pageEl[0];
+
+ if (router.dynamicNavbar && $navbarEl.length) {
+ router.currentNavbarEl = $navbarEl[0];
+ }
+
+ router.removeThemeElements($pageEl);
+
+ if (router.dynamicNavbar && $navbarEl.length) {
+ router.removeThemeElements($navbarEl);
+ }
+
+ if (initOptions.route.route.tab) {
+ hasTabRoute = true;
+ router.tabLoad(initOptions.route.route.tab, (0, _utils.extend)({}, initOptions));
+ }
+
+ router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);
+ router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);
+ router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);
+ });
+
+ if (historyRestored) {
+ if (browserHistoryInitialMatch) {
+ var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
+
+ if (preloadPreviousPage && router.history.length > 1) {
+ router.back({
+ preload: true
+ });
+ }
+ } else {
+ router.navigate(initialUrl, {
+ initial: true,
+ browserHistory: false,
+ history: false,
+ animate: browserHistoryAnimateOnLoad,
+ once: {
+ pageAfterIn: function pageAfterIn() {
+ var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
+
+ if (preloadPreviousPage && router.history.length > 2) {
+ router.back({
+ preload: true
+ });
+ }
+ }
+ }
+ });
+ }
+ }
+
+ if (!historyRestored && !hasTabRoute) {
+ router.history.push(initialUrl);
+ router.saveHistory();
+ }
+ }
+
+ if (initialUrl && browserHistory && browserHistoryOnLoad && (!_history.default.state || !_history.default.state[view.id])) {
+ _history.default.initViewState(view.id, {
+ url: initialUrl
+ });
+ }
+
+ router.emit('local::init routerInit', router);
+ };
+
+ _proto.destroy = function destroy() {
+ var router = this;
+ router.emit('local::destroy routerDestroy', router); // Delete props & methods
+
+ Object.keys(router).forEach(function (routerProp) {
+ router[routerProp] = null;
+ delete router[routerProp];
+ });
+ router = null;
+ };
+
+ return Router;
+}(_class.default); // Load
+
+
+Router.prototype.navigate = _navigate.navigate;
+Router.prototype.refreshPage = _navigate.refreshPage; // Tab
+
+Router.prototype.tabLoad = _tab.tabLoad;
+Router.prototype.tabRemove = _tab.tabRemove; // Modal
+
+Router.prototype.modalLoad = _modal.modalLoad;
+Router.prototype.modalRemove = _modal.modalRemove; // Back
+
+Router.prototype.back = _back.back; // Clear history
+
+Router.prototype.clearPreviousHistory = _clearPreviousHistory.clearPreviousHistory;
+var _default = Router;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/router.js b/www/assets/framework7/cjs/modules/router/router.js
new file mode 100644
index 000000000..1b0636652
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/router.js
@@ -0,0 +1,36 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _routerClass = _interopRequireDefault(require("./router-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'router',
+ static: {
+ Router: _routerClass.default
+ },
+ instance: {
+ cache: {
+ xhr: [],
+ templates: [],
+ components: []
+ }
+ },
+ create: function create() {
+ var instance = this;
+
+ if (instance.app) {
+ // View Router
+ if (instance.params.router) {
+ instance.router = new _routerClass.default(instance.app, instance);
+ }
+ } else {
+ // App Router
+ instance.router = new _routerClass.default(instance);
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/swipe-back.js b/www/assets/framework7/cjs/modules/router/swipe-back.js
new file mode 100644
index 000000000..90e33c0c5
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/swipe-back.js
@@ -0,0 +1,735 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+var _getSupport = require("../../shared/get-support");
+
+var _getDevice = require("../../shared/get-device");
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function SwipeBack(r) {
+ var router = r;
+ var $el = router.$el,
+ $navbarsEl = router.$navbarsEl,
+ app = router.app,
+ params = router.params;
+ var support = (0, _getSupport.getSupport)();
+ var device = (0, _getDevice.getDevice)();
+ var isTouched = false;
+ var isMoved = false;
+ var touchesStart = {};
+ var isScrolling;
+ var $currentPageEl = [];
+ var $previousPageEl = [];
+ var viewContainerWidth;
+ var touchesDiff;
+ var allowViewTouchMove = true;
+ var touchStartTime;
+ var $currentNavbarEl = [];
+ var $previousNavbarEl = [];
+ var dynamicNavbar;
+ var $pageShadowEl;
+ var $pageOpacityEl;
+ var animatableNavEls;
+ var paramsSwipeBackAnimateShadow = params[app.theme + "SwipeBackAnimateShadow"];
+ var paramsSwipeBackAnimateOpacity = params[app.theme + "SwipeBackAnimateOpacity"];
+ var paramsSwipeBackActiveArea = params[app.theme + "SwipeBackActiveArea"];
+ var paramsSwipeBackThreshold = params[app.theme + "SwipeBackThreshold"];
+ var transformOrigin = app.rtl ? 'right center' : 'left center';
+ var transformOriginTitleLarge = app.rtl ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center' : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';
+
+ function animatableNavElements() {
+ var els = [];
+ var inverter = app.rtl ? -1 : 1;
+ var currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');
+ var currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');
+ var currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');
+ var currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent') || $currentNavbarEl.hasClass('navbar-large') && $currentNavbarEl.hasClass('navbar-transparent');
+ var previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');
+ var previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');
+ var previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');
+ var previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent') || $previousNavbarEl.hasClass('navbar-large') && $previousNavbarEl.hasClass('navbar-transparent');
+ var fromLarge = currentNavIsLarge && !currentNavIsCollapsed;
+ var toLarge = previousNavIsLarge && !previousNavIsCollapsed;
+ var $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');
+ var $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');
+ var activeNavBackIconText;
+ var previousNavBackIconText;
+
+ if (params.iosAnimateNavbarBackIcon) {
+ if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {
+ activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);
+ } else {
+ activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);
+ }
+
+ if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {
+ previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);
+ } else {
+ previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);
+ }
+
+ if (activeNavBackIconText.length) {
+ $previousNavElements.each(function (el) {
+ if (!(0, _dom.default)(el).hasClass('title')) return;
+ el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;
+ });
+ }
+ }
+
+ $currentNavElements.each(function (navEl) {
+ var $navEl = (0, _dom.default)(navEl);
+ var isSubnavbar = $navEl.hasClass('subnavbar');
+ var isLeft = $navEl.hasClass('left');
+ var isTitle = $navEl.hasClass('title');
+ var isBg = $navEl.hasClass('navbar-bg');
+ if ((isTitle || isBg) && currentNavIsTransparent) return;
+ if (!fromLarge && $navEl.hasClass('.title-large')) return;
+ var el = {
+ el: navEl
+ };
+
+ if (fromLarge) {
+ if (isTitle) return;
+
+ if ($navEl.hasClass('title-large')) {
+ if (els.indexOf(el) < 0) els.push(el);
+ el.overflow = 'visible';
+ $navEl.find('.title-large-text').each(function (subNavEl) {
+ els.push({
+ el: subNavEl,
+ transform: function transform(progress) {
+ return "translateX(" + progress * 100 * inverter + "%)";
+ }
+ });
+ });
+ return;
+ }
+ }
+
+ if (toLarge) {
+ if (!fromLarge) {
+ if ($navEl.hasClass('title-large')) {
+ if (els.indexOf(el) < 0) els.push(el);
+ el.opacity = 0;
+ }
+ }
+
+ if (isLeft) {
+ if (els.indexOf(el) < 0) els.push(el);
+
+ el.opacity = function (progress) {
+ return 1 - Math.pow(progress, 0.33);
+ };
+
+ $navEl.find('.back span').each(function (subNavEl) {
+ els.push({
+ el: subNavEl,
+ 'transform-origin': transformOrigin,
+ transform: function transform(progress) {
+ return "translateX(calc(" + progress + " * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(" + progress + " * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(" + (1 + 1 * progress) + ")";
+ }
+ });
+ });
+ return;
+ }
+ }
+
+ if (isBg) {
+ if (els.indexOf(el) < 0) els.push(el);
+
+ if (!fromLarge && !toLarge) {
+ if (currentNavIsCollapsed) {
+ if (currentNavIsLargeTransparent) {
+ el.className = 'ios-swipeback-navbar-bg-large';
+ }
+
+ el.transform = function (progress) {
+ return "translateX(" + 100 * progress * inverter + "%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))";
+ };
+ } else {
+ el.transform = function (progress) {
+ return "translateX(" + 100 * progress * inverter + "%)";
+ };
+ }
+ }
+
+ if (!fromLarge && toLarge) {
+ el.className = 'ios-swipeback-navbar-bg-large';
+
+ el.transform = function (progress) {
+ return "translateX(" + 100 * progress * inverter + "%) translateY(calc(-1 * " + (1 - progress) + " * var(--f7-navbar-large-title-height)))";
+ };
+ }
+
+ if (fromLarge && toLarge) {
+ el.transform = function (progress) {
+ return "translateX(" + 100 * progress * inverter + "%)";
+ };
+ }
+
+ if (fromLarge && !toLarge) {
+ el.transform = function (progress) {
+ return "translateX(" + 100 * progress * inverter + "%) translateY(calc(-" + progress + " * var(--f7-navbar-large-title-height)))";
+ };
+ }
+
+ return;
+ }
+
+ if ($navEl.hasClass('title-large')) return;
+ var isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;
+ if (els.indexOf(el) < 0) els.push(el);
+
+ if (!isSubnavbar || isSubnavbar && !isSliding) {
+ el.opacity = function (progress) {
+ return 1 - Math.pow(progress, 0.33);
+ };
+ }
+
+ if (isSliding) {
+ var transformTarget = el;
+
+ if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {
+ var textEl = {
+ el: activeNavBackIconText[0]
+ };
+ transformTarget = textEl;
+ els.push(textEl);
+ }
+
+ transformTarget.transform = function (progress) {
+ var activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;
+ if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);
+
+ if (isSubnavbar && currentNavIsLarge) {
+ return "translate3d(" + activeNavTranslate + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)";
+ }
+
+ return "translate3d(" + activeNavTranslate + "px,0,0)";
+ };
+ }
+ });
+ $previousNavElements.each(function (navEl) {
+ var $navEl = (0, _dom.default)(navEl);
+ var isSubnavbar = $navEl.hasClass('subnavbar');
+ var isLeft = $navEl.hasClass('left');
+ var isTitle = $navEl.hasClass('title');
+ var isBg = $navEl.hasClass('navbar-bg');
+ if ((isTitle || isBg) && previousNavIsTransparent) return;
+ var el = {
+ el: navEl
+ };
+
+ if (toLarge) {
+ if (isTitle) return;
+ if (els.indexOf(el) < 0) els.push(el);
+
+ if ($navEl.hasClass('title-large')) {
+ el.opacity = 1;
+ el.overflow = 'visible';
+ $navEl.find('.title-large-text').each(function (subNavEl) {
+ els.push({
+ el: subNavEl,
+ 'transform-origin': transformOriginTitleLarge,
+ opacity: function opacity(progress) {
+ return Math.pow(progress, 3);
+ },
+ transform: function transform(progress) {
+ return "translateX(calc(" + (1 - progress) + " * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(" + (progress - 1) + " * var(--f7-navbar-large-title-height) + " + (1 - progress) + " * var(--f7-navbar-large-title-padding-vertical))) scale(" + (0.5 + progress * 0.5) + ")";
+ }
+ });
+ });
+ return;
+ }
+ }
+
+ if (isBg) {
+ if (els.indexOf(el) < 0) els.push(el);
+
+ if (!fromLarge && !toLarge) {
+ if (previousNavIsCollapsed) {
+ if (previousNavIsLargeTransparent) {
+ el.className = 'ios-swipeback-navbar-bg-large';
+ }
+
+ el.transform = function (progress) {
+ return "translateX(" + (-100 + 100 * progress) * inverter + "%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))";
+ };
+ } else {
+ el.transform = function (progress) {
+ return "translateX(" + (-100 + 100 * progress) * inverter + "%)";
+ };
+ }
+ }
+
+ if (!fromLarge && toLarge) {
+ el.transform = function (progress) {
+ return "translateX(" + (-100 + 100 * progress) * inverter + "%) translateY(calc(-1 * " + (1 - progress) + " * var(--f7-navbar-large-title-height)))";
+ };
+ }
+
+ if (fromLarge && !toLarge) {
+ el.className = 'ios-swipeback-navbar-bg-large';
+
+ el.transform = function (progress) {
+ return "translateX(" + (-100 + 100 * progress) * inverter + "%) translateY(calc(-" + progress + " * var(--f7-navbar-large-title-height)))";
+ };
+ }
+
+ if (fromLarge && toLarge) {
+ el.transform = function (progress) {
+ return "translateX(" + (-100 + 100 * progress) * inverter + "%)";
+ };
+ }
+
+ return;
+ }
+
+ if ($navEl.hasClass('title-large')) return;
+ var isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;
+ if (els.indexOf(el) < 0) els.push(el);
+
+ if (!isSubnavbar || isSubnavbar && !isSliding) {
+ el.opacity = function (progress) {
+ return Math.pow(progress, 3);
+ };
+ }
+
+ if (isSliding) {
+ var transformTarget = el;
+
+ if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {
+ var textEl = {
+ el: previousNavBackIconText[0]
+ };
+ transformTarget = textEl;
+ els.push(textEl);
+ }
+
+ transformTarget.transform = function (progress) {
+ var previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);
+ if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);
+
+ if (isSubnavbar && previousNavIsLarge) {
+ return "translate3d(" + previousNavTranslate + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)";
+ }
+
+ return "translate3d(" + previousNavTranslate + "px,0,0)";
+ };
+ }
+ });
+ return els;
+ }
+
+ function setAnimatableNavElements(_temp) {
+ var _ref = _temp === void 0 ? {} : _temp,
+ progress = _ref.progress,
+ reset = _ref.reset,
+ transition = _ref.transition,
+ reflow = _ref.reflow;
+
+ var styles = ['overflow', 'transform', 'transform-origin', 'opacity'];
+
+ if (transition === true || transition === false) {
+ for (var i = 0; i < animatableNavEls.length; i += 1) {
+ var el = animatableNavEls[i];
+
+ if (el && el.el) {
+ if (transition === true) el.el.classList.add('navbar-page-transitioning');
+ if (transition === false) el.el.classList.remove('navbar-page-transitioning');
+ }
+ }
+ }
+
+ if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {
+ // eslint-disable-next-line
+ animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;
+ }
+
+ for (var _i = 0; _i < animatableNavEls.length; _i += 1) {
+ var _el = animatableNavEls[_i];
+
+ if (_el && _el.el) {
+ if (_el.className && !_el.classNameSet && !reset) {
+ _el.el.classList.add(_el.className);
+
+ _el.classNameSet = true;
+ }
+
+ if (_el.className && reset) {
+ _el.el.classList.remove(_el.className);
+ }
+
+ for (var j = 0; j < styles.length; j += 1) {
+ var styleProp = styles[j];
+
+ if (_el[styleProp]) {
+ if (reset) {
+ _el.el.style[styleProp] = '';
+ } else if (typeof _el[styleProp] === 'function') {
+ _el.el.style[styleProp] = _el[styleProp](progress);
+ } else {
+ _el.el.style[styleProp] = _el[styleProp];
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function handleTouchStart(e) {
+ var swipeBackEnabled = params[app.theme + "SwipeBack"];
+ if (!allowViewTouchMove || !swipeBackEnabled || isTouched || app.swipeout && app.swipeout.el || !router.allowPageChange) return;
+ if ((0, _dom.default)(e.target).closest('.range-slider, .calendar-months').length > 0) return;
+ if ((0, _dom.default)(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;
+ isMoved = false;
+ isTouched = true;
+ isScrolling = undefined;
+ touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
+ touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
+ touchStartTime = (0, _utils.now)();
+ dynamicNavbar = router.dynamicNavbar;
+ }
+
+ function handleTouchMove(e) {
+ if (!isTouched) return;
+ var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
+ var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x && !app.rtl || pageX > touchesStart.x && app.rtl;
+ }
+
+ if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {
+ isTouched = false;
+ return;
+ }
+
+ if (!isMoved) {
+ // Calc values during first move fired
+ var cancel = false;
+ var target = (0, _dom.default)(e.target);
+ var swipeout = target.closest('.swipeout');
+
+ if (swipeout.length > 0) {
+ if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;
+ if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;
+ }
+
+ $currentPageEl = target.closest('.page');
+ if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;
+ $previousPageEl = $el.find('.page-previous:not(.stacked)');
+
+ if ($previousPageEl.length > 1) {
+ $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);
+ }
+
+ var notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;
+ viewContainerWidth = $el.width();
+
+ if (app.rtl) {
+ notFromBorder = touchesStart.x < $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);
+ } else {
+ notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;
+ }
+
+ if (notFromBorder) cancel = true;
+ if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;
+
+ if (cancel) {
+ isTouched = false;
+ return;
+ }
+
+ if (paramsSwipeBackAnimateShadow) {
+ $pageShadowEl = $currentPageEl.find('.page-shadow-effect');
+
+ if ($pageShadowEl.length === 0) {
+ $pageShadowEl = (0, _dom.default)('');
+ $currentPageEl.append($pageShadowEl);
+ }
+ }
+
+ if (paramsSwipeBackAnimateOpacity) {
+ $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');
+
+ if ($pageOpacityEl.length === 0) {
+ $pageOpacityEl = (0, _dom.default)('');
+ $previousPageEl.append($pageOpacityEl);
+ }
+ }
+
+ if (dynamicNavbar) {
+ $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');
+ $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');
+
+ if ($previousNavbarEl.length > 1) {
+ $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);
+ }
+
+ animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);
+ } // Close/Hide Any Picker
+
+
+ if ((0, _dom.default)('.sheet.modal-in').length > 0 && app.sheet) {
+ app.sheet.close((0, _dom.default)('.sheet.modal-in'));
+ }
+ }
+
+ e.f7PreventSwipePanel = true;
+ isMoved = true;
+ app.preventSwipePanelBySwipeBack = true;
+ e.preventDefault(); // RTL inverter
+
+ var inverter = app.rtl ? -1 : 1; // Touches diff
+
+ touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;
+ if (touchesDiff < 0) touchesDiff = 0;
+ var percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1); // Swipe Back Callback
+
+ var callbackData = {
+ percentage: percentage,
+ progress: percentage,
+ currentPageEl: $currentPageEl[0],
+ previousPageEl: $previousPageEl[0],
+ currentNavbarEl: $currentNavbarEl[0],
+ previousNavbarEl: $previousNavbarEl[0]
+ };
+ $el.trigger('swipeback:move', callbackData);
+ router.emit('swipebackMove', callbackData); // Transform pages
+
+ var currentPageTranslate = touchesDiff * inverter;
+ var previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;
+
+ if (!app.rtl) {
+ currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);
+ previousPageTranslate = Math.min(previousPageTranslate, 0);
+ } else {
+ currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);
+ previousPageTranslate = Math.max(previousPageTranslate, 0);
+ }
+
+ if (device.pixelRatio === 1) {
+ currentPageTranslate = Math.round(currentPageTranslate);
+ previousPageTranslate = Math.round(previousPageTranslate);
+ }
+
+ router.swipeBackActive = true;
+ (0, _dom.default)([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');
+ $currentPageEl.transform("translate3d(" + currentPageTranslate + "px,0,0)");
+ if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;
+
+ if (app.theme === 'ios') {
+ $previousPageEl.transform("translate3d(" + previousPageTranslate + "px,0,0)");
+ }
+
+ if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage; // Dynamic Navbars Animation
+
+ if (!dynamicNavbar) return;
+ setAnimatableNavElements({
+ progress: percentage
+ });
+ }
+
+ function handleTouchEnd() {
+ app.preventSwipePanelBySwipeBack = false;
+
+ if (!isTouched || !isMoved) {
+ isTouched = false;
+ isMoved = false;
+ return;
+ }
+
+ isTouched = false;
+ isMoved = false;
+ router.swipeBackActive = false;
+ var $pages = (0, _dom.default)([$currentPageEl[0], $previousPageEl[0]]);
+ $pages.removeClass('page-swipeback-active');
+
+ if (touchesDiff === 0) {
+ $pages.transform('');
+ if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();
+ if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();
+
+ if (dynamicNavbar) {
+ setAnimatableNavElements({
+ reset: true
+ });
+ }
+
+ return;
+ }
+
+ var timeDiff = (0, _utils.now)() - touchStartTime;
+ var pageChanged = false; // Swipe back to previous page
+
+ if (timeDiff < 300 && touchesDiff > 10 || timeDiff >= 300 && touchesDiff > viewContainerWidth / 2) {
+ $currentPageEl.removeClass('page-current').addClass("page-next" + (app.theme !== 'ios' ? ' page-next-on-right' : ''));
+ $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');
+ if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';
+ if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';
+
+ if (dynamicNavbar) {
+ router.setNavbarPosition($currentNavbarEl, 'next');
+ router.setNavbarPosition($previousNavbarEl, 'current', false);
+ }
+
+ pageChanged = true;
+ } // Reset custom styles
+ // Add transitioning class for transition-duration
+
+
+ $pages.addClass('page-transitioning page-transitioning-swipeback');
+
+ if (device.ios) {
+ // eslint-disable-next-line
+ $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;
+ }
+
+ $pages.transform('');
+
+ if (dynamicNavbar) {
+ setAnimatableNavElements({
+ progress: pageChanged ? 1 : 0,
+ transition: true,
+ reflow: !!device.ios
+ });
+ }
+
+ allowViewTouchMove = false;
+ router.allowPageChange = false; // Swipe Back Callback
+
+ var callbackData = {
+ currentPageEl: $currentPageEl[0],
+ previousPageEl: $previousPageEl[0],
+ currentNavbarEl: $currentNavbarEl[0],
+ previousNavbarEl: $previousNavbarEl[0]
+ };
+
+ if (pageChanged) {
+ // Update Route
+ router.currentRoute = $previousPageEl[0].f7Page.route;
+ router.currentPage = $previousPageEl[0]; // Page before animation callback
+
+ router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {
+ route: $currentPageEl[0].f7Page.route,
+ swipeBack: true
+ });
+ router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {
+ route: $previousPageEl[0].f7Page.route,
+ swipeBack: true
+ }, $currentPageEl[0]);
+ $el.trigger('swipeback:beforechange', callbackData);
+ router.emit('swipebackBeforeChange', callbackData);
+ } else {
+ $el.trigger('swipeback:beforereset', callbackData);
+ router.emit('swipebackBeforeReset', callbackData);
+ }
+
+ $currentPageEl.transitionEnd(function () {
+ $pages.removeClass('page-transitioning page-transitioning-swipeback');
+
+ if (dynamicNavbar) {
+ setAnimatableNavElements({
+ reset: true,
+ transition: false
+ });
+ }
+
+ allowViewTouchMove = true;
+ router.allowPageChange = true;
+
+ if (pageChanged) {
+ // Update History
+ if (router.history.length === 1) {
+ router.history.unshift(router.url);
+ }
+
+ router.history.pop();
+ router.saveHistory(); // Update push state
+
+ if (params.browserHistory) {
+ _history.default.back();
+ } // Page after animation callback
+
+
+ router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {
+ route: $currentPageEl[0].f7Page.route,
+ swipeBack: true
+ });
+ router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {
+ route: $previousPageEl[0].f7Page.route,
+ swipeBack: true
+ }); // Remove Old Page
+
+ if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {
+ $currentPageEl.addClass('stacked');
+
+ if (dynamicNavbar) {
+ $currentNavbarEl.addClass('stacked');
+ }
+ } else {
+ router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {
+ swipeBack: true
+ });
+ router.removePage($currentPageEl);
+
+ if (dynamicNavbar) {
+ router.removeNavbar($currentNavbarEl);
+ }
+ }
+
+ $el.trigger('swipeback:afterchange', callbackData);
+ router.emit('swipebackAfterChange', callbackData);
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
+
+ if (params.preloadPreviousPage) {
+ router.back(router.history[router.history.length - 2], {
+ preload: true
+ });
+ }
+ } else {
+ $el.trigger('swipeback:afterreset', callbackData);
+ router.emit('swipebackAfterReset', callbackData);
+ }
+
+ if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();
+ if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();
+ });
+ }
+
+ function attachEvents() {
+ var passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {
+ passive: true,
+ capture: false
+ } : false;
+ $el.on(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.on('touchmove:active', handleTouchMove);
+ app.on('touchend:passive', handleTouchEnd);
+ }
+
+ function detachEvents() {
+ var passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {
+ passive: true,
+ capture: false
+ } : false;
+ $el.off(app.touchEvents.start, handleTouchStart, passiveListener);
+ app.off('touchmove:active', handleTouchMove);
+ app.off('touchend:passive', handleTouchEnd);
+ }
+
+ attachEvents();
+ router.on('routerDestroy', detachEvents);
+}
+
+var _default = SwipeBack;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/router/tab.js b/www/assets/framework7/cjs/modules/router/tab.js
new file mode 100644
index 000000000..c3c9b5c9e
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/router/tab.js
@@ -0,0 +1,264 @@
+"use strict";
+
+exports.__esModule = true;
+exports.tabLoad = tabLoad;
+exports.tabRemove = tabRemove;
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _utils = require("../../shared/utils");
+
+var _history = _interopRequireDefault(require("../../shared/history"));
+
+var _asyncComponent = _interopRequireDefault(require("./async-component"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function tabLoad(tabRoute, loadOptions) {
+ if (loadOptions === void 0) {
+ loadOptions = {};
+ }
+
+ var router = this;
+ var options = (0, _utils.extend)({
+ animate: router.params.animate,
+ browserHistory: true,
+ history: true,
+ parentPageEl: null,
+ preload: false,
+ on: {}
+ }, loadOptions);
+ var currentRoute;
+ var previousRoute;
+
+ if (options.route) {
+ // Set Route
+ if (!options.preload && options.route !== router.currentRoute) {
+ previousRoute = router.previousRoute;
+ router.currentRoute = options.route;
+ }
+
+ if (options.preload) {
+ currentRoute = options.route;
+ previousRoute = router.currentRoute;
+ } else {
+ currentRoute = router.currentRoute;
+ if (!previousRoute) previousRoute = router.previousRoute;
+ } // Update Browser History
+
+
+ if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {
+ _history.default.replace(router.view.id, {
+ url: options.route.url
+ }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);
+ } // Update Router History
+
+
+ if (options.history) {
+ router.history[Math.max(router.history.length - 1, 0)] = options.route.url;
+ router.saveHistory();
+ }
+ } // Show Tab
+
+
+ var $parentPageEl = (0, _dom.default)(options.parentPageEl || router.currentPageEl);
+ var tabEl;
+
+ if ($parentPageEl.length && $parentPageEl.find("#" + tabRoute.id).length) {
+ tabEl = $parentPageEl.find("#" + tabRoute.id).eq(0);
+ } else if (router.view.selector) {
+ tabEl = router.view.selector + " #" + tabRoute.id;
+ } else {
+ tabEl = "#" + tabRoute.id;
+ }
+
+ var tabShowResult = router.app.tab.show({
+ tabEl: tabEl,
+ animate: options.animate,
+ tabRoute: options.route
+ });
+ var $newTabEl = tabShowResult.$newTabEl,
+ $oldTabEl = tabShowResult.$oldTabEl,
+ animated = tabShowResult.animated,
+ onTabsChanged = tabShowResult.onTabsChanged;
+
+ if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {
+ var tabParentPageData = $newTabEl.parents('.page')[0].f7Page;
+
+ if (tabParentPageData && options.route) {
+ tabParentPageData.route = options.route;
+ }
+ } // Tab Content Loaded
+
+
+ function onTabLoaded(contentEl) {
+ // Remove theme elements
+ router.removeThemeElements($newTabEl);
+ var tabEventTarget = $newTabEl;
+ if (typeof contentEl !== 'string') tabEventTarget = (0, _dom.default)(contentEl);
+ tabEventTarget.trigger('tab:init tab:mounted', tabRoute);
+ router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);
+
+ if ($oldTabEl && $oldTabEl.length) {
+ if (animated) {
+ onTabsChanged(function () {
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
+
+ if (router.params.unloadTabContent) {
+ router.tabRemove($oldTabEl, $newTabEl, tabRoute);
+ }
+ });
+ } else {
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
+
+ if (router.params.unloadTabContent) {
+ router.tabRemove($oldTabEl, $newTabEl, tabRoute);
+ }
+ }
+ }
+ }
+
+ if ($newTabEl[0].f7RouterTabLoaded) {
+ if (!$oldTabEl || !$oldTabEl.length) return router;
+
+ if (animated) {
+ onTabsChanged(function () {
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
+ });
+ } else {
+ router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
+ }
+
+ return router;
+ } // Load Tab Content
+
+
+ function loadTab(loadTabParams, loadTabOptions) {
+ // Load Tab Props
+ var url = loadTabParams.url,
+ content = loadTabParams.content,
+ el = loadTabParams.el,
+ component = loadTabParams.component,
+ componentUrl = loadTabParams.componentUrl; // Component/Template Callbacks
+
+ function resolve(contentEl) {
+ router.allowPageChange = true;
+ if (!contentEl) return;
+
+ if (typeof contentEl === 'string') {
+ $newTabEl.html(contentEl);
+ } else {
+ $newTabEl.html('');
+
+ if (contentEl.f7Component) {
+ contentEl.f7Component.mount(function (componentEl) {
+ $newTabEl.append(componentEl);
+ });
+ } else {
+ $newTabEl.append(contentEl);
+ }
+ }
+
+ $newTabEl[0].f7RouterTabLoaded = true;
+ onTabLoaded(contentEl);
+ }
+
+ function reject() {
+ router.allowPageChange = true;
+ return router;
+ }
+
+ if (content) {
+ resolve(content);
+ } else if (el) {
+ resolve(el);
+ } else if (component || componentUrl) {
+ // Load from component (F7/Vue/React/...)
+ try {
+ router.tabComponentLoader({
+ tabEl: $newTabEl[0],
+ component: component,
+ componentUrl: componentUrl,
+ options: loadTabOptions,
+ resolve: resolve,
+ reject: reject
+ });
+ } catch (err) {
+ router.allowPageChange = true;
+ throw err;
+ }
+ } else if (url) {
+ // Load using XHR
+ if (router.xhrAbortController) {
+ router.xhrAbortController.abort();
+ router.xhrAbortController = false;
+ }
+
+ router.xhrRequest(url, loadTabOptions).then(function (tabContent) {
+ resolve(tabContent);
+ }).catch(function () {
+ router.allowPageChange = true;
+ });
+ }
+ }
+
+ var hasContentLoadProp;
+ 'url content component el componentUrl'.split(' ').forEach(function (tabLoadProp) {
+ if (tabRoute[tabLoadProp]) {
+ var _loadTab;
+
+ hasContentLoadProp = true;
+ loadTab((_loadTab = {}, _loadTab[tabLoadProp] = tabRoute[tabLoadProp], _loadTab), options);
+ }
+ }); // Async
+
+ function asyncResolve(resolveParams, resolveOptions) {
+ loadTab(resolveParams, (0, _utils.extend)(options, resolveOptions));
+ }
+
+ function asyncReject() {
+ router.allowPageChange = true;
+ }
+
+ if (tabRoute.async) {
+ tabRoute.async.call(router, {
+ router: router,
+ to: currentRoute,
+ from: previousRoute,
+ resolve: asyncResolve,
+ reject: asyncReject,
+ app: router.app
+ });
+ } else if (tabRoute.asyncComponent) {
+ (0, _asyncComponent.default)(router, tabRoute.asyncComponent, asyncResolve, asyncReject);
+ } else if (!hasContentLoadProp) {
+ router.allowPageChange = true;
+ }
+
+ return router;
+}
+
+function tabRemove($oldTabEl, $newTabEl, tabRoute) {
+ var router = this;
+ var hasTabComponentChild;
+
+ if ($oldTabEl[0]) {
+ $oldTabEl[0].f7RouterTabLoaded = false;
+ delete $oldTabEl[0].f7RouterTabLoaded;
+ }
+
+ $oldTabEl.children().each(function (tabChild) {
+ if (tabChild.f7Component) {
+ hasTabComponentChild = true;
+ (0, _dom.default)(tabChild).trigger('tab:beforeremove', tabRoute);
+ tabChild.f7Component.destroy();
+ }
+ });
+
+ if (!hasTabComponentChild) {
+ $oldTabEl.trigger('tab:beforeremove', tabRoute);
+ }
+
+ router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);
+ router.removeTabContent($oldTabEl[0], tabRoute);
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/service-worker/service-worker.js b/www/assets/framework7/cjs/modules/service-worker/service-worker.js
new file mode 100644
index 000000000..7a8c7abab
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/service-worker/service-worker.js
@@ -0,0 +1,101 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _utils = require("../../shared/utils");
+
+var SW = {
+ registrations: [],
+ register: function register(path, scope) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+
+ if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
+ return new Promise(function (resolve, reject) {
+ reject(new Error('Service worker is not supported'));
+ });
+ }
+
+ return new Promise(function (resolve, reject) {
+ app.serviceWorker.container.register(path, scope ? {
+ scope: scope
+ } : {}).then(function (reg) {
+ SW.registrations.push(reg);
+ app.emit('serviceWorkerRegisterSuccess', reg);
+ resolve(reg);
+ }).catch(function (error) {
+ app.emit('serviceWorkerRegisterError', error);
+ reject(error);
+ });
+ });
+ },
+ unregister: function unregister(registration) {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+
+ if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
+ return new Promise(function (resolve, reject) {
+ reject(new Error('Service worker is not supported'));
+ });
+ }
+
+ var registrations;
+ if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];
+ return Promise.all(registrations.map(function (reg) {
+ return new Promise(function (resolve, reject) {
+ reg.unregister().then(function () {
+ if (SW.registrations.indexOf(reg) >= 0) {
+ SW.registrations.splice(SW.registrations.indexOf(reg), 1);
+ }
+
+ app.emit('serviceWorkerUnregisterSuccess', reg);
+ resolve();
+ }).catch(function (error) {
+ app.emit('serviceWorkerUnregisterError', reg, error);
+ reject(error);
+ });
+ });
+ }));
+ }
+};
+var _default = {
+ name: 'sw',
+ params: {
+ serviceWorker: {
+ path: undefined,
+ scope: undefined
+ }
+ },
+ create: function create() {
+ var app = this;
+ var window = (0, _ssrWindow.getWindow)();
+ (0, _utils.extend)(app, {
+ serviceWorker: {
+ container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,
+ registrations: SW.registrations,
+ register: SW.register.bind(app),
+ unregister: SW.unregister.bind(app)
+ }
+ });
+ },
+ on: {
+ init: function init() {
+ var window = (0, _ssrWindow.getWindow)();
+ if (!('serviceWorker' in window.navigator)) return;
+ var app = this;
+ if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;
+ if (!app.serviceWorker.container) return;
+ var paths = app.params.serviceWorker.path;
+ var scope = app.params.serviceWorker.scope;
+ if (!paths || Array.isArray(paths) && !paths.length) return;
+ var toRegister = Array.isArray(paths) ? paths : [paths];
+ toRegister.forEach(function (path) {
+ app.serviceWorker.register(path, scope);
+ });
+ }
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/store/create-store.js b/www/assets/framework7/cjs/modules/store/create-store.js
new file mode 100644
index 000000000..95cadd9b3
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/store/create-store.js
@@ -0,0 +1,169 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("../../shared/utils");
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function createStore(storeParams) {
+ if (storeParams === void 0) {
+ storeParams = {};
+ }
+
+ var store = {
+ __store: true
+ };
+
+ var originalState = _extends({}, storeParams.state || {});
+
+ var actions = _extends({}, storeParams.actions || {});
+
+ var getters = _extends({}, storeParams.getters || {});
+
+ var state = (0, _utils.extend)({}, originalState);
+ var propsQueue = [];
+ var gettersDependencies = {};
+ var gettersCallbacks = {};
+ Object.keys(getters).forEach(function (getterKey) {
+ gettersDependencies[getterKey] = [];
+ gettersCallbacks[getterKey] = [];
+ });
+
+ var getGetterValue = function getGetterValue(getterKey) {
+ return getters[getterKey]({
+ state: store.state
+ });
+ };
+
+ var addGetterDependencies = function addGetterDependencies(getterKey, deps) {
+ if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];
+ deps.forEach(function (dep) {
+ if (gettersDependencies[getterKey].indexOf(dep) < 0) {
+ gettersDependencies[getterKey].push(dep);
+ }
+ });
+ };
+
+ var addGetterCallback = function addGetterCallback(getterKey, callback) {
+ if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];
+ gettersCallbacks[getterKey].push(callback);
+ };
+
+ var runGetterCallbacks = function runGetterCallbacks(stateKey) {
+ var keys = Object.keys(gettersDependencies).filter(function (getterKey) {
+ return gettersDependencies[getterKey].indexOf(stateKey) >= 0;
+ });
+ keys.forEach(function (getterKey) {
+ if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;
+ gettersCallbacks[getterKey].forEach(function (callback) {
+ callback(getGetterValue(getterKey));
+ });
+ });
+ };
+
+ var removeGetterCallback = function removeGetterCallback(callback) {
+ Object.keys(gettersCallbacks).forEach(function (stateKey) {
+ var callbacks = gettersCallbacks[stateKey];
+
+ if (callbacks.indexOf(callback) >= 0) {
+ callbacks.splice(callbacks.indexOf(callback), 1);
+ }
+ });
+ }; // eslint-disable-next-line
+
+
+ store.__removeCallback = function (callback) {
+ removeGetterCallback(callback);
+ };
+
+ var getterValue = function getterValue(getterKey, addCallback) {
+ if (addCallback === void 0) {
+ addCallback = true;
+ }
+
+ if (getterKey === 'constructor') return undefined;
+ propsQueue = [];
+ var value = getGetterValue(getterKey);
+ addGetterDependencies(getterKey, propsQueue);
+
+ var onUpdated = function onUpdated(callback) {
+ addGetterCallback(getterKey, callback);
+ };
+
+ var obj = {
+ value: value,
+ onUpdated: onUpdated
+ };
+
+ if (!addCallback) {
+ return obj;
+ }
+
+ var callback = function callback(v) {
+ obj.value = v;
+ };
+
+ obj.__callback = callback;
+ addGetterCallback(getterKey, callback); // eslint-disable-next-line
+
+ return obj;
+ };
+
+ store.state = new Proxy(state, {
+ set: function set(target, prop, value) {
+ target[prop] = value;
+ runGetterCallbacks(prop);
+ return true;
+ },
+ get: function get(target, prop) {
+ propsQueue.push(prop);
+ return target[prop];
+ }
+ });
+ store.getters = new Proxy(getters, {
+ set: function set() {
+ return false;
+ },
+ get: function get(target, prop) {
+ if (!target[prop]) {
+ return undefined;
+ }
+
+ return getterValue(prop, true);
+ }
+ });
+ store._gettersPlain = new Proxy(getters, {
+ set: function set() {
+ return false;
+ },
+ get: function get(target, prop) {
+ if (!target[prop]) {
+ return undefined;
+ }
+
+ return getterValue(prop, false);
+ }
+ });
+
+ store.dispatch = function (actionName, data) {
+ return new Promise(function (resolve, reject) {
+ if (!actions[actionName]) {
+ reject();
+ throw new Error("Framework7: Store action \"" + actionName + "\" is not found");
+ }
+
+ var result = actions[actionName]({
+ state: store.state,
+ dispatch: store.dispatch
+ }, data);
+ resolve(result);
+ });
+ };
+
+ return store;
+}
+
+var _default = createStore;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/store/store.js b/www/assets/framework7/cjs/modules/store/store.js
new file mode 100644
index 000000000..a1779dd38
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/store/store.js
@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _createStore = _interopRequireDefault(require("./create-store"));
+
+exports.createStore = _createStore.default;
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var _default = {
+ name: 'store',
+ static: {
+ createStore: _createStore.default
+ },
+ proto: {
+ createStore: _createStore.default
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/support/support.js b/www/assets/framework7/cjs/modules/support/support.js
new file mode 100644
index 000000000..68f273fe7
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/support/support.js
@@ -0,0 +1,14 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _getSupport = require("../../shared/get-support");
+
+var _default = {
+ name: 'support',
+ static: {
+ getSupport: _getSupport.getSupport
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/touch/touch.js b/www/assets/framework7/cjs/modules/touch/touch.js
new file mode 100644
index 000000000..8814cf7a4
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/touch/touch.js
@@ -0,0 +1,585 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("../../shared/dom7"));
+
+var _getSupport = require("../../shared/get-support");
+
+var _getDevice = require("../../shared/get-device");
+
+var _utils = require("../../shared/utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint-disable no-nested-ternary */
+function initTouch() {
+ var app = this;
+ var device = (0, _getDevice.getDevice)();
+ var support = (0, _getSupport.getSupport)();
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var params = app.params.touch;
+ var useRipple = params[app.theme + "TouchRipple"];
+
+ if (device.ios && device.webView) {
+ // Strange hack required for iOS 8 webview to work on inputs
+ window.addEventListener('touchstart', function () {});
+ }
+
+ var touchStartX;
+ var touchStartY;
+ var targetElement;
+ var isMoved;
+ var tapHoldFired;
+ var tapHoldTimeout;
+ var preventClick;
+ var activableElement;
+ var activeTimeout;
+ var rippleWave;
+ var rippleTarget;
+ var rippleTimeout;
+
+ function findActivableElement(el) {
+ var target = (0, _dom.default)(el);
+ var parents = target.parents(params.activeStateElements);
+
+ if (target.closest('.no-active-state').length) {
+ return null;
+ }
+
+ var activable;
+
+ if (target.is(params.activeStateElements)) {
+ activable = target;
+ }
+
+ if (parents.length > 0) {
+ activable = activable ? activable.add(parents) : parents;
+ }
+
+ if (activable && activable.length > 1) {
+ var newActivable = [];
+ var preventPropagation;
+
+ for (var i = 0; i < activable.length; i += 1) {
+ if (!preventPropagation) {
+ newActivable.push(activable[i]);
+
+ if (activable.eq(i).hasClass('prevent-active-state-propagation') || activable.eq(i).hasClass('no-active-state-propagation')) {
+ preventPropagation = true;
+ }
+ }
+ }
+
+ activable = (0, _dom.default)(newActivable);
+ }
+
+ return activable || target;
+ }
+
+ function isInsideScrollableView(el) {
+ var pageContent = el.parents('.page-content');
+ return pageContent.length > 0;
+ }
+
+ function addActive() {
+ if (!activableElement) return;
+ activableElement.addClass('active-state');
+ }
+
+ function removeActive() {
+ if (!activableElement) return;
+ activableElement.removeClass('active-state');
+ activableElement = null;
+ } // Ripple handlers
+
+
+ function findRippleElement(el) {
+ var rippleElements = params.touchRippleElements;
+ var $el = (0, _dom.default)(el);
+
+ if ($el.is(rippleElements)) {
+ if ($el.hasClass('no-ripple')) {
+ return false;
+ }
+
+ return $el;
+ }
+
+ if ($el.parents(rippleElements).length > 0) {
+ var rippleParent = $el.parents(rippleElements).eq(0);
+
+ if (rippleParent.hasClass('no-ripple')) {
+ return false;
+ }
+
+ return rippleParent;
+ }
+
+ return false;
+ }
+
+ function createRipple($el, x, y) {
+ if (!$el) return;
+ rippleWave = app.touchRipple.create(app, $el, x, y);
+ }
+
+ function removeRipple() {
+ if (!rippleWave) return;
+ rippleWave.remove();
+ rippleWave = undefined;
+ rippleTarget = undefined;
+ }
+
+ function rippleTouchStart(el) {
+ rippleTarget = findRippleElement(el);
+
+ if (!rippleTarget || rippleTarget.length === 0) {
+ rippleTarget = undefined;
+ return;
+ }
+
+ var inScrollable = isInsideScrollableView(rippleTarget);
+
+ if (!inScrollable) {
+ removeRipple();
+ createRipple(rippleTarget, touchStartX, touchStartY);
+ } else {
+ clearTimeout(rippleTimeout);
+ rippleTimeout = setTimeout(function () {
+ removeRipple();
+ createRipple(rippleTarget, touchStartX, touchStartY);
+ }, 80);
+ }
+ }
+
+ function rippleTouchMove() {
+ clearTimeout(rippleTimeout);
+ removeRipple();
+ }
+
+ function rippleTouchEnd() {
+ if (!rippleWave && rippleTarget && !isMoved) {
+ clearTimeout(rippleTimeout);
+ createRipple(rippleTarget, touchStartX, touchStartY);
+ setTimeout(removeRipple, 0);
+ } else {
+ removeRipple();
+ }
+ } // Mouse Handlers
+
+
+ function handleMouseDown(e) {
+ var $activableEl = findActivableElement(e.target);
+
+ if ($activableEl) {
+ $activableEl.addClass('active-state');
+
+ if ('which' in e && e.which === 3) {
+ setTimeout(function () {
+ (0, _dom.default)('.active-state').removeClass('active-state');
+ }, 0);
+ }
+ }
+
+ if (useRipple) {
+ touchStartX = e.pageX;
+ touchStartY = e.pageY;
+ rippleTouchStart(e.target, e.pageX, e.pageY);
+ }
+ }
+
+ function handleMouseMove() {
+ if (!params.activeStateOnMouseMove) {
+ (0, _dom.default)('.active-state').removeClass('active-state');
+ }
+
+ if (useRipple) {
+ rippleTouchMove();
+ }
+ }
+
+ function handleMouseUp() {
+ (0, _dom.default)('.active-state').removeClass('active-state');
+
+ if (useRipple) {
+ rippleTouchEnd();
+ }
+ }
+
+ function handleTouchCancel() {
+ targetElement = null; // Remove Active State
+
+ clearTimeout(activeTimeout);
+ clearTimeout(tapHoldTimeout);
+
+ if (params.activeState) {
+ removeActive();
+ } // Remove Ripple
+
+
+ if (useRipple) {
+ rippleTouchEnd();
+ }
+ }
+
+ var isScrolling;
+ var isSegmentedStrong = false;
+ var segmentedStrongEl = null;
+ var touchMoveActivableIos = '.dialog-button, .actions-button';
+ var isTouchMoveActivable = false;
+ var touchmoveActivableEl = null;
+
+ function handleTouchStart(e) {
+ isMoved = false;
+ tapHoldFired = false;
+ preventClick = false;
+ isScrolling = undefined;
+
+ if (e.targetTouches.length > 1) {
+ if (activableElement) removeActive();
+ return true;
+ }
+
+ if (e.touches.length > 1 && activableElement) {
+ removeActive();
+ }
+
+ if (params.tapHold) {
+ if (tapHoldTimeout) clearTimeout(tapHoldTimeout);
+ tapHoldTimeout = setTimeout(function () {
+ if (e && e.touches && e.touches.length > 1) return;
+ tapHoldFired = true;
+ e.preventDefault();
+ preventClick = true;
+ (0, _dom.default)(e.target).trigger('taphold', e);
+ app.emit('taphold', e);
+ }, params.tapHoldDelay);
+ }
+
+ targetElement = e.target;
+ touchStartX = e.targetTouches[0].pageX;
+ touchStartY = e.targetTouches[0].pageY;
+ isSegmentedStrong = e.target.closest('.segmented-strong .button-active, .segmented-strong .tab-link-active');
+ isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);
+
+ if (isSegmentedStrong) {
+ segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');
+ }
+
+ if (params.activeState) {
+ activableElement = findActivableElement(targetElement);
+
+ if (activableElement && !isInsideScrollableView(activableElement)) {
+ addActive();
+ } else if (activableElement) {
+ activeTimeout = setTimeout(addActive, 80);
+ }
+ }
+
+ if (useRipple) {
+ rippleTouchStart(targetElement, touchStartX, touchStartY);
+ }
+
+ return true;
+ }
+
+ function handleTouchMove(e) {
+ var touch;
+ var distance;
+ var shouldRemoveActive = true;
+
+ if (e.type === 'touchmove') {
+ touch = e.targetTouches[0];
+ distance = params.touchClicksDistanceThreshold;
+ }
+
+ var touchCurrentX = e.targetTouches[0].pageX;
+ var touchCurrentY = e.targetTouches[0].pageY;
+
+ if (typeof isScrolling === 'undefined') {
+ isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
+ }
+
+ if (isTouchMoveActivable || !isScrolling && isSegmentedStrong && segmentedStrongEl) {
+ if (e.cancelable) e.preventDefault();
+ }
+
+ if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {
+ var elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);
+ var buttonEl = elementFromPoint.closest('.segmented-strong .button:not(.button-active):not(.tab-link-active)');
+
+ if (buttonEl && segmentedStrongEl.contains(buttonEl)) {
+ (0, _dom.default)(buttonEl).trigger('click', 'f7Segmented');
+ targetElement = buttonEl;
+ }
+ }
+
+ if (distance && touch) {
+ var pageX = touch.pageX;
+ var pageY = touch.pageY;
+
+ if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {
+ isMoved = true;
+ }
+ } else {
+ isMoved = true;
+ }
+
+ if (isMoved) {
+ preventClick = true; // Keep active state on touchMove (for dialog and actions buttons)
+
+ if (isTouchMoveActivable) {
+ var _elementFromPoint = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);
+
+ touchmoveActivableEl = _elementFromPoint.closest(touchMoveActivableIos);
+
+ if (touchmoveActivableEl && activableElement && activableElement[0] === touchmoveActivableEl) {
+ shouldRemoveActive = false;
+ } else if (touchmoveActivableEl) {
+ setTimeout(function () {
+ activableElement = findActivableElement(touchmoveActivableEl);
+ addActive();
+ });
+ }
+ }
+
+ if (params.tapHold) {
+ clearTimeout(tapHoldTimeout);
+ }
+
+ if (params.activeState && shouldRemoveActive) {
+ clearTimeout(activeTimeout);
+ removeActive();
+ }
+
+ if (useRipple) {
+ rippleTouchMove();
+ }
+ }
+ }
+
+ function handleTouchEnd(e) {
+ isScrolling = undefined;
+ isSegmentedStrong = false;
+ segmentedStrongEl = null;
+ isTouchMoveActivable = false;
+ clearTimeout(activeTimeout);
+ clearTimeout(tapHoldTimeout);
+
+ if (touchmoveActivableEl) {
+ (0, _dom.default)(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');
+ touchmoveActivableEl = null;
+ }
+
+ if (document.activeElement === e.target) {
+ if (params.activeState) removeActive();
+
+ if (useRipple) {
+ rippleTouchEnd();
+ }
+
+ return true;
+ }
+
+ if (params.activeState) {
+ addActive();
+ setTimeout(removeActive, 0);
+ }
+
+ if (useRipple) {
+ rippleTouchEnd();
+ }
+
+ if (params.tapHoldPreventClicks && tapHoldFired || preventClick) {
+ if (e.cancelable) e.preventDefault();
+ preventClick = true;
+ return false;
+ }
+
+ return true;
+ }
+
+ function handleClick(e) {
+ var isOverswipe = e && e.detail && e.detail === 'f7Overswipe';
+ var isSegmented = e && e.detail && e.detail === 'f7Segmented'; // eslint-disable-next-line
+
+ var isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';
+ var localPreventClick = preventClick;
+
+ if (targetElement && e.target !== targetElement) {
+ if (isOverswipe || isSegmented || isTouchMoveActivable) {
+ localPreventClick = false;
+ } else {
+ localPreventClick = true;
+ }
+ } else if (isTouchMoveActivable) {
+ localPreventClick = false;
+ }
+
+ if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {
+ localPreventClick = true;
+ }
+
+ if (localPreventClick) {
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+ }
+
+ if (params.tapHold) {
+ tapHoldTimeout = setTimeout(function () {
+ tapHoldFired = false;
+ }, device.ios || device.androidChrome ? 100 : 400);
+ }
+
+ preventClick = false;
+ targetElement = null;
+ return !localPreventClick;
+ }
+
+ function emitAppTouchEvent(name, e) {
+ app.emit({
+ events: name,
+ data: [e]
+ });
+ }
+
+ function appClick(e) {
+ emitAppTouchEvent('click', e);
+ }
+
+ function appTouchStartActive(e) {
+ emitAppTouchEvent('touchstart touchstart:active', e);
+ }
+
+ function appTouchMoveActive(e) {
+ emitAppTouchEvent('touchmove touchmove:active', e);
+ }
+
+ function appTouchEndActive(e) {
+ emitAppTouchEvent('touchend touchend:active', e);
+ }
+
+ function appTouchStartPassive(e) {
+ emitAppTouchEvent('touchstart:passive', e);
+ }
+
+ function appTouchMovePassive(e) {
+ emitAppTouchEvent('touchmove:passive', e);
+ }
+
+ function appTouchEndPassive(e) {
+ emitAppTouchEvent('touchend:passive', e);
+ }
+
+ var passiveListener = support.passiveListener ? {
+ passive: true
+ } : false;
+ var passiveListenerCapture = support.passiveListener ? {
+ passive: true,
+ capture: true
+ } : true;
+ var activeListener = support.passiveListener ? {
+ passive: false
+ } : false;
+ var activeListenerCapture = support.passiveListener ? {
+ passive: false,
+ capture: true
+ } : true;
+ document.addEventListener('click', appClick, true);
+
+ if (support.passiveListener) {
+ document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);
+ document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);
+ document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);
+ document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);
+ document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);
+ document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);
+ } else {
+ document.addEventListener(app.touchEvents.start, function (e) {
+ appTouchStartActive(e);
+ appTouchStartPassive(e);
+ }, true);
+ document.addEventListener(app.touchEvents.move, function (e) {
+ appTouchMoveActive(e);
+ appTouchMovePassive(e);
+ }, false);
+ document.addEventListener(app.touchEvents.end, function (e) {
+ appTouchEndActive(e);
+ appTouchEndPassive(e);
+ }, false);
+ }
+
+ if (support.touch) {
+ app.on('click', handleClick);
+ app.on('touchstart', handleTouchStart);
+ app.on('touchmove', handleTouchMove);
+ app.on('touchend', handleTouchEnd);
+ document.addEventListener('touchcancel', handleTouchCancel, {
+ passive: true
+ });
+ } else if (params.activeState) {
+ app.on('touchstart', handleMouseDown);
+ app.on('touchmove', handleMouseMove);
+ app.on('touchend', handleMouseUp);
+ document.addEventListener('pointercancel', handleMouseUp, {
+ passive: true
+ });
+ }
+
+ document.addEventListener('contextmenu', function (e) {
+ if (params.disableContextMenu && (device.ios || device.android || device.cordova || window.Capacitor && window.Capacitor.isNative)) {
+ e.preventDefault();
+ }
+
+ if (useRipple) {
+ if (activableElement) removeActive();
+ rippleTouchEnd();
+ }
+ });
+}
+
+var _default = {
+ name: 'touch',
+ params: {
+ touch: {
+ // Clicks
+ touchClicksDistanceThreshold: 5,
+ // ContextMenu
+ disableContextMenu: false,
+ // Tap Hold
+ tapHold: false,
+ tapHoldDelay: 750,
+ tapHoldPreventClicks: true,
+ // Active State
+ activeState: true,
+ activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',
+ activeStateOnMouseMove: false,
+ mdTouchRipple: true,
+ iosTouchRipple: false,
+ auroraTouchRipple: false,
+ touchRippleElements: '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',
+ touchRippleInsetElements: '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back'
+ }
+ },
+ create: function create() {
+ var app = this;
+ var support = (0, _getSupport.getSupport)();
+ (0, _utils.extend)(app, {
+ touchEvents: {
+ start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',
+ move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',
+ end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup'
+ }
+ });
+ },
+ on: {
+ init: initTouch
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/modules/utils/utils.js b/www/assets/framework7/cjs/modules/utils/utils.js
new file mode 100644
index 000000000..e874c026c
--- /dev/null
+++ b/www/assets/framework7/cjs/modules/utils/utils.js
@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var utils = _interopRequireWildcard(require("../../shared/utils"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+var _default = {
+ name: 'utils',
+ proto: {
+ utils: utils
+ },
+ static: {
+ utils: utils
+ }
+};
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/$jsx.js b/www/assets/framework7/cjs/shared/$jsx.js
new file mode 100644
index 000000000..80a116e1f
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/$jsx.js
@@ -0,0 +1,39 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/* eslint-disable prefer-rest-params */
+var $jsx = function $jsx(tag, props) {
+ var attrs = props || {};
+
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
+ args[_key - 2] = arguments[_key];
+ }
+
+ var children = args || [];
+ var attrsString = Object.keys(attrs).map(function (attr) {
+ if (attr[0] === '_') {
+ if (attrs[attr]) return attr.replace('_', '');
+ return '';
+ }
+
+ return attr + "=\"" + attrs[attr] + "\"";
+ }).filter(function (attr) {
+ return !!attr;
+ }).join(' ');
+
+ if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {
+ return ("<" + tag + " " + attrsString + " />").trim();
+ }
+
+ var childrenContent = children.filter(function (c) {
+ return !!c;
+ }).map(function (c) {
+ return Array.isArray(c) ? c.join('') : c;
+ }).join('');
+ return ("<" + tag + " " + attrsString + ">" + childrenContent + "" + tag + ">").trim();
+};
+
+var _default = $jsx;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/class.js b/www/assets/framework7/cjs/shared/class.js
new file mode 100644
index 000000000..f22b25ee8
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/class.js
@@ -0,0 +1,206 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _utils = require("./utils");
+
+var _eventsClass = _interopRequireDefault(require("./events-class"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var Framework7Class = /*#__PURE__*/function (_EventsClass) {
+ _inheritsLoose(Framework7Class, _EventsClass);
+
+ function Framework7Class(params, parents) {
+ var _this;
+
+ if (params === void 0) {
+ params = {};
+ }
+
+ if (parents === void 0) {
+ parents = [];
+ }
+
+ _this = _EventsClass.call(this, parents) || this;
+
+ var self = _assertThisInitialized(_this);
+
+ self.params = params;
+
+ if (self.params && self.params.on) {
+ Object.keys(self.params.on).forEach(function (eventName) {
+ self.on(eventName, self.params.on[eventName]);
+ });
+ }
+
+ return _this;
+ } // eslint-disable-next-line
+
+
+ var _proto = Framework7Class.prototype;
+
+ _proto.useModuleParams = function useModuleParams(module, instanceParams) {
+ if (module.params) {
+ var originalParams = {};
+ Object.keys(module.params).forEach(function (paramKey) {
+ if (typeof instanceParams[paramKey] === 'undefined') return;
+ originalParams[paramKey] = (0, _utils.extend)({}, instanceParams[paramKey]);
+ });
+ (0, _utils.extend)(instanceParams, module.params);
+ Object.keys(originalParams).forEach(function (paramKey) {
+ (0, _utils.extend)(instanceParams[paramKey], originalParams[paramKey]);
+ });
+ }
+ };
+
+ _proto.useModulesParams = function useModulesParams(instanceParams) {
+ var instance = this;
+ if (!instance.modules) return;
+ Object.keys(instance.modules).forEach(function (moduleName) {
+ var module = instance.modules[moduleName]; // Extend params
+
+ if (module.params) {
+ (0, _utils.extend)(instanceParams, module.params);
+ }
+ });
+ };
+
+ _proto.useModule = function useModule(moduleName, moduleParams) {
+ if (moduleName === void 0) {
+ moduleName = '';
+ }
+
+ if (moduleParams === void 0) {
+ moduleParams = {};
+ }
+
+ var instance = this;
+ if (!instance.modules) return;
+ var module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;
+ if (!module) return; // Extend instance methods and props
+
+ if (module.instance) {
+ Object.keys(module.instance).forEach(function (modulePropName) {
+ var moduleProp = module.instance[modulePropName];
+
+ if (typeof moduleProp === 'function') {
+ instance[modulePropName] = moduleProp.bind(instance);
+ } else {
+ instance[modulePropName] = moduleProp;
+ }
+ });
+ } // Add event listeners
+
+
+ if (module.on && instance.on) {
+ Object.keys(module.on).forEach(function (moduleEventName) {
+ instance.on(moduleEventName, module.on[moduleEventName]);
+ });
+ } // Add vnode hooks
+
+
+ if (module.vnode) {
+ if (!instance.vnodeHooks) instance.vnodeHooks = {};
+ Object.keys(module.vnode).forEach(function (vnodeId) {
+ Object.keys(module.vnode[vnodeId]).forEach(function (hookName) {
+ var handler = module.vnode[vnodeId][hookName];
+ if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};
+ if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];
+ instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));
+ });
+ });
+ } // Module create callback
+
+
+ if (module.create) {
+ module.create.bind(instance)(moduleParams);
+ }
+ };
+
+ _proto.useModules = function useModules(modulesParams) {
+ if (modulesParams === void 0) {
+ modulesParams = {};
+ }
+
+ var instance = this;
+ if (!instance.modules) return;
+ Object.keys(instance.modules).forEach(function (moduleName) {
+ var moduleParams = modulesParams[moduleName] || {};
+ instance.useModule(moduleName, moduleParams);
+ });
+ };
+
+ Framework7Class.installModule = function installModule(module) {
+ var Class = this;
+ if (!Class.prototype.modules) Class.prototype.modules = {};
+ var name = module.name || Object.keys(Class.prototype.modules).length + "_" + (0, _utils.now)();
+ Class.prototype.modules[name] = module; // Prototype
+
+ if (module.proto) {
+ Object.keys(module.proto).forEach(function (key) {
+ Class.prototype[key] = module.proto[key];
+ });
+ } // Class
+
+
+ if (module.static) {
+ Object.keys(module.static).forEach(function (key) {
+ Class[key] = module.static[key];
+ });
+ } // Callback
+
+
+ if (module.install) {
+ for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ params[_key - 1] = arguments[_key];
+ }
+
+ module.install.apply(Class, params);
+ }
+
+ return Class;
+ };
+
+ Framework7Class.use = function use(module) {
+ var Class = this;
+
+ if (Array.isArray(module)) {
+ module.forEach(function (m) {
+ return Class.installModule(m);
+ });
+ return Class;
+ }
+
+ for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+ params[_key2 - 1] = arguments[_key2];
+ }
+
+ return Class.installModule.apply(Class, [module].concat(params));
+ };
+
+ _createClass(Framework7Class, null, [{
+ key: "components",
+ set: function set(components) {
+ var Class = this;
+ if (!Class.use) return;
+ Class.use(components);
+ }
+ }]);
+
+ return Framework7Class;
+}(_eventsClass.default);
+
+var _default = Framework7Class;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/constructor-methods.js b/www/assets/framework7/cjs/shared/constructor-methods.js
new file mode 100644
index 000000000..bac4f52fb
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/constructor-methods.js
@@ -0,0 +1,73 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = ConstructorMethods;
+
+var _dom = _interopRequireDefault(require("./dom7"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+function ConstructorMethods(parameters) {
+ if (parameters === void 0) {
+ parameters = {};
+ }
+
+ var _parameters = parameters,
+ defaultSelector = _parameters.defaultSelector,
+ Constructor = _parameters.constructor,
+ domProp = _parameters.domProp,
+ app = _parameters.app,
+ addMethods = _parameters.addMethods;
+ var methods = {
+ create: function create() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ if (app) return _construct(Constructor, [app].concat(args));
+ return _construct(Constructor, args);
+ },
+ get: function get(el) {
+ if (el === void 0) {
+ el = defaultSelector;
+ }
+
+ if (el instanceof Constructor) return el;
+ var $el = (0, _dom.default)(el);
+ if ($el.length === 0) return undefined;
+ return $el[0][domProp];
+ },
+ destroy: function destroy(el) {
+ var instance = methods.get(el);
+ if (instance && instance.destroy) return instance.destroy();
+ return undefined;
+ }
+ };
+
+ if (addMethods && Array.isArray(addMethods)) {
+ addMethods.forEach(function (methodName) {
+ methods[methodName] = function (el) {
+ if (el === void 0) {
+ el = defaultSelector;
+ }
+
+ var instance = methods.get(el);
+
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+ args[_key2 - 1] = arguments[_key2];
+ }
+
+ if (instance && instance[methodName]) return instance[methodName].apply(instance, args);
+ return undefined;
+ };
+ });
+ }
+
+ return methods;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/dom7.js b/www/assets/framework7/cjs/shared/dom7.js
new file mode 100644
index 000000000..13635b9dc
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/dom7.js
@@ -0,0 +1,17 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var methods = _interopRequireWildcard(require("dom7"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+Object.keys(methods).forEach(function (methodName) {
+ if (methodName === '$') return;
+ methods.$.fn[methodName] = methods[methodName];
+});
+var _default = methods.$;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/events-class.js b/www/assets/framework7/cjs/shared/events-class.js
new file mode 100644
index 000000000..ef9f15ac8
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/events-class.js
@@ -0,0 +1,125 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var EventsClass = /*#__PURE__*/function () {
+ function EventsClass(parents) {
+ if (parents === void 0) {
+ parents = [];
+ }
+
+ var self = this;
+ self.eventsParents = parents;
+ self.eventsListeners = {};
+ }
+
+ var _proto = EventsClass.prototype;
+
+ _proto.on = function on(events, handler, priority) {
+ var self = this;
+ if (typeof handler !== 'function') return self;
+ var method = priority ? 'unshift' : 'push';
+ events.split(' ').forEach(function (event) {
+ if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
+ self.eventsListeners[event][method](handler);
+ });
+ return self;
+ };
+
+ _proto.once = function once(events, handler, priority) {
+ var self = this;
+ if (typeof handler !== 'function') return self;
+
+ function onceHandler() {
+ self.off(events, onceHandler);
+
+ if (onceHandler.f7proxy) {
+ delete onceHandler.f7proxy;
+ }
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ handler.apply(self, args);
+ }
+
+ onceHandler.f7proxy = handler;
+ return self.on(events, onceHandler, priority);
+ };
+
+ _proto.off = function off(events, handler) {
+ var self = this;
+ if (!self.eventsListeners) return self;
+ events.split(' ').forEach(function (event) {
+ if (typeof handler === 'undefined') {
+ self.eventsListeners[event] = [];
+ } else if (self.eventsListeners[event]) {
+ self.eventsListeners[event].forEach(function (eventHandler, index) {
+ if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {
+ self.eventsListeners[event].splice(index, 1);
+ }
+ });
+ }
+ });
+ return self;
+ };
+
+ _proto.emit = function emit() {
+ var self = this;
+ if (!self.eventsListeners) return self;
+ var events;
+ var data;
+ var context;
+ var eventsParents;
+
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ if (typeof args[0] === 'string' || Array.isArray(args[0])) {
+ events = args[0];
+ data = args.slice(1, args.length);
+ context = self;
+ eventsParents = self.eventsParents;
+ } else {
+ events = args[0].events;
+ data = args[0].data;
+ context = args[0].context || self;
+ eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;
+ }
+
+ var eventsArray = Array.isArray(events) ? events : events.split(' ');
+ var localEvents = eventsArray.map(function (eventName) {
+ return eventName.replace('local::', '');
+ });
+ var parentEvents = eventsArray.filter(function (eventName) {
+ return eventName.indexOf('local::') < 0;
+ });
+ localEvents.forEach(function (event) {
+ if (self.eventsListeners && self.eventsListeners[event]) {
+ var handlers = [];
+ self.eventsListeners[event].forEach(function (eventHandler) {
+ handlers.push(eventHandler);
+ });
+ handlers.forEach(function (eventHandler) {
+ eventHandler.apply(context, data);
+ });
+ }
+ });
+
+ if (eventsParents && eventsParents.length > 0) {
+ eventsParents.forEach(function (eventsParent) {
+ eventsParent.emit.apply(eventsParent, [parentEvents].concat(data));
+ });
+ }
+
+ return self;
+ };
+
+ return EventsClass;
+}();
+
+var _default = EventsClass;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/get-device.js b/www/assets/framework7/cjs/shared/get-device.js
new file mode 100644
index 000000000..09bb992c7
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/get-device.js
@@ -0,0 +1,157 @@
+"use strict";
+
+exports.__esModule = true;
+exports.getDevice = getDevice;
+
+var _ssrWindow = require("ssr-window");
+
+var _getSupport = require("./get-support");
+
+var deviceCalculated;
+
+function calcDevice(_temp) {
+ var _ref = _temp === void 0 ? {} : _temp,
+ userAgent = _ref.userAgent;
+
+ var support = (0, _getSupport.getSupport)();
+ var window = (0, _ssrWindow.getWindow)();
+ var platform = window.navigator.platform;
+ var ua = userAgent || window.navigator.userAgent;
+ var device = {
+ ios: false,
+ android: false,
+ androidChrome: false,
+ desktop: false,
+ iphone: false,
+ ipod: false,
+ ipad: false,
+ edge: false,
+ ie: false,
+ firefox: false,
+ macos: false,
+ windows: false,
+ cordova: !!(window.cordova || window.phonegap),
+ phonegap: !!(window.cordova || window.phonegap),
+ electron: false,
+ capacitor: !!window.Capacitor,
+ nwjs: false
+ };
+ var screenWidth = window.screen.width;
+ var screenHeight = window.screen.height;
+ var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
+
+ var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
+ var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
+ var iphone = !ipad && ua.match(/(iPhone\sOS|iOS|iPhone;\sCPU\sOS)\s([\d_]+)/);
+ var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
+ var edge = ua.indexOf('Edge/') >= 0;
+ var firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
+ var windows = platform === 'Win32';
+ var electron = ua.toLowerCase().indexOf('electron') >= 0;
+ var nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';
+ var macos = platform === 'MacIntel'; // iPadOs 13 fix
+
+ var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
+
+ if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
+ ipad = ua.match(/(Version)\/([\d.]+)/);
+ if (!ipad) ipad = [0, 1, '13_0_0'];
+ macos = false;
+ }
+
+ device.ie = ie;
+ device.edge = edge;
+ device.firefox = firefox; // Android
+
+ if (android) {
+ device.os = 'android';
+ device.osVersion = android[2];
+ device.android = true;
+ device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
+ }
+
+ if (ipad || iphone || ipod) {
+ device.os = 'ios';
+ device.ios = true;
+ } // iOS
+
+
+ if (iphone && !ipod) {
+ device.osVersion = iphone[2].replace(/_/g, '.');
+ device.iphone = true;
+ }
+
+ if (ipad) {
+ device.osVersion = ipad[2].replace(/_/g, '.');
+ device.ipad = true;
+ }
+
+ if (ipod) {
+ device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
+ device.ipod = true;
+ } // iOS 8+ changed UA
+
+
+ if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
+ if (device.osVersion.split('.')[0] === '10') {
+ device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
+ }
+ } // Webview
+
+
+ device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) || window.matchMedia && window.matchMedia('(display-mode: standalone)').matches;
+ device.webview = device.webView;
+ device.standalone = device.webView; // Desktop
+
+ device.desktop = !(device.ios || device.android) || electron || nwjs;
+
+ if (device.desktop) {
+ device.electron = electron;
+ device.nwjs = nwjs;
+ device.macos = macos;
+ device.windows = windows;
+
+ if (device.macos) {
+ device.os = 'macos';
+ }
+
+ if (device.windows) {
+ device.os = 'windows';
+ }
+ } // Pixel Ratio
+
+
+ device.pixelRatio = window.devicePixelRatio || 1; // Color Scheme
+
+ var DARK = '(prefers-color-scheme: dark)';
+ var LIGHT = '(prefers-color-scheme: light)';
+
+ device.prefersColorScheme = function prefersColorTheme() {
+ var theme;
+
+ if (window.matchMedia && window.matchMedia(LIGHT).matches) {
+ theme = 'light';
+ }
+
+ if (window.matchMedia && window.matchMedia(DARK).matches) {
+ theme = 'dark';
+ }
+
+ return theme;
+ }; // Export object
+
+
+ return device;
+}
+
+function getDevice(overrides, reset) {
+ if (overrides === void 0) {
+ overrides = {};
+ }
+
+ if (!deviceCalculated || reset) {
+ deviceCalculated = calcDevice(overrides);
+ }
+
+ return deviceCalculated;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/get-support.js b/www/assets/framework7/cjs/shared/get-support.js
new file mode 100644
index 000000000..3c5fee833
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/get-support.js
@@ -0,0 +1,44 @@
+"use strict";
+
+exports.__esModule = true;
+exports.getSupport = getSupport;
+
+var _ssrWindow = require("ssr-window");
+
+var support;
+
+function calcSupport() {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ return {
+ touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
+ pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
+ passiveListener: function checkPassiveListener() {
+ var supportsPassive = false;
+
+ try {
+ var opts = Object.defineProperty({}, 'passive', {
+ // eslint-disable-next-line
+ get: function get() {
+ supportsPassive = true;
+ }
+ });
+ window.addEventListener('testPassiveListener', null, opts);
+ } catch (e) {// No support
+ }
+
+ return supportsPassive;
+ }(),
+ intersectionObserver: function checkObserver() {
+ return 'IntersectionObserver' in window;
+ }()
+ };
+}
+
+function getSupport() {
+ if (!support) {
+ support = calcSupport();
+ }
+
+ return support;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/history.js b/www/assets/framework7/cjs/shared/history.js
new file mode 100644
index 000000000..97b5b6494
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/history.js
@@ -0,0 +1,185 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _dom = _interopRequireDefault(require("./dom7"));
+
+var _utils = require("./utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var History = {
+ queue: [],
+ clearQueue: function clearQueue() {
+ if (History.queue.length === 0) return;
+ var currentQueue = History.queue.shift();
+ currentQueue();
+ },
+ routerQueue: [],
+ clearRouterQueue: function clearRouterQueue() {
+ if (History.routerQueue.length === 0) return;
+ var currentQueue = History.routerQueue.pop();
+ var router = currentQueue.router,
+ stateUrl = currentQueue.stateUrl,
+ action = currentQueue.action;
+ var animate = router.params.animate;
+ if (router.params.browserHistoryAnimate === false) animate = false;
+
+ if (action === 'back') {
+ router.back({
+ animate: animate,
+ browserHistory: false
+ });
+ }
+
+ if (action === 'load') {
+ router.navigate(stateUrl, {
+ animate: animate,
+ browserHistory: false
+ });
+ }
+ },
+ handle: function handle(e) {
+ if (History.blockPopstate) return;
+ var app = this; // const mainView = app.views.main;
+
+ var state = e.state;
+ History.previousState = History.state;
+ History.state = state;
+ History.allowChange = true;
+ History.clearQueue();
+ state = History.state;
+ if (!state) state = {};
+ app.views.forEach(function (view) {
+ var router = view.router;
+ var viewState = state[view.id];
+
+ if (!viewState && view.params.browserHistory) {
+ viewState = {
+ url: view.router.history[0]
+ };
+ }
+
+ if (!viewState) return;
+ var stateUrl = viewState.url || undefined;
+ var animate = router.params.animate;
+ if (router.params.browserHistoryAnimate === false) animate = false;
+
+ if (stateUrl !== router.url) {
+ if (router.history.indexOf(stateUrl) >= 0) {
+ // Go Back
+ if (router.allowPageChange) {
+ router.back({
+ animate: animate,
+ browserHistory: false
+ });
+ } else {
+ History.routerQueue.push({
+ action: 'back',
+ router: router
+ });
+ }
+ } else if (router.allowPageChange) {
+ // Load page
+ router.navigate(stateUrl, {
+ animate: animate,
+ browserHistory: false
+ });
+ } else {
+ History.routerQueue.unshift({
+ action: 'load',
+ stateUrl: stateUrl,
+ router: router
+ });
+ }
+ }
+ });
+ },
+ initViewState: function initViewState(viewId, viewState) {
+ var _extend;
+
+ var window = (0, _ssrWindow.getWindow)();
+ var newState = (0, _utils.extend)({}, History.state || {}, (_extend = {}, _extend[viewId] = viewState, _extend));
+ History.state = newState;
+ window.history.replaceState(newState, '');
+ },
+ push: function push(viewId, viewState, url) {
+ var _extend2;
+
+ var window = (0, _ssrWindow.getWindow)();
+
+ if (url.substr(-3) === '#!/') {
+ // eslint-disable-next-line
+ url = url.replace('#!/', '');
+ }
+
+ if (!History.allowChange) {
+ History.queue.push(function () {
+ History.push(viewId, viewState, url);
+ });
+ return;
+ }
+
+ History.previousState = History.state;
+ var newState = (0, _utils.extend)({}, History.previousState || {}, (_extend2 = {}, _extend2[viewId] = viewState, _extend2));
+ History.state = newState;
+ window.history.pushState(newState, '', url);
+ },
+ replace: function replace(viewId, viewState, url) {
+ var _extend3;
+
+ var window = (0, _ssrWindow.getWindow)();
+
+ if (url.substr(-3) === '#!/') {
+ // eslint-disable-next-line
+ url = url.replace('#!/', '');
+ }
+
+ if (!History.allowChange) {
+ History.queue.push(function () {
+ History.replace(viewId, viewState, url);
+ });
+ return;
+ }
+
+ History.previousState = History.state;
+ var newState = (0, _utils.extend)({}, History.previousState || {}, (_extend3 = {}, _extend3[viewId] = viewState, _extend3));
+ History.state = newState;
+ window.history.replaceState(newState, '', url);
+ },
+ go: function go(index) {
+ var window = (0, _ssrWindow.getWindow)();
+ History.allowChange = false;
+ window.history.go(index);
+ },
+ back: function back() {
+ var window = (0, _ssrWindow.getWindow)();
+ History.allowChange = false;
+ window.history.back();
+ },
+ allowChange: true,
+ previousState: {},
+ state: {},
+ blockPopstate: true,
+ init: function init(app) {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ History.state = window.history.state;
+ (0, _dom.default)(window).on('load', function () {
+ setTimeout(function () {
+ History.blockPopstate = false;
+ }, 0);
+ });
+
+ if (document.readyState && document.readyState === 'complete') {
+ History.blockPopstate = false;
+ }
+
+ (0, _dom.default)(window).on('popstate', History.handle.bind(app));
+ }
+};
+var _default = History;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/modal-methods.js b/www/assets/framework7/cjs/shared/modal-methods.js
new file mode 100644
index 000000000..bd75706d7
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/modal-methods.js
@@ -0,0 +1,105 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = ModalMethods;
+
+var _dom = _interopRequireDefault(require("./dom7"));
+
+var _utils = require("./utils");
+
+var _constructorMethods = _interopRequireDefault(require("./constructor-methods"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function ModalMethods(parameters) {
+ if (parameters === void 0) {
+ parameters = {};
+ }
+
+ var _parameters = parameters,
+ defaultSelector = _parameters.defaultSelector,
+ Constructor = _parameters.constructor,
+ app = _parameters.app;
+ var methods = (0, _utils.extend)((0, _constructorMethods.default)({
+ defaultSelector: defaultSelector,
+ constructor: Constructor,
+ app: app,
+ domProp: 'f7Modal'
+ }), {
+ open: function open(el, animate, targetEl) {
+ var $el = (0, _dom.default)(el);
+
+ if ($el.length > 1 && targetEl) {
+ // check if same modal in other page
+ var $targetPage = (0, _dom.default)(targetEl).parents('.page');
+
+ if ($targetPage.length) {
+ $el.each(function (modalEl) {
+ var $modalEl = (0, _dom.default)(modalEl);
+
+ if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {
+ $el = $modalEl;
+ }
+ });
+ }
+ }
+
+ if ($el.length > 1) {
+ $el = $el.eq($el.length - 1);
+ }
+
+ if (!$el.length) return undefined;
+ var instance = $el[0].f7Modal;
+
+ if (!instance) {
+ var params = $el.dataset();
+ instance = new Constructor(app, _extends({
+ el: $el
+ }, params));
+ }
+
+ return instance.open(animate);
+ },
+ close: function close(el, animate, targetEl) {
+ if (el === void 0) {
+ el = defaultSelector;
+ }
+
+ var $el = (0, _dom.default)(el);
+ if (!$el.length) return undefined;
+
+ if ($el.length > 1) {
+ // check if close link (targetEl) in this modal
+ var $parentEl;
+
+ if (targetEl) {
+ var $targetEl = (0, _dom.default)(targetEl);
+
+ if ($targetEl.length) {
+ $parentEl = $targetEl.parents($el);
+ }
+ }
+
+ if ($parentEl && $parentEl.length > 0) {
+ $el = $parentEl;
+ } else {
+ $el = $el.eq($el.length - 1);
+ }
+ }
+
+ var instance = $el[0].f7Modal;
+
+ if (!instance) {
+ var params = $el.dataset();
+ instance = new Constructor(app, _extends({
+ el: $el
+ }, params));
+ }
+
+ return instance.close(animate);
+ }
+ });
+ return methods;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/request.js b/www/assets/framework7/cjs/shared/request.js
new file mode 100644
index 000000000..5d55c9a18
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/request.js
@@ -0,0 +1,552 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var _utils = require("./utils");
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
+
+function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
+
+function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
+
+function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
+
+function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+var globals = {};
+var jsonpRequests = 0;
+
+var RequestResponse = function RequestResponse(obj) {
+ Object.assign(this, obj);
+};
+
+var RequestError = /*#__PURE__*/function (_Error) {
+ _inheritsLoose(RequestError, _Error);
+
+ function RequestError(obj) {
+ var _this;
+
+ _this = _Error.call(this) || this;
+ Object.assign(_assertThisInitialized(_this), obj);
+ return _this;
+ }
+
+ return RequestError;
+}( /*#__PURE__*/_wrapNativeSuper(Error));
+
+var request = function request(requestOptions) {
+ return new Promise(function (resolve, reject) {
+ var window = (0, _ssrWindow.getWindow)();
+ var document = (0, _ssrWindow.getDocument)();
+ var globalsNoCallbacks = (0, _utils.extend)({}, globals);
+ 'beforeCreate beforeOpen beforeSend error complete success statusCode'.split(' ').forEach(function (callbackName) {
+ delete globalsNoCallbacks[callbackName];
+ });
+ var defaults = (0, _utils.extend)({
+ url: window.location.toString(),
+ method: 'GET',
+ data: false,
+ async: true,
+ cache: true,
+ user: '',
+ password: '',
+ headers: {},
+ xhrFields: {},
+ statusCode: {},
+ processData: true,
+ dataType: 'text',
+ contentType: 'application/x-www-form-urlencoded',
+ timeout: 0
+ }, globalsNoCallbacks);
+ var proceedRequest;
+ var options = (0, _utils.extend)({}, defaults, requestOptions);
+
+ if (requestOptions.abortController) {
+ options.abortController = requestOptions.abortController;
+ }
+
+ if (options.abortController && options.abortController.canceled) {
+ reject(new RequestError({
+ options: options,
+ status: 'canceled',
+ message: 'canceled'
+ }));
+ return;
+ } // Function to run XHR callbacks and events
+
+
+ function fireCallback(callbackName) {
+ /*
+ Callbacks:
+ beforeCreate (options),
+ beforeOpen (xhr, options),
+ beforeSend (xhr, options),
+ error (xhr, status, message),
+ complete (xhr, status),
+ success (response, status, xhr),
+ statusCode ()
+ */
+ var globalCallbackValue;
+ var optionCallbackValue;
+
+ for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ data[_key - 1] = arguments[_key];
+ }
+
+ if (globals[callbackName]) {
+ globalCallbackValue = globals[callbackName].apply(globals, data);
+ }
+
+ if (options[callbackName]) {
+ optionCallbackValue = options[callbackName].apply(options, data);
+ }
+
+ if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;
+ if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;
+
+ if (options.abortController && options.abortController.canceled && (callbackName === 'beforeCreate' || callbackName === 'beforeOpen' || callbackName === 'beforeSend')) {
+ return false;
+ }
+
+ return globalCallbackValue && optionCallbackValue;
+ } // Before create callback
+
+
+ proceedRequest = fireCallback('beforeCreate', options);
+
+ if (proceedRequest === false) {
+ reject(new RequestError({
+ options: options,
+ status: 'canceled',
+ message: 'canceled'
+ }));
+ return;
+ } // For jQuery guys
+
+
+ if (options.type) options.method = options.type; // Parameters Prefix
+
+ var paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?'; // UC method
+
+ var method = options.method.toUpperCase(); // Data to modify GET URL
+
+ if ((method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') && options.data) {
+ var stringData;
+
+ if (typeof options.data === 'string') {
+ // Should be key=value string
+ if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];else stringData = options.data;
+ } else {
+ // Should be key=value object
+ stringData = (0, _utils.serializeObject)(options.data);
+ }
+
+ if (stringData.length) {
+ options.url += paramsPrefix + stringData;
+ if (paramsPrefix === '?') paramsPrefix = '&';
+ }
+ } // JSONP
+
+
+ if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {
+ var callbackName = "f7jsonp_" + (Date.now() + (jsonpRequests += 1));
+ var abortTimeout;
+ var callbackSplit = options.url.split('callback=');
+ var requestUrl = callbackSplit[0] + "callback=" + callbackName;
+
+ if (callbackSplit[1].indexOf('&') >= 0) {
+ var addVars = callbackSplit[1].split('&').filter(function (el) {
+ return el.indexOf('=') > 0;
+ }).join('&');
+ if (addVars.length > 0) requestUrl += "&" + addVars;
+ } // Create script
+
+
+ var script = document.createElement('script');
+ script.type = 'text/javascript';
+
+ script.onerror = function onerror() {
+ clearTimeout(abortTimeout);
+ fireCallback('error', null, 'scripterror', 'scripterror');
+ reject(new RequestError({
+ options: options,
+ status: 'scripterror',
+ message: 'scripterror'
+ }));
+ fireCallback('complete', null, 'scripterror');
+ };
+
+ script.src = requestUrl; // Handler
+
+ window[callbackName] = function jsonpCallback(data) {
+ clearTimeout(abortTimeout);
+ fireCallback('success', data);
+ script.parentNode.removeChild(script);
+ script = null;
+ delete window[callbackName];
+ resolve(new RequestResponse({
+ options: options,
+ data: data
+ }));
+ };
+
+ document.querySelector('head').appendChild(script);
+
+ if (options.timeout > 0) {
+ abortTimeout = setTimeout(function () {
+ script.parentNode.removeChild(script);
+ script = null;
+ fireCallback('error', null, 'timeout', 'timeout');
+ reject(new RequestError({
+ options: options,
+ status: 'timeout',
+ message: 'timeout'
+ }));
+ }, options.timeout);
+ }
+
+ return;
+ } // Cache for GET/HEAD requests
+
+
+ if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {
+ if (options.cache === false) {
+ options.url += paramsPrefix + "_nocache" + Date.now();
+ }
+ } // Create XHR
+
+
+ var xhr = new XMLHttpRequest();
+
+ if (options.abortController) {
+ var aborted = false;
+
+ options.abortController.onAbort = function () {
+ if (aborted) return;
+ aborted = true;
+ xhr.abort();
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: 'canceled',
+ message: 'canceled'
+ }));
+ };
+ } // Save Request URL
+
+
+ xhr.requestUrl = options.url;
+ xhr.requestParameters = options; // Before open callback
+
+ proceedRequest = fireCallback('beforeOpen', xhr, options);
+
+ if (proceedRequest === false) {
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: 'canceled',
+ message: 'canceled'
+ }));
+ return;
+ } // Open XHR
+
+
+ xhr.open(method, options.url, options.async, options.user, options.password); // Create POST Data
+
+ var postData = null;
+
+ if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {
+ if (options.processData) {
+ var postDataInstances = [ArrayBuffer, Blob, Document, FormData]; // Post Data
+
+ if (postDataInstances.indexOf(options.data.constructor) >= 0) {
+ postData = options.data;
+ } else {
+ // POST Headers
+ var boundary = "---------------------------" + Date.now().toString(16);
+
+ if (options.contentType === 'multipart/form-data') {
+ xhr.setRequestHeader('Content-Type', "multipart/form-data; boundary=" + boundary);
+ } else {
+ xhr.setRequestHeader('Content-Type', options.contentType);
+ }
+
+ postData = '';
+ var data = (0, _utils.serializeObject)(options.data);
+
+ if (options.contentType === 'multipart/form-data') {
+ data = data.split('&');
+ var newData = [];
+
+ for (var i = 0; i < data.length; i += 1) {
+ newData.push("Content-Disposition: form-data; name=\"" + data[i].split('=')[0] + "\"\r\n\r\n" + data[i].split('=')[1] + "\r\n");
+ }
+
+ postData = "--" + boundary + "\r\n" + newData.join("--" + boundary + "\r\n") + "--" + boundary + "--\r\n";
+ } else if (options.contentType === 'application/json') {
+ postData = JSON.stringify(options.data);
+ } else {
+ postData = data;
+ }
+ }
+ } else {
+ postData = options.data;
+ xhr.setRequestHeader('Content-Type', options.contentType);
+ }
+ }
+
+ if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {
+ xhr.setRequestHeader('Accept', 'application/json');
+ } // Additional headers
+
+
+ if (options.headers) {
+ Object.keys(options.headers).forEach(function (headerName) {
+ if (typeof options.headers[headerName] === 'undefined') return;
+ xhr.setRequestHeader(headerName, options.headers[headerName]);
+ });
+ } // Check for crossDomain
+
+
+ if (typeof options.crossDomain === 'undefined') {
+ options.crossDomain = // eslint-disable-next-line
+ /^([\w-]+:)?\/\/([^\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;
+ }
+
+ if (!options.crossDomain) {
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ }
+
+ if (options.xhrFields) {
+ (0, _utils.extend)(xhr, options.xhrFields);
+ } // Handle XHR
+
+
+ xhr.onload = function onload() {
+ if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
+ var responseData;
+
+ if (options.dataType === 'json') {
+ var parseError;
+
+ try {
+ responseData = JSON.parse(xhr.responseText);
+ } catch (err) {
+ parseError = true;
+ }
+
+ if (!parseError) {
+ fireCallback('success', responseData, xhr.status, xhr);
+ resolve(new RequestResponse({
+ options: options,
+ data: responseData,
+ status: xhr.status,
+ xhr: xhr
+ }));
+ } else {
+ fireCallback('error', xhr, 'parseerror', 'parseerror');
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: 'parseerror',
+ message: 'parseerror'
+ }));
+ }
+ } else {
+ responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;
+ fireCallback('success', responseData, xhr.status, xhr);
+ resolve(new RequestResponse({
+ options: options,
+ data: responseData,
+ status: xhr.status,
+ xhr: xhr
+ }));
+ }
+ } else {
+ fireCallback('error', xhr, xhr.status, xhr.statusText);
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: xhr.status,
+ message: xhr.statusText
+ }));
+ }
+
+ if (options.statusCode) {
+ if (globals.statusCode && globals.statusCode[xhr.status]) globals.statusCode[xhr.status](xhr);
+ if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);
+ }
+
+ fireCallback('complete', xhr, xhr.status);
+ };
+
+ xhr.onerror = function onerror() {
+ fireCallback('error', xhr, xhr.status, xhr.status);
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: xhr.status,
+ message: xhr.statusText
+ }));
+ fireCallback('complete', xhr, 'error');
+ }; // Timeout
+
+
+ if (options.timeout > 0) {
+ xhr.timeout = options.timeout;
+
+ xhr.ontimeout = function () {
+ fireCallback('error', xhr, 'timeout', 'timeout');
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: 'timeout',
+ message: 'timeout'
+ }));
+ fireCallback('complete', xhr, 'timeout');
+ };
+ } // Ajax start callback
+
+
+ proceedRequest = fireCallback('beforeSend', xhr, options);
+
+ if (proceedRequest === false) {
+ reject(new RequestError({
+ options: options,
+ xhr: xhr,
+ status: 'canceled',
+ message: 'canceled'
+ }));
+ return;
+ } // Send XHR
+
+
+ xhr.send(postData);
+ });
+};
+
+function requestShortcut(method) {
+ var _ref = [],
+ url = _ref[0],
+ data = _ref[1],
+ success = _ref[2],
+ error = _ref[3],
+ dataType = _ref[4];
+
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+ args[_key2 - 1] = arguments[_key2];
+ }
+
+ if (typeof args[1] === 'function') {
+ url = args[0];
+ success = args[1];
+ error = args[2];
+ dataType = args[3];
+ } else {
+ url = args[0];
+ data = args[1];
+ success = args[2];
+ error = args[3];
+ dataType = args[4];
+ }
+
+ [success, error].forEach(function (callback) {
+ if (typeof callback === 'string') {
+ dataType = callback;
+ if (callback === success) success = undefined;else error = undefined;
+ }
+ });
+ dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);
+ var requestOptions = {
+ url: url,
+ method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',
+ data: data,
+ success: success,
+ error: error,
+ dataType: dataType
+ };
+
+ if (method === 'postJSON') {
+ (0, _utils.extend)(requestOptions, {
+ contentType: 'application/json',
+ processData: false,
+ crossDomain: true,
+ data: typeof data === 'string' ? data : JSON.stringify(data)
+ });
+ }
+
+ return request(requestOptions);
+}
+
+Object.assign(request, {
+ get: function get() {
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+
+ return requestShortcut.apply(void 0, ['get'].concat(args));
+ },
+ post: function post() {
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ return requestShortcut.apply(void 0, ['post'].concat(args));
+ },
+ json: function json() {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+
+ return requestShortcut.apply(void 0, ['json'].concat(args));
+ },
+ getJSON: function getJSON() {
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
+ args[_key6] = arguments[_key6];
+ }
+
+ return requestShortcut.apply(void 0, ['json'].concat(args));
+ },
+ postJSON: function postJSON() {
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
+ args[_key7] = arguments[_key7];
+ }
+
+ return requestShortcut.apply(void 0, ['postJSON'].concat(args));
+ }
+});
+
+request.abortController = function () {
+ var contoller = {
+ canceled: false,
+ onAbort: null,
+ abort: function abort() {
+ contoller.canceled = true;
+ if (contoller.onAbort) contoller.onAbort();
+ }
+ };
+ return contoller;
+};
+
+request.setup = function setup(options) {
+ if (options.type && !options.method) {
+ (0, _utils.extend)(options, {
+ method: options.type
+ });
+ }
+
+ (0, _utils.extend)(globals, options);
+};
+
+var _default = request;
+exports.default = _default;
\ No newline at end of file
diff --git a/www/assets/framework7/cjs/shared/utils.js b/www/assets/framework7/cjs/shared/utils.js
new file mode 100644
index 000000000..96b673f2a
--- /dev/null
+++ b/www/assets/framework7/cjs/shared/utils.js
@@ -0,0 +1,472 @@
+"use strict";
+
+exports.__esModule = true;
+exports.uniqueNumber = uniqueNumber;
+exports.id = id;
+exports.eventNameToColonCase = eventNameToColonCase;
+exports.deleteProps = deleteProps;
+exports.requestAnimationFrame = requestAnimationFrame;
+exports.cancelAnimationFrame = cancelAnimationFrame;
+exports.nextTick = nextTick;
+exports.nextFrame = nextFrame;
+exports.now = now;
+exports.parseUrlQuery = parseUrlQuery;
+exports.getTranslate = getTranslate;
+exports.serializeObject = serializeObject;
+exports.isObject = isObject;
+exports.merge = merge;
+exports.extend = extend;
+exports.colorHexToRgb = colorHexToRgb;
+exports.colorRgbToHex = colorRgbToHex;
+exports.colorRgbToHsl = colorRgbToHsl;
+exports.colorHslToRgb = colorHslToRgb;
+exports.colorHsbToHsl = colorHsbToHsl;
+exports.colorHslToHsb = colorHslToHsb;
+exports.colorThemeCSSProperties = colorThemeCSSProperties;
+exports.bindMethods = bindMethods;
+exports.flattenArray = flattenArray;
+exports.auroraPreloaderContent = exports.iosPreloaderContent = exports.mdPreloaderContent = void 0;
+
+var _ssrWindow = require("ssr-window");
+
+var uniqueNum = 0;
+
+function uniqueNumber() {
+ uniqueNum += 1;
+ return uniqueNum;
+}
+
+function id(mask, map) {
+ if (mask === void 0) {
+ mask = 'xxxxxxxxxx';
+ }
+
+ if (map === void 0) {
+ map = '0123456789abcdef';
+ }
+
+ var length = map.length;
+ return mask.replace(/x/g, function () {
+ return map[Math.floor(Math.random() * length)];
+ });
+}
+
+var mdPreloaderContent = "\n \n \n \n".trim();
+exports.mdPreloaderContent = mdPreloaderContent;
+var iosPreloaderContent = ("\n \n " + [0, 1, 2, 3, 4, 5, 6, 7].map(function () {
+ return '';
+}).join('') + "\n \n").trim();
+exports.iosPreloaderContent = iosPreloaderContent;
+var auroraPreloaderContent = "\n \n \n \n";
+exports.auroraPreloaderContent = auroraPreloaderContent;
+
+function eventNameToColonCase(eventName) {
+ var hasColon;
+ return eventName.split('').map(function (char, index) {
+ if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {
+ hasColon = true;
+ return ":" + char.toLowerCase();
+ }
+
+ return char.toLowerCase();
+ }).join('');
+}
+
+function deleteProps(obj) {
+ var object = obj;
+ Object.keys(object).forEach(function (key) {
+ try {
+ object[key] = null;
+ } catch (e) {// no setter for object
+ }
+
+ try {
+ delete object[key];
+ } catch (e) {// something got wrong
+ }
+ });
+}
+
+function requestAnimationFrame(callback) {
+ var window = (0, _ssrWindow.getWindow)();
+ return window.requestAnimationFrame(callback);
+}
+
+function cancelAnimationFrame(frameId) {
+ var window = (0, _ssrWindow.getWindow)();
+ return window.cancelAnimationFrame(frameId);
+}
+
+function nextTick(callback, delay) {
+ if (delay === void 0) {
+ delay = 0;
+ }
+
+ return setTimeout(callback, delay);
+}
+
+function nextFrame(callback) {
+ return requestAnimationFrame(function () {
+ requestAnimationFrame(callback);
+ });
+}
+
+function now() {
+ return Date.now();
+}
+
+function parseUrlQuery(url) {
+ var window = (0, _ssrWindow.getWindow)();
+ var query = {};
+ var urlToParse = url || window.location.href;
+ var i;
+ var params;
+ var param;
+ var length;
+
+ if (typeof urlToParse === 'string' && urlToParse.length) {
+ urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
+ params = urlToParse.split('&').filter(function (paramsPart) {
+ return paramsPart !== '';
+ });
+ length = params.length;
+
+ for (i = 0; i < length; i += 1) {
+ param = params[i].replace(/#\S+/g, '').split('=');
+ query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';
+ }
+ }
+
+ return query;
+}
+
+function getTranslate(el, axis) {
+ if (axis === void 0) {
+ axis = 'x';
+ }
+
+ var window = (0, _ssrWindow.getWindow)();
+ var matrix;
+ var curTransform;
+ var transformMatrix;
+ var curStyle = window.getComputedStyle(el, null);
+
+ if (window.WebKitCSSMatrix) {
+ curTransform = curStyle.transform || curStyle.webkitTransform;
+
+ if (curTransform.split(',').length > 6) {
+ curTransform = curTransform.split(', ').map(function (a) {
+ return a.replace(',', '.');
+ }).join(', ');
+ } // Some old versions of Webkit choke when 'none' is passed; pass
+ // empty string instead in this case
+
+
+ transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
+ } else {
+ transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
+ matrix = transformMatrix.toString().split(',');
+ }
+
+ if (axis === 'x') {
+ // Latest Chrome and webkits Fix
+ if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
+ else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
+ else curTransform = parseFloat(matrix[4]);
+ }
+
+ if (axis === 'y') {
+ // Latest Chrome and webkits Fix
+ if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
+ else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
+ else curTransform = parseFloat(matrix[5]);
+ }
+
+ return curTransform || 0;
+}
+
+function serializeObject(obj, parents) {
+ if (parents === void 0) {
+ parents = [];
+ }
+
+ if (typeof obj === 'string') return obj;
+ var resultArray = [];
+ var separator = '&';
+ var newParents;
+
+ function varName(name) {
+ if (parents.length > 0) {
+ var parentParts = '';
+
+ for (var j = 0; j < parents.length; j += 1) {
+ if (j === 0) parentParts += parents[j];else parentParts += "[" + encodeURIComponent(parents[j]) + "]";
+ }
+
+ return parentParts + "[" + encodeURIComponent(name) + "]";
+ }
+
+ return encodeURIComponent(name);
+ }
+
+ function varValue(value) {
+ return encodeURIComponent(value);
+ }
+
+ Object.keys(obj).forEach(function (prop) {
+ var toPush;
+
+ if (Array.isArray(obj[prop])) {
+ toPush = [];
+
+ for (var i = 0; i < obj[prop].length; i += 1) {
+ if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {
+ newParents = parents.slice();
+ newParents.push(prop);
+ newParents.push(String(i));
+ toPush.push(serializeObject(obj[prop][i], newParents));
+ } else {
+ toPush.push(varName(prop) + "[]=" + varValue(obj[prop][i]));
+ }
+ }
+
+ if (toPush.length > 0) resultArray.push(toPush.join(separator));
+ } else if (obj[prop] === null || obj[prop] === '') {
+ resultArray.push(varName(prop) + "=");
+ } else if (typeof obj[prop] === 'object') {
+ // Object, convert to named array
+ newParents = parents.slice();
+ newParents.push(prop);
+ toPush = serializeObject(obj[prop], newParents);
+ if (toPush !== '') resultArray.push(toPush);
+ } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {
+ // Should be string or plain value
+ resultArray.push(varName(prop) + "=" + varValue(obj[prop]));
+ } else if (obj[prop] === '') resultArray.push(varName(prop));
+ });
+ return resultArray.join(separator);
+}
+
+function isObject(o) {
+ return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
+}
+
+function merge() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var to = args[0];
+ args.splice(0, 1);
+ var from = args;
+
+ for (var i = 0; i < from.length; i += 1) {
+ var nextSource = args[i];
+
+ if (nextSource !== undefined && nextSource !== null) {
+ var keysArray = Object.keys(Object(nextSource));
+
+ for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
+ var nextKey = keysArray[nextIndex];
+ var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
+
+ if (desc !== undefined && desc.enumerable) {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+
+ return to;
+}
+
+function extend() {
+ var deep = true;
+ var to;
+ var from;
+
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ if (typeof args[0] === 'boolean') {
+ deep = args[0];
+ to = args[1];
+ args.splice(0, 2);
+ from = args;
+ } else {
+ to = args[0];
+ args.splice(0, 1);
+ from = args;
+ }
+
+ for (var i = 0; i < from.length; i += 1) {
+ var nextSource = args[i];
+
+ if (nextSource !== undefined && nextSource !== null) {
+ var keysArray = Object.keys(Object(nextSource));
+
+ for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
+ var nextKey = keysArray[nextIndex];
+ var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
+
+ if (desc !== undefined && desc.enumerable) {
+ if (!deep) {
+ to[nextKey] = nextSource[nextKey];
+ } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
+ extend(to[nextKey], nextSource[nextKey]);
+ } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
+ to[nextKey] = {};
+ extend(to[nextKey], nextSource[nextKey]);
+ } else {
+ to[nextKey] = nextSource[nextKey];
+ }
+ }
+ }
+ }
+ }
+
+ return to;
+}
+
+function colorHexToRgb(hex) {
+ var h = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (m, r, g, b) {
+ return r + r + g + g + b + b;
+ });
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(h);
+ return result ? result.slice(1).map(function (n) {
+ return parseInt(n, 16);
+ }) : null;
+}
+
+function colorRgbToHex(r, g, b) {
+ var result = [r, g, b].map(function (n) {
+ var hex = n.toString(16);
+ return hex.length === 1 ? "0" + hex : hex;
+ }).join('');
+ return "#" + result;
+}
+
+function colorRgbToHsl(r, g, b) {
+ r /= 255; // eslint-disable-line
+
+ g /= 255; // eslint-disable-line
+
+ b /= 255; // eslint-disable-line
+
+ var max = Math.max(r, g, b);
+ var min = Math.min(r, g, b);
+ var d = max - min;
+ var h;
+ if (d === 0) h = 0;else if (max === r) h = (g - b) / d % 6;else if (max === g) h = (b - r) / d + 2;else if (max === b) h = (r - g) / d + 4;
+ var l = (min + max) / 2;
+ var s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
+ if (h < 0) h = 360 / 60 + h;
+ return [h * 60, s, l];
+}
+
+function colorHslToRgb(h, s, l) {
+ var c = (1 - Math.abs(2 * l - 1)) * s;
+ var hp = h / 60;
+ var x = c * (1 - Math.abs(hp % 2 - 1));
+ var rgb1;
+
+ if (Number.isNaN(h) || typeof h === 'undefined') {
+ rgb1 = [0, 0, 0];
+ } else if (hp <= 1) rgb1 = [c, x, 0];else if (hp <= 2) rgb1 = [x, c, 0];else if (hp <= 3) rgb1 = [0, c, x];else if (hp <= 4) rgb1 = [0, x, c];else if (hp <= 5) rgb1 = [x, 0, c];else if (hp <= 6) rgb1 = [c, 0, x];
+
+ var m = l - c / 2;
+ return rgb1.map(function (n) {
+ return Math.max(0, Math.min(255, Math.round(255 * (n + m))));
+ });
+}
+
+function colorHsbToHsl(h, s, b) {
+ var HSL = {
+ h: h,
+ s: 0,
+ l: 0
+ };
+ var HSB = {
+ h: h,
+ s: s,
+ b: b
+ };
+ HSL.l = (2 - HSB.s) * HSB.b / 2;
+ HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;
+ return [HSL.h, HSL.s, HSL.l];
+}
+
+function colorHslToHsb(h, s, l) {
+ var HSB = {
+ h: h,
+ s: 0,
+ b: 0
+ };
+ var HSL = {
+ h: h,
+ s: s,
+ l: l
+ };
+ var t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);
+ HSB.b = HSL.l + t;
+ HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;
+ return [HSB.h, HSB.s, HSB.b];
+}
+
+function colorThemeCSSProperties() {
+ var hex;
+ var rgb;
+
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+
+ if (args.length === 1) {
+ hex = args[0];
+ rgb = colorHexToRgb(hex);
+ } else if (args.length === 3) {
+ rgb = args;
+ hex = colorRgbToHex.apply(void 0, rgb);
+ }
+
+ if (!rgb) return {};
+ var hsl = colorRgbToHsl.apply(void 0, rgb);
+ var hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];
+ var hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];
+ var shade = colorRgbToHex.apply(void 0, colorHslToRgb.apply(void 0, hslShade));
+ var tint = colorRgbToHex.apply(void 0, colorHslToRgb.apply(void 0, hslTint));
+ return {
+ '--f7-theme-color': hex,
+ '--f7-theme-color-rgb': rgb.join(', '),
+ '--f7-theme-color-shade': shade,
+ '--f7-theme-color-tint': tint
+ };
+}
+
+function bindMethods(instance, obj) {
+ Object.keys(obj).forEach(function (key) {
+ if (isObject(obj[key])) {
+ Object.keys(obj[key]).forEach(function (subKey) {
+ if (typeof obj[key][subKey] === 'function') {
+ obj[key][subKey] = obj[key][subKey].bind(instance);
+ }
+ });
+ }
+
+ instance[key] = obj[key];
+ });
+}
+
+function flattenArray() {
+ var arr = [];
+
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ args.forEach(function (arg) {
+ if (Array.isArray(arg)) arr.push.apply(arr, flattenArray.apply(void 0, arg));else arr.push(arg);
+ });
+ return arr;
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/accordion/accordion.d.ts b/www/assets/framework7/components/accordion/accordion.d.ts
index 2d7053baa..df0746a23 100644
--- a/www/assets/framework7/components/accordion/accordion.d.ts
+++ b/www/assets/framework7/components/accordion/accordion.d.ts
@@ -1,5 +1,5 @@
-import Framework7 from '../app/app-class.js';
-import { CSSSelector, Framework7Plugin } from '../app/app-class.js';
+import Framework7 from '../app/app-class';
+import { CSSSelector, Framework7Plugin } from '../app/app-class';
export namespace Accordion {
interface AppMethods {
diff --git a/www/assets/framework7/components/accordion/accordion.js b/www/assets/framework7/components/accordion/accordion.js
index b189a1b5a..cac6c331f 100644
--- a/www/assets/framework7/components/accordion/accordion.js
+++ b/www/assets/framework7/components/accordion/accordion.js
@@ -1,132 +1 @@
-import $ from '../../shared/dom7.js';
-import { nextFrame, bindMethods } from '../../shared/utils.js';
-const Accordion = {
- toggleClicked($clickedEl) {
- const app = this;
- let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);
- if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);
- const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);
-
- if ($accordionContent.length) {
- if ($accordionContent.parents($accordionItemEl).length) return;
- }
-
- if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;
- app.accordion.toggle($accordionItemEl);
- },
-
- open(el) {
- const app = this;
- const $el = $(el);
- let prevented = false;
-
- function prevent() {
- prevented = true;
- }
-
- $el.trigger('accordion:beforeopen', {
- prevent
- }, prevent);
- app.emit('accordionBeforeOpen', $el[0], prevent);
- if (prevented) return;
- const $list = $el.parents('.accordion-list').eq(0);
- let $contentEl = $el.children('.accordion-item-content');
- $contentEl.removeAttr('aria-hidden');
- if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');
- if ($contentEl.length === 0) return;
- const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');
-
- if ($openedItem.length > 0) {
- app.accordion.close($openedItem);
- }
-
- $contentEl.transitionEnd(() => {
- if ($el.hasClass('accordion-item-opened')) {
- $contentEl.transition(0);
- $contentEl.css('height', 'auto');
- nextFrame(() => {
- $contentEl.transition('');
- $el.trigger('accordion:opened');
- app.emit('accordionOpened', $el[0]);
- });
- } else {
- $contentEl.css('height', '');
- $el.trigger('accordion:closed');
- app.emit('accordionClosed', $el[0]);
- }
- });
- $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);
- $el.trigger('accordion:open');
- $el.addClass('accordion-item-opened');
- app.emit('accordionOpen', $el[0]);
- },
-
- close(el) {
- const app = this;
- const $el = $(el);
- let prevented = false;
-
- function prevent() {
- prevented = true;
- }
-
- $el.trigger('accordion:beforeclose', {
- prevent
- }, prevent);
- app.emit('accordionBeforeClose', $el[0], prevent);
- if (prevented) return;
- let $contentEl = $el.children('.accordion-item-content');
- if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');
- $el.removeClass('accordion-item-opened');
- $contentEl.attr('aria-hidden', true);
- $contentEl.transition(0);
- $contentEl.css('height', `${$contentEl[0].scrollHeight}px`); // Close
-
- $contentEl.transitionEnd(() => {
- if ($el.hasClass('accordion-item-opened')) {
- $contentEl.transition(0);
- $contentEl.css('height', 'auto');
- nextFrame(() => {
- $contentEl.transition('');
- $el.trigger('accordion:opened');
- app.emit('accordionOpened', $el[0]);
- });
- } else {
- $contentEl.css('height', '');
- $el.trigger('accordion:closed');
- app.emit('accordionClosed', $el[0]);
- }
- });
- nextFrame(() => {
- $contentEl.transition('');
- $contentEl.css('height', '');
- $el.trigger('accordion:close');
- app.emit('accordionClose', $el[0]);
- });
- },
-
- toggle(el) {
- const app = this;
- const $el = $(el);
- if ($el.length === 0) return;
- if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);
- }
-
-};
-export default {
- name: 'accordion',
-
- create() {
- const app = this;
- bindMethods(app, {
- accordion: Accordion
- });
- },
-
- clicks: {
- '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {
- const app = this;
- Accordion.toggleClicked.call(app, $clickedEl);
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);var n=e.$,i=e.utils,t=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,i.bindMethods),c=i.nextFrame,r={toggleClicked:function(e){var o=e.closest(".accordion-item").eq(0);o.length||(o=e.parents("li").eq(0));var n=e.parents(".accordion-item-content").eq(0);n.length&&n.parents(o).length||e.parents("li").length>1&&e.parents("li")[0]!==o[0]||this.accordion.toggle(o)},open:function(e){var o=this,i=n(e),t=!1;function r(){t=!0}if(i.trigger("accordion:beforeopen",{prevent:r},r),o.emit("accordionBeforeOpen",i[0],r),!t){var a=i.parents(".accordion-list").eq(0),s=i.children(".accordion-item-content");if(s.removeAttr("aria-hidden"),0===s.length&&(s=i.find(".accordion-item-content")),0!==s.length){var d=a.length>0&&i.parent().children(".accordion-item-opened");d.length>0&&o.accordion.close(d),s.transitionEnd((function(){i.hasClass("accordion-item-opened")?(s.transition(0),s.css("height","auto"),c((function(){s.transition(""),i.trigger("accordion:opened"),o.emit("accordionOpened",i[0])}))):(s.css("height",""),i.trigger("accordion:closed"),o.emit("accordionClosed",i[0]))})),s.css("height",s[0].scrollHeight+"px"),i.trigger("accordion:open"),i.addClass("accordion-item-opened"),o.emit("accordionOpen",i[0])}}},close:function(e){var o=this,i=n(e),t=!1;function r(){t=!0}if(i.trigger("accordion:beforeclose",{prevent:r},r),o.emit("accordionBeforeClose",i[0],r),!t){var a=i.children(".accordion-item-content");0===a.length&&(a=i.find(".accordion-item-content")),i.removeClass("accordion-item-opened"),a.attr("aria-hidden",!0),a.transition(0),a.css("height",a[0].scrollHeight+"px"),a.transitionEnd((function(){i.hasClass("accordion-item-opened")?(a.transition(0),a.css("height","auto"),c((function(){a.transition(""),i.trigger("accordion:opened"),o.emit("accordionOpened",i[0])}))):(a.css("height",""),i.trigger("accordion:closed"),o.emit("accordionClosed",i[0]))})),c((function(){a.transition(""),a.css("height",""),i.trigger("accordion:close"),o.emit("accordionClose",i[0])}))}},toggle:function(e){var o=n(e);0!==o.length&&(o.hasClass("accordion-item-opened")?this.accordion.close(e):this.accordion.open(e))}},a={name:"accordion",create:function(){t(this,{accordion:r})},clicks:{".accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a":function(e){r.toggleClicked.call(this,e)}}};if(o){if(e.prototype.modules&&e.prototype.modules[a.name])return;e.use(a),e.instance&&(e.instance.useModuleParams(a,e.instance.params),e.instance.useModule(a))}return a}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/accordion/accordion.lazy.js b/www/assets/framework7/components/accordion/accordion.lazy.js
deleted file mode 100644
index 8ee3715cd..000000000
--- a/www/assets/framework7/components/accordion/accordion.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);var t=e.$,n=e.utils,i=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,n.nextFrame),c=n.bindMethods;const r={toggleClicked(e){let o=e.closest(".accordion-item").eq(0);o.length||(o=e.parents("li").eq(0));const t=e.parents(".accordion-item-content").eq(0);t.length&&t.parents(o).length||e.parents("li").length>1&&e.parents("li")[0]!==o[0]||this.accordion.toggle(o)},open(e){const o=this,n=t(e);let c=!1;function r(){c=!0}if(n.trigger("accordion:beforeopen",{prevent:r},r),o.emit("accordionBeforeOpen",n[0],r),c)return;const s=n.parents(".accordion-list").eq(0);let a=n.children(".accordion-item-content");if(a.removeAttr("aria-hidden"),0===a.length&&(a=n.find(".accordion-item-content")),0===a.length)return;const d=s.length>0&&n.parent().children(".accordion-item-opened");d.length>0&&o.accordion.close(d),a.transitionEnd((()=>{n.hasClass("accordion-item-opened")?(a.transition(0),a.css("height","auto"),i((()=>{a.transition(""),n.trigger("accordion:opened"),o.emit("accordionOpened",n[0])}))):(a.css("height",""),n.trigger("accordion:closed"),o.emit("accordionClosed",n[0]))})),a.css("height",`${a[0].scrollHeight}px`),n.trigger("accordion:open"),n.addClass("accordion-item-opened"),o.emit("accordionOpen",n[0])},close(e){const o=this,n=t(e);let c=!1;function r(){c=!0}if(n.trigger("accordion:beforeclose",{prevent:r},r),o.emit("accordionBeforeClose",n[0],r),c)return;let s=n.children(".accordion-item-content");0===s.length&&(s=n.find(".accordion-item-content")),n.removeClass("accordion-item-opened"),s.attr("aria-hidden",!0),s.transition(0),s.css("height",`${s[0].scrollHeight}px`),s.transitionEnd((()=>{n.hasClass("accordion-item-opened")?(s.transition(0),s.css("height","auto"),i((()=>{s.transition(""),n.trigger("accordion:opened"),o.emit("accordionOpened",n[0])}))):(s.css("height",""),n.trigger("accordion:closed"),o.emit("accordionClosed",n[0]))})),i((()=>{s.transition(""),s.css("height",""),n.trigger("accordion:close"),o.emit("accordionClose",n[0])}))},toggle(e){const o=t(e);0!==o.length&&(o.hasClass("accordion-item-opened")?this.accordion.close(e):this.accordion.open(e))}};var s={name:"accordion",create(){c(this,{accordion:r})},clicks:{".accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a":function(e){r.toggleClicked.call(this,e)}}};if(o){if(e.prototype.modules&&e.prototype.modules[s.name])return;e.use(s),e.instance&&(e.instance.useModuleParams(s,e.instance.params),e.instance.useModule(s))}return s}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/accordion/package.json b/www/assets/framework7/components/accordion/package.json
new file mode 100644
index 000000000..8b561cb76
--- /dev/null
+++ b/www/assets/framework7/components/accordion/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/accordion",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/accordion/accordion.js",
+ "module": "../../esm/components/accordion/accordion.js",
+ "jsnext:main": "../../esm/components/accordion/accordion.js",
+ "typings": "../../types/components/accordion/accordion.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/actions/actions-class.js b/www/assets/framework7/components/actions/actions-class.js
deleted file mode 100644
index 1911b2227..000000000
--- a/www/assets/framework7/components/actions/actions-class.js
+++ /dev/null
@@ -1,370 +0,0 @@
-/* eslint indent: ["off"] */
-import { getWindow, getDocument } from 'ssr-window';
-import { getDevice } from '../../shared/get-device.js';
-import { extend, nextTick } from '../../shared/utils.js';
-import Modal from '../modal/modal-class.js';
-import $ from '../../shared/dom7.js';
-/** @jsx $jsx */
-
-import $jsx from '../../shared/$jsx.js';
-
-class Actions extends Modal {
- constructor(app, params) {
- const extendedParams = extend({
- on: {}
- }, app.params.actions, params); // Extends with open/close Modal methods;
-
- super(app, extendedParams);
- const actions = this;
- const device = getDevice();
- const window = getWindow();
- const document = getDocument();
- actions.params = extendedParams; // Buttons
-
- let groups;
-
- if (actions.params.buttons) {
- groups = actions.params.buttons;
- if (!Array.isArray(groups[0])) groups = [groups];
- }
-
- actions.groups = groups; // Find Element
-
- let $el;
-
- if (actions.params.el) {
- $el = $(actions.params.el).eq(0);
- } else if (actions.params.content) {
- $el = $(actions.params.content).filter(node => node.nodeType === 1).eq(0);
- } else if (actions.params.buttons) {
- if (actions.params.convertToPopover) {
- actions.popoverHtml = actions.renderPopover();
- }
-
- actions.actionsHtml = actions.render();
- }
-
- if ($el && $el.length > 0 && $el[0].f7Modal) {
- return $el[0].f7Modal;
- }
-
- if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {
- return actions.destroy();
- } // Backdrop
-
-
- let $backdropEl;
-
- if (actions.params.backdrop && actions.params.backdropEl) {
- $backdropEl = $(actions.params.backdropEl);
- } else if (actions.params.backdrop) {
- if (actions.params.backdropUnique) {
- $backdropEl = $('');
- actions.$containerEl.append($backdropEl);
- } else {
- $backdropEl = actions.$containerEl.children('.actions-backdrop');
- }
-
- if ($backdropEl.length === 0) {
- $backdropEl = $('');
- actions.$containerEl.append($backdropEl);
- }
- }
-
- const originalOpen = actions.open;
- const originalClose = actions.close;
- let popover;
-
- function buttonOnClick(e) {
- const $buttonEl = $(this);
- let buttonIndex;
- let groupIndex;
-
- if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {
- buttonIndex = $buttonEl.parents('li').index();
- groupIndex = $buttonEl.parents('.list').index();
- } else {
- buttonIndex = $buttonEl.index();
- groupIndex = $buttonEl.parents('.actions-group').index();
- }
-
- if (typeof groups !== 'undefined') {
- const button = groups[groupIndex][buttonIndex];
- if (button.onClick) button.onClick(actions, e);
- if (actions.params.onClick) actions.params.onClick(actions, e);
- if (button.close !== false) actions.close();
- }
- }
-
- actions.open = function open(animate) {
- let convertToPopover = false;
- const {
- targetEl,
- targetX,
- targetY,
- targetWidth,
- targetHeight
- } = actions.params;
-
- if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {
- // Popover
- if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop && app.theme === 'aurora') {
- convertToPopover = true;
- }
- }
-
- if (convertToPopover && actions.popoverHtml) {
- popover = app.popover.create({
- containerEl: actions.params.containerEl,
- content: actions.popoverHtml,
- backdrop: actions.params.backdrop,
- targetEl,
- targetX,
- targetY,
- targetWidth,
- targetHeight,
- on: {
- open() {
- if (!actions.$el) {
- actions.$el = popover.$el;
- }
-
- actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);
- actions.emit(`local::open modalOpen ${actions.type}Open`, actions);
- },
-
- opened() {
- if (!actions.$el) {
- actions.$el = popover.$el;
- }
-
- actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);
- actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);
- },
-
- close() {
- if (!actions.$el) {
- actions.$el = popover.$el;
- }
-
- actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);
- actions.emit(`local::close modalClose ${actions.type}Close`, actions);
- },
-
- closed() {
- if (!actions.$el) {
- actions.$el = popover.$el;
- }
-
- actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);
- actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);
- }
-
- }
- });
- popover.open(animate);
- popover.once('popoverOpened', () => {
- popover.$el.find('.list-button, .item-link').each(buttonEl => {
- $(buttonEl).on('click', buttonOnClick);
- });
- });
- popover.once('popoverClosed', () => {
- popover.$el.find('.list-button, .item-link').each(buttonEl => {
- $(buttonEl).off('click', buttonOnClick);
- });
- nextTick(() => {
- popover.destroy();
- popover = undefined;
- });
- });
- } else {
- actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;
- actions.$el[0].f7Modal = actions;
-
- if (actions.groups) {
- actions.$el.find('.actions-button').each(buttonEl => {
- $(buttonEl).on('click', buttonOnClick);
- });
- actions.once('actionsClosed', () => {
- actions.$el.find('.actions-button').each(buttonEl => {
- $(buttonEl).off('click', buttonOnClick);
- });
- });
- }
-
- actions.el = actions.$el[0];
- originalOpen.call(actions, animate);
- }
-
- return actions;
- };
-
- actions.close = function close(animate) {
- if (popover) {
- popover.close(animate);
- } else {
- originalClose.call(actions, animate);
- }
-
- return actions;
- };
-
- extend(actions, {
- app,
- $el,
- el: $el ? $el[0] : undefined,
- $backdropEl,
- backdropEl: $backdropEl && $backdropEl[0],
- type: 'actions'
- });
-
- function handleClick(e) {
- const target = e.target;
- const $target = $(target);
- const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
- if (keyboardOpened) return;
-
- if ($target.closest(actions.el).length === 0) {
- if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {
- actions.close();
- } else if (actions.params.closeByOutsideClick) {
- actions.close();
- }
- }
- }
-
- function onKeyDown(e) {
- const keyCode = e.keyCode;
-
- if (keyCode === 27 && actions.params.closeOnEscape) {
- actions.close();
- }
- }
-
- if (actions.params.closeOnEscape) {
- actions.on('open', () => {
- $(document).on('keydown', onKeyDown);
- });
- actions.on('close', () => {
- $(document).off('keydown', onKeyDown);
- });
- }
-
- actions.on('opened', () => {
- if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {
- app.on('click', handleClick);
- }
- });
- actions.on('close', () => {
- if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {
- app.off('click', handleClick);
- }
- });
-
- if ($el) {
- $el[0].f7Modal = actions;
- }
-
- return actions;
- }
-
- render() {
- const actions = this;
- if (actions.params.render) return actions.params.render.call(actions, actions);
- const {
- groups
- } = actions;
- const cssClass = actions.params.cssClass;
- return $jsx("div", {
- class: `actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`
- }, groups.map(group => $jsx("div", {
- class: "actions-group"
- }, group.map(button => {
- const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];
- const {
- color,
- bg,
- bold,
- disabled,
- label,
- text,
- icon
- } = button;
- if (color) buttonClasses.push(`color-${color}`);
- if (bg) buttonClasses.push(`bg-color-${bg}`);
- if (bold) buttonClasses.push('actions-button-bold');
- if (disabled) buttonClasses.push('disabled');
-
- if (label) {
- return $jsx("div", {
- class: buttonClasses.join(' ')
- }, text);
- }
-
- return $jsx("div", {
- class: buttonClasses.join(' ')
- }, icon && $jsx("div", {
- class: "actions-button-media"
- }, icon), $jsx("div", {
- class: "actions-button-text"
- }, text));
- }))));
- }
-
- renderPopover() {
- const actions = this;
- if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);
- const {
- groups
- } = actions;
- const cssClass = actions.params.cssClass;
- return $jsx("div", {
- class: `popover popover-from-actions ${cssClass || ''}`
- }, $jsx("div", {
- class: "popover-inner"
- }, groups.map(group => $jsx("div", {
- class: "list"
- }, $jsx("ul", null, group.map(button => {
- const itemClasses = [];
- const {
- color,
- bg,
- bold,
- disabled,
- label,
- text,
- icon
- } = button;
- if (color) itemClasses.push(`color-${color}`);
- if (bg) itemClasses.push(`bg-color-${bg}`);
- if (bold) itemClasses.push('popover-from-actions-bold');
- if (disabled) itemClasses.push('disabled');
-
- if (label) {
- itemClasses.push('popover-from-actions-label');
- return `- ${text}
`;
- }
-
- if (icon) {
- itemClasses.push('item-link item-content');
- return $jsx("li", null, $jsx("a", {
- class: itemClasses.join(' ')
- }, $jsx("div", {
- class: "item-media"
- }, icon), $jsx("div", {
- class: "item-inner"
- }, $jsx("div", {
- class: "item-title"
- }, text))));
- }
-
- itemClasses.push('list-button');
- return $jsx("li", null, $jsx("a", {
- class: itemClasses.join(' ')
- }, text));
- }))))));
- }
-
-}
-
-export default Actions;
\ No newline at end of file
diff --git a/www/assets/framework7/components/actions/actions-rtl.css b/www/assets/framework7/components/actions/actions-rtl.css
index 31e9ce84c..ded3c7af6 100644
--- a/www/assets/framework7/components/actions/actions-rtl.css
+++ b/www/assets/framework7/components/actions/actions-rtl.css
@@ -1 +1 @@
-:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-text-color:#757575;--f7-actions-grid-button-icon-size:48px}:root .dark,:root.dark{--f7-actions-label-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-actions-border-radius:13px;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255, 255, 255, 0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0, 0, 0, 0.2);--f7-actions-button-pressed-bg-color:rgba(230, 230, 230, 0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45, 45, 45, 0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:rgba(50, 50, 50, 0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50}.md{--f7-actions-border-radius:0px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:16px;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-bg-color:#fff;--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.54);--f7-actions-group-border-color:rgba(0, 0, 0, 0.12)}.md .dark,.md.dark{--f7-actions-bg-color:#202020;--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.aurora{--f7-actions-border-radius:8px;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:center;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:10px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-justify-content:center;--f7-actions-group-margin:16px;--f7-actions-bg-color:#fff;--f7-actions-button-border-color:rgba(0, 0, 0, 0.12);--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.5);--f7-actions-group-border-color:rgba(0, 0, 0, 0.1)}.aurora .dark,.aurora.dark{--f7-actions-bg-color:#202020;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.actions-backdrop-unique{z-index:13500}.actions-modal{position:absolute;left:0;bottom:0;z-index:13500;width:100%;transform:translate3d(0,100%,0);display:none;max-height:100%;overflow:auto;-webkit-overflow-scrolling:touch;transition-property:transform;will-change:transform}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0s}.actions-modal.modal-in{transform:translate3d(0,calc(-1 * var(--f7-safe-area-bottom)),0)}.actions-modal.modal-out{z-index:13499;transform:translate3d(0,100%,0)}@media (min-width:496px){.actions-modal{width:480px;left:50%;margin-left:-240px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-group{overflow:hidden;position:relative;margin:var(--f7-actions-group-margin);border-radius:var(--f7-actions-border-radius);transform:translate3d(0,0,0)}.actions-group:after{content:'';position:absolute;background-color:var(--f7-actions-group-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{width:100%;font-weight:400;margin:0;box-sizing:border-box;display:block;position:relative;overflow:hidden;text-align:var(--f7-actions-button-text-align);background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button,.ios-translucent-modals .actions-label{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button:after,.actions-label:after{content:'';position:absolute;background-color:var(--f7-actions-button-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-button:first-child,.actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-button:last-child,.actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-button:last-child:after,.actions-label:last-child:after{display:none!important}.actions-button:first-child:last-child,.actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-button a,.actions-label a{text-decoration:none;color:inherit;display:block}.actions-button b,.actions-button.actions-button-bold,.actions-label b,.actions-label.actions-button-bold{font-weight:600}.actions-button{cursor:pointer;display:flex;color:var(--f7-actions-button-text-color,var(--f7-theme-color));font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);justify-content:var(--f7-actions-button-justify-content);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button-media{flex-shrink:0;display:flex;align-items:center}.actions-button-media i.icon{width:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);font-size:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.actions-button-text{width:100%;flex-shrink:1;text-align:var(--f7-actions-button-text-align)}.actions-label{line-height:1.3;display:flex;align-items:center;font-size:var(--f7-actions-label-font-size);color:var(--f7-actions-label-text-color);padding:var(--f7-actions-label-padding);justify-content:var(--f7-actions-label-justify-content);min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height))}.actions-label[class*=' color-']{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;border-radius:0;background:var(--f7-actions-bg-color);margin-top:0}.actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{border-radius:0!important;background:0 0}.actions-grid .actions-button{width:33.33333333%;display:block;color:var(--f7-actions-grid-button-text-color);height:auto;line-height:1;padding:16px}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important;width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size);font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{margin-left:0!important;text-align:center!important;margin-top:8px;line-height:1.33em;height:1.33em;font-size:var(--f7-actions-grid-button-font-size)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-grid .actions-group{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}.md .actions-button{transition-duration:.3s}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}.aurora .actions-button-media{margin-left:16px}.aurora .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}
\ No newline at end of file
+:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-text-color:#757575;--f7-actions-grid-button-icon-size:48px}:root .theme-dark,:root.theme-dark{--f7-actions-label-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-actions-border-radius:13px;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255, 255, 255, 0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0, 0, 0, 0.2);--f7-actions-button-pressed-bg-color:rgba(230, 230, 230, 0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .theme-dark,.ios.theme-dark{--f7-actions-bg-color:rgba(45, 45, 45, 0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:rgba(50, 50, 50, 0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50}.md{--f7-actions-border-radius:0px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:16px;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-bg-color:#fff;--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.54);--f7-actions-group-border-color:rgba(0, 0, 0, 0.12)}.md .theme-dark,.md.theme-dark{--f7-actions-bg-color:#202020;--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.aurora{--f7-actions-border-radius:8px;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:center;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:10px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-justify-content:center;--f7-actions-group-margin:16px;--f7-actions-bg-color:#fff;--f7-actions-button-border-color:rgba(0, 0, 0, 0.12);--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.5);--f7-actions-group-border-color:rgba(0, 0, 0, 0.1)}.aurora .theme-dark,.aurora.theme-dark{--f7-actions-bg-color:#202020;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.actions-modal{position:absolute;left:0;bottom:0;z-index:13500;width:100%;transform:translate3d(0,100%,0);display:none;max-height:100%;overflow:auto;-webkit-overflow-scrolling:touch;transition-property:transform;will-change:transform}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0s}.actions-modal.modal-in{transform:translate3d(0,calc(-1 * var(--f7-safe-area-bottom)),0)}.actions-modal.modal-out{z-index:13499;transform:translate3d(0,100%,0)}@media (min-width:496px){.actions-modal{width:480px;left:50%;margin-left:-240px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-group{overflow:hidden;position:relative;margin:var(--f7-actions-group-margin);border-radius:var(--f7-actions-border-radius);transform:translate3d(0,0,0)}.actions-group:after{content:'';position:absolute;background-color:var(--f7-actions-group-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{width:100%;font-weight:400;margin:0;box-sizing:border-box;display:block;position:relative;overflow:hidden;text-align:var(--f7-actions-button-text-align);background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button,.ios-translucent-modals .actions-label{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button:after,.actions-label:after{content:'';position:absolute;background-color:var(--f7-actions-button-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-button:first-child,.actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-button:last-child,.actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-button:last-child:after,.actions-label:last-child:after{display:none!important}.actions-button:first-child:last-child,.actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-button a,.actions-label a{text-decoration:none;color:inherit;display:block}.actions-button b,.actions-button.actions-button-bold,.actions-label b,.actions-label.actions-button-bold{font-weight:600}.actions-button{cursor:pointer;display:flex;color:var(--f7-actions-button-text-color,var(--f7-theme-color));font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);justify-content:var(--f7-actions-button-justify-content);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button-media{flex-shrink:0;display:flex;align-items:center}.actions-button-media i.icon{width:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);font-size:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.actions-button-text{width:100%;flex-shrink:1;text-align:var(--f7-actions-button-text-align)}.actions-label{line-height:1.3;display:flex;align-items:center;font-size:var(--f7-actions-label-font-size);color:var(--f7-actions-label-text-color);padding:var(--f7-actions-label-padding);justify-content:var(--f7-actions-label-justify-content);min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height))}.actions-label[class*=' color-']{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;border-radius:0;background:var(--f7-actions-bg-color);margin-top:0}.actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{border-radius:0!important;background:0 0}.actions-grid .actions-button{width:33.33333333%;display:block;color:var(--f7-actions-grid-button-text-color);height:auto;line-height:1;padding:16px}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important;width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size);font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{margin-left:0!important;text-align:center!important;margin-top:8px;line-height:1.33em;height:1.33em;font-size:var(--f7-actions-grid-button-font-size)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-grid .actions-group{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}.md .actions-button{transition-duration:.3s}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}.aurora .actions-button-media{margin-left:16px}.aurora .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/actions/actions.css b/www/assets/framework7/components/actions/actions.css
index 31e9ce84c..ded3c7af6 100644
--- a/www/assets/framework7/components/actions/actions.css
+++ b/www/assets/framework7/components/actions/actions.css
@@ -1 +1 @@
-:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-text-color:#757575;--f7-actions-grid-button-icon-size:48px}:root .dark,:root.dark{--f7-actions-label-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-actions-border-radius:13px;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255, 255, 255, 0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0, 0, 0, 0.2);--f7-actions-button-pressed-bg-color:rgba(230, 230, 230, 0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .dark,.ios.dark{--f7-actions-bg-color:rgba(45, 45, 45, 0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:rgba(50, 50, 50, 0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50}.md{--f7-actions-border-radius:0px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:16px;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-bg-color:#fff;--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.54);--f7-actions-group-border-color:rgba(0, 0, 0, 0.12)}.md .dark,.md.dark{--f7-actions-bg-color:#202020;--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.aurora{--f7-actions-border-radius:8px;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:center;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:10px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-justify-content:center;--f7-actions-group-margin:16px;--f7-actions-bg-color:#fff;--f7-actions-button-border-color:rgba(0, 0, 0, 0.12);--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.5);--f7-actions-group-border-color:rgba(0, 0, 0, 0.1)}.aurora .dark,.aurora.dark{--f7-actions-bg-color:#202020;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.actions-backdrop-unique{z-index:13500}.actions-modal{position:absolute;left:0;bottom:0;z-index:13500;width:100%;transform:translate3d(0,100%,0);display:none;max-height:100%;overflow:auto;-webkit-overflow-scrolling:touch;transition-property:transform;will-change:transform}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0s}.actions-modal.modal-in{transform:translate3d(0,calc(-1 * var(--f7-safe-area-bottom)),0)}.actions-modal.modal-out{z-index:13499;transform:translate3d(0,100%,0)}@media (min-width:496px){.actions-modal{width:480px;left:50%;margin-left:-240px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-group{overflow:hidden;position:relative;margin:var(--f7-actions-group-margin);border-radius:var(--f7-actions-border-radius);transform:translate3d(0,0,0)}.actions-group:after{content:'';position:absolute;background-color:var(--f7-actions-group-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{width:100%;font-weight:400;margin:0;box-sizing:border-box;display:block;position:relative;overflow:hidden;text-align:var(--f7-actions-button-text-align);background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button,.ios-translucent-modals .actions-label{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button:after,.actions-label:after{content:'';position:absolute;background-color:var(--f7-actions-button-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-button:first-child,.actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-button:last-child,.actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-button:last-child:after,.actions-label:last-child:after{display:none!important}.actions-button:first-child:last-child,.actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-button a,.actions-label a{text-decoration:none;color:inherit;display:block}.actions-button b,.actions-button.actions-button-bold,.actions-label b,.actions-label.actions-button-bold{font-weight:600}.actions-button{cursor:pointer;display:flex;color:var(--f7-actions-button-text-color,var(--f7-theme-color));font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);justify-content:var(--f7-actions-button-justify-content);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button-media{flex-shrink:0;display:flex;align-items:center}.actions-button-media i.icon{width:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);font-size:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.actions-button-text{width:100%;flex-shrink:1;text-align:var(--f7-actions-button-text-align)}.actions-label{line-height:1.3;display:flex;align-items:center;font-size:var(--f7-actions-label-font-size);color:var(--f7-actions-label-text-color);padding:var(--f7-actions-label-padding);justify-content:var(--f7-actions-label-justify-content);min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height))}.actions-label[class*=' color-']{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;border-radius:0;background:var(--f7-actions-bg-color);margin-top:0}.actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{border-radius:0!important;background:0 0}.actions-grid .actions-button{width:33.33333333%;display:block;color:var(--f7-actions-grid-button-text-color);height:auto;line-height:1;padding:16px}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important;width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size);font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{margin-left:0!important;text-align:center!important;margin-top:8px;line-height:1.33em;height:1.33em;font-size:var(--f7-actions-grid-button-font-size)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-grid .actions-group{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}.md .actions-button{transition-duration:.3s}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}.aurora .actions-button-media{margin-left:16px}.aurora .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}
\ No newline at end of file
+:root{--f7-actions-grid-button-font-size:12px;--f7-actions-grid-button-text-color:#757575;--f7-actions-grid-button-icon-size:48px}:root .theme-dark,:root.theme-dark{--f7-actions-label-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-actions-border-radius:13px;--f7-actions-button-padding:0px;--f7-actions-button-text-align:center;--f7-actions-button-height:57px;--f7-actions-button-height-landscape:44px;--f7-actions-button-font-size:20px;--f7-actions-button-icon-size:28px;--f7-actions-button-justify-content:center;--f7-actions-label-padding:8px 10px;--f7-actions-label-font-size:13px;--f7-actions-label-justify-content:center;--f7-actions-group-border-color:transparent;--f7-actions-group-margin:8px;--f7-actions-bg-color:rgba(255, 255, 255, 0.95);--f7-actions-bg-color-rgb:255,255,255;--f7-actions-button-border-color:rgba(0, 0, 0, 0.2);--f7-actions-button-pressed-bg-color:rgba(230, 230, 230, 0.9);--f7-actions-button-pressed-bg-color-rgb:230,230,230;--f7-actions-label-text-color:#8a8a8a}.ios .theme-dark,.ios.theme-dark{--f7-actions-bg-color:rgba(45, 45, 45, 0.95);--f7-actions-bg-color-rgb:45,45,45;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:rgba(50, 50, 50, 0.9);--f7-actions-button-pressed-bg-color-rgb:50,50,50}.md{--f7-actions-border-radius:0px;--f7-actions-button-border-color:transparent;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:left;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:12px 16px;--f7-actions-label-font-size:16px;--f7-actions-label-justify-content:flex-start;--f7-actions-group-margin:0px;--f7-actions-bg-color:#fff;--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.54);--f7-actions-group-border-color:rgba(0, 0, 0, 0.12)}.md .theme-dark,.md.theme-dark{--f7-actions-bg-color:#202020;--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.aurora{--f7-actions-border-radius:8px;--f7-actions-button-padding:0 16px;--f7-actions-button-text-align:center;--f7-actions-button-height:48px;--f7-actions-button-height-landscape:48px;--f7-actions-button-font-size:16px;--f7-actions-button-icon-size:24px;--f7-actions-button-justify-content:space-between;--f7-actions-label-padding:10px 16px;--f7-actions-label-font-size:14px;--f7-actions-label-justify-content:center;--f7-actions-group-margin:16px;--f7-actions-bg-color:#fff;--f7-actions-button-border-color:rgba(0, 0, 0, 0.12);--f7-actions-button-pressed-bg-color:#e5e5e5;--f7-actions-label-text-color:rgba(0, 0, 0, 0.5);--f7-actions-group-border-color:rgba(0, 0, 0, 0.1)}.aurora .theme-dark,.aurora.theme-dark{--f7-actions-bg-color:#202020;--f7-actions-button-border-color:rgba(255, 255, 255, 0.15);--f7-actions-button-pressed-bg-color:#2e2e2e;--f7-actions-group-border-color:rgba(255, 255, 255, 0.15)}.actions-modal{position:absolute;left:0;bottom:0;z-index:13500;width:100%;transform:translate3d(0,100%,0);display:none;max-height:100%;overflow:auto;-webkit-overflow-scrolling:touch;transition-property:transform;will-change:transform}.actions-modal.modal-in,.actions-modal.modal-out{transition-duration:.3s}.actions-modal.not-animated{transition-duration:0s}.actions-modal.modal-in{transform:translate3d(0,calc(-1 * var(--f7-safe-area-bottom)),0)}.actions-modal.modal-out{z-index:13499;transform:translate3d(0,100%,0)}@media (min-width:496px){.actions-modal{width:480px;left:50%;margin-left:-240px}}@media (orientation:landscape){.actions-modal{--f7-actions-button-height:var(--f7-actions-button-height-landscape)}}.actions-group{overflow:hidden;position:relative;margin:var(--f7-actions-group-margin);border-radius:var(--f7-actions-border-radius);transform:translate3d(0,0,0)}.actions-group:after{content:'';position:absolute;background-color:var(--f7-actions-group-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-group:last-child:after{display:none!important}.actions-button,.actions-label{width:100%;font-weight:400;margin:0;box-sizing:border-box;display:block;position:relative;overflow:hidden;text-align:var(--f7-actions-button-text-align);background:var(--f7-actions-bg-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button,.ios-translucent-modals .actions-label{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button:after,.actions-label:after{content:'';position:absolute;background-color:var(--f7-actions-button-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.actions-button:first-child,.actions-label:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-button:last-child,.actions-label:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-button:last-child:after,.actions-label:last-child:after{display:none!important}.actions-button:first-child:last-child,.actions-label:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-button a,.actions-label a{text-decoration:none;color:inherit;display:block}.actions-button b,.actions-button.actions-button-bold,.actions-label b,.actions-label.actions-button-bold{font-weight:600}.actions-button{cursor:pointer;display:flex;color:var(--f7-actions-button-text-color,var(--f7-theme-color));font-size:var(--f7-actions-button-font-size);height:var(--f7-actions-button-height);line-height:var(--f7-actions-button-height);padding:var(--f7-actions-button-padding);justify-content:var(--f7-actions-button-justify-content);z-index:10}.actions-button.active-state{background-color:var(--f7-actions-button-pressed-bg-color)!important}.actions-button[class*=color-]{color:var(--f7-theme-color)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-button.active-state{background-color:rgba(var(--f7-actions-button-pressed-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.actions-button-media{flex-shrink:0;display:flex;align-items:center}.actions-button-media i.icon{width:var(--f7-actions-button-icon-size);height:var(--f7-actions-button-icon-size);font-size:var(--f7-actions-button-icon-size)}.actions-button a,.actions-button-text{position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.actions-button-text{width:100%;flex-shrink:1;text-align:var(--f7-actions-button-text-align)}.actions-label{line-height:1.3;display:flex;align-items:center;font-size:var(--f7-actions-label-font-size);color:var(--f7-actions-label-text-color);padding:var(--f7-actions-label-padding);justify-content:var(--f7-actions-label-justify-content);min-height:var(--f7-actions-label-min-height,var(--f7-actions-button-height))}.actions-label[class*=' color-']{--f7-actions-label-text-color:var(--f7-theme-color)}.actions-grid .actions-group{display:flex;flex-wrap:wrap;justify-content:flex-start;border-radius:0;background:var(--f7-actions-bg-color);margin-top:0}.actions-grid .actions-group:first-child{border-radius:var(--f7-actions-border-radius) var(--f7-actions-border-radius) 0 0}.actions-grid .actions-group:last-child{border-radius:0 0 var(--f7-actions-border-radius) var(--f7-actions-border-radius)}.actions-grid .actions-group:first-child:last-child{border-radius:var(--f7-actions-border-radius)}.actions-grid .actions-group:not(:last-child){margin-bottom:0}.actions-grid .actions-button,.actions-grid .actions-label{border-radius:0!important;background:0 0}.actions-grid .actions-button{width:33.33333333%;display:block;color:var(--f7-actions-grid-button-text-color);height:auto;line-height:1;padding:16px}.actions-grid .actions-button:after{display:none!important}.actions-grid .actions-button-media{margin-left:auto!important;margin-right:auto!important;width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-media i.icon{width:var(--f7-actions-grid-button-icon-size);height:var(--f7-actions-grid-button-icon-size);font-size:var(--f7-actions-grid-button-icon-size)}.actions-grid .actions-button-text{margin-left:0!important;text-align:center!important;margin-top:8px;line-height:1.33em;height:1.33em;font-size:var(--f7-actions-grid-button-font-size)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .actions-grid .actions-group{background-color:rgba(var(--f7-actions-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.ios .actions-button-media{margin-left:16px}.ios .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}.md .actions-button{transition-duration:.3s}.md .actions-button-media{min-width:40px}.md .actions-button-media+.actions-button-text{margin-left:16px}.aurora .actions-button-media{margin-left:16px}.aurora .actions-button-media+.actions-button-text{text-align:left;margin-left:16px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/actions/actions.d.ts b/www/assets/framework7/components/actions/actions.d.ts
index 459644c00..7955963b3 100644
--- a/www/assets/framework7/components/actions/actions.d.ts
+++ b/www/assets/framework7/components/actions/actions.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Actions {
interface Actions extends Framework7EventsClass {
@@ -60,8 +56,6 @@ export namespace Actions {
backdrop?: boolean;
/** Backdrop element to share across instances */
backdropEl?: HTMLElement | CSSSelector;
- /** If enabled it creates unique backdrop element exclusively for this modal (default false) */
- backdropUnique?: boolean;
/** Custom css class added to Actions Sheet element */
cssClass?: string;
/** When enabled, action sheet will be closed on backdrop click*/
diff --git a/www/assets/framework7/components/actions/actions.js b/www/assets/framework7/components/actions/actions.js
index 9384daa76..5655f2b7a 100644
--- a/www/assets/framework7/components/actions/actions.js
+++ b/www/assets/framework7/components/actions/actions.js
@@ -1,51 +1 @@
-import Actions from './actions-class.js';
-import ModalMethods from '../../shared/modal-methods.js';
-export default {
- name: 'actions',
- params: {
- actions: {
- convertToPopover: true,
- forceToPopover: false,
- backdrop: true,
- backdropEl: undefined,
- backdropUnique: false,
- cssClass: null,
- closeByBackdropClick: true,
- closeOnEscape: false,
- render: null,
- renderPopover: null,
- containerEl: null
- }
- },
- static: {
- Actions
- },
-
- create() {
- const app = this;
- app.actions = ModalMethods({
- app,
- constructor: Actions,
- defaultSelector: '.actions-modal.modal-in'
- });
- },
-
- clicks: {
- '.actions-open': function openActions($clickedEl, data) {
- if (data === void 0) {
- data = {};
- }
-
- const app = this;
- app.actions.open(data.actions, data.animate, $clickedEl);
- },
- '.actions-close': function closeActions($clickedEl, data) {
- if (data === void 0) {
- data = {};
- }
-
- const app = this;
- app.actions.close(data.actions, data.animate, $clickedEl);
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(o,e){void 0===e&&(e=!0);var t=o.$,n=o.utils,r=o.getDevice,a=(o.getSupport,o.Class,o.Modal),s=(o.ConstructorMethods,o.ModalMethods);function i(o){this.wrapped=o}function c(o){var e,t;function n(e,t){try{var a=o[e](t),s=a.value,c=s instanceof i;Promise.resolve(c?s.wrapped:s).then((function(o){c?n("return"===e?"return":"next",o):r(a.done?"return":"normal",o)}),(function(o){n("throw",o)}))}catch(o){r("throw",o)}}function r(o,r){switch(o){case"return":e.resolve({value:r,done:!0});break;case"throw":e.reject(r);break;default:e.resolve({value:r,done:!1})}(e=e.next)?n(e.key,e.arg):t=null}this._invoke=function(o,r){return new Promise((function(a,s){var i={key:o,arg:r,resolve:a,reject:s,next:null};t?t=t.next=i:(e=t=i,n(o,r))}))},"function"!=typeof o.return&&(this.return=void 0)}function l(o,e){return(l=Object.setPrototypeOf||function(o,e){return o.__proto__=e,o})(o,e)}function p(o){if(void 0===o)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return o}c.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},c.prototype.next=function(o){return this._invoke("next",o)},c.prototype.throw=function(o){return this._invoke("throw",o)},c.prototype.return=function(o){return this._invoke("return",o)};var d=n.extend,u=n.nextTick,m=function(o){var e,n;function a(e,n){var a,s,i,c,l=d({on:{}},e.params.actions,n),m=p(a=o.call(this,e,l)||this),f=r();if(m.params=l,m.params.buttons&&(s=m.params.buttons,Array.isArray(s[0])||(s=[s])),m.groups=s,m.params.el?i=t(m.params.el).eq(0):m.params.content?i=t(m.params.content).filter((function(o){return 1===o.nodeType})).eq(0):m.params.buttons&&(m.params.convertToPopover&&(m.popoverHtml=m.renderPopover()),m.actionsHtml=m.render()),i&&i.length>0&&i[0].f7Modal)return i[0].f7Modal||p(a);if(i&&0===i.length&&!m.actionsHtml&&!m.popoverHtml)return m.destroy()||p(a);m.params.backdrop&&m.params.backdropEl?c=t(m.params.backdropEl):m.params.backdrop&&0===(c=m.$containerEl.children(".actions-backdrop")).length&&(c=t(''),m.$containerEl.append(c));var v,b=m.open,h=m.close;function k(o){var e,n,r=t(this);if(r.hasClass("list-button")||r.hasClass("item-link")?(e=r.parents("li").index(),n=r.parents(".list").index()):(e=r.index(),n=r.parents(".actions-group").index()),void 0!==s){var a=s[n][e];a.onClick&&a.onClick(m,o),m.params.onClick&&m.params.onClick(m,o),!1!==a.close&&m.close()}}function y(o){var e=o.target,n=t(e);!f.desktop&&f.cordova&&(window.Keyboard&&window.Keyboard.isVisible||window.cordova.plugins&&window.cordova.plugins.Keyboard&&window.cordova.plugins.Keyboard.isVisible)||0===n.closest(m.el).length&&(m.params.closeByBackdropClick&&m.params.backdrop&&m.backdropEl&&m.backdropEl===e||m.params.closeByOutsideClick)&&m.close()}function $(o){27===o.keyCode&&m.params.closeOnEscape&&m.close()}return m.open=function(o){var n=!1,r=m.params,a=r.targetEl,s=r.targetX,i=r.targetY,c=r.targetWidth,l=r.targetHeight;return m.params.convertToPopover&&(a||void 0!==s&&void 0!==i)&&(m.params.forceToPopover||f.ios&&f.ipad||e.width>=768||f.desktop&&"aurora"===e.theme)&&(n=!0),n&&m.popoverHtml?((v=e.popover.create({containerEl:m.params.containerEl,content:m.popoverHtml,backdrop:m.params.backdrop,targetEl:a,targetX:s,targetY:i,targetWidth:c,targetHeight:l,on:{open:function(){m.$el||(m.$el=v.$el),m.$el.trigger("modal:open "+m.type.toLowerCase()+":open"),m.emit("local::open modalOpen "+m.type+"Open",m)},opened:function(){m.$el||(m.$el=v.$el),m.$el.trigger("modal:opened "+m.type.toLowerCase()+":opened"),m.emit("local::opened modalOpened "+m.type+"Opened",m)},close:function(){m.$el||(m.$el=v.$el),m.$el.trigger("modal:close "+m.type.toLowerCase()+":close"),m.emit("local::close modalClose "+m.type+"Close",m)},closed:function(){m.$el||(m.$el=v.$el),m.$el.trigger("modal:closed "+m.type.toLowerCase()+":closed"),m.emit("local::closed modalClosed "+m.type+"Closed",m)}}})).open(o),v.once("popoverOpened",(function(){v.$el.find(".list-button, .item-link").each((function(o){t(o).on("click",k)}))})),v.once("popoverClosed",(function(){v.$el.find(".list-button, .item-link").each((function(o){t(o).off("click",k)})),u((function(){v.destroy(),v=void 0}))}))):(m.$el=m.actionsHtml?t(m.actionsHtml):m.$el,m.$el[0].f7Modal=m,m.groups&&(m.$el.find(".actions-button").each((function(o){t(o).on("click",k)})),m.once("actionsClosed",(function(){m.$el.find(".actions-button").each((function(o){t(o).off("click",k)}))}))),m.el=m.$el[0],b.call(m,o)),m},m.close=function(o){return v?v.close(o):h.call(m,o),m},d(m,{app:e,$el:i,el:i?i[0]:void 0,$backdropEl:c,backdropEl:c&&c[0],type:"actions"}),m.params.closeOnEscape&&(m.on("open",(function(){t(document).on("keydown",$)})),m.on("close",(function(){t(document).off("keydown",$)}))),m.on("opened",(function(){(m.params.closeByBackdropClick||m.params.closeByOutsideClick)&&e.on("click",y)})),m.on("close",(function(){(m.params.closeByBackdropClick||m.params.closeByOutsideClick)&&e.off("click",y)})),i&&(i[0].f7Modal=m),m||p(a)}n=o,(e=a).prototype=Object.create(n.prototype),e.prototype.constructor=e,l(e,n);var s=a.prototype;return s.render=function(){var o=this;if(o.params.render)return o.params.render.call(o,o);var e=o.groups,t=o.params.cssClass;return $jsx("div",{class:"actions-modal"+(o.params.grid?" actions-grid":"")+" "+(t||"")},e.map((function(o){return $jsx("div",{class:"actions-group"},o.map((function(o){var e=["actions-"+(o.label?"label":"button")],t=o.color,n=o.bg,r=o.bold,a=o.disabled,s=o.label,i=o.text,c=o.icon;return t&&e.push("color-"+t),n&&e.push("bg-color-"+n),r&&e.push("actions-button-bold"),a&&e.push("disabled"),s?$jsx("div",{class:e.join(" ")},i):$jsx("div",{class:e.join(" ")},c&&$jsx("div",{class:"actions-button-media"},c),$jsx("div",{class:"actions-button-text"},i))})))})))},s.renderPopover=function(){var o=this;if(o.params.renderPopover)return o.params.renderPopover.call(o,o);var e=o.groups,t=o.params.cssClass;return $jsx("div",{class:"popover popover-from-actions "+(t||"")},$jsx("div",{class:"popover-inner"},e.map((function(o){return $jsx("div",{class:"list"},$jsx("ul",null,o.map((function(o){var e=[],t=o.color,n=o.bg,r=o.bold,a=o.disabled,s=o.label,i=o.text,c=o.icon;return t&&e.push("color-"+t),n&&e.push("bg-color-"+n),r&&e.push("popover-from-actions-bold"),a&&e.push("disabled"),s?(e.push("popover-from-actions-label"),'- '+i+"
"):c?(e.push("item-link item-content"),$jsx("li",null,$jsx("a",{class:e.join(" ")},$jsx("div",{class:"item-media"},c),$jsx("div",{class:"item-inner"},$jsx("div",{class:"item-title"},i))))):(e.push("list-button"),$jsx("li",null,$jsx("a",{class:e.join(" ")},i)))}))))}))))},a}(a),f={name:"actions",params:{actions:{convertToPopover:!0,forceToPopover:!1,backdrop:!0,backdropEl:void 0,cssClass:null,closeByBackdropClick:!0,closeOnEscape:!1,render:null,renderPopover:null,containerEl:null}},static:{Actions:m},create:function(){this.actions=s({app:this,constructor:m,defaultSelector:".actions-modal.modal-in"})},clicks:{".actions-open":function(o,e){void 0===e&&(e={});this.actions.open(e.actions,e.animate,o)},".actions-close":function(o,e){void 0===e&&(e={});this.actions.close(e.actions,e.animate,o)}}};if(e){if(o.prototype.modules&&o.prototype.modules[f.name])return;o.use(f),o.instance&&(o.instance.useModuleParams(f,o.instance.params),o.instance.useModule(f))}return f}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/actions/actions.lazy.js b/www/assets/framework7/components/actions/actions.lazy.js
deleted file mode 100644
index 78caec063..000000000
--- a/www/assets/framework7/components/actions/actions.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(o,e){void 0===e&&(e=!0);var a=o.$,s=o.utils,t=o.getDevice,l=(o.getSupport,o.Class,o.Modal),n=(o.ConstructorMethods,o.ModalMethods),r=o.$jsx,c=s.extend,i=s.nextTick;class p extends l{constructor(o,e){const s=c({on:{}},o.params.actions,e);super(o,s);const l=this,n=t();let r,p,d;if(l.params=s,l.params.buttons&&(r=l.params.buttons,Array.isArray(r[0])||(r=[r])),l.groups=r,l.params.el?p=a(l.params.el).eq(0):l.params.content?p=a(l.params.content).filter((o=>1===o.nodeType)).eq(0):l.params.buttons&&(l.params.convertToPopover&&(l.popoverHtml=l.renderPopover()),l.actionsHtml=l.render()),p&&p.length>0&&p[0].f7Modal)return p[0].f7Modal;if(p&&0===p.length&&!l.actionsHtml&&!l.popoverHtml)return l.destroy();l.params.backdrop&&l.params.backdropEl?d=a(l.params.backdropEl):l.params.backdrop&&(l.params.backdropUnique?(d=a(''),l.$containerEl.append(d)):d=l.$containerEl.children(".actions-backdrop"),0===d.length&&(d=a(''),l.$containerEl.append(d)));const m=l.open,u=l.close;let v;function b(o){const e=a(this);let s,t;if(e.hasClass("list-button")||e.hasClass("item-link")?(s=e.parents("li").index(),t=e.parents(".list").index()):(s=e.index(),t=e.parents(".actions-group").index()),void 0!==r){const e=r[t][s];e.onClick&&e.onClick(l,o),l.params.onClick&&l.params.onClick(l,o),!1!==e.close&&l.close()}}function k(o){const e=o.target,s=a(e);!n.desktop&&n.cordova&&(window.Keyboard&&window.Keyboard.isVisible||window.cordova.plugins&&window.cordova.plugins.Keyboard&&window.cordova.plugins.Keyboard.isVisible)||0===s.closest(l.el).length&&(l.params.closeByBackdropClick&&l.params.backdrop&&l.backdropEl&&l.backdropEl===e||l.params.closeByOutsideClick)&&l.close()}function $(o){27===o.keyCode&&l.params.closeOnEscape&&l.close()}return l.open=function(e){let s=!1;const{targetEl:t,targetX:r,targetY:c,targetWidth:p,targetHeight:d}=l.params;return l.params.convertToPopover&&(t||void 0!==r&&void 0!==c)&&(l.params.forceToPopover||n.ios&&n.ipad||o.width>=768||n.desktop&&"aurora"===o.theme)&&(s=!0),s&&l.popoverHtml?(v=o.popover.create({containerEl:l.params.containerEl,content:l.popoverHtml,backdrop:l.params.backdrop,targetEl:t,targetX:r,targetY:c,targetWidth:p,targetHeight:d,on:{open(){l.$el||(l.$el=v.$el),l.$el.trigger(`modal:open ${l.type.toLowerCase()}:open`),l.emit(`local::open modalOpen ${l.type}Open`,l)},opened(){l.$el||(l.$el=v.$el),l.$el.trigger(`modal:opened ${l.type.toLowerCase()}:opened`),l.emit(`local::opened modalOpened ${l.type}Opened`,l)},close(){l.$el||(l.$el=v.$el),l.$el.trigger(`modal:close ${l.type.toLowerCase()}:close`),l.emit(`local::close modalClose ${l.type}Close`,l)},closed(){l.$el||(l.$el=v.$el),l.$el.trigger(`modal:closed ${l.type.toLowerCase()}:closed`),l.emit(`local::closed modalClosed ${l.type}Closed`,l)}}}),v.open(e),v.once("popoverOpened",(()=>{v.$el.find(".list-button, .item-link").each((o=>{a(o).on("click",b)}))})),v.once("popoverClosed",(()=>{v.$el.find(".list-button, .item-link").each((o=>{a(o).off("click",b)})),i((()=>{v.destroy(),v=void 0}))}))):(l.$el=l.actionsHtml?a(l.actionsHtml):l.$el,l.$el[0].f7Modal=l,l.groups&&(l.$el.find(".actions-button").each((o=>{a(o).on("click",b)})),l.once("actionsClosed",(()=>{l.$el.find(".actions-button").each((o=>{a(o).off("click",b)}))}))),l.el=l.$el[0],m.call(l,e)),l},l.close=function(o){return v?v.close(o):u.call(l,o),l},c(l,{app:o,$el:p,el:p?p[0]:void 0,$backdropEl:d,backdropEl:d&&d[0],type:"actions"}),l.params.closeOnEscape&&(l.on("open",(()=>{a(document).on("keydown",$)})),l.on("close",(()=>{a(document).off("keydown",$)}))),l.on("opened",(()=>{(l.params.closeByBackdropClick||l.params.closeByOutsideClick)&&o.on("click",k)})),l.on("close",(()=>{(l.params.closeByBackdropClick||l.params.closeByOutsideClick)&&o.off("click",k)})),p&&(p[0].f7Modal=l),l}render(){const o=this;if(o.params.render)return o.params.render.call(o,o);const{groups:e}=o,a=o.params.cssClass;return r("div",{class:`actions-modal${o.params.grid?" actions-grid":""} ${a||""}`},e.map((o=>r("div",{class:"actions-group"},o.map((o=>{const e=["actions-"+(o.label?"label":"button")],{color:a,bg:s,bold:t,disabled:l,label:n,text:c,icon:i}=o;return a&&e.push(`color-${a}`),s&&e.push(`bg-color-${s}`),t&&e.push("actions-button-bold"),l&&e.push("disabled"),n?r("div",{class:e.join(" ")},c):r("div",{class:e.join(" ")},i&&r("div",{class:"actions-button-media"},i),r("div",{class:"actions-button-text"},c))}))))))}renderPopover(){const o=this;if(o.params.renderPopover)return o.params.renderPopover.call(o,o);const{groups:e}=o,a=o.params.cssClass;return r("div",{class:`popover popover-from-actions ${a||""}`},r("div",{class:"popover-inner"},e.map((o=>r("div",{class:"list"},r("ul",null,o.map((o=>{const e=[],{color:a,bg:s,bold:t,disabled:l,label:n,text:c,icon:i}=o;return a&&e.push(`color-${a}`),s&&e.push(`bg-color-${s}`),t&&e.push("popover-from-actions-bold"),l&&e.push("disabled"),n?(e.push("popover-from-actions-label"),`- ${c}
`):i?(e.push("item-link item-content"),r("li",null,r("a",{class:e.join(" ")},r("div",{class:"item-media"},i),r("div",{class:"item-inner"},r("div",{class:"item-title"},c))))):(e.push("list-button"),r("li",null,r("a",{class:e.join(" ")},c)))}))))))))}}var d={name:"actions",params:{actions:{convertToPopover:!0,forceToPopover:!1,backdrop:!0,backdropEl:void 0,backdropUnique:!1,cssClass:null,closeByBackdropClick:!0,closeOnEscape:!1,render:null,renderPopover:null,containerEl:null}},static:{Actions:p},create(){this.actions=n({app:this,constructor:p,defaultSelector:".actions-modal.modal-in"})},clicks:{".actions-open":function(o,e){void 0===e&&(e={});this.actions.open(e.actions,e.animate,o)},".actions-close":function(o,e){void 0===e&&(e={});this.actions.close(e.actions,e.animate,o)}}};if(e){if(o.prototype.modules&&o.prototype.modules[d.name])return;o.use(d),o.instance&&(o.instance.useModuleParams(d,o.instance.params),o.instance.useModule(d))}return d}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/actions/actions.less b/www/assets/framework7/components/actions/actions.less
index e46532285..c9aede298 100644
--- a/www/assets/framework7/components/actions/actions.less
+++ b/www/assets/framework7/components/actions/actions.less
@@ -1,9 +1,6 @@
/* === Actions === */
@import './actions-vars.less';
.actions-backdrop {
- &-unique {
- z-index: 13500;
- }
}
.actions-modal {
position: absolute;
diff --git a/www/assets/framework7/components/actions/package.json b/www/assets/framework7/components/actions/package.json
new file mode 100644
index 000000000..486bb60dc
--- /dev/null
+++ b/www/assets/framework7/components/actions/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/actions",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/actions/actions.js",
+ "module": "../../esm/components/actions/actions.js",
+ "jsnext:main": "../../esm/components/actions/actions.js",
+ "typings": "../../types/components/actions/actions.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/app/app-class.d.ts b/www/assets/framework7/components/app/app-class.d.ts
index ba051dfb3..676d15757 100644
--- a/www/assets/framework7/components/app/app-class.d.ts
+++ b/www/assets/framework7/components/app/app-class.d.ts
@@ -1,14 +1,11 @@
import { Dom7, Dom7Array } from 'dom7';
-import { Router } from '../../modules/router/router.js';
-import { DeviceParams, Device } from '../../shared/get-device.js';
-import { Support } from '../../shared/get-support.js';
-import { Request } from '../../shared/request.js';
-import { Utils } from '../../shared/utils.js';
-import {
- ComponentClass,
- ComponentFunction as Component,
-} from '../../modules/component/component.js';
-import { StoreObject, StoreParameters } from '../../modules/store/store.js';
+import { Router } from '../../modules/router/router';
+import { DeviceParams, Device } from '../../shared/get-device';
+import { Support } from '../../shared/get-support';
+import { Request } from '../../shared/request';
+import { Utils } from '../../shared/utils';
+import { ComponentClass, ComponentFunction as Component } from '../../modules/component/component';
+import { StoreObject, StoreParameters } from '../../modules/store/store';
// Css Selector string is an option on many F7 methods
// Giving this alias makes the typename show in the intellisense
@@ -56,8 +53,8 @@ export interface Framework7Parameters {
language?: string;
/** Array with default routes to all views.. (default []) */
routes?: Router.RouteParameters[];
- /** Enables auto dark mode */
- autoDarkMode?: boolean;
+ /** Enables auto dark theme */
+ autoDarkTheme?: boolean;
/** Lazy modules path */
lazyModulesPath?: string;
/** By default Framework7 will be initialized automatically when you call new Framework7(). If you want to prevent this behavior you can disable it with this option and then initialize it manually with init() when you need it.. (default true) */
@@ -119,8 +116,8 @@ export interface Framework7Plugin {
export interface Framework7Events {
/** Event will be fired on app initialization. Automatically after new Framework7() or after app.init() if you disabled auto init. */
init: () => void;
- /** Event will be fired on device preferred color scheme change. It has effect only when `autoDarkMode` enabled */
- darkModeChange: (isDark: boolean) => void;
+ /** Event will be fired on device preferred color scheme change. It has effect only when `autoDarkTheme` enabled */
+ darkThemeChange: (isDark: boolean) => void;
/** Event will be fired when app goes online */
online: () => void;
/** Event will be fired when app goes offline */
@@ -148,8 +145,8 @@ interface Framework7 extends Framework7Class {
rtl: boolean;
/** Current app theme. Can be md, ios or aurora */
theme: string;
- /** Indicates whether the dark mode active or not. This property has effect only when `autoDarkMode` enabled */
- darkMode: boolean;
+ /** Indicates whether the dark theme active or not. This property has effect only when `autoDarkTheme` enabled */
+ darkTheme: boolean;
/** Object with app root data passed on intialization */
data: any;
/** Object with app root methods */
@@ -162,10 +159,10 @@ interface Framework7 extends Framework7Class {
$: Dom7;
/** App parameters */
params: Framework7Parameters;
- /** Enables auto dark mode detection */
- enableAutoDarkMode(): void;
- /** Disables auto dark mode detection */
- disableAutoDarkMode(): void;
+ /** Enables auto dark theme detection */
+ enableAutoDarkTheme(): void;
+ /** Disables auto dark theme detection */
+ disableAutoDarkTheme(): void;
/** Initialize app. In case you disabled auto initialization with init: false parameter */
init(): void;
/** Load module */
diff --git a/www/assets/framework7/components/app/app.less b/www/assets/framework7/components/app/app.less
index fa9ae7aa9..b8f289d02 100644
--- a/www/assets/framework7/components/app/app.less
+++ b/www/assets/framework7/components/app/app.less
@@ -34,11 +34,11 @@ body {
line-height: var(--f7-line-height);
color: var(--f7-text-color);
}
-.dark body,
-body.dark {
+.theme-dark body,
+body.theme-dark {
background: #000;
}
-.dark {
+.theme-dark {
color: var(--f7-text-color);
}
.framework7-root {
diff --git a/www/assets/framework7/components/app/package.json b/www/assets/framework7/components/app/package.json
new file mode 100644
index 000000000..f61268afd
--- /dev/null
+++ b/www/assets/framework7/components/app/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/app",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/app/app.js",
+ "module": "../../esm/components/app/app.js",
+ "jsnext:main": "../../esm/components/app/app.js",
+ "typings": "../../types/components/app/app.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/appbar/appbar.d.ts b/www/assets/framework7/components/appbar/appbar.d.ts
index cdb08133c..ffa282d52 100644
--- a/www/assets/framework7/components/appbar/appbar.d.ts
+++ b/www/assets/framework7/components/appbar/appbar.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Appbar {
interface AppMethods {}
diff --git a/www/assets/framework7/components/appbar/appbar.js b/www/assets/framework7/components/appbar/appbar.js
index 8c56938ac..d1627830e 100644
--- a/www/assets/framework7/components/appbar/appbar.js
+++ b/www/assets/framework7/components/appbar/appbar.js
@@ -1,3 +1 @@
-export default {
- name: 'appbar'
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods;var t={name:"appbar"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/appbar/appbar.lazy.js b/www/assets/framework7/components/appbar/appbar.lazy.js
deleted file mode 100644
index 66c8d5eb9..000000000
--- a/www/assets/framework7/components/appbar/appbar.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx;var t={name:"appbar"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/appbar/package.json b/www/assets/framework7/components/appbar/package.json
new file mode 100644
index 000000000..c88f21689
--- /dev/null
+++ b/www/assets/framework7/components/appbar/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/appbar",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/appbar/appbar.js",
+ "module": "../../esm/components/appbar/appbar.js",
+ "jsnext:main": "../../esm/components/appbar/appbar.js",
+ "typings": "../../types/components/appbar/appbar.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/area-chart/area-chart-class.js b/www/assets/framework7/components/area-chart/area-chart-class.js
deleted file mode 100644
index 8d9ab7857..000000000
--- a/www/assets/framework7/components/area-chart/area-chart-class.js
+++ /dev/null
@@ -1,523 +0,0 @@
-import $ from '../../shared/dom7.js';
-import { extend, deleteProps } from '../../shared/utils.js';
-import Framework7Class from '../../shared/class.js';
-/** @jsx $jsx */
-
-import $jsx from '../../shared/$jsx.js';
-
-class AreaChart extends Framework7Class {
- constructor(app, params) {
- if (params === void 0) {
- params = {};
- }
-
- super(params, [app]);
- const self = this;
- const defaults = extend({}, app.params.areaChart); // Extend defaults with modules params
-
- self.useModulesParams(defaults);
- self.params = extend(defaults, params);
- const {
- el
- } = self.params;
- if (!el) return self;
- const $el = $(el);
- if ($el.length === 0) return self;
- if ($el[0].f7AreaChart) return $el[0].f7AreaChart;
- extend(self, {
- app,
- $el,
- el: $el && $el[0],
- currentIndex: null,
- hiddenDatasets: [],
- f7Tooltip: null,
- linesOffsets: null
- });
- $el[0].f7AreaChart = self; // Install Modules
-
- self.useModules();
- self.onMouseEnter = self.onMouseEnter.bind(self);
- self.onMouseMove = self.onMouseMove.bind(self);
- self.onMouseLeave = self.onMouseLeave.bind(self);
- self.onLegendClick = self.onLegendClick.bind(self);
- self.init();
- return self;
- }
-
- getVisibleLabels() {
- const {
- maxAxisLabels,
- axisLabels
- } = this.params;
- if (!maxAxisLabels || axisLabels.length <= maxAxisLabels) return axisLabels;
- const skipStep = Math.ceil(axisLabels.length / maxAxisLabels);
- const filtered = axisLabels.filter((label, index) => index % skipStep === 0);
- return filtered;
- }
-
- getSummValues() {
- const {
- datasets
- } = this.params;
- const {
- hiddenDatasets
- } = this;
- const summValues = [];
- datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).forEach(_ref => {
- let {
- values
- } = _ref;
- values.forEach((value, valueIndex) => {
- if (!summValues[valueIndex]) summValues[valueIndex] = 0;
- summValues[valueIndex] += value;
- });
- });
- return summValues;
- }
-
- getChartData() {
- const {
- datasets,
- lineChart,
- width,
- height
- } = this.params;
- const {
- hiddenDatasets
- } = this;
- const data = [];
-
- if (!datasets.length) {
- return data;
- }
-
- const lastValues = datasets[0].values.map(() => 0);
- let maxValue = 0;
-
- if (lineChart) {
- datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).forEach(_ref2 => {
- let {
- values
- } = _ref2;
- const datasetMaxValue = Math.max(...values);
- if (datasetMaxValue > maxValue) maxValue = datasetMaxValue;
- });
- } else {
- maxValue = Math.max(...this.getSummValues());
- }
-
- datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).forEach(_ref3 => {
- let {
- label,
- values,
- color
- } = _ref3;
- const points = values.map((originalValue, valueIndex) => {
- lastValues[valueIndex] += originalValue;
- const value = lineChart ? originalValue : lastValues[valueIndex];
- const x = valueIndex / (values.length - 1) * width;
- const y = height - value / maxValue * height;
-
- if (lineChart) {
- return `${valueIndex === 0 ? 'M' : 'L'}${x},${y}`;
- }
-
- return `${x} ${y}`;
- });
-
- if (!lineChart) {
- points.push(`${width} ${height} 0 ${height}`);
- }
-
- data.push({
- label,
- points: points.join(' '),
- color
- });
- });
- return data.reverse();
- }
-
- getVerticalLines() {
- const {
- datasets,
- width
- } = this.params;
- const lines = [];
-
- if (!datasets.length) {
- return lines;
- }
-
- const values = datasets[0].values;
- values.forEach((value, valueIndex) => {
- const x = valueIndex / (values.length - 1) * width;
- lines.push(x);
- });
- return lines;
- }
-
- toggleDataset(index) {
- const {
- hiddenDatasets,
- params: {
- toggleDatasets
- }
- } = this;
- if (!toggleDatasets) return;
-
- if (hiddenDatasets.includes(index)) {
- hiddenDatasets.splice(hiddenDatasets.indexOf(index), 1);
- } else {
- hiddenDatasets.push(index);
- }
-
- if (this.$legendEl) {
- this.$legendEl.find('.area-chart-legend-item').removeClass('area-chart-legend-item-hidden');
- hiddenDatasets.forEach(i => {
- this.$legendEl.find(`.area-chart-legend-item[data-index="${i}"]`).addClass('area-chart-legend-item-hidden');
- });
- }
-
- this.update({}, true);
- }
-
- formatAxisLabel(label) {
- const {
- formatAxisLabel
- } = this.params;
- if (formatAxisLabel) return formatAxisLabel.call(this, label);
- return label;
- }
-
- formatLegendLabel(label) {
- const {
- formatLegendLabel
- } = this.params;
- if (formatLegendLabel) return formatLegendLabel.call(this, label);
- return label;
- }
-
- calcLinesOffsets() {
- const lines = this.svgEl.querySelectorAll('line');
- this.linesOffsets = [];
-
- for (let i = 0; i < lines.length; i += 1) {
- this.linesOffsets.push(lines[i].getBoundingClientRect().left);
- }
- }
-
- formatTooltip() {
- const self = this;
- const {
- currentIndex,
- hiddenDatasets,
- params: {
- datasets,
- axisLabels,
- formatTooltip,
- formatTooltipTotal,
- formatTooltipAxisLabel,
- formatTooltipDataset
- }
- } = self;
- if (currentIndex === null) return '';
- let total = 0;
- const currentValues = datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).map(dataset => ({
- color: dataset.color,
- label: dataset.label,
- value: dataset.values[currentIndex]
- }));
- currentValues.forEach(dataset => {
- total += dataset.value;
- });
-
- if (formatTooltip) {
- return formatTooltip({
- index: currentIndex,
- total,
- datasets: currentValues
- });
- }
-
- let labelText = formatTooltipAxisLabel ? formatTooltipAxisLabel.call(self, axisLabels[currentIndex]) : this.formatAxisLabel(axisLabels[currentIndex]);
- if (!labelText) labelText = '';
- const totalText = formatTooltipTotal ? formatTooltipTotal.call(self, total) : total; // prettier-ignore
-
- const datasetsText = currentValues.length > 0 ? `
- ` : ''; // prettier-ignore
-
- return `
- ${labelText}
- ${totalText}
- ${datasetsText}
- `;
- }
-
- setTooltip() {
- const self = this;
- const {
- app,
- el,
- svgEl,
- hiddenDatasets,
- currentIndex,
- params: {
- tooltip,
- datasets
- }
- } = self;
- if (!tooltip) return;
- const hasVisibleDataSets = datasets.filter((dataset, index) => !hiddenDatasets.includes(index)).length > 0;
-
- if (!hasVisibleDataSets) {
- if (self.f7Tooltip && self.f7Tooltip.hide) self.f7Tooltip.hide();
- return;
- }
-
- if (currentIndex !== null && !self.f7Tooltip) {
- self.f7Tooltip = app.tooltip.create({
- trigger: 'manual',
- containerEl: el,
- targetEl: svgEl.querySelector(`line[data-index="${currentIndex}"]`),
- text: self.formatTooltip(),
- cssClass: 'area-chart-tooltip'
- });
-
- if (self.f7Tooltip && self.f7Tooltip.show) {
- self.f7Tooltip.show();
- }
-
- return;
- }
-
- if (!self.f7Tooltip || !self.f7Tooltip.hide || !self.f7Tooltip.show) {
- return;
- }
-
- if (currentIndex !== null) {
- self.f7Tooltip.setText(self.formatTooltip());
- self.f7Tooltip.setTargetEl(svgEl.querySelector(`line[data-index="${currentIndex}"]`));
- self.f7Tooltip.show();
- } else {
- self.f7Tooltip.hide();
- }
- }
-
- setCurrentIndex(index) {
- if (index === this.currentIndex) return;
- this.currentIndex = index;
- this.$el.trigger('areachart:select', {
- index
- });
- this.emit('local::select areaChartSelect', this, index);
- this.$svgEl.find('line').removeClass('area-chart-current-line');
- this.$svgEl.find(`line[data-index="${index}"]`).addClass('area-chart-current-line');
- this.setTooltip();
- }
-
- onLegendClick(e) {
- const index = parseInt($(e.target).closest('.area-chart-legend-item').attr('data-index'), 10);
- this.toggleDataset(index);
- }
-
- onMouseEnter() {
- this.calcLinesOffsets();
- }
-
- onMouseMove(e) {
- const self = this;
-
- if (!self.linesOffsets) {
- self.calcLinesOffsets();
- }
-
- let currentLeft = e.pageX;
- if (typeof currentLeft === 'undefined') currentLeft = 0;
- const distances = self.linesOffsets.map(left => Math.abs(currentLeft - left));
- const minDistance = Math.min(...distances);
- const closestIndex = distances.indexOf(minDistance);
- self.setCurrentIndex(closestIndex);
- }
-
- onMouseLeave() {
- this.setCurrentIndex(null);
- }
-
- attachEvents() {
- const {
- svgEl,
- $el
- } = this;
- if (!svgEl) return;
- svgEl.addEventListener('mouseenter', this.onMouseEnter);
- svgEl.addEventListener('mousemove', this.onMouseMove);
- svgEl.addEventListener('mouseleave', this.onMouseLeave);
- $el.on('click', '.area-chart-legend-item', this.onLegendClick);
- }
-
- detachEvents() {
- const {
- svgEl,
- $el
- } = this;
- if (!svgEl) return;
- svgEl.removeEventListener('mouseenter', this.onMouseEnter);
- svgEl.removeEventListener('mousemove', this.onMouseMove);
- svgEl.removeEventListener('mouseleave', this.onMouseLeave);
- $el.off('click', '.area-chart-legend-item', this.onLegendClick);
- }
-
- render() {
- const self = this;
- const {
- lineChart,
- toggleDatasets,
- width,
- height,
- axis,
- axisLabels,
- legend,
- datasets
- } = self.params;
- const chartData = self.getChartData();
- const verticalLines = self.getVerticalLines();
- const visibleLegends = self.getVisibleLabels();
- const LegendItemTag = toggleDatasets ? 'button' : 'span';
- return $jsx("div", null, $jsx("svg", {
- xmlns: "http://www.w3.org/2000/svg",
- width: width,
- height: height,
- viewBox: `0 0 ${width} ${height}`,
- preserveAspectRatio: "none"
- }, chartData.map(data => lineChart ? $jsx("path", {
- stroke: data.color,
- "fill-rule": "evenodd",
- d: data.points
- }) : $jsx("polygon", {
- fill: data.color,
- "fill-rule": "evenodd",
- points: data.points
- })), verticalLines.map((line, index) => $jsx("line", {
- "data-index": index,
- fill: "#000",
- x1: line,
- y1: 0,
- x2: line,
- y2: height
- }))), axis && $jsx("div", {
- class: "area-chart-axis"
- }, axisLabels.map(label => $jsx("span", null, visibleLegends.includes(label) && $jsx("span", null, self.formatAxisLabel(label))))), legend && $jsx("div", {
- class: "area-chart-legend"
- }, datasets.map((dataset, index) => $jsx(LegendItemTag, {
- "data-index": index,
- class: `area-chart-legend-item ${toggleDatasets ? 'area-chart-legend-button' : ''}`,
- _type: toggleDatasets ? 'button' : undefined
- }, $jsx("span", {
- style: `background-color: ${dataset.color}`
- }), self.formatLegendLabel(dataset.label)))));
- }
-
- update(newParams, onlySvg) {
- if (newParams === void 0) {
- newParams = {};
- }
-
- if (onlySvg === void 0) {
- onlySvg = false;
- }
-
- const self = this;
- const {
- params
- } = self;
- Object.keys(newParams).forEach(param => {
- if (typeof newParams[param] !== 'undefined') {
- params[param] = newParams[param];
- }
- });
- if (self.$svgEl.length === 0) return self;
- self.detachEvents();
- self.$svgEl.remove();
-
- if (!onlySvg) {
- self.$axisEl.remove();
- self.$legendEl.remove();
- }
-
- const $rendered = $(self.render());
- const $svgEl = $rendered.find('svg');
- extend(self, {
- svgEl: $svgEl && $svgEl[0],
- $svgEl
- });
-
- if (!onlySvg) {
- const $axisEl = $rendered.find('.area-chart-axis');
- const $legendEl = $rendered.find('.area-chart-legend');
- extend(self, {
- $axisEl,
- $legendEl
- });
- self.$el.append($axisEl);
- self.$el.append($legendEl);
- }
-
- self.$el.prepend($svgEl);
- self.attachEvents();
- return self;
- }
-
- init() {
- const self = this;
- const $rendered = $(self.render());
- const $svgEl = $rendered.find('svg');
- const $axisEl = $rendered.find('.area-chart-axis');
- const $legendEl = $rendered.find('.area-chart-legend');
- extend(self, {
- svgEl: $svgEl && $svgEl[0],
- $svgEl,
- $axisEl,
- $legendEl
- });
- self.$el.append($svgEl);
- self.$el.append($axisEl);
- self.$el.append($legendEl);
- self.attachEvents();
- return self;
- }
-
- destroy() {
- const self = this;
- if (!self.$el || self.destroyed) return;
- self.$el.trigger('piechart:beforedestroy');
- self.emit('local::beforeDestroy areaChartBeforeDestroy', self);
- self.detachEvents();
- self.$svgEl.remove();
- self.$axisEl.remove();
- self.$legendEl.remove();
-
- if (self.f7Tooltip && self.f7Tooltip.destroy) {
- self.f7Tooltip.destroy();
- }
-
- delete self.$el[0].f7AreaChart;
- deleteProps(self);
- self.destroyed = true;
- }
-
-}
-
-export default AreaChart;
\ No newline at end of file
diff --git a/www/assets/framework7/components/area-chart/area-chart-rtl.css b/www/assets/framework7/components/area-chart/area-chart-rtl.css
index a7b316138..87cd29ff3 100644
--- a/www/assets/framework7/components/area-chart/area-chart-rtl.css
+++ b/www/assets/framework7/components/area-chart/area-chart-rtl.css
@@ -1 +1 @@
-:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255, 255, 255, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(255, 255, 255, 0.22)}.area-chart{position:relative}.area-chart svg{display:block;width:100%;font-size:0;height:auto;margin:0 auto}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{height:var(--f7-area-chart-axis-height);background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{padding-top:10px;width:0;display:flex;align-items:flex-start;justify-content:center;white-space:nowrap}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{pointer-events:none;text-align:left;font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{display:inline-block;width:var(--f7-area-chart-tooltip-color-size);height:var(--f7-area-chart-tooltip-color-size);border-radius:50%;margin-right:4px}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--f7-area-chart-legend-font-size);width:100%;margin-top:1em}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:transparent;border-radius:0;border:none;outline:0!important;cursor:pointer;font-family:inherit;font-size:inherit;box-shadow:none!important}.area-chart-legend-item{position:relative;color:var(--f7-area-chart-legend-text-color);width:auto;display:flex;align-items:center;font-weight:var(--f7-area-chart-legend-font-weight);transition-duration:.2s;padding:var(--f7-area-chart-legend-padding);border-radius:var(--f7-area-chart-legend-border-radius);overflow:hidden}.area-chart-legend-item span{width:var(--f7-area-chart-legend-color-size);height:var(--f7-area-chart-legend-color-size);margin-right:4px;border-radius:50%;transition-duration:.2s}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}
\ No newline at end of file
+:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .theme-dark,:root.theme-dark{--f7-area-chart-axis-bg-color:rgba(255, 255, 255, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(255, 255, 255, 0.22)}.area-chart{position:relative}.area-chart svg{display:block;width:100%;font-size:0;height:auto;margin:0 auto}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{height:var(--f7-area-chart-axis-height);background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{padding-top:10px;width:0;display:flex;align-items:flex-start;justify-content:center;white-space:nowrap}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{pointer-events:none;text-align:left;font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{display:inline-block;width:var(--f7-area-chart-tooltip-color-size);height:var(--f7-area-chart-tooltip-color-size);border-radius:50%;margin-right:4px}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--f7-area-chart-legend-font-size);width:100%;margin-top:1em}.area-chart-legend-button{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:transparent;border-radius:0;border:none;outline:0!important;cursor:pointer;font-family:inherit;font-size:inherit;box-shadow:none!important}.area-chart-legend-item{position:relative;color:var(--f7-area-chart-legend-text-color);width:auto;display:flex;align-items:center;font-weight:var(--f7-area-chart-legend-font-weight);transition-duration:.2s;padding:var(--f7-area-chart-legend-padding);border-radius:var(--f7-area-chart-legend-border-radius);overflow:hidden}.area-chart-legend-item span{width:var(--f7-area-chart-legend-color-size);height:var(--f7-area-chart-legend-color-size);margin-right:4px;border-radius:50%;transition-duration:.2s}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}
\ No newline at end of file
diff --git a/www/assets/framework7/components/area-chart/area-chart.css b/www/assets/framework7/components/area-chart/area-chart.css
index a7b316138..87cd29ff3 100644
--- a/www/assets/framework7/components/area-chart/area-chart.css
+++ b/www/assets/framework7/components/area-chart/area-chart.css
@@ -1 +1 @@
-:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .dark,:root.dark{--f7-area-chart-axis-bg-color:rgba(255, 255, 255, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(255, 255, 255, 0.22)}.area-chart{position:relative}.area-chart svg{display:block;width:100%;font-size:0;height:auto;margin:0 auto}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{height:var(--f7-area-chart-axis-height);background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{padding-top:10px;width:0;display:flex;align-items:flex-start;justify-content:center;white-space:nowrap}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{pointer-events:none;text-align:left;font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{display:inline-block;width:var(--f7-area-chart-tooltip-color-size);height:var(--f7-area-chart-tooltip-color-size);border-radius:50%;margin-right:4px}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--f7-area-chart-legend-font-size);width:100%;margin-top:1em}.area-chart-legend-button{-webkit-appearance:none!important;appearance:none!important;background-color:transparent;border-radius:0;border:none;outline:0!important;cursor:pointer;font-family:inherit;font-size:inherit;box-shadow:none!important}.area-chart-legend-item{position:relative;color:var(--f7-area-chart-legend-text-color);width:auto;display:flex;align-items:center;font-weight:var(--f7-area-chart-legend-font-weight);transition-duration:.2s;padding:var(--f7-area-chart-legend-padding);border-radius:var(--f7-area-chart-legend-border-radius);overflow:hidden}.area-chart-legend-item span{width:var(--f7-area-chart-legend-color-size);height:var(--f7-area-chart-legend-color-size);margin-right:4px;border-radius:50%;transition-duration:.2s}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}
\ No newline at end of file
+:root{--f7-area-chart-current-line-stroke-width:2px;--f7-area-chart-current-line-stroke:rgba(0, 0, 0, 0.15);--f7-area-chart-axis-text-color:inherit;--f7-area-chart-axis-height:1px;--f7-area-chart-axis-font-size:10px;--f7-area-chart-axis-font-weight:500;--f7-area-chart-tooltip-font-size:12px;--f7-area-chart-tooltip-total-label-text-color:rgba(255, 255, 255, 0.75);--f7-area-chart-tooltip-total-font-size:16px;--f7-area-chart-tooltip-total-font-weight:bold;--f7-area-chart-tooltip-color-size:10px;--f7-area-chart-legend-font-size:14px;--f7-area-chart-legend-font-weight:500;--f7-area-chart-legend-text-color:inherit;--f7-area-chart-legend-padding:4px 8px;--f7-area-chart-legend-border-radius:4px;--f7-area-chart-legend-color-size:14px;--f7-area-chart-line-stroke-width:2px;--f7-area-chart-axis-bg-color:rgba(0, 0, 0, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(0, 0, 0, 0.22)}:root .theme-dark,:root.theme-dark{--f7-area-chart-axis-bg-color:rgba(255, 255, 255, 0.15);--f7-area-chart-legend-disabled-text-color:rgba(255, 255, 255, 0.22)}.area-chart{position:relative}.area-chart svg{display:block;width:100%;font-size:0;height:auto;margin:0 auto}.area-chart path{fill:none;stroke-width:var(--f7-area-chart-line-stroke-width)}.area-chart-current-line{stroke:var(--f7-area-chart-current-line-stroke);stroke-width:var(--f7-area-chart-current-line-stroke-width)}.area-chart-axis{height:var(--f7-area-chart-axis-height);background:var(--f7-area-chart-axis-bg-color);color:var(--f7-area-chart-axis-text-color);display:flex;font-size:var(--f7-area-chart-axis-font-size);font-weight:var(--f7-area-chart-axis-font-weight);justify-content:space-between;line-height:1;margin-bottom:2em}.area-chart-axis>span{padding-top:10px;width:0;display:flex;align-items:flex-start;justify-content:center;white-space:nowrap}.area-chart-axis>span:first-child{justify-content:flex-start}.area-chart-axis>span:last-child{justify-content:flex-end}.area-chart-tooltip{pointer-events:none;text-align:left;font-size:var(--f7-area-chart-tooltip-font-size);line-height:1.4}.area-chart-tooltip-label{color:var(--f7-area-chart-tooltip-total-label-text-color)}.area-chart-tooltip-total{font-size:var(--f7-area-chart-tooltip-total-font-size);font-weight:var(--f7-area-chart-tooltip-total-font-weight)}.area-chart-tooltip-list{list-style:none;margin:0;padding:0}.area-chart-tooltip-list li{white-space:nowrap}.area-chart-tooltip-list span{display:inline-block;width:var(--f7-area-chart-tooltip-color-size);height:var(--f7-area-chart-tooltip-color-size);border-radius:50%;margin-right:4px}.area-chart-axis~.area-chart-legend{margin-top:2em}.area-chart-legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;font-size:var(--f7-area-chart-legend-font-size);width:100%;margin-top:1em}.area-chart-legend-button{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:transparent;border-radius:0;border:none;outline:0!important;cursor:pointer;font-family:inherit;font-size:inherit;box-shadow:none!important}.area-chart-legend-item{position:relative;color:var(--f7-area-chart-legend-text-color);width:auto;display:flex;align-items:center;font-weight:var(--f7-area-chart-legend-font-weight);transition-duration:.2s;padding:var(--f7-area-chart-legend-padding);border-radius:var(--f7-area-chart-legend-border-radius);overflow:hidden}.area-chart-legend-item span{width:var(--f7-area-chart-legend-color-size);height:var(--f7-area-chart-legend-color-size);margin-right:4px;border-radius:50%;transition-duration:.2s}.area-chart-legend-item-hidden{color:var(--f7-area-chart-legend-disabled-text-color)}.area-chart-legend-item-hidden span{background-color:var(--f7-area-chart-legend-disabled-text-color)!important}
\ No newline at end of file
diff --git a/www/assets/framework7/components/area-chart/area-chart.d.ts b/www/assets/framework7/components/area-chart/area-chart.d.ts
index cb643a2e2..dba43966f 100644
--- a/www/assets/framework7/components/area-chart/area-chart.d.ts
+++ b/www/assets/framework7/components/area-chart/area-chart.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace AreaChart {
interface AreaChart extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/area-chart/area-chart.js b/www/assets/framework7/components/area-chart/area-chart.js
index d8a96a2a5..f735cdb41 100644
--- a/www/assets/framework7/components/area-chart/area-chart.js
+++ b/www/assets/framework7/components/area-chart/area-chart.js
@@ -1,47 +1 @@
-import $ from '../../shared/dom7.js';
-import AreaChart from './area-chart-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-export default {
- name: 'areaChart',
- params: {
- areaChart: {
- el: null,
- lineChart: false,
- datasets: [],
- axis: false,
- axisLabels: [],
- tooltip: false,
- legend: false,
- toggleDatasets: false,
- width: 640,
- height: 320,
- maxAxisLabels: 8,
- formatAxisLabel: null,
- formatLegendLabel: null,
- formatTooltip: null,
- formatTooltipAxisLabel: null,
- formatTooltipTotal: null,
- formatTooltipDataset: null
- }
- },
-
- create() {
- const app = this;
- app.areaChart = ConstructorMethods({
- defaultSelector: '.area-chart',
- constructor: AreaChart,
- app,
- domProp: 'f7AreaChart'
- });
-
- app.areaChart.update = function update(el, newParams) {
- const $el = $(el);
- if ($el.length === 0) return undefined;
- const areaChart = app.areaChart.get(el);
- if (!areaChart) return undefined;
- areaChart.update(newParams);
- return areaChart;
- };
- }
-
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,n=e.utils,r=(e.getDevice,e.getSupport,e.Class),o=(e.Modal,e.ConstructorMethods);e.ModalMethods;function i(e){this.wrapped=e}function s(e){var t,a;function n(t,a){try{var o=e[t](a),s=o.value,l=s instanceof i;Promise.resolve(l?s.wrapped:s).then((function(e){l?n("return"===t?"return":"next",e):r(o.done?"return":"normal",e)}),(function(e){n("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?n(t.key,t.arg):a=null}this._invoke=function(e,r){return new Promise((function(o,i){var s={key:e,arg:r,resolve:o,reject:i,next:null};a?a=a.next=s:(t=a=s,n(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}s.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},s.prototype.next=function(e){return this._invoke("next",e)},s.prototype.throw=function(e){return this._invoke("throw",e)},s.prototype.return=function(e){return this._invoke("return",e)};var c=n.extend,d=n.deleteProps,h=function(e){var t,n;function r(t,n){var r;void 0===n&&(n={});var o=u(r=e.call(this,n,[t])||this),i=c({},t.params.areaChart);o.useModulesParams(i),o.params=c(i,n);var s=o.params.el;if(!s)return o||u(r);var l=a(s);return 0===l.length?o||u(r):l[0].f7AreaChart?l[0].f7AreaChart||u(r):(c(o,{app:t,$el:l,el:l&&l[0],currentIndex:null,hiddenDatasets:[],f7Tooltip:null,linesOffsets:null}),l[0].f7AreaChart=o,o.useModules(),o.onMouseEnter=o.onMouseEnter.bind(o),o.onMouseMove=o.onMouseMove.bind(o),o.onMouseLeave=o.onMouseLeave.bind(o),o.onLegendClick=o.onLegendClick.bind(o),o.init(),o||u(r))}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,l(t,n);var o=r.prototype;return o.getVisibleLabels=function(){var e=this.params,t=e.maxAxisLabels,a=e.axisLabels;if(!t||a.length<=t)return a;var n=Math.ceil(a.length/t);return a.filter((function(e,t){return t%n==0}))},o.getSummValues=function(){var e=this.params.datasets,t=this.hiddenDatasets,a=[];return e.filter((function(e,a){return!t.includes(a)})).forEach((function(e){e.values.forEach((function(e,t){a[t]||(a[t]=0),a[t]+=e}))})),a},o.getChartData=function(){var e=this.params,t=e.datasets,a=e.lineChart,n=e.width,r=e.height,o=this.hiddenDatasets,i=[];if(!t.length)return i;var s=t[0].values.map((function(){return 0})),l=0;return a?t.filter((function(e,t){return!o.includes(t)})).forEach((function(e){var t=e.values,a=Math.max.apply(Math,t);a>l&&(l=a)})):l=Math.max.apply(Math,this.getSummValues()),t.filter((function(e,t){return!o.includes(t)})).forEach((function(e){var t=e.label,o=e.values,u=e.color,c=o.map((function(e,t){s[t]+=e;var i=a?e:s[t],u=t/(o.length-1)*n,c=r-i/l*r;return a?(0===t?"M":"L")+u+","+c:u+" "+c}));a||c.push(n+" "+r+" 0 "+r),i.push({label:t,points:c.join(" "),color:u})})),i.reverse()},o.getVerticalLines=function(){var e=this.params,t=e.datasets,a=e.width,n=[];if(!t.length)return n;var r=t[0].values;return r.forEach((function(e,t){var o=t/(r.length-1)*a;n.push(o)})),n},o.toggleDataset=function(e){var t=this,a=this.hiddenDatasets;this.params.toggleDatasets&&(a.includes(e)?a.splice(a.indexOf(e),1):a.push(e),this.$legendEl&&(this.$legendEl.find(".area-chart-legend-item").removeClass("area-chart-legend-item-hidden"),a.forEach((function(e){t.$legendEl.find('.area-chart-legend-item[data-index="'+e+'"]').addClass("area-chart-legend-item-hidden")}))),this.update({},!0))},o.formatAxisLabel=function(e){var t=this.params.formatAxisLabel;return t?t.call(this,e):e},o.formatLegendLabel=function(e){var t=this.params.formatLegendLabel;return t?t.call(this,e):e},o.calcLinesOffsets=function(){var e=this.svgEl.querySelectorAll("line");this.linesOffsets=[];for(var t=0;t'+h+'\n '+(s?s.call(e,c):c)+"
\n "+(d.length>0?'\n ":"")+"\n "},o.setTooltip=function(){var e=this,t=e.app,a=e.el,n=e.svgEl,r=e.hiddenDatasets,o=e.currentIndex,i=e.params,s=i.tooltip,l=i.datasets;if(s){if(l.filter((function(e,t){return!r.includes(t)})).length>0)return null===o||e.f7Tooltip?void(e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.show&&(null!==o?(e.f7Tooltip.setText(e.formatTooltip()),e.f7Tooltip.setTargetEl(n.querySelector('line[data-index="'+o+'"]')),e.f7Tooltip.show()):e.f7Tooltip.hide())):(e.f7Tooltip=t.tooltip.create({trigger:"manual",containerEl:a,targetEl:n.querySelector('line[data-index="'+o+'"]'),text:e.formatTooltip(),cssClass:"area-chart-tooltip"}),void(e.f7Tooltip&&e.f7Tooltip.show&&e.f7Tooltip.show()));e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.hide()}},o.setCurrentIndex=function(e){e!==this.currentIndex&&(this.currentIndex=e,this.$el.trigger("areachart:select",{index:e}),this.emit("local::select areaChartSelect",this,e),this.$svgEl.find("line").removeClass("area-chart-current-line"),this.$svgEl.find('line[data-index="'+e+'"]').addClass("area-chart-current-line"),this.setTooltip())},o.onLegendClick=function(e){var t=parseInt(a(e.target).closest(".area-chart-legend-item").attr("data-index"),10);this.toggleDataset(t)},o.onMouseEnter=function(){this.calcLinesOffsets()},o.onMouseMove=function(e){var t=this;t.linesOffsets||t.calcLinesOffsets();var a=e.pageX;void 0===a&&(a=0);var n=t.linesOffsets.map((function(e){return Math.abs(a-e)})),r=Math.min.apply(Math,n),o=n.indexOf(r);t.setCurrentIndex(o)},o.onMouseLeave=function(){this.setCurrentIndex(null)},o.attachEvents=function(){var e=this.svgEl,t=this.$el;e&&(e.addEventListener("mouseenter",this.onMouseEnter),e.addEventListener("mousemove",this.onMouseMove),e.addEventListener("mouseleave",this.onMouseLeave),t.on("click",".area-chart-legend-item",this.onLegendClick))},o.detachEvents=function(){var e=this.svgEl,t=this.$el;e&&(e.removeEventListener("mouseenter",this.onMouseEnter),e.removeEventListener("mousemove",this.onMouseMove),e.removeEventListener("mouseleave",this.onMouseLeave),t.off("click",".area-chart-legend-item",this.onLegendClick))},o.render=function(){var e=this,t=e.params,a=t.lineChart,n=t.toggleDatasets,r=t.width,o=t.height,i=t.axis,s=t.axisLabels,l=t.legend,u=t.datasets,c=e.getChartData(),d=e.getVerticalLines(),h=e.getVisibleLabels(),f=n?"button":"span";return $jsx("div",null,$jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:r,height:o,viewBox:"0 0 "+r+" "+o,preserveAspectRatio:"none"},c.map((function(e){return a?$jsx("path",{stroke:e.color,"fill-rule":"evenodd",d:e.points}):$jsx("polygon",{fill:e.color,"fill-rule":"evenodd",points:e.points})})),d.map((function(e,t){return $jsx("line",{"data-index":t,fill:"#000",x1:e,y1:0,x2:e,y2:o})}))),i&&$jsx("div",{class:"area-chart-axis"},s.map((function(t){return $jsx("span",null,h.includes(t)&&$jsx("span",null,e.formatAxisLabel(t)))}))),l&&$jsx("div",{class:"area-chart-legend"},u.map((function(t,a){return $jsx(f,{"data-index":a,class:"area-chart-legend-item "+(n?"area-chart-legend-button":""),_type:n?"button":void 0},$jsx("span",{style:"background-color: "+t.color}),e.formatLegendLabel(t.label))}))))},o.update=function(e,t){void 0===e&&(e={}),void 0===t&&(t=!1);var n=this,r=n.params;if(Object.keys(e).forEach((function(t){void 0!==e[t]&&(r[t]=e[t])})),0===n.$svgEl.length)return n;n.detachEvents(),n.$svgEl.remove(),t||(n.$axisEl.remove(),n.$legendEl.remove());var o=a(n.render()),i=o.find("svg");if(c(n,{svgEl:i&&i[0],$svgEl:i}),!t){var s=o.find(".area-chart-axis"),l=o.find(".area-chart-legend");c(n,{$axisEl:s,$legendEl:l}),n.$el.append(s),n.$el.append(l)}return n.$el.prepend(i),n.attachEvents(),n},o.init=function(){var e=this,t=a(e.render()),n=t.find("svg"),r=t.find(".area-chart-axis"),o=t.find(".area-chart-legend");return c(e,{svgEl:n&&n[0],$svgEl:n,$axisEl:r,$legendEl:o}),e.$el.append(n),e.$el.append(r),e.$el.append(o),e.attachEvents(),e},o.destroy=function(){var e=this;e.$el&&!e.destroyed&&(e.$el.trigger("piechart:beforedestroy"),e.emit("local::beforeDestroy areaChartBeforeDestroy",e),e.detachEvents(),e.$svgEl.remove(),e.$axisEl.remove(),e.$legendEl.remove(),e.f7Tooltip&&e.f7Tooltip.destroy&&e.f7Tooltip.destroy(),delete e.$el[0].f7AreaChart,d(e),e.destroyed=!0)},r}(r),f={name:"areaChart",params:{areaChart:{el:null,lineChart:!1,datasets:[],axis:!1,axisLabels:[],tooltip:!1,legend:!1,toggleDatasets:!1,width:640,height:320,maxAxisLabels:8,formatAxisLabel:null,formatLegendLabel:null,formatTooltip:null,formatTooltipAxisLabel:null,formatTooltipTotal:null,formatTooltipDataset:null}},create:function(){var e=this;e.areaChart=o({defaultSelector:".area-chart",constructor:h,app:e,domProp:"f7AreaChart"}),e.areaChart.update=function(t,n){if(0!==a(t).length){var r=e.areaChart.get(t);if(r)return r.update(n),r}}}};if(t){if(e.prototype.modules&&e.prototype.modules[f.name])return;e.use(f),e.instance&&(e.instance.useModuleParams(f,e.instance.params),e.instance.useModule(f))}return f}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/area-chart/area-chart.lazy.js b/www/assets/framework7/components/area-chart/area-chart.lazy.js
deleted file mode 100644
index 84f4e70b0..000000000
--- a/www/assets/framework7/components/area-chart/area-chart.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,s=e.utils,l=(e.getDevice,e.getSupport,e.Class),n=(e.Modal,e.ConstructorMethods),o=(e.ModalMethods,e.$jsx),r=s.extend,i=s.deleteProps;class d extends l{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const s=this,l=r({},e.params.areaChart);s.useModulesParams(l),s.params=r(l,t);const{el:n}=s.params;if(!n)return s;const o=a(n);return 0===o.length?s:o[0].f7AreaChart?o[0].f7AreaChart:(r(s,{app:e,$el:o,el:o&&o[0],currentIndex:null,hiddenDatasets:[],f7Tooltip:null,linesOffsets:null}),o[0].f7AreaChart=s,s.useModules(),s.onMouseEnter=s.onMouseEnter.bind(s),s.onMouseMove=s.onMouseMove.bind(s),s.onMouseLeave=s.onMouseLeave.bind(s),s.onLegendClick=s.onLegendClick.bind(s),s.init(),s)}getVisibleLabels(){const{maxAxisLabels:e,axisLabels:t}=this.params;if(!e||t.length<=e)return t;const a=Math.ceil(t.length/e);return t.filter(((e,t)=>t%a==0))}getSummValues(){const{datasets:e}=this.params,{hiddenDatasets:t}=this,a=[];return e.filter(((e,a)=>!t.includes(a))).forEach((e=>{let{values:t}=e;t.forEach(((e,t)=>{a[t]||(a[t]=0),a[t]+=e}))})),a}getChartData(){const{datasets:e,lineChart:t,width:a,height:s}=this.params,{hiddenDatasets:l}=this,n=[];if(!e.length)return n;const o=e[0].values.map((()=>0));let r=0;return t?e.filter(((e,t)=>!l.includes(t))).forEach((e=>{let{values:t}=e;const a=Math.max(...t);a>r&&(r=a)})):r=Math.max(...this.getSummValues()),e.filter(((e,t)=>!l.includes(t))).forEach((e=>{let{label:l,values:i,color:d}=e;const h=i.map(((e,l)=>{o[l]+=e;const n=t?e:o[l],d=l/(i.length-1)*a,h=s-n/r*s;return t?`${0===l?"M":"L"}${d},${h}`:`${d} ${h}`}));t||h.push(`${a} ${s} 0 ${s}`),n.push({label:l,points:h.join(" "),color:d})})),n.reverse()}getVerticalLines(){const{datasets:e,width:t}=this.params,a=[];if(!e.length)return a;const s=e[0].values;return s.forEach(((e,l)=>{const n=l/(s.length-1)*t;a.push(n)})),a}toggleDataset(e){const{hiddenDatasets:t,params:{toggleDatasets:a}}=this;a&&(t.includes(e)?t.splice(t.indexOf(e),1):t.push(e),this.$legendEl&&(this.$legendEl.find(".area-chart-legend-item").removeClass("area-chart-legend-item-hidden"),t.forEach((e=>{this.$legendEl.find(`.area-chart-legend-item[data-index="${e}"]`).addClass("area-chart-legend-item-hidden")}))),this.update({},!0))}formatAxisLabel(e){const{formatAxisLabel:t}=this.params;return t?t.call(this,e):e}formatLegendLabel(e){const{formatLegendLabel:t}=this.params;return t?t.call(this,e):e}calcLinesOffsets(){const e=this.svgEl.querySelectorAll("line");this.linesOffsets=[];for(let t=0;t!a.includes(t))).map((e=>({color:e.color,label:e.label,value:e.values[t]})));if(h.forEach((e=>{d+=e.value})),n)return n({index:t,total:d,datasets:h});let c=r?r.call(e,l[t]):this.formatAxisLabel(l[t]);c||(c="");return`\n ${c}
\n ${o?o.call(e,d):d}
\n ${h.length>0?`\n `:""}\n `}setTooltip(){const e=this,{app:t,el:a,svgEl:s,hiddenDatasets:l,currentIndex:n,params:{tooltip:o,datasets:r}}=e;if(!o)return;if(r.filter(((e,t)=>!l.includes(t))).length>0)return null===n||e.f7Tooltip?void(e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.show&&(null!==n?(e.f7Tooltip.setText(e.formatTooltip()),e.f7Tooltip.setTargetEl(s.querySelector(`line[data-index="${n}"]`)),e.f7Tooltip.show()):e.f7Tooltip.hide())):(e.f7Tooltip=t.tooltip.create({trigger:"manual",containerEl:a,targetEl:s.querySelector(`line[data-index="${n}"]`),text:e.formatTooltip(),cssClass:"area-chart-tooltip"}),void(e.f7Tooltip&&e.f7Tooltip.show&&e.f7Tooltip.show()));e.f7Tooltip&&e.f7Tooltip.hide&&e.f7Tooltip.hide()}setCurrentIndex(e){e!==this.currentIndex&&(this.currentIndex=e,this.$el.trigger("areachart:select",{index:e}),this.emit("local::select areaChartSelect",this,e),this.$svgEl.find("line").removeClass("area-chart-current-line"),this.$svgEl.find(`line[data-index="${e}"]`).addClass("area-chart-current-line"),this.setTooltip())}onLegendClick(e){const t=parseInt(a(e.target).closest(".area-chart-legend-item").attr("data-index"),10);this.toggleDataset(t)}onMouseEnter(){this.calcLinesOffsets()}onMouseMove(e){const t=this;t.linesOffsets||t.calcLinesOffsets();let a=e.pageX;void 0===a&&(a=0);const s=t.linesOffsets.map((e=>Math.abs(a-e))),l=Math.min(...s),n=s.indexOf(l);t.setCurrentIndex(n)}onMouseLeave(){this.setCurrentIndex(null)}attachEvents(){const{svgEl:e,$el:t}=this;e&&(e.addEventListener("mouseenter",this.onMouseEnter),e.addEventListener("mousemove",this.onMouseMove),e.addEventListener("mouseleave",this.onMouseLeave),t.on("click",".area-chart-legend-item",this.onLegendClick))}detachEvents(){const{svgEl:e,$el:t}=this;e&&(e.removeEventListener("mouseenter",this.onMouseEnter),e.removeEventListener("mousemove",this.onMouseMove),e.removeEventListener("mouseleave",this.onMouseLeave),t.off("click",".area-chart-legend-item",this.onLegendClick))}render(){const e=this,{lineChart:t,toggleDatasets:a,width:s,height:l,axis:n,axisLabels:r,legend:i,datasets:d}=e.params,h=e.getChartData(),c=e.getVerticalLines(),u=e.getVisibleLabels(),p=a?"button":"span";return o("div",null,o("svg",{xmlns:"http://www.w3.org/2000/svg",width:s,height:l,viewBox:`0 0 ${s} ${l}`,preserveAspectRatio:"none"},h.map((e=>t?o("path",{stroke:e.color,"fill-rule":"evenodd",d:e.points}):o("polygon",{fill:e.color,"fill-rule":"evenodd",points:e.points}))),c.map(((e,t)=>o("line",{"data-index":t,fill:"#000",x1:e,y1:0,x2:e,y2:l})))),n&&o("div",{class:"area-chart-axis"},r.map((t=>o("span",null,u.includes(t)&&o("span",null,e.formatAxisLabel(t)))))),i&&o("div",{class:"area-chart-legend"},d.map(((t,s)=>o(p,{"data-index":s,class:"area-chart-legend-item "+(a?"area-chart-legend-button":""),_type:a?"button":void 0},o("span",{style:`background-color: ${t.color}`}),e.formatLegendLabel(t.label))))))}update(e,t){void 0===e&&(e={}),void 0===t&&(t=!1);const s=this,{params:l}=s;if(Object.keys(e).forEach((t=>{void 0!==e[t]&&(l[t]=e[t])})),0===s.$svgEl.length)return s;s.detachEvents(),s.$svgEl.remove(),t||(s.$axisEl.remove(),s.$legendEl.remove());const n=a(s.render()),o=n.find("svg");if(r(s,{svgEl:o&&o[0],$svgEl:o}),!t){const e=n.find(".area-chart-axis"),t=n.find(".area-chart-legend");r(s,{$axisEl:e,$legendEl:t}),s.$el.append(e),s.$el.append(t)}return s.$el.prepend(o),s.attachEvents(),s}init(){const e=this,t=a(e.render()),s=t.find("svg"),l=t.find(".area-chart-axis"),n=t.find(".area-chart-legend");return r(e,{svgEl:s&&s[0],$svgEl:s,$axisEl:l,$legendEl:n}),e.$el.append(s),e.$el.append(l),e.$el.append(n),e.attachEvents(),e}destroy(){const e=this;e.$el&&!e.destroyed&&(e.$el.trigger("piechart:beforedestroy"),e.emit("local::beforeDestroy areaChartBeforeDestroy",e),e.detachEvents(),e.$svgEl.remove(),e.$axisEl.remove(),e.$legendEl.remove(),e.f7Tooltip&&e.f7Tooltip.destroy&&e.f7Tooltip.destroy(),delete e.$el[0].f7AreaChart,i(e),e.destroyed=!0)}}var h={name:"areaChart",params:{areaChart:{el:null,lineChart:!1,datasets:[],axis:!1,axisLabels:[],tooltip:!1,legend:!1,toggleDatasets:!1,width:640,height:320,maxAxisLabels:8,formatAxisLabel:null,formatLegendLabel:null,formatTooltip:null,formatTooltipAxisLabel:null,formatTooltipTotal:null,formatTooltipDataset:null}},create(){const e=this;e.areaChart=n({defaultSelector:".area-chart",constructor:d,app:e,domProp:"f7AreaChart"}),e.areaChart.update=function(t,s){if(0===a(t).length)return;const l=e.areaChart.get(t);return l?(l.update(s),l):void 0}}};if(t){if(e.prototype.modules&&e.prototype.modules[h.name])return;e.use(h),e.instance&&(e.instance.useModuleParams(h,e.instance.params),e.instance.useModule(h))}return h}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/area-chart/package.json b/www/assets/framework7/components/area-chart/package.json
new file mode 100644
index 000000000..42e121059
--- /dev/null
+++ b/www/assets/framework7/components/area-chart/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/area-chart",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/area-chart/area-chart.js",
+ "module": "../../esm/components/area-chart/area-chart.js",
+ "jsnext:main": "../../esm/components/area-chart/area-chart.js",
+ "typings": "../../types/components/area-chart/area-chart.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/autocomplete/autocomplete-rtl.css b/www/assets/framework7/components/autocomplete/autocomplete-rtl.css
index 307b0e6f9..281c960fe 100644
--- a/www/assets/framework7/components/autocomplete/autocomplete-rtl.css
+++ b/www/assets/framework7/components/autocomplete/autocomplete-rtl.css
@@ -1 +1 @@
-:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size);--f7-autocomplete-dropdown-bg-color:#fff}:root .dark,:root.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:0 2px 2px rgba(0, 0, 0, 0.25);--f7-autocomplete-dropdown-text-matching-font-weight:400;--f7-autocomplete-dropdown-text-color:rgba(0, 0, 0, 0.54);--f7-autocomplete-dropdown-text-matching-color:#212121}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-color:rgba(255, 255, 255, 0.54);--f7-autocomplete-dropdown-text-matching-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-autocomplete-dropdown-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:700;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.aurora .dark,.aurora.dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;z-index:500;width:100%;right:0}.autocomplete-dropdown .autocomplete-dropdown-inner{position:relative;overflow:auto;-webkit-overflow-scrolling:touch;height:100%;z-index:1}.autocomplete-dropdown .autocomplete-preloader{display:none;position:absolute;bottom:100%;width:var(--f7-autocomplete-dropdown-preloader-size);height:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{margin:0;color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size)}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:0 0!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);position:relative;overflow:hidden}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left,0px))}.list .item-content-dropdown-expanded .item-title.item-label{width:0;flex-shrink:10;overflow:hidden}.list .item-content-dropdown-expanded .item-title.item-label+.item-input-wrap{margin-right:0}.list .item-content-dropdown-expanded .item-input-wrap{width:100%}.ios .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:12px}.ios .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.ios .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.md .autocomplete-page .navbar .autocomplete-preloader{margin-left:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-right:8px;margin-left:16px}.md .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}.aurora .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:2px}.aurora .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.aurora .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}
\ No newline at end of file
+:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size);--f7-autocomplete-dropdown-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .theme-dark,.ios.theme-dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:0 2px 2px rgba(0, 0, 0, 0.25);--f7-autocomplete-dropdown-text-matching-font-weight:400;--f7-autocomplete-dropdown-text-color:rgba(0, 0, 0, 0.54);--f7-autocomplete-dropdown-text-matching-color:#212121}.md .theme-dark,.md.theme-dark{--f7-autocomplete-dropdown-text-color:rgba(255, 255, 255, 0.54);--f7-autocomplete-dropdown-text-matching-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-autocomplete-dropdown-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:700;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.aurora .theme-dark,.aurora.theme-dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;z-index:500;width:100%;right:0}.autocomplete-dropdown .autocomplete-dropdown-inner{position:relative;overflow:auto;-webkit-overflow-scrolling:touch;height:100%;z-index:1}.autocomplete-dropdown .autocomplete-preloader{display:none;position:absolute;bottom:100%;width:var(--f7-autocomplete-dropdown-preloader-size);height:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{margin:0;color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size)}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:0 0!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);position:relative;overflow:hidden}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-right:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left,0px))}.list .item-content-dropdown-expanded .item-title.item-label{width:0;flex-shrink:10;overflow:hidden}.list .item-content-dropdown-expanded .item-title.item-label+.item-input-wrap{margin-right:0}.list .item-content-dropdown-expanded .item-input-wrap{width:100%}.ios .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:12px}.ios .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.ios .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.md .autocomplete-page .navbar .autocomplete-preloader{margin-left:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-right:8px;margin-left:16px}.md .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}.aurora .autocomplete-dropdown .autocomplete-preloader{left:16px;margin-bottom:2px}.aurora .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.aurora .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}
\ No newline at end of file
diff --git a/www/assets/framework7/components/autocomplete/autocomplete.css b/www/assets/framework7/components/autocomplete/autocomplete.css
index a6a5e62f3..4363ab26c 100644
--- a/www/assets/framework7/components/autocomplete/autocomplete.css
+++ b/www/assets/framework7/components/autocomplete/autocomplete.css
@@ -1 +1 @@
-:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size);--f7-autocomplete-dropdown-bg-color:#fff}:root .dark,:root.dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .dark,.ios.dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:0 2px 2px rgba(0, 0, 0, 0.25);--f7-autocomplete-dropdown-text-matching-font-weight:400;--f7-autocomplete-dropdown-text-color:rgba(0, 0, 0, 0.54);--f7-autocomplete-dropdown-text-matching-color:#212121}.md .dark,.md.dark{--f7-autocomplete-dropdown-text-color:rgba(255, 255, 255, 0.54);--f7-autocomplete-dropdown-text-matching-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-autocomplete-dropdown-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:700;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.aurora .dark,.aurora.dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;z-index:500;width:100%;left:0}.autocomplete-dropdown .autocomplete-dropdown-inner{position:relative;overflow:auto;-webkit-overflow-scrolling:touch;height:100%;z-index:1}.autocomplete-dropdown .autocomplete-preloader{display:none;position:absolute;bottom:100%;width:var(--f7-autocomplete-dropdown-preloader-size);height:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{margin:0;color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size)}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:0 0!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);position:relative;overflow:hidden}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left,0px))}.list .item-content-dropdown-expanded .item-title.item-label{width:0;flex-shrink:10;overflow:hidden}.list .item-content-dropdown-expanded .item-title.item-label+.item-input-wrap{margin-left:0}.list .item-content-dropdown-expanded .item-input-wrap{width:100%}.ios .autocomplete-dropdown .autocomplete-preloader{right:16px;margin-bottom:12px}.ios .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.ios .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.md .autocomplete-page .navbar .autocomplete-preloader{margin-right:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:8px;margin-right:16px}.md .autocomplete-dropdown .autocomplete-preloader{right:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}.aurora .autocomplete-dropdown .autocomplete-preloader{right:16px;margin-bottom:2px}.aurora .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.aurora .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}
\ No newline at end of file
+:root{--f7-autocomplete-dropdown-placeholder-color:#a9a9a9;--f7-autocomplete-dropdown-preloader-size:20px;--f7-autocomplete-dropdown-font-size:var(--f7-list-font-size);--f7-autocomplete-dropdown-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-autocomplete-dropdown-bg-color:#1c1c1d}.ios{--f7-autocomplete-dropdown-box-shadow:0px 3px 3px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:600;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.ios .theme-dark,.ios.theme-dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.md{--f7-autocomplete-dropdown-box-shadow:0 2px 2px rgba(0, 0, 0, 0.25);--f7-autocomplete-dropdown-text-matching-font-weight:400;--f7-autocomplete-dropdown-text-color:rgba(0, 0, 0, 0.54);--f7-autocomplete-dropdown-text-matching-color:#212121}.md .theme-dark,.md.theme-dark{--f7-autocomplete-dropdown-text-color:rgba(255, 255, 255, 0.54);--f7-autocomplete-dropdown-text-matching-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-autocomplete-dropdown-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-autocomplete-dropdown-text-matching-font-weight:700;--f7-autocomplete-dropdown-text-color:#000;--f7-autocomplete-dropdown-text-matching-color:#000}.aurora .theme-dark,.aurora.theme-dark{--f7-autocomplete-dropdown-text-color:#fff;--f7-autocomplete-dropdown-text-matching-color:#fff}.autocomplete-page .autocomplete-found{display:block}.autocomplete-page .autocomplete-not-found{display:none}.autocomplete-page .autocomplete-values{display:block}.autocomplete-page .list ul:empty{display:none}.autocomplete-preloader:not(.autocomplete-preloader-visible){visibility:hidden}.autocomplete-preloader:not(.autocomplete-preloader-visible),.autocomplete-preloader:not(.autocomplete-preloader-visible) *{animation:none}.autocomplete-dropdown{background:var(--f7-autocomplete-dropdown-bg-color);box-shadow:var(--f7-autocomplete-dropdown-box-shadow);box-sizing:border-box;position:absolute;z-index:500;width:100%;left:0}.autocomplete-dropdown .autocomplete-dropdown-inner{position:relative;overflow:auto;-webkit-overflow-scrolling:touch;height:100%;z-index:1}.autocomplete-dropdown .autocomplete-preloader{display:none;position:absolute;bottom:100%;width:var(--f7-autocomplete-dropdown-preloader-size);height:var(--f7-autocomplete-dropdown-preloader-size)}.autocomplete-dropdown .autocomplete-preloader-visible{display:block}.autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-autocomplete-dropdown-placeholder-color)}.autocomplete-dropdown .list{margin:0;color:var(--f7-autocomplete-dropdown-text-color);font-size:var(--f7-autocomplete-dropdown-font-size)}.autocomplete-dropdown .list b{color:var(--f7-autocomplete-dropdown-text-matching-color);font-weight:var(--f7-autocomplete-dropdown-text-matching-font-weight)}.autocomplete-dropdown .list ul{background:0 0!important}.autocomplete-dropdown .list ul:after,.autocomplete-dropdown .list ul:before{display:none!important}.autocomplete-dropdown .autocomplete-dropdown-selected{background:var(--f7-autocomplete-dropdown-selected-bg-color,rgba(var(--f7-theme-color-rgb),.2))}.searchbar-input-wrap .autocomplete-dropdown{background-color:var(--f7-searchbar-input-bg-color,var(--f7-searchbar-bg-color));border-radius:var(--f7-searchbar-input-border-radius)}.searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-placeholder{color:var(--f7-searchbar-placeholder-color)}.searchbar-input-wrap .autocomplete-dropdown li:last-child{border-radius:0 0 var(--f7-searchbar-input-border-radius) var(--f7-searchbar-input-border-radius);position:relative;overflow:hidden}.searchbar-input-wrap .autocomplete-dropdown .item-content{padding-left:calc(var(--f7-searchbar-input-padding-horizontal) + var(--f7-searchbar-input-extra-padding-left,0px))}.list .item-content-dropdown-expanded .item-title.item-label{width:0;flex-shrink:10;overflow:hidden}.list .item-content-dropdown-expanded .item-title.item-label+.item-input-wrap{margin-left:0}.list .item-content-dropdown-expanded .item-input-wrap{width:100%}.ios .autocomplete-dropdown .autocomplete-preloader{right:16px;margin-bottom:12px}.ios .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.ios .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}.md .autocomplete-page .navbar .autocomplete-preloader{margin-right:8px}.md .autocomplete-popup .navbar .autocomplete-preloader{margin-left:8px;margin-right:16px}.md .autocomplete-dropdown .autocomplete-preloader{right:16px;margin-bottom:8px}.md .autocomplete-dropdown .autocomplete-preloader circle{stroke-width:3}.aurora .autocomplete-dropdown .autocomplete-preloader{right:16px;margin-bottom:2px}.aurora .searchbar-input-wrap .autocomplete-dropdown{margin-top:calc(-1 * var(--f7-searchbar-input-height));top:100%;z-index:20}.aurora .searchbar-input-wrap .autocomplete-dropdown .autocomplete-dropdown-inner{padding-top:var(--f7-searchbar-input-height)}
\ No newline at end of file
diff --git a/www/assets/framework7/components/autocomplete/autocomplete.d.ts b/www/assets/framework7/components/autocomplete/autocomplete.d.ts
index c105a6a48..f89ea976d 100644
--- a/www/assets/framework7/components/autocomplete/autocomplete.d.ts
+++ b/www/assets/framework7/components/autocomplete/autocomplete.d.ts
@@ -1,11 +1,7 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
-import { Searchbar } from '../searchbar/searchbar.js';
-import { View } from '../view/view.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
+import { Searchbar } from '../searchbar/searchbar';
+import { View } from '../view/view';
export namespace Autocomplete {
interface Autocomplete extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/autocomplete/autocomplete.js b/www/assets/framework7/components/autocomplete/autocomplete.js
index dd106ddb4..fc21c7b36 100644
--- a/www/assets/framework7/components/autocomplete/autocomplete.js
+++ b/www/assets/framework7/components/autocomplete/autocomplete.js
@@ -1,86 +1 @@
-import { extend } from '../../shared/utils.js';
-import Autocomplete from './autocomplete-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-export default {
- name: 'autocomplete',
- params: {
- autocomplete: {
- openerEl: undefined,
- inputEl: undefined,
- view: undefined,
- // DropDown
- dropdownContainerEl: undefined,
- dropdownPlaceholderText: undefined,
- typeahead: false,
- highlightMatches: true,
- expandInput: false,
- updateInputValueOnSelect: true,
- inputEvents: 'input',
- value: undefined,
- multiple: false,
- source: undefined,
- limit: undefined,
- valueProperty: 'id',
- textProperty: 'text',
- openIn: 'page',
- // or 'popup' or 'dropdown'
- pageBackLinkText: 'Back',
- popupCloseLinkText: 'Close',
- pageTitle: undefined,
- searchbarPlaceholder: 'Search...',
- searchbarDisableText: 'Cancel',
- searchbarDisableButton: undefined,
- searchbarSpellcheck: false,
- popupPush: false,
- popupSwipeToClose: undefined,
- animate: true,
- autoFocus: false,
- closeOnSelect: false,
- notFoundText: 'Nothing found',
- requestSourceOnOpen: false,
- // Preloader
- preloaderColor: undefined,
- preloader: false,
- // Colors
- formColorTheme: undefined,
- navbarColorTheme: undefined,
- // Routing
- routableModals: false,
- url: 'select/',
- // Custom render functions
- renderDropdown: undefined,
- renderPage: undefined,
- renderPopup: undefined,
- renderItem: undefined,
- renderSearchbar: undefined,
- renderNavbar: undefined
- }
- },
- static: {
- Autocomplete
- },
-
- create() {
- const app = this;
- app.autocomplete = extend(ConstructorMethods({
- defaultSelector: undefined,
- constructor: Autocomplete,
- app,
- domProp: 'f7Autocomplete'
- }), {
- open(autocompleteEl) {
- const ac = app.autocomplete.get(autocompleteEl);
- if (ac && ac.open) return ac.open();
- return undefined;
- },
-
- close(autocompleteEl) {
- const ac = app.autocomplete.get(autocompleteEl);
- if (ac && ac.close) return ac.close();
- return undefined;
- }
-
- });
- }
-
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);var t=e.$,a=e.utils,r=e.getDevice,n=(e.getSupport,e.Class),l=(e.Modal,e.ConstructorMethods),p=(e.ModalMethods,a.extend),s=a.id,i=a.nextTick,u=a.iosPreloaderContent,d=a.mdPreloaderContent,c=a.auroraPreloaderContent,m=a.deleteProps;function v(e){this.wrapped=e}function f(e){var o,t;function a(o,t){try{var n=e[o](t),l=n.value,p=l instanceof v;Promise.resolve(p?l.wrapped:l).then((function(e){p?a("return"===o?"return":"next",e):r(n.done?"return":"normal",e)}),(function(e){a("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":o.resolve({value:r,done:!0});break;case"throw":o.reject(r);break;default:o.resolve({value:r,done:!1})}(o=o.next)?a(o.key,o.arg):t=null}this._invoke=function(e,r){return new Promise((function(n,l){var p={key:e,arg:r,resolve:n,reject:l,next:null};t?t=t.next=p:(o=t=p,a(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function h(e,o){for(var t=0;t0&&(f=u.find("a").attr("href"))),f&&"#"!==f&&""!==f||(f=l.params.url);var h=l.params.multiple?"checkbox":"radio";p(l,{$openerEl:u,openerEl:u&&u[0],$inputEl:d,inputEl:d&&d[0],id:v,url:f,value:l.params.value||[],inputType:h,inputName:h+"-"+v,$modalEl:void 0,$dropdownEl:void 0});var $="";function b(){var e=l.$inputEl.val().trim();l.params.source&&l.params.source.call(l,e,(function(o){var t,a,r,n="",p=l.params.limit?Math.min(l.params.limit,o.length):o.length;l.items=o,l.params.highlightMatches&&(e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),t=new RegExp("("+e+")","i"));for(var s=0;s$1"):u},s)}if(""===n&&""===e&&l.params.dropdownPlaceholderText&&(n+=l.renderItem({placeholder:!0,text:l.params.dropdownPlaceholderText})),l.$dropdownEl.find("ul").html(n),l.params.typeahead){if(!a||!r)return;if(0!==a.toLowerCase().indexOf(e.toLowerCase()))return;if($.toLowerCase()===e.toLowerCase())return void(l.value=[]);if(0===$.toLowerCase().indexOf(e.toLowerCase()))return $=e,void(l.value=[]);d.val(a),d[0].setSelectionRange(e.length,a.length);var c="object"==typeof l.value[0]?l.value[0][l.params.valueProperty]:l.value[0];c&&a.toLowerCase()===c.toLowerCase()||(l.value=[r],l.emit("local::change autocompleteChange",[r]))}$=e}))}function w(){var e,o,a,r=this,n=r.value;if(t(r).parents(".autocomplete-values").length>0){if("checkbox"===l.inputType&&!r.checked){for(var p=0;p0||setTimeout((function(){l.close()}),0)}function j(){l.positionDropdown()}function P(e){if(l.opened){if(27===e.keyCode)return e.preventDefault(),void l.$inputEl.blur();if(13===e.keyCode){var o=l.$dropdownEl.find(".autocomplete-dropdown-selected label");return o.length?(e.preventDefault(),o.trigger("click"),void l.$inputEl.blur()):void(l.params.typeahead&&(e.preventDefault(),l.$inputEl.blur()))}if(40===e.keyCode||38===e.keyCode){e.preventDefault();var t,a=l.$dropdownEl.find(".autocomplete-dropdown-selected");a.length&&(t=a[40===e.keyCode?"next":"prev"]("li")).length||(t=l.$dropdownEl.find("li").eq(40===e.keyCode?0:l.$dropdownEl.find("li").length-1)),t.hasClass("autocomplete-dropdown-placeholder")||(a.removeClass("autocomplete-dropdown-selected"),t.addClass("autocomplete-dropdown-selected"))}}}function k(){for(var e,o=t(this),a=0;a0?m.left-l.offset().left:0,h=s.left-(d.length>0?m.left:0)-(r.rtl,0),$=s.top-(l.offset().top-l[0].scrollTop),g=l[0].scrollHeight-v-($+l[0].scrollTop)-a[0].offsetHeight,b=r.rtl?"padding-right":"padding-left";d.length&&!o.params.expandInput&&(c=(r.rtl?d[0].offsetWidth-h-i:h)-("md"===r.theme?16:15)),n.css({left:(d.length>0?f:h)+"px",top:$+l[0].scrollTop+u+"px",width:(d.length>0?d[0].offsetWidth:i)+"px"}),n.children(".autocomplete-dropdown-inner").css(((e={maxHeight:g+"px"})[b]=d.length>0&&!o.params.expandInput?c+"px":"",e))}},b.focus=function(){this.$el.find("input[type=search]").focus()},b.source=function(e){var o=this;if(o.params.source){var t=o.$el;o.params.source.call(o,e,(function(a){var r="",n=o.params.limit?Math.min(o.params.limit,a.length):a.length;o.items=a;for(var l=0;l0&&e.params.expandInput&&e.$inputEl.parents(".item-content").addClass("item-content-dropdown-expanded");var o=e.$inputEl.parents(".page-content");e.params.dropdownContainerEl?t(e.params.dropdownContainerEl).append(e.$dropdownEl):0===o.length?e.$dropdownEl.insertAfter(e.$inputEl):(e.positionDropdown(),o.append(e.$dropdownEl)),e.onOpen("dropdown",e.$dropdownEl),e.onOpened("dropdown",e.$dropdownEl)},b.open=function(){var e=this;return e.opened||e["open"+e.params.openIn.split("").map((function(e,o){return 0===o?e.toUpperCase():e})).join("")](),e},b.close=function(){var e=this;return e.opened?("dropdown"===e.params.openIn?(e.onClose(),e.onClosed()):e.params.routableModals&&e.view||"page"===e.openedIn?e.view.router.back({animate:e.params.animate}):(e.modal.once("modalClosed",(function(){i((function(){e.destroyed||(e.modal.destroy(),delete e.modal)}))})),e.modal.close()),e):e},b.init=function(){this.attachEvents()},b.destroy=function(){var e=this;e.emit("local::beforeDestroy autocompleteBeforeDestroy",e),e.detachEvents(),e.$inputEl&&e.$inputEl[0]&&delete e.$inputEl[0].f7Autocomplete,e.$openerEl&&e.$openerEl[0]&&delete e.$openerEl[0].f7Autocomplete,m(e),e.destroyed=!0},l=n,(v=[{key:"view",get:function(){var e,o=this,t=o.$openerEl,a=o.$inputEl,r=o.app;if(o.params.view)e=o.params.view;else if(t||a){var n=t||a;e=n.closest(".view").length&&n.closest(".view")[0].f7View}return e||(e=r.views.main),e}}])&&h(l.prototype,v),f&&h(l,f),n}(n),w={name:"autocomplete",params:{autocomplete:{openerEl:void 0,inputEl:void 0,view:void 0,dropdownContainerEl:void 0,dropdownPlaceholderText:void 0,typeahead:!1,highlightMatches:!0,expandInput:!1,updateInputValueOnSelect:!0,inputEvents:"input",value:void 0,multiple:!1,source:void 0,limit:void 0,valueProperty:"id",textProperty:"text",openIn:"page",pageBackLinkText:"Back",popupCloseLinkText:"Close",pageTitle:void 0,searchbarPlaceholder:"Search...",searchbarDisableText:"Cancel",searchbarDisableButton:void 0,searchbarSpellcheck:!1,popupPush:!1,popupSwipeToClose:void 0,animate:!0,autoFocus:!1,closeOnSelect:!1,notFoundText:"Nothing found",requestSourceOnOpen:!1,preloaderColor:void 0,preloader:!1,formColorTheme:void 0,navbarColorTheme:void 0,routableModals:!1,url:"select/",renderDropdown:void 0,renderPage:void 0,renderPopup:void 0,renderItem:void 0,renderSearchbar:void 0,renderNavbar:void 0}},static:{Autocomplete:b},create:function(){var e=this;e.autocomplete=p(l({defaultSelector:void 0,constructor:b,app:e,domProp:"f7Autocomplete"}),{open:function(o){var t=e.autocomplete.get(o);if(t&&t.open)return t.open()},close:function(o){var t=e.autocomplete.get(o);if(t&&t.close)return t.close()}})}};if(o){if(e.prototype.modules&&e.prototype.modules[w.name])return;e.use(w),e.instance&&(e.instance.useModuleParams(w,e.instance.params),e.instance.useModule(w))}return w}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/autocomplete/autocomplete.lazy.js b/www/assets/framework7/components/autocomplete/autocomplete.lazy.js
deleted file mode 100644
index 56bacd5dc..000000000
--- a/www/assets/framework7/components/autocomplete/autocomplete.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);var t=e.$,a=e.utils,r=e.getDevice,n=(e.getSupport,e.Class),l=(e.Modal,e.ConstructorMethods),p=(e.ModalMethods,e.$jsx),s=a.extend,d=a.id,i=a.nextTick,c=a.iosPreloaderContent,u=a.mdPreloaderContent,m=a.auroraPreloaderContent,h=a.deleteProps;class v extends n{constructor(e,o){void 0===o&&(o={}),super(o,[e]);const a=this;a.app=e;const n=r(),l=s({on:{}},e.params.autocomplete);let p,c;void 0===l.searchbarDisableButton&&(l.searchbarDisableButton="aurora"!==e.theme),a.useModulesParams(l),a.params=s(l,o),a.params.openerEl&&(p=t(a.params.openerEl),p.length&&(p[0].f7Autocomplete=a)),a.params.inputEl&&(c=t(a.params.inputEl),c.length&&(c[0].f7Autocomplete=a));const u=d();let m=o.url;!m&&p&&p.length&&(p.attr("href")?m=p.attr("href"):p.find("a").length>0&&(m=p.find("a").attr("href"))),m&&"#"!==m&&""!==m||(m=a.params.url);const h=a.params.multiple?"checkbox":"radio";s(a,{$openerEl:p,openerEl:p&&p[0],$inputEl:c,inputEl:c&&c[0],id:u,url:m,value:a.params.value||[],inputType:h,inputName:`${h}-${u}`,$modalEl:void 0,$dropdownEl:void 0});let v="";function f(){let e=a.$inputEl.val().trim();a.params.source&&a.params.source.call(a,e,(o=>{let t="";const r=a.params.limit?Math.min(a.params.limit,o.length):o.length;let n,l,p;a.items=o,a.params.highlightMatches&&(e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),n=new RegExp(`(${e})`,"i"));for(let e=0;e$1"):s},e)}if(""===t&&""===e&&a.params.dropdownPlaceholderText&&(t+=a.renderItem({placeholder:!0,text:a.params.dropdownPlaceholderText})),a.$dropdownEl.find("ul").html(t),a.params.typeahead){if(!l||!p)return;if(0!==l.toLowerCase().indexOf(e.toLowerCase()))return;if(v.toLowerCase()===e.toLowerCase())return void(a.value=[]);if(0===v.toLowerCase().indexOf(e.toLowerCase()))return v=e,void(a.value=[]);c.val(l),c[0].setSelectionRange(e.length,l.length);const o="object"==typeof a.value[0]?a.value[0][a.params.valueProperty]:a.value[0];o&&l.toLowerCase()===o.toLowerCase()||(a.value=[p],a.emit("local::change autocompleteChange",[p]))}v=e}))}function g(){const e=this,o=e.value;let r,n,l;if(t(e).parents(".autocomplete-values").length>0){if("checkbox"===a.inputType&&!e.checked){for(let e=0;e0||setTimeout((()=>{a.close()}),0)}function C(){a.positionDropdown()}function y(e){if(!a.opened)return;if(27===e.keyCode)return e.preventDefault(),void a.$inputEl.blur();if(13===e.keyCode){const o=a.$dropdownEl.find(".autocomplete-dropdown-selected label");return o.length?(e.preventDefault(),o.trigger("click"),void a.$inputEl.blur()):void(a.params.typeahead&&(e.preventDefault(),a.$inputEl.blur()))}if(40!==e.keyCode&&38!==e.keyCode)return;e.preventDefault();const o=a.$dropdownEl.find(".autocomplete-dropdown-selected");let t;o.length?(t=o[40===e.keyCode?"next":"prev"]("li"),t.length||(t=a.$dropdownEl.find("li").eq(40===e.keyCode?0:a.$dropdownEl.find("li").length-1))):t=a.$dropdownEl.find("li").eq(40===e.keyCode?0:a.$dropdownEl.find("li").length-1),t.hasClass("autocomplete-dropdown-placeholder")||(o.removeClass("autocomplete-dropdown-selected"),t.addClass("autocomplete-dropdown-selected"))}function P(){const e=t(this);let o;for(let t=0;t{i((()=>{a.close()}))}))},a.detachPageEvents=function(){a.$el.off("change",'input[type="radio"], input[type="checkbox"]',g)},a.useModules(),a.init(),a}get view(){const e=this,{$openerEl:o,$inputEl:t,app:a}=e;let r;if(e.params.view)r=e.params.view;else if(o||t){const e=o||t;r=e.closest(".view").length&&e.closest(".view")[0].f7View}return r||(r=a.views.main),r}positionDropdown(){const e=this,{$inputEl:o,app:a,$dropdownEl:r}=e,n=o.parents(".page-content");if(0===n.length)return;const l=o.offset(),p=o[0].offsetWidth,s=o[0].offsetHeight,d=o.parents(".list");let i;d.parents().each((e=>{if(i)return;const o=t(e);o.parent(n).length&&(i=o)}));const c=d.offset(),u=parseInt(n.css("padding-bottom"),10),m=d.length>0?c.left-n.offset().left:0,h=l.left-(d.length>0?c.left:0)-(a.rtl,0),v=l.top-(n.offset().top-n[0].scrollTop),f=n[0].scrollHeight-u-(v+n[0].scrollTop)-o[0].offsetHeight,g=a.rtl?"padding-right":"padding-left";let b;d.length&&!e.params.expandInput&&(b=(a.rtl?d[0].offsetWidth-h-p:h)-("md"===a.theme?16:15)),r.css({left:`${d.length>0?m:h}px`,top:`${v+n[0].scrollTop+s}px`,width:`${d.length>0?d[0].offsetWidth:p}px`}),r.children(".autocomplete-dropdown-inner").css({maxHeight:`${f}px`,[g]:d.length>0&&!e.params.expandInput?`${b}px`:""})}focus(){this.$el.find("input[type=search]").focus()}source(e){const o=this;if(!o.params.source)return;const{$el:t}=o;o.params.source.call(o,e,(a=>{let r="";const n=o.params.limit?Math.min(o.params.limit,a.length):a.length;o.items=a;for(let e=0;e0&&e.params.expandInput&&e.$inputEl.parents(".item-content").addClass("item-content-dropdown-expanded");const o=e.$inputEl.parents(".page-content");e.params.dropdownContainerEl?t(e.params.dropdownContainerEl).append(e.$dropdownEl):0===o.length?e.$dropdownEl.insertAfter(e.$inputEl):(e.positionDropdown(),o.append(e.$dropdownEl)),e.onOpen("dropdown",e.$dropdownEl),e.onOpened("dropdown",e.$dropdownEl)}open(){const e=this;if(e.opened)return e;return e[`open${e.params.openIn.split("").map(((e,o)=>0===o?e.toUpperCase():e)).join("")}`](),e}close(){const e=this;return e.opened?("dropdown"===e.params.openIn?(e.onClose(),e.onClosed()):e.params.routableModals&&e.view||"page"===e.openedIn?e.view.router.back({animate:e.params.animate}):(e.modal.once("modalClosed",(()=>{i((()=>{e.destroyed||(e.modal.destroy(),delete e.modal)}))})),e.modal.close()),e):e}init(){this.attachEvents()}destroy(){const e=this;e.emit("local::beforeDestroy autocompleteBeforeDestroy",e),e.detachEvents(),e.$inputEl&&e.$inputEl[0]&&delete e.$inputEl[0].f7Autocomplete,e.$openerEl&&e.$openerEl[0]&&delete e.$openerEl[0].f7Autocomplete,h(e),e.destroyed=!0}}var f={name:"autocomplete",params:{autocomplete:{openerEl:void 0,inputEl:void 0,view:void 0,dropdownContainerEl:void 0,dropdownPlaceholderText:void 0,typeahead:!1,highlightMatches:!0,expandInput:!1,updateInputValueOnSelect:!0,inputEvents:"input",value:void 0,multiple:!1,source:void 0,limit:void 0,valueProperty:"id",textProperty:"text",openIn:"page",pageBackLinkText:"Back",popupCloseLinkText:"Close",pageTitle:void 0,searchbarPlaceholder:"Search...",searchbarDisableText:"Cancel",searchbarDisableButton:void 0,searchbarSpellcheck:!1,popupPush:!1,popupSwipeToClose:void 0,animate:!0,autoFocus:!1,closeOnSelect:!1,notFoundText:"Nothing found",requestSourceOnOpen:!1,preloaderColor:void 0,preloader:!1,formColorTheme:void 0,navbarColorTheme:void 0,routableModals:!1,url:"select/",renderDropdown:void 0,renderPage:void 0,renderPopup:void 0,renderItem:void 0,renderSearchbar:void 0,renderNavbar:void 0}},static:{Autocomplete:v},create(){const e=this;e.autocomplete=s(l({defaultSelector:void 0,constructor:v,app:e,domProp:"f7Autocomplete"}),{open(o){const t=e.autocomplete.get(o);if(t&&t.open)return t.open()},close(o){const t=e.autocomplete.get(o);if(t&&t.close)return t.close()}})}};if(o){if(e.prototype.modules&&e.prototype.modules[f.name])return;e.use(f),e.instance&&(e.instance.useModuleParams(f,e.instance.params),e.instance.useModule(f))}return f}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/autocomplete/package.json b/www/assets/framework7/components/autocomplete/package.json
new file mode 100644
index 000000000..20c4d1da7
--- /dev/null
+++ b/www/assets/framework7/components/autocomplete/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/autocomplete",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/autocomplete/autocomplete.js",
+ "module": "../../esm/components/autocomplete/autocomplete.js",
+ "jsnext:main": "../../esm/components/autocomplete/autocomplete.js",
+ "typings": "../../types/components/autocomplete/autocomplete.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/badge/badge.d.ts b/www/assets/framework7/components/badge/badge.d.ts
index 3ec13d586..3e3e9b8b2 100644
--- a/www/assets/framework7/components/badge/badge.d.ts
+++ b/www/assets/framework7/components/badge/badge.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Badge {
interface AppMethods {}
diff --git a/www/assets/framework7/components/badge/package.json b/www/assets/framework7/components/badge/package.json
new file mode 100644
index 000000000..44107244f
--- /dev/null
+++ b/www/assets/framework7/components/badge/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/badge",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/badge/badge.js",
+ "module": "../../esm/components/badge/badge.js",
+ "jsnext:main": "../../esm/components/badge/badge.js",
+ "typings": "../../types/components/badge/badge.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/block/block.d.ts b/www/assets/framework7/components/block/block.d.ts
index c9ca21486..a086f3871 100644
--- a/www/assets/framework7/components/block/block.d.ts
+++ b/www/assets/framework7/components/block/block.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Block {
interface AppMethods {}
diff --git a/www/assets/framework7/components/block/package.json b/www/assets/framework7/components/block/package.json
new file mode 100644
index 000000000..93c670030
--- /dev/null
+++ b/www/assets/framework7/components/block/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/block",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/block/block.js",
+ "module": "../../esm/components/block/block.js",
+ "jsnext:main": "../../esm/components/block/block.js",
+ "typings": "../../types/components/block/block.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs-aurora.less b/www/assets/framework7/components/breadcrumbs/breadcrumbs-aurora.less
deleted file mode 100644
index 702cb1e89..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs-aurora.less
+++ /dev/null
@@ -1,2 +0,0 @@
-.aurora {
-}
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs-ios.less b/www/assets/framework7/components/breadcrumbs/breadcrumbs-ios.less
deleted file mode 100644
index 4f010d93e..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs-ios.less
+++ /dev/null
@@ -1,2 +0,0 @@
-.ios {
-}
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs-md.less b/www/assets/framework7/components/breadcrumbs/breadcrumbs-md.less
deleted file mode 100644
index 98db98e9e..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs-md.less
+++ /dev/null
@@ -1,2 +0,0 @@
-.md {
-}
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs-rtl.css b/www/assets/framework7/components/breadcrumbs/breadcrumbs-rtl.css
deleted file mode 100644
index 720b2255b..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs-rtl.css
+++ /dev/null
@@ -1 +0,0 @@
-:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-bg-color:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-item-color:rgba(0, 0, 0, 0.55);--f7-breadcrumbs-separator-color:rgba(0, 0, 0, 0.35);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-color:rgba(0, 0, 0, 0.75);--f7-breadcrumbs-collapsed-bg-color:rgba(0, 0, 0, 0.15)}:root .dark,:root.dark{--f7-breadcrumbs-item-color:rgba(255, 255, 255, 0.75);--f7-breadcrumbs-separator-color:rgba(255, 255, 255, 0.35);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-color:rgba(255, 255, 255, 0.75);--f7-breadcrumbs-collapsed-bg-color:rgba(255, 255, 255, 0.15)}.ios{--f7-breadcrumbs-separator-icon:'chevron_right_ios';--f7-breadcrumbs-font-size:17px}.md{--f7-breadcrumbs-separator-icon:'chevron_right_md';--f7-breadcrumbs-font-size:16px}.aurora{--f7-breadcrumbs-separator-icon:'chevron_right_ios';--f7-breadcrumbs-font-size:16px}.breadcrumbs{display:flex;align-items:center;justify-content:flex-start;font-size:var(--f7-breadcrumbs-font-size);overflow:auto;white-space:nowrap;padding:var(--f7-breadcrumbs-padding)}.breadcrumbs::-webkit-scrollbar{display:none;opacity:0}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{flex-shrink:0;--f7-touch-ripple-color:transparent!important}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{color:var(--f7-breadcrumbs-item-color);font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding);background-color:var(--f7-breadcrumbs-item-bg-color);display:flex;align-items:center}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{color:inherit;--f7-touch-ripple-color:transparent!important}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{color:var(--f7-breadcrumbs-separator-color);height:24px;overflow:hidden;display:flex;align-items:center}.breadcrumbs-separator::after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;content:var(--f7-breadcrumbs-separator-icon);width:12px}.ios .breadcrumbs-separator::after{font-size:12px;height:11px}.md .breadcrumbs-separator::after{font-size:18px;height:18px}.aurora .breadcrumbs-separator::after{font-size:12px;height:11px}.breadcrumbs-collapsed{display:flex;align-items:center;padding:0 6px;background:var(--f7-breadcrumbs-collapsed-bg-color);height:1em;border-radius:4px;cursor:pointer}.breadcrumbs-collapsed span,.breadcrumbs-collapsed::after,.breadcrumbs-collapsed::before{content:'';width:4px;height:4px;background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%}.breadcrumbs-collapsed span{margin:0 3px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs-vars.less b/www/assets/framework7/components/breadcrumbs/breadcrumbs-vars.less
deleted file mode 100644
index fedf90c13..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs-vars.less
+++ /dev/null
@@ -1,36 +0,0 @@
-:root {
- --f7-breadcrumbs-spacing: 12px;
- --f7-breadcrumbs-padding: 2px 0;
- --f7-breadcrumbs-item-padding: 0px;
- --f7-breadcrumbs-item-bg-color: 0px;
- --f7-breadcrumbs-item-font-weight: normal;
- --f7-breadcrumbs-item-active-font-weight: 600;
- --f7-breadcrumbs-icon-size: 24px;
-
- .light-vars({
- --f7-breadcrumbs-item-color: rgba(0,0,0,0.55);
- --f7-breadcrumbs-separator-color: rgba(0,0,0,0.35);
- --f7-breadcrumbs-item-active-color: #000;
- --f7-breadcrumbs-collapsed-color: rgba(0,0,0,0.75);
- --f7-breadcrumbs-collapsed-bg-color: rgba(0, 0, 0, 0.15);
- });
- .dark-vars({
- --f7-breadcrumbs-item-color: rgba(255,255,255,0.75);
- --f7-breadcrumbs-separator-color: rgba(255,255,255,0.35);
- --f7-breadcrumbs-item-active-color: #fff;
- --f7-breadcrumbs-collapsed-color: rgba(255,255,255,0.75);
- --f7-breadcrumbs-collapsed-bg-color: rgba(255, 255, 255, 0.15);
- });
-}
-.ios-vars({
- --f7-breadcrumbs-separator-icon: 'chevron_right_ios';
- --f7-breadcrumbs-font-size: 17px;
-});
-.md-vars({
- --f7-breadcrumbs-separator-icon: 'chevron_right_md';
- --f7-breadcrumbs-font-size: 16px;
-});
-.aurora-vars({
- --f7-breadcrumbs-separator-icon: 'chevron_right_ios';
- --f7-breadcrumbs-font-size: 16px;
-});
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs.css b/www/assets/framework7/components/breadcrumbs/breadcrumbs.css
deleted file mode 100644
index 720b2255b..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs.css
+++ /dev/null
@@ -1 +0,0 @@
-:root{--f7-breadcrumbs-spacing:12px;--f7-breadcrumbs-padding:2px 0;--f7-breadcrumbs-item-padding:0px;--f7-breadcrumbs-item-bg-color:0px;--f7-breadcrumbs-item-font-weight:normal;--f7-breadcrumbs-item-active-font-weight:600;--f7-breadcrumbs-icon-size:24px;--f7-breadcrumbs-item-color:rgba(0, 0, 0, 0.55);--f7-breadcrumbs-separator-color:rgba(0, 0, 0, 0.35);--f7-breadcrumbs-item-active-color:#000;--f7-breadcrumbs-collapsed-color:rgba(0, 0, 0, 0.75);--f7-breadcrumbs-collapsed-bg-color:rgba(0, 0, 0, 0.15)}:root .dark,:root.dark{--f7-breadcrumbs-item-color:rgba(255, 255, 255, 0.75);--f7-breadcrumbs-separator-color:rgba(255, 255, 255, 0.35);--f7-breadcrumbs-item-active-color:#fff;--f7-breadcrumbs-collapsed-color:rgba(255, 255, 255, 0.75);--f7-breadcrumbs-collapsed-bg-color:rgba(255, 255, 255, 0.15)}.ios{--f7-breadcrumbs-separator-icon:'chevron_right_ios';--f7-breadcrumbs-font-size:17px}.md{--f7-breadcrumbs-separator-icon:'chevron_right_md';--f7-breadcrumbs-font-size:16px}.aurora{--f7-breadcrumbs-separator-icon:'chevron_right_ios';--f7-breadcrumbs-font-size:16px}.breadcrumbs{display:flex;align-items:center;justify-content:flex-start;font-size:var(--f7-breadcrumbs-font-size);overflow:auto;white-space:nowrap;padding:var(--f7-breadcrumbs-padding)}.breadcrumbs::-webkit-scrollbar{display:none;opacity:0}.breadcrumbs-collapsed,.breadcrumbs-item,.breadcrumbs-separator{flex-shrink:0;--f7-touch-ripple-color:transparent!important}.breadcrumbs-collapsed+.breadcrumbs-collapsed,.breadcrumbs-collapsed+.breadcrumbs-item,.breadcrumbs-collapsed+.breadcrumbs-separator,.breadcrumbs-item+.breadcrumbs-collapsed,.breadcrumbs-item+.breadcrumbs-item,.breadcrumbs-item+.breadcrumbs-separator,.breadcrumbs-separator+.breadcrumbs-collapsed,.breadcrumbs-separator+.breadcrumbs-item,.breadcrumbs-separator+.breadcrumbs-separator{margin-left:var(--f7-breadcrumbs-spacing)}.breadcrumbs-item{color:var(--f7-breadcrumbs-item-color);font-weight:var(--f7-breadcrumbs-item-font-weight);padding:var(--f7-breadcrumbs-item-padding);background-color:var(--f7-breadcrumbs-item-bg-color);display:flex;align-items:center}.breadcrumbs-item .icon{font-size:var(--f7-breadcrumbs-icon-size);width:var(--f7-breadcrumbs-icon-size);height:var(--f7-breadcrumbs-icon-size)}.breadcrumbs-item a{color:inherit;--f7-touch-ripple-color:transparent!important}.breadcrumbs-item-active{color:var(--f7-breadcrumbs-item-active-color,var(--f7-breadcrumbs-item-color));font-weight:var(--f7-breadcrumbs-item-active-font-weight)}.breadcrumbs-separator{color:var(--f7-breadcrumbs-separator-color);height:24px;overflow:hidden;display:flex;align-items:center}.breadcrumbs-separator::after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;content:var(--f7-breadcrumbs-separator-icon);width:12px}.ios .breadcrumbs-separator::after{font-size:12px;height:11px}.md .breadcrumbs-separator::after{font-size:18px;height:18px}.aurora .breadcrumbs-separator::after{font-size:12px;height:11px}.breadcrumbs-collapsed{display:flex;align-items:center;padding:0 6px;background:var(--f7-breadcrumbs-collapsed-bg-color);height:1em;border-radius:4px;cursor:pointer}.breadcrumbs-collapsed span,.breadcrumbs-collapsed::after,.breadcrumbs-collapsed::before{content:'';width:4px;height:4px;background:var(--f7-breadcrumbs-collapsed-color);border-radius:50%}.breadcrumbs-collapsed span{margin:0 3px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs.d.ts b/www/assets/framework7/components/breadcrumbs/breadcrumbs.d.ts
deleted file mode 100644
index b92d4c7fc..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import Framework7 from '../app/app-class.js';
-import { CSSSelector, Framework7Plugin } from '../app/app-class.js';
-
-export namespace Breadcrumbs {
- interface AppMethods {
- breadcrumbs: {};
- }
- interface AppParams {}
- interface DomEvents {}
- interface AppEvents {}
-}
-
-declare const BreadcrumbsComponent: Framework7Plugin;
-
-export default BreadcrumbsComponent;
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs.js b/www/assets/framework7/components/breadcrumbs/breadcrumbs.js
deleted file mode 100644
index 721240ec5..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { bindMethods } from '../../shared/utils.js';
-const Breadcrumbs = {};
-export default {
- name: 'breadrumbs',
-
- create() {
- const app = this;
- bindMethods(app, {
- breadrumbs: Breadcrumbs
- });
- }
-
-};
\ No newline at end of file
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs.lazy.js b/www/assets/framework7/components/breadcrumbs/breadcrumbs.lazy.js
deleted file mode 100644
index 304efb79d..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);e.$;var o=e.utils,s=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,o.bindMethods);const r={};var a={name:"breadrumbs",create(){s(this,{breadrumbs:r})}};if(t){if(e.prototype.modules&&e.prototype.modules[a.name])return;e.use(a),e.instance&&(e.instance.useModuleParams(a,e.instance.params),e.instance.useModule(a))}return a}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/breadcrumbs/breadcrumbs.less b/www/assets/framework7/components/breadcrumbs/breadcrumbs.less
deleted file mode 100644
index 760ccbebb..000000000
--- a/www/assets/framework7/components/breadcrumbs/breadcrumbs.less
+++ /dev/null
@@ -1,100 +0,0 @@
-/* === Breadcrumbs === */
-@import './breadcrumbs-vars.less';
-
-.breadcrumbs {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- font-size: var(--f7-breadcrumbs-font-size);
- overflow: auto;
- white-space: nowrap;
- padding: var(--f7-breadcrumbs-padding);
- &::-webkit-scrollbar {
- display: none;
- opacity: 0;
- }
-}
-.breadcrumbs-separator,
-.breadcrumbs-item,
-.breadcrumbs-collapsed {
- flex-shrink: 0;
- --f7-touch-ripple-color: transparent !important;
- & + & {
- margin-left: var(--f7-breadcrumbs-spacing);
- }
-}
-.breadcrumbs-item {
- color: var(--f7-breadcrumbs-item-color);
- font-weight: var(--f7-breadcrumbs-item-font-weight);
- padding: var(--f7-breadcrumbs-item-padding);
- background-color: var(--f7-breadcrumbs-item-bg-color);
- display: flex;
- align-items: center;
- .icon {
- font-size: var(--f7-breadcrumbs-icon-size);
- width: var(--f7-breadcrumbs-icon-size);
- height: var(--f7-breadcrumbs-icon-size);
- }
- a {
- color: inherit;
- --f7-touch-ripple-color: transparent !important;
- }
- &-active {
- color: var(--f7-breadcrumbs-item-active-color, var(--f7-breadcrumbs-item-color));
- font-weight: var(--f7-breadcrumbs-item-active-font-weight);
- }
-}
-.breadcrumbs-separator {
- color: var(--f7-breadcrumbs-separator-color);
- height: 24px;
- overflow: hidden;
- display: flex;
- align-items: center;
- &::after {
- .core-icons-font();
- content: var(--f7-breadcrumbs-separator-icon);
- width: 12px;
- }
- .ios &::after {
- font-size: 12px;
- height: 11px;
- }
- .md &::after {
- font-size: 18px;
- height: 18px;
- }
- .aurora &::after {
- font-size: 12px;
- height: 11px;
- }
-}
-.breadcrumbs-collapsed {
- display: flex;
- align-items: center;
- padding: 0 6px;
- background: var(--f7-breadcrumbs-collapsed-bg-color);
- height: 1em;
- border-radius: 4px;
- cursor: pointer;
- &::before,
- &::after,
- span {
- content: '';
- width: 4px;
- height: 4px;
- background: var(--f7-breadcrumbs-collapsed-color);
- border-radius: 50%;
- }
- span {
- margin: 0 3px;
- }
-}
-.if-ios-theme({
- @import './breadcrumbs-ios.less';
-});
-.if-md-theme({
- @import './breadcrumbs-md.less';
-});
-.if-aurora-theme({
- @import './breadcrumbs-aurora.less';
-});
diff --git a/www/assets/framework7/components/button/button.d.ts b/www/assets/framework7/components/button/button.d.ts
index e0fa3036b..5f9c75348 100644
--- a/www/assets/framework7/components/button/button.d.ts
+++ b/www/assets/framework7/components/button/button.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Button {
interface AppMethods {}
diff --git a/www/assets/framework7/components/button/package.json b/www/assets/framework7/components/button/package.json
new file mode 100644
index 000000000..c585225d1
--- /dev/null
+++ b/www/assets/framework7/components/button/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/button",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/button/button.js",
+ "module": "../../esm/components/button/button.js",
+ "jsnext:main": "../../esm/components/button/button.js",
+ "typings": "../../types/components/button/button.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/calendar/calendar-rtl.css b/www/assets/framework7/components/calendar/calendar-rtl.css
index d9626eb82..5c30ab57a 100644
--- a/www/assets/framework7/components/calendar/calendar-rtl.css
+++ b/www/assets/framework7/components/calendar/calendar-rtl.css
@@ -1 +1 @@
-:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-modal-border-radius:4px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-selected-text-color:#fff;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-day-text-color:#000;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-modal-bg-color:#fff;--f7-calendar-picker-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-calendar-picker-hover-bg-color:rgba(0, 0, 0, 0.03);--f7-calendar-time-selector-bg-color:rgba(0, 0, 0, 0.05)}:root .dark,:root.dark{--f7-calendar-week-header-text-color:#aaa;--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-modal-bg-color:#121212;--f7-calendar-sheet-bg-color:#121212;--f7-calendar-picker-pressed-bg-color:rgba(255, 255, 255, 0.08);--f7-calendar-picker-hover-bg-color:rgba(255, 255, 255, 0.03);--f7-calendar-time-selector-bg-color:rgba(255, 255, 255, 0.1)}.ios{--f7-calendar-sheet-border-color:#929499;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:20px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px}.md .dark,.md.dark{--f7-calendar-day-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:18px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 16px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-footer-padding:0 16px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:16px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.aurora .dark,.aurora.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.calendar{overflow:hidden;height:var(--f7-calendar-height);width:100%;display:flex;flex-direction:column}.aurora .calendar{--f7-toolbar-border-color:transparent;--f7-bars-border-color:transparent}.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);padding-bottom:var(--f7-safe-area-bottom);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom))}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-header{width:100%;position:relative;overflow:hidden;flex-shrink:0;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;padding:var(--f7-calendar-header-padding);background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight)}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{width:100%;flex-shrink:0;padding:var(--f7-calendar-footer-padding);background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-footer-height);font-size:var(--f7-calendar-header-font-size);display:flex;justify-content:flex-end;box-sizing:border-box;align-items:center;position:relative}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{content:'';position:absolute;background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal{position:absolute;height:var(--f7-calendar-modal-height);overflow:hidden;top:50%;left:50%;min-width:300px;max-width:var(--f7-calendar-modal-max-width);transform:translate3d(-50%,100vh,0);transition-property:transform;display:flex;z-index:13500;background:var(--f7-calendar-modal-bg-color);width:90%;border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-elevation-24)}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{display:flex;box-sizing:border-box;position:relative;font-size:var(--f7-calendar-week-header-font-size);background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-week-header .calendar-week-day{flex-shrink:1;width:calc(100% / 7);text-align:center;line-height:var(--f7-calendar-week-header-height)}.calendar-months{width:100%;height:100%;overflow:hidden;position:relative;flex-shrink:10}.calendar-months-wrapper{position:relative;width:100%;height:100%;transition:.3s}.calendar-month{display:flex;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.calendar-row{height:16.66666667%;display:flex;flex-shrink:1;width:100%;position:relative;box-sizing:border-box;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{flex-shrink:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:14.28571429%;text-align:center;cursor:pointer;z-index:20;color:var(--f7-calendar-day-text-color);height:100%;font-size:var(--f7-calendar-day-font-size)}.calendar-day-today .calendar-day-number{color:var(--f7-calendar-today-text-color,var(--f7-theme-color));background-color:var(--f7-calendar-today-bg-color)}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{color:var(--f7-calendar-selected-text-color);background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color))}.calendar-day-number{display:inline-block;border-radius:50%;position:relative;width:var(--f7-calendar-day-size);height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size)}.calendar-day-events{position:absolute;display:flex;left:0;width:100%;top:100%;align-items:center;justify-content:center;margin-top:1px}.calendar-day-event{width:var(--f7-calendar-event-dot-size);height:var(--f7-calendar-event-dot-size);border-radius:calc(var(--f7-calendar-event-dot-size)/ 2);background-color:var(--f7-calendar-event-bg-color)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{width:100%;height:var(--f7-calendar-day-size);content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:-1;background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));opacity:.2}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-range .calendar-day-number{background-color:transparent;color:inherit}.calendar-month-selector,.calendar-year-selector{display:flex;justify-content:space-between;align-items:center;width:50%;max-width:200px;flex-shrink:10;margin-left:auto;margin-right:auto}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{position:relative;width:100%;height:100%;-webkit-user-select:none;user-select:none;background:0 0}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;cursor:pointer;transition-duration:.1s;box-sizing:border-box}.calendar-month-picker-item span,.calendar-year-picker-item span{white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;position:relative;overflow:hidden;pointer-events:none}.device-desktop.aurora .calendar-month-picker-item:hover,.device-desktop.aurora .calendar-year-picker-item:hover{background-color:var(--f7-calendar-picker-hover-bg-color)}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state,.device-desktop.aurora .calendar-month-picker-item.active-state,.device-desktop.aurora .calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{width:25%;height:33.33333333%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before{display:none!important}.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{width:33.33333333%;height:25%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(3n+1):before{display:none!important}.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{overflow:auto;--webkit-overflow-scrolling:touch}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);position:relative;display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.calendar-time-selector a{overflow:hidden;position:relative;justify-content:center;align-items:center;display:flex;box-sizing:border-box;height:var(--f7-calendar-time-selector-height);background-color:var(--f7-calendar-time-selector-bg-color);padding:0 16px;border-radius:8px}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{height:100%;display:flex;flex-direction:column}
\ No newline at end of file
+:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-modal-border-radius:4px;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-selected-text-color:#fff;--f7-calendar-prev-next-text-color:#b8b8b8;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-day-text-color:#000;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-modal-bg-color:#fff;--f7-calendar-picker-bg-color:#fff;--f7-calendar-picker-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-calendar-picker-hover-bg-color:rgba(0, 0, 0, 0.03);--f7-calendar-time-selector-bg-color:rgba(0, 0, 0, 0.1)}:root .theme-dark,:root.theme-dark{--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-modal-bg-color:#121212;--f7-calendar-sheet-bg-color:#121212;--f7-calendar-picker-bg-color:#1c1c1d;--f7-calendar-picker-pressed-bg-color:rgba(255, 255, 255, 0.08);--f7-calendar-picker-hover-bg-color:rgba(255, 255, 255, 0.03);--f7-calendar-time-selector-bg-color:rgba(255, 255, 255, 0.1)}.ios{--f7-calendar-sheet-border-color:#929499;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-row-border-color:rgba(0, 0, 0, 0.25);--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .theme-dark,.ios.theme-dark{--f7-calendar-row-border-color:var(--f7-bars-border-color);--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:20px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-row-border-color:transparent;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px}.md .theme-dark,.md.theme-dark{--f7-calendar-day-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:18px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 16px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-footer-padding:0 16px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:16px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-row-border-color:transparent;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.aurora .theme-dark,.aurora.theme-dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.calendar{overflow:hidden;height:var(--f7-calendar-height);width:100%;display:flex;flex-direction:column}.aurora .calendar{--f7-toolbar-border-color:transparent;--f7-bars-border-color:transparent}.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);padding-bottom:var(--f7-safe-area-bottom);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom))}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-header{width:100%;position:relative;overflow:hidden;flex-shrink:0;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;padding:var(--f7-calendar-header-padding);background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight)}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{width:100%;flex-shrink:0;padding:var(--f7-calendar-footer-padding);background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-footer-height);font-size:var(--f7-calendar-header-font-size);display:flex;justify-content:flex-end;box-sizing:border-box;align-items:center;position:relative}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{content:'';position:absolute;background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal{position:absolute;height:var(--f7-calendar-modal-height);overflow:hidden;top:50%;left:50%;min-width:300px;max-width:var(--f7-calendar-modal-max-width);transform:translate3d(-50%,100vh,0);transition-property:transform;display:flex;z-index:13500;background:var(--f7-calendar-modal-bg-color);width:90%;border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-elevation-24)}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{display:flex;box-sizing:border-box;position:relative;font-size:var(--f7-calendar-week-header-font-size);background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-week-header .calendar-week-day{flex-shrink:1;width:calc(100% / 7);text-align:center;line-height:var(--f7-calendar-week-header-height)}.calendar-months{width:100%;height:100%;overflow:hidden;position:relative;flex-shrink:10}.calendar-months-wrapper{position:relative;width:100%;height:100%;transition:.3s}.calendar-month{display:flex;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.calendar-row{height:16.66666667%;display:flex;flex-shrink:1;width:100%;position:relative;box-sizing:border-box;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-row:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{flex-shrink:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:14.28571429%;text-align:center;cursor:pointer;z-index:20;color:var(--f7-calendar-day-text-color);height:100%;font-size:var(--f7-calendar-day-font-size)}.calendar-day-today .calendar-day-number{color:var(--f7-calendar-today-text-color,var(--f7-theme-color));background-color:var(--f7-calendar-today-bg-color)}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{color:var(--f7-calendar-selected-text-color);background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color))}.calendar-day-number{display:inline-block;border-radius:50%;position:relative;width:var(--f7-calendar-day-size);height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size)}.calendar-day-events{position:absolute;display:flex;left:0;width:100%;top:100%;align-items:center;justify-content:center;margin-top:1px}.calendar-day-event{width:var(--f7-calendar-event-dot-size);height:var(--f7-calendar-event-dot-size);border-radius:calc(var(--f7-calendar-event-dot-size)/ 2);background-color:var(--f7-calendar-event-bg-color)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{width:100%;height:var(--f7-calendar-day-size);content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:-1;background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));opacity:.2}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-range .calendar-day-number{background-color:transparent;color:inherit}.calendar-month-selector,.calendar-year-selector{display:flex;justify-content:space-between;align-items:center;width:50%;max-width:200px;flex-shrink:10;margin-left:auto;margin-right:auto}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{position:absolute;width:100%;height:100%;left:0px;top:0px;background:var(--f7-calendar-picker-bg-color);z-index:1000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.calendar-month-picker,.calendar-year-picker{flex-wrap:wrap;font-size:var(--f7-calendar-picker-font-size);display:flex}.calendar-month-picker-item,.calendar-year-picker-item{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;cursor:pointer;transition-duration:.1s;box-sizing:border-box}.calendar-month-picker-item span,.calendar-year-picker-item span{white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;position:relative;overflow:hidden;pointer-events:none}.device-desktop.aurora .calendar-month-picker-item:hover,.device-desktop.aurora .calendar-year-picker-item:hover{background-color:var(--f7-calendar-picker-hover-bg-color)}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state,.device-desktop.aurora .calendar-month-picker-item.active-state,.device-desktop.aurora .calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.calendar-month-picker-item:after{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-month-picker-item:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;width:1px;height:100%;transform-origin:0% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.sheet-modal .calendar-month-picker-item{width:25%;height:33.33333333%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before{display:none!important}.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{width:33.33333333%;height:25%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(3n+1):before{display:none!important}.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{overflow:auto;--webkit-overflow-scrolling:touch}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-year-picker-item:after{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-time-selector{flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);position:relative;display:flex;justify-content:center;padding:12px 16px}.calendar-time-selector:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-time-selector a{overflow:hidden;position:relative;justify-content:center;align-items:center;display:flex;min-width:200px;box-sizing:border-box;height:var(--f7-calendar-time-selector-height);background-color:var(--f7-calendar-time-selector-bg-color);padding:0 10px;border-radius:8px}.calendar-time-selector .segmented{margin-left:8px}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{height:100%;display:flex;flex-direction:column}
\ No newline at end of file
diff --git a/www/assets/framework7/components/calendar/calendar-vars.less b/www/assets/framework7/components/calendar/calendar-vars.less
index 2a1007cc5..b3ccafed7 100644
--- a/www/assets/framework7/components/calendar/calendar-vars.less
+++ b/www/assets/framework7/components/calendar/calendar-vars.less
@@ -14,14 +14,16 @@
--f7-calendar-footer-border-color: var(--f7-bars-border-color);
--f7-calendar-footer-link-color: var(--f7-bars-link-color);
--f7-calendar-footer-text-color: var(--f7-bars-text-color);
+ --f7-calendar-week-header-bg-color: var(--f7-bars-bg-color);
+ --f7-calendar-week-header-text-color: var(--f7-bars-text-color);
*/
- --f7-calendar-week-header-bg-color: transparent;
--f7-calendar-footer-padding: 0 8px;
--f7-calendar-week-header-font-size: 11px;
--f7-calendar-selected-text-color: #fff;
/*
--f7-calendar-selected-bg-color: var(--f7-theme-color);
*/
+ --f7-calendar-prev-next-text-color: #b8b8b8;
--f7-calendar-disabled-text-color: #d4d4d4;
--f7-calendar-event-dot-size: 4px;
/*
@@ -32,21 +34,19 @@
*/
--f7-calendar-time-selector-height: 28px;
.light-vars({
- --f7-calendar-week-header-text-color: #5e5e5e;
- --f7-calendar-prev-next-text-color: #c8c8c8;
--f7-calendar-day-text-color: #000;
--f7-calendar-sheet-bg-color: #fff;
--f7-calendar-modal-bg-color: #fff;
+ --f7-calendar-picker-bg-color: #fff;
--f7-calendar-picker-pressed-bg-color: rgba(0,0,0,0.1);
--f7-calendar-picker-hover-bg-color: rgba(0,0,0,0.03);
- --f7-calendar-time-selector-bg-color: rgba(0,0,0,0.05);
+ --f7-calendar-time-selector-bg-color: rgba(0,0,0,0.1);
});
.dark-vars({
- --f7-calendar-week-header-text-color: #aaa;
- --f7-calendar-prev-next-text-color: #5e5e5e;
--f7-calendar-sheet-border-color: var(--f7-bars-border-color);
--f7-calendar-modal-bg-color: #121212;
--f7-calendar-sheet-bg-color: #121212;
+ --f7-calendar-picker-bg-color: #1c1c1d;
--f7-calendar-picker-pressed-bg-color: rgba(255,255,255,0.08);
--f7-calendar-picker-hover-bg-color: rgba(255,255,255,0.03);
--f7-calendar-time-selector-bg-color: rgba(255,255,255,0.1);
@@ -66,10 +66,12 @@
--f7-calendar-picker-font-size: 17px;
--f7-calendar-time-selector-font-size: 17px;
.light-vars({
+ --f7-calendar-row-border-color: rgba(0,0,0,0.25);
--f7-calendar-today-text-color: #000;
--f7-calendar-today-bg-color: #e3e3e3;
});
.dark-vars({
+ --f7-calendar-row-border-color: var(--f7-bars-border-color);
--f7-calendar-day-text-color: #fff;
--f7-calendar-today-text-color: #fff;
--f7-calendar-today-bg-color: #333;
@@ -84,6 +86,7 @@
--f7-calendar-footer-height: 48px;
--f7-calendar-footer-font-size: 14px;
--f7-calendar-week-header-height: 24px;
+ --f7-calendar-row-border-color: transparent;
--f7-calendar-day-font-size: 14px;
/*
--f7-calendar-today-text-color: var(--f7-theme-color);
@@ -110,6 +113,7 @@
--f7-calendar-day-size: 32px;
--f7-calendar-picker-font-size: 16px;
--f7-calendar-time-selector-font-size: 14px;
+ --f7-calendar-row-border-color: transparent;
.light-vars({
--f7-calendar-today-text-color: #000;
--f7-calendar-today-bg-color: #e3e3e3;
diff --git a/www/assets/framework7/components/calendar/calendar.css b/www/assets/framework7/components/calendar/calendar.css
index d9626eb82..5c30ab57a 100644
--- a/www/assets/framework7/components/calendar/calendar.css
+++ b/www/assets/framework7/components/calendar/calendar.css
@@ -1 +1 @@
-:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-modal-border-radius:4px;--f7-calendar-week-header-bg-color:transparent;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-selected-text-color:#fff;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-week-header-text-color:#5e5e5e;--f7-calendar-prev-next-text-color:#c8c8c8;--f7-calendar-day-text-color:#000;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-modal-bg-color:#fff;--f7-calendar-picker-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-calendar-picker-hover-bg-color:rgba(0, 0, 0, 0.03);--f7-calendar-time-selector-bg-color:rgba(0, 0, 0, 0.05)}:root .dark,:root.dark{--f7-calendar-week-header-text-color:#aaa;--f7-calendar-prev-next-text-color:#5e5e5e;--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-modal-bg-color:#121212;--f7-calendar-sheet-bg-color:#121212;--f7-calendar-picker-pressed-bg-color:rgba(255, 255, 255, 0.08);--f7-calendar-picker-hover-bg-color:rgba(255, 255, 255, 0.03);--f7-calendar-time-selector-bg-color:rgba(255, 255, 255, 0.1)}.ios{--f7-calendar-sheet-border-color:#929499;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .dark,.ios.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:20px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px}.md .dark,.md.dark{--f7-calendar-day-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:18px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 16px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-footer-padding:0 16px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:16px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.aurora .dark,.aurora.dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.calendar{overflow:hidden;height:var(--f7-calendar-height);width:100%;display:flex;flex-direction:column}.aurora .calendar{--f7-toolbar-border-color:transparent;--f7-bars-border-color:transparent}.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);padding-bottom:var(--f7-safe-area-bottom);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom))}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-header{width:100%;position:relative;overflow:hidden;flex-shrink:0;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;padding:var(--f7-calendar-header-padding);background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight)}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{width:100%;flex-shrink:0;padding:var(--f7-calendar-footer-padding);background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-footer-height);font-size:var(--f7-calendar-header-font-size);display:flex;justify-content:flex-end;box-sizing:border-box;align-items:center;position:relative}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{content:'';position:absolute;background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal{position:absolute;height:var(--f7-calendar-modal-height);overflow:hidden;top:50%;left:50%;min-width:300px;max-width:var(--f7-calendar-modal-max-width);transform:translate3d(-50%,100vh,0);transition-property:transform;display:flex;z-index:13500;background:var(--f7-calendar-modal-bg-color);width:90%;border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-elevation-24)}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{display:flex;box-sizing:border-box;position:relative;font-size:var(--f7-calendar-week-header-font-size);background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-week-header .calendar-week-day{flex-shrink:1;width:calc(100% / 7);text-align:center;line-height:var(--f7-calendar-week-header-height)}.calendar-months{width:100%;height:100%;overflow:hidden;position:relative;flex-shrink:10}.calendar-months-wrapper{position:relative;width:100%;height:100%;transition:.3s}.calendar-month{display:flex;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.calendar-row{height:16.66666667%;display:flex;flex-shrink:1;width:100%;position:relative;box-sizing:border-box;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{flex-shrink:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:14.28571429%;text-align:center;cursor:pointer;z-index:20;color:var(--f7-calendar-day-text-color);height:100%;font-size:var(--f7-calendar-day-font-size)}.calendar-day-today .calendar-day-number{color:var(--f7-calendar-today-text-color,var(--f7-theme-color));background-color:var(--f7-calendar-today-bg-color)}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{color:var(--f7-calendar-selected-text-color);background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color))}.calendar-day-number{display:inline-block;border-radius:50%;position:relative;width:var(--f7-calendar-day-size);height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size)}.calendar-day-events{position:absolute;display:flex;left:0;width:100%;top:100%;align-items:center;justify-content:center;margin-top:1px}.calendar-day-event{width:var(--f7-calendar-event-dot-size);height:var(--f7-calendar-event-dot-size);border-radius:calc(var(--f7-calendar-event-dot-size)/ 2);background-color:var(--f7-calendar-event-bg-color)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{width:100%;height:var(--f7-calendar-day-size);content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:-1;background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));opacity:.2}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-range .calendar-day-number{background-color:transparent;color:inherit}.calendar-month-selector,.calendar-year-selector{display:flex;justify-content:space-between;align-items:center;width:50%;max-width:200px;flex-shrink:10;margin-left:auto;margin-right:auto}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{position:relative;width:100%;height:100%;-webkit-user-select:none;user-select:none;background:0 0}.calendar-month-picker .picker-columns,.calendar-year-picker .picker-columns{text-align:center}.calendar-month-picker-item,.calendar-year-picker-item{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;cursor:pointer;transition-duration:.1s;box-sizing:border-box}.calendar-month-picker-item span,.calendar-year-picker-item span{white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;position:relative;overflow:hidden;pointer-events:none}.device-desktop.aurora .calendar-month-picker-item:hover,.device-desktop.aurora .calendar-year-picker-item:hover{background-color:var(--f7-calendar-picker-hover-bg-color)}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state,.device-desktop.aurora .calendar-month-picker-item.active-state,.device-desktop.aurora .calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.sheet-modal .calendar-month-picker-item{width:25%;height:33.33333333%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before{display:none!important}.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{width:33.33333333%;height:25%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(3n+1):before{display:none!important}.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{overflow:auto;--webkit-overflow-scrolling:touch}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-time-selector{flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);position:relative;display:flex;justify-content:space-between;align-items:center;padding:12px 16px}.calendar-time-selector a{overflow:hidden;position:relative;justify-content:center;align-items:center;display:flex;box-sizing:border-box;height:var(--f7-calendar-time-selector-height);background-color:var(--f7-calendar-time-selector-bg-color);padding:0 16px;border-radius:8px}.calendar-time-selector>span{font-weight:500}.calendar-time-selector .segmented{margin-left:8px}.calendar-month-picker-popover,.calendar-time-picker-popover,.calendar-year-picker-popover{height:240px;width:240px}.calendar-month-picker-popover .popover-inner,.calendar-time-picker-popover .popover-inner,.calendar-year-picker-popover .popover-inner{height:100%;overflow:hidden}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{height:100%;display:flex;flex-direction:column}
\ No newline at end of file
+:root{--f7-calendar-height:340px;--f7-calendar-sheet-landscape-height:220px;--f7-calendar-popover-width:320px;--f7-calendar-popover-height:320px;--f7-calendar-modal-height:420px;--f7-calendar-modal-max-width:380px;--f7-calendar-modal-border-radius:4px;--f7-calendar-footer-padding:0 8px;--f7-calendar-week-header-font-size:11px;--f7-calendar-selected-text-color:#fff;--f7-calendar-prev-next-text-color:#b8b8b8;--f7-calendar-disabled-text-color:#d4d4d4;--f7-calendar-event-dot-size:4px;--f7-calendar-time-selector-height:28px;--f7-calendar-day-text-color:#000;--f7-calendar-sheet-bg-color:#fff;--f7-calendar-modal-bg-color:#fff;--f7-calendar-picker-bg-color:#fff;--f7-calendar-picker-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-calendar-picker-hover-bg-color:rgba(0, 0, 0, 0.03);--f7-calendar-time-selector-bg-color:rgba(0, 0, 0, 0.1)}:root .theme-dark,:root.theme-dark{--f7-calendar-sheet-border-color:var(--f7-bars-border-color);--f7-calendar-modal-bg-color:#121212;--f7-calendar-sheet-bg-color:#121212;--f7-calendar-picker-bg-color:#1c1c1d;--f7-calendar-picker-pressed-bg-color:rgba(255, 255, 255, 0.08);--f7-calendar-picker-hover-bg-color:rgba(255, 255, 255, 0.03);--f7-calendar-time-selector-bg-color:rgba(255, 255, 255, 0.1)}.ios{--f7-calendar-sheet-border-color:#929499;--f7-calendar-header-height:44px;--f7-calendar-header-font-size:17px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 8px;--f7-calendar-footer-height:44px;--f7-calendar-footer-font-size:17px;--f7-calendar-week-header-height:18px;--f7-calendar-day-font-size:15px;--f7-calendar-day-size:30px;--f7-calendar-picker-font-size:17px;--f7-calendar-time-selector-font-size:17px;--f7-calendar-row-border-color:rgba(0, 0, 0, 0.25);--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.ios .theme-dark,.ios.theme-dark{--f7-calendar-row-border-color:var(--f7-bars-border-color);--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.md{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:20px;--f7-calendar-header-font-weight:400;--f7-calendar-header-padding:0 24px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-week-header-height:24px;--f7-calendar-row-border-color:transparent;--f7-calendar-day-font-size:14px;--f7-calendar-today-bg-color:none;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:14px;--f7-calendar-time-selector-font-size:14px}.md .theme-dark,.md.theme-dark{--f7-calendar-day-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-calendar-sheet-border-color:#ccc;--f7-calendar-header-height:56px;--f7-calendar-header-font-size:18px;--f7-calendar-header-font-weight:600;--f7-calendar-header-padding:0 16px;--f7-calendar-footer-height:48px;--f7-calendar-footer-font-size:14px;--f7-calendar-footer-padding:0 16px;--f7-calendar-week-header-height:24px;--f7-calendar-day-font-size:14px;--f7-calendar-day-size:32px;--f7-calendar-picker-font-size:16px;--f7-calendar-time-selector-font-size:14px;--f7-calendar-row-border-color:transparent;--f7-calendar-today-text-color:#000;--f7-calendar-today-bg-color:#e3e3e3}.aurora .theme-dark,.aurora.theme-dark{--f7-calendar-day-text-color:#fff;--f7-calendar-today-text-color:#fff;--f7-calendar-today-bg-color:#333}.calendar{overflow:hidden;height:var(--f7-calendar-height);width:100%;display:flex;flex-direction:column}.aurora .calendar{--f7-toolbar-border-color:transparent;--f7-bars-border-color:transparent}.calendar.modal-in{display:flex}@media (orientation:landscape) and (max-height:415px){.calendar.calendar-sheet{height:var(--f7-calendar-sheet-landscape-height)}.calendar.calendar-modal{height:calc(100vh - var(--f7-navbar-height))}}.calendar.calendar-inline,.calendar.calendar-popover .calendar{position:relative}.calendar-sheet{--f7-sheet-border-color:var(--f7-calendar-sheet-border-color);background:var(--f7-calendar-sheet-bg-color);padding-bottom:var(--f7-safe-area-bottom);height:calc(var(--f7-calendar-height) + var(--f7-safe-area-bottom))}.calendar-sheet:before{z-index:600}.calendar-modal .toolbar:before,.calendar-popover .toolbar:before,.calendar-sheet .toolbar:before{display:none}.calendar-popover{width:var(--f7-calendar-popover-width)}.calendar-popover .calendar-header,.calendar-popover .toolbar-top{border-radius:var(--f7-popover-border-radius) var(--f7-popover-border-radius) 0 0}.calendar-popover .calendar-header+.toolbar-top{border-radius:0}.calendar-popover .calendar-footer,.calendar-popover .toolbar-bottom{border-radius:0 0 var(--f7-popover-border-radius) var(--f7-popover-border-radius)}.calendar-popover .calendar{height:var(--f7-calendar-popover-height);position:relative;z-index:1}.calendar-popover .calendar-month-picker,.calendar-popover .calendar-time-picker,.calendar-popover .calendar-year-picker{border-radius:var(--f7-popover-border-radius)}.calendar-header{width:100%;position:relative;overflow:hidden;flex-shrink:0;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;padding:var(--f7-calendar-header-padding);background-color:var(--f7-calendar-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-header-height);line-height:var(--f7-calendar-header-height);font-size:var(--f7-calendar-header-font-size);font-weight:var(--f7-calendar-header-font-weight)}.calendar-header a{color:var(--f7-calendar-header-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer{width:100%;flex-shrink:0;padding:var(--f7-calendar-footer-padding);background-color:var(--f7-calendar-footer-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-footer-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-footer-height);font-size:var(--f7-calendar-header-font-size);display:flex;justify-content:flex-end;box-sizing:border-box;align-items:center;position:relative}.calendar-footer a{color:var(--f7-calendar-footer-link-color,var(--f7-bars-link-color,var(--f7-theme-color)))}.calendar-footer:before{content:'';position:absolute;background-color:var(--f7-calendar-footer-border-color,var(--f7-bars-border-color));display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal{position:absolute;height:var(--f7-calendar-modal-height);overflow:hidden;top:50%;left:50%;min-width:300px;max-width:var(--f7-calendar-modal-max-width);transform:translate3d(-50%,100vh,0);transition-property:transform;display:flex;z-index:13500;background:var(--f7-calendar-modal-bg-color);width:90%;border-radius:var(--f7-calendar-modal-border-radius);box-shadow:var(--f7-elevation-24)}.calendar-modal.modal-in,.calendar-modal.modal-out{transition-duration:.4s}.calendar-modal.modal-in{transform:translate3d(-50%,-50%,0)}.calendar-modal.modal-out{transform:translate3d(-50%,100vh,0)}.calendar-week-header{display:flex;box-sizing:border-box;position:relative;font-size:var(--f7-calendar-week-header-font-size);background-color:var(--f7-calendar-week-header-bg-color,var(--f7-bars-bg-color));color:var(--f7-calendar-week-header-text-color,var(--f7-bars-text-color));height:var(--f7-calendar-week-header-height);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-week-header .calendar-week-day{flex-shrink:1;width:calc(100% / 7);text-align:center;line-height:var(--f7-calendar-week-header-height)}.calendar-months{width:100%;height:100%;overflow:hidden;position:relative;flex-shrink:10}.calendar-months-wrapper{position:relative;width:100%;height:100%;transition:.3s}.calendar-month{display:flex;flex-direction:column;width:100%;height:100%;position:absolute;left:0;top:0}.calendar-row{height:16.66666667%;display:flex;flex-shrink:1;width:100%;position:relative;box-sizing:border-box;padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}.calendar-row:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-modal .calendar-months:first-child .calendar-row:first-child:before,.calendar-popover .calendar-months:first-child .calendar-row:first-child:before{display:none!important}.calendar-day{flex-shrink:1;display:flex;justify-content:center;align-items:center;box-sizing:border-box;width:14.28571429%;text-align:center;cursor:pointer;z-index:20;color:var(--f7-calendar-day-text-color);height:100%;font-size:var(--f7-calendar-day-font-size)}.calendar-day-today .calendar-day-number{color:var(--f7-calendar-today-text-color,var(--f7-theme-color));background-color:var(--f7-calendar-today-bg-color)}.calendar-day-next,.calendar-day-prev{color:var(--f7-calendar-prev-next-text-color)}.calendar-day-disabled{color:var(--f7-calendar-disabled-text-color);cursor:auto}.calendar-day-selected .calendar-day-number{color:var(--f7-calendar-selected-text-color);background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color))}.calendar-day-number{display:inline-block;border-radius:50%;position:relative;width:var(--f7-calendar-day-size);height:var(--f7-calendar-day-size);line-height:var(--f7-calendar-day-size)}.calendar-day-events{position:absolute;display:flex;left:0;width:100%;top:100%;align-items:center;justify-content:center;margin-top:1px}.calendar-day-event{width:var(--f7-calendar-event-dot-size);height:var(--f7-calendar-event-dot-size);border-radius:calc(var(--f7-calendar-event-dot-size)/ 2);background-color:var(--f7-calendar-event-bg-color)}.calendar-day-event+.calendar-day-event{margin-left:2px}.calendar-day-selected-left,.calendar-day-selected-range,.calendar-day-selected-right{position:relative}.calendar-day-selected-left:before,.calendar-day-selected-range:before,.calendar-day-selected-right:before{width:100%;height:var(--f7-calendar-day-size);content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:-1;background-color:var(--f7-calendar-selected-bg-color,var(--f7-theme-color));opacity:.2}.calendar-day-selected-left:before,.calendar-day-selected-range:first-child:before{left:auto;right:0;width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:var(--f7-calendar-day-size) 0 0 var(--f7-calendar-day-size)}.calendar-day-selected-range:last-child:before,.calendar-day-selected-right:before{width:calc(50% + var(--f7-calendar-day-size)/ 2);border-radius:0 var(--f7-calendar-day-size) var(--f7-calendar-day-size) 0}.calendar-day-selected-left:last-child:before,.calendar-day-selected-right:first-child:before{display:none}.calendar-day-selected-range .calendar-day-number{background-color:transparent;color:inherit}.calendar-month-selector,.calendar-year-selector{display:flex;justify-content:space-between;align-items:center;width:50%;max-width:200px;flex-shrink:10;margin-left:auto;margin-right:auto}.calendar-month-selector .calendar-day-number,.calendar-year-selector .calendar-day-number{flex-shrink:1;position:relative;overflow:hidden;text-overflow:ellipsis}.calendar-month-selector a.icon-only,.calendar-year-selector a.icon-only{min-width:36px}.calendar-month-picker,.calendar-time-picker,.calendar-year-picker{position:absolute;width:100%;height:100%;left:0px;top:0px;background:var(--f7-calendar-picker-bg-color);z-index:1000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.calendar-month-picker,.calendar-year-picker{flex-wrap:wrap;font-size:var(--f7-calendar-picker-font-size);display:flex}.calendar-month-picker-item,.calendar-year-picker-item{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;cursor:pointer;transition-duration:.1s;box-sizing:border-box}.calendar-month-picker-item span,.calendar-year-picker-item span{white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;position:relative;overflow:hidden;pointer-events:none}.device-desktop.aurora .calendar-month-picker-item:hover,.device-desktop.aurora .calendar-year-picker-item:hover{background-color:var(--f7-calendar-picker-hover-bg-color)}.calendar-month-picker-item.active-state,.calendar-year-picker-item.active-state,.device-desktop.aurora .calendar-month-picker-item.active-state,.device-desktop.aurora .calendar-year-picker-item.active-state{background:var(--f7-calendar-picker-pressed-bg-color)}.calendar-month-picker-item{padding:5px}.calendar-month-picker-item:after{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-month-picker-item:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;width:1px;height:100%;transform-origin:0% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.sheet-modal .calendar-month-picker-item{width:25%;height:33.33333333%}.sheet-modal .calendar-month-picker-item:nth-child(4n+1):before{display:none!important}.sheet-modal .calendar-month-picker-item:nth-child(n+9):after{display:none!important}.calendar-modal .calendar-month-picker-item,.popover .calendar-month-picker-item{width:33.33333333%;height:25%}.calendar-modal .calendar-month-picker-item:nth-child(3n+1):before,.popover .calendar-month-picker-item:nth-child(3n+1):before{display:none!important}.calendar-modal .calendar-month-picker-item:nth-child(n+10):after,.popover .calendar-month-picker-item:nth-child(n+10):after{display:none!important}.calendar-month-picker-item-current,.calendar-year-picker-item-current{color:var(--f7-calendar-picker-selected-text-color,var(--f7-theme-color))}.calendar-year-picker{overflow:auto;--webkit-overflow-scrolling:touch}.calendar-year-picker-item{height:34px;line-height:34px;width:100%}.calendar-year-picker-item:after{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-time-selector{flex-shrink:0;font-size:var(--f7-calendar-time-selector-font-size);position:relative;display:flex;justify-content:center;padding:12px 16px}.calendar-time-selector:before{content:'';position:absolute;background-color:var(--f7-calendar-row-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.calendar-time-selector a{overflow:hidden;position:relative;justify-content:center;align-items:center;display:flex;min-width:200px;box-sizing:border-box;height:var(--f7-calendar-time-selector-height);background-color:var(--f7-calendar-time-selector-bg-color);padding:0 10px;border-radius:8px}.calendar-time-selector .segmented{margin-left:8px}.calendar-time-picker{--f7-picker-popover-height:100%;--f7-picker-inline-height:100%}.calendar-time-picker .toolbar{flex-shrink:0;top:0!important}.calendar-time-picker .picker{height:100%;display:flex;flex-direction:column}
\ No newline at end of file
diff --git a/www/assets/framework7/components/calendar/calendar.d.ts b/www/assets/framework7/components/calendar/calendar.d.ts
index 1722af8e4..dfcce16ba 100644
--- a/www/assets/framework7/components/calendar/calendar.d.ts
+++ b/www/assets/framework7/components/calendar/calendar.d.ts
@@ -1,10 +1,6 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
-import { View } from '../view/view.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
+import { View } from '../view/view';
export namespace Calendar {
interface Calendar extends Framework7EventsClass {
@@ -86,9 +82,9 @@ export namespace Calendar {
interface Parameters {
/** Array with initial selected dates. Each array item represents selected date. */
value?: Date[];
- /** Additional disabled dates. Parameter accepts so called Date Range (look below for details). */
+ /** Additonal disabled dates. Parameter accepts so called Date Range (look below for details). */
disabled?: DateRange;
- /** Dates with events. Will be marked with additional "dot" on calendar day. Parameter accepts so called Date Range (look below for details).. */
+ /** Dates with events. Will be marked with additonal "dot" on calendar day. Parameter accepts so called Date Range (look below for details).. */
events?: DateRange | (Extract & { color: string });
/** Date ranges you want to add custom CSS class for additional styling. Look below for accepted format. */
rangesClasses?: RangeClass[];
@@ -147,8 +143,6 @@ export namespace Calendar {
yearPickerMax?: number;
/** Enables time picker (default false) */
timePicker?: boolean;
- /** Time picker label text (default "Time") */
- timePickerLabel?: string;
/** Time format displayed in time selector. (default { hour: 'numeric', minute: 'numeric' }) */
timePickerFormat?: Intl.DateTimeFormatOptions;
/** Text to display in time selector placeholder. (default "Select time") */
diff --git a/www/assets/framework7/components/calendar/calendar.js b/www/assets/framework7/components/calendar/calendar.js
index 350ad2e84..2a7205e7e 100644
--- a/www/assets/framework7/components/calendar/calendar.js
+++ b/www/assets/framework7/components/calendar/calendar.js
@@ -1,116 +1 @@
-import ConstructorMethods from '../../shared/constructor-methods.js';
-import Calendar from './calendar-class.js';
-import $ from '../../shared/dom7.js';
-export default {
- name: 'calendar',
- static: {
- Calendar
- },
-
- create() {
- const app = this;
- app.calendar = ConstructorMethods({
- defaultSelector: '.calendar',
- constructor: Calendar,
- app,
- domProp: 'f7Calendar'
- });
-
- app.calendar.close = function close(el) {
- if (el === void 0) {
- el = '.calendar';
- }
-
- const $el = $(el);
- if ($el.length === 0) return;
- const calendar = $el[0].f7Calendar;
- if (!calendar || calendar && !calendar.opened) return;
- calendar.close();
- };
- },
-
- params: {
- calendar: {
- // Calendar settings
- dateFormat: undefined,
- monthNames: 'auto',
- monthNamesShort: 'auto',
- dayNames: 'auto',
- dayNamesShort: 'auto',
- locale: undefined,
- firstDay: 1,
- // First day of the week, Monday
- weekendDays: [0, 6],
- // Sunday and Saturday
- multiple: false,
- rangePicker: false,
- rangePickerMinDays: 1,
- // when calendar is used as rangePicker
- rangePickerMaxDays: 0,
- // when calendar is used as rangePicker, 0 means unlimited
- direction: 'horizontal',
- // or 'vertical'
- minDate: null,
- maxDate: null,
- disabled: null,
- // dates range of disabled days
- events: null,
- // dates range of days with events
- rangesClasses: null,
- // array with custom classes date ranges
- touchMove: true,
- animate: true,
- closeOnSelect: false,
- monthSelector: true,
- monthPicker: true,
- yearSelector: true,
- yearPicker: true,
- yearPickerMin: undefined,
- yearPickerMax: undefined,
- timePicker: false,
- timePickerLabel: 'Time',
- timePickerFormat: {
- hour: 'numeric',
- minute: 'numeric'
- },
- timePickerPlaceholder: 'Select time',
- weekHeader: true,
- value: null,
- // Common opener settings
- containerEl: null,
- openIn: 'auto',
- // or 'popover' or 'sheet' or 'customModal'
- sheetPush: false,
- sheetSwipeToClose: undefined,
- formatValue: null,
- inputEl: null,
- inputReadOnly: true,
- closeByOutsideClick: true,
- scrollToInput: true,
- header: false,
- headerPlaceholder: 'Select date',
- toolbar: true,
- toolbarCloseText: 'Done',
- footer: false,
- cssClass: null,
- routableModals: false,
- view: null,
- url: 'date/',
- backdrop: null,
- closeByBackdropClick: true,
- // Render functions
- renderWeekHeader: null,
- renderMonths: null,
- renderMonth: null,
- renderMonthSelector: null,
- renderYearSelector: null,
- renderHeader: null,
- renderFooter: null,
- renderToolbar: null,
- renderInline: null,
- renderPopover: null,
- renderSheet: null,
- render: null
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,a){void 0===a&&(a=!0);var t=e.$,n=e.utils,r=e.getDevice,o=e.getSupport,l=e.Class,s=(e.Modal,e.ConstructorMethods);e.ModalMethods;function i(e){this.wrapped=e}function c(e){var a,t;function n(a,t){try{var o=e[a](t),l=o.value,s=l instanceof i;Promise.resolve(s?l.wrapped:l).then((function(e){s?n("return"===a?"return":"next",e):r(o.done?"return":"normal",e)}),(function(e){n("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":a.resolve({value:r,done:!0});break;case"throw":a.reject(r);break;default:a.resolve({value:r,done:!1})}(a=a.next)?n(a.key,a.arg):t=null}this._invoke=function(e,r){return new Promise((function(o,l){var s={key:e,arg:r,resolve:o,reject:l,next:null};t?t=t.next=s:(a=t=s,n(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function d(e,a){for(var t=0;t0,$inputEl:s,inputEl:s&&s[0],initialized:!1,opened:!1,url:i.params.url,isHorizontal:c,inverter:d,animating:!1,allowTouchMove:!0,hasTimePicker:i.params.timePicker&&!i.params.rangePicker&&!i.params.multiple}),i.dayFormatter=function(e){return new Intl.DateTimeFormat(i.params.locale,{day:"numeric"}).format(e).replace(/日/,"")},i.monthFormatter=function(e){return new Intl.DateTimeFormat(i.params.locale,{month:"long"}).format(e)},i.yearFormatter=function(e){return new Intl.DateTimeFormat(i.params.locale,{year:"numeric"}).format(e)},i.timeSelectorFormatter=function(e){return new Intl.DateTimeFormat(i.params.locale,i.params.timePickerFormat).format(e)};var m=i.timeSelectorFormatter(new Date).toLowerCase();i.is12HoursFormat=m.indexOf("pm")>=0||m.indexOf("am")>=0;var p=i.params,v=p.monthNames,f=p.monthNamesShort,g=p.dayNames,y=p.dayNamesShort,k=i.getIntlNames(),M=k.monthNamesIntl,w=k.monthNamesShortIntl,D=k.dayNamesIntl,$=k.dayNamesShortIntl;function x(){i.open()}function T(e){e.preventDefault()}function C(){i.setValue([]),i.opened&&i.update()}function P(e){var a=t(e.target);!i.destroyed&&i.params&&(i.isPopover()||i.opened&&!i.closing&&(a.closest('[class*="backdrop"]').length||(s&&s.length>0?a[0]!==s[0]&&0===a.closest(".sheet-modal, .calendar-modal").length&&i.close():0===t(e.target).closest(".sheet-modal, .calendar-modal").length&&i.close())))}return"auto"===v&&(v=M),"auto"===f&&(f=w),"auto"===g&&(g=D),"auto"===y&&(y=$),h(i,{monthNames:v,monthNamesShort:f,dayNames:g,dayNamesShort:y}),h(i,{attachInputEvents:function(){i.$inputEl.on("click",x),i.$inputEl.on("input:clear",C),i.params.inputReadOnly&&(i.$inputEl.on("focus mousedown",T),i.$inputEl[0]&&(i.$inputEl[0].f7ValidateReadonly=!0))},detachInputEvents:function(){i.$inputEl.off("click",x),i.$inputEl.off("input:clear",C),i.params.inputReadOnly&&(i.$inputEl.off("focus mousedown",T),i.$inputEl[0]&&delete i.$inputEl[0].f7ValidateReadonly)},attachHtmlEvents:function(){a.on("click",P)},detachHtmlEvents:function(){a.off("click",P)}}),i.attachCalendarEvents=function(){var e,n,r,l,s,c,d,m,u,h,p,v,f,g=!0,y=i.$el,k=i.$wrapperEl;function M(a){n||e||(e=!0,r="touchstart"===a.type?a.targetTouches[0].pageX:a.pageX,s=r,l="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY,c=l,d=(new Date).getTime(),p=0,g=!0,f=void 0,m=i.monthsTranslate)}function w(a){if(e){var t=i.isHorizontal;s="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,c="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,void 0===f&&(f=!!(f||Math.abs(c-l)>Math.abs(s-r))),t&&f||!i.allowTouchMove?e=!1:(a.preventDefault(),i.animating?e=!1:(g=!1,n||(n=!0,u=k[0].offsetWidth,h=k[0].offsetHeight,k.transition(0)),p=(v=t?s-r:c-l)/(t?u:h),m=100*(i.monthsTranslate*i.inverter+p),k.transform("translate3d("+(t?m:0)+"%, "+(t?0:m)+"%, 0)")))}}function D(){if(!e||!n)return e=!1,void(n=!1);e=!1,n=!1,(new Date).getTime()-d<300?Math.abs(v)<10?i.resetMonth():v>=10?a.rtl?i.nextMonth():i.prevMonth():a.rtl?i.prevMonth():i.nextMonth():p<=-.5?a.rtl?i.prevMonth():i.nextMonth():p>=.5?a.rtl?i.nextMonth():i.prevMonth():i.resetMonth(),setTimeout((function(){g=!0}),100)}function $(e){if(g){var a=t(e.target).parents(".calendar-day");if(0===a.length&&t(e.target).hasClass("calendar-day")&&(a=t(e.target)),0!==a.length&&!a.hasClass("calendar-day-disabled")){i.params.rangePicker||(a.hasClass("calendar-day-next")&&i.nextMonth(),a.hasClass("calendar-day-prev")&&i.prevMonth());var n=parseInt(a.attr("data-year"),10),r=parseInt(a.attr("data-month"),10),o=parseInt(a.attr("data-day"),10);if(i.emit("local::dayClick calendarDayClick",i,a[0],n,r,o),!a.hasClass("calendar-day-selected")||i.params.multiple||i.params.rangePicker){var l=new Date(n,r,o,0,0,0);i.hasTimePicker&&(i.value&&i.value[0]?l.setHours(i.value[0].getHours(),i.value[0].getMinutes()):l.setHours((new Date).getHours(),(new Date).getMinutes())),i.addValue(l)}i.params.closeOnSelect&&(i.params.rangePicker&&2===i.value.length||!i.params.rangePicker)&&i.close()}}}function x(){i.nextMonth()}function T(){i.prevMonth()}function C(){i.nextYear()}function P(){i.prevYear()}function E(){y.append(i.renderMonthPicker())}function b(){var e=t(this);if(e.hasClass("calendar-month-picker-item-current"))y.find(".calendar-month-picker").remove();else{y.find(".calendar-month-picker-item-current").add(e).toggleClass("calendar-month-picker-item-current");var a=e.index()-(parseInt(i.$el.find(".calendar-month-current").attr("data-locale-month"),10)-i.currentMonth);i.setYearMonth(i.currentYear,a,0),setTimeout((function(){y.find(".calendar-month-picker").remove()}),200)}}function I(){y.append(i.renderYearPicker());var e=y.find(".calendar-year-picker-item-current"),a=y.find(".calendar-year-picker");e&&e.length&&a.scrollTop(e[0].offsetTop-a[0].offsetHeight/2+e[0].offsetHeight/2)}function Y(){var e=t(this);if(e.hasClass("calendar-year-picker-item-current"))y.find(".calendar-year-picker").remove();else{y.find(".calendar-year-picker-item-current").add(e).toggleClass("calendar-year-picker-item-current");var a=parseInt(e.attr("data-year"),10);i.setYearMonth(a,void 0,0),setTimeout((function(){y.find(".calendar-year-picker").remove()}),200)}}function F(){i.openTimePicker()}function H(){i.closeTimePicker()}var S=!("touchstart"!==a.touchEvents.start||!o().passiveListener)&&{passive:!0,capture:!1};y.find(".calendar-prev-month-button").on("click",T),y.find(".calendar-next-month-button").on("click",x),y.find(".calendar-prev-year-button").on("click",P),y.find(".calendar-next-year-button").on("click",C),i.params.monthPicker&&(y.find(".current-month-value").on("click",E),y.on("click",".calendar-month-picker-item",b)),i.params.yearPicker&&(y.find(".current-year-value").on("click",I),y.on("click",".calendar-year-picker-item",Y)),i.hasTimePicker&&(y.find(".calendar-time-selector a").on("click",F),y.on("click",".calendar-time-picker-close",H)),k.on("click",$),i.params.touchMove&&(k.on(a.touchEvents.start,M,S),a.on("touchmove:active",w),a.on("touchend:passive",D)),i.detachCalendarEvents=function(){y.find(".calendar-prev-month-button").off("click",T),y.find(".calendar-next-month-button").off("click",x),y.find(".calendar-prev-year-button").off("click",P),y.find(".calendar-next-year-button").off("click",C),i.params.monthPicker&&(y.find(".current-month-value").off("click",E),y.off("click",".calendar-month-picker-item",b)),i.params.yearPicker&&(y.find(".current-year-value").off("click",I),y.off("click",".calendar-year-picker-item",Y)),i.hasTimePicker&&(y.find(".calendar-time-selector a").off("click",F),y.off("click",".calendar-time-picker-close",H)),k.off("click",$),i.params.touchMove&&(k.off(a.touchEvents.start,M,S),a.off("touchmove:active",w),a.off("touchend:passive",D))}},i.init(),i||u(r)}n=e,(a=l).prototype=Object.create(n.prototype),a.prototype.constructor=a,m(a,n);var s,i,c,f=l.prototype;return f.getIntlNames=function(){for(var e,a,t,n=this.params.locale,r=[],o=[],l=[],s=[],i=new Intl.DateTimeFormat(n,{month:"long"}),c=new Intl.DateTimeFormat(n,{month:"short"}),d=new Intl.DateTimeFormat(n,{weekday:"long"}),m=new Intl.DateTimeFormat(n,{weekday:"short"}),u=0;u<24;u+=1){var h=(new Date).setMonth(u,1),p=this.yearFormatter(h);e&&p!==e&&(a&&(t=!0),a=!0,e=p),e||(e=p),a&&e===p&&!t&&(r.push(i.format(h)),o.push(c.format(h)))}for(var v=(new Date).getDay(),f=0;f<7;f+=1){var g=(new Date).getTime()+24*(f-v)*60*60*1e3;l.push(d.format(g)),s.push(m.format(g))}return{monthNamesIntl:r,monthNamesShortIntl:o,dayNamesIntl:l,dayNamesShortIntl:s}},f.normalizeDate=function(e){var a=new Date(e);return this.hasTimePicker?new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes()):new Date(a.getFullYear(),a.getMonth(),a.getDate())},f.normalizeValues=function(e){var a=this,t=[];return e&&Array.isArray(e)&&(t=e.map((function(e){return a.normalizeDate(e)}))),t},f.initInput=function(){var e=this;e.$inputEl&&e.params.inputReadOnly&&e.$inputEl.prop("readOnly",!0)},f.isPopover=function(){var e=this,a=e.app,t=e.modal,n=e.params,o=r();if("sheet"===n.openIn)return!1;if(t&&"popover"!==t.type)return!1;if(!e.inline&&e.inputEl){if("popover"===n.openIn)return!0;if(o.ios)return!!o.ipad;if(a.width>=768)return!0;if(o.desktop&&"aurora"===a.theme)return!0}return!1},f.formatDate=function(e){var a=this,t=new Date(e),n=t.getFullYear(),r=t.getMonth(),o=r+1,l=t.getDate(),s=t.getDay(),i=a.monthNames,c=a.monthNamesShort,d=a.dayNames,m=a.dayNamesShort,u=a.params,h=u.dateFormat,p=u.locale;function v(e){return e<10?"0"+e:e}if("string"==typeof h){var f={yyyy:n,yy:String(n).substring(2),mm:v(o),m:o,MM:i[r],M:c[r],dd:v(l),d:l,DD:d[s],D:m[s]};if(a.params.timePicker){var g=t.getHours(),y=t.getMinutes(),k=t.getSeconds(),M=g;g>12&&(M=g-12),0===g&&(M=12);var w=g>=12&&0!==g?"pm":"am";Object.assign(f,{HH:v(g),H:g,hh:v(M),h:M,ss:v(k),s:k,":mm":v(y),":m":y,a:w,A:w.toUpperCase()})}var D=new RegExp(Object.keys(f).map((function(e){return"("+e+")"})).join("|"),"g");return h.replace(D,(function(e){return e in f?f[e]:e}))}return"function"==typeof h?h(t):new Intl.DateTimeFormat(p,h).format(t)},f.formatValue=function(){var e=this,a=e.value;return e.params.formatValue?e.params.formatValue.call(e,a):a.map((function(a){return e.formatDate(a)})).join(e.params.rangePicker?" - ":", ")},f.addValue=function(e){var a=this,t=a.params,n=t.multiple,r=t.rangePicker,o=t.rangePickerMinDays,l=t.rangePickerMaxDays;if(n){var s;a.value||(a.value=[]);for(var i=0;i=60*(o-1)*60*24*1e3&&(0===l||Math.abs(a.value[0].getTime()-e.getTime())<=60*(l-1)*60*24*1e3)?a.value.push(e):a.value=[],a.value.sort((function(e,a){return e-a})),a.updateValue()):(a.value=[e],a.updateValue())},f.setValue=function(e){var a=this,t=a.value;if(Array.isArray(t)&&Array.isArray(e)&&t.length===e.length){var n=!0;if(t.forEach((function(a,t){a!==e[t]&&(n=!1)})),n)return}a.value=e,a.updateValue()},f.getValue=function(){return this.value},f.updateValue=function(e){var a,t,n=this,r=n.$el,o=n.$wrapperEl,l=n.$inputEl,s=n.value,i=n.params;if(r&&r.length>0)if(o.find(".calendar-day-selected").removeClass("calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right"),i.rangePicker&&2===s.length){var c=new Date(s[0]).getTime(),d=new Date(s[1]).getTime();for(a=c;a<=d;a+=864e5){t=new Date(a);var m="calendar-day-selected";c!==d&&(a!==c&&a!==d&&(m+=" calendar-day-selected-range"),a===c&&(m+=" calendar-day-selected-left"),a===d&&(m+=" calendar-day-selected-right")),o.find('.calendar-day[data-date="'+t.getFullYear()+"-"+t.getMonth()+"-"+t.getDate()+'"]').addClass(m)}t=new Date(c),o.find('.calendar-day[data-date="'+t.getFullYear()+"-"+t.getMonth()+"-"+t.getDate()+'"]').removeClass("calendar-day-selected-range").addClass("calendar-day-selected calendar-day-selected-left"),t=new Date(d),o.find('.calendar-day[data-date="'+t.getFullYear()+"-"+t.getMonth()+"-"+t.getDate()+'"]').removeClass("calendar-day-selected-range").addClass("calendar-day-selected calendar-day-selected-right")}else for(a=0;a0&&n.hasTimePicker&&r.find(".calendar-time-selector a").text(s&&s.length?n.timeSelectorFormatter(s[0]):n.params.timePickerPlaceholder),l&&l.length||i.header){var u=n.formatValue(s);i.header&&r&&r.length&&r.find(".calendar-selected-date").text(u),l&&l.length&&!e&&(l.val(u),l.trigger("change"))}},f.updateCurrentMonthYear=function(e){var a,t,n=this,r=n.$months,o=n.$el,l=n.monthNames;void 0===e?(n.currentMonth=parseInt(r.eq(1).attr("data-month"),10),n.currentYear=parseInt(r.eq(1).attr("data-year"),10),a=r.eq(1).attr("data-locale-month"),t=r.eq(1).attr("data-locale-year")):(n.currentMonth=parseInt(r.eq("next"===e?r.length-1:0).attr("data-month"),10),n.currentYear=parseInt(r.eq("next"===e?r.length-1:0).attr("data-year"),10),a=r.eq("next"===e?r.length-1:0).attr("data-locale-month"),t=r.eq("next"===e?r.length-1:0).attr("data-locale-year")),o.find(".current-month-value").text(l[a]),o.find(".current-year-value").text(t)},f.update=function(){var e=this,a=e.currentYear,t=e.currentMonth,n=e.$wrapperEl,r=new Date(a,t),o=e.renderMonth(r,"prev"),l=e.renderMonth(r),s=e.renderMonth(r,"next");n.transition(0).html(""+o+l+s).transform("translate3d(0,0,0)"),e.$months=n.find(".calendar-month"),e.monthsTranslate=0,e.setMonthsTranslate(),e.$months.each((function(a){e.emit("local::monthAdd calendarMonthAdd",a)}))},f.onMonthChangeStart=function(e){var a=this,t=a.$months,n=a.currentYear,r=a.currentMonth;a.updateCurrentMonthYear(e),t.removeClass("calendar-month-current calendar-month-prev calendar-month-next");var o="next"===e?t.length-1:0;t.eq(o).addClass("calendar-month-current"),t.eq("next"===e?o-1:o+1).addClass("next"===e?"calendar-month-prev":"calendar-month-next"),a.emit("local::monthYearChangeStart calendarMonthYearChangeStart",a,n,r)},f.onMonthChangeEnd=function(e,a){var t,n,r,o=this,l=o.currentYear,s=o.currentMonth,i=o.$wrapperEl,c=o.monthsTranslate;o.animating=!1,i.find(".calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)").remove(),void 0===e&&(e="next",a=!0),a?(i.find(".calendar-month-next, .calendar-month-prev").remove(),n=o.renderMonth(new Date(l,s),"prev"),t=o.renderMonth(new Date(l,s),"next")):r=o.renderMonth(new Date(l,s),e),("next"===e||a)&&i.append(r||t),("prev"===e||a)&&i.prepend(r||n);var d=i.find(".calendar-month");o.$months=d,o.setMonthsTranslate(c),o.emit("local::monthAdd calendarMonthAdd",o,"next"===e?d.eq(d.length-1)[0]:d.eq(0)[0]),o.emit("local::monthYearChangeEnd calendarMonthYearChangeEnd",o,l,s)},f.setMonthsTranslate=function(e){var a=this,t=a.$months,n=a.isHorizontal,r=a.inverter;e=e||a.monthsTranslate||0,void 0===a.monthsTranslate&&(a.monthsTranslate=e),t.removeClass("calendar-month-current calendar-month-prev calendar-month-next");var o=100*-(e+1)*r,l=100*-e*r,s=100*-(e-1)*r;t.eq(0).transform("translate3d("+(n?o:0)+"%, "+(n?0:o)+"%, 0)").addClass("calendar-month-prev"),t.eq(1).transform("translate3d("+(n?l:0)+"%, "+(n?0:l)+"%, 0)").addClass("calendar-month-current"),t.eq(2).transform("translate3d("+(n?s:0)+"%, "+(n?0:s)+"%, 0)").addClass("calendar-month-next")},f.nextMonth=function(e){var a=this,n=a.params,r=a.$wrapperEl,o=a.inverter,l=a.isHorizontal;void 0!==e&&"object"!=typeof e||(e="",n.animate||(e=0));var s=parseInt(a.$months.eq(a.$months.length-1).attr("data-month"),10),i=parseInt(a.$months.eq(a.$months.length-1).attr("data-year"),10),c=new Date(i,s).getTime(),d=!a.animating;if(n.maxDate&&c>new Date(n.maxDate).getTime())a.resetMonth();else{if(a.monthsTranslate-=1,s===a.currentMonth){var m=100*-a.monthsTranslate*o,u=t(a.renderMonth(c,"next")).transform("translate3d("+(l?m:0)+"%, "+(l?0:m)+"%, 0)").addClass("calendar-month-next");r.append(u[0]),a.$months=r.find(".calendar-month"),a.emit("local::monthAdd calendarMonthAdd",a.$months.eq(a.$months.length-1)[0])}a.animating=!0,a.onMonthChangeStart("next");var h=100*a.monthsTranslate*o;r.transition(e).transform("translate3d("+(l?h:0)+"%, "+(l?0:h)+"%, 0)"),d&&r.transitionEnd((function(){a.onMonthChangeEnd("next")})),n.animate||a.onMonthChangeEnd("next")}},f.prevMonth=function(e){var a=this,n=a.params,r=a.$wrapperEl,o=a.inverter,l=a.isHorizontal;void 0!==e&&"object"!=typeof e||(e="",n.animate||(e=0));var s=parseInt(a.$months.eq(0).attr("data-month"),10),i=parseInt(a.$months.eq(0).attr("data-year"),10),c=new Date(i,s+1,-1).getTime(),d=!a.animating;if(n.minDate){var m=new Date(n.minDate);if(c<(m=new Date(m.getFullYear(),m.getMonth(),1)).getTime())return void a.resetMonth()}if(a.monthsTranslate+=1,s===a.currentMonth){var u=100*-a.monthsTranslate*o,h=t(a.renderMonth(c,"prev")).transform("translate3d("+(l?u:0)+"%, "+(l?0:u)+"%, 0)").addClass("calendar-month-prev");r.prepend(h[0]),a.$months=r.find(".calendar-month"),a.emit("local::monthAdd calendarMonthAdd",a.$months.eq(0)[0])}a.animating=!0,a.onMonthChangeStart("prev");var p=100*a.monthsTranslate*o;r.transition(e).transform("translate3d("+(l?p:0)+"%, "+(l?0:p)+"%, 0)"),d&&r.transitionEnd((function(){a.onMonthChangeEnd("prev")})),n.animate||a.onMonthChangeEnd("prev")},f.resetMonth=function(e){void 0===e&&(e="");var a=this,t=a.$wrapperEl,n=a.inverter,r=a.isHorizontal,o=100*a.monthsTranslate*n;t.transition(e).transform("translate3d("+(r?o:0)+"%, "+(r?0:o)+"%, 0)")},f.setYearMonth=function(e,a,t){var n,r=this,o=r.params,l=r.isHorizontal,s=r.$wrapperEl,i=r.inverter;if(void 0===e&&(e=r.currentYear),void 0===a&&(a=r.currentMonth),void 0!==t&&"object"!=typeof t||(t="",o.animate||(t=0)),n=enew Date(o.maxDate).getTime())return!1;if(o.minDate){var c=new Date(o.minDate);if(n<(c=new Date(c.getFullYear(),c.getMonth(),1)).getTime())return!1}var d=new Date(r.currentYear,r.currentMonth).getTime(),m=n>d?"next":"prev",u=r.renderMonth(new Date(e,a));r.monthsTranslate=r.monthsTranslate||0;var h,p=r.monthsTranslate,v=!r.animating&&0!==t;n>d?(r.monthsTranslate-=1,r.animating||r.$months.eq(r.$months.length-1).remove(),s.append(u),r.$months=s.find(".calendar-month"),h=100*-(p-1)*i,r.$months.eq(r.$months.length-1).transform("translate3d("+(l?h:0)+"%, "+(l?0:h)+"%, 0)").addClass("calendar-month-next")):(r.monthsTranslate+=1,r.animating||r.$months.eq(0).remove(),s.prepend(u),r.$months=s.find(".calendar-month"),h=100*-(p+1)*i,r.$months.eq(0).transform("translate3d("+(l?h:0)+"%, "+(l?0:h)+"%, 0)").addClass("calendar-month-prev")),r.emit("local::monthAdd calendarMonthAdd","next"===m?r.$months.eq(r.$months.length-1)[0]:r.$months.eq(0)[0]),r.animating=!0,r.onMonthChangeStart(m);var f=100*r.monthsTranslate*i;s.transition(t).transform("translate3d("+(l?f:0)+"%, "+(l?0:f)+"%, 0)"),v&&s.transitionEnd((function(){r.onMonthChangeEnd(m,!0)})),o.animate&&0!==t||r.onMonthChangeEnd(m,!0)},f.nextYear=function(){this.setYearMonth(this.currentYear+1)},f.prevYear=function(){this.setYearMonth(this.currentYear-1)},f.dateInRange=function(e,a){var t,n=!1;if(!a)return!1;if(Array.isArray(a))for(t=0;t=new Date(a[t].from).getTime()&&(n=!0):a[t].from?e>=new Date(a[t].from).getTime()&&(n=!0):a[t].to&&e<=new Date(a[t].to).getTime()&&(n=!0):a[t].date?e===new Date(a[t].date).getTime()&&(n=!0):e===new Date(a[t]).getTime()&&(n=!0);else a.from||a.to?a.from&&a.to?e<=new Date(a.to).getTime()&&e>=new Date(a.from).getTime()&&(n=!0):a.from?e>=new Date(a.from).getTime()&&(n=!0):a.to&&e<=new Date(a.to).getTime()&&(n=!0):a.date?n=e===new Date(a.date).getTime():"function"==typeof a&&(n=a(new Date(e)));return n},f.daysInMonth=function(e){var a=new Date(e);return new Date(a.getFullYear(),a.getMonth()+1,0).getDate()},f.renderMonths=function(e){var a=this;return a.params.renderMonths?a.params.renderMonths.call(a,e):$jsx("div",{class:"calendar-months-wrapper"},a.renderMonth(e,"prev"),a.renderMonth(e),a.renderMonth(e,"next"))},f.renderMonth=function(e,a){var t=this,n=t.params,r=t.value;if(n.renderMonth)return n.renderMonth.call(t,e,a);var o=new Date(e),l=o.getFullYear(),s=o.getMonth(),i=t.monthNames.indexOf(t.monthFormatter(o));i<0&&(i=s);var c=t.yearFormatter(o);"next"===a&&(o=11===s?new Date(l+1,0):new Date(l,s+1,1)),"prev"===a&&(o=0===s?new Date(l-1,11):new Date(l,s-1,1)),"next"!==a&&"prev"!==a||(s=o.getMonth(),l=o.getFullYear(),(i=t.monthNames.indexOf(t.monthFormatter(o)))<0&&(i=s),c=t.yearFormatter(o));var d,m,u=[],h=(new Date).setHours(0,0,0,0),p=n.minDate?new Date(n.minDate).getTime():null,v=n.maxDate?new Date(n.maxDate).getTime():null,f=t.daysInMonth(new Date(o.getFullYear(),o.getMonth()).getTime()-864e6),g=t.daysInMonth(o),y=6===n.firstDay?0:1,k="",M=n.firstDay-1+0,w=new Date(o.getFullYear(),o.getMonth()).getDay();if(0===w&&(w=7),r&&r.length)for(var D=0;Dy&&1!==n.firstDay&&(r=(M-=7)-w);var i=e-1+n.firstDay>6?e-1-7+n.firstDay:e-1+n.firstDay;r<0?(r=f+r+1,o+=" calendar-day-prev",a=new Date(s-1<0?l-1:l,s-1<0?11:s-1,r).getTime()):(r+=1)>g?(r-=g,o+=" calendar-day-next",a=new Date(s+1>11?l+1:l,s+1>11?0:s+1,r).getTime()):a=new Date(l,s,r).getTime(),a===h&&(o+=" calendar-day-today"),n.rangePicker&&2===u.length?(a>=u[0]&&a<=u[1]&&(o+=" calendar-day-selected"),u[0]!==u[1]&&(a>u[0]&&a=0&&(o+=" calendar-day-selected"),n.weekendDays.indexOf(i)>=0&&(o+=" calendar-day-weekend");var c="";if(m=!1,n.events&&t.dateInRange(a,n.events)&&(m=!0),m&&(o+=" calendar-day-has-events",c='\n \n \n \n ',Array.isArray(n.events))){var k=[];n.events.forEach((function(e){var n=e.color||"";k.indexOf(n)<0&&t.dateInRange(a,e)&&k.push(n)})),c='\n \n '+k.map((function(e){return('\n \n ').trim()})).join("")+"\n \n "}if(n.rangesClasses)for(var D=0;Dv)&&(d=!0),n.disabled&&t.dateInRange(a,n.disabled)&&(d=!0),d&&(o+=" calendar-day-disabled");var T=(a=new Date(a)).getFullYear(),C=a.getMonth(),P=t.dayFormatter(a);x+=('\n \n '+P+c+"\n
").trim()},C=1;C<=7;C+=1)T(C);k+=''+x+"
"}return k=''+k+"
"},f.renderWeekHeader=function(){var e=this;if(e.params.renderWeekHeader)return e.params.renderWeekHeader.call(e);for(var a=e.params,t="",n=0;n<7;n+=1){var r=n+a.firstDay>6?n-7+a.firstDay:n+a.firstDay;t+=''+e.dayNamesShort[r]+"
"}return $jsx("div",{class:"calendar-week-header"},t)},f.renderMonthSelector=function(){var e=this;return e.params.renderMonthSelector?e.params.renderMonthSelector.call(e):$jsx("div",{class:"calendar-month-selector"},$jsx("a",{class:"link icon-only calendar-prev-month-button"},$jsx("i",{class:"icon icon-prev"})),e.params.monthPicker?$jsx("a",{class:"current-month-value link"}):$jsx("span",{class:"current-month-value"}),$jsx("a",{class:"link icon-only calendar-next-month-button"},$jsx("i",{class:"icon icon-next"})))},f.renderMonthPicker=function(){var e=parseInt(this.$el.find(".calendar-month-current").attr("data-locale-month"),10);return $jsx("div",{class:"calendar-month-picker"},this.monthNames.map((function(a,t){return $jsx("div",{class:"calendar-month-picker-item "+(e===t?"calendar-month-picker-item-current":"")},$jsx("span",null,a))})))},f.renderYearSelector=function(){var e=this;return e.params.renderYearSelector?e.params.renderYearSelector.call(e):$jsx("div",{class:"calendar-year-selector"},$jsx("a",{class:"link icon-only calendar-prev-year-button"},$jsx("i",{class:"icon icon-prev"})),e.params.yearPicker?$jsx("a",{class:"current-year-value link"}):$jsx("span",{class:"current-year-value"}),$jsx("a",{class:"link icon-only calendar-next-year-button"},$jsx("i",{class:"icon icon-next"})))},f.renderYearPicker=function(){var e=this,a=e.currentYear,t=e.params.yearPickerMin||(new Date).getFullYear()-100;e.params.minDate&&(t=Math.max(t,new Date(e.params.minDate).getFullYear()));var n=e.params.yearPickerMax||(new Date).getFullYear()+100;e.params.maxDate&&(n=Math.min(n,new Date(e.params.maxDate).getFullYear()));for(var r=[],o=t;o<=n;o+=1)r.push(o);return $jsx("div",{class:"calendar-year-picker"},r.map((function(t){return $jsx("div",{"data-year":t,class:"calendar-year-picker-item "+(t===a?"calendar-year-picker-item-current":"")},$jsx("span",null,e.yearFormatter((new Date).setFullYear(t))))})))},f.renderTimeSelector=function(){var e,a=this,t=a.value&&a.value[0];return t&&(e=a.timeSelectorFormatter(t)),$jsx("div",{class:"calendar-time-selector"},$jsx("a",{class:"link"},e||a.params.timePickerPlaceholder))},f.renderHeader=function(){var e=this;return e.params.renderHeader?e.params.renderHeader.call(e):$jsx("div",{class:"calendar-header"},$jsx("div",{class:"calendar-selected-date"},e.params.headerPlaceholder))},f.renderFooter=function(){var e=this,a=e.app;return e.params.renderFooter?e.params.renderFooter.call(e):$jsx("div",{class:"calendar-footer"},$jsx("a",{class:("md"===a.theme?"button":"link")+" calendar-close sheet-close popover-close"},e.params.toolbarCloseText))},f.renderToolbar=function(){var e=this;return e.params.renderToolbar?e.params.renderToolbar.call(e,e):$jsx("div",{class:"toolbar toolbar-top no-shadow"},$jsx("div",{class:"toolbar-inner"},e.params.monthSelector?e.renderMonthSelector():"",e.params.yearSelector?e.renderYearSelector():""))},f.renderInline=function(){var e=this,a=e.params,t=a.cssClass,n=a.toolbar,r=a.header,o=a.footer,l=a.rangePicker,s=a.weekHeader,i=e.value,c=e.hasTimePicker,d=i&&i.length?i[0]:(new Date).setHours(0,0,0);return $jsx("div",{class:"calendar calendar-inline "+(l?"calendar-range":"")+" "+(t||"")},r&&e.renderHeader(),n&&e.renderToolbar(),s&&e.renderWeekHeader(),$jsx("div",{class:"calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),o&&e.renderFooter())},f.renderCustomModal=function(){var e=this,a=e.params,t=a.cssClass,n=a.toolbar,r=a.header,o=a.footer,l=a.rangePicker,s=a.weekHeader,i=e.value,c=e.hasTimePicker,d=i&&i.length?i[0]:(new Date).setHours(0,0,0);return $jsx("div",{class:"calendar calendar-modal "+(l?"calendar-range":"")+" "+(t||"")},r&&e.renderHeader(),n&&e.renderToolbar(),s&&e.renderWeekHeader(),$jsx("div",{class:"calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),o&&e.renderFooter())},f.renderSheet=function(){var e=this,a=e.params,t=a.cssClass,n=a.toolbar,r=a.header,o=a.footer,l=a.rangePicker,s=a.weekHeader,i=e.value,c=e.hasTimePicker,d=i&&i.length?i[0]:(new Date).setHours(0,0,0);return $jsx("div",{class:"sheet-modal calendar calendar-sheet "+(l?"calendar-range":"")+" "+(t||"")},r&&e.renderHeader(),n&&e.renderToolbar(),s&&e.renderWeekHeader(),$jsx("div",{class:"sheet-modal-inner calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),o&&e.renderFooter())},f.renderPopover=function(){var e=this,a=e.params,t=a.cssClass,n=a.toolbar,r=a.header,o=a.footer,l=a.rangePicker,s=a.weekHeader,i=e.value,c=e.hasTimePicker,d=i&&i.length?i[0]:(new Date).setHours(0,0,0);return $jsx("div",{class:"popover calendar-popover"},$jsx("div",{class:"popover-inner"},$jsx("div",{class:"calendar "+(l?"calendar-range":"")+" "+(t||"")},r&&e.renderHeader(),n&&e.renderToolbar(),s&&e.renderWeekHeader(),$jsx("div",{class:"calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),o&&e.renderFooter())))},f.render=function(){var e=this,a=e.params;if(a.render)return a.render.call(e);if(!e.inline){var t=a.openIn;return"auto"===t&&(t=e.isPopover()?"popover":"sheet"),"popover"===t?e.renderPopover():"sheet"===t?e.renderSheet():e.renderCustomModal()}return e.renderInline()},f.openTimePicker=function(){var e=this,a=e.$el,t=e.app,n=e.is12HoursFormat;if(a&&a.length){a.append('');for(var r,o=[],l=[],s=n?12:23,i=n?1:0;i<=s;i+=1)o.push(i);for(var c=0;c<=59;c+=1)l.push(c);r=e.value&&e.value.length?[e.value[0].getHours(),e.value[0].getMinutes()]:[(new Date).getHours(),(new Date).getMinutes()],n&&(r.push(r[0]<12?"AM":"PM"),r[0]>12&&(r[0]-=12),0===r[0]&&(r[0]=12)),e.timePickerInstance=t.picker.create({containerEl:a.find(".calendar-time-picker"),value:r,toolbar:!0,rotateEffect:!1,toolbarCloseText:e.params.toolbarCloseText,cols:[{values:o},{divider:!0,content:":"},{values:l,displayValues:l.map((function(e){return e<10?"0"+e:e}))}].concat(n?[{values:["AM","PM"]}]:[])}),e.timePickerInstance.$el.find(".toolbar a").removeClass("sheet-close popover-close").addClass("calendar-time-picker-close")}},f.closeTimePicker=function(){var e=this,a=e.is12HoursFormat;if(e.timePickerInstance){var t=e.timePickerInstance.value,n=parseInt(t[0],10),r=parseInt(t[1],10),o=e.timePickerInstance.value[2];a&&("AM"===o&&12===n?n=0:"PM"===o&&12!==n&&(n+=12));var l=e.value&&e.value.length&&e.value[0];l?(l=new Date(l)).setHours(n,r):(l=new Date).setHours(n,r,0,0),e.setValue([l]),e.timePickerInstance.close(),e.timePickerInstance.destroy(),delete e.timePickerInstance}e.$el&&e.$el.length&&e.$el.find(".calendar-time-picker").remove()},f.onOpen=function(){var e=this,a=e.initialized,t=e.$el,n=e.app,r=e.$inputEl,o=e.inline,l=e.value,s=e.params;e.closing=!1,e.opened=!0,e.opening=!0,e.attachCalendarEvents();var i=!l&&s.value;a?l&&e.setValue(l,0):l?e.setValue(l,0):s.value&&e.setValue(e.normalizeValues(s.value),0),e.updateCurrentMonthYear(),e.monthsTranslate=0,e.setMonthsTranslate(),i?e.updateValue():s.header&&l&&e.updateValue(!0),!o&&r&&r.length&&"md"===n.theme&&r.trigger("focus"),e.initialized=!0,e.$months.each((function(a){e.emit("local::monthAdd calendarMonthAdd",a)})),t&&t.trigger("calendar:open"),r&&r.trigger("calendar:open"),e.emit("local::open calendarOpen",e)},f.onOpened=function(){var e=this;e.opening=!1,e.$el&&e.$el.trigger("calendar:opened"),e.$inputEl&&e.$inputEl.trigger("calendar:opened"),e.emit("local::opened calendarOpened",e)},f.onClose=function(){var e=this,a=e.app;if(e.opening=!1,e.closing=!0,e.$inputEl)if("md"===a.theme)e.$inputEl.trigger("blur");else{var t=e.$inputEl.attr("validate"),n=e.$inputEl.attr("required");t&&n&&a.input.validate(e.$inputEl)}e.detachCalendarEvents&&e.detachCalendarEvents(),e.$el&&e.$el.trigger("calendar:close"),e.$inputEl&&e.$inputEl.trigger("calendar:close"),e.emit("local::close calendarClose",e)},f.onClosed=function(){var e=this;e.opened=!1,e.closing=!1,e.inline||p((function(){e.modal&&e.modal.el&&e.modal.destroy&&(e.params.routableModals||e.modal.destroy()),delete e.modal})),e.timePickerInstance&&(e.timePickerInstance.destroy&&e.timePickerInstance.destroy(),delete e.timePickerInstance),e.$el&&e.$el.trigger("calendar:closed"),e.$inputEl&&e.$inputEl.trigger("calendar:closed"),e.emit("local::closed calendarClosed",e)},f.open=function(){var e=this,a=e.app,n=e.opened,r=e.inline,o=e.$inputEl,l=e.params;if(!n){if(r)return e.$el=t(e.render()),e.$el[0].f7Calendar=e,e.$wrapperEl=e.$el.find(".calendar-months-wrapper"),e.$months=e.$wrapperEl.find(".calendar-month"),e.$containerEl.append(e.$el),e.onOpen(),void e.onOpened();var s=l.openIn;"auto"===s&&(s=e.isPopover()?"popover":"sheet");var i,c=e.render(),d={targetEl:o,scrollToEl:l.scrollToInput?o:void 0,content:c,backdrop:!0===l.backdrop||"popover"===s&&!1!==a.params.popover.backdrop&&!1!==l.backdrop,closeByBackdropClick:l.closeByBackdropClick,on:{open:function(){var a=this;e.modal=a,e.$el="popover"===s?a.$el.find(".calendar"):a.$el,e.$wrapperEl=e.$el.find(".calendar-months-wrapper"),e.$months=e.$wrapperEl.find(".calendar-month"),e.$el[0].f7Calendar=e,"customModal"===s&&t(e.$el).find(".calendar-close").once("click",(function(){e.close()})),e.onOpen()},opened:function(){e.onOpened()},close:function(){e.onClose()},closed:function(){e.onClosed()}}};if("sheet"===s&&(d.push=l.sheetPush,d.swipeToClose=l.sheetSwipeToClose),l.routableModals&&e.view)e.view.router.navigate({url:e.url,route:(i={path:e.url},i[s]=d,i)});else e.modal=a[s].create(d),e.modal.open()}},f.close=function(){var e=this,a=e.opened,t=e.inline;if(a)return t?(e.onClose(),void e.onClosed()):void(e.params.routableModals&&e.view?e.view.router.back():e.modal.close())},f.init=function(){var e=this;if(e.initInput(),e.inline)return e.open(),void e.emit("local::init calendarInit",e);!e.initialized&&e.params.value&&e.setValue(e.normalizeValues(e.params.value)),e.$inputEl&&e.attachInputEvents(),e.params.closeByOutsideClick&&e.attachHtmlEvents(),e.emit("local::init calendarInit",e)},f.destroy=function(){var e=this;if(!e.destroyed){var a=e.$el;e.emit("local::beforeDestroy calendarBeforeDestroy",e),a&&a.trigger("calendar:beforedestroy"),e.close(),e.$inputEl&&e.detachInputEvents(),e.params.closeByOutsideClick&&e.detachHtmlEvents(),e.timePickerInstance&&(e.timePickerInstance.destroy&&e.timePickerInstance.destroy(),delete e.timePickerInstance),a&&a.length&&delete e.$el[0].f7Calendar,v(e),e.destroyed=!0}},s=l,(i=[{key:"view",get:function(){var e,a=this.$inputEl,t=this.app,n=this.params;return n.view?e=n.view:a&&(e=a.parents(".view").length&&a.parents(".view")[0].f7View),e||(e=t.views.main),e}}])&&d(s.prototype,i),c&&d(s,c),l}(l),g={name:"calendar",static:{Calendar:f},create:function(){var e=this;e.calendar=s({defaultSelector:".calendar",constructor:f,app:e,domProp:"f7Calendar"}),e.calendar.close=function(e){void 0===e&&(e=".calendar");var a=t(e);if(0!==a.length){var n=a[0].f7Calendar;!n||n&&!n.opened||n.close()}}},params:{calendar:{dateFormat:void 0,monthNames:"auto",monthNamesShort:"auto",dayNames:"auto",dayNamesShort:"auto",locale:void 0,firstDay:1,weekendDays:[0,6],multiple:!1,rangePicker:!1,rangePickerMinDays:1,rangePickerMaxDays:0,direction:"horizontal",minDate:null,maxDate:null,disabled:null,events:null,rangesClasses:null,touchMove:!0,animate:!0,closeOnSelect:!1,monthSelector:!0,monthPicker:!0,yearSelector:!0,yearPicker:!0,yearPickerMin:void 0,yearPickerMax:void 0,timePicker:!1,timePickerFormat:{hour:"numeric",minute:"numeric"},timePickerPlaceholder:"Select time",weekHeader:!0,value:null,containerEl:null,openIn:"auto",sheetPush:!1,sheetSwipeToClose:void 0,formatValue:null,inputEl:null,inputReadOnly:!0,closeByOutsideClick:!0,scrollToInput:!0,header:!1,headerPlaceholder:"Select date",toolbar:!0,toolbarCloseText:"Done",footer:!1,cssClass:null,routableModals:!1,view:null,url:"date/",backdrop:null,closeByBackdropClick:!0,renderWeekHeader:null,renderMonths:null,renderMonth:null,renderMonthSelector:null,renderYearSelector:null,renderHeader:null,renderFooter:null,renderToolbar:null,renderInline:null,renderPopover:null,renderSheet:null,render:null}}};if(a){if(e.prototype.modules&&e.prototype.modules[g.name])return;e.use(g),e.instance&&(e.instance.useModuleParams(g,e.instance.params),e.instance.useModule(g))}return g}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/calendar/calendar.lazy.js b/www/assets/framework7/components/calendar/calendar.lazy.js
deleted file mode 100644
index 6c5a5ae22..000000000
--- a/www/assets/framework7/components/calendar/calendar.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,n=e.utils,r=e.getDevice,o=e.getSupport,l=e.Class,s=(e.Modal,e.ConstructorMethods),i=(e.ModalMethods,e.$jsx),c=n.extend,d=n.nextTick,m=n.deleteProps;class h extends l{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const n=this;let r,l;if(n.params=c({},e.params.calendar,t),n.params.containerEl&&(r=a(n.params.containerEl),0===r.length))return n;n.params.inputEl&&(l=a(n.params.inputEl));const s="horizontal"===n.params.direction;let i=1;s&&(i=e.rtl?-1:1),c(n,{app:e,$containerEl:r,containerEl:r&&r[0],inline:r&&r.length>0,$inputEl:l,inputEl:l&&l[0],initialized:!1,opened:!1,url:n.params.url,isHorizontal:s,inverter:i,animating:!1,allowTouchMove:!0,hasTimePicker:n.params.timePicker&&!n.params.rangePicker&&!n.params.multiple}),n.dayFormatter=e=>new Intl.DateTimeFormat(n.params.locale,{day:"numeric"}).format(e).replace(/日/,""),n.monthFormatter=e=>new Intl.DateTimeFormat(n.params.locale,{month:"long"}).format(e),n.yearFormatter=e=>new Intl.DateTimeFormat(n.params.locale,{year:"numeric"}).format(e),n.timeSelectorFormatter=e=>new Intl.DateTimeFormat(n.params.locale,n.params.timePickerFormat).format(e);const d=n.timeSelectorFormatter(new Date).toLowerCase();n.is12HoursFormat=d.indexOf("pm")>=0||d.indexOf("am")>=0;let{monthNames:m,monthNamesShort:h,dayNames:p,dayNamesShort:u}=n.params;const{monthNamesIntl:v,monthNamesShortIntl:g,dayNamesIntl:f,dayNamesShortIntl:k}=n.getIntlNames();function y(){n.open()}function $(e){e.preventDefault()}function P(){n.setValue([]),n.opened&&n.update()}function M(e){const t=a(e.target);!n.destroyed&&n.params&&(n.isPopover()||n.opened&&!n.closing&&(t.closest('[class*="backdrop"]').length||n.monthPickerPopover||n.yearPickerPopover||n.timePickerPopover||(l&&l.length>0?t[0]!==l[0]&&0===t.closest(".sheet-modal, .calendar-modal").length&&n.close():0===a(e.target).closest(".sheet-modal, .calendar-modal").length&&n.close())))}return"auto"===m&&(m=v),"auto"===h&&(h=g),"auto"===p&&(p=f),"auto"===u&&(u=k),c(n,{monthNames:m,monthNamesShort:h,dayNames:p,dayNamesShort:u}),c(n,{attachInputEvents(){n.$inputEl.on("click",y),n.$inputEl.on("input:clear",P),n.params.inputReadOnly&&(n.$inputEl.on("focus mousedown",$),n.$inputEl[0]&&(n.$inputEl[0].f7ValidateReadonly=!0))},detachInputEvents(){n.$inputEl.off("click",y),n.$inputEl.off("input:clear",P),n.params.inputReadOnly&&(n.$inputEl.off("focus mousedown",$),n.$inputEl[0]&&delete n.$inputEl[0].f7ValidateReadonly)},attachHtmlEvents(){e.on("click",M)},detachHtmlEvents(){e.off("click",M)}}),n.attachCalendarEvents=function(){let t,r,l,s,i,c,d,m,h,p,u,v,g,f,k=!0;const{$el:y,$wrapperEl:$}=n;function P(e){r||t||(t=!0,l="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,i=l,s="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,c=s,d=(new Date).getTime(),v=0,k=!0,f=void 0,h=n.monthsTranslate)}function M(e){if(!t)return;const{isHorizontal:a}=n;i="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,c="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,void 0===f&&(f=!!(f||Math.abs(c-s)>Math.abs(i-l))),a&&f||!n.allowTouchMove?t=!1:(e.preventDefault(),n.animating?t=!1:(k=!1,r||(r=!0,p=$[0].offsetWidth,u=$[0].offsetHeight,$.transition(0)),g=a?i-l:c-s,v=g/(a?p:u),h=100*(n.monthsTranslate*n.inverter+v),$.transform(`translate3d(${a?h:0}%, ${a?0:h}%, 0)`)))}function D(){if(!t||!r)return t=!1,void(r=!1);t=!1,r=!1,m=(new Date).getTime(),m-d<300?Math.abs(g)<10?n.resetMonth():g>=10?e.rtl?n.nextMonth():n.prevMonth():e.rtl?n.prevMonth():n.nextMonth():v<=-.5?e.rtl?n.prevMonth():n.nextMonth():v>=.5?e.rtl?n.nextMonth():n.prevMonth():n.resetMonth(),setTimeout((()=>{k=!0}),100)}function w(e){if(!k)return;let t=a(e.target).parents(".calendar-day");if(0===t.length&&a(e.target).hasClass("calendar-day")&&(t=a(e.target)),0===t.length)return;if(t.hasClass("calendar-day-disabled"))return;n.params.rangePicker||(t.hasClass("calendar-day-next")&&n.nextMonth(),t.hasClass("calendar-day-prev")&&n.prevMonth());const r=parseInt(t.attr("data-year"),10),o=parseInt(t.attr("data-month"),10),l=parseInt(t.attr("data-day"),10);if(n.emit("local::dayClick calendarDayClick",n,t[0],r,o,l),!t.hasClass("calendar-day-selected")||n.params.multiple||n.params.rangePicker){const e=new Date(r,o,l,0,0,0);n.hasTimePicker&&(n.value&&n.value[0]?e.setHours(n.value[0].getHours(),n.value[0].getMinutes()):e.setHours((new Date).getHours(),(new Date).getMinutes())),n.addValue(e)}n.params.closeOnSelect&&(n.params.rangePicker&&2===n.value.length||!n.params.rangePicker)&&n.close()}function T(){n.nextMonth()}function C(){n.prevMonth()}function E(){n.nextYear()}function I(){n.prevYear()}function x(){n.openMonthPicker()}function b(){n.openYearPicker()}function Y(){n.openTimePicker()}const F=!("touchstart"!==e.touchEvents.start||!o().passiveListener)&&{passive:!0,capture:!1};y.find(".calendar-prev-month-button").on("click",C),y.find(".calendar-next-month-button").on("click",T),y.find(".calendar-prev-year-button").on("click",I),y.find(".calendar-next-year-button").on("click",E),n.params.monthPicker&&y.find(".current-month-value").on("click",x),n.params.yearPicker&&y.find(".current-year-value").on("click",b),n.hasTimePicker&&y.find(".calendar-time-selector a").on("click",Y),$.on("click",w),n.params.touchMove&&($.on(e.touchEvents.start,P,F),e.on("touchmove:active",M),e.on("touchend:passive",D)),n.detachCalendarEvents=function(){y.find(".calendar-prev-month-button").off("click",C),y.find(".calendar-next-month-button").off("click",T),y.find(".calendar-prev-year-button").off("click",I),y.find(".calendar-next-year-button").off("click",E),n.params.monthPicker&&y.find(".current-month-value").off("click",x),n.params.yearPicker&&y.find(".current-year-value").off("click",b),n.hasTimePicker&&y.find(".calendar-time-selector a").off("click",Y),$.off("click",w),n.params.touchMove&&($.off(e.touchEvents.start,P,F),e.off("touchmove:active",M),e.off("touchend:passive",D))}},n.init(),n}get view(){const{$inputEl:e,app:t,params:a}=this;let n;return a.view?n=a.view:e&&(n=e.parents(".view").length&&e.parents(".view")[0].f7View),n||(n=t.views.main),n}getIntlNames(){const e=this,t=e.params.locale,a=[],n=[],r=[],o=[],l=new Intl.DateTimeFormat(t,{month:"long"}),s=new Intl.DateTimeFormat(t,{month:"short"}),i=new Intl.DateTimeFormat(t,{weekday:"long"}),c=new Intl.DateTimeFormat(t,{weekday:"short"});let d,m,h;for(let t=0;t<24;t+=1){const r=(new Date).setMonth(t,1),o=e.yearFormatter(r);d&&o!==d&&(m&&(h=!0),m=!0,d=o),d||(d=o),m&&d===o&&!h&&(a.push(l.format(r)),n.push(s.format(r)))}const p=(new Date).getDay();for(let e=0;e<7;e+=1){const t=(new Date).getTime()+24*(e-p)*60*60*1e3;r.push(i.format(t)),o.push(c.format(t))}return{monthNamesIntl:a,monthNamesShortIntl:n,dayNamesIntl:r,dayNamesShortIntl:o}}normalizeDate(e){const t=new Date(e);return this.hasTimePicker?new Date(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes()):new Date(t.getFullYear(),t.getMonth(),t.getDate())}normalizeValues(e){const t=this;let a=[];return e&&Array.isArray(e)&&(a=e.map((e=>t.normalizeDate(e)))),a}initInput(){const e=this;e.$inputEl&&e.params.inputReadOnly&&e.$inputEl.prop("readOnly",!0)}isPopover(){const e=this,{app:t,modal:a,params:n}=e,o=r();if("sheet"===n.openIn)return!1;if(a&&"popover"!==a.type)return!1;if(!e.inline&&e.inputEl){if("popover"===n.openIn)return!0;if(o.ios)return!!o.ipad;if(t.width>=768)return!0;if(o.desktop&&"aurora"===t.theme)return!0}return!1}formatDate(e){const t=this,a=new Date(e),n=a.getFullYear(),r=a.getMonth(),o=r+1,l=a.getDate(),s=a.getDay(),{monthNames:i,monthNamesShort:c,dayNames:d,dayNamesShort:m}=t,{dateFormat:h,locale:p}=t.params;function u(e){return e<10?`0${e}`:e}if("string"==typeof h){const e={yyyy:n,yy:String(n).substring(2),mm:u(o),m:o,MM:i[r],M:c[r],dd:u(l),d:l,DD:d[s],D:m[s]};if(t.params.timePicker){const t=a.getHours(),n=a.getMinutes(),r=a.getSeconds();let o=t;t>12&&(o=t-12),0===t&&(o=12);const l=t>=12&&0!==t?"pm":"am";Object.assign(e,{HH:u(t),H:t,hh:u(o),h:o,ss:u(r),s:r,":mm":u(n),":m":n,a:l,A:l.toUpperCase()})}const p=new RegExp(Object.keys(e).map((e=>`(${e})`)).join("|"),"g");return h.replace(p,(t=>t in e?e[t]:t))}if("function"==typeof h)return h(a);return new Intl.DateTimeFormat(p,h).format(a)}formatValue(){const e=this,{value:t}=e;return e.params.formatValue?e.params.formatValue.call(e,t):t.map((t=>e.formatDate(t))).join(e.params.rangePicker?" - ":", ")}addValue(e){const t=this,{multiple:a,rangePicker:n,rangePickerMinDays:r,rangePickerMaxDays:o}=t.params;if(a){let a;t.value||(t.value=[]);for(let n=0;n=60*(r-1)*60*24*1e3&&(0===o||Math.abs(t.value[0].getTime()-e.getTime())<=60*(o-1)*60*24*1e3)?t.value.push(e):t.value=[],t.value.sort(((e,t)=>e-t)),t.updateValue()):(t.value=[e],t.updateValue())}setValue(e){const t=this,a=t.value;if(Array.isArray(a)&&Array.isArray(e)&&a.length===e.length){let t=!0;if(a.forEach(((a,n)=>{a!==e[n]&&(t=!1)})),t)return}t.value=e,t.updateValue()}getValue(){return this.value}updateValue(e){const t=this,{$el:a,$wrapperEl:n,$inputEl:r,value:o,params:l}=t;let s;if(a&&a.length>0){let e;if(n.find(".calendar-day-selected").removeClass("calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right"),l.rangePicker&&2===o.length){const t=new Date(o[0]).getTime(),a=new Date(o[1]).getTime();for(s=t;s<=a;s+=864e5){e=new Date(s);let r="calendar-day-selected";t!==a&&(s!==t&&s!==a&&(r+=" calendar-day-selected-range"),s===t&&(r+=" calendar-day-selected-left"),s===a&&(r+=" calendar-day-selected-right")),n.find(`.calendar-day[data-date="${e.getFullYear()}-${e.getMonth()}-${e.getDate()}"]`).addClass(r)}e=new Date(t),n.find(`.calendar-day[data-date="${e.getFullYear()}-${e.getMonth()}-${e.getDate()}"]`).removeClass("calendar-day-selected-range").addClass("calendar-day-selected calendar-day-selected-left"),e=new Date(a),n.find(`.calendar-day[data-date="${e.getFullYear()}-${e.getMonth()}-${e.getDate()}"]`).removeClass("calendar-day-selected-range").addClass("calendar-day-selected calendar-day-selected-right")}else for(s=0;s0&&t.hasTimePicker&&a.find(".calendar-time-selector a").text(o&&o.length?t.timeSelectorFormatter(o[0]):t.params.timePickerPlaceholder),r&&r.length||l.header){const n=t.formatValue(o);l.header&&a&&a.length&&a.find(".calendar-selected-date").text(n),r&&r.length&&!e&&(r.val(n),r.trigger("change"))}}updateCurrentMonthYear(e){const t=this,{$months:a,$el:n,monthNames:r}=t;let o,l;void 0===e?(t.currentMonth=parseInt(a.eq(1).attr("data-month"),10),t.currentYear=parseInt(a.eq(1).attr("data-year"),10),o=a.eq(1).attr("data-locale-month"),l=a.eq(1).attr("data-locale-year")):(t.currentMonth=parseInt(a.eq("next"===e?a.length-1:0).attr("data-month"),10),t.currentYear=parseInt(a.eq("next"===e?a.length-1:0).attr("data-year"),10),o=a.eq("next"===e?a.length-1:0).attr("data-locale-month"),l=a.eq("next"===e?a.length-1:0).attr("data-locale-year")),n.find(".current-month-value").text(r[o]),n.find(".current-year-value").text(l)}update(){const e=this,{currentYear:t,currentMonth:a,$wrapperEl:n}=e,r=new Date(t,a),o=e.renderMonth(r,"prev"),l=e.renderMonth(r),s=e.renderMonth(r,"next");n.transition(0).html(`${o}${l}${s}`).transform("translate3d(0,0,0)"),e.$months=n.find(".calendar-month"),e.monthsTranslate=0,e.setMonthsTranslate(),e.$months.each((t=>{e.emit("local::monthAdd calendarMonthAdd",t)}))}onMonthChangeStart(e){const t=this,{$months:a,currentYear:n,currentMonth:r}=t;t.updateCurrentMonthYear(e),a.removeClass("calendar-month-current calendar-month-prev calendar-month-next");const o="next"===e?a.length-1:0;a.eq(o).addClass("calendar-month-current"),a.eq("next"===e?o-1:o+1).addClass("next"===e?"calendar-month-prev":"calendar-month-next"),t.emit("local::monthYearChangeStart calendarMonthYearChangeStart",t,n,r)}onMonthChangeEnd(e,t){const a=this,{currentYear:n,currentMonth:r,$wrapperEl:o,monthsTranslate:l}=a;let s,i,c;a.animating=!1,o.find(".calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)").remove(),void 0===e&&(e="next",t=!0),t?(o.find(".calendar-month-next, .calendar-month-prev").remove(),i=a.renderMonth(new Date(n,r),"prev"),s=a.renderMonth(new Date(n,r),"next")):c=a.renderMonth(new Date(n,r),e),("next"===e||t)&&o.append(c||s),("prev"===e||t)&&o.prepend(c||i);const d=o.find(".calendar-month");a.$months=d,a.setMonthsTranslate(l),a.emit("local::monthAdd calendarMonthAdd",a,"next"===e?d.eq(d.length-1)[0]:d.eq(0)[0]),a.emit("local::monthYearChangeEnd calendarMonthYearChangeEnd",a,n,r)}setMonthsTranslate(e){const t=this,{$months:a,isHorizontal:n,inverter:r}=t;e=e||t.monthsTranslate||0,void 0===t.monthsTranslate&&(t.monthsTranslate=e),a.removeClass("calendar-month-current calendar-month-prev calendar-month-next");const o=100*-(e+1)*r,l=100*-e*r,s=100*-(e-1)*r;a.eq(0).transform(`translate3d(${n?o:0}%, ${n?0:o}%, 0)`).addClass("calendar-month-prev"),a.eq(1).transform(`translate3d(${n?l:0}%, ${n?0:l}%, 0)`).addClass("calendar-month-current"),a.eq(2).transform(`translate3d(${n?s:0}%, ${n?0:s}%, 0)`).addClass("calendar-month-next")}nextMonth(e){const t=this,{params:n,$wrapperEl:r,inverter:o,isHorizontal:l}=t;void 0!==e&&"object"!=typeof e||(e="",n.animate||(e=0));const s=parseInt(t.$months.eq(t.$months.length-1).attr("data-month"),10),i=parseInt(t.$months.eq(t.$months.length-1).attr("data-year"),10),c=new Date(i,s).getTime(),d=!t.animating;if(n.maxDate&&c>new Date(n.maxDate).getTime())return void t.resetMonth();if(t.monthsTranslate-=1,s===t.currentMonth){const e=100*-t.monthsTranslate*o,n=a(t.renderMonth(c,"next")).transform(`translate3d(${l?e:0}%, ${l?0:e}%, 0)`).addClass("calendar-month-next");r.append(n[0]),t.$months=r.find(".calendar-month"),t.emit("local::monthAdd calendarMonthAdd",t.$months.eq(t.$months.length-1)[0])}t.animating=!0,t.onMonthChangeStart("next");const m=100*t.monthsTranslate*o;r.transition(e).transform(`translate3d(${l?m:0}%, ${l?0:m}%, 0)`),d&&r.transitionEnd((()=>{t.onMonthChangeEnd("next")})),n.animate||t.onMonthChangeEnd("next")}prevMonth(e){const t=this,{params:n,$wrapperEl:r,inverter:o,isHorizontal:l}=t;void 0!==e&&"object"!=typeof e||(e="",n.animate||(e=0));const s=parseInt(t.$months.eq(0).attr("data-month"),10),i=parseInt(t.$months.eq(0).attr("data-year"),10),c=new Date(i,s+1,-1).getTime(),d=!t.animating;if(n.minDate){let e=new Date(n.minDate);if(e=new Date(e.getFullYear(),e.getMonth(),1),c{t.onMonthChangeEnd("prev")})),n.animate||t.onMonthChangeEnd("prev")}resetMonth(e){void 0===e&&(e="");const{$wrapperEl:t,inverter:a,isHorizontal:n,monthsTranslate:r}=this,o=100*r*a;t.transition(e).transform(`translate3d(${n?o:0}%, ${n?0:o}%, 0)`)}setYearMonth(e,t,a){const n=this,{params:r,isHorizontal:o,$wrapperEl:l,inverter:s}=n;let i;if(void 0===e&&(e=n.currentYear),void 0===t&&(t=n.currentMonth),void 0!==a&&"object"!=typeof a||(a="",r.animate||(a=0)),i=enew Date(r.maxDate).getTime())return!1;if(r.minDate){let e=new Date(r.minDate);if(e=new Date(e.getFullYear(),e.getMonth(),1),ic?"next":"prev",m=n.renderMonth(new Date(e,t));n.monthsTranslate=n.monthsTranslate||0;const h=n.monthsTranslate;let p;const u=!n.animating&&0!==a;i>c?(n.monthsTranslate-=1,n.animating||n.$months.eq(n.$months.length-1).remove(),l.append(m),n.$months=l.find(".calendar-month"),p=100*-(h-1)*s,n.$months.eq(n.$months.length-1).transform(`translate3d(${o?p:0}%, ${o?0:p}%, 0)`).addClass("calendar-month-next")):(n.monthsTranslate+=1,n.animating||n.$months.eq(0).remove(),l.prepend(m),n.$months=l.find(".calendar-month"),p=100*-(h+1)*s,n.$months.eq(0).transform(`translate3d(${o?p:0}%, ${o?0:p}%, 0)`).addClass("calendar-month-prev")),n.emit("local::monthAdd calendarMonthAdd","next"===d?n.$months.eq(n.$months.length-1)[0]:n.$months.eq(0)[0]),n.animating=!0,n.onMonthChangeStart(d);const v=100*n.monthsTranslate*s;l.transition(a).transform(`translate3d(${o?v:0}%, ${o?0:v}%, 0)`),u&&l.transitionEnd((()=>{n.onMonthChangeEnd(d,!0)})),r.animate&&0!==a||n.onMonthChangeEnd(d,!0)}nextYear(){this.setYearMonth(this.currentYear+1)}prevYear(){this.setYearMonth(this.currentYear-1)}dateInRange(e,t){let a,n=!1;if(!t)return!1;if(Array.isArray(t))for(a=0;a=new Date(t[a].from).getTime()&&(n=!0):t[a].from?e>=new Date(t[a].from).getTime()&&(n=!0):t[a].to&&e<=new Date(t[a].to).getTime()&&(n=!0):t[a].date?e===new Date(t[a].date).getTime()&&(n=!0):e===new Date(t[a]).getTime()&&(n=!0);else t.from||t.to?t.from&&t.to?e<=new Date(t.to).getTime()&&e>=new Date(t.from).getTime()&&(n=!0):t.from?e>=new Date(t.from).getTime()&&(n=!0):t.to&&e<=new Date(t.to).getTime()&&(n=!0):t.date?n=e===new Date(t.date).getTime():"function"==typeof t&&(n=t(new Date(e)));return n}daysInMonth(e){const t=new Date(e);return new Date(t.getFullYear(),t.getMonth()+1,0).getDate()}renderMonths(e){const t=this;return t.params.renderMonths?t.params.renderMonths.call(t,e):i("div",{class:"calendar-months-wrapper"},t.renderMonth(e,"prev"),t.renderMonth(e),t.renderMonth(e,"next"))}renderMonth(e,t){const a=this,{params:n,value:r}=a;if(n.renderMonth)return n.renderMonth.call(a,e,t);let o=new Date(e),l=o.getFullYear(),s=o.getMonth(),i=a.monthNames.indexOf(a.monthFormatter(o));i<0&&(i=s);let c=a.yearFormatter(o);"next"===t&&(o=11===s?new Date(l+1,0):new Date(l,s+1,1)),"prev"===t&&(o=0===s?new Date(l-1,11):new Date(l,s-1,1)),"next"!==t&&"prev"!==t||(s=o.getMonth(),l=o.getFullYear(),i=a.monthNames.indexOf(a.monthFormatter(o)),i<0&&(i=s),c=a.yearFormatter(o));const d=[],m=(new Date).setHours(0,0,0,0),h=n.minDate?new Date(n.minDate).getTime():null,p=n.maxDate?new Date(n.maxDate).getTime():null,u=a.daysInMonth(new Date(o.getFullYear(),o.getMonth()).getTime()-864e6),v=a.daysInMonth(o),g=6===n.firstDay?0:1;let f,k,y="",$=n.firstDay-1+0,P=new Date(o.getFullYear(),o.getMonth()).getDay();if(0===P&&(P=7),r&&r.length)for(let e=0;eg&&1!==n.firstDay&&($-=7,i=$-P);const y=r-1+n.firstDay>6?r-1-7+n.firstDay:r-1+n.firstDay;i<0?(i=u+i+1,c+=" calendar-day-prev",o=new Date(s-1<0?l-1:l,s-1<0?11:s-1,i).getTime()):(i+=1,i>v?(i-=v,c+=" calendar-day-next",o=new Date(s+1>11?l+1:l,s+1>11?0:s+1,i).getTime()):o=new Date(l,s,i).getTime()),o===m&&(c+=" calendar-day-today"),n.rangePicker&&2===d.length?(o>=d[0]&&o<=d[1]&&(c+=" calendar-day-selected"),d[0]!==d[1]&&(o>d[0]&&o=0&&(c+=" calendar-day-selected"),n.weekendDays.indexOf(y)>=0&&(c+=" calendar-day-weekend");let M="";if(k=!1,n.events&&a.dateInRange(o,n.events)&&(k=!0),k&&(c+=" calendar-day-has-events",M='\n \n \n \n ',Array.isArray(n.events))){const e=[];n.events.forEach((t=>{const n=t.color||"";e.indexOf(n)<0&&a.dateInRange(o,t)&&e.push(n)})),M=`\n \n ${e.map((e=>`\n \n `.trim())).join("")}\n \n `}if(n.rangesClasses)for(let e=0;ep)&&(f=!0),n.disabled&&a.dateInRange(o,n.disabled)&&(f=!0),f&&(c+=" calendar-day-disabled"),o=new Date(o);const D=o.getFullYear(),w=o.getMonth();t+=`\n \n ${a.dayFormatter(o)}${M}\n
`.trim()}y+=`${t}
`}return y=`${y}
`,y}renderWeekHeader(){const e=this;if(e.params.renderWeekHeader)return e.params.renderWeekHeader.call(e);const{params:t}=e;let a="";for(let n=0;n<7;n+=1){const r=n+t.firstDay>6?n-7+t.firstDay:n+t.firstDay;a+=`${e.dayNamesShort[r]}
`}return i("div",{class:"calendar-week-header"},a)}renderMonthSelector(){const e=this;return e.params.renderMonthSelector?e.params.renderMonthSelector.call(e):i("div",{class:"calendar-month-selector"},i("a",{class:"link icon-only calendar-prev-month-button"},i("i",{class:"icon icon-prev"})),e.params.monthPicker?i("a",{class:"current-month-value link"}):i("span",{class:"current-month-value"}),i("a",{class:"link icon-only calendar-next-month-button"},i("i",{class:"icon icon-next"})))}renderYearSelector(){const e=this;return e.params.renderYearSelector?e.params.renderYearSelector.call(e):i("div",{class:"calendar-year-selector"},i("a",{class:"link icon-only calendar-prev-year-button"},i("i",{class:"icon icon-prev"})),e.params.yearPicker?i("a",{class:"current-year-value link"}):i("span",{class:"current-year-value"}),i("a",{class:"link icon-only calendar-next-year-button"},i("i",{class:"icon icon-next"})))}renderTimeSelector(){const e=this,t=e.value&&e.value[0];let a;return t&&(a=e.timeSelectorFormatter(t)),i("div",{class:"calendar-time-selector"},i("span",null,e.params.timePickerLabel),i("a",{class:"link"},a||e.params.timePickerPlaceholder))}renderHeader(){const e=this;return e.params.renderHeader?e.params.renderHeader.call(e):i("div",{class:"calendar-header"},i("div",{class:"calendar-selected-date"},e.params.headerPlaceholder))}renderFooter(){const e=this,t=e.app;return e.params.renderFooter?e.params.renderFooter.call(e):i("div",{class:"calendar-footer"},i("a",{class:("md"===t.theme?"button":"link")+" calendar-close sheet-close popover-close"},e.params.toolbarCloseText))}renderToolbar(){const e=this;return e.params.renderToolbar?e.params.renderToolbar.call(e,e):i("div",{class:"toolbar toolbar-top no-shadow"},i("div",{class:"toolbar-inner"},e.params.monthSelector?e.renderMonthSelector():"",e.params.yearSelector?e.renderYearSelector():""))}renderInline(){const e=this,{cssClass:t,toolbar:a,header:n,footer:r,rangePicker:o,weekHeader:l}=e.params,{value:s,hasTimePicker:c}=e,d=s&&s.length?s[0]:(new Date).setHours(0,0,0);return i("div",{class:`calendar calendar-inline ${o?"calendar-range":""} ${t||""}`},n&&e.renderHeader(),a&&e.renderToolbar(),l&&e.renderWeekHeader(),i("div",{class:"calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),r&&e.renderFooter())}renderCustomModal(){const e=this,{cssClass:t,toolbar:a,header:n,footer:r,rangePicker:o,weekHeader:l}=e.params,{value:s,hasTimePicker:c}=e,d=s&&s.length?s[0]:(new Date).setHours(0,0,0);return i("div",{class:`calendar calendar-modal ${o?"calendar-range":""} ${t||""}`},n&&e.renderHeader(),a&&e.renderToolbar(),l&&e.renderWeekHeader(),i("div",{class:"calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),r&&e.renderFooter())}renderSheet(){const e=this,{cssClass:t,toolbar:a,header:n,footer:r,rangePicker:o,weekHeader:l}=e.params,{value:s,hasTimePicker:c}=e,d=s&&s.length?s[0]:(new Date).setHours(0,0,0);return i("div",{class:`sheet-modal calendar calendar-sheet ${o?"calendar-range":""} ${t||""}`},n&&e.renderHeader(),a&&e.renderToolbar(),l&&e.renderWeekHeader(),i("div",{class:"sheet-modal-inner calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),r&&e.renderFooter())}renderPopover(){const e=this,{cssClass:t,toolbar:a,header:n,footer:r,rangePicker:o,weekHeader:l}=e.params,{value:s,hasTimePicker:c}=e,d=s&&s.length?s[0]:(new Date).setHours(0,0,0);return i("div",{class:"popover calendar-popover"},i("div",{class:"popover-inner"},i("div",{class:`calendar ${o?"calendar-range":""} ${t||""}`},n&&e.renderHeader(),a&&e.renderToolbar(),l&&e.renderWeekHeader(),i("div",{class:"calendar-months"},e.renderMonths(d)),c&&e.renderTimeSelector(),r&&e.renderFooter())))}render(){const e=this,{params:t}=e;if(t.render)return t.render.call(e);if(!e.inline){let a=t.openIn;return"auto"===a&&(a=e.isPopover()?"popover":"sheet"),"popover"===a?e.renderPopover():"sheet"===a?e.renderSheet():e.renderCustomModal()}return e.renderInline()}openMonthPicker(){const e=this,{$el:t,app:a}=e;if(!t||!t.length)return;t.append(''),e.monthPickerPopover=a.popover.create({el:t.find(".calendar-month-picker-popover"),targetEl:t.find(".calendar-month-selector"),backdrop:!0,backdropUnique:!0,on:{close(){e.closeMonthPicker()},closed(){e.monthPickerPopover.$el&&e.monthPickerPopover.$el.remove(),e.monthPickerPopover.destroy(),e.monthPickerInstance&&(e.monthPickerInstance.close(),e.monthPickerInstance.destroy()),delete e.monthPickerInstance,delete e.monthPickerPopover}}}),e.monthPickerPopover.open();const n=parseInt(e.$el.find(".calendar-month-current").attr("data-locale-month"),10),r=[],o=[];e.monthNames.forEach(((e,t)=>{r.push(t),o.push(e)})),e.monthPickerInstance=a.picker.create({containerEl:e.monthPickerPopover.$el.find(".calendar-month-picker"),value:[n],toolbar:!1,rotateEffect:!1,toolbarCloseText:e.params.toolbarCloseText,cols:[{values:r,displayValues:o}]})}closeMonthPicker(){const e=this;e.monthPickerPopover&&e.monthPickerPopover.opened&&e.monthPickerPopover.close();const t=e.monthPickerInstance.value[0]-(parseInt(e.$el.find(".calendar-month-current").attr("data-locale-month"),10)-e.currentMonth);e.setYearMonth(e.currentYear,t,0)}openYearPicker(){const e=this,{$el:t,app:a}=e;if(!t||!t.length)return;t.append(''),e.yearPickerPopover=a.popover.create({el:t.find(".calendar-year-picker-popover"),targetEl:t.find(".calendar-year-selector"),backdrop:!0,backdropUnique:!0,on:{close(){e.closeYearPicker()},closed(){e.yearPickerPopover.$el&&e.yearPickerPopover.$el.remove(),e.yearPickerPopover.destroy(),e.yearPickerInstance&&(e.yearPickerInstance.close(),e.yearPickerInstance.destroy()),delete e.yearPickerInstance,delete e.yearPickerPopover}}}),e.yearPickerPopover.open();const n=e.currentYear;let r=e.params.yearPickerMin||(new Date).getFullYear()-100;e.params.minDate&&(r=Math.max(r,new Date(e.params.minDate).getFullYear()));let o=e.params.yearPickerMax||(new Date).getFullYear()+100;e.params.maxDate&&(o=Math.min(o,new Date(e.params.maxDate).getFullYear()));const l=[];for(let e=r;e<=o;e+=1)l.push(e);e.yearPickerInstance=a.picker.create({containerEl:e.yearPickerPopover.$el.find(".calendar-year-picker"),value:[n],toolbar:!1,rotateEffect:!1,toolbarCloseText:e.params.toolbarCloseText,cols:[{values:l}]})}closeYearPicker(){const e=this;e.yearPickerPopover&&e.yearPickerPopover.opened&&e.yearPickerPopover.close(),e.setYearMonth(e.yearPickerInstance.value[0],void 0,0)}openTimePicker(){const e=this,{$el:t,app:a,is12HoursFormat:n}=e;if(!t||!t.length)return;t.append('');const r=[],o=[],l=n?12:23;for(let e=n?1:0;e<=l;e+=1)r.push(e);for(let e=0;e<=59;e+=1)o.push(e);let s;s=e.value&&e.value.length?[e.value[0].getHours(),e.value[0].getMinutes()]:[(new Date).getHours(),(new Date).getMinutes()],n&&(s.push(s[0]<12?"AM":"PM"),s[0]>12&&(s[0]-=12),0===s[0]&&(s[0]=12)),e.timePickerPopover=a.popover.create({el:t.find(".calendar-time-picker-popover"),targetEl:t.find(".calendar-time-selector .link"),backdrop:!0,backdropUnique:!0,on:{close(){e.closeTimePicker()},closed(){e.timePickerPopover.$el&&e.timePickerPopover.$el.remove(),e.timePickerPopover.destroy(),e.timePickerInstance&&(e.timePickerInstance.close(),e.timePickerInstance.destroy()),delete e.timePickerInstance,delete e.timePickerPopover}}}),e.timePickerPopover.open(),e.timePickerInstance=a.picker.create({containerEl:e.timePickerPopover.$el.find(".calendar-time-picker"),value:s,toolbar:!1,rotateEffect:!1,toolbarCloseText:e.params.toolbarCloseText,cols:[{values:r},{divider:!0,content:":"},{values:o,displayValues:o.map((e=>e<10?`0${e}`:e))},...n?[{values:["AM","PM"]}]:[]]})}closeTimePicker(){const e=this,{is12HoursFormat:t}=e;if(e.timePickerInstance){const a=e.timePickerInstance.value;let n=parseInt(a[0],10);const r=parseInt(a[1],10),o=e.timePickerInstance.value[2];t&&("AM"===o&&12===n?n=0:"PM"===o&&12!==n&&(n+=12));let l=e.value&&e.value.length&&e.value[0];l?(l=new Date(l),l.setHours(n,r)):(l=new Date,l.setHours(n,r,0,0)),e.setValue([l]),e.timePickerPopover&&e.timePickerPopover.opened&&e.timePickerPopover.close()}}onOpen(){const e=this,{initialized:t,$el:a,app:n,$inputEl:r,inline:o,value:l,params:s}=e;e.closing=!1,e.opened=!0,e.opening=!0,e.attachCalendarEvents();const i=!l&&s.value;t?l&&e.setValue(l,0):l?e.setValue(l,0):s.value&&e.setValue(e.normalizeValues(s.value),0),e.updateCurrentMonthYear(),e.monthsTranslate=0,e.setMonthsTranslate(),i?e.updateValue():s.header&&l&&e.updateValue(!0),!o&&r&&r.length&&"md"===n.theme&&r.trigger("focus"),e.initialized=!0,e.$months.each((t=>{e.emit("local::monthAdd calendarMonthAdd",t)})),a&&a.trigger("calendar:open"),r&&r.trigger("calendar:open"),e.emit("local::open calendarOpen",e)}onOpened(){const e=this;e.opening=!1,e.$el&&e.$el.trigger("calendar:opened"),e.$inputEl&&e.$inputEl.trigger("calendar:opened"),e.emit("local::opened calendarOpened",e)}onClose(){const e=this,t=e.app;if(e.opening=!1,e.closing=!0,e.$inputEl)if("md"===t.theme)e.$inputEl.trigger("blur");else{const a=e.$inputEl.attr("validate"),n=e.$inputEl.attr("required");a&&n&&t.input.validate(e.$inputEl)}e.detachCalendarEvents&&e.detachCalendarEvents(),e.$el&&e.$el.trigger("calendar:close"),e.$inputEl&&e.$inputEl.trigger("calendar:close"),e.emit("local::close calendarClose",e)}onClosed(){const e=this;e.opened=!1,e.closing=!1,e.inline||d((()=>{e.modal&&e.modal.el&&e.modal.destroy&&(e.params.routableModals||e.modal.destroy()),delete e.modal})),e.timePickerInstance&&(e.timePickerInstance.destroy&&e.timePickerInstance.destroy(),delete e.timePickerInstance),e.$el&&e.$el.trigger("calendar:closed"),e.$inputEl&&e.$inputEl.trigger("calendar:closed"),e.emit("local::closed calendarClosed",e)}open(){const e=this,{app:t,opened:n,inline:r,$inputEl:o,params:l}=e;if(n)return;if(r)return e.$el=a(e.render()),e.$el[0].f7Calendar=e,e.$wrapperEl=e.$el.find(".calendar-months-wrapper"),e.$months=e.$wrapperEl.find(".calendar-month"),e.$containerEl.append(e.$el),e.onOpen(),void e.onOpened();let s=l.openIn;"auto"===s&&(s=e.isPopover()?"popover":"sheet");const i=e.render(),c={targetEl:o,scrollToEl:l.scrollToInput?o:void 0,content:i,backdrop:!0===l.backdrop||"popover"===s&&!1!==t.params.popover.backdrop&&!1!==l.backdrop,closeByBackdropClick:l.closeByBackdropClick,on:{open(){const t=this;e.modal=t,e.$el="popover"===s?t.$el.find(".calendar"):t.$el,e.$wrapperEl=e.$el.find(".calendar-months-wrapper"),e.$months=e.$wrapperEl.find(".calendar-month"),e.$el[0].f7Calendar=e,"customModal"===s&&a(e.$el).find(".calendar-close").once("click",(()=>{e.close()})),e.onOpen()},opened(){e.onOpened()},close(){e.onClose()},closed(){e.onClosed()}}};"sheet"===s&&(c.push=l.sheetPush,c.swipeToClose=l.sheetSwipeToClose),l.routableModals&&e.view?e.view.router.navigate({url:e.url,route:{path:e.url,[s]:c}}):(e.modal=t[s].create(c),e.modal.open())}close(){const e=this,{opened:t,inline:a}=e;if(t)return a?(e.onClose(),void e.onClosed()):void(e.params.routableModals&&e.view?e.view.router.back():e.modal.close())}init(){const e=this;if(e.initInput(),e.inline)return e.open(),void e.emit("local::init calendarInit",e);!e.initialized&&e.params.value&&e.setValue(e.normalizeValues(e.params.value)),e.$inputEl&&e.attachInputEvents(),e.params.closeByOutsideClick&&e.attachHtmlEvents(),e.emit("local::init calendarInit",e)}destroy(){const e=this;if(e.destroyed)return;const{$el:t}=e;e.emit("local::beforeDestroy calendarBeforeDestroy",e),t&&t.trigger("calendar:beforedestroy"),e.close(),e.$inputEl&&e.detachInputEvents(),e.params.closeByOutsideClick&&e.detachHtmlEvents(),e.timePickerInstance&&(e.timePickerInstance.destroy&&e.timePickerInstance.destroy(),delete e.timePickerInstance),t&&t.length&&delete e.$el[0].f7Calendar,m(e),e.destroyed=!0}}var p={name:"calendar",static:{Calendar:h},create(){const e=this;e.calendar=s({defaultSelector:".calendar",constructor:h,app:e,domProp:"f7Calendar"}),e.calendar.close=function(e){void 0===e&&(e=".calendar");const t=a(e);if(0===t.length)return;const n=t[0].f7Calendar;!n||n&&!n.opened||n.close()}},params:{calendar:{dateFormat:void 0,monthNames:"auto",monthNamesShort:"auto",dayNames:"auto",dayNamesShort:"auto",locale:void 0,firstDay:1,weekendDays:[0,6],multiple:!1,rangePicker:!1,rangePickerMinDays:1,rangePickerMaxDays:0,direction:"horizontal",minDate:null,maxDate:null,disabled:null,events:null,rangesClasses:null,touchMove:!0,animate:!0,closeOnSelect:!1,monthSelector:!0,monthPicker:!0,yearSelector:!0,yearPicker:!0,yearPickerMin:void 0,yearPickerMax:void 0,timePicker:!1,timePickerLabel:"Time",timePickerFormat:{hour:"numeric",minute:"numeric"},timePickerPlaceholder:"Select time",weekHeader:!0,value:null,containerEl:null,openIn:"auto",sheetPush:!1,sheetSwipeToClose:void 0,formatValue:null,inputEl:null,inputReadOnly:!0,closeByOutsideClick:!0,scrollToInput:!0,header:!1,headerPlaceholder:"Select date",toolbar:!0,toolbarCloseText:"Done",footer:!1,cssClass:null,routableModals:!1,view:null,url:"date/",backdrop:null,closeByBackdropClick:!0,renderWeekHeader:null,renderMonths:null,renderMonth:null,renderMonthSelector:null,renderYearSelector:null,renderHeader:null,renderFooter:null,renderToolbar:null,renderInline:null,renderPopover:null,renderSheet:null,render:null}}};if(t){if(e.prototype.modules&&e.prototype.modules[p.name])return;e.use(p),e.instance&&(e.instance.useModuleParams(p,e.instance.params),e.instance.useModule(p))}return p}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/calendar/calendar.less b/www/assets/framework7/components/calendar/calendar.less
index 163cbb8c7..423353edf 100644
--- a/www/assets/framework7/components/calendar/calendar.less
+++ b/www/assets/framework7/components/calendar/calendar.less
@@ -186,6 +186,7 @@
box-sizing: border-box;
padding-left: var(--f7-safe-area-left);
padding-right: var(--f7-safe-area-right);
+ .hairline(top, var(--f7-calendar-row-border-color));
}
.calendar-modal,
.calendar-popover {
@@ -316,17 +317,20 @@
.calendar-month-picker,
.calendar-year-picker,
.calendar-time-picker {
- position: relative;
+ position: absolute;
width: 100%;
height: 100%;
+ left: 0px;
+ top: 0px;
+ background: var(--f7-calendar-picker-bg-color);
+ z-index: 1000;
user-select: none;
- background: transparent;
}
.calendar-month-picker,
.calendar-year-picker {
- .picker-columns {
- text-align: center;
- }
+ flex-wrap: wrap;
+ font-size: var(--f7-calendar-picker-font-size);
+ display: flex;
}
.calendar-month-picker-item,
.calendar-year-picker-item {
@@ -357,6 +361,8 @@
}
.calendar-month-picker-item {
padding: 5px;
+ .hairline(bottom, var(--f7-calendar-row-border-color));
+ .hairline(left, var(--f7-calendar-row-border-color));
}
.sheet-modal .calendar-month-picker-item {
width: 25%;
@@ -391,15 +397,16 @@
height: 34px;
line-height: 34px;
width: 100%;
+ .hairline(bottom, var(--f7-calendar-row-border-color));
}
.calendar-time-selector {
flex-shrink: 0;
font-size: var(--f7-calendar-time-selector-font-size);
position: relative;
+ .hairline(top, var(--f7-calendar-row-border-color));
display: flex;
- justify-content: space-between;
- align-items: center;
+ justify-content: center;
padding: 12px 16px;
a {
overflow: hidden;
@@ -408,29 +415,17 @@
justify-content: center;
align-items: center;
display: flex;
+ min-width: 200px;
box-sizing: border-box;
height: var(--f7-calendar-time-selector-height);
background-color: var(--f7-calendar-time-selector-bg-color);
- padding: 0 16px;
+ padding: 0 10px;
border-radius: 8px;
}
- > span {
- font-weight: 500;
- }
.segmented {
margin-left: 8px;
}
}
-.calendar-time-picker-popover,
-.calendar-year-picker-popover,
-.calendar-month-picker-popover {
- height: 240px;
- width: 240px;
- .popover-inner {
- height: 100%;
- overflow: hidden;
- }
-}
.calendar-time-picker {
--f7-picker-popover-height: 100%;
--f7-picker-inline-height: 100%;
diff --git a/www/assets/framework7/components/calendar/package.json b/www/assets/framework7/components/calendar/package.json
new file mode 100644
index 000000000..9704dd9dd
--- /dev/null
+++ b/www/assets/framework7/components/calendar/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/calendar",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/calendar/calendar.js",
+ "module": "../../esm/components/calendar/calendar.js",
+ "jsnext:main": "../../esm/components/calendar/calendar.js",
+ "typings": "../../types/components/calendar/calendar.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/card/card-rtl.css b/www/assets/framework7/components/card/card-rtl.css
index 163be9f9c..e229a5755 100644
--- a/www/assets/framework7/components/card/card-rtl.css
+++ b/www/assets/framework7/components/card/card-rtl.css
@@ -1 +1 @@
-:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-border-radius:4px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px;--f7-card-bg-color:#fff;--f7-card-outline-border-color:rgba(0, 0, 0, 0.12);--f7-card-header-border-color:rgba(0, 0, 0, 0.1);--f7-card-footer-border-color:rgba(0, 0, 0, 0.1);--f7-card-expandable-bg-color:#fff}:root .dark,:root.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255, 255, 255, 0.15);--f7-card-header-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0, 0, 0, 0.3);--f7-card-expandable-border-radius:15px;--f7-card-expandable-tablet-border-radius:5px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold}.md{--f7-card-box-shadow:var(--f7-elevation-1);--f7-card-header-font-size:16px;--f7-card-header-padding-vertical:4px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.54);--f7-card-footer-padding-vertical:4px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:var(--f7-elevation-10);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:500}.aurora{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.15);--f7-card-header-font-size:16px;--f7-card-header-font-weight:bold;--f7-card-header-padding-vertical:8px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.6);--f7-card-footer-padding-vertical:8px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:10px;--f7-card-expandable-margin-vertical:20px;--f7-card-expandable-box-shadow:0px 10px 20px rgba(0, 0, 0, 0.2);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:bold}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:0 0}.card{background:var(--f7-card-bg-color);position:relative;border-radius:var(--f7-card-border-radius);font-size:var(--f7-card-font-size);margin-top:var(--f7-card-margin-vertical);margin-bottom:var(--f7-card-margin-vertical);margin-left:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));box-shadow:var(--f7-card-box-shadow)}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card.no-shadow{box-shadow:none}.aurora .card-outline-aurora,.card-outline,.ios .card-outline-ios,.md .card-outline-md{box-shadow:none;border:1px solid var(--f7-card-outline-border-color)}.aurora .card-outline-aurora.no-border,.aurora .card-outline-aurora.no-hairlines,.card-outline.no-border,.card-outline.no-hairlines,.ios .card-outline-ios.no-border,.ios .card-outline-ios.no-hairlines,.md .card-outline-md.no-border,.md .card-outline-md.no-hairlines{border:none}.card-content{position:relative}.card-content-padding{position:relative;padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal)}.card-content-padding>.block,.card-content-padding>.list{margin:calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal))}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{min-height:var(--f7-card-header-min-height);color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-footer{min-height:var(--f7-card-footer-min-height);color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{position:relative;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{display:flex;justify-content:center;align-items:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-header:after{content:'';position:absolute;background-color:var(--f7-card-header-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-header.no-hairline:after{display:none!important}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-footer:before{content:'';position:absolute;background-color:var(--f7-card-footer-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-footer.no-hairline:before{display:none!important}.card-expandable{overflow:hidden;height:300px;background:var(--f7-card-expandable-bg-color);position:relative;transform-origin:center center;transition-property:transform,border-radius;border-radius:var(--f7-card-expandable-border-radius);z-index:2;transition-duration:.2s;margin-left:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));margin-top:var(--f7-card-expandable-margin-vertical);margin-bottom:var(--f7-card-expandable-margin-vertical);box-shadow:var(--f7-card-expandable-box-shadow);font-size:var(--f7-card-expandable-font-size)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0s}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translate3d(0,0,0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{position:absolute;top:0;width:100vw;height:100vh;transform-origin:center top;overflow:hidden;transition-property:transform;box-sizing:border-box;pointer-events:none;right:0}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0s}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{overflow:auto;-webkit-overflow-scrolling:touch;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-expandable .card-header:after{display:none!important}.card-prevent-open{pointer-events:auto}.card-expandable-size{width:0;height:0;position:absolute;left:0;top:0;opacity:0;pointer-events:none;visibility:hidden}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{width:var(--f7-card-expandable-tablet-width);height:var(--f7-card-expandable-tablet-height)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{position:fixed;left:0;top:0;width:100%;height:100%;z-index:299;pointer-events:none;background:rgba(0,0,0,.2);opacity:0}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{background:0 0;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}}@keyframes card-backdrop-fade-in{from{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{from{opacity:1}to{opacity:0}}
\ No newline at end of file
+:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-border-radius:4px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px;--f7-card-bg-color:#fff;--f7-card-outline-border-color:rgba(0, 0, 0, 0.12);--f7-card-header-border-color:rgba(0, 0, 0, 0.1);--f7-card-footer-border-color:rgba(0, 0, 0, 0.1);--f7-card-expandable-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255, 255, 255, 0.15);--f7-card-header-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0, 0, 0, 0.3);--f7-card-expandable-border-radius:15px;--f7-card-expandable-tablet-border-radius:5px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold}.md{--f7-card-box-shadow:var(--f7-elevation-1);--f7-card-header-font-size:16px;--f7-card-header-padding-vertical:4px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.54);--f7-card-footer-padding-vertical:4px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:var(--f7-elevation-10);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:500}.aurora{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.15);--f7-card-header-font-size:16px;--f7-card-header-font-weight:bold;--f7-card-header-padding-vertical:8px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.6);--f7-card-footer-padding-vertical:8px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:10px;--f7-card-expandable-margin-vertical:20px;--f7-card-expandable-box-shadow:0px 10px 20px rgba(0, 0, 0, 0.2);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:bold}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:0 0}.card{background:var(--f7-card-bg-color);position:relative;border-radius:var(--f7-card-border-radius);font-size:var(--f7-card-font-size);margin-top:var(--f7-card-margin-vertical);margin-bottom:var(--f7-card-margin-vertical);margin-left:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));box-shadow:var(--f7-card-box-shadow)}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card.no-shadow{box-shadow:none}.aurora .card-outline-aurora,.card-outline,.ios .card-outline-ios,.md .card-outline-md{box-shadow:none;border:1px solid var(--f7-card-outline-border-color)}.aurora .card-outline-aurora.no-border,.aurora .card-outline-aurora.no-hairlines,.card-outline.no-border,.card-outline.no-hairlines,.ios .card-outline-ios.no-border,.ios .card-outline-ios.no-hairlines,.md .card-outline-md.no-border,.md .card-outline-md.no-hairlines{border:none}.card-content{position:relative}.card-content-padding{position:relative;padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal)}.card-content-padding>.block,.card-content-padding>.list{margin:calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal))}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{min-height:var(--f7-card-header-min-height);color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-footer{min-height:var(--f7-card-footer-min-height);color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{position:relative;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{display:flex;justify-content:center;align-items:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-header:after{content:'';position:absolute;background-color:var(--f7-card-header-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-header.no-hairline:after{display:none!important}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-footer:before{content:'';position:absolute;background-color:var(--f7-card-footer-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-footer.no-hairline:before{display:none!important}.card-expandable{overflow:hidden;height:300px;background:var(--f7-card-expandable-bg-color);position:relative;transform-origin:center center;transition-property:transform,border-radius;border-radius:var(--f7-card-expandable-border-radius);z-index:2;transition-duration:.2s;margin-left:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));margin-top:var(--f7-card-expandable-margin-vertical);margin-bottom:var(--f7-card-expandable-margin-vertical);box-shadow:var(--f7-card-expandable-box-shadow);font-size:var(--f7-card-expandable-font-size)}.card-expandable:not(.card-opened){-webkit-user-select:none;-moz-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0s}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translate3d(0,0,0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{position:absolute;top:0;width:100vw;height:100vh;transform-origin:center top;overflow:hidden;transition-property:transform;box-sizing:border-box;pointer-events:none;right:0}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0s}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{overflow:auto;-webkit-overflow-scrolling:touch;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-expandable .card-header:after{display:none!important}.card-prevent-open{pointer-events:auto}.card-expandable-size{width:0;height:0;position:absolute;left:0;top:0;opacity:0;pointer-events:none;visibility:hidden}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{width:var(--f7-card-expandable-tablet-width);height:var(--f7-card-expandable-tablet-height)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{position:fixed;left:0;top:0;width:100%;height:100%;z-index:299;pointer-events:none;background:rgba(0,0,0,.2);opacity:0}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{background:0 0;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}}@keyframes card-backdrop-fade-in{from{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{from{opacity:1}to{opacity:0}}
\ No newline at end of file
diff --git a/www/assets/framework7/components/card/card.css b/www/assets/framework7/components/card/card.css
index 6417e6655..a8ba4469a 100644
--- a/www/assets/framework7/components/card/card.css
+++ b/www/assets/framework7/components/card/card.css
@@ -1 +1 @@
-:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-border-radius:4px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px;--f7-card-bg-color:#fff;--f7-card-outline-border-color:rgba(0, 0, 0, 0.12);--f7-card-header-border-color:rgba(0, 0, 0, 0.1);--f7-card-footer-border-color:rgba(0, 0, 0, 0.1);--f7-card-expandable-bg-color:#fff}:root .dark,:root.dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255, 255, 255, 0.15);--f7-card-header-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0, 0, 0, 0.3);--f7-card-expandable-border-radius:15px;--f7-card-expandable-tablet-border-radius:5px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold}.md{--f7-card-box-shadow:var(--f7-elevation-1);--f7-card-header-font-size:16px;--f7-card-header-padding-vertical:4px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.54);--f7-card-footer-padding-vertical:4px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:var(--f7-elevation-10);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:500}.aurora{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.15);--f7-card-header-font-size:16px;--f7-card-header-font-weight:bold;--f7-card-header-padding-vertical:8px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.6);--f7-card-footer-padding-vertical:8px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:10px;--f7-card-expandable-margin-vertical:20px;--f7-card-expandable-box-shadow:0px 10px 20px rgba(0, 0, 0, 0.2);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:bold}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:0 0}.card{background:var(--f7-card-bg-color);position:relative;border-radius:var(--f7-card-border-radius);font-size:var(--f7-card-font-size);margin-top:var(--f7-card-margin-vertical);margin-bottom:var(--f7-card-margin-vertical);margin-left:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));box-shadow:var(--f7-card-box-shadow)}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card.no-shadow{box-shadow:none}.aurora .card-outline-aurora,.card-outline,.ios .card-outline-ios,.md .card-outline-md{box-shadow:none;border:1px solid var(--f7-card-outline-border-color)}.aurora .card-outline-aurora.no-border,.aurora .card-outline-aurora.no-hairlines,.card-outline.no-border,.card-outline.no-hairlines,.ios .card-outline-ios.no-border,.ios .card-outline-ios.no-hairlines,.md .card-outline-md.no-border,.md .card-outline-md.no-hairlines{border:none}.card-content{position:relative}.card-content-padding{position:relative;padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal)}.card-content-padding>.block,.card-content-padding>.list{margin:calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal))}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{min-height:var(--f7-card-header-min-height);color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-footer{min-height:var(--f7-card-footer-min-height);color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{position:relative;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{display:flex;justify-content:center;align-items:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-header:after{content:'';position:absolute;background-color:var(--f7-card-header-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-header.no-hairline:after{display:none!important}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-footer:before{content:'';position:absolute;background-color:var(--f7-card-footer-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-footer.no-hairline:before{display:none!important}.card-expandable{overflow:hidden;height:300px;background:var(--f7-card-expandable-bg-color);position:relative;transform-origin:center center;transition-property:transform,border-radius;border-radius:var(--f7-card-expandable-border-radius);z-index:2;transition-duration:.2s;margin-left:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));margin-top:var(--f7-card-expandable-margin-vertical);margin-bottom:var(--f7-card-expandable-margin-vertical);box-shadow:var(--f7-card-expandable-box-shadow);font-size:var(--f7-card-expandable-font-size)}.card-expandable:not(.card-opened){-webkit-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0s}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translate3d(0,0,0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{position:absolute;top:0;width:100vw;height:100vh;transform-origin:center top;overflow:hidden;transition-property:transform;box-sizing:border-box;pointer-events:none;left:0}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0s}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{overflow:auto;-webkit-overflow-scrolling:touch;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-expandable .card-header:after{display:none!important}.card-prevent-open{pointer-events:auto}.card-expandable-size{width:0;height:0;position:absolute;left:0;top:0;opacity:0;pointer-events:none;visibility:hidden}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{width:var(--f7-card-expandable-tablet-width);height:var(--f7-card-expandable-tablet-height)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{position:fixed;left:0;top:0;width:100%;height:100%;z-index:299;pointer-events:none;background:rgba(0,0,0,.2);opacity:0}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{background:0 0;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}}@keyframes card-backdrop-fade-in{from{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{from{opacity:1}to{opacity:0}}
\ No newline at end of file
+:root{--f7-card-margin-horizontal:16px;--f7-card-margin-vertical:16px;--f7-card-content-padding-horizontal:16px;--f7-card-content-padding-vertical:16px;--f7-card-border-radius:4px;--f7-card-font-size:inherit;--f7-card-header-text-color:inherit;--f7-card-header-font-weight:400;--f7-card-header-padding-horizontal:16px;--f7-card-footer-font-weight:400;--f7-card-footer-font-size:inherit;--f7-card-footer-padding-horizontal:16px;--f7-card-expandable-font-size:16px;--f7-card-expandable-tablet-width:670px;--f7-card-expandable-tablet-height:670px;--f7-card-bg-color:#fff;--f7-card-outline-border-color:rgba(0, 0, 0, 0.12);--f7-card-header-border-color:rgba(0, 0, 0, 0.1);--f7-card-footer-border-color:rgba(0, 0, 0, 0.1);--f7-card-expandable-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-card-bg-color:#1c1c1d;--f7-card-expandable-bg-color:#1c1c1d;--f7-card-outline-border-color:rgba(255, 255, 255, 0.15);--f7-card-header-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-border-color:rgba(255, 255, 255, 0.15);--f7-card-footer-text-color:rgba(255, 255, 255, 0.55)}.ios{--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.2);--f7-card-header-font-size:17px;--f7-card-header-padding-vertical:10px;--f7-card-header-min-height:44px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.45);--f7-card-footer-padding-vertical:10px;--f7-card-footer-min-height:44px;--f7-card-expandable-margin-horizontal:20px;--f7-card-expandable-margin-vertical:30px;--f7-card-expandable-box-shadow:0px 20px 40px rgba(0, 0, 0, 0.3);--f7-card-expandable-border-radius:15px;--f7-card-expandable-tablet-border-radius:5px;--f7-card-expandable-header-font-size:27px;--f7-card-expandable-header-font-weight:bold}.md{--f7-card-box-shadow:var(--f7-elevation-1);--f7-card-header-font-size:16px;--f7-card-header-padding-vertical:4px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.54);--f7-card-footer-padding-vertical:4px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:12px;--f7-card-expandable-margin-vertical:24px;--f7-card-expandable-box-shadow:var(--f7-elevation-10);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:500}.aurora{--f7-card-border-radius:8px;--f7-card-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.15);--f7-card-header-font-size:16px;--f7-card-header-font-weight:bold;--f7-card-header-padding-vertical:8px;--f7-card-header-min-height:48px;--f7-card-footer-text-color:rgba(0, 0, 0, 0.6);--f7-card-footer-padding-vertical:8px;--f7-card-footer-min-height:48px;--f7-card-expandable-margin-horizontal:10px;--f7-card-expandable-margin-vertical:20px;--f7-card-expandable-box-shadow:0px 10px 20px rgba(0, 0, 0, 0.2);--f7-card-expandable-border-radius:8px;--f7-card-expandable-tablet-border-radius:4px;--f7-card-expandable-header-font-size:24px;--f7-card-expandable-header-font-weight:bold}.card .list>ul:after,.card .list>ul:before,.cards-list>ul:after,.cards-list>ul:before{display:none!important}.card .list ul,.cards-list ul{background:0 0}.card{background:var(--f7-card-bg-color);position:relative;border-radius:var(--f7-card-border-radius);font-size:var(--f7-card-font-size);margin-top:var(--f7-card-margin-vertical);margin-bottom:var(--f7-card-margin-vertical);margin-left:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-margin-horizontal) + var(--f7-safe-area-right));box-shadow:var(--f7-card-box-shadow)}.card .block,.card .list{margin:0}.row:not(.no-gap) .col>.card{margin-left:0;margin-right:0}.card.no-shadow{box-shadow:none}.aurora .card-outline-aurora,.card-outline,.ios .card-outline-ios,.md .card-outline-md{box-shadow:none;border:1px solid var(--f7-card-outline-border-color)}.aurora .card-outline-aurora.no-border,.aurora .card-outline-aurora.no-hairlines,.card-outline.no-border,.card-outline.no-hairlines,.ios .card-outline-ios.no-border,.ios .card-outline-ios.no-hairlines,.md .card-outline-md.no-border,.md .card-outline-md.no-hairlines{border:none}.card-content{position:relative}.card-content-padding{position:relative;padding:var(--f7-card-content-padding-vertical) var(--f7-card-content-padding-horizontal)}.card-content-padding>.block,.card-content-padding>.list{margin:calc(-1 * var(--f7-card-content-padding-vertical)) calc(-1 * var(--f7-card-content-padding-horizontal))}.card-content-padding>p:first-child{margin-top:0}.card-content-padding>p:last-child{margin-bottom:0}.card-header{min-height:var(--f7-card-header-min-height);color:var(--f7-card-header-text-color);font-size:var(--f7-card-header-font-size);font-weight:var(--f7-card-header-font-weight);padding:var(--f7-card-header-padding-vertical) var(--f7-card-header-padding-horizontal)}.card-footer{min-height:var(--f7-card-footer-min-height);color:var(--f7-card-footer-text-color);font-size:var(--f7-card-footer-font-size);font-weight:var(--f7-card-footer-font-weight);padding:var(--f7-card-footer-padding-vertical) var(--f7-card-footer-padding-horizontal)}.card-footer a.link{overflow:hidden}.card-footer,.card-header{position:relative;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.card-footer[valign=top],.card-header[valign=top]{align-items:flex-start}.card-footer[valign=bottom],.card-header[valign=bottom]{align-items:flex-end}.card-footer a.link,.card-header a.link{position:relative}.card-footer a.link i.icon,.card-header a.link i.icon{display:block}.card-footer a.icon-only,.card-header a.icon-only{display:flex;justify-content:center;align-items:center;margin:0}.card-header{border-radius:var(--f7-card-border-radius) var(--f7-card-border-radius) 0 0}.card-header:after{content:'';position:absolute;background-color:var(--f7-card-header-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-header.no-hairline:after{display:none!important}.card-footer{border-radius:0 0 var(--f7-card-border-radius) var(--f7-card-border-radius)}.card-footer:before{content:'';position:absolute;background-color:var(--f7-card-footer-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.card-footer.no-hairline:before{display:none!important}.card-expandable{overflow:hidden;height:300px;background:var(--f7-card-expandable-bg-color);position:relative;transform-origin:center center;transition-property:transform,border-radius;border-radius:var(--f7-card-expandable-border-radius);z-index:2;transition-duration:.2s;margin-left:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-left));margin-right:calc(var(--f7-card-expandable-margin-horizontal) + var(--f7-safe-area-right));margin-top:var(--f7-card-expandable-margin-vertical);margin-bottom:var(--f7-card-expandable-margin-vertical);box-shadow:var(--f7-card-expandable-box-shadow);font-size:var(--f7-card-expandable-font-size)}.card-expandable:not(.card-opened){-webkit-user-select:none;-moz-user-select:none;user-select:none}.card-expandable.card-no-transition{transition-duration:0s}.card-expandable.card-expandable-animate-width .card-content{transition-property:width,transform;width:100%}.card-expandable.active-state{transform:scale(.97) translate3d(0,0,0)}.card-expandable .card-opened-fade-in,.card-expandable .card-opened-fade-out{transition-duration:.4s}.card-expandable .card-opened-fade-in{opacity:0;pointer-events:none}.card-expandable .card-content{position:absolute;top:0;width:100vw;height:100vh;transform-origin:center top;overflow:hidden;transition-property:transform;box-sizing:border-box;pointer-events:none;left:0}.card-expandable .card-content .card-content-padding{padding-left:calc(var(--f7-safe-area-left) + var(--f7-card-content-padding-horizontal));padding-right:calc(var(--f7-safe-area-right) + var(--f7-card-content-padding-horizontal))}.card-expandable.card-opened{transition-duration:0s}.card-expandable.card-closing,.card-expandable.card-opening,.card-expandable.card-transitioning{transition-duration:.4s}.card-expandable.card-opening .card-content{transition-duration:.3s}.card-expandable.card-closing .card-content{transition-duration:.5s}.card-expandable.card-closing,.card-expandable.card-opened,.card-expandable.card-opening{z-index:300}.card-expandable.card-opened,.card-expandable.card-opening{border-radius:0}.card-expandable.card-opened .card-opened-fade-in,.card-expandable.card-opening .card-opened-fade-in{opacity:1;pointer-events:auto}.card-expandable.card-opened .card-opened-fade-out,.card-expandable.card-opening .card-opened-fade-out{opacity:0;pointer-events:none}.card-expandable.card-opened .card-content{overflow:auto;-webkit-overflow-scrolling:touch;pointer-events:auto}.card-expandable .card-header{font-size:var(--f7-card-expandable-header-font-size);font-weight:var(--f7-card-expandable-header-font-weight)}.card-expandable .card-header:after{display:none!important}.card-prevent-open{pointer-events:auto}.card-expandable-size{width:0;height:0;position:absolute;left:0;top:0;opacity:0;pointer-events:none;visibility:hidden}@media (min-width:768px) and (min-height:670px){.card-expandable:not(.card-tablet-fullscreen){max-width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen).card-opened,.card-expandable:not(.card-tablet-fullscreen).card-opening{border-radius:var(--f7-card-expandable-tablet-border-radius)}.card-expandable:not(.card-tablet-fullscreen):not(.card-expandable-animate-width) .card-content{width:var(--f7-card-expandable-tablet-width)}.card-expandable:not(.card-tablet-fullscreen) .card-expandable-size{width:var(--f7-card-expandable-tablet-width);height:var(--f7-card-expandable-tablet-height)}}.page.page-with-card-opened .page-content{overflow:hidden}.card-backdrop{position:fixed;left:0;top:0;width:100%;height:100%;z-index:299;pointer-events:none;background:rgba(0,0,0,.2);opacity:0}.card-backdrop-in{animation:card-backdrop-fade-in .4s forwards;pointer-events:auto}.card-backdrop-out{animation:card-backdrop-fade-out .4s forwards}@supports ((-webkit-backdrop-filter:blur(15px)) or (backdrop-filter:blur(15px))){.card-backdrop{background:0 0;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}}@keyframes card-backdrop-fade-in{from{opacity:0}to{opacity:1}}@keyframes card-backdrop-fade-out{from{opacity:1}to{opacity:0}}
\ No newline at end of file
diff --git a/www/assets/framework7/components/card/card.d.ts b/www/assets/framework7/components/card/card.d.ts
index 989fa4fce..c1723b842 100644
--- a/www/assets/framework7/components/card/card.d.ts
+++ b/www/assets/framework7/components/card/card.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Card {
interface AppMethods {
diff --git a/www/assets/framework7/components/card/card.js b/www/assets/framework7/components/card/card.js
index 90a77593a..fc8dac740 100644
--- a/www/assets/framework7/components/card/card.js
+++ b/www/assets/framework7/components/card/card.js
@@ -1,612 +1 @@
-/* eslint no-param-reassign: "off" */
-import { getDocument } from 'ssr-window';
-import { bindMethods } from '../../shared/utils.js';
-import { getSupport } from '../../shared/get-support.js';
-import { getDevice } from '../../shared/get-device.js';
-import $ from '../../shared/dom7.js';
-const CardExpandable = {
- open(cardEl, animate) {
- if (cardEl === void 0) {
- cardEl = '.card-expandable';
- }
-
- if (animate === void 0) {
- animate = true;
- }
-
- const app = this;
- const device = getDevice();
- const document = getDocument();
- const support = getSupport();
- const $cardEl = $(cardEl).eq(0);
- if (!$cardEl || !$cardEl.length) return;
- if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;
- const $pageEl = $cardEl.parents('.page').eq(0);
- if (!$pageEl.length) return;
-
- if ($pageEl.find('.card-opened').length) {
- return;
- }
-
- let prevented;
-
- function prevent() {
- prevented = true;
- }
-
- $cardEl.trigger('card:beforeopen', {
- prevent
- });
- app.emit('cardBeforeOpen', $cardEl[0], prevent);
- if (prevented) return;
- const cardParams = Object.assign({
- animate
- }, app.params.card, $cardEl.dataset());
- const $pageContentEl = $cardEl.parents('.page-content');
- let $backdropEl;
-
- if ($cardEl.attr('data-backdrop-el')) {
- $backdropEl = $($cardEl.attr('data-backdrop-el'));
- }
-
- if (!$backdropEl && cardParams.backdrop) {
- $backdropEl = $pageContentEl.find('.card-backdrop');
-
- if (!$backdropEl.length) {
- $backdropEl = $('');
- $pageContentEl.append($backdropEl);
- }
- }
-
- let $navbarEl;
- let $toolbarEl;
-
- if (cardParams.hideNavbarOnOpen) {
- $navbarEl = $pageEl.children('.navbar');
-
- if (!$navbarEl.length) {
- if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;
- }
- }
-
- if (cardParams.hideToolbarOnOpen) {
- $toolbarEl = $pageEl.children('.toolbar');
-
- if (!$toolbarEl.length) {
- $toolbarEl = $pageEl.parents('.view').children('.toolbar');
- }
-
- if (!$toolbarEl.length) {
- $toolbarEl = $pageEl.parents('.views').children('.toolbar');
- }
- }
-
- const currTransform = $cardEl.css('transform');
- let hasTransform;
-
- if (currTransform && currTransform.match(/[2-9]/)) {
- hasTransform = true;
- }
-
- const $cardContentEl = $cardEl.children('.card-content');
- const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');
- $cardEl.append($cardSizeEl);
- let cardWidth = $cardEl[0].offsetWidth;
- let cardHeight = $cardEl[0].offsetHeight;
- let pageWidth = $pageEl[0].offsetWidth;
- let pageHeight = $pageEl[0].offsetHeight;
- let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;
- let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;
- let statusbarHeight;
-
- if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {
- statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);
- if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;
- }
-
- if (statusbarHeight) {
- maxHeight -= statusbarHeight;
- }
-
- let scaleX = maxWidth / cardWidth;
- let scaleY = maxHeight / cardHeight;
- let offset = $cardEl.offset();
- let pageOffset = $pageEl.offset();
-
- if (statusbarHeight) {
- pageOffset.top += statusbarHeight / 2;
- }
-
- offset.left -= pageOffset.left;
- let cardLeftOffset;
- let cardTopOffset;
-
- if (hasTransform) {
- const transformValues = currTransform.replace(/matrix\(|\)/g, '').split(',').map(el => el.trim());
-
- if (transformValues && transformValues.length > 1) {
- const scale = parseFloat(transformValues[0]);
- cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;
- cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;
- if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
- } else {
- cardLeftOffset = $cardEl[0].offsetLeft;
- cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);
- }
- } else {
- cardLeftOffset = offset.left;
- cardTopOffset = offset.top - pageOffset.top;
- if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
- }
-
- cardLeftOffset -= (pageWidth - maxWidth) / 2;
- cardTopOffset -= (pageHeight - maxHeight) / 2;
- let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;
-
- if (app.rtl) {
- [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];
- }
-
- let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;
- let translateX = (cardRightOffset - cardLeftOffset) / 2;
- let translateY = (cardBottomOffset - cardTopOffset) / 2;
-
- if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {
- if ($navbarEl.closest('.navbar-hidden').length) {
- // Was hidden
- $cardEl[0].f7KeepNavbarOnClose = true;
- } else {
- delete $cardEl[0].f7KeepNavbarOnClose;
- app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);
- }
- }
-
- if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {
- if ($toolbarEl.closest('.toolbar-hidden').length) {
- // Was hidden
- $cardEl[0].f7KeepToolbarOnClose = true;
- } else {
- delete $cardEl[0].f7KeepToolbarOnClose;
- app.toolbar.hide($toolbarEl, cardParams.animate);
- }
- }
-
- if ($backdropEl) {
- $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');
- }
-
- $cardEl.removeClass('card-transitioning');
-
- if (cardParams.animate) {
- $cardEl.addClass('card-opening');
- }
-
- $cardEl.trigger('card:open');
- app.emit('cardOpen', $cardEl[0]);
-
- function transitionEnd() {
- $pageEl.addClass('page-with-card-opened');
-
- if (device.ios && $pageContentEl.length) {
- $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);
- setTimeout(() => {
- $pageContentEl.css('height', '');
- });
- }
-
- $cardEl.addClass('card-opened');
- $cardEl.removeClass('card-opening');
- $cardEl.trigger('card:opened');
- app.emit('cardOpened', $cardEl[0], $pageEl[0]);
- }
-
- $cardContentEl.css({
- width: `${maxWidth}px`,
- height: `${maxHeight}px`
- }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);
- $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);
-
- if (cardParams.animate) {
- $cardEl.transitionEnd(() => {
- transitionEnd();
- });
- } else {
- transitionEnd();
- }
-
- function onResize() {
- $cardEl.removeClass('card-transitioning');
- cardWidth = $cardEl[0].offsetWidth;
- cardHeight = $cardEl[0].offsetHeight;
- pageWidth = $pageEl[0].offsetWidth;
- pageHeight = $pageEl[0].offsetHeight;
- maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;
- maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;
- statusbarHeight = 0;
-
- if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {
- statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);
- if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;
- }
-
- if (statusbarHeight) {
- maxHeight -= statusbarHeight;
- }
-
- scaleX = maxWidth / cardWidth;
- scaleY = maxHeight / cardHeight;
- $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');
- offset = $cardEl.offset();
- pageOffset = $pageEl.offset();
-
- if (statusbarHeight) {
- pageOffset.top += statusbarHeight / 2;
- }
-
- offset.left -= pageOffset.left;
- offset.top -= pageOffset.top;
- cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;
- if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
- cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;
- cardRightOffset = maxWidth - cardWidth - cardLeftOffset;
- cardBottomOffset = maxHeight - cardHeight - cardTopOffset;
-
- if (app.rtl) {
- [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];
- }
-
- translateX = (cardRightOffset - cardLeftOffset) / 2;
- translateY = (cardBottomOffset - cardTopOffset) / 2;
- $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);
- $cardContentEl.css({
- width: `${maxWidth}px`,
- height: `${maxHeight}px`
- }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);
- }
-
- let cardScrollTop;
- let isTouched;
- let isMoved;
- let touchStartX;
- let touchStartY;
- let touchEndX;
- let touchEndY;
- let isScrolling;
- let progress;
- let isV;
- let isH;
- let $cardScrollableEl;
-
- function onTouchStart(e) {
- if (!$(e.target).closest($cardEl).length) return;
- if (!$cardEl.hasClass('card-opened')) return;
- $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);
-
- if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {
- cardScrollTop = 0;
- } else {
- cardScrollTop = $cardScrollableEl.scrollTop();
- }
-
- isTouched = true;
- touchStartX = e.targetTouches[0].pageX;
- touchStartY = e.targetTouches[0].pageY;
- isScrolling = undefined;
- isV = false;
- isH = false;
- }
-
- function onTouchMove(e) {
- if (!isTouched) return;
- touchEndX = e.targetTouches[0].pageX;
- touchEndY = e.targetTouches[0].pageY;
-
- if (typeof isScrolling === 'undefined') {
- isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));
- }
-
- if (!isH && !isV) {
- if (!isScrolling && e.targetTouches[0].clientX <= 50) {
- isH = true;
- } else {
- isV = true;
- }
- }
-
- if (!(isH || isV) || isV && cardScrollTop !== 0) {
- isTouched = true;
- isMoved = true;
- return;
- }
-
- if (!isMoved) {
- $cardEl.removeClass('card-transitioning');
- }
-
- isMoved = true;
- progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);
-
- if (progress > 0 && isV || isH) {
- if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {
- $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');
- $cardScrollableEl.scrollTop(0);
- }
-
- e.preventDefault();
- }
-
- if (progress > 1) progress **= 0.3;
-
- if (progress > (isV ? 1.3 : 1.1)) {
- isTouched = false;
- isMoved = false;
- app.card.close($cardEl);
- } else {
- $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);
- }
- }
-
- function onTouchEnd() {
- if (!isTouched || !isMoved) return;
- isTouched = false;
- isMoved = false;
-
- if (device.ios) {
- $cardScrollableEl.css('-webkit-overflow-scrolling', '');
- }
-
- if (progress >= 0.8) {
- app.card.close($cardEl);
- } else {
- $cardEl.addClass('card-transitioning').transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);
- }
- }
-
- $cardEl[0].detachEventHandlers = function detachEventHandlers() {
- app.off('resize', onResize);
-
- if (support.touch && cardParams.swipeToClose) {
- app.off('touchstart:passive', onTouchStart);
- app.off('touchmove:active', onTouchMove);
- app.off('touchend:passive', onTouchEnd);
- }
- };
-
- app.on('resize', onResize);
-
- if (support.touch && cardParams.swipeToClose) {
- app.on('touchstart:passive', onTouchStart);
- app.on('touchmove:active', onTouchMove);
- app.on('touchend:passive', onTouchEnd);
- }
- },
-
- close(cardEl, animate) {
- if (cardEl === void 0) {
- cardEl = '.card-expandable.card-opened';
- }
-
- if (animate === void 0) {
- animate = true;
- }
-
- const app = this;
- const device = getDevice();
- const $cardEl = $(cardEl).eq(0);
- if (!$cardEl || !$cardEl.length) return;
- if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;
- const $cardContentEl = $cardEl.children('.card-content');
- const $pageContentEl = $cardEl.parents('.page-content');
- const $pageEl = $cardEl.parents('.page').eq(0);
- if (!$pageEl.length) return;
- const cardParams = Object.assign({
- animate
- }, app.params.card, $cardEl.dataset());
- const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);
- let $navbarEl;
- let $toolbarEl;
- let $backdropEl;
-
- if ($cardEl.attr('data-backdrop-el')) {
- $backdropEl = $($cardEl.attr('data-backdrop-el'));
- }
-
- if (cardParams.backdrop) {
- $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');
- }
-
- if (cardParams.hideNavbarOnOpen) {
- $navbarEl = $pageEl.children('.navbar');
-
- if (!$navbarEl.length) {
- if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;
- }
-
- if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {
- app.navbar.show($navbarEl, cardParams.animate, true);
- }
- }
-
- if (cardParams.hideToolbarOnOpen) {
- $toolbarEl = $pageEl.children('.toolbar');
-
- if (!$toolbarEl.length) {
- $toolbarEl = $pageEl.parents('.view').children('.toolbar');
- }
-
- if (!$toolbarEl.length) {
- $toolbarEl = $pageEl.parents('.views').children('.toolbar');
- }
-
- if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {
- app.toolbar.show($toolbarEl, cardParams.animate);
- }
- }
-
- $pageEl.removeClass('page-with-card-opened');
-
- if (device.ios && $pageContentEl.length) {
- $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);
- setTimeout(() => {
- $pageContentEl.css('height', '');
- });
- }
-
- if ($backdropEl && $backdropEl.length) {
- $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');
- }
-
- $cardEl.removeClass('card-opened card-transitioning');
-
- if (cardParams.animate) {
- $cardEl.addClass('card-closing');
- } else {
- $cardEl.addClass('card-no-transition');
- }
-
- $cardEl.transform('');
- $cardEl.trigger('card:close');
- app.emit('cardClose', $cardEl[0], $pageEl[0]);
- const animateWidth = $cardEl.hasClass('card-expandable-animate-width');
-
- function transitionEnd() {
- if (!animateWidth) {
- $cardContentEl.css({
- width: '',
- height: ''
- });
- }
-
- if ($backdropEl && $backdropEl.length) {
- $backdropEl.removeClass('card-backdrop-in card-backdrop-out');
- }
-
- $cardEl.removeClass('card-closing card-no-transition');
- $cardEl.trigger('card:closed');
- $cardEl.find('.card-expandable-size').remove();
- app.emit('cardClosed', $cardEl[0], $pageEl[0]);
- }
-
- if (animateWidth) {
- $cardContentEl.css({
- width: '',
- height: ''
- });
- }
-
- $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);
-
- if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {
- $cardScrollableEl.scrollTop(0, animate ? 300 : 0);
- }
-
- if (animate) {
- $cardContentEl.transitionEnd(() => {
- transitionEnd();
- });
- } else {
- transitionEnd();
- }
-
- if ($cardEl[0].detachEventHandlers) {
- $cardEl[0].detachEventHandlers();
- delete $cardEl[0].detachEventHandlers;
- }
- },
-
- toggle(cardEl, animate) {
- if (cardEl === void 0) {
- cardEl = '.card-expandable';
- }
-
- const app = this;
- const $cardEl = $(cardEl).eq(0);
- if (!$cardEl.length) return;
-
- if ($cardEl.hasClass('card-opened')) {
- app.card.close($cardEl, animate);
- } else {
- app.card.open($cardEl, animate);
- }
- }
-
-};
-export default {
- name: 'card',
- params: {
- card: {
- hideNavbarOnOpen: true,
- hideStatusbarOnOpen: true,
- hideToolbarOnOpen: true,
- scrollableEl: '.card-content',
- swipeToClose: true,
- closeByBackdropClick: true,
- backdrop: true
- }
- },
-
- create() {
- const app = this;
- bindMethods(app, {
- card: CardExpandable
- });
- },
-
- on: {
- pageBeforeIn(page) {
- const app = this;
-
- if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {
- app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);
- }
-
- if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {
- let $toolbarEl = page.$el.children('.toolbar');
-
- if (!$toolbarEl.length) {
- $toolbarEl = page.$el.parents('.view').children('.toolbar');
- }
-
- if (!$toolbarEl.length) {
- $toolbarEl = page.$el.parents('.views').children('.toolbar');
- }
-
- if ($toolbarEl && $toolbarEl.length) {
- app.toolbar.hide($toolbarEl);
- }
- }
- }
-
- },
- clicks: {
- '.card-close': function closeCard($clickedEl, data) {
- const app = this;
- app.card.close(data.card, data.animate);
- },
- '.card-open': function closeCard($clickedEl, data) {
- const app = this;
- app.card.open(data.card, data.animate);
- },
- '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {
- const app = this;
- if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;
- if ($(e.target).closest('.card-prevent-open, .card-close').length) return;
- app.card.open($clickedEl);
- },
- '.card-backdrop-in': function onBackdropClick() {
- const app = this;
- let needToClose = false;
- if (app.params.card.closeByBackdropClick) needToClose = true;
- const $openedCardEl = $('.card-opened');
- if (!$openedCardEl.length) return;
-
- if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {
- needToClose = true;
- } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {
- needToClose = false;
- }
-
- if (needToClose) app.card.close($openedCardEl);
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,a){void 0===a&&(a=!0);var t=e.$,r=e.utils,n=e.getDevice,o=e.getSupport,s=(e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,r.bindMethods),d={open:function(e,a){void 0===e&&(e=".card-expandable"),void 0===a&&(a=!0);var r=this,s=n(),d=o(),l=t(e).eq(0);if(l&&l.length&&!(l.hasClass("card-opened")||l.hasClass("card-opening")||l.hasClass("card-closing"))){var c,i=l.parents(".page").eq(0);if(i.length)if(!i.find(".card-opened").length)if(l.trigger("card:beforeopen",{prevent:Z}),r.emit("cardBeforeOpen",l[0],Z),!c){var p,h,f,g=Object.assign({animate:a},r.params.card,l.dataset()),v=l.parents(".page-content");l.attr("data-backdrop-el")&&(p=t(l.attr("data-backdrop-el"))),!p&&g.backdrop&&((p=v.find(".card-backdrop")).length||(p=t(''),v.append(p))),g.hideNavbarOnOpen&&((h=i.children(".navbar")).length||i[0].f7Page&&(h=i[0].f7Page.$navbarEl)),g.hideToolbarOnOpen&&((f=i.children(".toolbar")).length||(f=i.parents(".view").children(".toolbar")),f.length||(f=i.parents(".views").children(".toolbar")));var b,m=l.css("transform");m&&m.match(/[2-9]/)&&(b=!0);var u=l.children(".card-content"),C=t(document.createElement("div")).addClass("card-expandable-size");l.append(C);var O,x=l[0].offsetWidth,k=l[0].offsetHeight,w=i[0].offsetWidth,T=i[0].offsetHeight,E=C[0].offsetWidth||w,N=C[0].offsetHeight||T;h&&!g.hideStatusbarOnOpen&&N===T&&(O=parseInt(h.css("--f7-safe-area-top"),10),Number.isNaN(O)&&(O=0)),O&&(N-=O);var H,M,$=E/x,y=N/k,B=l.offset(),K=i.offset();if(O&&(K.top+=O/2),B.left-=K.left,b){var S=m.replace(/matrix\(|\)/g,"").split(",").map((function(e){return e.trim()}));if(S&&S.length>1){var W=parseFloat(S[0]);H=B.left-x*(1-W)/2,M=B.top-K.top-k*(1-W)/2,r.rtl&&(H-=l[0].scrollLeft)}else H=l[0].offsetLeft,M=l[0].offsetTop-(v.length?v[0].scrollTop:0)}else H=B.left,M=B.top-K.top,r.rtl&&(H-=l[0].scrollLeft);M-=(T-N)/2;var q=E-x-(H-=(w-E)/2);if(r.rtl){var L=[q,H];H=L[0],q=L[1]}var P,z,I,X,j,D,Y,F,A,G,J,Q,R=N-k-M,U=(q-H)/2,V=(R-M)/2;g.hideNavbarOnOpen&&h&&h.length&&(h.closest(".navbar-hidden").length?l[0].f7KeepNavbarOnClose=!0:(delete l[0].f7KeepNavbarOnClose,r.navbar.hide(h,g.animate,g.hideStatusbarOnOpen,!0))),g.hideToolbarOnOpen&&f&&f.length&&(f.closest(".toolbar-hidden").length?l[0].f7KeepToolbarOnClose=!0:(delete l[0].f7KeepToolbarOnClose,r.toolbar.hide(f,g.animate))),p&&p.removeClass("card-backdrop-out").addClass("card-backdrop-in"),l.removeClass("card-transitioning"),g.animate&&l.addClass("card-opening"),l.trigger("card:open"),r.emit("cardOpen",l[0]),u.css({width:E+"px",height:N+"px"}).transform("translate3d("+(r.rtl?H+U:-H-U)+"px, 0px, 0) scale("+1/$+", "+1/y+")"),l.transform("translate3d("+(r.rtl?-U:U)+"px, "+V+"px, 0) scale("+$+", "+y+")"),g.animate?l.transitionEnd((function(){_()})):_(),l[0].detachEventHandlers=function(){r.off("resize",ee),d.touch&&g.swipeToClose&&(r.off("touchstart:passive",ae),r.off("touchmove:active",te),r.off("touchend:passive",re))},r.on("resize",ee),d.touch&&g.swipeToClose&&(r.on("touchstart:passive",ae),r.on("touchmove:active",te),r.on("touchend:passive",re))}}function Z(){c=!0}function _(){i.addClass("page-with-card-opened"),s.ios&&v.length&&(v.css("height",v[0].offsetHeight+1+"px"),setTimeout((function(){v.css("height","")}))),l.addClass("card-opened"),l.removeClass("card-opening"),l.trigger("card:opened"),r.emit("cardOpened",l[0],i[0])}function ee(){if(l.removeClass("card-transitioning"),x=l[0].offsetWidth,k=l[0].offsetHeight,w=i[0].offsetWidth,T=i[0].offsetHeight,E=C[0].offsetWidth||w,N=C[0].offsetHeight||T,O=0,h&&!g.hideStatusbarOnOpen&&N===T&&(O=parseInt(h.css("--f7-safe-area-top"),10),Number.isNaN(O)&&(O=0)),O&&(N-=O),$=E/x,y=N/k,l.transform("translate3d(0px, 0px, 0) scale(1)"),B=l.offset(),K=i.offset(),O&&(K.top+=O/2),B.left-=K.left,B.top-=K.top,H=B.left-(w-E)/2,r.rtl&&(H-=l[0].scrollLeft),M=B.top-(T-N)/2,q=E-x-H,R=N-k-M,r.rtl){var e=[q,H];H=e[0],q=e[1]}U=(q-H)/2,V=(R-M)/2,l.transform("translate3d("+(r.rtl?-U:U)+"px, "+V+"px, 0) scale("+$+", "+y+")"),u.css({width:E+"px",height:N+"px"}).transform("translate3d("+(r.rtl?H+U:-H-U)+"px, 0px, 0) scale("+1/$+", "+1/y+")")}function ae(e){t(e.target).closest(l).length&&l.hasClass("card-opened")&&(Q=l.find(g.scrollableEl),P=Q[0]&&Q[0]!==u[0]&&!Q[0].contains(e.target)?0:Q.scrollTop(),z=!0,X=e.targetTouches[0].pageX,j=e.targetTouches[0].pageY,F=void 0,G=!1,J=!1)}function te(e){if(z){if(D=e.targetTouches[0].pageX,Y=e.targetTouches[0].pageY,void 0===F&&(F=!!(F||Math.abs(Y-j)>Math.abs(D-X))),J||G||(!F&&e.targetTouches[0].clientX<=50?J=!0:G=!0),!J&&!G||G&&0!==P)return z=!0,void(I=!0);I||l.removeClass("card-transitioning"),I=!0,((A=G?Math.max((Y-j)/150,0):Math.max((D-X)/(x/2),0))>0&&G||J)&&(G&&s.ios&&Q[0]===u[0]&&(Q.css("-webkit-overflow-scrolling","auto"),Q.scrollTop(0)),e.preventDefault()),A>1&&(A=Math.pow(A,.3)),A>(G?1.3:1.1)?(z=!1,I=!1,r.card.close(l)):l.transform("translate3d("+(r.rtl?-U:U)+"px, "+V+"px, 0) scale("+$*(1-.2*A)+", "+y*(1-.2*A)+")")}}function re(){z&&I&&(z=!1,I=!1,s.ios&&Q.css("-webkit-overflow-scrolling",""),A>=.8?r.card.close(l):l.addClass("card-transitioning").transform("translate3d("+(r.rtl?-U:U)+"px, "+V+"px, 0) scale("+$+", "+y+")"))}},close:function(e,a){void 0===e&&(e=".card-expandable.card-opened"),void 0===a&&(a=!0);var r=this,o=n(),s=t(e).eq(0);if(s&&s.length&&s.hasClass("card-opened")&&!s.hasClass("card-opening")&&!s.hasClass("card-closing")){var d=s.children(".card-content"),l=s.parents(".page-content"),c=s.parents(".page").eq(0);if(c.length){var i,p,h,f=Object.assign({animate:a},r.params.card,s.dataset()),g=s.find(f.scrollableEl);s.attr("data-backdrop-el")&&(h=t(s.attr("data-backdrop-el"))),f.backdrop&&(h=s.parents(".page-content").find(".card-backdrop")),f.hideNavbarOnOpen&&((i=c.children(".navbar")).length||c[0].f7Page&&(i=c[0].f7Page.$navbarEl),i&&i.length&&!s[0].f7KeepNavbarOnClose&&r.navbar.show(i,f.animate,!0)),f.hideToolbarOnOpen&&((p=c.children(".toolbar")).length||(p=c.parents(".view").children(".toolbar")),p.length||(p=c.parents(".views").children(".toolbar")),p&&p.length&&!s[0].f7KeepToolbarOnClose&&r.toolbar.show(p,f.animate)),c.removeClass("page-with-card-opened"),o.ios&&l.length&&(l.css("height",l[0].offsetHeight+1+"px"),setTimeout((function(){l.css("height","")}))),h&&h.length&&h.removeClass("card-backdrop-in").addClass("card-backdrop-out"),s.removeClass("card-opened card-transitioning"),f.animate?s.addClass("card-closing"):s.addClass("card-no-transition"),s.transform(""),s.trigger("card:close"),r.emit("cardClose",s[0],c[0]);var v=s.hasClass("card-expandable-animate-width");v&&d.css({width:"",height:""}),d.transform("").scrollTop(0,a?300:0),g.length&&g[0]!==d[0]&&g.scrollTop(0,a?300:0),a?d.transitionEnd((function(){b()})):b(),s[0].detachEventHandlers&&(s[0].detachEventHandlers(),delete s[0].detachEventHandlers)}}function b(){v||d.css({width:"",height:""}),h&&h.length&&h.removeClass("card-backdrop-in card-backdrop-out"),s.removeClass("card-closing card-no-transition"),s.trigger("card:closed"),s.find(".card-expandable-size").remove(),r.emit("cardClosed",s[0],c[0])}},toggle:function(e,a){void 0===e&&(e=".card-expandable");var r=t(e).eq(0);r.length&&(r.hasClass("card-opened")?this.card.close(r,a):this.card.open(r,a))}},l={name:"card",params:{card:{hideNavbarOnOpen:!0,hideStatusbarOnOpen:!0,hideToolbarOnOpen:!0,scrollableEl:".card-content",swipeToClose:!0,closeByBackdropClick:!0,backdrop:!0}},create:function(){s(this,{card:d})},on:{pageBeforeIn:function(e){var a=this;if(a.params.card.hideNavbarOnOpen&&e.navbarEl&&e.$el.find(".card-opened.card-expandable").length&&a.navbar.hide(e.navbarEl,!0,a.params.card.hideStatusbarOnOpen,!0),a.params.card.hideToolbarOnOpen&&e.$el.find(".card-opened.card-expandable").length){var t=e.$el.children(".toolbar");t.length||(t=e.$el.parents(".view").children(".toolbar")),t.length||(t=e.$el.parents(".views").children(".toolbar")),t&&t.length&&a.toolbar.hide(t)}}},clicks:{".card-close":function(e,a){this.card.close(a.card,a.animate)},".card-open":function(e,a){this.card.open(a.card,a.animate)},".card-expandable":function(e,a,r){e.hasClass("card-opened")||e.hasClass("card-opening")||e.hasClass("card-closing")||t(r.target).closest(".card-prevent-open, .card-close").length||this.card.open(e)},".card-backdrop-in":function(){var e=!1;this.params.card.closeByBackdropClick&&(e=!0);var a=t(".card-opened");a.length&&("true"===a.attr("data-close-by-backdrop-click")?e=!0:"false"===a.attr("data-close-by-backdrop-click")&&(e=!1),e&&this.card.close(a))}}};if(a){if(e.prototype.modules&&e.prototype.modules[l.name])return;e.use(l),e.instance&&(e.instance.useModuleParams(l,e.instance.params),e.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/card/card.lazy.js b/www/assets/framework7/components/card/card.lazy.js
deleted file mode 100644
index 086bdd652..000000000
--- a/www/assets/framework7/components/card/card.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,a){void 0===a&&(a=!0);var t=e.$,r=e.utils,n=e.getDevice,s=e.getSupport,o=(e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,r.bindMethods);const d={open(e,a){void 0===e&&(e=".card-expandable"),void 0===a&&(a=!0);const r=this,o=n(),d=s(),l=t(e).eq(0);if(!l||!l.length)return;if(l.hasClass("card-opened")||l.hasClass("card-opening")||l.hasClass("card-closing"))return;const c=l.parents(".page").eq(0);if(!c.length)return;if(c.find(".card-opened").length)return;let i;function p(){i=!0}if(l.trigger("card:beforeopen",{prevent:p}),r.emit("cardBeforeOpen",l[0],p),i)return;const h=Object.assign({animate:a},r.params.card,l.dataset()),f=l.parents(".page-content");let g,b,m;l.attr("data-backdrop-el")&&(g=t(l.attr("data-backdrop-el"))),!g&&h.backdrop&&(g=f.find(".card-backdrop"),g.length||(g=t(''),f.append(g))),h.hideNavbarOnOpen&&(b=c.children(".navbar"),b.length||c[0].f7Page&&(b=c[0].f7Page.$navbarEl)),h.hideToolbarOnOpen&&(m=c.children(".toolbar"),m.length||(m=c.parents(".view").children(".toolbar")),m.length||(m=c.parents(".views").children(".toolbar")));const v=l.css("transform");let u;v&&v.match(/[2-9]/)&&(u=!0);const C=l.children(".card-content"),O=t(document.createElement("div")).addClass("card-expandable-size");l.append(O);let $,x=l[0].offsetWidth,k=l[0].offsetHeight,T=c[0].offsetWidth,w=c[0].offsetHeight,E=O[0].offsetWidth||T,N=O[0].offsetHeight||w;b&&!h.hideStatusbarOnOpen&&N===w&&($=parseInt(b.css("--f7-safe-area-top"),10),Number.isNaN($)&&($=0)),$&&(N-=$);let H,M,y=E/x,B=N/k,K=l.offset(),S=c.offset();if($&&(S.top+=$/2),K.left-=S.left,u){const e=v.replace(/matrix\(|\)/g,"").split(",").map((e=>e.trim()));if(e&&e.length>1){const a=parseFloat(e[0]);H=K.left-x*(1-a)/2,M=K.top-S.top-k*(1-a)/2,r.rtl&&(H-=l[0].scrollLeft)}else H=l[0].offsetLeft,M=l[0].offsetTop-(f.length?f[0].scrollTop:0)}else H=K.left,M=K.top-S.top,r.rtl&&(H-=l[0].scrollLeft);H-=(T-E)/2,M-=(w-N)/2;let W=E-x-H;r.rtl&&([H,W]=[W,H]);let q,L,P,z,j,I,X,D,Y,F,A,G,J=N-k-M,Q=(W-H)/2,R=(J-M)/2;function U(){c.addClass("page-with-card-opened"),o.ios&&f.length&&(f.css("height",`${f[0].offsetHeight+1}px`),setTimeout((()=>{f.css("height","")}))),l.addClass("card-opened"),l.removeClass("card-opening"),l.trigger("card:opened"),r.emit("cardOpened",l[0],c[0])}function V(){l.removeClass("card-transitioning"),x=l[0].offsetWidth,k=l[0].offsetHeight,T=c[0].offsetWidth,w=c[0].offsetHeight,E=O[0].offsetWidth||T,N=O[0].offsetHeight||w,$=0,b&&!h.hideStatusbarOnOpen&&N===w&&($=parseInt(b.css("--f7-safe-area-top"),10),Number.isNaN($)&&($=0)),$&&(N-=$),y=E/x,B=N/k,l.transform("translate3d(0px, 0px, 0) scale(1)"),K=l.offset(),S=c.offset(),$&&(S.top+=$/2),K.left-=S.left,K.top-=S.top,H=K.left-(T-E)/2,r.rtl&&(H-=l[0].scrollLeft),M=K.top-(w-N)/2,W=E-x-H,J=N-k-M,r.rtl&&([H,W]=[W,H]),Q=(W-H)/2,R=(J-M)/2,l.transform(`translate3d(${r.rtl?-Q:Q}px, ${R}px, 0) scale(${y}, ${B})`),C.css({width:`${E}px`,height:`${N}px`}).transform(`translate3d(${r.rtl?H+Q:-H-Q}px, 0px, 0) scale(${1/y}, ${1/B})`)}function Z(e){t(e.target).closest(l).length&&l.hasClass("card-opened")&&(G=l.find(h.scrollableEl),q=G[0]&&G[0]!==C[0]&&!G[0].contains(e.target)?0:G.scrollTop(),L=!0,z=e.targetTouches[0].pageX,j=e.targetTouches[0].pageY,D=void 0,F=!1,A=!1)}function _(e){if(L){if(I=e.targetTouches[0].pageX,X=e.targetTouches[0].pageY,void 0===D&&(D=!!(D||Math.abs(X-j)>Math.abs(I-z))),A||F||(!D&&e.targetTouches[0].clientX<=50?A=!0:F=!0),!A&&!F||F&&0!==q)return L=!0,void(P=!0);P||l.removeClass("card-transitioning"),P=!0,Y=F?Math.max((X-j)/150,0):Math.max((I-z)/(x/2),0),(Y>0&&F||A)&&(F&&o.ios&&G[0]===C[0]&&(G.css("-webkit-overflow-scrolling","auto"),G.scrollTop(0)),e.preventDefault()),Y>1&&(Y**=.3),Y>(F?1.3:1.1)?(L=!1,P=!1,r.card.close(l)):l.transform(`translate3d(${r.rtl?-Q:Q}px, ${R}px, 0) scale(${y*(1-.2*Y)}, ${B*(1-.2*Y)})`)}}function ee(){L&&P&&(L=!1,P=!1,o.ios&&G.css("-webkit-overflow-scrolling",""),Y>=.8?r.card.close(l):l.addClass("card-transitioning").transform(`translate3d(${r.rtl?-Q:Q}px, ${R}px, 0) scale(${y}, ${B})`))}h.hideNavbarOnOpen&&b&&b.length&&(b.closest(".navbar-hidden").length?l[0].f7KeepNavbarOnClose=!0:(delete l[0].f7KeepNavbarOnClose,r.navbar.hide(b,h.animate,h.hideStatusbarOnOpen,!0))),h.hideToolbarOnOpen&&m&&m.length&&(m.closest(".toolbar-hidden").length?l[0].f7KeepToolbarOnClose=!0:(delete l[0].f7KeepToolbarOnClose,r.toolbar.hide(m,h.animate))),g&&g.removeClass("card-backdrop-out").addClass("card-backdrop-in"),l.removeClass("card-transitioning"),h.animate&&l.addClass("card-opening"),l.trigger("card:open"),r.emit("cardOpen",l[0]),C.css({width:`${E}px`,height:`${N}px`}).transform(`translate3d(${r.rtl?H+Q:-H-Q}px, 0px, 0) scale(${1/y}, ${1/B})`),l.transform(`translate3d(${r.rtl?-Q:Q}px, ${R}px, 0) scale(${y}, ${B})`),h.animate?l.transitionEnd((()=>{U()})):U(),l[0].detachEventHandlers=function(){r.off("resize",V),d.touch&&h.swipeToClose&&(r.off("touchstart:passive",Z),r.off("touchmove:active",_),r.off("touchend:passive",ee))},r.on("resize",V),d.touch&&h.swipeToClose&&(r.on("touchstart:passive",Z),r.on("touchmove:active",_),r.on("touchend:passive",ee))},close(e,a){void 0===e&&(e=".card-expandable.card-opened"),void 0===a&&(a=!0);const r=this,s=n(),o=t(e).eq(0);if(!o||!o.length)return;if(!o.hasClass("card-opened")||o.hasClass("card-opening")||o.hasClass("card-closing"))return;const d=o.children(".card-content"),l=o.parents(".page-content"),c=o.parents(".page").eq(0);if(!c.length)return;const i=Object.assign({animate:a},r.params.card,o.dataset()),p=o.find(i.scrollableEl);let h,f,g;o.attr("data-backdrop-el")&&(g=t(o.attr("data-backdrop-el"))),i.backdrop&&(g=o.parents(".page-content").find(".card-backdrop")),i.hideNavbarOnOpen&&(h=c.children(".navbar"),h.length||c[0].f7Page&&(h=c[0].f7Page.$navbarEl),h&&h.length&&!o[0].f7KeepNavbarOnClose&&r.navbar.show(h,i.animate,!0)),i.hideToolbarOnOpen&&(f=c.children(".toolbar"),f.length||(f=c.parents(".view").children(".toolbar")),f.length||(f=c.parents(".views").children(".toolbar")),f&&f.length&&!o[0].f7KeepToolbarOnClose&&r.toolbar.show(f,i.animate)),c.removeClass("page-with-card-opened"),s.ios&&l.length&&(l.css("height",`${l[0].offsetHeight+1}px`),setTimeout((()=>{l.css("height","")}))),g&&g.length&&g.removeClass("card-backdrop-in").addClass("card-backdrop-out"),o.removeClass("card-opened card-transitioning"),i.animate?o.addClass("card-closing"):o.addClass("card-no-transition"),o.transform(""),o.trigger("card:close"),r.emit("cardClose",o[0],c[0]);const b=o.hasClass("card-expandable-animate-width");function m(){b||d.css({width:"",height:""}),g&&g.length&&g.removeClass("card-backdrop-in card-backdrop-out"),o.removeClass("card-closing card-no-transition"),o.trigger("card:closed"),o.find(".card-expandable-size").remove(),r.emit("cardClosed",o[0],c[0])}b&&d.css({width:"",height:""}),d.transform("").scrollTop(0,a?300:0),p.length&&p[0]!==d[0]&&p.scrollTop(0,a?300:0),a?d.transitionEnd((()=>{m()})):m(),o[0].detachEventHandlers&&(o[0].detachEventHandlers(),delete o[0].detachEventHandlers)},toggle(e,a){void 0===e&&(e=".card-expandable");const r=this,n=t(e).eq(0);n.length&&(n.hasClass("card-opened")?r.card.close(n,a):r.card.open(n,a))}};var l={name:"card",params:{card:{hideNavbarOnOpen:!0,hideStatusbarOnOpen:!0,hideToolbarOnOpen:!0,scrollableEl:".card-content",swipeToClose:!0,closeByBackdropClick:!0,backdrop:!0}},create(){o(this,{card:d})},on:{pageBeforeIn(e){const a=this;if(a.params.card.hideNavbarOnOpen&&e.navbarEl&&e.$el.find(".card-opened.card-expandable").length&&a.navbar.hide(e.navbarEl,!0,a.params.card.hideStatusbarOnOpen,!0),a.params.card.hideToolbarOnOpen&&e.$el.find(".card-opened.card-expandable").length){let t=e.$el.children(".toolbar");t.length||(t=e.$el.parents(".view").children(".toolbar")),t.length||(t=e.$el.parents(".views").children(".toolbar")),t&&t.length&&a.toolbar.hide(t)}}},clicks:{".card-close":function(e,a){this.card.close(a.card,a.animate)},".card-open":function(e,a){this.card.open(a.card,a.animate)},".card-expandable":function(e,a,r){e.hasClass("card-opened")||e.hasClass("card-opening")||e.hasClass("card-closing")||t(r.target).closest(".card-prevent-open, .card-close").length||this.card.open(e)},".card-backdrop-in":function(){let e=!1;this.params.card.closeByBackdropClick&&(e=!0);const a=t(".card-opened");a.length&&("true"===a.attr("data-close-by-backdrop-click")?e=!0:"false"===a.attr("data-close-by-backdrop-click")&&(e=!1),e&&this.card.close(a))}}};if(a){if(e.prototype.modules&&e.prototype.modules[l.name])return;e.use(l),e.instance&&(e.instance.useModuleParams(l,e.instance.params),e.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/card/package.json b/www/assets/framework7/components/card/package.json
new file mode 100644
index 000000000..337881f16
--- /dev/null
+++ b/www/assets/framework7/components/card/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/card",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/card/card.js",
+ "module": "../../esm/components/card/card.js",
+ "jsnext:main": "../../esm/components/card/card.js",
+ "typings": "../../types/components/card/card.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/checkbox/checkbox-rtl.css b/www/assets/framework7/components/checkbox/checkbox-rtl.css
index c518bdd96..b71cc2de5 100644
--- a/www/assets/framework7/components/checkbox/checkbox-rtl.css
+++ b/www/assets/framework7/components/checkbox/checkbox-rtl.css
@@ -1 +1 @@
-:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255, 255, 255, 0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.aurora{--f7-checkbox-size:16px;--f7-checkbox-border-radius:4px;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:rgba(0, 0, 0, 0.25)}.checkbox{position:relative;display:inline-block;vertical-align:middle;z-index:1;background-color:transparent;--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.5)}.checkbox i,.icon-checkbox{flex-shrink:0;border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;position:relative;display:block}.checkbox i:after,.icon-checkbox:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);line-height:var(--f7-checkbox-size);top:calc(0px - var(--f7-checkbox-border-width));opacity:0;color:var(--f7-checkbox-icon-color);position:relative;transition-property:opacity;right:calc(0px - var(--f7-checkbox-border-width))}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{border-color:var(--f7-checkbox-active-color,var(--f7-theme-color));background-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{font-size:0;content:'';position:absolute;top:50%;width:70%;background:var(--f7-checkbox-icon-color);height:2px;border-radius:2px;margin-top:-1px;transition:0s;right:15%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:transparent}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;pointer-events:none}.ios .checkbox i:after,.ios .icon-checkbox:after{content:'checkbox_ios';font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0s}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:'checkbox_md';transition-duration:.2s;font-size:15px}.md label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora .checkbox i,.aurora .icon-checkbox{transition-duration:150ms}.aurora .checkbox i:after,.aurora .icon-checkbox:after{content:'checkbox_aurora';transition-duration:150ms;font-size:21px}.aurora .checkbox i:before,.aurora .icon-checkbox:before{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.1);opacity:0;transition-duration:150ms}.aurora .checkbox.active-state i:before{opacity:1}.aurora label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora.device-desktop label.item-checkbox:hover:not(.active-state):not(.no-hover){background-color:var(--f7-list-link-hover-bg-color)}
\ No newline at end of file
+:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .theme-dark,:root.theme-dark{--f7-checkbox-inactive-color:rgba(255, 255, 255, 0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.aurora{--f7-checkbox-size:16px;--f7-checkbox-border-radius:4px;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:rgba(0, 0, 0, 0.25)}.checkbox{position:relative;display:inline-block;vertical-align:middle;z-index:1;background-color:transparent;--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.5)}.checkbox i,.icon-checkbox{flex-shrink:0;border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;position:relative;display:block}.checkbox i:after,.icon-checkbox:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);line-height:var(--f7-checkbox-size);top:calc(0px - var(--f7-checkbox-border-width));opacity:0;color:var(--f7-checkbox-icon-color);position:relative;transition-property:opacity;right:calc(0px - var(--f7-checkbox-border-width))}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{border-color:var(--f7-checkbox-active-color,var(--f7-theme-color));background-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{font-size:0;content:'';position:absolute;top:50%;width:70%;background:var(--f7-checkbox-icon-color);height:2px;border-radius:2px;margin-top:-1px;transition:0s;right:15%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-left:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:transparent}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;pointer-events:none}.ios .checkbox i:after,.ios .icon-checkbox:after{content:'checkbox_ios';font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0s}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:'checkbox_md';transition-duration:.2s;font-size:15px}.md label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora .checkbox i,.aurora .icon-checkbox{transition-duration:150ms}.aurora .checkbox i:after,.aurora .icon-checkbox:after{content:'checkbox_aurora';transition-duration:150ms;font-size:21px}.aurora .checkbox i:before,.aurora .icon-checkbox:before{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.1);opacity:0;transition-duration:150ms}.aurora .checkbox.active-state i:before{opacity:1}.aurora label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora.device-desktop label.item-checkbox:hover:not(.active-state):not(.no-hover){background-color:var(--f7-list-link-hover-bg-color)}
\ No newline at end of file
diff --git a/www/assets/framework7/components/checkbox/checkbox.css b/www/assets/framework7/components/checkbox/checkbox.css
index 12c1bd612..9f5f9a7f6 100644
--- a/www/assets/framework7/components/checkbox/checkbox.css
+++ b/www/assets/framework7/components/checkbox/checkbox.css
@@ -1 +1 @@
-:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .dark,:root.dark{--f7-checkbox-inactive-color:rgba(255, 255, 255, 0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.aurora{--f7-checkbox-size:16px;--f7-checkbox-border-radius:4px;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:rgba(0, 0, 0, 0.25)}.checkbox{position:relative;display:inline-block;vertical-align:middle;z-index:1;background-color:transparent;--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.5)}.checkbox i,.icon-checkbox{flex-shrink:0;border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;position:relative;display:block}.checkbox i:after,.icon-checkbox:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);line-height:var(--f7-checkbox-size);top:calc(0px - var(--f7-checkbox-border-width));opacity:0;color:var(--f7-checkbox-icon-color);position:relative;transition-property:opacity;left:calc(0px - var(--f7-checkbox-border-width))}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{border-color:var(--f7-checkbox-active-color,var(--f7-theme-color));background-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{font-size:0;content:'';position:absolute;top:50%;width:70%;background:var(--f7-checkbox-icon-color);height:2px;border-radius:2px;margin-top:-1px;transition:0s;left:15%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:transparent}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;pointer-events:none}.ios .checkbox i:after,.ios .icon-checkbox:after{content:'checkbox_ios';font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0s}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:'checkbox_md';transition-duration:.2s;font-size:15px}.md label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora .checkbox i,.aurora .icon-checkbox{transition-duration:150ms}.aurora .checkbox i:after,.aurora .icon-checkbox:after{content:'checkbox_aurora';transition-duration:150ms;font-size:21px}.aurora .checkbox i:before,.aurora .icon-checkbox:before{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.1);opacity:0;transition-duration:150ms}.aurora .checkbox.active-state i:before{opacity:1}.aurora label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora.device-desktop label.item-checkbox:hover:not(.active-state):not(.no-hover){background-color:var(--f7-list-link-hover-bg-color)}
\ No newline at end of file
+:root{--f7-checkbox-icon-color:#fff;--f7-checkbox-extra-margin:0px}:root .theme-dark,:root.theme-dark{--f7-checkbox-inactive-color:rgba(255, 255, 255, 0.3);--f7-checkbox-icon-color:#000}.ios{--f7-checkbox-size:22px;--f7-checkbox-border-radius:50%;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:#c7c7cc}.md{--f7-checkbox-size:18px;--f7-checkbox-border-radius:2px;--f7-checkbox-border-width:2px;--f7-checkbox-inactive-color:#6d6d6d}.aurora{--f7-checkbox-size:16px;--f7-checkbox-border-radius:4px;--f7-checkbox-border-width:1px;--f7-checkbox-inactive-color:rgba(0, 0, 0, 0.25)}.checkbox{position:relative;display:inline-block;vertical-align:middle;z-index:1;background-color:transparent;--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.5)}.checkbox i,.icon-checkbox{flex-shrink:0;border:var(--f7-checkbox-border-width) solid var(--f7-checkbox-inactive-color);width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);border-radius:var(--f7-checkbox-border-radius);box-sizing:border-box;position:relative;display:block}.checkbox i:after,.icon-checkbox:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;width:var(--f7-checkbox-size);height:var(--f7-checkbox-size);line-height:var(--f7-checkbox-size);top:calc(0px - var(--f7-checkbox-border-width));opacity:0;color:var(--f7-checkbox-icon-color);position:relative;transition-property:opacity;left:calc(0px - var(--f7-checkbox-border-width))}.checkbox input[type=checkbox]:not(:checked)~i:after,label.item-checkbox input[type=checkbox]:not(:checked)~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:not(:checked)~.icon-checkbox:after{font-size:0}.checkbox input[type=checkbox]:checked~i,.checkbox input[type=checkbox]:indeterminate~i,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox{border-color:var(--f7-checkbox-active-color,var(--f7-theme-color));background-color:var(--f7-checkbox-active-color,var(--f7-theme-color))}.checkbox input[type=checkbox]:checked~i:after,.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:checked~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:checked~.icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{opacity:1}.checkbox input[type=checkbox]:indeterminate~i:after,label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{font-size:0;content:'';position:absolute;top:50%;width:70%;background:var(--f7-checkbox-icon-color);height:2px;border-radius:2px;margin-top:-1px;transition:0s;left:15%}.checkbox,label.item-checkbox{cursor:pointer}.checkbox input[type=checkbox],.checkbox input[type=radio],label.item-checkbox input[type=checkbox],label.item-checkbox input[type=radio]{display:none}label.item-checkbox{transition-duration:.3s}label.item-checkbox .item-content .item-media,label.item-checkbox.item-content .item-media{align-self:center}label.item-checkbox>.icon-checkbox{margin-right:calc(var(--f7-list-item-media-margin) + var(--f7-checkbox-extra-margin))}label.item-checkbox.active-state{background-color:var(--f7-list-link-pressed-bg-color)}label.item-checkbox.active-state:after{background-color:transparent}.disabled label.item-checkbox,label.item-checkbox.disabled{opacity:.55;pointer-events:none}.ios .checkbox i:after,.ios .icon-checkbox:after{content:'checkbox_ios';font-size:21px}.ios label.item-checkbox.active-state{transition-duration:0s}.ios .checkbox input[type=checkbox]:indeterminate~i:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~* .icon-checkbox:after,.ios label.item-checkbox input[type=checkbox]:indeterminate~.icon-checkbox:after{height:2px;margin-top:-1px}.md .checkbox i,.md .icon-checkbox{transition-duration:.2s}.md .checkbox i:after,.md .icon-checkbox:after{content:'checkbox_md';transition-duration:.2s;font-size:15px}.md label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora .checkbox i,.aurora .icon-checkbox{transition-duration:150ms}.aurora .checkbox i:after,.aurora .icon-checkbox:after{content:'checkbox_aurora';transition-duration:150ms;font-size:21px}.aurora .checkbox i:before,.aurora .icon-checkbox:before{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.1);opacity:0;transition-duration:150ms}.aurora .checkbox.active-state i:before{opacity:1}.aurora label.item-checkbox{position:relative;overflow:hidden;z-index:0}.aurora.device-desktop label.item-checkbox:hover:not(.active-state):not(.no-hover){background-color:var(--f7-list-link-hover-bg-color)}
\ No newline at end of file
diff --git a/www/assets/framework7/components/checkbox/checkbox.d.ts b/www/assets/framework7/components/checkbox/checkbox.d.ts
index a56c42388..365c004e9 100644
--- a/www/assets/framework7/components/checkbox/checkbox.d.ts
+++ b/www/assets/framework7/components/checkbox/checkbox.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Checkbox {
interface AppMethods {}
diff --git a/www/assets/framework7/components/checkbox/checkbox.js b/www/assets/framework7/components/checkbox/checkbox.js
index 8284a220f..5bec57023 100644
--- a/www/assets/framework7/components/checkbox/checkbox.js
+++ b/www/assets/framework7/components/checkbox/checkbox.js
@@ -1,3 +1 @@
-export default {
- name: 'checkbox'
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods;var t={name:"checkbox"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/checkbox/checkbox.lazy.js b/www/assets/framework7/components/checkbox/checkbox.lazy.js
deleted file mode 100644
index f8a11f6ed..000000000
--- a/www/assets/framework7/components/checkbox/checkbox.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx;var t={name:"checkbox"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/checkbox/package.json b/www/assets/framework7/components/checkbox/package.json
new file mode 100644
index 000000000..9d91fbeb9
--- /dev/null
+++ b/www/assets/framework7/components/checkbox/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/checkbox",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/checkbox/checkbox.js",
+ "module": "../../esm/components/checkbox/checkbox.js",
+ "jsnext:main": "../../esm/components/checkbox/checkbox.js",
+ "typings": "../../types/components/checkbox/checkbox.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/chip/chip-rtl.css b/www/assets/framework7/components/chip/chip-rtl.css
index 198031984..b22eec894 100644
--- a/www/assets/framework7/components/chip/chip-rtl.css
+++ b/www/assets/framework7/components/chip/chip-rtl.css
@@ -1 +1 @@
-:root{--f7-chip-font-size:14px;--f7-chip-font-weight:normal;--f7-chip-media-font-size:16px;--f7-chip-bg-color:rgba(0, 0, 0, 0.12);--f7-chip-outline-border-color:rgba(0, 0, 0, 0.12);--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff;--f7-chip-bg-color:#333;--f7-chip-outline-border-color:rgba(255, 255, 255, 0.12)}.ios{--f7-chip-height:28px;--f7-chip-padding-horizontal:10px;--f7-chip-text-color:#000}.ios .dark,.ios.dark{--f7-chip-text-color:#fff}.md{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:rgba(0, 0, 0, 0.87)}.md .dark,.md.dark{--f7-chip-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:#000}.aurora .dark,.aurora.dark{--f7-chip-text-color:#fff}.chip{padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);font-weight:var(--f7-chip-font-weight);display:inline-flex;box-sizing:border-box;vertical-align:middle;align-items:center;margin:2px 0;background-color:var(--f7-chip-bg-color);font-size:var(--f7-chip-font-size);color:var(--f7-chip-text-color);height:var(--f7-chip-height);line-height:var(--f7-chip-height);border-radius:var(--f7-chip-height);position:relative}.chip-media{border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;height:var(--f7-chip-height);width:var(--f7-chip-height);border-radius:var(--f7-chip-height);text-align:center;line-height:var(--f7-chip-height);box-sizing:border-box;color:#fff;font-size:var(--f7-chip-media-font-size);vertical-align:middle;margin-right:calc(-1 * var(--f7-chip-padding-horizontal))}.chip-media i.icon{font-size:calc(var(--f7-chip-height) - 8px);height:calc(var(--f7-chip-height) - 8px)}.chip-media img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:50%;display:block}.chip-media+.chip-label{margin-right:4px}.chip-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;flex-shrink:1;min-width:0}.chip-delete{text-align:center;cursor:pointer;flex-shrink:0;background-repeat:no-repeat;width:24px;height:24px;color:var(--f7-chip-delete-button-color);opacity:.54;position:relative}.chip-delete:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;content:'delete_round_ios';line-height:24px}.chip .chip-delete.active-state{opacity:1}.aurora .chip-outline-aurora,.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{border:1px solid var(--f7-chip-outline-border-color);background:0 0}.chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.aurora .chip-outline-aurora[class*=color-],.chip-outline[class*=color-],.ios .chip-outline-ios[class*=color-],.md .chip-outline-md[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-text-color:var(--f7-theme-color)}.ios .chip-delete{margin-left:calc(-1 * var(--f7-chip-padding-horizontal))}.ios .chip-delete:after{font-size:10px}.md .chip-label+.chip-delete{margin-right:4px}.md .chip-delete{margin-left:calc(-1 * var(--f7-chip-padding-horizontal) + 4px)}.md .chip-delete:after{font-size:12px}.aurora .chip-delete{margin-left:calc(-1 * var(--f7-chip-padding-horizontal))}.aurora .chip-delete:after{font-size:10px}
\ No newline at end of file
+:root{--f7-chip-font-size:14px;--f7-chip-font-weight:normal;--f7-chip-media-font-size:16px;--f7-chip-bg-color:rgba(0, 0, 0, 0.12);--f7-chip-outline-border-color:rgba(0, 0, 0, 0.12);--f7-chip-delete-button-color:#000}:root .theme-dark,:root.theme-dark{--f7-chip-delete-button-color:#fff;--f7-chip-bg-color:#333;--f7-chip-outline-border-color:rgba(255, 255, 255, 0.12)}.ios{--f7-chip-height:28px;--f7-chip-padding-horizontal:10px;--f7-chip-text-color:#000}.ios .theme-dark,.ios.theme-dark{--f7-chip-text-color:#fff}.md{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:rgba(0, 0, 0, 0.87)}.md .theme-dark,.md.theme-dark{--f7-chip-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:#000}.aurora .theme-dark,.aurora.theme-dark{--f7-chip-text-color:#fff}.chip{padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);font-weight:var(--f7-chip-font-weight);display:inline-flex;box-sizing:border-box;vertical-align:middle;align-items:center;margin:2px 0;background-color:var(--f7-chip-bg-color);font-size:var(--f7-chip-font-size);color:var(--f7-chip-text-color);height:var(--f7-chip-height);line-height:var(--f7-chip-height);border-radius:var(--f7-chip-height);position:relative}.chip-media{border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;height:var(--f7-chip-height);width:var(--f7-chip-height);border-radius:var(--f7-chip-height);text-align:center;line-height:var(--f7-chip-height);box-sizing:border-box;color:#fff;font-size:var(--f7-chip-media-font-size);vertical-align:middle;margin-right:calc(-1 * var(--f7-chip-padding-horizontal))}.chip-media i.icon{font-size:calc(var(--f7-chip-height) - 8px);height:calc(var(--f7-chip-height) - 8px)}.chip-media img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:50%;display:block}.chip-media+.chip-label{margin-right:4px}.chip-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;flex-shrink:1;min-width:0}.chip-delete{text-align:center;cursor:pointer;flex-shrink:0;background-repeat:no-repeat;width:24px;height:24px;color:var(--f7-chip-delete-button-color);opacity:.54;position:relative}.chip-delete:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;content:'delete_round_ios';line-height:24px}.chip .chip-delete.active-state{opacity:1}.aurora .chip-outline-aurora,.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{border:1px solid var(--f7-chip-outline-border-color);background:0 0}.chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.aurora .chip-outline-aurora[class*=color-],.chip-outline[class*=color-],.ios .chip-outline-ios[class*=color-],.md .chip-outline-md[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-text-color:var(--f7-theme-color)}.ios .chip-delete{margin-left:calc(-1 * var(--f7-chip-padding-horizontal))}.ios .chip-delete:after{font-size:10px}.md .chip-label+.chip-delete{margin-right:4px}.md .chip-delete{margin-left:calc(-1 * var(--f7-chip-padding-horizontal) + 4px)}.md .chip-delete:after{font-size:12px}.aurora .chip-delete{margin-left:calc(-1 * var(--f7-chip-padding-horizontal))}.aurora .chip-delete:after{font-size:10px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/chip/chip.css b/www/assets/framework7/components/chip/chip.css
index 64a8a7ba7..1567777df 100644
--- a/www/assets/framework7/components/chip/chip.css
+++ b/www/assets/framework7/components/chip/chip.css
@@ -1 +1 @@
-:root{--f7-chip-font-size:14px;--f7-chip-font-weight:normal;--f7-chip-media-font-size:16px;--f7-chip-bg-color:rgba(0, 0, 0, 0.12);--f7-chip-outline-border-color:rgba(0, 0, 0, 0.12);--f7-chip-delete-button-color:#000}:root .dark,:root.dark{--f7-chip-delete-button-color:#fff;--f7-chip-bg-color:#333;--f7-chip-outline-border-color:rgba(255, 255, 255, 0.12)}.ios{--f7-chip-height:28px;--f7-chip-padding-horizontal:10px;--f7-chip-text-color:#000}.ios .dark,.ios.dark{--f7-chip-text-color:#fff}.md{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:rgba(0, 0, 0, 0.87)}.md .dark,.md.dark{--f7-chip-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:#000}.aurora .dark,.aurora.dark{--f7-chip-text-color:#fff}.chip{padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);font-weight:var(--f7-chip-font-weight);display:inline-flex;box-sizing:border-box;vertical-align:middle;align-items:center;margin:2px 0;background-color:var(--f7-chip-bg-color);font-size:var(--f7-chip-font-size);color:var(--f7-chip-text-color);height:var(--f7-chip-height);line-height:var(--f7-chip-height);border-radius:var(--f7-chip-height);position:relative}.chip-media{border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;height:var(--f7-chip-height);width:var(--f7-chip-height);border-radius:var(--f7-chip-height);text-align:center;line-height:var(--f7-chip-height);box-sizing:border-box;color:#fff;font-size:var(--f7-chip-media-font-size);vertical-align:middle;margin-left:calc(-1 * var(--f7-chip-padding-horizontal))}.chip-media i.icon{font-size:calc(var(--f7-chip-height) - 8px);height:calc(var(--f7-chip-height) - 8px)}.chip-media img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:50%;display:block}.chip-media+.chip-label{margin-left:4px}.chip-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;flex-shrink:1;min-width:0}.chip-delete{text-align:center;cursor:pointer;flex-shrink:0;background-repeat:no-repeat;width:24px;height:24px;color:var(--f7-chip-delete-button-color);opacity:.54;position:relative}.chip-delete:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;content:'delete_round_ios';line-height:24px}.chip .chip-delete.active-state{opacity:1}.aurora .chip-outline-aurora,.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{border:1px solid var(--f7-chip-outline-border-color);background:0 0}.chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.aurora .chip-outline-aurora[class*=color-],.chip-outline[class*=color-],.ios .chip-outline-ios[class*=color-],.md .chip-outline-md[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-text-color:var(--f7-theme-color)}.ios .chip-delete{margin-right:calc(-1 * var(--f7-chip-padding-horizontal))}.ios .chip-delete:after{font-size:10px}.md .chip-label+.chip-delete{margin-left:4px}.md .chip-delete{margin-right:calc(-1 * var(--f7-chip-padding-horizontal) + 4px)}.md .chip-delete:after{font-size:12px}.aurora .chip-delete{margin-right:calc(-1 * var(--f7-chip-padding-horizontal))}.aurora .chip-delete:after{font-size:10px}
\ No newline at end of file
+:root{--f7-chip-font-size:14px;--f7-chip-font-weight:normal;--f7-chip-media-font-size:16px;--f7-chip-bg-color:rgba(0, 0, 0, 0.12);--f7-chip-outline-border-color:rgba(0, 0, 0, 0.12);--f7-chip-delete-button-color:#000}:root .theme-dark,:root.theme-dark{--f7-chip-delete-button-color:#fff;--f7-chip-bg-color:#333;--f7-chip-outline-border-color:rgba(255, 255, 255, 0.12)}.ios{--f7-chip-height:28px;--f7-chip-padding-horizontal:10px;--f7-chip-text-color:#000}.ios .theme-dark,.ios.theme-dark{--f7-chip-text-color:#fff}.md{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:rgba(0, 0, 0, 0.87)}.md .theme-dark,.md.theme-dark{--f7-chip-text-color:rgba(255, 255, 255, 0.87)}.aurora{--f7-chip-height:32px;--f7-chip-padding-horizontal:12px;--f7-chip-text-color:#000}.aurora .theme-dark,.aurora.theme-dark{--f7-chip-text-color:#fff}.chip{padding-left:var(--f7-chip-padding-horizontal);padding-right:var(--f7-chip-padding-horizontal);font-weight:var(--f7-chip-font-weight);display:inline-flex;box-sizing:border-box;vertical-align:middle;align-items:center;margin:2px 0;background-color:var(--f7-chip-bg-color);font-size:var(--f7-chip-font-size);color:var(--f7-chip-text-color);height:var(--f7-chip-height);line-height:var(--f7-chip-height);border-radius:var(--f7-chip-height);position:relative}.chip-media{border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;height:var(--f7-chip-height);width:var(--f7-chip-height);border-radius:var(--f7-chip-height);text-align:center;line-height:var(--f7-chip-height);box-sizing:border-box;color:#fff;font-size:var(--f7-chip-media-font-size);vertical-align:middle;margin-left:calc(-1 * var(--f7-chip-padding-horizontal))}.chip-media i.icon{font-size:calc(var(--f7-chip-height) - 8px);height:calc(var(--f7-chip-height) - 8px)}.chip-media img{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:50%;display:block}.chip-media+.chip-label{margin-left:4px}.chip-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;flex-shrink:1;min-width:0}.chip-delete{text-align:center;cursor:pointer;flex-shrink:0;background-repeat:no-repeat;width:24px;height:24px;color:var(--f7-chip-delete-button-color);opacity:.54;position:relative}.chip-delete:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;content:'delete_round_ios';line-height:24px}.chip .chip-delete.active-state{opacity:1}.aurora .chip-outline-aurora,.chip-outline,.ios .chip-outline-ios,.md .chip-outline-md{border:1px solid var(--f7-chip-outline-border-color);background:0 0}.chip[class*=color-]{--f7-chip-bg-color:var(--f7-theme-color);--f7-chip-text-color:#fff}.aurora .chip-outline-aurora[class*=color-],.chip-outline[class*=color-],.ios .chip-outline-ios[class*=color-],.md .chip-outline-md[class*=color-]{--f7-chip-outline-border-color:var(--f7-theme-color);--f7-chip-text-color:var(--f7-theme-color)}.ios .chip-delete{margin-right:calc(-1 * var(--f7-chip-padding-horizontal))}.ios .chip-delete:after{font-size:10px}.md .chip-label+.chip-delete{margin-left:4px}.md .chip-delete{margin-right:calc(-1 * var(--f7-chip-padding-horizontal) + 4px)}.md .chip-delete:after{font-size:12px}.aurora .chip-delete{margin-right:calc(-1 * var(--f7-chip-padding-horizontal))}.aurora .chip-delete:after{font-size:10px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/chip/chip.d.ts b/www/assets/framework7/components/chip/chip.d.ts
index 81e7b8fd9..8fb78c3ab 100644
--- a/www/assets/framework7/components/chip/chip.d.ts
+++ b/www/assets/framework7/components/chip/chip.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Chip {
interface AppMethods {}
diff --git a/www/assets/framework7/components/chip/chip.js b/www/assets/framework7/components/chip/chip.js
index 06f264be0..6ad7e8fdd 100644
--- a/www/assets/framework7/components/chip/chip.js
+++ b/www/assets/framework7/components/chip/chip.js
@@ -1,3 +1 @@
-export default {
- name: 'chip'
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods;var t={name:"chip"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/chip/chip.lazy.js b/www/assets/framework7/components/chip/chip.lazy.js
deleted file mode 100644
index 96e6cdc49..000000000
--- a/www/assets/framework7/components/chip/chip.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx;var t={name:"chip"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/chip/package.json b/www/assets/framework7/components/chip/package.json
new file mode 100644
index 000000000..2af2998fe
--- /dev/null
+++ b/www/assets/framework7/components/chip/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/chip",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/chip/chip.js",
+ "module": "../../esm/components/chip/chip.js",
+ "jsnext:main": "../../esm/components/chip/chip.js",
+ "typings": "../../types/components/chip/chip.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/color-picker/color-picker-rtl.css b/www/assets/framework7/components/color-picker/color-picker-rtl.css
index cb812368b..6b7ce4172 100644
--- a/www/assets/framework7/components/color-picker/color-picker-rtl.css
+++ b/www/assets/framework7/components/color-picker/color-picker-rtl.css
@@ -1 +1 @@
-:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255, 255, 255, 0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255, 255, 255, 0.12)}.color-picker{overflow:hidden;width:100%;display:flex;flex-direction:column}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{width:var(--f7-color-picker-popover-width);max-width:90vw;max-height:80vh}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{overflow:hidden;flex-shrink:0}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{display:flex;justify-content:flex-start;align-items:stretch;flex-direction:column;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px;height:var(--f7-color-picker-sb-spectrum-height)}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,#000 100%),linear-gradient(to left,rgba(255,255,255,0) 0%,#fff 100%);position:relative}.color-picker-hs-spectrum{position:relative;background-image:linear-gradient(to right,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-hs-spectrum:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background-image:linear-gradient(to bottom,rgba(255,255,255,0),#fff)}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{width:4px;height:4px;position:absolute;left:-2px;top:-2px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;content:'';position:absolute;width:var(--f7-color-picker-sb-spectrum-handle-size);height:var(--f7-color-picker-sb-spectrum-handle-size);border:1px solid #fff;border-radius:50%;box-shadow:0px 0px 2px rgba(0,0,0,.5);box-sizing:border-box;left:50%;top:50%;transform:translate(-50%,-50%);transition:150ms;transition-property:transform;transform-origin:center}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{position:relative;width:var(--f7-color-picker-wheel-width);max-width:100%;height:auto;font-size:0;margin-left:auto;margin-right:auto}.color-picker-wheel svg{width:100%;height:auto}.color-picker-wheel .color-picker-wheel-handle{width:16.66666667%;height:16.66666667%;position:absolute;box-sizing:border-box;border:2px solid #fff;box-shadow:0px 0px 5px rgba(0,0,0,.5);background:red;border-radius:50%;left:0;top:0}.color-picker-wheel .color-picker-sb-spectrum{width:45%;height:45%;left:50%;top:50%;transform:translate3d(-50%,-50%,0);position:absolute}.color-picker-slider-wrap{display:flex;align-items:center;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{justify-content:space-between;display:flex;align-items:center}.color-picker-hex-label,.color-picker-slider-label{font-size:var(--f7-color-picker-label-font-size);width:var(--f7-color-picker-label-size);flex-shrink:0;margin-left:12px}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{width:var(--f7-color-picker-value-width);height:var(--f7-color-picker-value-height);background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);text-align:center;font-size:var(--f7-color-picker-value-font-size);display:flex;justify-content:center;align-items:center;flex-shrink:0;margin-right:10px}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{width:100%;height:100%;-webkit-appearance:none;appearance:none;border:none;outline:0;background:0 0;color:inherit;font-family:inherit;font-size:inherit;text-align:center;display:block;border-radius:4px}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0;display:none}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-right:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0, 0, 0, 0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{width:30px;height:30px;margin-left:-16px;margin-top:-16px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{display:flex;justify-content:space-around;justify-content:space-evenly;align-items:stretch;height:100%;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px;box-sizing:border-box}.color-picker-bar-wrap{display:flex;align-items:center;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0, 0, 0, 0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{transition-duration:0s;transition-property:transform;border-radius:3px}.color-picker-bar .range-knob-wrap{height:6px;width:calc(var(--f7-color-picker-bar-size) - 4px);margin-left:calc(-.5 * (var(--f7-color-picker-bar-size) - 4px))}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{font-size:var(--f7-color-picker-label-size);margin-top:12px;line-height:1;height:var(--f7-color-picker-label-height);flex-shrink:0}.color-picker-bar-value{margin-left:0;margin-bottom:10px}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(to left,rgba(0,0,0,0),#000),linear-gradient(to right,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%),linear-gradient(to left,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%);background-size:100% 100%,6px 3px,6px 3px;background-position:0 0,0px 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x}.color-picker-slider-hue .range-bar{background-image:linear-gradient(to left,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(to left,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{width:100%;display:flex;flex-wrap:nowrap}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{width:var(--f7-color-picker-palette-value-width);height:var(--f7-color-picker-palette-value-height);cursor:pointer}.color-picker-module-current-color,.color-picker-module-initial-current-colors{margin-left:10px;margin-right:10px;border-radius:var(--f7-color-picker-initial-current-color-border-radius);overflow:hidden;flex-shrink:0}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);padding:5px;border-radius:4px;margin-top:16px;margin-left:5px;margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-slider-label{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-left:5px}
\ No newline at end of file
+:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-value-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255, 255, 255, 0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255, 255, 255, 0.12)}.color-picker{overflow:hidden;width:100%;display:flex;flex-direction:column}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{width:var(--f7-color-picker-popover-width);max-width:90vw;max-height:80vh}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{overflow:hidden;flex-shrink:0}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{display:flex;justify-content:flex-start;align-items:stretch;flex-direction:column;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px;height:var(--f7-color-picker-sb-spectrum-height)}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,#000 100%),linear-gradient(to left,rgba(255,255,255,0) 0%,#fff 100%);position:relative}.color-picker-hs-spectrum{position:relative;background-image:linear-gradient(to right,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-hs-spectrum:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background-image:linear-gradient(to bottom,rgba(255,255,255,0),#fff)}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{width:4px;height:4px;position:absolute;left:-2px;top:-2px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;content:'';position:absolute;width:var(--f7-color-picker-sb-spectrum-handle-size);height:var(--f7-color-picker-sb-spectrum-handle-size);border:1px solid #fff;border-radius:50%;box-shadow:0px 0px 2px rgba(0,0,0,.5);box-sizing:border-box;left:50%;top:50%;transform:translate(-50%,-50%);transition:150ms;transition-property:transform;transform-origin:center}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{position:relative;width:var(--f7-color-picker-wheel-width);max-width:100%;height:auto;font-size:0;margin-left:auto;margin-right:auto}.color-picker-wheel svg{width:100%;height:auto}.color-picker-wheel .color-picker-wheel-handle{width:16.66666667%;height:16.66666667%;position:absolute;box-sizing:border-box;border:2px solid #fff;box-shadow:0px 0px 5px rgba(0,0,0,.5);background:red;border-radius:50%;left:0;top:0}.color-picker-wheel .color-picker-sb-spectrum{width:45%;height:45%;left:50%;top:50%;transform:translate3d(-50%,-50%,0);position:absolute}.color-picker-slider-wrap{display:flex;align-items:center;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{justify-content:space-between;display:flex;align-items:center}.color-picker-hex-label,.color-picker-slider-label{font-size:var(--f7-color-picker-label-font-size);width:var(--f7-color-picker-label-size);flex-shrink:0;margin-left:12px}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{width:var(--f7-color-picker-value-width);height:var(--f7-color-picker-value-height);background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);text-align:center;font-size:var(--f7-color-picker-value-font-size);display:flex;justify-content:center;align-items:center;flex-shrink:0;margin-right:10px}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{width:100%;height:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;background:0 0;color:inherit;font-family:inherit;font-size:inherit;text-align:center;display:block;border-radius:4px}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;display:none}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-right:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0, 0, 0, 0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{width:30px;height:30px;margin-left:-16px;margin-top:-16px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{display:flex;justify-content:space-around;justify-content:space-evenly;align-items:stretch;height:100%;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px;box-sizing:border-box}.color-picker-bar-wrap{display:flex;align-items:center;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0, 0, 0, 0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{transition-duration:0s;transition-property:transform;border-radius:3px}.color-picker-bar .range-knob-wrap{height:6px;width:calc(var(--f7-color-picker-bar-size) - 4px);margin-left:calc(-.5 * (var(--f7-color-picker-bar-size) - 4px))}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{font-size:var(--f7-color-picker-label-size);margin-top:12px;line-height:1;height:var(--f7-color-picker-label-height);flex-shrink:0}.color-picker-bar-value{margin-left:0;margin-bottom:10px}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(to left,rgba(0,0,0,0),#000),linear-gradient(to right,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%),linear-gradient(to left,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%);background-size:100% 100%,6px 3px,6px 3px;background-position:0 0,0px 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x}.color-picker-slider-hue .range-bar{background-image:linear-gradient(to left,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(to left,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{width:100%;display:flex;flex-wrap:nowrap}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{width:var(--f7-color-picker-palette-value-width);height:var(--f7-color-picker-palette-value-height);cursor:pointer}.color-picker-module-current-color,.color-picker-module-initial-current-colors{margin-left:10px;margin-right:10px;border-radius:var(--f7-color-picker-initial-current-color-border-radius);overflow:hidden;flex-shrink:0}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);padding:5px;border-radius:4px;margin-top:16px;margin-left:5px;margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-slider-label{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child{margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-left:5px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/color-picker/color-picker.css b/www/assets/framework7/components/color-picker/color-picker.css
index e9e9525c3..029c51e73 100644
--- a/www/assets/framework7/components/color-picker/color-picker.css
+++ b/www/assets/framework7/components/color-picker/color-picker.css
@@ -1 +1 @@
-:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-value-bg-color:#fff}:root .dark,:root.dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255, 255, 255, 0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255, 255, 255, 0.12)}.color-picker{overflow:hidden;width:100%;display:flex;flex-direction:column}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{width:var(--f7-color-picker-popover-width);max-width:90vw;max-height:80vh}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{overflow:hidden;flex-shrink:0}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{display:flex;justify-content:flex-start;align-items:stretch;flex-direction:column;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px;height:var(--f7-color-picker-sb-spectrum-height)}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,#000 100%),linear-gradient(to left,rgba(255,255,255,0) 0%,#fff 100%);position:relative}.color-picker-hs-spectrum{position:relative;background-image:linear-gradient(to right,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-hs-spectrum:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background-image:linear-gradient(to bottom,rgba(255,255,255,0),#fff)}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{width:4px;height:4px;position:absolute;left:-2px;top:-2px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;content:'';position:absolute;width:var(--f7-color-picker-sb-spectrum-handle-size);height:var(--f7-color-picker-sb-spectrum-handle-size);border:1px solid #fff;border-radius:50%;box-shadow:0px 0px 2px rgba(0,0,0,.5);box-sizing:border-box;left:50%;top:50%;transform:translate(-50%,-50%);transition:150ms;transition-property:transform;transform-origin:center}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{position:relative;width:var(--f7-color-picker-wheel-width);max-width:100%;height:auto;font-size:0;margin-left:auto;margin-right:auto}.color-picker-wheel svg{width:100%;height:auto}.color-picker-wheel .color-picker-wheel-handle{width:16.66666667%;height:16.66666667%;position:absolute;box-sizing:border-box;border:2px solid #fff;box-shadow:0px 0px 5px rgba(0,0,0,.5);background:red;border-radius:50%;left:0;top:0}.color-picker-wheel .color-picker-sb-spectrum{width:45%;height:45%;left:50%;top:50%;transform:translate3d(-50%,-50%,0);position:absolute}.color-picker-slider-wrap{display:flex;align-items:center;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{justify-content:space-between;display:flex;align-items:center}.color-picker-hex-label,.color-picker-slider-label{font-size:var(--f7-color-picker-label-font-size);width:var(--f7-color-picker-label-size);flex-shrink:0;margin-right:12px}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{width:var(--f7-color-picker-value-width);height:var(--f7-color-picker-value-height);background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);text-align:center;font-size:var(--f7-color-picker-value-font-size);display:flex;justify-content:center;align-items:center;flex-shrink:0;margin-left:10px}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{width:100%;height:100%;-webkit-appearance:none;appearance:none;border:none;outline:0;background:0 0;color:inherit;font-family:inherit;font-size:inherit;text-align:center;display:block;border-radius:4px}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0;display:none}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-left:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0, 0, 0, 0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{width:30px;height:30px;margin-left:-16px;margin-top:-16px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{display:flex;justify-content:space-around;justify-content:space-evenly;align-items:stretch;height:100%;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px;box-sizing:border-box}.color-picker-bar-wrap{display:flex;align-items:center;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0, 0, 0, 0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{transition-duration:0s;transition-property:transform;border-radius:3px}.color-picker-bar .range-knob-wrap{height:6px;width:calc(var(--f7-color-picker-bar-size) - 4px);margin-left:calc(-.5 * (var(--f7-color-picker-bar-size) - 4px))}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{font-size:var(--f7-color-picker-label-size);margin-top:12px;line-height:1;height:var(--f7-color-picker-label-height);flex-shrink:0}.color-picker-bar-value{margin-left:0;margin-bottom:10px}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(to right,rgba(0,0,0,0),#000),linear-gradient(to right,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%),linear-gradient(to left,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%);background-size:100% 100%,6px 3px,6px 3px;background-position:0 0,0px 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x}.color-picker-slider-hue .range-bar{background-image:linear-gradient(to right,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(to right,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{width:100%;display:flex;flex-wrap:nowrap}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{width:var(--f7-color-picker-palette-value-width);height:var(--f7-color-picker-palette-value-height);cursor:pointer}.color-picker-module-current-color,.color-picker-module-initial-current-colors{margin-left:10px;margin-right:10px;border-radius:var(--f7-color-picker-initial-current-color-border-radius);overflow:hidden;flex-shrink:0}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);padding:5px;border-radius:4px;margin-top:16px;margin-left:5px;margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-slider-label{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-right:5px}
\ No newline at end of file
+:root{--f7-color-picker-popover-width:350px;--f7-color-picker-slider-size:6px;--f7-color-picker-slider-knob-size:16px;--f7-color-picker-bar-size:50px;--f7-color-picker-bar-min-height:260px;--f7-color-picker-value-width:64px;--f7-color-picker-value-height:32px;--f7-color-picker-value-font-size:16px;--f7-color-picker-value-border-radius:4px;--f7-color-picker-hex-value-width:84px;--f7-color-picker-label-font-size:14px;--f7-color-picker-label-width:10px;--f7-color-picker-label-height:14px;--f7-color-picker-sb-spectrum-height:260px;--f7-color-picker-sb-spectrum-handle-size:16px;--f7-color-picker-wheel-width:330px;--f7-color-picker-palette-value-width:36px;--f7-color-picker-palette-value-height:36px;--f7-color-picker-initial-current-color-height:40px;--f7-color-picker-initial-current-color-border-radius:4px;--f7-color-picker-sheet-bg-color:#fff;--f7-color-picker-popup-bg-color:#fff;--f7-color-picker-value-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-bg-color:rgba(0, 0, 0, 0.05);--f7-color-picker-group-value-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-color-picker-sheet-bg-color:#121212;--f7-color-picker-popup-bg-color:#121212;--f7-color-picker-value-bg-color:rgba(255, 255, 255, 0.1);--f7-color-picker-group-bg-color:#000;--f7-color-picker-group-value-bg-color:rgba(255, 255, 255, 0.12)}.color-picker{overflow:hidden;width:100%;display:flex;flex-direction:column}.color-picker-popover .color-picker,.color-picker-popup .color-picker,.color-picker.color-picker-inline{position:relative}.color-picker-sheet-modal{background:var(--f7-color-picker-sheet-bg-color)}.color-picker-sheet-modal:before{z-index:600}.color-picker-sheet-modal .sheet-modal-inner{margin-bottom:var(--f7-safe-area-bottom)}.color-picker-popup .page{background:var(--f7-color-picker-popup-bg-color)}.color-picker-popup .page-content{padding-bottom:var(--f7-safe-area-bottom)}.color-picker-page .color-picker,.color-picker-popover .color-picker,.color-picker-popup .color-picker{height:100%}.color-picker-page .color-picker .toolbar,.color-picker-popover .color-picker .toolbar,.color-picker-popup .color-picker .toolbar{position:absolute}.color-picker-popover{width:var(--f7-color-picker-popover-width);max-width:90vw;max-height:80vh}.color-picker-popover .color-picker{max-height:80vh}.color-picker-popover .toolbar-top{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette{overflow:hidden;flex-shrink:0}.color-picker-popover .color-picker-module-palette:first-child{border-top-left-radius:var(--f7-popover-border-radius);border-top-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:last-child{border-bottom-left-radius:var(--f7-popover-border-radius);border-bottom-right-radius:var(--f7-popover-border-radius)}.color-picker-popover .color-picker-module-palette:first-child:last-child{border-radius:var(--f7-popover-border-radius)}.color-picker-popover .toolbar~.page-content .color-picker-module-palette:first-child{border-top-left-radius:0;border-top-right-radius:0}.color-picker-page .page-content,.color-picker-popover .page-content,.color-picker-popup .page-content,.color-picker-sheet-modal .page-content{display:flex;justify-content:flex-start;align-items:stretch;flex-direction:column;overflow-x:hidden}.color-picker-module{margin-top:5px}.color-picker-module:last-child{margin-bottom:5px}.color-picker-module-hs-spectrum,.color-picker-module-sb-spectrum{margin-left:10px;margin-right:10px}.color-picker-module-hs-spectrum:first-child,.color-picker-module-sb-spectrum:first-child{margin-top:10px}.color-picker-module-hs-spectrum .color-picker-hs-spectrum,.color-picker-module-hs-spectrum .color-picker-sb-spectrum,.color-picker-module-sb-spectrum .color-picker-hs-spectrum,.color-picker-module-sb-spectrum .color-picker-sb-spectrum{border-radius:4px;height:var(--f7-color-picker-sb-spectrum-height)}.color-picker-sb-spectrum{background-color:#000;background-image:linear-gradient(to bottom,rgba(0,0,0,0) 0%,#000 100%),linear-gradient(to left,rgba(255,255,255,0) 0%,#fff 100%);position:relative}.color-picker-hs-spectrum{position:relative;background-image:linear-gradient(to right,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-hs-spectrum:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;background-image:linear-gradient(to bottom,rgba(255,255,255,0),#fff)}.color-picker-hs-spectrum-handle,.color-picker-sb-spectrum-handle{width:4px;height:4px;position:absolute;left:-2px;top:-2px;z-index:1}.color-picker-hs-spectrum-handle:after,.color-picker-sb-spectrum-handle:after{background-color:inherit;content:'';position:absolute;width:var(--f7-color-picker-sb-spectrum-handle-size);height:var(--f7-color-picker-sb-spectrum-handle-size);border:1px solid #fff;border-radius:50%;box-shadow:0px 0px 2px rgba(0,0,0,.5);box-sizing:border-box;left:50%;top:50%;transform:translate(-50%,-50%);transition:150ms;transition-property:transform;transform-origin:center}.color-picker-hs-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-hs-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-hs-spectrum-handle-pressed:after,.color-picker-sb-spectrum-handle.color-picker-sb-spectrum-handle-pressed:after{transform:scale(1.5) translate(-33.333%,-33.333%)}.color-picker-module-wheel{margin-left:10px;margin-right:10px}.color-picker-wheel{position:relative;width:var(--f7-color-picker-wheel-width);max-width:100%;height:auto;font-size:0;margin-left:auto;margin-right:auto}.color-picker-wheel svg{width:100%;height:auto}.color-picker-wheel .color-picker-wheel-handle{width:16.66666667%;height:16.66666667%;position:absolute;box-sizing:border-box;border:2px solid #fff;box-shadow:0px 0px 5px rgba(0,0,0,.5);background:red;border-radius:50%;left:0;top:0}.color-picker-wheel .color-picker-sb-spectrum{width:45%;height:45%;left:50%;top:50%;transform:translate3d(-50%,-50%,0);position:absolute}.color-picker-slider-wrap{display:flex;align-items:center;margin-bottom:2px}.color-picker-slider-wrap+.color-picker-slider-wrap{margin-top:5px}.color-picker-hex-wrap{justify-content:space-between;display:flex;align-items:center}.color-picker-hex-label,.color-picker-slider-label{font-size:var(--f7-color-picker-label-font-size);width:var(--f7-color-picker-label-size);flex-shrink:0;margin-right:12px}.color-picker-hex-label{width:auto}.color-picker-bar-value,.color-picker-hex-value,.color-picker-slider-value{width:var(--f7-color-picker-value-width);height:var(--f7-color-picker-value-height);background:var(--f7-color-picker-value-bg-color);border-radius:var(--f7-color-picker-value-border-radius);text-align:center;font-size:var(--f7-color-picker-value-font-size);display:flex;justify-content:center;align-items:center;flex-shrink:0;margin-left:10px}.color-picker-bar-value input,.color-picker-hex-value input,.color-picker-slider-value input{width:100%;height:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;background:0 0;color:inherit;font-family:inherit;font-size:inherit;text-align:center;display:block;border-radius:4px}.color-picker-bar-value input::-webkit-inner-spin-button,.color-picker-bar-value input::-webkit-outer-spin-button,.color-picker-hex-value input::-webkit-inner-spin-button,.color-picker-hex-value input::-webkit-outer-spin-button,.color-picker-slider-value input::-webkit-inner-spin-button,.color-picker-slider-value input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;display:none}.color-picker-hex-value{width:var(--f7-color-picker-hex-value-width)}.color-picker-hex-value:first-child{margin-left:auto}.color-picker-slider{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-slider-size);--f7-range-bar-border-radius:var(--f7-color-picker-slider-size);--f7-range-knob-size:var(--f7-color-picker-slider-knob-size);--f7-range-knob-box-shadow:0 1px 2px rgba(0, 0, 0, 0.3)}.color-picker-slider .range-knob{transition-duration:.2s;transition-property:transform}.color-picker-slider .range-knob:after{width:30px;height:30px;margin-left:-16px;margin-top:-16px}.color-picker-slider .range-knob-active-state .range-knob{transform:scale(1.5)}.md .color-picker-slider.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-module-rgb-bars{display:flex;justify-content:space-around;justify-content:space-evenly;align-items:stretch;height:100%;min-height:var(--f7-color-picker-bar-min-height);padding-bottom:10px;padding-top:10px;box-sizing:border-box}.color-picker-bar-wrap{display:flex;align-items:center;flex-direction:column-reverse}.color-picker-bar{--f7-range-bar-active-bg-color:transparent;--f7-range-bar-size:var(--f7-color-picker-bar-size);--f7-range-bar-border-radius:2px;--f7-range-knob-size:6px;--f7-range-knob-box-shadow:0 0px 3px rgba(0, 0, 0, 0.3);--f7-range-knob-color:#fff}.color-picker-bar .range-knob{transition-duration:0s;transition-property:transform;border-radius:3px}.color-picker-bar .range-knob-wrap{height:6px;width:calc(var(--f7-color-picker-bar-size) - 4px);margin-left:calc(-.5 * (var(--f7-color-picker-bar-size) - 4px))}.color-picker-bar .range-knob-active-state .range-knob{transform:scale(1)}.md .color-picker-bar.range-slider-min:not(.range-slider-dual) .range-knob{background:var(--f7-range-knob-color)!important;border:none}.color-picker-bar-label{font-size:var(--f7-color-picker-label-size);margin-top:12px;line-height:1;height:var(--f7-color-picker-label-height);flex-shrink:0}.color-picker-bar-value{margin-left:0;margin-bottom:10px}.color-picker-slider-alpha{--f7-range-knob-color:#fff}.color-picker-slider-alpha .range-bar{background-image:linear-gradient(to right,rgba(0,0,0,0),#000),linear-gradient(to right,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%),linear-gradient(to left,rgba(255,255,255,.2) 50%,rgba(0,0,0,.2) 50%);background-size:100% 100%,6px 3px,6px 3px;background-position:0 0,0px 3px,0 0;background-repeat:repeat-y,repeat-x,repeat-x}.color-picker-slider-hue .range-bar{background-image:linear-gradient(to right,red,#feff00,#0f0,#00feff,#00f,#ff00fe,red)}.color-picker-slider-brightness .range-bar{background-image:linear-gradient(to right,#000,#fff)}.color-picker-module-palette{margin-top:16px}.color-picker-module-palette:first-child{margin-top:0}.color-picker-module-palette:last-child{margin-bottom:0}.color-picker-module-palette:first-child:last-child{margin:0}.color-picker-palette{display:flex;flex-wrap:wrap}.color-picker-palette-row{width:100%;display:flex;flex-wrap:nowrap}.color-picker-palette-row .color-picker-palette-value{width:100%}.color-picker-palette-value{width:var(--f7-color-picker-palette-value-width);height:var(--f7-color-picker-palette-value-height);cursor:pointer}.color-picker-module-current-color,.color-picker-module-initial-current-colors{margin-left:10px;margin-right:10px;border-radius:var(--f7-color-picker-initial-current-color-border-radius);overflow:hidden;flex-shrink:0}.color-picker-current-color,.color-picker-initial-color{height:var(--f7-color-picker-initial-current-color-height)}.color-picker-initial-current-colors{display:flex}.color-picker-initial-current-colors .color-picker-current-color,.color-picker-initial-current-colors .color-picker-initial-color{width:50%}.color-picker-module-alpha-slider,.color-picker-module-brightness-slider,.color-picker-module-hex,.color-picker-module-hsb-sliders,.color-picker-module-hue-slider,.color-picker-module-rgb-sliders{margin-left:10px;margin-right:10px}.color-picker-grouped-modules .color-picker-module-alpha-slider,.color-picker-grouped-modules .color-picker-module-brightness-slider,.color-picker-grouped-modules .color-picker-module-hex,.color-picker-grouped-modules .color-picker-module-hsb-sliders,.color-picker-grouped-modules .color-picker-module-hue-slider,.color-picker-grouped-modules .color-picker-module-rgb-sliders{background:var(--f7-color-picker-group-bg-color);padding:5px;border-radius:4px;margin-top:16px;margin-left:5px;margin-right:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider:last-child,.color-picker-grouped-modules .color-picker-module-hex:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders:last-child{margin-bottom:16px}.color-picker-grouped-modules .color-picker-hex-value,.color-picker-grouped-modules .color-picker-slider-value{background:var(--f7-color-picker-group-value-bg-color)}.color-picker-grouped-modules .color-picker-hex-label,.color-picker-grouped-modules .color-picker-slider-label{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:first-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:first-child{margin-left:5px}.color-picker-grouped-modules .color-picker-module-alpha-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-brightness-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hsb-sliders .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-hue-slider .range-slider:last-child,.color-picker-grouped-modules .color-picker-module-rgb-sliders .range-slider:last-child{margin-right:5px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/color-picker/color-picker.d.ts b/www/assets/framework7/components/color-picker/color-picker.d.ts
index 957b83ee5..ead618e48 100644
--- a/www/assets/framework7/components/color-picker/color-picker.d.ts
+++ b/www/assets/framework7/components/color-picker/color-picker.d.ts
@@ -1,10 +1,6 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
-import { View } from '../view/view.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
+import { View } from '../view/view';
export namespace ColorPicker {
interface ColorPickerValue {
diff --git a/www/assets/framework7/components/color-picker/color-picker.js b/www/assets/framework7/components/color-picker/color-picker.js
index b94de8114..efaf80531 100644
--- a/www/assets/framework7/components/color-picker/color-picker.js
+++ b/www/assets/framework7/components/color-picker/color-picker.js
@@ -1,96 +1 @@
-import $ from '../../shared/dom7.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-import ColorPicker from './color-picker-class.js';
-export default {
- name: 'colorPicker',
- static: {
- ColorPicker
- },
-
- create() {
- const app = this;
- app.colorPicker = ConstructorMethods({
- defaultSelector: '.color-picker',
- constructor: ColorPicker,
- app,
- domProp: 'f7ColorPicker'
- });
-
- app.colorPicker.close = function close(el) {
- if (el === void 0) {
- el = '.color-picker';
- }
-
- const $el = $(el);
- if ($el.length === 0) return;
- const colorPicker = $el[0].f7ColorPicker;
- if (!colorPicker || colorPicker && !colorPicker.opened) return;
- colorPicker.close();
- };
- },
-
- params: {
- colorPicker: {
- // Color picker settings
- value: null,
- modules: ['wheel'],
- palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],
- groupedModules: false,
- centerModules: true,
- sliderLabel: false,
- sliderValue: false,
- sliderValueEdiable: false,
- barLabel: false,
- barValue: false,
- barValueEdiable: false,
- hexLabel: false,
- hexValueEditable: false,
- redLabelText: 'R',
- greenLabelText: 'G',
- blueLabelText: 'B',
- hueLabelText: 'H',
- saturationLabelText: 'S',
- brightnessLabelText: 'B',
- hexLabelText: 'HEX',
- alphaLabelText: 'A',
- // Common opener settings
- containerEl: null,
- openIn: 'popover',
- // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'
- openInPhone: 'popup',
- // or 'popover' or 'sheet' or 'popup' or 'page'
- popupPush: false,
- popupSwipeToClose: undefined,
- sheetPush: false,
- sheetSwipeToClose: undefined,
- formatValue: null,
- targetEl: null,
- targetElSetBackgroundColor: false,
- inputEl: null,
- inputReadOnly: true,
- closeByOutsideClick: true,
- scrollToInput: true,
- toolbarSheet: true,
- toolbarPopover: false,
- toolbarCloseText: 'Done',
- navbarPopup: true,
- navbarCloseText: 'Done',
- navbarTitleText: 'Color',
- navbarBackLinkText: 'Back',
- cssClass: null,
- routableModals: false,
- view: null,
- url: 'color/',
- backdrop: null,
- closeByBackdropClick: true,
- // Render functions
- renderToolbar: null,
- renderNavbar: null,
- renderInline: null,
- renderPopover: null,
- renderSheet: null,
- renderPopup: null,
- render: null
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,r){void 0===r&&(r=!0);var l=e.$,a=e.utils,o=e.getDevice,t=e.getSupport,s=e.Class,i=(e.Modal,e.ConstructorMethods);e.ModalMethods;function n(e){this.wrapped=e}function c(e){var r,l;function a(r,l){try{var t=e[r](l),s=t.value,i=s instanceof n;Promise.resolve(i?s.wrapped:s).then((function(e){i?a("return"===r?"return":"next",e):o(t.done?"return":"normal",e)}),(function(e){a("throw",e)}))}catch(e){o("throw",e)}}function o(e,o){switch(e){case"return":r.resolve({value:o,done:!0});break;case"throw":r.reject(o);break;default:r.resolve({value:o,done:!1})}(r=r.next)?a(r.key,r.arg):l=null}this._invoke=function(e,o){return new Promise((function(t,s){var i={key:e,arg:o,resolve:t,reject:s,next:null};l?l=l.next=i:(r=l=i,a(e,o))}))},"function"!=typeof e.return&&(this.return=void 0)}function u(e,r){for(var l=0;lparseInt("ffffff",16)&&(a="fff"),o<0&&(a="000"),e.setValue({hex:a})}}e.$el.on("change",".color-picker-module-hex input",r),e.destroyHexEvents=function(){e.$el.off("change",".color-picker-module-hex input",r)}},update:function(e){var r=e.value,l=e.params.hexValueEditable,a=r.hex;l?e.$el.find("input.color-picker-value-hex").val(a):e.$el.find("span.color-picker-value-hex").text(a)},destroy:function(e){e.destroyHexEvents&&e.destroyHexEvents(),delete e.destroyHexEvents}},C={render:function(e){var r=e.params,l=r.sliderLabel,a=r.sliderValue,o=r.sliderValueEditable,t=r.hueLabelText,s=r.saturationLabelText,i=r.brightnessLabelText;return $jsx("div",{class:"color-picker-module color-picker-module-hsb-sliders"},$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},t),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-hue"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"0.1",min:"0",max:"360",class:"color-picker-value-hue","data-color-index":"0"}):$jsx("span",{class:"color-picker-value-hue"}))),$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},s),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-saturation"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"0.1",min:"0",max:"100",class:"color-picker-value-saturation","data-color-index":"1"}):$jsx("span",{class:"color-picker-value-saturation"}))),$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},i),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-brightness"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"0.1",min:"0",max:"100",class:"color-picker-value-brightness","data-color-index":"2"}):$jsx("span",{class:"color-picker-value-brightness"}))))},init:function(e){function r(r){var a=[].concat(e.value.hsb),o=parseInt(l(r.target).attr("data-color-index"),10),t=parseFloat(r.target.value);Number.isNaN(t)?r.target.value=a[o]:(t=0===o?Math.max(0,Math.min(360,t)):Math.max(0,Math.min(100,t))/100,a[o]=t,e.setValue({hsb:a}))}e.hueRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-hue"),min:0,max:360,step:.1,value:0,on:{change:function(r,l){e.setValue({hue:l})}}}),e.saturationRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-saturation"),min:0,max:1,step:.001,value:0,on:{change:function(r,l){var a=Math.floor(1e3*l)/1e3;e.setValue({hsb:[e.value.hsb[0],a,e.value.hsb[2]]})}}}),e.brightnessRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-brightness"),min:0,max:1,step:.001,value:0,on:{change:function(r,l){var a=Math.floor(1e3*l)/1e3;e.setValue({hsb:[e.value.hsb[0],e.value.hsb[1],a]})}}}),e.$el.on("change",".color-picker-module-hsb-sliders input",r),e.destroyHsbSlidersEvents=function(){e.$el.off("change",".color-picker-module-hsb-sliders input",r)}},update:function(e){var r=e.app,l=e.value,a=e.params,o=a.sliderValue,t=a.sliderValueEditable,s=l.hsb,i=l.hue;e.hueRangeSlider.value=i,e.saturationRangeSlider.value=s[1],e.brightnessRangeSlider.value=s[2],e.hueRangeSlider.layout(),e.saturationRangeSlider.layout(),e.brightnessRangeSlider.layout();var n=v(s[0],s[1],1),c=v(s[0],0,1),u=v(s[0],1,1),p=s[2];e.hueRangeSlider.$el[0].style.setProperty("--f7-range-knob-color","hsl("+i+", 100%, 50%)"),e.saturationRangeSlider.$el[0].style.setProperty("--f7-range-knob-color","hsl("+n[0]+", "+100*n[1]+"%, "+100*n[2]+"%)"),e.brightnessRangeSlider.$el[0].style.setProperty("--f7-range-knob-color","rgb("+255*p+", "+255*p+", "+255*p+")"),e.saturationRangeSlider.$el.find(".range-bar").css("background-image","linear-gradient("+(r.rtl?"to left":"to right")+", hsl("+c[0]+", "+100*c[1]+"%, "+100*c[2]+"%), hsl("+u[0]+", "+100*u[1]+"%, "+100*u[2]+"%))"),o&&t?(e.$el.find("input.color-picker-value-hue").val(""+i),e.$el.find("input.color-picker-value-saturation").val(""+1e3*s[1]/10),e.$el.find("input.color-picker-value-brightness").val(""+1e3*s[2]/10)):o&&(e.$el.find("span.color-picker-value-hue").text(""+i),e.$el.find("span.color-picker-value-saturation").text(""+1e3*s[1]/10),e.$el.find("span.color-picker-value-brightness").text(""+1e3*s[2]/10))},destroy:function(e){e.hueRangeSlider&&e.hueRangeSlider.destroy&&e.hueRangeSlider.destroy(),e.saturationRangeSlider&&e.saturationRangeSlider.destroy&&e.saturationRangeSlider.destroy(),e.brightnessRangeSlider&&e.brightnessRangeSlider.destroy&&e.brightnessRangeSlider.destroy(),delete e.hueRangeSlider,delete e.saturationRangeSlider,delete e.brightnessRangeSlider,e.destroyHsbSlidersEvents&&e.destroyHsbSlidersEvents(),delete e.destroyHsbSlidersEvents}},S={render:function(e){var r=e.params,l=r.sliderLabel,a=r.sliderValue,o=r.sliderValueEditable,t=r.hueLabelText;return $jsx("div",{class:"color-picker-module color-picker-module-hue-slider"},$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},t),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-hue"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"0.1",min:"0",max:"360",class:"color-picker-value-hue"}):$jsx("span",{class:"color-picker-value-hue"}))))},init:function(e){e.hueRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-hue"),min:0,max:360,step:.1,value:0,on:{change:function(r,l){e.setValue({hue:l})}}})},update:function(e){var r=e.value,l=e.params,a=l.sliderValue,o=l.sliderValueEditable,t=r.hue;e.hueRangeSlider.value=t,e.hueRangeSlider.layout(),e.hueRangeSlider.$el[0].style.setProperty("--f7-range-knob-color","hsl("+t+", 100%, 50%)"),a&&o?e.$el.find("input.color-picker-value-hue").val(""+t):a&&e.$el.find("span.color-picker-value-hue").text(""+t)},destroy:function(e){e.hueRangeSlider&&e.hueRangeSlider.destroy&&e.hueRangeSlider.destroy(),delete e.hueRangeSlider}},R={render:function(e){var r=e.params,l=r.sliderLabel,a=r.sliderValue,o=r.sliderValueEditable,t=r.brightnessLabelText;return $jsx("div",{class:"color-picker-module color-picker-module-brightness-slider"},$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},t),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-brightness"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"0.1",min:"0",max:"100",class:"color-picker-value-brightness"}):$jsx("span",{class:"color-picker-value-brightness"}))))},init:function(e){e.brightnessRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-brightness"),min:0,max:1,step:.001,value:0,on:{change:function(r,l){var a=Math.floor(1e3*l)/1e3;e.setValue({hsb:[e.value.hsb[0],e.value.hsb[1],a]})}}})},update:function(e){var r=e.value,l=e.app,a=e.params,o=a.sliderValue,t=a.sliderValueEditable,s=r.hsb;e.brightnessRangeSlider.value=s[2],e.brightnessRangeSlider.layout();var i=v(s[0],s[1],s[2]),n=v(s[0],s[1],0),c=v(s[0],s[1],1);e.brightnessRangeSlider.$el[0].style.setProperty("--f7-range-knob-color","hsl("+i[0]+", "+100*i[1]+"%, "+100*i[2]+"%)"),e.brightnessRangeSlider.$el.find(".range-bar").css("background-image","linear-gradient("+(l.rtl?"to left":"to right")+", hsl("+n[0]+", "+100*n[1]+"%, "+100*n[2]+"%), hsl("+c[0]+", "+100*c[1]+"%, "+100*c[2]+"%))"),o&&t?e.$el.find("input.color-picker-value-brightness").val(""+1e3*s[2]/10):o&&e.$el.find("span.color-picker-value-brightness").text(""+1e3*s[2]/10)},destroy:function(e){e.brightnessRangeSlider&&e.brightnessRangeSlider.destroy&&e.brightnessRangeSlider.destroy(),delete e.brightnessRangeSlider}},V={render:function(e){return $jsx("div",{class:"color-picker-module color-picker-module-palette"},$jsx("div",{class:"color-picker-palette"},e.params.palette.map((function(e){if(Array.isArray(e)){var r='';return r+=e.map((function(e){return'\n
\n '})).join(""),r+="
"}return $jsx("div",{class:"color-picker-palette-value","data-palette-color":e,style:"background-color: "+e})}))))},init:function(e){function r(r){var a=l(r.target).attr("data-palette-color");e.setValue({hex:a})}e.$el.on("click",".color-picker-module-palette .color-picker-palette-value",r),e.destroyPaletteEvents=function(){e.$el.off("click",".color-picker-module-hex input",r)}},destroy:function(e){e.destroyPaletteEvents&&e.destroyPaletteEvents(),delete e.destroyPaletteEvents}},B={render:function(){return $jsx("div",{class:"color-picker-module color-picker-module-initial-current-colors"},$jsx("div",{class:"color-picker-initial-current-colors"},$jsx("div",{class:"color-picker-initial-color"}),$jsx("div",{class:"color-picker-current-color"})))},init:function(e){function r(){if(e.initialValue){var r=e.initialValue,l=r.hex,a=r.alpha;e.setValue({hex:l,alpha:a})}}e.$el.on("click",".color-picker-initial-color",r),e.destroyInitialCurrentEvents=function(){e.$el.off("click",".color-picker-initial-color",r)}},update:function(e){e.$el.find(".color-picker-module-initial-current-colors .color-picker-initial-color").css("background-color",e.initialValue.hex),e.$el.find(".color-picker-module-initial-current-colors .color-picker-current-color").css("background-color",e.value.hex)},destroy:function(e){e.destroyInitialCurrentEvents&&e.destroyInitialCurrentEvents(),delete e.destroyInitialCurrentEvents}},T={render:function(e){var r=e.params,l=r.barLabel,a=r.barValue,o=r.barValueEditable,t=r.redLabelText,s=r.greenLabelText,i=r.blueLabelText;return $jsx("div",{class:"color-picker-module color-picker-module-rgb-bars"},$jsx("div",{class:"color-picker-bar-wrap"},l&&$jsx("div",{class:"color-picker-bar-label"},t),$jsx("div",{class:"range-slider color-picker-bar color-picker-bar-red"}),a&&$jsx("div",{class:"color-picker-bar-value"},o?$jsx("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-bar-red","data-color-index":"0"}):$jsx("span",{class:"color-picker-value-bar-red"}))),$jsx("div",{class:"color-picker-bar-wrap"},l&&$jsx("div",{class:"color-picker-bar-label"},s),$jsx("div",{class:"range-slider color-picker-bar color-picker-bar-green"}),a&&$jsx("div",{class:"color-picker-bar-value"},o?$jsx("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-bar-green","data-color-index":"1"}):$jsx("span",{class:"color-picker-value-bar-green"}))),$jsx("div",{class:"color-picker-bar-wrap"},l&&$jsx("div",{class:"color-picker-bar-label"},i),$jsx("div",{class:"range-slider color-picker-bar color-picker-bar-blue"}),a&&$jsx("div",{class:"color-picker-bar-value"},o?$jsx("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-bar-blue","data-color-index":"2"}):$jsx("span",{class:"color-picker-value-bar-blue"}))))},init:function(e){function r(r){var a=[].concat(e.value.rgb),o=parseInt(l(r.target).attr("data-color-index"),10),t=parseInt(r.target.value,10);Number.isNaN(t)?r.target.value=a[o]:(t=Math.max(0,Math.min(255,t)),a[o]=t,e.setValue({rgb:a}))}e.redBar=e.app.range.create({el:e.$el.find(".color-picker-bar-red"),min:0,max:255,step:1,value:0,vertical:!0,on:{change:function(r,l){e.setValue({rgb:[l,e.value.rgb[1],e.value.rgb[2]]})}}}),e.greenBar=e.app.range.create({el:e.$el.find(".color-picker-bar-green"),min:0,max:255,step:1,value:0,vertical:!0,on:{change:function(r,l){e.setValue({rgb:[e.value.rgb[0],l,e.value.rgb[2]]})}}}),e.blueBar=e.app.range.create({el:e.$el.find(".color-picker-bar-blue"),min:0,max:255,step:1,value:0,vertical:!0,on:{change:function(r,l){e.setValue({rgb:[e.value.rgb[0],e.value.rgb[1],l]})}}}),e.$el.on("change",".color-picker-module-rgb-bars input",r),e.destroyRgbBarsEvents=function(){e.$el.off("change",".color-picker-module-rgb-bars input",r)}},update:function(e){var r=e.value,l=e.redBar,a=e.greenBar,o=e.blueBar,t=e.params,s=t.barValue,i=t.barValueEditable,n=r.rgb;l.value=n[0],a.value=n[1],o.value=n[2],l.layout(),a.layout(),o.layout(),l.$el.find(".range-bar").css("background-image","linear-gradient(to top, rgb(0, "+n[1]+", "+n[2]+"), rgb(255, "+n[1]+", "+n[2]+"))"),a.$el.find(".range-bar").css("background-image","linear-gradient(to top, rgb("+n[0]+", 0, "+n[2]+"), rgb("+n[0]+", 255, "+n[2]+"))"),o.$el.find(".range-bar").css("background-image","linear-gradient(to top, rgb("+n[0]+", "+n[1]+", 0), rgb("+n[0]+", "+n[1]+", 255))"),s&&i?(e.$el.find("input.color-picker-value-bar-red").val(n[0]),e.$el.find("input.color-picker-value-bar-green").val(n[1]),e.$el.find("input.color-picker-value-bar-blue").val(n[2])):s&&(e.$el.find("span.color-picker-value-bar-red").text(n[0]),e.$el.find("span.color-picker-value-bar-green").text(n[1]),e.$el.find("span.color-picker-value-bar-blue").text(n[2]))},destroy:function(e){e.redBar&&e.redBar.destroy&&e.redBar.destroy(),e.greenBar&&e.greenBar.destroy&&e.greenBar.destroy(),e.blueBar&&e.blueBar.destroy&&e.blueBar.destroy(),delete e.redBar,delete e.greenBar,delete e.blueBar,e.destroyRgbBarsEvents&&e.destroyRgbBarsEvents(),delete e.destroyRgbBarsEvents}},F={render:function(e){var r=e.params,l=r.sliderLabel,a=r.sliderValue,o=r.sliderValueEditable,t=r.redLabelText,s=r.greenLabelText,i=r.blueLabelText;return $jsx("div",{class:"color-picker-module color-picker-module-rgb-sliders"},$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},t),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-red"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-red","data-color-index":"0"}):$jsx("span",{class:"color-picker-value-red"}))),$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},s),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-green"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-green","data-color-index":"1"}):$jsx("span",{class:"color-picker-value-green"}))),$jsx("div",{class:"color-picker-slider-wrap"},l&&$jsx("div",{class:"color-picker-slider-label"},i),$jsx("div",{class:"range-slider color-picker-slider color-picker-slider-blue"}),a&&$jsx("div",{class:"color-picker-slider-value"},o?$jsx("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-blue","data-color-index":"2"}):$jsx("span",{class:"color-picker-value-blue"}))))},init:function(e){function r(r){var a=[].concat(e.value.rgb),o=parseInt(l(r.target).attr("data-color-index"),10),t=parseInt(r.target.value,10);Number.isNaN(t)?r.target.value=a[o]:(t=Math.max(0,Math.min(255,t)),a[o]=t,e.setValue({rgb:a}))}e.redRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-red"),min:0,max:255,step:1,value:0,on:{change:function(r,l){e.setValue({rgb:[l,e.value.rgb[1],e.value.rgb[2]]})}}}),e.greenRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-green"),min:0,max:255,step:1,value:0,on:{change:function(r,l){e.setValue({rgb:[e.value.rgb[0],l,e.value.rgb[2]]})}}}),e.blueRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-blue"),min:0,max:255,step:1,value:0,on:{change:function(r,l){e.setValue({rgb:[e.value.rgb[0],e.value.rgb[1],l]})}}}),e.$el.on("change",".color-picker-module-rgb-sliders input",r),e.destroyRgbSlidersEvents=function(){e.$el.off("change",".color-picker-module-rgb-sliders input",r)}},update:function(e){var r=e.app,l=e.value,a=e.redRangeSlider,o=e.greenRangeSlider,t=e.blueRangeSlider,s=e.params,i=s.sliderValue,n=s.sliderValueEditable,c=l.rgb;a.value=c[0],o.value=c[1],t.value=c[2],a.layout(),o.layout(),t.layout(),a.$el[0].style.setProperty("--f7-range-knob-color","rgb("+c[0]+", "+c[1]+", "+c[2]+")"),o.$el[0].style.setProperty("--f7-range-knob-color","rgb("+c[0]+", "+c[1]+", "+c[2]+")"),t.$el[0].style.setProperty("--f7-range-knob-color","rgb("+c[0]+", "+c[1]+", "+c[2]+")");var u=r.rtl?"to left":"to right";a.$el.find(".range-bar").css("background-image","linear-gradient("+u+", rgb(0, "+c[1]+", "+c[2]+"), rgb(255, "+c[1]+", "+c[2]+"))"),o.$el.find(".range-bar").css("background-image","linear-gradient("+u+", rgb("+c[0]+", 0, "+c[2]+"), rgb("+c[0]+", 255, "+c[2]+"))"),t.$el.find(".range-bar").css("background-image","linear-gradient("+u+", rgb("+c[0]+", "+c[1]+", 0), rgb("+c[0]+", "+c[1]+", 255))"),i&&n?(e.$el.find("input.color-picker-value-red").val(c[0]),e.$el.find("input.color-picker-value-green").val(c[1]),e.$el.find("input.color-picker-value-blue").val(c[2])):i&&(e.$el.find("span.color-picker-value-red").text(c[0]),e.$el.find("span.color-picker-value-green").text(c[1]),e.$el.find("span.color-picker-value-blue").text(c[2]))},destroy:function(e){e.redRangeSlider&&e.redRangeSlider.destroy&&e.redRangeSlider.destroy(),e.greenRangeSlider&&e.greenRangeSlider.destroy&&e.greenRangeSlider.destroy(),e.blueRangeSlider&&e.blueRangeSlider.destroy&&e.blueRangeSlider.destroy(),delete e.redRangeSlider,delete e.greenRangeSlider,delete e.blueRangeSlider,e.destroyRgbSlidersEvents&&e.destroyRgbSlidersEvents(),delete e.destroyRgbSlidersEvents}},w={render:function(){return $jsx("div",{class:"color-picker-module color-picker-module-sb-spectrum"},$jsx("div",{class:"color-picker-sb-spectrum",style:"background-color: hsl(0, 100%, 50%)"},$jsx("div",{class:"color-picker-sb-spectrum-handle"})))},init:function(e){var r,a,o,s,i,n,c,u,p=e.app,d=e.$el;function v(r,l){var a=(r-n.left)/n.width,o=(l-n.top)/n.height;a=Math.max(0,Math.min(1,a)),o=1-Math.max(0,Math.min(1,o)),e.setValue({hsb:[e.value.hue,a,o]})}function h(e){if(!r){a="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,s=a,o="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,i=o;var t=l(e.target);(u=t.closest(".color-picker-sb-spectrum-handle").length>0)||(c=t.closest(".color-picker-sb-spectrum").length>0),c&&(n=d.find(".color-picker-sb-spectrum")[0].getBoundingClientRect(),v(a,o)),(u||c)&&d.find(".color-picker-sb-spectrum-handle").addClass("color-picker-sb-spectrum-handle-pressed")}}function g(e){(c||u)&&(s="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,i="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,e.preventDefault(),r||(r=!0,u&&(n=d.find(".color-picker-sb-spectrum")[0].getBoundingClientRect())),(c||u)&&v(s,i))}function f(){r=!1,(c||u)&&d.find(".color-picker-sb-spectrum-handle").removeClass("color-picker-sb-spectrum-handle-pressed"),c=!1,u=!1}function b(){e.modules["sb-spectrum"].update(e)}var k=!("touchstart"!==p.touchEvents.start||!t().passiveListener)&&{passive:!0,capture:!1};e.$el.on(p.touchEvents.start,h,k),p.on("touchmove:active",g),p.on("touchend:passive",f),p.on("resize",b),e.destroySpectrumEvents=function(){e.$el.off(p.touchEvents.start,h,k),p.off("touchmove:active",g),p.off("touchend:passive",f),p.off("resize",b)}},update:function(e){var r=e.value,l=r.hsl,a=r.hsb,o=e.$el.find(".color-picker-sb-spectrum")[0].offsetWidth,t=e.$el.find(".color-picker-sb-spectrum")[0].offsetHeight;e.$el.find(".color-picker-sb-spectrum").css("background-color","hsl("+l[0]+", 100%, 50%)"),e.$el.find(".color-picker-sb-spectrum-handle").css("background-color","hsl("+l[0]+", "+100*l[1]+"%, "+100*l[2]+"%)").transform("translate("+o*a[1]+"px, "+t*(1-a[2])+"px)")},destroy:function(e){e.destroySpectrumEvents&&e.destroySpectrumEvents(),delete e.destroySpectrumEvents}},M={render:function(){return $jsx("div",{class:"color-picker-module color-picker-module-hs-spectrum"},$jsx("div",{class:"color-picker-hs-spectrum"},$jsx("div",{class:"color-picker-hs-spectrum-handle"})))},init:function(e){var r,a,o,s,i,n,c,u,p=e.app,d=e.$el;function v(r,l){var a=(r-n.left)/n.width*360,o=(l-n.top)/n.height;a=Math.max(0,Math.min(360,a)),o=1-Math.max(0,Math.min(1,o)),e.setValue({hsb:[a,o,e.value.hsb[2]]})}function h(e){if(!r){a="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,s=a,o="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,i=o;var t=l(e.target);(u=t.closest(".color-picker-hs-spectrum-handle").length>0)||(c=t.closest(".color-picker-hs-spectrum").length>0),c&&(n=d.find(".color-picker-hs-spectrum")[0].getBoundingClientRect(),v(a,o)),(u||c)&&d.find(".color-picker-hs-spectrum-handle").addClass("color-picker-hs-spectrum-handle-pressed")}}function g(e){(c||u)&&(s="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,i="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,e.preventDefault(),r||(r=!0,u&&(n=d.find(".color-picker-hs-spectrum")[0].getBoundingClientRect())),(c||u)&&v(s,i))}function f(){r=!1,(c||u)&&d.find(".color-picker-hs-spectrum-handle").removeClass("color-picker-hs-spectrum-handle-pressed"),c=!1,u=!1}function b(){e.modules["hs-spectrum"].update(e)}var k=!("touchstart"!==p.touchEvents.start||!t().passiveListener)&&{passive:!0,capture:!1};e.$el.on(p.touchEvents.start,h,k),p.on("touchmove:active",g),p.on("touchend:passive",f),p.on("resize",b),e.destroySpectrumEvents=function(){e.$el.off(p.touchEvents.start,h,k),p.off("touchmove:active",g),p.off("touchend:passive",f),p.off("resize",b)}},update:function(e){var r=e.value.hsb,l=e.$el.find(".color-picker-hs-spectrum")[0].offsetWidth,a=e.$el.find(".color-picker-hs-spectrum")[0].offsetHeight,o=v(r[0],r[1],1);e.$el.find(".color-picker-hs-spectrum-handle").css("background-color","hsl("+o[0]+", "+100*o[1]+"%, "+100*o[2]+"%)").transform("translate("+l*(r[0]/360)+"px, "+a*(1-r[1])+"px)")},destroy:function(e){e.destroySpectrumEvents&&e.destroySpectrumEvents(),delete e.destroySpectrumEvents}};var P={render:function(){return $jsx("div",{class:"color-picker-module color-picker-module-wheel"},$jsx("div",{class:"color-picker-wheel"},$jsx("svg",{viewBox:"0 0 300 300",width:"300",height:"300"},function(){for(var e="",r=256;r>0;r-=1){var l=r*Math.PI/128,a=1.40625*r;e+=''}return e}()),$jsx("div",{class:"color-picker-wheel-handle"}),$jsx("div",{class:"color-picker-sb-spectrum",style:"background-color: hsl(0, 100%, 50%)"},$jsx("div",{class:"color-picker-sb-spectrum-handle"}))))},init:function(e){var r,a,o,s,i,n,c,u,p,d,v,h=e.app,g=e.$el;function f(r,l){var a=n.left+n.width/2,o=n.top+n.height/2,t=180*Math.atan2(l-o,r-a)/Math.PI+90;t<0&&(t+=360),t=360-t,e.setValue({hue:t})}function b(r,l){var a=(r-p.left)/p.width,o=(l-p.top)/p.height;a=Math.max(0,Math.min(1,a)),o=1-Math.max(0,Math.min(1,o)),e.setValue({hsb:[e.value.hue,a,o]})}function k(e){if(!r){a="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,s=a,o="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,i=o;var t=l(e.target);u=t.closest(".color-picker-wheel-handle").length>0,c=t.closest("circle").length>0,(v=t.closest(".color-picker-sb-spectrum-handle").length>0)||(d=t.closest(".color-picker-sb-spectrum").length>0),c&&(n=g.find(".color-picker-wheel")[0].getBoundingClientRect(),f(a,o)),d&&(p=g.find(".color-picker-sb-spectrum")[0].getBoundingClientRect(),b(a,o)),(v||d)&&g.find(".color-picker-sb-spectrum-handle").addClass("color-picker-sb-spectrum-handle-pressed")}}function m(e){(c||u||d||v)&&(s="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,i="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,e.preventDefault(),r||(r=!0,u&&(n=g.find(".color-picker-wheel")[0].getBoundingClientRect()),v&&(p=g.find(".color-picker-sb-spectrum")[0].getBoundingClientRect())),(c||u)&&f(s,i),(d||v)&&b(s,i))}function $(){r=!1,(d||v)&&g.find(".color-picker-sb-spectrum-handle").removeClass("color-picker-sb-spectrum-handle-pressed"),c=!1,u=!1,d=!1,v=!1}function x(){e.modules.wheel.update(e)}var y=!("touchstart"!==h.touchEvents.start||!t().passiveListener)&&{passive:!0,capture:!1};e.$el.on(h.touchEvents.start,k,y),h.on("touchmove:active",m),h.on("touchend:passive",$),h.on("resize",x),e.destroyWheelEvents=function(){e.$el.off(h.touchEvents.start,k,y),h.off("touchmove:active",m),h.off("touchend:passive",$),h.off("resize",x)}},update:function(e){var r=e.value,l=r.hsl,a=r.hsb,o=e.$el.find(".color-picker-sb-spectrum")[0].offsetWidth,t=e.$el.find(".color-picker-sb-spectrum")[0].offsetHeight,s=e.$el.find(".color-picker-wheel")[0].offsetWidth,i=s/2,n=r.hue*Math.PI/180,c=s/6/2,u=i-Math.sin(n)*(i-c)-c,p=i-Math.cos(n)*(i-c)-c;e.$el.find(".color-picker-wheel-handle").css("background-color","hsl("+l[0]+", 100%, 50%)").transform("translate("+u+"px, "+p+"px)"),e.$el.find(".color-picker-sb-spectrum").css("background-color","hsl("+l[0]+", 100%, 50%)"),e.$el.find(".color-picker-sb-spectrum-handle").css("background-color","hsl("+l[0]+", "+100*l[1]+"%, "+100*l[2]+"%)").transform("translate("+o*a[1]+"px, "+t*(1-a[2])+"px)")},destroy:function(e){e.destroyWheelEvents&&e.destroyWheelEvents(),delete e.destroyWheelEvents}},I=function(e){var r,a;function t(r,a){var o;void 0===a&&(a={});var t,s,i,n=d(o=e.call(this,a,[r])||this);if(n.params=h({},r.params.colorPicker,a),n.params.containerEl&&0===(t=l(n.params.containerEl)).length)return n||d(o);function c(){n.open()}function u(e){e.preventDefault()}function p(){n.open()}function v(e){if(!n.destroyed&&n.params&&"page"!==n.params.openIn){var r=l(e.target);n.opened&&!n.closing&&(r.closest('[class*="backdrop"]').length||r.closest(".color-picker-popup, .color-picker-popover").length||(s&&s.length>0?r[0]!==s[0]&&0===r.closest(".sheet-modal").length&&n.close():0===l(e.target).closest(".sheet-modal").length&&n.close()))}}return n.params.inputEl&&(s=l(n.params.inputEl)),n.params.targetEl&&(i=l(n.params.targetEl)),h(n,{app:r,$containerEl:t,containerEl:t&&t[0],inline:t&&t.length>0,$inputEl:s,inputEl:s&&s[0],$targetEl:i,targetEl:i&&i[0],initialized:!1,opened:!1,url:n.params.url,modules:{"alpha-slider":y,"current-color":E,hex:j,"hsb-sliders":C,"hue-slider":S,"brightness-slider":R,palette:V,"initial-current-colors":B,"rgb-bars":T,"rgb-sliders":F,"sb-spectrum":w,"hs-spectrum":M,wheel:P}}),h(n,{attachInputEvents:function(){n.$inputEl.on("click",c),n.params.inputReadOnly&&(n.$inputEl.on("focus mousedown",u),n.$inputEl[0]&&(n.$inputEl[0].f7ValidateReadonly=!0))},detachInputEvents:function(){n.$inputEl.off("click",c),n.params.inputReadOnly&&(n.$inputEl.off("focus mousedown",u),n.$inputEl[0]&&delete n.$inputEl[0].f7ValidateReadonly)},attachTargetEvents:function(){n.$targetEl.on("click",p)},detachTargetEvents:function(){n.$targetEl.off("click",p)},attachHtmlEvents:function(){r.on("click",v)},detachHtmlEvents:function(){r.off("click",v)}}),n.init(),n||d(o)}a=e,(r=t).prototype=Object.create(a.prototype),r.prototype.constructor=r,p(r,a);var s,i,n,c=t.prototype;return c.attachEvents=function(){var e=this;e.centerModules=e.centerModules.bind(e),e.params.centerModules&&e.app.on("resize",e.centerModules)},c.detachEvents=function(){var e=this;e.params.centerModules&&e.app.off("resize",e.centerModules)},c.centerModules=function(){var e=this;if(e.opened&&e.$el&&!e.inline){var r=e.$el.find(".page-content");if(r.length){var l=r[0];l.scrollHeight<=l.offsetHeight?r.addClass("justify-content-center"):r.removeClass("justify-content-center")}}},c.initInput=function(){var e=this;e.$inputEl&&e.params.inputReadOnly&&e.$inputEl.prop("readOnly",!0)},c.getModalType=function(){var e=this,r=e.app,l=e.modal,a=e.params,t=a.openIn,s=a.openInPhone,i=o();return l&&l.type?l.type:"auto"!==t?t:e.inline?null:i.ios?i.ipad?"popover":s:r.width>=768||i.desktop&&"aurora"===r.theme?"popover":s},c.formatValue=function(){var e=this,r=e.value;return e.params.formatValue?e.params.formatValue.call(e,r):r.hex},c.normalizeHsValues=function(e){return[Math.floor(10*e[0])/10,Math.floor(1e3*e[1])/1e3,Math.floor(1e3*e[2])/1e3]},c.setValue=function(e,r){void 0===e&&(e={}),void 0===r&&(r=!0);var l=this;if(void 0!==e){var a,o=l.value||{},t=o.hex,s=o.rgb,i=o.hsl,n=o.hsb,c=o.alpha,u=void 0===c?1:c,p=o.hue,d=o.rgba,$=o.hsla,x=l.value||!l.value&&!l.params.value;if(Object.keys(e).forEach((function(r){if(l.value&&void 0!==l.value[r]){var o=e[r];Array.isArray(o)?o.forEach((function(e,o){e!==l.value[r][o]&&(a=!0)})):o!==l.value[r]&&(a=!0)}else a=!0})),a){if(e.rgb||e.rgba){var y=e.rgb||e.rgba,E=y[0],j=y[1],C=y[2],S=y[3],R=void 0===S?u:S;s=[E,j,C],t=g.apply(void 0,s),i=f.apply(void 0,s),n=b.apply(void 0,i),i=l.normalizeHsValues(i),p=(n=l.normalizeHsValues(n))[0],u=R,d=[s[0],s[1],s[2],R],$=[i[0],i[1],i[2],R]}if(e.hsl||e.hsla){var V=e.hsl||e.hsla,B=V[0],T=V[1],F=V[2],w=V[3],M=void 0===w?u:w;i=[B,T,F],s=k.apply(void 0,i),t=g.apply(void 0,s),n=b.apply(void 0,i),i=l.normalizeHsValues(i),p=(n=l.normalizeHsValues(n))[0],u=M,d=[s[0],s[1],s[2],M],$=[i[0],i[1],i[2],M]}if(e.hsb){var P=e.hsb,I=P[0],H=P[1],A=P[2],L=P[3],D=void 0===L?u:L;n=[I,H,A],i=v.apply(void 0,n),s=k.apply(void 0,i),t=g.apply(void 0,s),i=l.normalizeHsValues(i),p=(n=l.normalizeHsValues(n))[0],u=D,d=[s[0],s[1],s[2],D],$=[i[0],i[1],i[2],D]}if(e.hex&&(s=m(e.hex),t=g.apply(void 0,s),i=f.apply(void 0,s),n=b.apply(void 0,i),i=l.normalizeHsValues(i),p=(n=l.normalizeHsValues(n))[0],d=[s[0],s[1],s[2],u],$=[i[0],i[1],i[2],u]),void 0!==e.alpha&&(u=e.alpha,void 0!==s&&(d=[s[0],s[1],s[2],u]),void 0!==i&&($=[i[0],i[1],i[2],u])),void 0!==e.hue){var O=i,z=(O[0],O[1]),N=O[2];i=[e.hue,z,N],n=b.apply(void 0,i),s=k.apply(void 0,i),t=g.apply(void 0,s),i=l.normalizeHsValues(i),p=(n=l.normalizeHsValues(n))[0],d=[s[0],s[1],s[2],u],$=[i[0],i[1],i[2],u]}l.value={hex:t,alpha:u,hue:p,rgb:s,hsl:i,hsb:n,rgba:d,hsla:$},l.initialValue||(l.initialValue=h({},l.value)),l.updateValue(x),l.opened&&r&&l.updateModules()}}},c.getValue=function(){return this.value},c.updateValue=function(e){void 0===e&&(e=!0);var r=this,l=r.$inputEl,a=r.value,o=r.$targetEl;if(o&&r.params.targetElSetBackgroundColor){var t=a.rgba;o.css("background-color","rgba("+t.join(", ")+")")}if(e&&r.emit("local::change colorPickerChange",r,a),l&&l.length){var s=r.formatValue(a);l&&l.length&&(l.val(s),e&&l.trigger("change"))}},c.updateModules=function(){var e=this,r=e.modules;e.params.modules.forEach((function(l){"string"==typeof l&&r[l]&&r[l].update?r[l].update(e):l&&l.update&&l.update(e)}))},c.update=function(){this.updateModules()},c.renderPicker=function(){var e=this,r=e.params,l=e.modules,a="";return r.modules.forEach((function(r){"string"==typeof r&&l[r]&&l[r].render?a+=l[r].render(e):r&&r.render&&(a+=r.render(e))})),a},c.renderNavbar=function(){var e=this;if(e.params.renderNavbar)return e.params.renderNavbar.call(e,e);var r=e.params,l=r.openIn,a=r.navbarTitleText,o=r.navbarBackLinkText,t=r.navbarCloseText;return $jsx("div",{class:"navbar"},$jsx("div",{class:"navbar-bg"}),$jsx("div",{class:"navbar-inner sliding"},"page"===l&&$jsx("div",{class:"left"},$jsx("a",{class:"link back"},$jsx("i",{class:"icon icon-back"}),$jsx("span",{class:"if-not-md"},o))),$jsx("div",{class:"title"},a),"page"!==l&&$jsx("div",{class:"right"},$jsx("a",{class:"link popup-close","data-popup":".color-picker-popup"},t))))},c.renderToolbar=function(){var e=this;return e.params.renderToolbar?e.params.renderToolbar.call(e,e):$jsx("div",{class:"toolbar toolbar-top no-shadow"},$jsx("div",{class:"toolbar-inner"},$jsx("div",{class:"left"}),$jsx("div",{class:"right"},$jsx("a",{class:"link sheet-close popover-close","data-sheet":".color-picker-sheet-modal","data-popover":".color-picker-popover"},e.params.toolbarCloseText))))},c.renderInline=function(){var e=this.params,r=e.cssClass,l=e.groupedModules;return $jsx("div",{class:"color-picker color-picker-inline "+(l?"color-picker-grouped-modules":"")+" "+(r||"")},this.renderPicker())},c.renderSheet=function(){var e=this,r=e.params,l=r.cssClass,a=r.toolbarSheet,o=r.groupedModules;return $jsx("div",{class:"sheet-modal color-picker color-picker-sheet-modal "+(o?"color-picker-grouped-modules":"")+" "+(l||"")},a&&e.renderToolbar(),$jsx("div",{class:"sheet-modal-inner"},$jsx("div",{class:"page-content"},e.renderPicker())))},c.renderPopover=function(){var e=this,r=e.params,l=r.cssClass,a=r.toolbarPopover,o=r.groupedModules;return $jsx("div",{class:"popover color-picker-popover "+(l||"")},$jsx("div",{class:"popover-inner"},$jsx("div",{class:"color-picker "+(o?"color-picker-grouped-modules":"")},a&&e.renderToolbar(),$jsx("div",{class:"page-content"},e.renderPicker()))))},c.renderPopup=function(){var e=this,r=e.params,l=r.cssClass,a=r.navbarPopup,o=r.groupedModules;return $jsx("div",{class:"popup color-picker-popup "+(l||"")},$jsx("div",{class:"page"},a&&e.renderNavbar(),$jsx("div",{class:"color-picker "+(o?"color-picker-grouped-modules":"")},$jsx("div",{class:"page-content"},e.renderPicker()))))},c.renderPage=function(){var e=this,r=e.params,l=r.cssClass,a=r.groupedModules;return $jsx("div",{class:"page color-picker-page "+(l||""),"data-name":"color-picker-page"},e.renderNavbar(),$jsx("div",{class:"color-picker "+(a?"color-picker-grouped-modules":"")},$jsx("div",{class:"page-content"},e.renderPicker())))},c.render=function(){var e=this,r=e.params;if(r.render)return r.render.call(e);if(e.inline)return e.renderInline();if("page"===r.openIn)return e.renderPage();var l=e.getModalType();return"popover"===l?e.renderPopover():"sheet"===l?e.renderSheet():"popup"===l?e.renderPopup():void 0},c.onOpen=function(){var e=this,r=e.initialized,l=e.$el,a=e.app,o=e.$inputEl,t=e.inline,s=e.value,i=e.params,n=e.modules;e.closing=!1,e.opened=!0,e.opening=!0,e.attachEvents(),i.modules.forEach((function(r){"string"==typeof r&&n[r]&&n[r].init?n[r].init(e):r&&r.init&&r.init(e)}));var c=!s&&i.value;r?s&&(e.initialValue=h({},s),e.setValue(s,!1)):s?e.setValue(s):i.value?e.setValue(i.value,!1):i.value||e.setValue({hex:"#ff0000"},!1),c&&e.updateValue(),e.updateModules(),i.centerModules&&e.centerModules(),!t&&o&&o.length&&"md"===a.theme&&o.trigger("focus"),e.initialized=!0,l&&l.trigger("colorpicker:open"),o&&o.trigger("colorpicker:open"),e.emit("local::open colorPickerOpen",e)},c.onOpened=function(){var e=this;e.opening=!1,e.$el&&e.$el.trigger("colorpicker:opened"),e.$inputEl&&e.$inputEl.trigger("colorpicker:opened"),e.emit("local::opened colorPickerOpened",e)},c.onClose=function(){var e=this,r=e.app,l=e.params,a=e.modules;if(e.opening=!1,e.closing=!0,e.detachEvents(),e.$inputEl)if("md"===r.theme)e.$inputEl.trigger("blur");else{var o=e.$inputEl.attr("validate"),t=e.$inputEl.attr("required");o&&t&&r.input.validate(e.$inputEl)}l.modules.forEach((function(r){"string"==typeof r&&a[r]&&a[r].destroy?a[r].destroy(e):r&&r.destroy&&r.destroy(e)})),e.$el&&e.$el.trigger("colorpicker:close"),e.$inputEl&&e.$inputEl.trigger("colorpicker:close"),e.emit("local::close colorPickerClose",e)},c.onClosed=function(){var e=this;e.opened=!1,e.closing=!1,e.inline||$((function(){e.modal&&e.modal.el&&e.modal.destroy&&(e.params.routableModals||e.modal.destroy()),delete e.modal})),e.$el&&e.$el.trigger("colorpicker:closed"),e.$inputEl&&e.$inputEl.trigger("colorpicker:closed"),e.emit("local::closed colorPickerClosed",e)},c.open=function(){var e=this,r=e.app,a=e.opened,o=e.inline,t=e.$inputEl,s=e.$targetEl,i=e.params;if(!a){if(o)return e.$el=l(e.render()),e.$el[0].f7ColorPicker=e,e.$containerEl.append(e.$el),e.onOpen(),void e.onOpened();var n=e.render();if("page"===i.openIn)e.view.router.navigate({url:e.url,route:{content:n,path:e.url,on:{pageBeforeIn:function(r,l){e.$el=l.$el.find(".color-picker"),e.$el[0].f7ColorPicker=e,e.onOpen()},pageAfterIn:function(){e.onOpened()},pageBeforeOut:function(){e.onClose()},pageAfterOut:function(){e.onClosed(),e.$el&&e.$el[0]&&(e.$el[0].f7ColorPicker=null,delete e.$el[0].f7ColorPicker)}}}});else{var c=e.getModalType(),u=i.backdrop;null==u&&("popover"===c&&!1!==r.params.popover.backdrop&&(u=!0),"popup"===c&&(u=!0));var p,d={targetEl:s||t,scrollToEl:i.scrollToInput?s||t:void 0,content:n,backdrop:u,closeByBackdropClick:i.closeByBackdropClick,on:{open:function(){var r=this;e.modal=r,e.$el="popover"===c||"popup"===c?r.$el.find(".color-picker"):r.$el,e.$el[0].f7ColorPicker=e,e.onOpen()},opened:function(){e.onOpened()},close:function(){e.onClose()},closed:function(){e.onClosed(),e.$el&&e.$el[0]&&(e.$el[0].f7ColorPicker=null,delete e.$el[0].f7ColorPicker)}}};if("popup"===c&&(d.push=i.popupPush,d.swipeToClose=i.popupSwipeToClose),"sheet"===c&&(d.push=i.sheetPush,d.swipeToClose=i.sheetSwipeToClose),i.routableModals&&e.view)e.view.router.navigate({url:e.url,route:(p={path:e.url},p[c]=d,p)});else e.modal=r[c].create(d),e.modal.open()}}},c.close=function(){var e=this,r=e.opened,l=e.inline;if(r)return l?(e.onClose(),void e.onClosed()):void(e.params.routableModals&&e.view||"page"===e.params.openIn?e.view.router.back():e.modal.close())},c.init=function(){var e=this;if(e.initInput(),e.inline)return e.open(),void e.emit("local::init colorPickerInit",e);!e.initialized&&e.params.value&&e.setValue(e.params.value),e.$inputEl&&e.attachInputEvents(),e.$targetEl&&e.attachTargetEvents(),e.params.closeByOutsideClick&&e.attachHtmlEvents(),e.emit("local::init colorPickerInit",e)},c.destroy=function(){var e=this;if(!e.destroyed){var r=e.$el;e.emit("local::beforeDestroy colorPickerBeforeDestroy",e),r&&r.trigger("colorpicker:beforedestroy"),e.close(),e.detachEvents(),e.$inputEl&&e.detachInputEvents(),e.$targetEl&&e.detachTargetEvents(),e.params.closeByOutsideClick&&e.detachHtmlEvents(),r&&r.length&&delete e.$el[0].f7ColorPicker,x(e),e.destroyed=!0}},s=t,(i=[{key:"view",get:function(){var e,r=this.$inputEl,l=this.$targetEl,a=this.app,o=this.params;return o.view?e=o.view:(r&&(e=r.parents(".view").length&&r.parents(".view")[0].f7View),!e&&l&&(e=l.parents(".view").length&&l.parents(".view")[0].f7View)),e||(e=a.views.main),e}}])&&u(s.prototype,i),n&&u(s,n),t}(s),H={name:"colorPicker",static:{ColorPicker:I},create:function(){var e=this;e.colorPicker=i({defaultSelector:".color-picker",constructor:I,app:e,domProp:"f7ColorPicker"}),e.colorPicker.close=function(e){void 0===e&&(e=".color-picker");var r=l(e);if(0!==r.length){var a=r[0].f7ColorPicker;!a||a&&!a.opened||a.close()}}},params:{colorPicker:{value:null,modules:["wheel"],palette:[["#FFEBEE","#FFCDD2","#EF9A9A","#E57373","#EF5350","#F44336","#E53935","#D32F2F","#C62828","#B71C1C"],["#F3E5F5","#E1BEE7","#CE93D8","#BA68C8","#AB47BC","#9C27B0","#8E24AA","#7B1FA2","#6A1B9A","#4A148C"],["#E8EAF6","#C5CAE9","#9FA8DA","#7986CB","#5C6BC0","#3F51B5","#3949AB","#303F9F","#283593","#1A237E"],["#E1F5FE","#B3E5FC","#81D4FA","#4FC3F7","#29B6F6","#03A9F4","#039BE5","#0288D1","#0277BD","#01579B"],["#E0F2F1","#B2DFDB","#80CBC4","#4DB6AC","#26A69A","#009688","#00897B","#00796B","#00695C","#004D40"],["#F1F8E9","#DCEDC8","#C5E1A5","#AED581","#9CCC65","#8BC34A","#7CB342","#689F38","#558B2F","#33691E"],["#FFFDE7","#FFF9C4","#FFF59D","#FFF176","#FFEE58","#FFEB3B","#FDD835","#FBC02D","#F9A825","#F57F17"],["#FFF3E0","#FFE0B2","#FFCC80","#FFB74D","#FFA726","#FF9800","#FB8C00","#F57C00","#EF6C00","#E65100"]],groupedModules:!1,centerModules:!0,sliderLabel:!1,sliderValue:!1,sliderValueEdiable:!1,barLabel:!1,barValue:!1,barValueEdiable:!1,hexLabel:!1,hexValueEditable:!1,redLabelText:"R",greenLabelText:"G",blueLabelText:"B",hueLabelText:"H",saturationLabelText:"S",brightnessLabelText:"B",hexLabelText:"HEX",alphaLabelText:"A",containerEl:null,openIn:"popover",openInPhone:"popup",popupPush:!1,popupSwipeToClose:void 0,sheetPush:!1,sheetSwipeToClose:void 0,formatValue:null,targetEl:null,targetElSetBackgroundColor:!1,inputEl:null,inputReadOnly:!0,closeByOutsideClick:!0,scrollToInput:!0,toolbarSheet:!0,toolbarPopover:!1,toolbarCloseText:"Done",navbarPopup:!0,navbarCloseText:"Done",navbarTitleText:"Color",navbarBackLinkText:"Back",cssClass:null,routableModals:!1,view:null,url:"color/",backdrop:null,closeByBackdropClick:!0,renderToolbar:null,renderNavbar:null,renderInline:null,renderPopover:null,renderSheet:null,renderPopup:null,render:null}}};if(r){if(e.prototype.modules&&e.prototype.modules[H.name])return;e.use(H),e.instance&&(e.instance.useModuleParams(H,e.instance.params),e.instance.useModule(H))}return H}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/color-picker/color-picker.lazy.js b/www/assets/framework7/components/color-picker/color-picker.lazy.js
deleted file mode 100644
index f0637a781..000000000
--- a/www/assets/framework7/components/color-picker/color-picker.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,r){void 0===r&&(r=!0);var l=e.$,o=e.utils,a=e.getDevice,t=e.getSupport,s=e.Class,i=(e.Modal,e.ConstructorMethods),n=(e.ModalMethods,e.$jsx),c=o.colorHsbToHsl,p=o.extend,d=o.colorRgbToHex,u=o.colorRgbToHsl,g=o.colorHslToHsb,h=o.colorHslToRgb,v=o.colorHexToRgb,b=o.nextTick,k=o.deleteProps,m={render(e){const{sliderLabel:r,sliderValue:l,sliderValueEditable:o,alphaLabelText:a}=e.params;return n("div",{class:"color-picker-module color-picker-module-alpha-slider"},n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},a),n("div",{class:"range-slider color-picker-slider color-picker-slider-alpha"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"0.01",min:"0",max:"1",class:"color-picker-value-alpha"}):n("span",{class:"color-picker-value-alpha"}))))},init(e){function r(r){const l=e.value.alpha;let o=parseFloat(r.target.value);Number.isNaN(o)?r.target.value=l:(o=Math.max(0,Math.min(1,o)),e.setValue({alpha:o}))}e.alphaRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-alpha"),min:0,max:1,step:.01,value:1,on:{change(r,l){const o=Math.floor(100*l)/100;e.setValue({alpha:o})}}}),e.$el.on("change",".color-picker-module-alpha-slider input",r),e.destroyAlphaSliderEvents=function(){e.$el.off("change",".color-picker-module-alpha-slider input",r)}},update(e){const{value:r}=e,{sliderValue:l,sliderValueEditable:o}=e.params,{alpha:a}=r;e.alphaRangeSlider.value=a,e.alphaRangeSlider.layout(),l&&o?e.$el.find("input.color-picker-value-alpha").val(a):e.$el.find("span.color-picker-value-alpha").text(a)},destroy(e){e.alphaRangeSlider&&e.alphaRangeSlider.destroy&&e.alphaRangeSlider.destroy(),delete e.alphaRangeSlider,e.destroyAlphaSliderEvents&&e.destroyAlphaSliderEvents(),delete e.destroyAlphaSliderEvents}},f={render:()=>n("div",{class:"color-picker-module color-picker-module-current-color"},n("div",{class:"color-picker-current-color"})),update(e){e.$el.find(".color-picker-module-current-color .color-picker-current-color").css("background-color",e.value.hex)}},$={render(e){const{hexLabel:r,hexLabelText:l,hexValueEditable:o}=e.params;return n("div",{class:"color-picker-module color-picker-module-hex"},n("div",{class:"color-picker-hex-wrap"},r&&n("div",{class:"color-picker-hex-label"},l),n("div",{class:"color-picker-hex-value"},o?n("input",{type:"text",class:"color-picker-value-hex"}):n("span",{class:"color-picker-value-hex"}))))},init(e){function r(r){const l=e.value.hex;let o=r.target.value.replace(/#/g,"");if(Number.isNaN(o)||!o||3!==o.length&&6!==o.length)return void(r.target.value=l);const a=parseInt(o,16);a>parseInt("ffffff",16)&&(o="fff"),a<0&&(o="000"),e.setValue({hex:o})}e.$el.on("change",".color-picker-module-hex input",r),e.destroyHexEvents=function(){e.$el.off("change",".color-picker-module-hex input",r)}},update(e){const{value:r}=e,{hexValueEditable:l}=e.params,{hex:o}=r;l?e.$el.find("input.color-picker-value-hex").val(o):e.$el.find("span.color-picker-value-hex").text(o)},destroy(e){e.destroyHexEvents&&e.destroyHexEvents(),delete e.destroyHexEvents}},E={render(e){const{sliderLabel:r,sliderValue:l,sliderValueEditable:o,hueLabelText:a,saturationLabelText:t,brightnessLabelText:s}=e.params;return n("div",{class:"color-picker-module color-picker-module-hsb-sliders"},n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},a),n("div",{class:"range-slider color-picker-slider color-picker-slider-hue"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"0.1",min:"0",max:"360",class:"color-picker-value-hue","data-color-index":"0"}):n("span",{class:"color-picker-value-hue"}))),n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},t),n("div",{class:"range-slider color-picker-slider color-picker-slider-saturation"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"0.1",min:"0",max:"100",class:"color-picker-value-saturation","data-color-index":"1"}):n("span",{class:"color-picker-value-saturation"}))),n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},s),n("div",{class:"range-slider color-picker-slider color-picker-slider-brightness"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"0.1",min:"0",max:"100",class:"color-picker-value-brightness","data-color-index":"2"}):n("span",{class:"color-picker-value-brightness"}))))},init(e){function r(r){const o=[...e.value.hsb],a=parseInt(l(r.target).attr("data-color-index"),10);let t=parseFloat(r.target.value);Number.isNaN(t)?r.target.value=o[a]:(t=0===a?Math.max(0,Math.min(360,t)):Math.max(0,Math.min(100,t))/100,o[a]=t,e.setValue({hsb:o}))}e.hueRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-hue"),min:0,max:360,step:.1,value:0,on:{change(r,l){e.setValue({hue:l})}}}),e.saturationRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-saturation"),min:0,max:1,step:.001,value:0,on:{change(r,l){const o=Math.floor(1e3*l)/1e3;e.setValue({hsb:[e.value.hsb[0],o,e.value.hsb[2]]})}}}),e.brightnessRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-brightness"),min:0,max:1,step:.001,value:0,on:{change(r,l){const o=Math.floor(1e3*l)/1e3;e.setValue({hsb:[e.value.hsb[0],e.value.hsb[1],o]})}}}),e.$el.on("change",".color-picker-module-hsb-sliders input",r),e.destroyHsbSlidersEvents=function(){e.$el.off("change",".color-picker-module-hsb-sliders input",r)}},update(e){const{app:r,value:l}=e,{sliderValue:o,sliderValueEditable:a}=e.params,{hsb:t,hue:s}=l;e.hueRangeSlider.value=s,e.saturationRangeSlider.value=t[1],e.brightnessRangeSlider.value=t[2],e.hueRangeSlider.layout(),e.saturationRangeSlider.layout(),e.brightnessRangeSlider.layout();const i=c(t[0],t[1],1),n=c(t[0],0,1),p=c(t[0],1,1),d=t[2];e.hueRangeSlider.$el[0].style.setProperty("--f7-range-knob-color",`hsl(${s}, 100%, 50%)`),e.saturationRangeSlider.$el[0].style.setProperty("--f7-range-knob-color",`hsl(${i[0]}, ${100*i[1]}%, ${100*i[2]}%)`),e.brightnessRangeSlider.$el[0].style.setProperty("--f7-range-knob-color",`rgb(${255*d}, ${255*d}, ${255*d})`),e.saturationRangeSlider.$el.find(".range-bar").css("background-image",`linear-gradient(${r.rtl?"to left":"to right"}, hsl(${n[0]}, ${100*n[1]}%, ${100*n[2]}%), hsl(${p[0]}, ${100*p[1]}%, ${100*p[2]}%))`),o&&a?(e.$el.find("input.color-picker-value-hue").val(`${s}`),e.$el.find("input.color-picker-value-saturation").val(""+1e3*t[1]/10),e.$el.find("input.color-picker-value-brightness").val(""+1e3*t[2]/10)):o&&(e.$el.find("span.color-picker-value-hue").text(`${s}`),e.$el.find("span.color-picker-value-saturation").text(""+1e3*t[1]/10),e.$el.find("span.color-picker-value-brightness").text(""+1e3*t[2]/10))},destroy(e){e.hueRangeSlider&&e.hueRangeSlider.destroy&&e.hueRangeSlider.destroy(),e.saturationRangeSlider&&e.saturationRangeSlider.destroy&&e.saturationRangeSlider.destroy(),e.brightnessRangeSlider&&e.brightnessRangeSlider.destroy&&e.brightnessRangeSlider.destroy(),delete e.hueRangeSlider,delete e.saturationRangeSlider,delete e.brightnessRangeSlider,e.destroyHsbSlidersEvents&&e.destroyHsbSlidersEvents(),delete e.destroyHsbSlidersEvents}},y={render(e){const{sliderLabel:r,sliderValue:l,sliderValueEditable:o,hueLabelText:a}=e.params;return n("div",{class:"color-picker-module color-picker-module-hue-slider"},n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},a),n("div",{class:"range-slider color-picker-slider color-picker-slider-hue"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"0.1",min:"0",max:"360",class:"color-picker-value-hue"}):n("span",{class:"color-picker-value-hue"}))))},init(e){e.hueRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-hue"),min:0,max:360,step:.1,value:0,on:{change(r,l){e.setValue({hue:l})}}})},update(e){const{value:r}=e,{sliderValue:l,sliderValueEditable:o}=e.params,{hue:a}=r;e.hueRangeSlider.value=a,e.hueRangeSlider.layout(),e.hueRangeSlider.$el[0].style.setProperty("--f7-range-knob-color",`hsl(${a}, 100%, 50%)`),l&&o?e.$el.find("input.color-picker-value-hue").val(`${a}`):l&&e.$el.find("span.color-picker-value-hue").text(`${a}`)},destroy(e){e.hueRangeSlider&&e.hueRangeSlider.destroy&&e.hueRangeSlider.destroy(),delete e.hueRangeSlider}},x={render(e){const{sliderLabel:r,sliderValue:l,sliderValueEditable:o,brightnessLabelText:a}=e.params;return n("div",{class:"color-picker-module color-picker-module-brightness-slider"},n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},a),n("div",{class:"range-slider color-picker-slider color-picker-slider-brightness"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"0.1",min:"0",max:"100",class:"color-picker-value-brightness"}):n("span",{class:"color-picker-value-brightness"}))))},init(e){e.brightnessRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-brightness"),min:0,max:1,step:.001,value:0,on:{change(r,l){const o=Math.floor(1e3*l)/1e3;e.setValue({hsb:[e.value.hsb[0],e.value.hsb[1],o]})}}})},update(e){const{value:r,app:l}=e,{sliderValue:o,sliderValueEditable:a}=e.params,{hsb:t}=r;e.brightnessRangeSlider.value=t[2],e.brightnessRangeSlider.layout();const s=c(t[0],t[1],t[2]),i=c(t[0],t[1],0),n=c(t[0],t[1],1);e.brightnessRangeSlider.$el[0].style.setProperty("--f7-range-knob-color",`hsl(${s[0]}, ${100*s[1]}%, ${100*s[2]}%)`),e.brightnessRangeSlider.$el.find(".range-bar").css("background-image",`linear-gradient(${l.rtl?"to left":"to right"}, hsl(${i[0]}, ${100*i[1]}%, ${100*i[2]}%), hsl(${n[0]}, ${100*n[1]}%, ${100*n[2]}%))`),o&&a?e.$el.find("input.color-picker-value-brightness").val(""+1e3*t[2]/10):o&&e.$el.find("span.color-picker-value-brightness").text(""+1e3*t[2]/10)},destroy(e){e.brightnessRangeSlider&&e.brightnessRangeSlider.destroy&&e.brightnessRangeSlider.destroy(),delete e.brightnessRangeSlider}},C={render:e=>n("div",{class:"color-picker-module color-picker-module-palette"},n("div",{class:"color-picker-palette"},e.params.palette.map((e=>{if(Array.isArray(e)){let r='';return r+=e.map((e=>`\n
\n `)).join(""),r+="
",r}return n("div",{class:"color-picker-palette-value","data-palette-color":e,style:`background-color: ${e}`})})))),init(e){function r(r){const o=l(r.target).attr("data-palette-color");e.setValue({hex:o})}e.$el.on("click",".color-picker-module-palette .color-picker-palette-value",r),e.destroyPaletteEvents=function(){e.$el.off("click",".color-picker-module-hex input",r)}},destroy(e){e.destroyPaletteEvents&&e.destroyPaletteEvents(),delete e.destroyPaletteEvents}},S={render:()=>n("div",{class:"color-picker-module color-picker-module-initial-current-colors"},n("div",{class:"color-picker-initial-current-colors"},n("div",{class:"color-picker-initial-color"}),n("div",{class:"color-picker-current-color"}))),init(e){function r(){if(e.initialValue){const{hex:r,alpha:l}=e.initialValue;e.setValue({hex:r,alpha:l})}}e.$el.on("click",".color-picker-initial-color",r),e.destroyInitialCurrentEvents=function(){e.$el.off("click",".color-picker-initial-color",r)}},update(e){e.$el.find(".color-picker-module-initial-current-colors .color-picker-initial-color").css("background-color",e.initialValue.hex),e.$el.find(".color-picker-module-initial-current-colors .color-picker-current-color").css("background-color",e.value.hex)},destroy(e){e.destroyInitialCurrentEvents&&e.destroyInitialCurrentEvents(),delete e.destroyInitialCurrentEvents}},R={render(e){const{barLabel:r,barValue:l,barValueEditable:o,redLabelText:a,greenLabelText:t,blueLabelText:s}=e.params;return n("div",{class:"color-picker-module color-picker-module-rgb-bars"},n("div",{class:"color-picker-bar-wrap"},r&&n("div",{class:"color-picker-bar-label"},a),n("div",{class:"range-slider color-picker-bar color-picker-bar-red"}),l&&n("div",{class:"color-picker-bar-value"},o?n("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-bar-red","data-color-index":"0"}):n("span",{class:"color-picker-value-bar-red"}))),n("div",{class:"color-picker-bar-wrap"},r&&n("div",{class:"color-picker-bar-label"},t),n("div",{class:"range-slider color-picker-bar color-picker-bar-green"}),l&&n("div",{class:"color-picker-bar-value"},o?n("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-bar-green","data-color-index":"1"}):n("span",{class:"color-picker-value-bar-green"}))),n("div",{class:"color-picker-bar-wrap"},r&&n("div",{class:"color-picker-bar-label"},s),n("div",{class:"range-slider color-picker-bar color-picker-bar-blue"}),l&&n("div",{class:"color-picker-bar-value"},o?n("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-bar-blue","data-color-index":"2"}):n("span",{class:"color-picker-value-bar-blue"}))))},init(e){function r(r){const o=[...e.value.rgb],a=parseInt(l(r.target).attr("data-color-index"),10);let t=parseInt(r.target.value,10);Number.isNaN(t)?r.target.value=o[a]:(t=Math.max(0,Math.min(255,t)),o[a]=t,e.setValue({rgb:o}))}e.redBar=e.app.range.create({el:e.$el.find(".color-picker-bar-red"),min:0,max:255,step:1,value:0,vertical:!0,on:{change(r,l){e.setValue({rgb:[l,e.value.rgb[1],e.value.rgb[2]]})}}}),e.greenBar=e.app.range.create({el:e.$el.find(".color-picker-bar-green"),min:0,max:255,step:1,value:0,vertical:!0,on:{change(r,l){e.setValue({rgb:[e.value.rgb[0],l,e.value.rgb[2]]})}}}),e.blueBar=e.app.range.create({el:e.$el.find(".color-picker-bar-blue"),min:0,max:255,step:1,value:0,vertical:!0,on:{change(r,l){e.setValue({rgb:[e.value.rgb[0],e.value.rgb[1],l]})}}}),e.$el.on("change",".color-picker-module-rgb-bars input",r),e.destroyRgbBarsEvents=function(){e.$el.off("change",".color-picker-module-rgb-bars input",r)}},update(e){const{value:r,redBar:l,greenBar:o,blueBar:a}=e,{barValue:t,barValueEditable:s}=e.params,{rgb:i}=r;l.value=i[0],o.value=i[1],a.value=i[2],l.layout(),o.layout(),a.layout(),l.$el.find(".range-bar").css("background-image",`linear-gradient(to top, rgb(0, ${i[1]}, ${i[2]}), rgb(255, ${i[1]}, ${i[2]}))`),o.$el.find(".range-bar").css("background-image",`linear-gradient(to top, rgb(${i[0]}, 0, ${i[2]}), rgb(${i[0]}, 255, ${i[2]}))`),a.$el.find(".range-bar").css("background-image",`linear-gradient(to top, rgb(${i[0]}, ${i[1]}, 0), rgb(${i[0]}, ${i[1]}, 255))`),t&&s?(e.$el.find("input.color-picker-value-bar-red").val(i[0]),e.$el.find("input.color-picker-value-bar-green").val(i[1]),e.$el.find("input.color-picker-value-bar-blue").val(i[2])):t&&(e.$el.find("span.color-picker-value-bar-red").text(i[0]),e.$el.find("span.color-picker-value-bar-green").text(i[1]),e.$el.find("span.color-picker-value-bar-blue").text(i[2]))},destroy(e){e.redBar&&e.redBar.destroy&&e.redBar.destroy(),e.greenBar&&e.greenBar.destroy&&e.greenBar.destroy(),e.blueBar&&e.blueBar.destroy&&e.blueBar.destroy(),delete e.redBar,delete e.greenBar,delete e.blueBar,e.destroyRgbBarsEvents&&e.destroyRgbBarsEvents(),delete e.destroyRgbBarsEvents}},V={render(e){const{sliderLabel:r,sliderValue:l,sliderValueEditable:o,redLabelText:a,greenLabelText:t,blueLabelText:s}=e.params;return n("div",{class:"color-picker-module color-picker-module-rgb-sliders"},n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},a),n("div",{class:"range-slider color-picker-slider color-picker-slider-red"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-red","data-color-index":"0"}):n("span",{class:"color-picker-value-red"}))),n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},t),n("div",{class:"range-slider color-picker-slider color-picker-slider-green"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-green","data-color-index":"1"}):n("span",{class:"color-picker-value-green"}))),n("div",{class:"color-picker-slider-wrap"},r&&n("div",{class:"color-picker-slider-label"},s),n("div",{class:"range-slider color-picker-slider color-picker-slider-blue"}),l&&n("div",{class:"color-picker-slider-value"},o?n("input",{type:"number",step:"1",min:"0",max:"255",class:"color-picker-value-blue","data-color-index":"2"}):n("span",{class:"color-picker-value-blue"}))))},init(e){function r(r){const o=[...e.value.rgb],a=parseInt(l(r.target).attr("data-color-index"),10);let t=parseInt(r.target.value,10);Number.isNaN(t)?r.target.value=o[a]:(t=Math.max(0,Math.min(255,t)),o[a]=t,e.setValue({rgb:o}))}e.redRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-red"),min:0,max:255,step:1,value:0,on:{change(r,l){e.setValue({rgb:[l,e.value.rgb[1],e.value.rgb[2]]})}}}),e.greenRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-green"),min:0,max:255,step:1,value:0,on:{change(r,l){e.setValue({rgb:[e.value.rgb[0],l,e.value.rgb[2]]})}}}),e.blueRangeSlider=e.app.range.create({el:e.$el.find(".color-picker-slider-blue"),min:0,max:255,step:1,value:0,on:{change(r,l){e.setValue({rgb:[e.value.rgb[0],e.value.rgb[1],l]})}}}),e.$el.on("change",".color-picker-module-rgb-sliders input",r),e.destroyRgbSlidersEvents=function(){e.$el.off("change",".color-picker-module-rgb-sliders input",r)}},update(e){const{app:r,value:l,redRangeSlider:o,greenRangeSlider:a,blueRangeSlider:t}=e,{sliderValue:s,sliderValueEditable:i}=e.params,{rgb:n}=l;o.value=n[0],a.value=n[1],t.value=n[2],o.layout(),a.layout(),t.layout(),o.$el[0].style.setProperty("--f7-range-knob-color",`rgb(${n[0]}, ${n[1]}, ${n[2]})`),a.$el[0].style.setProperty("--f7-range-knob-color",`rgb(${n[0]}, ${n[1]}, ${n[2]})`),t.$el[0].style.setProperty("--f7-range-knob-color",`rgb(${n[0]}, ${n[1]}, ${n[2]})`);const c=r.rtl?"to left":"to right";o.$el.find(".range-bar").css("background-image",`linear-gradient(${c}, rgb(0, ${n[1]}, ${n[2]}), rgb(255, ${n[1]}, ${n[2]}))`),a.$el.find(".range-bar").css("background-image",`linear-gradient(${c}, rgb(${n[0]}, 0, ${n[2]}), rgb(${n[0]}, 255, ${n[2]}))`),t.$el.find(".range-bar").css("background-image",`linear-gradient(${c}, rgb(${n[0]}, ${n[1]}, 0), rgb(${n[0]}, ${n[1]}, 255))`),s&&i?(e.$el.find("input.color-picker-value-red").val(n[0]),e.$el.find("input.color-picker-value-green").val(n[1]),e.$el.find("input.color-picker-value-blue").val(n[2])):s&&(e.$el.find("span.color-picker-value-red").text(n[0]),e.$el.find("span.color-picker-value-green").text(n[1]),e.$el.find("span.color-picker-value-blue").text(n[2]))},destroy(e){e.redRangeSlider&&e.redRangeSlider.destroy&&e.redRangeSlider.destroy(),e.greenRangeSlider&&e.greenRangeSlider.destroy&&e.greenRangeSlider.destroy(),e.blueRangeSlider&&e.blueRangeSlider.destroy&&e.blueRangeSlider.destroy(),delete e.redRangeSlider,delete e.greenRangeSlider,delete e.blueRangeSlider,e.destroyRgbSlidersEvents&&e.destroyRgbSlidersEvents(),delete e.destroyRgbSlidersEvents}},B={render:()=>n("div",{class:"color-picker-module color-picker-module-sb-spectrum"},n("div",{class:"color-picker-sb-spectrum",style:"background-color: hsl(0, 100%, 50%)"},n("div",{class:"color-picker-sb-spectrum-handle"}))),init(e){const{app:r}=e;let o,a,s,i,n,c,p,d;const{$el:u}=e;function g(r,l){let o=(r-c.left)/c.width,a=(l-c.top)/c.height;o=Math.max(0,Math.min(1,o)),a=1-Math.max(0,Math.min(1,a)),e.setValue({hsb:[e.value.hue,o,a]})}function h(e){if(o)return;a="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,i=a,s="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,n=s;const r=l(e.target);d=r.closest(".color-picker-sb-spectrum-handle").length>0,d||(p=r.closest(".color-picker-sb-spectrum").length>0),p&&(c=u.find(".color-picker-sb-spectrum")[0].getBoundingClientRect(),g(a,s)),(d||p)&&u.find(".color-picker-sb-spectrum-handle").addClass("color-picker-sb-spectrum-handle-pressed")}function v(e){(p||d)&&(i="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,n="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,e.preventDefault(),o||(o=!0,d&&(c=u.find(".color-picker-sb-spectrum")[0].getBoundingClientRect())),(p||d)&&g(i,n))}function b(){o=!1,(p||d)&&u.find(".color-picker-sb-spectrum-handle").removeClass("color-picker-sb-spectrum-handle-pressed"),p=!1,d=!1}function k(){e.modules["sb-spectrum"].update(e)}const m=!("touchstart"!==r.touchEvents.start||!t().passiveListener)&&{passive:!0,capture:!1};e.$el.on(r.touchEvents.start,h,m),r.on("touchmove:active",v),r.on("touchend:passive",b),r.on("resize",k),e.destroySpectrumEvents=function(){e.$el.off(r.touchEvents.start,h,m),r.off("touchmove:active",v),r.off("touchend:passive",b),r.off("resize",k)}},update(e){const{value:r}=e,{hsl:l,hsb:o}=r,a=e.$el.find(".color-picker-sb-spectrum")[0].offsetWidth,t=e.$el.find(".color-picker-sb-spectrum")[0].offsetHeight;e.$el.find(".color-picker-sb-spectrum").css("background-color",`hsl(${l[0]}, 100%, 50%)`),e.$el.find(".color-picker-sb-spectrum-handle").css("background-color",`hsl(${l[0]}, ${100*l[1]}%, ${100*l[2]}%)`).transform(`translate(${a*o[1]}px, ${t*(1-o[2])}px)`)},destroy(e){e.destroySpectrumEvents&&e.destroySpectrumEvents(),delete e.destroySpectrumEvents}},T={render:()=>n("div",{class:"color-picker-module color-picker-module-hs-spectrum"},n("div",{class:"color-picker-hs-spectrum"},n("div",{class:"color-picker-hs-spectrum-handle"}))),init(e){const{app:r}=e;let o,a,s,i,n,c,p,d;const{$el:u}=e;function g(r,l){let o=(r-c.left)/c.width*360,a=(l-c.top)/c.height;o=Math.max(0,Math.min(360,o)),a=1-Math.max(0,Math.min(1,a)),e.setValue({hsb:[o,a,e.value.hsb[2]]})}function h(e){if(o)return;a="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,i=a,s="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,n=s;const r=l(e.target);d=r.closest(".color-picker-hs-spectrum-handle").length>0,d||(p=r.closest(".color-picker-hs-spectrum").length>0),p&&(c=u.find(".color-picker-hs-spectrum")[0].getBoundingClientRect(),g(a,s)),(d||p)&&u.find(".color-picker-hs-spectrum-handle").addClass("color-picker-hs-spectrum-handle-pressed")}function v(e){(p||d)&&(i="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,n="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,e.preventDefault(),o||(o=!0,d&&(c=u.find(".color-picker-hs-spectrum")[0].getBoundingClientRect())),(p||d)&&g(i,n))}function b(){o=!1,(p||d)&&u.find(".color-picker-hs-spectrum-handle").removeClass("color-picker-hs-spectrum-handle-pressed"),p=!1,d=!1}function k(){e.modules["hs-spectrum"].update(e)}const m=!("touchstart"!==r.touchEvents.start||!t().passiveListener)&&{passive:!0,capture:!1};e.$el.on(r.touchEvents.start,h,m),r.on("touchmove:active",v),r.on("touchend:passive",b),r.on("resize",k),e.destroySpectrumEvents=function(){e.$el.off(r.touchEvents.start,h,m),r.off("touchmove:active",v),r.off("touchend:passive",b),r.off("resize",k)}},update(e){const{value:r}=e,{hsb:l}=r,o=e.$el.find(".color-picker-hs-spectrum")[0].offsetWidth,a=e.$el.find(".color-picker-hs-spectrum")[0].offsetHeight,t=c(l[0],l[1],1);e.$el.find(".color-picker-hs-spectrum-handle").css("background-color",`hsl(${t[0]}, ${100*t[1]}%, ${100*t[2]}%)`).transform(`translate(${o*(l[0]/360)}px, ${a*(1-l[1])}px)`)},destroy(e){e.destroySpectrumEvents&&e.destroySpectrumEvents(),delete e.destroySpectrumEvents}};var F={render:()=>n("div",{class:"color-picker-module color-picker-module-wheel"},n("div",{class:"color-picker-wheel"},n("svg",{viewBox:"0 0 300 300",width:"300",height:"300"},function(){let e="";for(let r=256;r>0;r-=1){const l=r*Math.PI/128,o=1.40625*r;e+=``}return e}()),n("div",{class:"color-picker-wheel-handle"}),n("div",{class:"color-picker-sb-spectrum",style:"background-color: hsl(0, 100%, 50%)"},n("div",{class:"color-picker-sb-spectrum-handle"})))),init(e){const{app:r}=e;let o,a,s,i,n,c,p,d,u,g,h;const{$el:v}=e;function b(r,l){const o=c.left+c.width/2,a=c.top+c.height/2;let t=180*Math.atan2(l-a,r-o)/Math.PI+90;t<0&&(t+=360),t=360-t,e.setValue({hue:t})}function k(r,l){let o=(r-u.left)/u.width,a=(l-u.top)/u.height;o=Math.max(0,Math.min(1,o)),a=1-Math.max(0,Math.min(1,a)),e.setValue({hsb:[e.value.hue,o,a]})}function m(e){if(o)return;a="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,i=a,s="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,n=s;const r=l(e.target);d=r.closest(".color-picker-wheel-handle").length>0,p=r.closest("circle").length>0,h=r.closest(".color-picker-sb-spectrum-handle").length>0,h||(g=r.closest(".color-picker-sb-spectrum").length>0),p&&(c=v.find(".color-picker-wheel")[0].getBoundingClientRect(),b(a,s)),g&&(u=v.find(".color-picker-sb-spectrum")[0].getBoundingClientRect(),k(a,s)),(h||g)&&v.find(".color-picker-sb-spectrum-handle").addClass("color-picker-sb-spectrum-handle-pressed")}function f(e){(p||d||g||h)&&(i="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,n="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,e.preventDefault(),o||(o=!0,d&&(c=v.find(".color-picker-wheel")[0].getBoundingClientRect()),h&&(u=v.find(".color-picker-sb-spectrum")[0].getBoundingClientRect())),(p||d)&&b(i,n),(g||h)&&k(i,n))}function $(){o=!1,(g||h)&&v.find(".color-picker-sb-spectrum-handle").removeClass("color-picker-sb-spectrum-handle-pressed"),p=!1,d=!1,g=!1,h=!1}function E(){e.modules.wheel.update(e)}const y=!("touchstart"!==r.touchEvents.start||!t().passiveListener)&&{passive:!0,capture:!1};e.$el.on(r.touchEvents.start,m,y),r.on("touchmove:active",f),r.on("touchend:passive",$),r.on("resize",E),e.destroyWheelEvents=function(){e.$el.off(r.touchEvents.start,m,y),r.off("touchmove:active",f),r.off("touchend:passive",$),r.off("resize",E)}},update(e){const{value:r}=e,{hsl:l,hsb:o}=r,a=e.$el.find(".color-picker-sb-spectrum")[0].offsetWidth,t=e.$el.find(".color-picker-sb-spectrum")[0].offsetHeight,s=e.$el.find(".color-picker-wheel")[0].offsetWidth,i=s/2,n=r.hue*Math.PI/180,c=s/6/2,p=i-Math.sin(n)*(i-c)-c,d=i-Math.cos(n)*(i-c)-c;e.$el.find(".color-picker-wheel-handle").css("background-color",`hsl(${l[0]}, 100%, 50%)`).transform(`translate(${p}px, ${d}px)`),e.$el.find(".color-picker-sb-spectrum").css("background-color",`hsl(${l[0]}, 100%, 50%)`),e.$el.find(".color-picker-sb-spectrum-handle").css("background-color",`hsl(${l[0]}, ${100*l[1]}%, ${100*l[2]}%)`).transform(`translate(${a*o[1]}px, ${t*(1-o[2])}px)`)},destroy(e){e.destroyWheelEvents&&e.destroyWheelEvents(),delete e.destroyWheelEvents}};class M extends s{constructor(e,r){void 0===r&&(r={}),super(r,[e]);const o=this;let a,t,s;if(o.params=p({},e.params.colorPicker,r),o.params.containerEl&&(a=l(o.params.containerEl),0===a.length))return o;function i(){o.open()}function n(e){e.preventDefault()}function c(){o.open()}function d(e){if(o.destroyed||!o.params)return;if("page"===o.params.openIn)return;const r=l(e.target);o.opened&&!o.closing&&(r.closest('[class*="backdrop"]').length||r.closest(".color-picker-popup, .color-picker-popover").length||(t&&t.length>0?r[0]!==t[0]&&0===r.closest(".sheet-modal").length&&o.close():0===l(e.target).closest(".sheet-modal").length&&o.close()))}return o.params.inputEl&&(t=l(o.params.inputEl)),o.params.targetEl&&(s=l(o.params.targetEl)),p(o,{app:e,$containerEl:a,containerEl:a&&a[0],inline:a&&a.length>0,$inputEl:t,inputEl:t&&t[0],$targetEl:s,targetEl:s&&s[0],initialized:!1,opened:!1,url:o.params.url,modules:{"alpha-slider":m,"current-color":f,hex:$,"hsb-sliders":E,"hue-slider":y,"brightness-slider":x,palette:C,"initial-current-colors":S,"rgb-bars":R,"rgb-sliders":V,"sb-spectrum":B,"hs-spectrum":T,wheel:F}}),p(o,{attachInputEvents(){o.$inputEl.on("click",i),o.params.inputReadOnly&&(o.$inputEl.on("focus mousedown",n),o.$inputEl[0]&&(o.$inputEl[0].f7ValidateReadonly=!0))},detachInputEvents(){o.$inputEl.off("click",i),o.params.inputReadOnly&&(o.$inputEl.off("focus mousedown",n),o.$inputEl[0]&&delete o.$inputEl[0].f7ValidateReadonly)},attachTargetEvents(){o.$targetEl.on("click",c)},detachTargetEvents(){o.$targetEl.off("click",c)},attachHtmlEvents(){e.on("click",d)},detachHtmlEvents(){e.off("click",d)}}),o.init(),o}get view(){const{$inputEl:e,$targetEl:r,app:l,params:o}=this;let a;return o.view?a=o.view:(e&&(a=e.parents(".view").length&&e.parents(".view")[0].f7View),!a&&r&&(a=r.parents(".view").length&&r.parents(".view")[0].f7View)),a||(a=l.views.main),a}attachEvents(){const e=this;e.centerModules=e.centerModules.bind(e),e.params.centerModules&&e.app.on("resize",e.centerModules)}detachEvents(){const e=this;e.params.centerModules&&e.app.off("resize",e.centerModules)}centerModules(){const e=this;if(!e.opened||!e.$el||e.inline)return;const r=e.$el.find(".page-content");if(!r.length)return;const{scrollHeight:l,offsetHeight:o}=r[0];l<=o?r.addClass("justify-content-center"):r.removeClass("justify-content-center")}initInput(){const e=this;e.$inputEl&&e.params.inputReadOnly&&e.$inputEl.prop("readOnly",!0)}getModalType(){const{app:e,modal:r,params:l}=this,{openIn:o,openInPhone:t}=l,s=a();return r&&r.type?r.type:"auto"!==o?o:this.inline?null:s.ios?s.ipad?"popover":t:e.width>=768||s.desktop&&"aurora"===e.theme?"popover":t}formatValue(){const e=this,{value:r}=e;return e.params.formatValue?e.params.formatValue.call(e,r):r.hex}normalizeHsValues(e){return[Math.floor(10*e[0])/10,Math.floor(1e3*e[1])/1e3,Math.floor(1e3*e[2])/1e3]}setValue(e,r){void 0===e&&(e={}),void 0===r&&(r=!0);const l=this;if(void 0===e)return;let{hex:o,rgb:a,hsl:t,hsb:s,alpha:i=1,hue:n,rgba:b,hsla:k}=l.value||{};const m=l.value||!l.value&&!l.params.value;let f;if(Object.keys(e).forEach((r=>{if(!l.value||void 0===l.value[r])return void(f=!0);const o=e[r];Array.isArray(o)?o.forEach(((e,o)=>{e!==l.value[r][o]&&(f=!0)})):o!==l.value[r]&&(f=!0)})),f){if(e.rgb||e.rgba){const[r,c,p,h=i]=e.rgb||e.rgba;a=[r,c,p],o=d(...a),t=u(...a),s=g(...t),t=l.normalizeHsValues(t),s=l.normalizeHsValues(s),n=s[0],i=h,b=[a[0],a[1],a[2],h],k=[t[0],t[1],t[2],h]}if(e.hsl||e.hsla){const[r,c,p,u=i]=e.hsl||e.hsla;t=[r,c,p],a=h(...t),o=d(...a),s=g(...t),t=l.normalizeHsValues(t),s=l.normalizeHsValues(s),n=s[0],i=u,b=[a[0],a[1],a[2],u],k=[t[0],t[1],t[2],u]}if(e.hsb){const[r,p,u,g=i]=e.hsb;s=[r,p,u],t=c(...s),a=h(...t),o=d(...a),t=l.normalizeHsValues(t),s=l.normalizeHsValues(s),n=s[0],i=g,b=[a[0],a[1],a[2],g],k=[t[0],t[1],t[2],g]}if(e.hex&&(a=v(e.hex),o=d(...a),t=u(...a),s=g(...t),t=l.normalizeHsValues(t),s=l.normalizeHsValues(s),n=s[0],b=[a[0],a[1],a[2],i],k=[t[0],t[1],t[2],i]),void 0!==e.alpha&&(i=e.alpha,void 0!==a&&(b=[a[0],a[1],a[2],i]),void 0!==t&&(k=[t[0],t[1],t[2],i])),void 0!==e.hue){const[r,c,p]=t;t=[e.hue,c,p],s=g(...t),a=h(...t),o=d(...a),t=l.normalizeHsValues(t),s=l.normalizeHsValues(s),n=s[0],b=[a[0],a[1],a[2],i],k=[t[0],t[1],t[2],i]}l.value={hex:o,alpha:i,hue:n,rgb:a,hsl:t,hsb:s,rgba:b,hsla:k},l.initialValue||(l.initialValue=p({},l.value)),l.updateValue(m),l.opened&&r&&l.updateModules()}}getValue(){return this.value}updateValue(e){void 0===e&&(e=!0);const r=this,{$inputEl:l,value:o,$targetEl:a}=r;if(a&&r.params.targetElSetBackgroundColor){const{rgba:e}=o;a.css("background-color",`rgba(${e.join(", ")})`)}if(e&&r.emit("local::change colorPickerChange",r,o),l&&l.length){const a=r.formatValue(o);l&&l.length&&(l.val(a),e&&l.trigger("change"))}}updateModules(){const e=this,{modules:r}=e;e.params.modules.forEach((l=>{"string"==typeof l&&r[l]&&r[l].update?r[l].update(e):l&&l.update&&l.update(e)}))}update(){this.updateModules()}renderPicker(){const e=this,{params:r,modules:l}=e;let o="";return r.modules.forEach((r=>{"string"==typeof r&&l[r]&&l[r].render?o+=l[r].render(e):r&&r.render&&(o+=r.render(e))})),o}renderNavbar(){const e=this;if(e.params.renderNavbar)return e.params.renderNavbar.call(e,e);const{openIn:r,navbarTitleText:l,navbarBackLinkText:o,navbarCloseText:a}=e.params;return n("div",{class:"navbar"},n("div",{class:"navbar-bg"}),n("div",{class:"navbar-inner sliding"},"page"===r&&n("div",{class:"left"},n("a",{class:"link back"},n("i",{class:"icon icon-back"}),n("span",{class:"if-not-md"},o))),n("div",{class:"title"},l),"page"!==r&&n("div",{class:"right"},n("a",{class:"link popup-close","data-popup":".color-picker-popup"},a))))}renderToolbar(){const e=this;return e.params.renderToolbar?e.params.renderToolbar.call(e,e):n("div",{class:"toolbar toolbar-top no-shadow"},n("div",{class:"toolbar-inner"},n("div",{class:"left"}),n("div",{class:"right"},n("a",{class:"link sheet-close popover-close","data-sheet":".color-picker-sheet-modal","data-popover":".color-picker-popover"},e.params.toolbarCloseText))))}renderInline(){const{cssClass:e,groupedModules:r}=this.params;return n("div",{class:`color-picker color-picker-inline ${r?"color-picker-grouped-modules":""} ${e||""}`},this.renderPicker())}renderSheet(){const e=this,{cssClass:r,toolbarSheet:l,groupedModules:o}=e.params;return n("div",{class:`sheet-modal color-picker color-picker-sheet-modal ${o?"color-picker-grouped-modules":""} ${r||""}`},l&&e.renderToolbar(),n("div",{class:"sheet-modal-inner"},n("div",{class:"page-content"},e.renderPicker())))}renderPopover(){const e=this,{cssClass:r,toolbarPopover:l,groupedModules:o}=e.params;return n("div",{class:`popover color-picker-popover ${r||""}`},n("div",{class:"popover-inner"},n("div",{class:"color-picker "+(o?"color-picker-grouped-modules":"")},l&&e.renderToolbar(),n("div",{class:"page-content"},e.renderPicker()))))}renderPopup(){const e=this,{cssClass:r,navbarPopup:l,groupedModules:o}=e.params;return n("div",{class:`popup color-picker-popup ${r||""}`},n("div",{class:"page"},l&&e.renderNavbar(),n("div",{class:"color-picker "+(o?"color-picker-grouped-modules":"")},n("div",{class:"page-content"},e.renderPicker()))))}renderPage(){const e=this,{cssClass:r,groupedModules:l}=e.params;return n("div",{class:`page color-picker-page ${r||""}`,"data-name":"color-picker-page"},e.renderNavbar(),n("div",{class:"color-picker "+(l?"color-picker-grouped-modules":"")},n("div",{class:"page-content"},e.renderPicker())))}render(){const e=this,{params:r}=e;if(r.render)return r.render.call(e);if(e.inline)return e.renderInline();if("page"===r.openIn)return e.renderPage();const l=e.getModalType();return"popover"===l?e.renderPopover():"sheet"===l?e.renderSheet():"popup"===l?e.renderPopup():void 0}onOpen(){const e=this,{initialized:r,$el:l,app:o,$inputEl:a,inline:t,value:s,params:i,modules:n}=e;e.closing=!1,e.opened=!0,e.opening=!0,e.attachEvents(),i.modules.forEach((r=>{"string"==typeof r&&n[r]&&n[r].init?n[r].init(e):r&&r.init&&r.init(e)}));const c=!s&&i.value;r?s&&(e.initialValue=p({},s),e.setValue(s,!1)):s?e.setValue(s):i.value?e.setValue(i.value,!1):i.value||e.setValue({hex:"#ff0000"},!1),c&&e.updateValue(),e.updateModules(),i.centerModules&&e.centerModules(),!t&&a&&a.length&&"md"===o.theme&&a.trigger("focus"),e.initialized=!0,l&&l.trigger("colorpicker:open"),a&&a.trigger("colorpicker:open"),e.emit("local::open colorPickerOpen",e)}onOpened(){const e=this;e.opening=!1,e.$el&&e.$el.trigger("colorpicker:opened"),e.$inputEl&&e.$inputEl.trigger("colorpicker:opened"),e.emit("local::opened colorPickerOpened",e)}onClose(){const e=this,{app:r,params:l,modules:o}=e;if(e.opening=!1,e.closing=!0,e.detachEvents(),e.$inputEl)if("md"===r.theme)e.$inputEl.trigger("blur");else{const l=e.$inputEl.attr("validate"),o=e.$inputEl.attr("required");l&&o&&r.input.validate(e.$inputEl)}l.modules.forEach((r=>{"string"==typeof r&&o[r]&&o[r].destroy?o[r].destroy(e):r&&r.destroy&&r.destroy(e)})),e.$el&&e.$el.trigger("colorpicker:close"),e.$inputEl&&e.$inputEl.trigger("colorpicker:close"),e.emit("local::close colorPickerClose",e)}onClosed(){const e=this;e.opened=!1,e.closing=!1,e.inline||b((()=>{e.modal&&e.modal.el&&e.modal.destroy&&(e.params.routableModals||e.modal.destroy()),delete e.modal})),e.$el&&e.$el.trigger("colorpicker:closed"),e.$inputEl&&e.$inputEl.trigger("colorpicker:closed"),e.emit("local::closed colorPickerClosed",e)}open(){const e=this,{app:r,opened:o,inline:a,$inputEl:t,$targetEl:s,params:i}=e;if(o)return;if(a)return e.$el=l(e.render()),e.$el[0].f7ColorPicker=e,e.$containerEl.append(e.$el),e.onOpen(),void e.onOpened();const n=e.render();if("page"===i.openIn)e.view.router.navigate({url:e.url,route:{content:n,path:e.url,on:{pageBeforeIn(r,l){e.$el=l.$el.find(".color-picker"),e.$el[0].f7ColorPicker=e,e.onOpen()},pageAfterIn(){e.onOpened()},pageBeforeOut(){e.onClose()},pageAfterOut(){e.onClosed(),e.$el&&e.$el[0]&&(e.$el[0].f7ColorPicker=null,delete e.$el[0].f7ColorPicker)}}}});else{const l=e.getModalType();let o=i.backdrop;null==o&&("popover"===l&&!1!==r.params.popover.backdrop&&(o=!0),"popup"===l&&(o=!0));const a={targetEl:s||t,scrollToEl:i.scrollToInput?s||t:void 0,content:n,backdrop:o,closeByBackdropClick:i.closeByBackdropClick,on:{open(){const r=this;e.modal=r,e.$el="popover"===l||"popup"===l?r.$el.find(".color-picker"):r.$el,e.$el[0].f7ColorPicker=e,e.onOpen()},opened(){e.onOpened()},close(){e.onClose()},closed(){e.onClosed(),e.$el&&e.$el[0]&&(e.$el[0].f7ColorPicker=null,delete e.$el[0].f7ColorPicker)}}};"popup"===l&&(a.push=i.popupPush,a.swipeToClose=i.popupSwipeToClose),"sheet"===l&&(a.push=i.sheetPush,a.swipeToClose=i.sheetSwipeToClose),i.routableModals&&e.view?e.view.router.navigate({url:e.url,route:{path:e.url,[l]:a}}):(e.modal=r[l].create(a),e.modal.open())}}close(){const e=this,{opened:r,inline:l}=e;if(r)return l?(e.onClose(),void e.onClosed()):void(e.params.routableModals&&e.view||"page"===e.params.openIn?e.view.router.back():e.modal.close())}init(){const e=this;if(e.initInput(),e.inline)return e.open(),void e.emit("local::init colorPickerInit",e);!e.initialized&&e.params.value&&e.setValue(e.params.value),e.$inputEl&&e.attachInputEvents(),e.$targetEl&&e.attachTargetEvents(),e.params.closeByOutsideClick&&e.attachHtmlEvents(),e.emit("local::init colorPickerInit",e)}destroy(){const e=this;if(e.destroyed)return;const{$el:r}=e;e.emit("local::beforeDestroy colorPickerBeforeDestroy",e),r&&r.trigger("colorpicker:beforedestroy"),e.close(),e.detachEvents(),e.$inputEl&&e.detachInputEvents(),e.$targetEl&&e.detachTargetEvents(),e.params.closeByOutsideClick&&e.detachHtmlEvents(),r&&r.length&&delete e.$el[0].f7ColorPicker,k(e),e.destroyed=!0}}var P={name:"colorPicker",static:{ColorPicker:M},create(){const e=this;e.colorPicker=i({defaultSelector:".color-picker",constructor:M,app:e,domProp:"f7ColorPicker"}),e.colorPicker.close=function(e){void 0===e&&(e=".color-picker");const r=l(e);if(0===r.length)return;const o=r[0].f7ColorPicker;!o||o&&!o.opened||o.close()}},params:{colorPicker:{value:null,modules:["wheel"],palette:[["#FFEBEE","#FFCDD2","#EF9A9A","#E57373","#EF5350","#F44336","#E53935","#D32F2F","#C62828","#B71C1C"],["#F3E5F5","#E1BEE7","#CE93D8","#BA68C8","#AB47BC","#9C27B0","#8E24AA","#7B1FA2","#6A1B9A","#4A148C"],["#E8EAF6","#C5CAE9","#9FA8DA","#7986CB","#5C6BC0","#3F51B5","#3949AB","#303F9F","#283593","#1A237E"],["#E1F5FE","#B3E5FC","#81D4FA","#4FC3F7","#29B6F6","#03A9F4","#039BE5","#0288D1","#0277BD","#01579B"],["#E0F2F1","#B2DFDB","#80CBC4","#4DB6AC","#26A69A","#009688","#00897B","#00796B","#00695C","#004D40"],["#F1F8E9","#DCEDC8","#C5E1A5","#AED581","#9CCC65","#8BC34A","#7CB342","#689F38","#558B2F","#33691E"],["#FFFDE7","#FFF9C4","#FFF59D","#FFF176","#FFEE58","#FFEB3B","#FDD835","#FBC02D","#F9A825","#F57F17"],["#FFF3E0","#FFE0B2","#FFCC80","#FFB74D","#FFA726","#FF9800","#FB8C00","#F57C00","#EF6C00","#E65100"]],groupedModules:!1,centerModules:!0,sliderLabel:!1,sliderValue:!1,sliderValueEdiable:!1,barLabel:!1,barValue:!1,barValueEdiable:!1,hexLabel:!1,hexValueEditable:!1,redLabelText:"R",greenLabelText:"G",blueLabelText:"B",hueLabelText:"H",saturationLabelText:"S",brightnessLabelText:"B",hexLabelText:"HEX",alphaLabelText:"A",containerEl:null,openIn:"popover",openInPhone:"popup",popupPush:!1,popupSwipeToClose:void 0,sheetPush:!1,sheetSwipeToClose:void 0,formatValue:null,targetEl:null,targetElSetBackgroundColor:!1,inputEl:null,inputReadOnly:!0,closeByOutsideClick:!0,scrollToInput:!0,toolbarSheet:!0,toolbarPopover:!1,toolbarCloseText:"Done",navbarPopup:!0,navbarCloseText:"Done",navbarTitleText:"Color",navbarBackLinkText:"Back",cssClass:null,routableModals:!1,view:null,url:"color/",backdrop:null,closeByBackdropClick:!0,renderToolbar:null,renderNavbar:null,renderInline:null,renderPopover:null,renderSheet:null,renderPopup:null,render:null}}};if(r){if(e.prototype.modules&&e.prototype.modules[P.name])return;e.use(P),e.instance&&(e.instance.useModuleParams(P,e.instance.params),e.instance.useModule(P))}return P}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/color-picker/package.json b/www/assets/framework7/components/color-picker/package.json
new file mode 100644
index 000000000..d65a0a2df
--- /dev/null
+++ b/www/assets/framework7/components/color-picker/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/color-picker",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/color-picker/color-picker.js",
+ "module": "../../esm/components/color-picker/color-picker.js",
+ "jsnext:main": "../../esm/components/color-picker/color-picker.js",
+ "typings": "../../types/components/color-picker/color-picker.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/contacts-list/contacts-list-rtl.css b/www/assets/framework7/components/contacts-list/contacts-list-rtl.css
index 1948ca134..44b0ecedd 100644
--- a/www/assets/framework7/components/contacts-list/contacts-list-rtl.css
+++ b/www/assets/framework7/components/contacts-list/contacts-list-rtl.css
@@ -1 +1 @@
-:root .dark,:root.dark{--f7-contacts-list-title-text-color:#fff}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.aurora{--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-text-color:#000}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));font-size:var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));line-height:var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before{display:none!important}.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{pointer-events:none;overflow:visible;width:56px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height) * -1)}.md .contacts-list li:not(.list-group-title){padding-right:56px}
\ No newline at end of file
+:root .theme-dark,:root.theme-dark{--f7-contacts-list-title-text-color:#fff}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .theme-dark,.ios.theme-dark{--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.aurora{--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-text-color:#000}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));font-size:var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));line-height:var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before{display:none!important}.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{pointer-events:none;overflow:visible;width:56px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height) * -1)}.md .contacts-list li:not(.list-group-title){padding-right:56px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/contacts-list/contacts-list.css b/www/assets/framework7/components/contacts-list/contacts-list.css
index d24243943..f788a8d6c 100644
--- a/www/assets/framework7/components/contacts-list/contacts-list.css
+++ b/www/assets/framework7/components/contacts-list/contacts-list.css
@@ -1 +1 @@
-:root .dark,:root.dark{--f7-contacts-list-title-text-color:#fff}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .dark,.ios.dark{--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.aurora{--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-text-color:#000}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));font-size:var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));line-height:var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before{display:none!important}.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{pointer-events:none;overflow:visible;width:56px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height) * -1)}.md .contacts-list li:not(.list-group-title){padding-left:56px}
\ No newline at end of file
+:root .theme-dark,:root.theme-dark{--f7-contacts-list-title-text-color:#fff}.ios{--f7-contacts-list-title-font-size:inherit;--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-height:22px;--f7-contacts-list-title-text-color:#000;--f7-contacts-list-title-bg-color:#f7f7f7}.ios .theme-dark,.ios.theme-dark{--f7-contacts-list-title-bg-color:#323234}.md{--f7-contacts-list-title-font-size:20px;--f7-contacts-list-title-font-weight:500;--f7-contacts-list-title-height:48px;--f7-contacts-list-title-bg-color:transparent}.aurora{--f7-contacts-list-title-font-weight:600;--f7-contacts-list-title-text-color:#000}.contacts-list{--f7-list-margin-vertical:0px}.contacts-list .list-group-title,.contacts-list li.list-group-title{background-color:var(--f7-contacts-list-title-bg-color,var(--f7-list-group-title-bg-color));font-weight:var(--f7-contacts-list-title-font-weight,var(--f7-list-group-title-font-weight));font-size:var(--f7-contacts-list-title-font-size, var(--f7-list-group-title-font-size));color:var(--f7-contacts-list-title-text-color,var(--f7-theme-color));line-height:var(--f7-contacts-list-title-height, var(--f7-list-group-title-height));height:var(--f7-contacts-list-title-height,var(--f7-list-group-title-height))}.contacts-list .list-group:first-child ul:before{display:none!important}.contacts-list .list-group:last-child ul:after{display:none!important}.md .contacts-list .list-group-title{pointer-events:none;overflow:visible;width:56px}.md .contacts-list .list-group-title+li{margin-top:calc(var(--f7-contacts-list-title-height) * -1)}.md .contacts-list li:not(.list-group-title){padding-left:56px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/contacts-list/contacts-list.d.ts b/www/assets/framework7/components/contacts-list/contacts-list.d.ts
index e3a31dc90..a61ae3826 100644
--- a/www/assets/framework7/components/contacts-list/contacts-list.d.ts
+++ b/www/assets/framework7/components/contacts-list/contacts-list.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace ContactsList {
interface AppMethods {}
diff --git a/www/assets/framework7/components/contacts-list/contacts-list.js b/www/assets/framework7/components/contacts-list/contacts-list.js
index 77c4f0a63..4cfdae57a 100644
--- a/www/assets/framework7/components/contacts-list/contacts-list.js
+++ b/www/assets/framework7/components/contacts-list/contacts-list.js
@@ -1,3 +1 @@
-export default {
- name: 'contactsList'
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods;var o={name:"contactsList"};if(t){if(e.prototype.modules&&e.prototype.modules[o.name])return;e.use(o),e.instance&&(e.instance.useModuleParams(o,e.instance.params),e.instance.useModule(o))}return o}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/contacts-list/contacts-list.lazy.js b/www/assets/framework7/components/contacts-list/contacts-list.lazy.js
deleted file mode 100644
index c465e09a2..000000000
--- a/www/assets/framework7/components/contacts-list/contacts-list.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx;var o={name:"contactsList"};if(t){if(e.prototype.modules&&e.prototype.modules[o.name])return;e.use(o),e.instance&&(e.instance.useModuleParams(o,e.instance.params),e.instance.useModule(o))}return o}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/contacts-list/package.json b/www/assets/framework7/components/contacts-list/package.json
new file mode 100644
index 000000000..548ff827e
--- /dev/null
+++ b/www/assets/framework7/components/contacts-list/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/contacts-list",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/contacts-list/contacts-list.js",
+ "module": "../../esm/components/contacts-list/contacts-list.js",
+ "jsnext:main": "../../esm/components/contacts-list/contacts-list.js",
+ "typings": "../../types/components/contacts-list/contacts-list.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/data-table/data-table-rtl.css b/www/assets/framework7/components/data-table/data-table-rtl.css
index e435c9a3d..36dcf88f4 100644
--- a/www/assets/framework7/components/data-table/data-table-rtl.css
+++ b/www/assets/framework7/components/data-table/data-table-rtl.css
@@ -1 +1 @@
-:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-cell-border-color:rgba(255, 255, 255, 0.15);--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0, 0, 0, 0.45);--f7-table-cell-border-color:rgba(0, 0, 0, 0.22);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.55);--f7-table-footer-text-color:rgba(255, 255, 255, 0.55);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.54);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-actions-cell-link-color:rgba(0, 0, 0, 0.54);--f7-table-selected-row-bg-color:#f5f5f5;--f7-table-actions-link-color:rgba(0, 0, 0, 0.54);--f7-table-footer-text-color:rgba(0, 0, 0, 0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.05);--f7-table-actions-cell-link-color:rgba(255, 255, 255, 0.54);--f7-table-actions-link-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-table-input-height:32px;--f7-table-head-font-weight:600;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:600;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.6);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.5);--f7-table-input-text-color:#000;--f7-table-head-bg-color:#f6f6f7;--f7-table-card-header-bg-color:#f6f6f7}.aurora .dark,.aurora.dark{--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.03);--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-head-bg-color:rgba(255, 255, 255, 0.05);--f7-table-card-header-bg-color:rgba(255, 255, 255, 0.05)}.data-table{overflow-x:auto}.data-table table,table.data-table{width:100%;border:none;padding:0;margin:0;border-collapse:collapse;text-align:right}.data-table thead td,.data-table thead th{font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:16px;height:var(--f7-table-head-cell-height);background-color:var(--f7-table-head-bg-color)}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{vertical-align:top;font-size:var(--f7-table-head-icon-size)}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);padding-top:var(--f7-table-cell-padding-vertical);padding-bottom:var(--f7-table-cell-padding-vertical);padding-left:var(--f7-table-cell-padding-left);padding-right:var(--f7-table-cell-padding-right);position:relative;box-sizing:border-box}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:left}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-right:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-left:calc(var(--f7-table-cell-padding-left)/ 2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th{padding-right:calc(var(--f7-table-cell-padding-right)/ 2)}.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:last-child{padding-right:calc(var(--f7-table-cell-padding-right)/ 2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:left;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;vertical-align:middle;text-align:center;font-size:0;min-width:0}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.input-cell .table-head-label{cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{content:'arrow_bottom_md';font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;display:inline-block;vertical-align:top;width:16px;height:16px;color:var(--f7-table-sortable-icon-color);font-size:13px;line-height:16px;transition-duration:.3s;transform:rotate(0);opacity:0}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{min-height:var(--f7-table-card-header-height);background-color:var(--f7-table-card-header-bg-color)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{margin-right:auto;align-items:center}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{line-height:1;justify-content:center;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{display:flex;justify-content:space-between;align-items:center;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{padding-top:var(--f7-card-header-padding-vertical);padding-bottom:var(--f7-card-header-padding-vertical);height:100%;margin-top:calc(-1 * var(--f7-card-header-padding-vertical));margin-bottom:calc(-1 * var(--f7-card-header-padding-vertical));min-height:var(--f7-table-card-header-height);padding-right:var(--f7-table-edge-cell-padding-horizontal);padding-left:var(--f7-table-edge-cell-padding-horizontal);margin-right:calc(-1 * var(--f7-table-edge-cell-padding-horizontal));margin-left:calc(-1 * var(--f7-table-edge-cell-padding-horizontal))}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{font-size:14px;color:var(--f7-theme-color)}.data-table .data-table-footer{display:flex;align-items:center;box-sizing:border-box;position:relative;font-size:var(--f7-table-footer-font-size);overflow:hidden;min-height:var(--f7-table-footer-height);color:var(--f7-table-footer-text-color);justify-content:flex-start}.data-table .data-table-footer:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table .data-table-pagination,.data-table .data-table-rows-select{display:flex;align-items:center}.data-table .input-cell{padding-top:8px;padding-bottom:8px;height:auto;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{height:var(--f7-table-input-height);color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);height:auto;min-height:var(--f7-table-body-cell-height);display:flex;align-content:center;align-items:center;justify-content:flex-start;text-align:right}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{width:40%;display:block!important;content:attr(data-collapsible-title);position:relative;height:auto;background:0 0!important;transform:none!important;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);color:var(--f7-table-head-text-color);margin-left:16px;flex-shrink:0}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;top:0;right:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-right:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-right:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-right:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-right:5px}.ios .sortable-cell.numeric-cell:before{margin-left:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-right:16px}.ios .data-table-actions a.link.icon-only{width:44px;height:44px}.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{width:44px;height:44px}.ios .data-table-rows-select+.data-table-pagination{margin-right:30px}.ios .data-table-rows-select .input{margin-right:20px}.ios .data-table-pagination-label{margin-left:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-right:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{width:24px;height:24px;line-height:24px}.md .sortable-cell:not(.numeric-cell):after{margin-right:8px}.md .sortable-cell.numeric-cell:before{margin-left:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-right:24px}.md .data-table-actions a.link.icon-only{width:24px;height:24px;overflow:visible}.md .data-table-actions a.link.icon-only.active-state{background:0 0}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{width:48px;height:48px}.md .data-table-pagination a.link:before,.md .data-table-rows-select a.link:before{content:'';width:152%;height:152%;left:-26%;top:-26%;position:absolute;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 66%,rgba(255,255,255,0) 66%);background-repeat:no-repeat;background-position:center;background-size:100% 100%;opacity:0;pointer-events:none;transition-duration:.3s;transition-property:opacity}.md .data-table-pagination a.link.icon-only:before,.md .data-table-pagination a.link.input-clear-button:before,.md .data-table-pagination a.link.notification-close-button:before,.md .data-table-pagination a.link.ripple-inset:before,.md .data-table-pagination a.link.searchbar-disable-button:before,.md .data-table-rows-select a.link.icon-only:before,.md .data-table-rows-select a.link.input-clear-button:before,.md .data-table-rows-select a.link.notification-close-button:before,.md .data-table-rows-select a.link.ripple-inset:before,.md .data-table-rows-select a.link.searchbar-disable-button:before{width:100%;height:100%;left:0;top:0;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 71%,rgba(255,255,255,0) 71%)}.md .data-table-pagination a.link.active-state:before,.md .data-table-rows-select a.link.active-state:before{opacity:1;transition-duration:150ms}.md .data-table-rows-select+.data-table-pagination{margin-right:32px}.md .data-table-rows-select .input{margin-right:24px}.md .data-table-pagination-label{margin-left:20px}.md .input-cell .input-clear-button{transform:scale(.8)}.aurora .data-table td.actions-cell a.link+a.link,.aurora .data-table th.actions-cell a.link+a.link{margin-right:8px}.aurora .sortable-cell:not(.numeric-cell):after{margin-right:8px}.aurora .sortable-cell.numeric-cell:before{margin-left:8px}.aurora .data-table-actions .button+.button,.aurora .data-table-actions a.link+a.link,.aurora .data-table-links .button+.button,.aurora .data-table-links a.link+a.link{margin-right:16px}.aurora .data-table-pagination a.link,.aurora .data-table-rows-select a.link{width:48px;height:48px}.aurora .data-table-rows-select+.data-table-pagination{margin-right:16px}.aurora .data-table-rows-select .input{margin-right:16px}.aurora .data-table-pagination-label{margin-left:16px}
\ No newline at end of file
+:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .theme-dark,:root.theme-dark{--f7-table-cell-border-color:rgba(255, 255, 255, 0.15);--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0, 0, 0, 0.45);--f7-table-cell-border-color:rgba(0, 0, 0, 0.22);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.45);--f7-table-input-text-color:#000}.ios .theme-dark,.ios.theme-dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.55);--f7-table-footer-text-color:rgba(255, 255, 255, 0.55);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.54);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-actions-cell-link-color:rgba(0, 0, 0, 0.54);--f7-table-selected-row-bg-color:#f5f5f5;--f7-table-actions-link-color:rgba(0, 0, 0, 0.54);--f7-table-footer-text-color:rgba(0, 0, 0, 0.54);--f7-table-input-text-color:#212121}.md .theme-dark,.md.theme-dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.05);--f7-table-actions-cell-link-color:rgba(255, 255, 255, 0.54);--f7-table-actions-link-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-table-input-height:32px;--f7-table-head-font-weight:600;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:600;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.6);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.5);--f7-table-input-text-color:#000;--f7-table-head-bg-color:#f6f6f7;--f7-table-card-header-bg-color:#f6f6f7}.aurora .theme-dark,.aurora.theme-dark{--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.03);--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-head-bg-color:rgba(255, 255, 255, 0.05);--f7-table-card-header-bg-color:rgba(255, 255, 255, 0.05)}.data-table{overflow-x:auto}.data-table table,table.data-table{width:100%;border:none;padding:0;margin:0;border-collapse:collapse;text-align:right}.data-table thead td,.data-table thead th{font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:16px;height:var(--f7-table-head-cell-height);background-color:var(--f7-table-head-bg-color)}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{vertical-align:top;font-size:var(--f7-table-head-icon-size)}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);padding-top:var(--f7-table-cell-padding-vertical);padding-bottom:var(--f7-table-cell-padding-vertical);padding-left:var(--f7-table-cell-padding-left);padding-right:var(--f7-table-cell-padding-right);position:relative;box-sizing:border-box}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:left}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-right:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-left:calc(var(--f7-table-cell-padding-left)/ 2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th{padding-right:calc(var(--f7-table-cell-padding-right)/ 2)}.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:last-child{padding-right:calc(var(--f7-table-cell-padding-right)/ 2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:left;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;vertical-align:middle;text-align:center;font-size:0;min-width:0}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.input-cell .table-head-label{cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{content:'arrow_bottom_md';font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;display:inline-block;vertical-align:top;width:16px;height:16px;color:var(--f7-table-sortable-icon-color);font-size:13px;line-height:16px;transition-duration:.3s;transform:rotate(0);opacity:0}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{min-height:var(--f7-table-card-header-height);background-color:var(--f7-table-card-header-bg-color)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{margin-right:auto;align-items:center}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{line-height:1;justify-content:center;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{display:flex;justify-content:space-between;align-items:center;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{padding-top:var(--f7-card-header-padding-vertical);padding-bottom:var(--f7-card-header-padding-vertical);height:100%;margin-top:calc(-1 * var(--f7-card-header-padding-vertical));margin-bottom:calc(-1 * var(--f7-card-header-padding-vertical));min-height:var(--f7-table-card-header-height);padding-right:var(--f7-table-edge-cell-padding-horizontal);padding-left:var(--f7-table-edge-cell-padding-horizontal);margin-right:calc(-1 * var(--f7-table-edge-cell-padding-horizontal));margin-left:calc(-1 * var(--f7-table-edge-cell-padding-horizontal))}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{font-size:14px;color:var(--f7-theme-color)}.data-table .data-table-footer{display:flex;align-items:center;box-sizing:border-box;position:relative;font-size:var(--f7-table-footer-font-size);overflow:hidden;min-height:var(--f7-table-footer-height);color:var(--f7-table-footer-text-color);justify-content:flex-start}.data-table .data-table-footer:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table .data-table-pagination,.data-table .data-table-rows-select{display:flex;align-items:center}.data-table .input-cell{padding-top:8px;padding-bottom:8px;height:auto;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{height:var(--f7-table-input-height);color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);height:auto;min-height:var(--f7-table-body-cell-height);display:flex;align-content:center;align-items:center;justify-content:flex-start;text-align:right}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{width:40%;display:block!important;content:attr(data-collapsible-title);position:relative;height:auto;background:0 0!important;transform:none!important;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);color:var(--f7-table-head-text-color);margin-left:16px;flex-shrink:0}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;top:0;right:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-right:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-right:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-right:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-right:5px}.ios .sortable-cell.numeric-cell:before{margin-left:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-right:16px}.ios .data-table-actions a.link.icon-only{width:44px;height:44px}.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{width:44px;height:44px}.ios .data-table-rows-select+.data-table-pagination{margin-right:30px}.ios .data-table-rows-select .input{margin-right:20px}.ios .data-table-pagination-label{margin-left:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-right:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{width:24px;height:24px;line-height:24px}.md .sortable-cell:not(.numeric-cell):after{margin-right:8px}.md .sortable-cell.numeric-cell:before{margin-left:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-right:24px}.md .data-table-actions a.link.icon-only{width:24px;height:24px;overflow:visible}.md .data-table-actions a.link.icon-only.active-state{background:0 0}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{width:48px;height:48px}.md .data-table-pagination a.link:before,.md .data-table-rows-select a.link:before{content:'';width:152%;height:152%;left:-26%;top:-26%;position:absolute;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 66%,rgba(255,255,255,0) 66%);background-repeat:no-repeat;background-position:center;background-size:100% 100%;opacity:0;pointer-events:none;transition-duration:.3s;transition-property:opacity}.md .data-table-pagination a.link.icon-only:before,.md .data-table-pagination a.link.input-clear-button:before,.md .data-table-pagination a.link.notification-close-button:before,.md .data-table-pagination a.link.ripple-inset:before,.md .data-table-pagination a.link.searchbar-disable-button:before,.md .data-table-rows-select a.link.icon-only:before,.md .data-table-rows-select a.link.input-clear-button:before,.md .data-table-rows-select a.link.notification-close-button:before,.md .data-table-rows-select a.link.ripple-inset:before,.md .data-table-rows-select a.link.searchbar-disable-button:before{width:100%;height:100%;left:0;top:0;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 71%,rgba(255,255,255,0) 71%)}.md .data-table-pagination a.link.active-state:before,.md .data-table-rows-select a.link.active-state:before{opacity:1;transition-duration:150ms}.md .data-table-rows-select+.data-table-pagination{margin-right:32px}.md .data-table-rows-select .input{margin-right:24px}.md .data-table-pagination-label{margin-left:20px}.md .input-cell .input-clear-button{transform:scale(.8)}.aurora .data-table td.actions-cell a.link+a.link,.aurora .data-table th.actions-cell a.link+a.link{margin-right:8px}.aurora .sortable-cell:not(.numeric-cell):after{margin-right:8px}.aurora .sortable-cell.numeric-cell:before{margin-left:8px}.aurora .data-table-actions .button+.button,.aurora .data-table-actions a.link+a.link,.aurora .data-table-links .button+.button,.aurora .data-table-links a.link+a.link{margin-right:16px}.aurora .data-table-pagination a.link,.aurora .data-table-rows-select a.link{width:48px;height:48px}.aurora .data-table-rows-select+.data-table-pagination{margin-right:16px}.aurora .data-table-rows-select .input{margin-right:16px}.aurora .data-table-pagination-label{margin-left:16px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/data-table/data-table.css b/www/assets/framework7/components/data-table/data-table.css
index 9c8fbf514..ef445ebc4 100644
--- a/www/assets/framework7/components/data-table/data-table.css
+++ b/www/assets/framework7/components/data-table/data-table.css
@@ -1 +1 @@
-:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .dark,:root.dark{--f7-table-cell-border-color:rgba(255, 255, 255, 0.15);--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0, 0, 0, 0.45);--f7-table-cell-border-color:rgba(0, 0, 0, 0.22);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.45);--f7-table-input-text-color:#000}.ios .dark,.ios.dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.55);--f7-table-footer-text-color:rgba(255, 255, 255, 0.55);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.54);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-actions-cell-link-color:rgba(0, 0, 0, 0.54);--f7-table-selected-row-bg-color:#f5f5f5;--f7-table-actions-link-color:rgba(0, 0, 0, 0.54);--f7-table-footer-text-color:rgba(0, 0, 0, 0.54);--f7-table-input-text-color:#212121}.md .dark,.md.dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.05);--f7-table-actions-cell-link-color:rgba(255, 255, 255, 0.54);--f7-table-actions-link-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-table-input-height:32px;--f7-table-head-font-weight:600;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:600;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.6);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.5);--f7-table-input-text-color:#000;--f7-table-head-bg-color:#f6f6f7;--f7-table-card-header-bg-color:#f6f6f7}.aurora .dark,.aurora.dark{--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.03);--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-head-bg-color:rgba(255, 255, 255, 0.05);--f7-table-card-header-bg-color:rgba(255, 255, 255, 0.05)}.data-table{overflow-x:auto}.data-table table,table.data-table{width:100%;border:none;padding:0;margin:0;border-collapse:collapse;text-align:left}.data-table thead td,.data-table thead th{font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:16px;height:var(--f7-table-head-cell-height);background-color:var(--f7-table-head-bg-color)}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{vertical-align:top;font-size:var(--f7-table-head-icon-size)}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);padding-top:var(--f7-table-cell-padding-vertical);padding-bottom:var(--f7-table-cell-padding-vertical);padding-left:var(--f7-table-cell-padding-left);padding-right:var(--f7-table-cell-padding-right);position:relative;box-sizing:border-box}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:right}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-left:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-right:calc(var(--f7-table-cell-padding-right)/ 2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th{padding-left:calc(var(--f7-table-cell-padding-left)/ 2)}.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:last-child{padding-left:calc(var(--f7-table-cell-padding-left)/ 2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:right;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;vertical-align:middle;text-align:center;font-size:0;min-width:0}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.input-cell .table-head-label{cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{content:'arrow_bottom_md';font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;display:inline-block;vertical-align:top;width:16px;height:16px;color:var(--f7-table-sortable-icon-color);font-size:13px;line-height:16px;transition-duration:.3s;transform:rotate(0);opacity:0}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{min-height:var(--f7-table-card-header-height);background-color:var(--f7-table-card-header-bg-color)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{margin-left:auto;align-items:center}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{line-height:1;justify-content:center;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{display:flex;justify-content:space-between;align-items:center;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{padding-top:var(--f7-card-header-padding-vertical);padding-bottom:var(--f7-card-header-padding-vertical);height:100%;margin-top:calc(-1 * var(--f7-card-header-padding-vertical));margin-bottom:calc(-1 * var(--f7-card-header-padding-vertical));min-height:var(--f7-table-card-header-height);padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal);margin-left:calc(-1 * var(--f7-table-edge-cell-padding-horizontal));margin-right:calc(-1 * var(--f7-table-edge-cell-padding-horizontal))}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{font-size:14px;color:var(--f7-theme-color)}.data-table .data-table-footer{display:flex;align-items:center;box-sizing:border-box;position:relative;font-size:var(--f7-table-footer-font-size);overflow:hidden;min-height:var(--f7-table-footer-height);color:var(--f7-table-footer-text-color);justify-content:flex-end}.data-table .data-table-footer:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table .data-table-pagination,.data-table .data-table-rows-select{display:flex;align-items:center}.data-table .input-cell{padding-top:8px;padding-bottom:8px;height:auto;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{height:var(--f7-table-input-height);color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);height:auto;min-height:var(--f7-table-body-cell-height);display:flex;align-content:center;align-items:center;justify-content:flex-start;text-align:left}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{width:40%;display:block!important;content:attr(data-collapsible-title);position:relative;height:auto;background:0 0!important;transform:none!important;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);color:var(--f7-table-head-text-color);margin-right:16px;flex-shrink:0}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;top:0;left:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-left:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-left:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-left:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-left:5px}.ios .sortable-cell.numeric-cell:before{margin-right:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-left:16px}.ios .data-table-actions a.link.icon-only{width:44px;height:44px}.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{width:44px;height:44px}.ios .data-table-rows-select+.data-table-pagination{margin-left:30px}.ios .data-table-rows-select .input{margin-left:20px}.ios .data-table-pagination-label{margin-right:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-left:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{width:24px;height:24px;line-height:24px}.md .sortable-cell:not(.numeric-cell):after{margin-left:8px}.md .sortable-cell.numeric-cell:before{margin-right:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-left:24px}.md .data-table-actions a.link.icon-only{width:24px;height:24px;overflow:visible}.md .data-table-actions a.link.icon-only.active-state{background:0 0}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{width:48px;height:48px}.md .data-table-pagination a.link:before,.md .data-table-rows-select a.link:before{content:'';width:152%;height:152%;left:-26%;top:-26%;position:absolute;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 66%,rgba(255,255,255,0) 66%);background-repeat:no-repeat;background-position:center;background-size:100% 100%;opacity:0;pointer-events:none;transition-duration:.3s;transition-property:opacity}.md .data-table-pagination a.link.icon-only:before,.md .data-table-pagination a.link.input-clear-button:before,.md .data-table-pagination a.link.notification-close-button:before,.md .data-table-pagination a.link.ripple-inset:before,.md .data-table-pagination a.link.searchbar-disable-button:before,.md .data-table-rows-select a.link.icon-only:before,.md .data-table-rows-select a.link.input-clear-button:before,.md .data-table-rows-select a.link.notification-close-button:before,.md .data-table-rows-select a.link.ripple-inset:before,.md .data-table-rows-select a.link.searchbar-disable-button:before{width:100%;height:100%;left:0;top:0;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 71%,rgba(255,255,255,0) 71%)}.md .data-table-pagination a.link.active-state:before,.md .data-table-rows-select a.link.active-state:before{opacity:1;transition-duration:150ms}.md .data-table-rows-select+.data-table-pagination{margin-left:32px}.md .data-table-rows-select .input{margin-left:24px}.md .data-table-pagination-label{margin-right:20px}.md .input-cell .input-clear-button{transform:scale(.8)}.aurora .data-table td.actions-cell a.link+a.link,.aurora .data-table th.actions-cell a.link+a.link{margin-left:8px}.aurora .sortable-cell:not(.numeric-cell):after{margin-left:8px}.aurora .sortable-cell.numeric-cell:before{margin-right:8px}.aurora .data-table-actions .button+.button,.aurora .data-table-actions a.link+a.link,.aurora .data-table-links .button+.button,.aurora .data-table-links a.link+a.link{margin-left:16px}.aurora .data-table-pagination a.link,.aurora .data-table-rows-select a.link{width:48px;height:48px}.aurora .data-table-rows-select+.data-table-pagination{margin-left:16px}.aurora .data-table-rows-select .input{margin-left:16px}.aurora .data-table-pagination-label{margin-right:16px}
\ No newline at end of file
+:root{--f7-table-head-font-size:12px;--f7-table-body-font-size:14px;--f7-table-footer-font-size:12px;--f7-table-input-height:24px;--f7-table-input-font-size:14px;--f7-table-collapsible-cell-padding:16px;--f7-table-link-icon-only-icon-size:20px;--f7-table-head-bg-color:transparent;--f7-table-card-header-bg-color:transparent;--f7-table-card-header-height:64px;--f7-table-cell-padding-vertical:0px;--f7-table-sortable-icon-color:#000}:root .theme-dark,:root.theme-dark{--f7-table-cell-border-color:rgba(255, 255, 255, 0.15);--f7-table-sortable-icon-color:#fff;--f7-table-input-text-color:#fff}.ios{--f7-table-head-font-weight:600;--f7-table-head-cell-height:44px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:44px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:17px;--f7-table-title-font-weight:600;--f7-table-footer-height:44px;--f7-table-head-text-color:rgba(0, 0, 0, 0.45);--f7-table-cell-border-color:rgba(0, 0, 0, 0.22);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.45);--f7-table-input-text-color:#000}.ios .theme-dark,.ios.theme-dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.55);--f7-table-footer-text-color:rgba(255, 255, 255, 0.55);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.08)}.md{--f7-table-head-font-weight:500;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:16px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:28px;--f7-table-edge-cell-padding-horizontal:24px;--f7-table-label-cell-padding-horizontal:24px;--f7-table-checkbox-cell-width:18px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:400;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.54);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-actions-cell-link-color:rgba(0, 0, 0, 0.54);--f7-table-selected-row-bg-color:#f5f5f5;--f7-table-actions-link-color:rgba(0, 0, 0, 0.54);--f7-table-footer-text-color:rgba(0, 0, 0, 0.54);--f7-table-input-text-color:#212121}.md .theme-dark,.md.theme-dark{--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.05);--f7-table-actions-cell-link-color:rgba(255, 255, 255, 0.54);--f7-table-actions-link-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-table-input-height:32px;--f7-table-head-font-weight:600;--f7-table-head-cell-height:56px;--f7-table-head-icon-size:18px;--f7-table-body-cell-height:48px;--f7-table-cell-padding-horizontal:16px;--f7-table-edge-cell-padding-horizontal:16px;--f7-table-label-cell-padding-horizontal:16px;--f7-table-checkbox-cell-width:22px;--f7-table-title-font-size:20px;--f7-table-title-font-weight:600;--f7-table-footer-height:56px;--f7-table-head-text-color:rgba(0, 0, 0, 0.6);--f7-table-cell-border-color:rgba(0, 0, 0, 0.12);--f7-table-selected-row-bg-color:rgba(0, 0, 0, 0.03);--f7-table-footer-text-color:rgba(0, 0, 0, 0.5);--f7-table-input-text-color:#000;--f7-table-head-bg-color:#f6f6f7;--f7-table-card-header-bg-color:#f6f6f7}.aurora .theme-dark,.aurora.theme-dark{--f7-table-selected-row-bg-color:rgba(255, 255, 255, 0.03);--f7-table-head-text-color:rgba(255, 255, 255, 0.54);--f7-table-footer-text-color:rgba(255, 255, 255, 0.54);--f7-table-head-bg-color:rgba(255, 255, 255, 0.05);--f7-table-card-header-bg-color:rgba(255, 255, 255, 0.05)}.data-table{overflow-x:auto}.data-table table,table.data-table{width:100%;border:none;padding:0;margin:0;border-collapse:collapse;text-align:left}.data-table thead td,.data-table thead th{font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:16px;height:var(--f7-table-head-cell-height);background-color:var(--f7-table-head-bg-color)}.data-table thead td:not(.sortable-cell-active),.data-table thead th:not(.sortable-cell-active){color:var(--f7-table-head-text-color)}.data-table thead i.f7-icons,.data-table thead i.icon,.data-table thead i.material-icons{vertical-align:top;font-size:var(--f7-table-head-icon-size)}.data-table tbody{font-size:var(--f7-table-body-font-size)}.data-table tbody td,.data-table tbody th{height:var(--f7-table-body-cell-height)}.data-table tbody tr.data-table-row-selected,.device-desktop .data-table tbody tr:hover{background:var(--f7-table-selected-row-bg-color)}.data-table tbody td:before,.data-table tbody th:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table td,.data-table th{--f7-table-cell-padding-left:var(--f7-table-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-cell-padding-horizontal);padding-top:var(--f7-table-cell-padding-vertical);padding-bottom:var(--f7-table-cell-padding-vertical);padding-left:var(--f7-table-cell-padding-left);padding-right:var(--f7-table-cell-padding-right);position:relative;box-sizing:border-box}.data-table td:first-child,.data-table th:first-child{--f7-table-cell-padding-left:var(--f7-table-edge-cell-padding-horizontal)}.data-table td:last-child,.data-table th:last-child{--f7-table-cell-padding-right:var(--f7-table-edge-cell-padding-horizontal)}.data-table td.label-cell,.data-table th.label-cell{--f7-table-cell-padding-left:var(--f7-table-label-cell-padding-horizontal);--f7-table-cell-padding-right:var(--f7-table-label-cell-padding-horizontal)}.data-table td.numeric-cell,.data-table th.numeric-cell{text-align:right}.data-table td.checkbox-cell,.data-table th.checkbox-cell{overflow:visible;width:var(--f7-table-checkbox-cell-width)}.data-table td.checkbox-cell label+span,.data-table th.checkbox-cell label+span{margin-left:8px}.data-table td.checkbox-cell:first-child,.data-table th.checkbox-cell:first-child{padding-right:calc(var(--f7-table-cell-padding-right)/ 2)}.data-table td.checkbox-cell:first-child+td,.data-table td.checkbox-cell:first-child+th,.data-table th.checkbox-cell:first-child+td,.data-table th.checkbox-cell:first-child+th{padding-left:calc(var(--f7-table-cell-padding-left)/ 2)}.data-table td.checkbox-cell:last-child,.data-table th.checkbox-cell:last-child{padding-left:calc(var(--f7-table-cell-padding-left)/ 2)}.data-table td.actions-cell,.data-table th.actions-cell{text-align:right;white-space:nowrap}.data-table td.actions-cell a.link,.data-table th.actions-cell a.link{color:var(--f7-table-actions-cell-link-color,var(--f7-theme-color))}.card .data-table td a.icon-only,.card .data-table th a.icon-only,.card.data-table td a.icon-only,.card.data-table th a.icon-only,.data-table td a.icon-only,.data-table th a.icon-only{display:inline-block;vertical-align:middle;text-align:center;font-size:0;min-width:0}.card .data-table td a.icon-only i,.card .data-table th a.icon-only i,.card.data-table td a.icon-only i,.card.data-table th a.icon-only i,.data-table td a.icon-only i,.data-table th a.icon-only i{font-size:var(--f7-table-link-icon-only-icon-size);vertical-align:middle}.data-table .sortable-cell:not(.input-cell){cursor:pointer;position:relative}.data-table .sortable-cell.input-cell .table-head-label{cursor:pointer;position:relative}.data-table .sortable-cell.numeric-cell.input-cell>.table-head-label:before,.data-table .sortable-cell.numeric-cell:not(.input-cell):before,.data-table .sortable-cell:not(.numeric-cell).input-cell>.table-head-label:after,.data-table .sortable-cell:not(.numeric-cell):not(.input-cell):after{content:'arrow_bottom_md';font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px;display:inline-block;vertical-align:top;width:16px;height:16px;color:var(--f7-table-sortable-icon-color);font-size:13px;line-height:16px;transition-duration:.3s;transform:rotate(0);opacity:0}.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active) .table-head-label:hover:before,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:after,.device-desktop .data-table .sortable-cell:not(.sortable-cell-active):hover:before{opacity:.54}.data-table .sortable-cell.sortable-cell-active .table-head-label:after,.data-table .sortable-cell.sortable-cell-active .table-head-label:before,.data-table .sortable-cell.sortable-cell-active:after,.data-table .sortable-cell.sortable-cell-active:before{opacity:.87!important}.data-table .sortable-cell.sortable-desc:after,.data-table .sortable-cell.sortable-desc:before,.data-table .table-head-label:after,.data-table .table-head-label:before{transform:rotate(180deg)!important}.card .data-table .card-footer,.card .data-table .card-header,.data-table.card .card-footer,.data-table.card .card-header{padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal)}.card .data-table .card-header,.data-table.card .card-header{min-height:var(--f7-table-card-header-height);background-color:var(--f7-table-card-header-bg-color)}.card .data-table .card-content,.data-table.card .card-content{overflow-x:auto}.card .data-table .card-footer,.data-table.card .card-footer{min-height:var(--f7-table-footer-height)}.data-table .data-table-title{font-size:var(--f7-table-title-font-size);font-weight:var(--f7-table-title-font-weight)}.data-table .data-table-actions,.data-table .data-table-links{display:flex}.data-table .data-table-links .button{min-width:64px}.data-table .data-table-actions{margin-left:auto;align-items:center}.data-table .data-table-actions a.link{color:var(--f7-table-actions-link-color,var(--f7-theme-color));min-width:0}.data-table .data-table-actions a.link.icon-only{line-height:1;justify-content:center;padding:0}.data-table .data-table-header,.data-table .data-table-header-selected{display:flex;justify-content:space-between;align-items:center;width:100%}.data-table .card-header>.data-table-header,.data-table .card-header>.data-table-header-selected{padding-top:var(--f7-card-header-padding-vertical);padding-bottom:var(--f7-card-header-padding-vertical);height:100%;margin-top:calc(-1 * var(--f7-card-header-padding-vertical));margin-bottom:calc(-1 * var(--f7-card-header-padding-vertical));min-height:var(--f7-table-card-header-height);padding-left:var(--f7-table-edge-cell-padding-horizontal);padding-right:var(--f7-table-edge-cell-padding-horizontal);margin-left:calc(-1 * var(--f7-table-edge-cell-padding-horizontal));margin-right:calc(-1 * var(--f7-table-edge-cell-padding-horizontal))}.data-table .data-table-header-selected{background:rgba(var(--f7-theme-color-rgb),.1);display:none}.data-table.data-table-has-checked .data-table-header{display:none}.data-table.data-table-has-checked .data-table-header-selected{display:flex}.data-table .data-table-title-selected{font-size:14px;color:var(--f7-theme-color)}.data-table .data-table-footer{display:flex;align-items:center;box-sizing:border-box;position:relative;font-size:var(--f7-table-footer-font-size);overflow:hidden;min-height:var(--f7-table-footer-height);color:var(--f7-table-footer-text-color);justify-content:flex-end}.data-table .data-table-footer:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table .data-table-pagination,.data-table .data-table-rows-select{display:flex;align-items:center}.data-table .input-cell{padding-top:8px;padding-bottom:8px;height:auto;vertical-align:top}.data-table .input-cell .table-head-label+.input{margin-top:4px}.data-table .input-cell .input{height:var(--f7-table-input-height)}.data-table .input-cell .input input,.data-table .input-cell .input select,.data-table .input-cell .input textarea{height:var(--f7-table-input-height);color:var(--f7-table-input-text-color);font-size:var(--f7-table-input-font-size)}@media (max-width:480px) and (orientation:portrait){.data-table.data-table-collapsible thead{display:none}.data-table.data-table-collapsible tbody,.data-table.data-table-collapsible td,.data-table.data-table-collapsible tr{display:block}.data-table.data-table-collapsible tr{position:relative}.data-table.data-table-collapsible tr:before{content:'';position:absolute;background-color:var(--f7-table-cell-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.data-table.data-table-collapsible tr:hover{background-color:inherit}.data-table.data-table-collapsible td{--f7-table-cell-padding-left:var(--f7-table-collapsible-cell-padding);--f7-table-cell-padding-right:var(--f7-table-collapsible-cell-padding);height:auto;min-height:var(--f7-table-body-cell-height);display:flex;align-content:center;align-items:center;justify-content:flex-start;text-align:left}.data-table.data-table-collapsible td:before{display:none!important}.data-table.data-table-collapsible td:not(.checkbox-cell):before{width:40%;display:block!important;content:attr(data-collapsible-title);position:relative;height:auto;background:0 0!important;transform:none!important;font-size:var(--f7-table-head-font-size);font-weight:var(--f7-table-head-font-weight);color:var(--f7-table-head-text-color);margin-right:16px;flex-shrink:0}.data-table.data-table-collapsible td.checkbox-cell{position:absolute;top:0;left:0}.data-table.data-table-collapsible td.checkbox-cell+td{padding-left:16px}.data-table.data-table-collapsible td.checkbox-cell~td{margin-left:32px}}.data-table .xsmall-landscape-only,.data-table .xsmall-only{display:none}@media (min-width:480px){.data-table .xsmall-only{display:table-cell}}@media (min-width:480px) and (orientation:landscape){.data-table .xsmall-landscape-only{display:table-cell}}.data-table .small-landscape-only,.data-table .small-only{display:none}@media (min-width:568px){.data-table .small-only{display:table-cell}}@media (min-width:568px) and (orientation:landscape){.data-table .small-landscape-only{display:table-cell}}.data-table .medium-landscape-only,.data-table .medium-only{display:none}@media (min-width:768px){.data-table .medium-only{display:table-cell}}@media (min-width:768px) and (orientation:landscape){.data-table .medium-landscape-only{display:table-cell}}.data-table .large-landscape-only,.data-table .large-only{display:none}@media (min-width:1024px){.data-table .large-only{display:table-cell}}@media (min-width:1024px) and (orientation:landscape){.data-table .large-landscape-only{display:table-cell}}.data-table .xlarge-landscape-only,.data-table .xlarge-only{display:none}@media (min-width:1200px){.data-table .xlarge-only{display:table-cell}}@media (min-width:1200px) and (orientation:landscape){.data-table .xlarge-landscape-only{display:table-cell}}.ios .data-table td.actions-cell a.link+a.link,.ios .data-table th.actions-cell a.link+a.link{margin-left:16px}.ios .sortable-cell:not(.numeric-cell):after{margin-left:5px}.ios .sortable-cell.numeric-cell:before{margin-right:5px}.ios .data-table-actions .button+.button,.ios .data-table-actions a.link+a.link,.ios .data-table-links .button+.button,.ios .data-table-links a.link+a.link{margin-left:16px}.ios .data-table-actions a.link.icon-only{width:44px;height:44px}.ios .data-table-pagination a.link,.ios .data-table-rows-select a.link{width:44px;height:44px}.ios .data-table-rows-select+.data-table-pagination{margin-left:30px}.ios .data-table-rows-select .input{margin-left:20px}.ios .data-table-pagination-label{margin-right:16px}.md .data-table td.actions-cell a.link+a.link,.md .data-table th.actions-cell a.link+a.link{margin-left:24px}.md .data-table td.actions-cell a.icon-only,.md .data-table th.actions-cell a.icon-only{width:24px;height:24px;line-height:24px}.md .sortable-cell:not(.numeric-cell):after{margin-left:8px}.md .sortable-cell.numeric-cell:before{margin-right:8px}.md .data-table-actions .button+.button,.md .data-table-actions a.link+a.link,.md .data-table-links .button+.button,.md .data-table-links a.link+a.link{margin-left:24px}.md .data-table-actions a.link.icon-only{width:24px;height:24px;overflow:visible}.md .data-table-actions a.link.icon-only.active-state{background:0 0}.md .data-table-pagination a.link,.md .data-table-rows-select a.link{width:48px;height:48px}.md .data-table-pagination a.link:before,.md .data-table-rows-select a.link:before{content:'';width:152%;height:152%;left:-26%;top:-26%;position:absolute;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 66%,rgba(255,255,255,0) 66%);background-repeat:no-repeat;background-position:center;background-size:100% 100%;opacity:0;pointer-events:none;transition-duration:.3s;transition-property:opacity}.md .data-table-pagination a.link.icon-only:before,.md .data-table-pagination a.link.input-clear-button:before,.md .data-table-pagination a.link.notification-close-button:before,.md .data-table-pagination a.link.ripple-inset:before,.md .data-table-pagination a.link.searchbar-disable-button:before,.md .data-table-rows-select a.link.icon-only:before,.md .data-table-rows-select a.link.input-clear-button:before,.md .data-table-rows-select a.link.notification-close-button:before,.md .data-table-rows-select a.link.ripple-inset:before,.md .data-table-rows-select a.link.searchbar-disable-button:before{width:100%;height:100%;left:0;top:0;background-image:radial-gradient(circle at center,var(--f7-link-highlight-color) 71%,rgba(255,255,255,0) 71%)}.md .data-table-pagination a.link.active-state:before,.md .data-table-rows-select a.link.active-state:before{opacity:1;transition-duration:150ms}.md .data-table-rows-select+.data-table-pagination{margin-left:32px}.md .data-table-rows-select .input{margin-left:24px}.md .data-table-pagination-label{margin-right:20px}.md .input-cell .input-clear-button{transform:scale(.8)}.aurora .data-table td.actions-cell a.link+a.link,.aurora .data-table th.actions-cell a.link+a.link{margin-left:8px}.aurora .sortable-cell:not(.numeric-cell):after{margin-left:8px}.aurora .sortable-cell.numeric-cell:before{margin-right:8px}.aurora .data-table-actions .button+.button,.aurora .data-table-actions a.link+a.link,.aurora .data-table-links .button+.button,.aurora .data-table-links a.link+a.link{margin-left:16px}.aurora .data-table-pagination a.link,.aurora .data-table-rows-select a.link{width:48px;height:48px}.aurora .data-table-rows-select+.data-table-pagination{margin-left:16px}.aurora .data-table-rows-select .input{margin-left:16px}.aurora .data-table-pagination-label{margin-right:16px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/data-table/data-table.d.ts b/www/assets/framework7/components/data-table/data-table.d.ts
index f63f6e6fa..247c097d8 100644
--- a/www/assets/framework7/components/data-table/data-table.d.ts
+++ b/www/assets/framework7/components/data-table/data-table.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace DataTable {
interface DataTable extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/data-table/data-table.js b/www/assets/framework7/components/data-table/data-table.js
index 473f8f6f8..f547b507b 100644
--- a/www/assets/framework7/components/data-table/data-table.js
+++ b/www/assets/framework7/components/data-table/data-table.js
@@ -1,72 +1 @@
-import $ from '../../shared/dom7.js';
-import DataTable from './data-table-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-export default {
- name: 'dataTable',
- static: {
- DataTable
- },
-
- create() {
- const app = this;
- app.dataTable = ConstructorMethods({
- defaultSelector: '.data-table',
- constructor: DataTable,
- app,
- domProp: 'f7DataTable'
- });
- },
-
- on: {
- tabBeforeRemove(tabEl) {
- const app = this;
- $(tabEl).find('.data-table-init').each(tableEl => {
- app.dataTable.destroy(tableEl);
- });
- },
-
- tabMounted(tabEl) {
- const app = this;
- $(tabEl).find('.data-table-init').each(tableEl => {
- app.dataTable.create({
- el: tableEl
- });
- });
- },
-
- pageBeforeRemove(page) {
- const app = this;
- page.$el.find('.data-table-init').each(tableEl => {
- app.dataTable.destroy(tableEl);
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.data-table-init').each(tableEl => {
- app.dataTable.create({
- el: tableEl
- });
- });
- }
-
- },
- vnode: {
- 'data-table-init': {
- insert(vnode) {
- const app = this;
- const tableEl = vnode.elm;
- app.dataTable.create({
- el: tableEl
- });
- },
-
- destroy(vnode) {
- const app = this;
- const tableEl = vnode.elm;
- app.dataTable.destroy(tableEl);
- }
-
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,n=e.utils,r=(e.getDevice,e.getSupport,e.Class),l=(e.Modal,e.ConstructorMethods);e.ModalMethods;function o(e){this.wrapped=e}function c(e){var t,a;function n(t,a){try{var l=e[t](a),c=l.value,i=c instanceof o;Promise.resolve(i?c.wrapped:c).then((function(e){i?n("return"===t?"return":"next",e):r(l.done?"return":"normal",e)}),(function(e){n("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?n(t.key,t.arg):a=null}this._invoke=function(e,r){return new Promise((function(l,o){var c={key:e,arg:r,resolve:l,reject:o,next:null};a?a=a.next=c:(t=a=c,n(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function s(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}c.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},c.prototype.next=function(e){return this._invoke("next",e)},c.prototype.throw=function(e){return this._invoke("throw",e)},c.prototype.return=function(e){return this._invoke("return",e)};var d=n.extend,h=n.deleteProps,u=function(e){var t,n;function r(t,n){var r;void 0===n&&(n={});var l=s(r=e.call(this,n,[t])||this),o={};l.useModulesParams(o),l.params=d(o,n);var c=a(l.params.el);if(0===c.length)return s(r);if(l.$el=c,l.el=c[0],l.$el[0].f7DataTable){var i=l.$el[0].f7DataTable;return l.destroy(),i||s(r)}function h(e){if(!e.detail||!e.detail.sentByF7DataTable){var t=a(this),n=t[0].checked,r=t.parents("td,th").index();if(t.parents("thead").length>0)0===r&&c.find("tbody tr")[n?"addClass":"removeClass"]("data-table-row-selected"),c.find("tbody tr td:nth-child("+(r+1)+") input").prop("checked",n).trigger("change",{sentByF7DataTable:!0}),t.prop("indeterminate",!1);else{0===r&&t.parents("tr")[n?"addClass":"removeClass"]("data-table-row-selected");var o=c.find("tbody .checkbox-cell:nth-child("+(r+1)+') input[type="checkbox"]:checked').length,i=c.find("tbody tr").length,s=c.find("thead .checkbox-cell:nth-child("+(r+1)+') input[type="checkbox"]');n?o===i&&s.prop("checked",!0).trigger("change",{sentByF7DataTable:!0}):s.prop("checked",!1),s.prop("indeterminate",o>0&&o0&&e.$headerSelectedEl.length>0){var t=e.$el.find("tbody .checkbox-cell input:checked").length;e.$el[t>0?"addClass":"removeClass"]("data-table-has-checked"),e.$headerSelectedEl.find(".data-table-selected-count").text(t)}},l.init=function(){var e=this;e.attachEvents(),e.setCollapsibleLabels(),e.checkSelectedHeader()},l.destroy=function(){var e=this;e.$el.trigger("datatable:beforedestroy"),e.emit("local::beforeDestroy dataTableBeforeDestroy",e),e.attachEvents(),e.$el[0]&&(e.$el[0].f7DataTable=null,delete e.$el[0].f7DataTable),h(e),e=null},r}(r),f={name:"dataTable",static:{DataTable:u},create:function(){this.dataTable=l({defaultSelector:".data-table",constructor:u,app:this,domProp:"f7DataTable"})},on:{tabBeforeRemove:function(e){var t=this;a(e).find(".data-table-init").each((function(e){t.dataTable.destroy(e)}))},tabMounted:function(e){var t=this;a(e).find(".data-table-init").each((function(e){t.dataTable.create({el:e})}))},pageBeforeRemove:function(e){var t=this;e.$el.find(".data-table-init").each((function(e){t.dataTable.destroy(e)}))},pageInit:function(e){var t=this;e.$el.find(".data-table-init").each((function(e){t.dataTable.create({el:e})}))}},vnode:{"data-table-init":{insert:function(e){var t=e.elm;this.dataTable.create({el:t})},destroy:function(e){var t=e.elm;this.dataTable.destroy(t)}}}};if(t){if(e.prototype.modules&&e.prototype.modules[f.name])return;e.use(f),e.instance&&(e.instance.useModuleParams(f,e.instance.params),e.instance.useModule(f))}return f}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/data-table/data-table.lazy.js b/www/assets/framework7/components/data-table/data-table.lazy.js
deleted file mode 100644
index 0e3a39054..000000000
--- a/www/assets/framework7/components/data-table/data-table.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,l=e.utils,s=(e.getDevice,e.getSupport,e.Class),c=(e.Modal,e.ConstructorMethods),d=(e.ModalMethods,e.$jsx,l.extend),o=l.deleteProps;class n extends s{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const l=this,s={};l.useModulesParams(s),l.params=d(s,t);const c=a(l.params.el);if(0!==c.length){if(l.$el=c,l.el=c[0],l.$el[0].f7DataTable){const e=l.$el[0].f7DataTable;return l.destroy(),e}return l.$el[0].f7DataTable=l,d(l,{collapsible:c.hasClass("data-table-collapsible"),$headerEl:c.find(".data-table-header"),$headerSelectedEl:c.find(".data-table-header-selected")}),l.attachEvents=function(){l.$el.on("change",'.checkbox-cell input[type="checkbox"]',o),l.$el.find("thead .sortable-cell").on("click",n)},l.detachEvents=function(){l.$el.off("change",'.checkbox-cell input[type="checkbox"]',o),l.$el.find("thead .sortable-cell").off("click",n)},l.useModules(),l.init(),l}function o(e){if(e.detail&&e.detail.sentByF7DataTable)return;const t=a(this),s=t[0].checked,d=t.parents("td,th").index();if(t.parents("thead").length>0)0===d&&c.find("tbody tr")[s?"addClass":"removeClass"]("data-table-row-selected"),c.find(`tbody tr td:nth-child(${d+1}) input`).prop("checked",s).trigger("change",{sentByF7DataTable:!0}),t.prop("indeterminate",!1);else{0===d&&t.parents("tr")[s?"addClass":"removeClass"]("data-table-row-selected");const e=c.find(`tbody .checkbox-cell:nth-child(${d+1}) input[type="checkbox"]:checked`).length,a=c.find("tbody tr").length,l=c.find(`thead .checkbox-cell:nth-child(${d+1}) input[type="checkbox"]`);s?e===a&&l.prop("checked",!0).trigger("change",{sentByF7DataTable:!0}):l.prop("checked",!1),l.prop("indeterminate",e>0&&e{const l=a(t),s=l.index(),c=l.attr("data-collapsible-title");c||""===c||l.attr("data-collapsible-title",e.$el.find("thead th").eq(s).text())}))}checkSelectedHeader(){const e=this;if(e.$headerEl.length>0&&e.$headerSelectedEl.length>0){const t=e.$el.find("tbody .checkbox-cell input:checked").length;e.$el[t>0?"addClass":"removeClass"]("data-table-has-checked"),e.$headerSelectedEl.find(".data-table-selected-count").text(t)}}init(){const e=this;e.attachEvents(),e.setCollapsibleLabels(),e.checkSelectedHeader()}destroy(){let e=this;e.$el.trigger("datatable:beforedestroy"),e.emit("local::beforeDestroy dataTableBeforeDestroy",e),e.attachEvents(),e.$el[0]&&(e.$el[0].f7DataTable=null,delete e.$el[0].f7DataTable),o(e),e=null}}var i={name:"dataTable",static:{DataTable:n},create(){this.dataTable=c({defaultSelector:".data-table",constructor:n,app:this,domProp:"f7DataTable"})},on:{tabBeforeRemove(e){const t=this;a(e).find(".data-table-init").each((e=>{t.dataTable.destroy(e)}))},tabMounted(e){const t=this;a(e).find(".data-table-init").each((e=>{t.dataTable.create({el:e})}))},pageBeforeRemove(e){const t=this;e.$el.find(".data-table-init").each((e=>{t.dataTable.destroy(e)}))},pageInit(e){const t=this;e.$el.find(".data-table-init").each((e=>{t.dataTable.create({el:e})}))}},vnode:{"data-table-init":{insert(e){const t=e.elm;this.dataTable.create({el:t})},destroy(e){const t=e.elm;this.dataTable.destroy(t)}}}};if(t){if(e.prototype.modules&&e.prototype.modules[i.name])return;e.use(i),e.instance&&(e.instance.useModuleParams(i,e.instance.params),e.instance.useModule(i))}return i}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/data-table/data-table.less b/www/assets/framework7/components/data-table/data-table.less
index 93c553a49..9c36e6e81 100644
--- a/www/assets/framework7/components/data-table/data-table.less
+++ b/www/assets/framework7/components/data-table/data-table.less
@@ -427,6 +427,6 @@
.if-md-theme({
@import './data-table-md.less';
});
-.if-aurora-theme({
+.if-md-theme({
@import './data-table-aurora.less';
});
diff --git a/www/assets/framework7/components/data-table/package.json b/www/assets/framework7/components/data-table/package.json
new file mode 100644
index 000000000..d86c551fc
--- /dev/null
+++ b/www/assets/framework7/components/data-table/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/data-table",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/data-table/data-table.js",
+ "module": "../../esm/components/data-table/data-table.js",
+ "jsnext:main": "../../esm/components/data-table/data-table.js",
+ "typings": "../../types/components/data-table/data-table.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/dialog/dialog-rtl.css b/www/assets/framework7/components/dialog/dialog-rtl.css
index 5eaed80c3..e9b627369 100644
--- a/www/assets/framework7/components/dialog/dialog-rtl.css
+++ b/www/assets/framework7/components/dialog/dialog-rtl.css
@@ -1 +1 @@
-:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center;--f7-dialog-input-bg-color:#fff}:root .dark,:root.dark{--f7-dialog-text-color:#fff}.ios{--f7-dialog-box-shadow:none;--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-bg-color:rgba(255, 255, 255, 0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-dialog-input-border-color:rgba(0, 0, 0, 0.3);--f7-dialog-border-divider-color:rgba(0, 0, 0, 0.2)}.ios .dark,.ios.dark{--f7-dialog-bg-color:rgba(45, 45, 45, 0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.2);--f7-dialog-border-divider-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.5)}.md{--f7-dialog-box-shadow:var(--f7-elevation-24);--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:4px;--f7-dialog-text-align:right;--f7-dialog-font-size:16px;--f7-dialog-title-font-size:20px;--f7-dialog-title-font-weight:500;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0.05em;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:uppercase;--f7-dialog-button-pressed-bg-color:rgba(var(--f7-theme-color-rgb), 0.15);--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-bg-color:#fff;--f7-dialog-text-color:rgba(0, 0, 0, 0.54);--f7-dialog-title-text-color:#212121;--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.35)}.md .dark,.md.dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:transparent;--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-dialog-box-shadow:0 0 20px 0 rgba(0, 0, 0, 0.15),0 25px 30px 0 rgba(0,0,0,0.35);--f7-dialog-width:300px;--f7-dialog-inner-padding:20px;--f7-dialog-border-radius:8px;--f7-dialog-text-align:right;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:700;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:600;--f7-dialog-button-text-transform:uppercase;--f7-dialog-input-border-radius:8px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-preloader-size:24px;--f7-dialog-bg-color:#fff;--f7-dialog-title-text-color:inherit;--f7-dialog-text-color:#000;--f7-dialog-button-text-color:#fff;--f7-dialog-input-border-color:rgba(0, 0, 0, 0.2);--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.32)}.aurora .dark,.aurora.dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.25);--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15)}.dialog{position:absolute;z-index:13500;left:50%;margin-top:0;top:50%;overflow:hidden;opacity:0;transform:translate3d(0,-50%,0) scale(1.185);transition-property:transform,opacity;display:none;transition-duration:.4s;box-shadow:var(--f7-dialog-box-shadow);width:var(--f7-dialog-width);margin-left:calc(-1 * var(--f7-dialog-width)/ 2);border-radius:var(--f7-dialog-border-radius);text-align:var(--f7-dialog-text-align);color:var(--f7-dialog-text-color);font-size:var(--f7-dialog-font-size);background:var(--f7-dialog-bg-color);will-change:transform,opacity}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{background-color:rgba(var(--f7-dialog-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0s}.dialog-inner{position:relative;padding:var(--f7-dialog-inner-padding)}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{position:relative;display:flex;flex-direction:row-reverse}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;overflow:hidden;position:relative;white-space:nowrap;text-overflow:ellipsis;color:var(--f7-dialog-button-text-color);font-size:var(--f7-dialog-button-font-size);height:var(--f7-dialog-button-height);line-height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);text-align:var(--f7-dialog-button-text-align);font-weight:var(--f7-dialog-button-font-weight);text-transform:var(--f7-dialog-button-text-transform);display:block;cursor:pointer}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{box-sizing:border-box;margin:0;margin-top:15px;border-radius:var(--f7-dialog-input-border-radius);-webkit-appearance:none;appearance:none;width:100%;display:block;font-family:inherit;box-shadow:none;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color)}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{overflow:hidden;-webkit-overflow-scrolling:auto}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{width:100%;padding:0 5px;-webkit-box-flex:1;-ms-flex:1}.ios .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:0;right:0;bottom:auto;left:auto;width:1px;height:100%;transform-origin:100% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button.dialog-button-bold{font-weight:500}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader{margin-top:15px}.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{height:48px;padding:6px 8px;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.25);border-radius:4px;min-width:64px;padding:0 8px;border:none;transition-duration:.3s;transform:translate3d(0,0,0)}.md .dialog-button.dialog-button-bold{font-weight:700}.md .dialog-button+.dialog-button{margin-left:4px}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:flex-end}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:12px}.md .dialog-input{padding:0;transition-duration:.2s;position:relative}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}.aurora .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.aurora .dialog-title+.dialog-text{margin-top:16px}.aurora .dialog-text{line-height:1.5}.aurora .dialog-buttons{padding:var(--f7-dialog-inner-padding);padding-top:0;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.aurora .dialog-button{border-radius:8px;min-width:64px;padding:0 10px;border:none;transition-duration:.3s;transform:translate3d(0,0,0);background:var(--f7-theme-color)}.aurora .dialog-button.dialog-button-bold{font-weight:600}.aurora .dialog-button+.dialog-button{margin-left:16px}.aurora .dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color,var(--f7-theme-color-shade))}.aurora.device-desktop .dialog-button:not(.active-state):not(.no-hover):hover{background-color:var(--f7-dialog-button-hover-bg-color,var(--f7-theme-color-tint))}.aurora .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:stretch}.aurora .dialog-buttons-vertical .dialog-button{margin-left:0;flex-shrink:0}.aurora .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:8px}.aurora div.dialog-input-field{margin-top:16px}.aurora div.dialog-input-field input.dialog-input{margin-top:0}.aurora div.dialog-input-field.input:after{display:none!important}.aurora .dialog-input{padding:0 8px;transition-duration:.2s;position:relative}.aurora .dialog-input+.dialog-input{margin-top:8px}.aurora .dialog-input-double+.dialog-input-double{margin-top:0}.aurora .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.aurora .dialog-preloader .dialog-inner,.aurora .dialog-preloader .dialog-title,.aurora .dialog-progress .dialog-inner,.aurora .dialog-progress .dialog-title{text-align:center}.aurora .dialog-preloader .dialog-text~.preloader,.aurora .dialog-preloader .dialog-title~.preloader{margin-top:16px}.aurora .dialog-progress .dialog-text~.progressbar,.aurora .dialog-progress .dialog-text~.progressbar-infinite,.aurora .dialog-progress .dialog-title~.progressbar,.aurora .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}
\ No newline at end of file
+:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center;--f7-dialog-input-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-dialog-text-color:#fff}.ios{--f7-dialog-box-shadow:none;--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-bg-color:rgba(255, 255, 255, 0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-dialog-input-border-color:rgba(0, 0, 0, 0.3);--f7-dialog-border-divider-color:rgba(0, 0, 0, 0.2)}.ios .theme-dark,.ios.theme-dark{--f7-dialog-bg-color:rgba(45, 45, 45, 0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.2);--f7-dialog-border-divider-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.5)}.md{--f7-dialog-box-shadow:var(--f7-elevation-24);--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:4px;--f7-dialog-text-align:right;--f7-dialog-font-size:16px;--f7-dialog-title-font-size:20px;--f7-dialog-title-font-weight:500;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0.05em;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:uppercase;--f7-dialog-button-pressed-bg-color:rgba(var(--f7-theme-color-rgb), 0.15);--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-bg-color:#fff;--f7-dialog-text-color:rgba(0, 0, 0, 0.54);--f7-dialog-title-text-color:#212121;--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.35)}.md .theme-dark,.md.theme-dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:transparent;--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-dialog-box-shadow:0 0 20px 0 rgba(0, 0, 0, 0.15),0 25px 30px 0 rgba(0,0,0,0.35);--f7-dialog-width:300px;--f7-dialog-inner-padding:20px;--f7-dialog-border-radius:8px;--f7-dialog-text-align:right;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:700;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:600;--f7-dialog-button-text-transform:uppercase;--f7-dialog-input-border-radius:8px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-preloader-size:24px;--f7-dialog-bg-color:#fff;--f7-dialog-title-text-color:inherit;--f7-dialog-text-color:#000;--f7-dialog-button-text-color:#fff;--f7-dialog-input-border-color:rgba(0, 0, 0, 0.2);--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.32)}.aurora .theme-dark,.aurora.theme-dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.25);--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15)}.dialog{position:absolute;z-index:13500;left:50%;margin-top:0;top:50%;overflow:hidden;opacity:0;transform:translate3d(0,-50%,0) scale(1.185);transition-property:transform,opacity;display:none;transition-duration:.4s;box-shadow:var(--f7-dialog-box-shadow);width:var(--f7-dialog-width);margin-left:calc(-1 * var(--f7-dialog-width)/ 2);border-radius:var(--f7-dialog-border-radius);text-align:var(--f7-dialog-text-align);color:var(--f7-dialog-text-color);font-size:var(--f7-dialog-font-size);background:var(--f7-dialog-bg-color);will-change:transform,opacity}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{background-color:rgba(var(--f7-dialog-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0s}.dialog-inner{position:relative;padding:var(--f7-dialog-inner-padding)}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{position:relative;display:flex;flex-direction:row-reverse}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;overflow:hidden;position:relative;white-space:nowrap;text-overflow:ellipsis;color:var(--f7-dialog-button-text-color);font-size:var(--f7-dialog-button-font-size);height:var(--f7-dialog-button-height);line-height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);text-align:var(--f7-dialog-button-text-align);font-weight:var(--f7-dialog-button-font-weight);text-transform:var(--f7-dialog-button-text-transform);display:block;cursor:pointer}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{box-sizing:border-box;margin:0;margin-top:15px;border-radius:var(--f7-dialog-input-border-radius);-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;display:block;font-family:inherit;box-shadow:none;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color)}input.dialog-input[type]::-webkit-input-placeholder{color:var(--f7-dialog-input-placeholder-color)}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{overflow:hidden;-webkit-overflow-scrolling:auto}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{width:100%;padding:0 5px;-webkit-box-flex:1;-ms-flex:1}.ios .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:0;right:0;bottom:auto;left:auto;width:1px;height:100%;transform-origin:100% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button.dialog-button-bold{font-weight:500}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader{margin-top:15px}.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{height:48px;padding:6px 8px;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.25);border-radius:4px;min-width:64px;padding:0 8px;border:none;transition-duration:.3s;transform:translate3d(0,0,0)}.md .dialog-button.dialog-button-bold{font-weight:700}.md .dialog-button+.dialog-button{margin-left:4px}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:flex-end}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:12px}.md .dialog-input{padding:0;transition-duration:.2s;position:relative}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}.aurora .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.aurora .dialog-title+.dialog-text{margin-top:16px}.aurora .dialog-text{line-height:1.5}.aurora .dialog-buttons{padding:var(--f7-dialog-inner-padding);padding-top:0;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.aurora .dialog-button{border-radius:8px;min-width:64px;padding:0 10px;border:none;transition-duration:.3s;transform:translate3d(0,0,0);background:var(--f7-theme-color)}.aurora .dialog-button.dialog-button-bold{font-weight:600}.aurora .dialog-button+.dialog-button{margin-left:16px}.aurora .dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color,var(--f7-theme-color-shade))}.aurora.device-desktop .dialog-button:not(.active-state):not(.no-hover):hover{background-color:var(--f7-dialog-button-hover-bg-color,var(--f7-theme-color-tint))}.aurora .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:stretch}.aurora .dialog-buttons-vertical .dialog-button{margin-left:0;flex-shrink:0}.aurora .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:8px}.aurora div.dialog-input-field{margin-top:16px}.aurora div.dialog-input-field input.dialog-input{margin-top:0}.aurora div.dialog-input-field.input:after{display:none!important}.aurora .dialog-input{padding:0 8px;transition-duration:.2s;position:relative}.aurora .dialog-input+.dialog-input{margin-top:8px}.aurora .dialog-input-double+.dialog-input-double{margin-top:0}.aurora .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.aurora .dialog-preloader .dialog-inner,.aurora .dialog-preloader .dialog-title,.aurora .dialog-progress .dialog-inner,.aurora .dialog-progress .dialog-title{text-align:center}.aurora .dialog-preloader .dialog-text~.preloader,.aurora .dialog-preloader .dialog-title~.preloader{margin-top:16px}.aurora .dialog-progress .dialog-text~.progressbar,.aurora .dialog-progress .dialog-text~.progressbar-infinite,.aurora .dialog-progress .dialog-title~.progressbar,.aurora .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/dialog/dialog.css b/www/assets/framework7/components/dialog/dialog.css
index 631c99323..ef8b24ddb 100644
--- a/www/assets/framework7/components/dialog/dialog.css
+++ b/www/assets/framework7/components/dialog/dialog.css
@@ -1 +1 @@
-:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center;--f7-dialog-input-bg-color:#fff}:root .dark,:root.dark{--f7-dialog-text-color:#fff}.ios{--f7-dialog-box-shadow:none;--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-bg-color:rgba(255, 255, 255, 0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-dialog-input-border-color:rgba(0, 0, 0, 0.3);--f7-dialog-border-divider-color:rgba(0, 0, 0, 0.2)}.ios .dark,.ios.dark{--f7-dialog-bg-color:rgba(45, 45, 45, 0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.2);--f7-dialog-border-divider-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.5)}.md{--f7-dialog-box-shadow:var(--f7-elevation-24);--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:4px;--f7-dialog-text-align:left;--f7-dialog-font-size:16px;--f7-dialog-title-font-size:20px;--f7-dialog-title-font-weight:500;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0.05em;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:uppercase;--f7-dialog-button-pressed-bg-color:rgba(var(--f7-theme-color-rgb), 0.15);--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-bg-color:#fff;--f7-dialog-text-color:rgba(0, 0, 0, 0.54);--f7-dialog-title-text-color:#212121;--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.35)}.md .dark,.md.dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:transparent;--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-dialog-box-shadow:0 0 20px 0 rgba(0, 0, 0, 0.15),0 25px 30px 0 rgba(0,0,0,0.35);--f7-dialog-width:300px;--f7-dialog-inner-padding:20px;--f7-dialog-border-radius:8px;--f7-dialog-text-align:left;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:700;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:600;--f7-dialog-button-text-transform:uppercase;--f7-dialog-input-border-radius:8px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-preloader-size:24px;--f7-dialog-bg-color:#fff;--f7-dialog-title-text-color:inherit;--f7-dialog-text-color:#000;--f7-dialog-button-text-color:#fff;--f7-dialog-input-border-color:rgba(0, 0, 0, 0.2);--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.32)}.aurora .dark,.aurora.dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.25);--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15)}.dialog{position:absolute;z-index:13500;left:50%;margin-top:0;top:50%;overflow:hidden;opacity:0;transform:translate3d(0,-50%,0) scale(1.185);transition-property:transform,opacity;display:none;transition-duration:.4s;box-shadow:var(--f7-dialog-box-shadow);width:var(--f7-dialog-width);margin-left:calc(-1 * var(--f7-dialog-width)/ 2);border-radius:var(--f7-dialog-border-radius);text-align:var(--f7-dialog-text-align);color:var(--f7-dialog-text-color);font-size:var(--f7-dialog-font-size);background:var(--f7-dialog-bg-color);will-change:transform,opacity}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{background-color:rgba(var(--f7-dialog-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0s}.dialog-inner{position:relative;padding:var(--f7-dialog-inner-padding)}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{position:relative;display:flex}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;overflow:hidden;position:relative;white-space:nowrap;text-overflow:ellipsis;color:var(--f7-dialog-button-text-color);font-size:var(--f7-dialog-button-font-size);height:var(--f7-dialog-button-height);line-height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);text-align:var(--f7-dialog-button-text-align);font-weight:var(--f7-dialog-button-font-weight);text-transform:var(--f7-dialog-button-text-transform);display:block;cursor:pointer}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{box-sizing:border-box;margin:0;margin-top:15px;border-radius:var(--f7-dialog-input-border-radius);-webkit-appearance:none;appearance:none;width:100%;display:block;font-family:inherit;box-shadow:none;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color)}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{overflow:hidden;-webkit-overflow-scrolling:auto}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{width:100%;padding:0 5px;-webkit-box-flex:1;-ms-flex:1}.ios .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:0;right:0;bottom:auto;left:auto;width:1px;height:100%;transform-origin:100% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button.dialog-button-bold{font-weight:500}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader{margin-top:15px}.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{height:48px;padding:6px 8px;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.25);border-radius:4px;min-width:64px;padding:0 8px;border:none;transition-duration:.3s;transform:translate3d(0,0,0)}.md .dialog-button.dialog-button-bold{font-weight:700}.md .dialog-button+.dialog-button{margin-left:4px}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:flex-end}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:12px}.md .dialog-input{padding:0;transition-duration:.2s;position:relative}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}.aurora .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.aurora .dialog-title+.dialog-text{margin-top:16px}.aurora .dialog-text{line-height:1.5}.aurora .dialog-buttons{padding:var(--f7-dialog-inner-padding);padding-top:0;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.aurora .dialog-button{border-radius:8px;min-width:64px;padding:0 10px;border:none;transition-duration:.3s;transform:translate3d(0,0,0);background:var(--f7-theme-color)}.aurora .dialog-button.dialog-button-bold{font-weight:600}.aurora .dialog-button+.dialog-button{margin-left:16px}.aurora .dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color,var(--f7-theme-color-shade))}.aurora.device-desktop .dialog-button:not(.active-state):not(.no-hover):hover{background-color:var(--f7-dialog-button-hover-bg-color,var(--f7-theme-color-tint))}.aurora .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:stretch}.aurora .dialog-buttons-vertical .dialog-button{margin-left:0;flex-shrink:0}.aurora .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:8px}.aurora div.dialog-input-field{margin-top:16px}.aurora div.dialog-input-field input.dialog-input{margin-top:0}.aurora div.dialog-input-field.input:after{display:none!important}.aurora .dialog-input{padding:0 8px;transition-duration:.2s;position:relative}.aurora .dialog-input+.dialog-input{margin-top:8px}.aurora .dialog-input-double+.dialog-input-double{margin-top:0}.aurora .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.aurora .dialog-preloader .dialog-inner,.aurora .dialog-preloader .dialog-title,.aurora .dialog-progress .dialog-inner,.aurora .dialog-progress .dialog-title{text-align:center}.aurora .dialog-preloader .dialog-text~.preloader,.aurora .dialog-preloader .dialog-title~.preloader{margin-top:16px}.aurora .dialog-progress .dialog-text~.progressbar,.aurora .dialog-progress .dialog-text~.progressbar-infinite,.aurora .dialog-progress .dialog-title~.progressbar,.aurora .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}
\ No newline at end of file
+:root{--f7-dialog-button-text-color:var(--f7-theme-color);--f7-dialog-button-text-align:center;--f7-dialog-input-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-dialog-text-color:#fff}.ios{--f7-dialog-box-shadow:none;--f7-dialog-width:270px;--f7-dialog-inner-padding:16px;--f7-dialog-border-radius:13px;--f7-dialog-text-align:center;--f7-dialog-font-size:14px;--f7-dialog-title-text-color:inherit;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:600;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:17px;--f7-dialog-button-height:44px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:400;--f7-dialog-button-text-transform:none;--f7-dialog-input-border-radius:4px;--f7-dialog-input-font-size:14px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-input-placeholder-color:#a9a9a9;--f7-dialog-preloader-size:34px;--f7-dialog-bg-color:rgba(255, 255, 255, 0.95);--f7-dialog-bg-color-rgb:255,255,255;--f7-dialog-text-color:#000;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.1);--f7-dialog-input-border-color:rgba(0, 0, 0, 0.3);--f7-dialog-border-divider-color:rgba(0, 0, 0, 0.2)}.ios .theme-dark,.ios.theme-dark{--f7-dialog-bg-color:rgba(45, 45, 45, 0.95);--f7-dialog-bg-color-rgb:45,45,45;--f7-dialog-button-pressed-bg-color:rgba(0, 0, 0, 0.2);--f7-dialog-border-divider-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15);--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.5)}.md{--f7-dialog-box-shadow:var(--f7-elevation-24);--f7-dialog-width:280px;--f7-dialog-inner-padding:24px;--f7-dialog-border-radius:4px;--f7-dialog-text-align:left;--f7-dialog-font-size:16px;--f7-dialog-title-font-size:20px;--f7-dialog-title-font-weight:500;--f7-dialog-title-line-height:1.3;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0.05em;--f7-dialog-button-font-weight:500;--f7-dialog-button-text-transform:uppercase;--f7-dialog-button-pressed-bg-color:rgba(var(--f7-theme-color-rgb), 0.15);--f7-dialog-input-border-radius:0px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:36px;--f7-dialog-input-border-color:transparent;--f7-dialog-input-border-width:0px;--f7-dialog-preloader-size:32px;--f7-dialog-bg-color:#fff;--f7-dialog-text-color:rgba(0, 0, 0, 0.54);--f7-dialog-title-text-color:#212121;--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.35)}.md .theme-dark,.md.theme-dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:transparent;--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54)}.aurora{--f7-dialog-box-shadow:0 0 20px 0 rgba(0, 0, 0, 0.15),0 25px 30px 0 rgba(0,0,0,0.35);--f7-dialog-width:300px;--f7-dialog-inner-padding:20px;--f7-dialog-border-radius:8px;--f7-dialog-text-align:left;--f7-dialog-font-size:14px;--f7-dialog-title-font-size:18px;--f7-dialog-title-font-weight:700;--f7-dialog-title-line-height:inherit;--f7-dialog-button-font-size:14px;--f7-dialog-button-height:36px;--f7-dialog-button-letter-spacing:0;--f7-dialog-button-font-weight:600;--f7-dialog-button-text-transform:uppercase;--f7-dialog-input-border-radius:8px;--f7-dialog-input-font-size:16px;--f7-dialog-input-height:32px;--f7-dialog-input-border-width:1px;--f7-dialog-preloader-size:24px;--f7-dialog-bg-color:#fff;--f7-dialog-title-text-color:inherit;--f7-dialog-text-color:#000;--f7-dialog-button-text-color:#fff;--f7-dialog-input-border-color:rgba(0, 0, 0, 0.2);--f7-dialog-input-placeholder-color:rgba(0, 0, 0, 0.32)}.aurora .theme-dark,.aurora.theme-dark{--f7-dialog-bg-color:#1c1c1d;--f7-dialog-title-text-color:#fff;--f7-dialog-input-bg-color:rgba(0, 0, 0, 0.25);--f7-dialog-input-placeholder-color:rgba(255, 255, 255, 0.54);--f7-dialog-input-border-color:rgba(255, 255, 255, 0.15)}.dialog{position:absolute;z-index:13500;left:50%;margin-top:0;top:50%;overflow:hidden;opacity:0;transform:translate3d(0,-50%,0) scale(1.185);transition-property:transform,opacity;display:none;transition-duration:.4s;box-shadow:var(--f7-dialog-box-shadow);width:var(--f7-dialog-width);margin-left:calc(-1 * var(--f7-dialog-width)/ 2);border-radius:var(--f7-dialog-border-radius);text-align:var(--f7-dialog-text-align);color:var(--f7-dialog-text-color);font-size:var(--f7-dialog-font-size);background:var(--f7-dialog-bg-color);will-change:transform,opacity}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-modals .dialog{background-color:rgba(var(--f7-dialog-bg-color-rgb),.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.dialog.modal-in{opacity:1;transform:translate3d(0,-50%,0) scale(1)}.dialog.modal-out{opacity:0;z-index:13499}.dialog.not-animated{transition-duration:0s}.dialog-inner{position:relative;padding:var(--f7-dialog-inner-padding)}.dialog-title{color:var(--f7-dialog-title-text-color);font-size:var(--f7-dialog-title-font-size);font-weight:var(--f7-dialog-title-font-weight);line-height:var(--f7-dialog-title-line-height)}.dialog-buttons{position:relative;display:flex}.dialog-buttons-vertical .dialog-buttons{display:block;height:auto!important}.dialog-button{box-sizing:border-box;overflow:hidden;position:relative;white-space:nowrap;text-overflow:ellipsis;color:var(--f7-dialog-button-text-color);font-size:var(--f7-dialog-button-font-size);height:var(--f7-dialog-button-height);line-height:var(--f7-dialog-button-height);letter-spacing:var(--f7-dialog-button-letter-spacing);text-align:var(--f7-dialog-button-text-align);font-weight:var(--f7-dialog-button-font-weight);text-transform:var(--f7-dialog-button-text-transform);display:block;cursor:pointer}.dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color)}.dialog-no-buttons .dialog-buttons{display:none}.dialog-input-field{position:relative}input.dialog-input[type]{box-sizing:border-box;margin:0;margin-top:15px;border-radius:var(--f7-dialog-input-border-radius);-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;display:block;font-family:inherit;box-shadow:none;font-size:var(--f7-dialog-input-font-size);height:var(--f7-dialog-input-height);background-color:var(--f7-dialog-input-bg-color);border:var(--f7-dialog-input-border-width) solid var(--f7-dialog-input-border-color)}input.dialog-input[type]::-webkit-input-placeholder{color:var(--f7-dialog-input-placeholder-color)}input.dialog-input[type]::placeholder{color:var(--f7-dialog-input-placeholder-color)}.dialog-input-double input.dialog-input{border-radius:var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius) 0 0}.dialog-input-double+.dialog-input-double input.dialog-input{border-radius:0 0 var(--f7-dialog-input-border-radius) var(--f7-dialog-input-border-radius)}.dialog-preloader .preloader{--f7-preloader-size:var(--f7-dialog-preloader-size)}html.with-modal-dialog .page-content{overflow:hidden;-webkit-overflow-scrolling:auto}.ios .dialog.modal-out{transform:translate3d(0,-50%,0) scale(1)}.ios .dialog-inner{border-radius:var(--f7-dialog-border-radius) var(--f7-dialog-border-radius) 0 0}.ios .dialog-inner:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-title+.dialog-text{margin-top:5px}.ios .dialog-buttons{height:44px;justify-content:center}.ios .dialog-button{width:100%;padding:0 5px;-webkit-box-flex:1;-ms-flex:1}.ios .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:0;right:0;bottom:auto;left:auto;width:1px;height:100%;transform-origin:100% 50%;transform:scaleX(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-button:first-child{border-radius:0 0 0 var(--f7-dialog-border-radius)}.ios .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) 0}.ios .dialog-button:last-child:after{display:none!important}.ios .dialog-button:first-child:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-button.dialog-button-bold{font-weight:500}.ios .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.ios .dialog-buttons-vertical .dialog-buttons{height:auto}.ios .dialog-buttons-vertical .dialog-button{border-radius:0}.ios .dialog-buttons-vertical .dialog-button:after{content:'';position:absolute;background-color:var(--f7-dialog-border-divider-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.ios .dialog-buttons-vertical .dialog-button:last-child{border-radius:0 0 var(--f7-dialog-border-radius) var(--f7-dialog-border-radius)}.ios .dialog-buttons-vertical .dialog-button:last-child:after{display:none!important}.ios .dialog-no-buttons .dialog-inner{border-radius:var(--f7-dialog-border-radius)}.ios .dialog-no-buttons .dialog-inner:after{display:none!important}.ios .dialog-input-field{margin-top:15px}.ios .dialog-input{padding:0 5px}.ios .dialog-input+.dialog-input{margin-top:5px}.ios .dialog-input-double+.dialog-input-double{margin-top:0}.ios .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.ios .dialog-preloader .dialog-text~.preloader,.ios .dialog-preloader .dialog-title~.preloader{margin-top:15px}.ios .dialog-progress .dialog-text~.progressbar,.ios .dialog-progress .dialog-text~.progressbar-infinite,.ios .dialog-progress .dialog-title~.progressbar,.ios .dialog-progress .dialog-title~.progressbar-infinite{margin-top:15px}.md .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.md .dialog-title+.dialog-text{margin-top:20px}.md .dialog-text{line-height:1.5}.md .dialog-buttons{height:48px;padding:6px 8px;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.md .dialog-button{--f7-touch-ripple-color:rgba(var(--f7-theme-color-rgb), 0.25);border-radius:4px;min-width:64px;padding:0 8px;border:none;transition-duration:.3s;transform:translate3d(0,0,0)}.md .dialog-button.dialog-button-bold{font-weight:700}.md .dialog-button+.dialog-button{margin-left:4px}.md .dialog-button[class*=color-]{--f7-dialog-button-text-color:var(--f7-theme-color)}.md .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:flex-end}.md .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:12px}.md .dialog-input{padding:0;transition-duration:.2s;position:relative}.md .dialog-input+.dialog-input{margin-top:16px}.md .dialog-preloader .dialog-inner,.md .dialog-preloader .dialog-title,.md .dialog-progress .dialog-inner,.md .dialog-progress .dialog-title{text-align:center}.md .dialog-preloader .dialog-text~.preloader,.md .dialog-preloader .dialog-title~.preloader{margin-top:20px}.md .dialog-progress .dialog-text~.progressbar,.md .dialog-progress .dialog-text~.progressbar-infinite,.md .dialog-progress .dialog-title~.progressbar,.md .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}.aurora .dialog.modal-out{transform:translate3d(0,-50%,0) scale(.815)}.aurora .dialog-title+.dialog-text{margin-top:16px}.aurora .dialog-text{line-height:1.5}.aurora .dialog-buttons{padding:var(--f7-dialog-inner-padding);padding-top:0;overflow:hidden;box-sizing:border-box;justify-content:flex-end}.aurora .dialog-button{border-radius:8px;min-width:64px;padding:0 10px;border:none;transition-duration:.3s;transform:translate3d(0,0,0);background:var(--f7-theme-color)}.aurora .dialog-button.dialog-button-bold{font-weight:600}.aurora .dialog-button+.dialog-button{margin-left:16px}.aurora .dialog-button.active-state{background-color:var(--f7-dialog-button-pressed-bg-color,var(--f7-theme-color-shade))}.aurora.device-desktop .dialog-button:not(.active-state):not(.no-hover):hover{background-color:var(--f7-dialog-button-hover-bg-color,var(--f7-theme-color-tint))}.aurora .dialog-buttons-vertical .dialog-buttons{display:flex;flex-direction:column;align-items:stretch}.aurora .dialog-buttons-vertical .dialog-button{margin-left:0;flex-shrink:0}.aurora .dialog-buttons-vertical .dialog-button+.dialog-button{margin-top:8px}.aurora div.dialog-input-field{margin-top:16px}.aurora div.dialog-input-field input.dialog-input{margin-top:0}.aurora div.dialog-input-field.input:after{display:none!important}.aurora .dialog-input{padding:0 8px;transition-duration:.2s;position:relative}.aurora .dialog-input+.dialog-input{margin-top:8px}.aurora .dialog-input-double+.dialog-input-double{margin-top:0}.aurora .dialog-input-double+.dialog-input-double .dialog-input{border-top:0;margin-top:0}.aurora .dialog-preloader .dialog-inner,.aurora .dialog-preloader .dialog-title,.aurora .dialog-progress .dialog-inner,.aurora .dialog-progress .dialog-title{text-align:center}.aurora .dialog-preloader .dialog-text~.preloader,.aurora .dialog-preloader .dialog-title~.preloader{margin-top:16px}.aurora .dialog-progress .dialog-text~.progressbar,.aurora .dialog-progress .dialog-text~.progressbar-infinite,.aurora .dialog-progress .dialog-title~.progressbar,.aurora .dialog-progress .dialog-title~.progressbar-infinite{margin-top:16px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/dialog/dialog.d.ts b/www/assets/framework7/components/dialog/dialog.d.ts
index 5aa19b52e..1898efc8f 100644
--- a/www/assets/framework7/components/dialog/dialog.d.ts
+++ b/www/assets/framework7/components/dialog/dialog.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Dialog {
interface Dialog extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/dialog/dialog.js b/www/assets/framework7/components/dialog/dialog.js
index d43e06b55..3d156c1a0 100644
--- a/www/assets/framework7/components/dialog/dialog.js
+++ b/www/assets/framework7/components/dialog/dialog.js
@@ -1,278 +1 @@
-import { extend, iosPreloaderContent, mdPreloaderContent, auroraPreloaderContent } from '../../shared/utils.js';
-import Dialog from './dialog-class.js';
-import ModalMethods from '../../shared/modal-methods.js';
-export default {
- name: 'dialog',
- params: {
- dialog: {
- title: undefined,
- buttonOk: 'OK',
- buttonCancel: 'Cancel',
- usernamePlaceholder: 'Username',
- passwordPlaceholder: 'Password',
- preloaderTitle: 'Loading... ',
- progressTitle: 'Loading... ',
- backdrop: true,
- closeByBackdropClick: false,
- destroyPredefinedDialogs: true,
- keyboardActions: true,
- autoFocus: true
- }
- },
- static: {
- Dialog
- },
-
- create() {
- const app = this;
-
- function defaultDialogTitle() {
- return app.params.dialog.title || app.name;
- }
-
- const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;
- const keyboardActions = app.params.dialog.keyboardActions;
- const autoFocus = app.params.dialog.autoFocus;
- const autoFocusHandler = autoFocus ? {
- on: {
- opened(dialog) {
- dialog.$el.find('input').eq(0).focus();
- }
-
- }
- } : {};
- app.dialog = extend(ModalMethods({
- app,
- constructor: Dialog,
- defaultSelector: '.dialog.modal-in'
- }), {
- // Shortcuts
- alert() {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- let [text, title, callbackOk] = args;
-
- if (args.length === 2 && typeof args[1] === 'function') {
- [text, callbackOk, title] = args;
- }
-
- return new Dialog(app, {
- title: typeof title === 'undefined' ? defaultDialogTitle() : title,
- text,
- buttons: [{
- text: app.params.dialog.buttonOk,
- bold: true,
- onClick: callbackOk,
- keyCodes: keyboardActions ? [13, 27] : null
- }],
- destroyOnClose
- }).open();
- },
-
- prompt() {
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- args[_key2] = arguments[_key2];
- }
-
- let [text, title, callbackOk, callbackCancel, defaultValue] = args;
-
- if (typeof args[1] === 'function') {
- [text, callbackOk, callbackCancel, defaultValue, title] = args;
- }
-
- defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;
- return new Dialog(app, {
- title: typeof title === 'undefined' ? defaultDialogTitle() : title,
- text,
- content: ``,
- buttons: [{
- text: app.params.dialog.buttonCancel,
- keyCodes: keyboardActions ? [27] : null,
- color: app.theme === 'aurora' ? 'gray' : null
- }, {
- text: app.params.dialog.buttonOk,
- bold: true,
- keyCodes: keyboardActions ? [13] : null
- }],
-
- onClick(dialog, index) {
- const inputValue = dialog.$el.find('.dialog-input').val();
- if (index === 0 && callbackCancel) callbackCancel(inputValue);
- if (index === 1 && callbackOk) callbackOk(inputValue);
- },
-
- destroyOnClose,
- ...autoFocusHandler
- }).open();
- },
-
- confirm() {
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
- args[_key3] = arguments[_key3];
- }
-
- let [text, title, callbackOk, callbackCancel] = args;
-
- if (typeof args[1] === 'function') {
- [text, callbackOk, callbackCancel, title] = args;
- }
-
- return new Dialog(app, {
- title: typeof title === 'undefined' ? defaultDialogTitle() : title,
- text,
- buttons: [{
- text: app.params.dialog.buttonCancel,
- onClick: callbackCancel,
- keyCodes: keyboardActions ? [27] : null,
- color: app.theme === 'aurora' ? 'gray' : null
- }, {
- text: app.params.dialog.buttonOk,
- bold: true,
- onClick: callbackOk,
- keyCodes: keyboardActions ? [13] : null
- }],
- destroyOnClose
- }).open();
- },
-
- login() {
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
- args[_key4] = arguments[_key4];
- }
-
- let [text, title, callbackOk, callbackCancel] = args;
-
- if (typeof args[1] === 'function') {
- [text, callbackOk, callbackCancel, title] = args;
- }
-
- return new Dialog(app, {
- title: typeof title === 'undefined' ? defaultDialogTitle() : title,
- text,
- // prettier-ignore
- content: `
-
-
-
-
-
-
`,
- buttons: [{
- text: app.params.dialog.buttonCancel,
- keyCodes: keyboardActions ? [27] : null,
- color: app.theme === 'aurora' ? 'gray' : null
- }, {
- text: app.params.dialog.buttonOk,
- bold: true,
- keyCodes: keyboardActions ? [13] : null
- }],
-
- onClick(dialog, index) {
- const username = dialog.$el.find('[name="dialog-username"]').val();
- const password = dialog.$el.find('[name="dialog-password"]').val();
- if (index === 0 && callbackCancel) callbackCancel(username, password);
- if (index === 1 && callbackOk) callbackOk(username, password);
- },
-
- destroyOnClose,
- ...autoFocusHandler
- }).open();
- },
-
- password() {
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
- args[_key5] = arguments[_key5];
- }
-
- let [text, title, callbackOk, callbackCancel] = args;
-
- if (typeof args[1] === 'function') {
- [text, callbackOk, callbackCancel, title] = args;
- }
-
- return new Dialog(app, {
- title: typeof title === 'undefined' ? defaultDialogTitle() : title,
- text,
- // prettier-ignore
- content: `
-
-
-
`,
- buttons: [{
- text: app.params.dialog.buttonCancel,
- keyCodes: keyboardActions ? [27] : null,
- color: app.theme === 'aurora' ? 'gray' : null
- }, {
- text: app.params.dialog.buttonOk,
- bold: true,
- keyCodes: keyboardActions ? [13] : null
- }],
-
- onClick(dialog, index) {
- const password = dialog.$el.find('[name="dialog-password"]').val();
- if (index === 0 && callbackCancel) callbackCancel(password);
- if (index === 1 && callbackOk) callbackOk(password);
- },
-
- destroyOnClose,
- ...autoFocusHandler
- }).open();
- },
-
- preloader(title, color) {
- const preloaders = {
- iosPreloaderContent,
- mdPreloaderContent,
- auroraPreloaderContent
- };
- const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';
- return new Dialog(app, {
- title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,
- // prettier-ignore
- content: `${preloaderInner}
`,
- cssClass: 'dialog-preloader',
- destroyOnClose
- }).open();
- },
-
- progress() {
- for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
- args[_key6] = arguments[_key6];
- }
-
- let [title, progress, color] = args;
-
- if (args.length === 2) {
- if (typeof args[0] === 'number') {
- [progress, color, title] = args;
- } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {
- [title, color, progress] = args;
- }
- } else if (args.length === 1) {
- if (typeof args[0] === 'number') {
- [progress, title, color] = args;
- }
- }
-
- const infinite = typeof progress === 'undefined';
- const dialog = new Dialog(app, {
- title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,
- cssClass: 'dialog-progress',
- // prettier-ignore
- content: `
-
- ${!infinite ? '' : ''}
-
- `,
- destroyOnClose
- });
- if (!infinite) dialog.setProgress(progress);
- return dialog.open();
- }
-
- });
- }
-
-};
\ No newline at end of file
+(function framework7ComponentLoader(o,e){void 0===e&&(e=!0);var t=o.$,n=o.utils,a=o.getDevice,r=(o.getSupport,o.Class,o.Modal),l=(o.ConstructorMethods,o.ModalMethods);function i(o){this.wrapped=o}function s(o){var e,t;function n(e,t){try{var r=o[e](t),l=r.value,s=l instanceof i;Promise.resolve(s?l.wrapped:l).then((function(o){s?n("return"===e?"return":"next",o):a(r.done?"return":"normal",o)}),(function(o){n("throw",o)}))}catch(o){a("throw",o)}}function a(o,a){switch(o){case"return":e.resolve({value:a,done:!0});break;case"throw":e.reject(a);break;default:e.resolve({value:a,done:!1})}(e=e.next)?n(e.key,e.arg):t=null}this._invoke=function(o,a){return new Promise((function(r,l){var i={key:o,arg:a,resolve:r,reject:l,next:null};t?t=t.next=i:(e=t=i,n(o,a))}))},"function"!=typeof o.return&&(this.return=void 0)}function d(){return(d=Object.assign||function(o){for(var e=1;e0&&b.push("dialog-buttons-"+m.length),k&&b.push("dialog-buttons-vertical"),h&&b.push(h);var w="";m.length>0&&(w=$jsx("div",{class:"dialog-buttons"},m.map((function(o){return $jsx("span",{class:"dialog-button"+(o.bold?" dialog-button-bold":"")+(o.color?" color-"+o.color:"")+(o.cssClass?" "+o.cssClass:"")},o.text)}))));var x=$jsx("div",{class:b.join(" ")},$jsx("div",{class:"dialog-inner"},g&&$jsx("div",{class:"dialog-title"},g),v&&$jsx("div",{class:"dialog-text"},v),y),w);i=t(x)}if(i&&i.length>0&&i[0].f7Modal)return i[0].f7Modal||u(r);if(0===i.length)return c.destroy()||u(r);function O(o){var e=t(this).index(),n=m[e];n.onClick&&n.onClick(c,o),c.params.onClick&&c.params.onClick(c,e),!1!==n.close&&c.close()}function P(o){var e=o.keyCode;m.forEach((function(t,n){t.keyCodes&&t.keyCodes.indexOf(e)>=0&&(document.activeElement&&document.activeElement.blur(),t.onClick&&t.onClick(c,o),c.params.onClick&&c.params.onClick(c,n),!1!==t.close&&c.close())}))}function B(o){var e=o.target;0===t(e).closest(c.el).length&&c.params.closeByBackdropClick&&c.backdropEl&&c.backdropEl===e&&c.close()}return C&&0===(s=e.$el.children(".dialog-backdrop")).length&&(s=t(''),e.$el.append(s)),m&&m.length>0&&(c.on("open",(function(){i.find(".dialog-button").each((function(o,e){m[e].keyCodes&&(d=!0),t(o).on("click",O)})),!d||f.ios||f.android||f.cordova||f.capacitor||t(document).on("keydown",P)})),c.on("close",(function(){i.find(".dialog-button").each((function(o){t(o).off("click",O)})),!d||f.ios||f.android||f.cordova||f.capacitor||t(document).off("keydown",P),d=!1}))),p(c,{app:e,$el:i,el:i[0],$backdropEl:s,backdropEl:s&&s[0],type:"dialog",setProgress:function(o,t){return e.progressbar.set(i.find(".progressbar"),o,t),c},setText:function(o){var e=i.find(".dialog-text");return 0===e.length&&(e=t(''),void 0!==g?e.insertAfter(i.find(".dialog-title")):i.find(".dialog-inner").prepend(e)),e.html(o),c.params.text=o,c},setTitle:function(o){var e=i.find(".dialog-title");return 0===e.length&&(e=t(''),i.find(".dialog-inner").prepend(e)),e.html(o),c.params.title=o,c}}),c.on("opened",(function(){c.params.closeByBackdropClick&&e.on("click",B)})),c.on("close",(function(){c.params.closeByBackdropClick&&e.off("click",B)})),i[0].f7Modal=c,c.params.destroyOnClose&&c.once("closed",(function(){setTimeout((function(){c.destroy()}),0)})),c||u(r)}return n=o,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,c(e,n),r}(r),m={name:"dialog",params:{dialog:{title:void 0,buttonOk:"OK",buttonCancel:"Cancel",usernamePlaceholder:"Username",passwordPlaceholder:"Password",preloaderTitle:"Loading... ",progressTitle:"Loading... ",backdrop:!0,closeByBackdropClick:!1,destroyPredefinedDialogs:!0,keyboardActions:!0,autoFocus:!0}},static:{Dialog:y},create:function(){var o=this;function e(){return o.params.dialog.title||o.name}var t=o.params.dialog.destroyPredefinedDialogs,n=o.params.dialog.keyboardActions,a=o.params.dialog.autoFocus?{on:{opened:function(o){o.$el.find("input").eq(0).focus()}}}:{};o.dialog=p(l({app:o,constructor:y,defaultSelector:".dialog.modal-in"}),{alert:function(){for(var a=arguments.length,r=new Array(a),l=0;l',buttons:[{text:o.params.dialog.buttonCancel,keyCodes:n?[27]:null,color:"aurora"===o.theme?"gray":null},{text:o.params.dialog.buttonOk,bold:!0,keyCodes:n?[13]:null}],onClick:function(o,e){var t=o.$el.find(".dialog-input").val();0===e&&p&&p(t),1===e&&u&&u(t)},destroyOnClose:t},a)).open()},confirm:function(){for(var a=arguments.length,r=new Array(a),l=0;l\n \n \n \n \n
',buttons:[{text:o.params.dialog.buttonCancel,keyCodes:n?[27]:null,color:"aurora"===o.theme?"gray":null},{text:o.params.dialog.buttonOk,bold:!0,keyCodes:n?[13]:null}],onClick:function(o,e){var t=o.$el.find('[name="dialog-username"]').val(),n=o.$el.find('[name="dialog-password"]').val();0===e&&p&&p(t,n),1===e&&u&&u(t,n)},destroyOnClose:t},a)).open()},password:function(){for(var r=arguments.length,l=new Array(r),i=0;i\n \n ',buttons:[{text:o.params.dialog.buttonCancel,keyCodes:n?[27]:null,color:"aurora"===o.theme?"gray":null},{text:o.params.dialog.buttonOk,bold:!0,keyCodes:n?[13]:null}],onClick:function(o,e){var t=o.$el.find('[name="dialog-password"]').val();0===e&&p&&p(t),1===e&&u&&u(t)},destroyOnClose:t},a)).open()},preloader:function(e,n){var a={iosPreloaderContent:f,mdPreloaderContent:g,auroraPreloaderContent:v}[o.theme+"PreloaderContent"]||"";return new y(o,{title:null==e?o.params.dialog.preloaderTitle:e,content:''+a+"
",cssClass:"dialog-preloader",destroyOnClose:t}).open()},progress:function(){for(var e=arguments.length,n=new Array(e),a=0;a\n '+(s?"":"")+"\n \n ",destroyOnClose:t});return s||d.setProgress(l),d.open()}})}};if(e){if(o.prototype.modules&&o.prototype.modules[m.name])return;o.use(m),o.instance&&(o.instance.useModuleParams(m,o.instance.params),o.instance.useModule(m))}return m}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/dialog/dialog.lazy.js b/www/assets/framework7/components/dialog/dialog.lazy.js
deleted file mode 100644
index affd7bf96..000000000
--- a/www/assets/framework7/components/dialog/dialog.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(o,e){void 0===e&&(e=!0);var t=o.$,l=o.utils,a=o.getDevice,n=(o.getSupport,o.Class,o.Modal),s=(o.ConstructorMethods,o.ModalMethods),r=o.$jsx,i=l.extend,d=l.iosPreloaderContent,c=l.mdPreloaderContent,p=l.auroraPreloaderContent;class u extends n{constructor(o,e){const l=i({title:o.params.dialog.title,text:void 0,content:"",buttons:[],verticalButtons:!1,onClick:void 0,cssClass:void 0,destroyOnClose:!1,on:{}},e);void 0===l.closeByBackdropClick&&(l.closeByBackdropClick=o.params.dialog.closeByBackdropClick),void 0===l.backdrop&&(l.backdrop=o.params.dialog.backdrop),super(o,l);const n=this,s=a(),{title:d,text:c,content:p,buttons:u,verticalButtons:g,cssClass:m,backdrop:k}=l;let f,C,y;if(n.params=l,n.params.el)f=t(n.params.el);else{const o=["dialog"];0===u.length&&o.push("dialog-no-buttons"),u.length>0&&o.push(`dialog-buttons-${u.length}`),g&&o.push("dialog-buttons-vertical"),m&&o.push(m);let e="";u.length>0&&(e=r("div",{class:"dialog-buttons"},u.map((o=>r("span",{class:`dialog-button${o.bold?" dialog-button-bold":""}${o.color?` color-${o.color}`:""}${o.cssClass?` ${o.cssClass}`:""}`},o.text)))));const l=r("div",{class:o.join(" ")},r("div",{class:"dialog-inner"},d&&r("div",{class:"dialog-title"},d),c&&r("div",{class:"dialog-text"},c),p),e);f=t(l)}if(f&&f.length>0&&f[0].f7Modal)return f[0].f7Modal;if(0===f.length)return n.destroy();function v(o){const e=t(this).index(),l=u[e];l.onClick&&l.onClick(n,o),n.params.onClick&&n.params.onClick(n,e),!1!==l.close&&n.close()}function b(o){const e=o.keyCode;u.forEach(((t,l)=>{t.keyCodes&&t.keyCodes.indexOf(e)>=0&&(document.activeElement&&document.activeElement.blur(),t.onClick&&t.onClick(n,o),n.params.onClick&&n.params.onClick(n,l),!1!==t.close&&n.close())}))}function h(o){const e=o.target;0===t(e).closest(n.el).length&&n.params.closeByBackdropClick&&n.backdropEl&&n.backdropEl===e&&n.close()}return k&&(C=o.$el.children(".dialog-backdrop"),0===C.length&&(C=t(''),o.$el.append(C))),u&&u.length>0&&(n.on("open",(()=>{f.find(".dialog-button").each(((o,e)=>{u[e].keyCodes&&(y=!0),t(o).on("click",v)})),!y||s.ios||s.android||s.cordova||s.capacitor||t(document).on("keydown",b)})),n.on("close",(()=>{f.find(".dialog-button").each((o=>{t(o).off("click",v)})),!y||s.ios||s.android||s.cordova||s.capacitor||t(document).off("keydown",b),y=!1}))),i(n,{app:o,$el:f,el:f[0],$backdropEl:C,backdropEl:C&&C[0],type:"dialog",setProgress:(e,t)=>(o.progressbar.set(f.find(".progressbar"),e,t),n),setText(o){let e=f.find(".dialog-text");return 0===e.length&&(e=t(''),void 0!==d?e.insertAfter(f.find(".dialog-title")):f.find(".dialog-inner").prepend(e)),e.html(o),n.params.text=o,n},setTitle(o){let e=f.find(".dialog-title");return 0===e.length&&(e=t(''),f.find(".dialog-inner").prepend(e)),e.html(o),n.params.title=o,n}}),n.on("opened",(()=>{n.params.closeByBackdropClick&&o.on("click",h)})),n.on("close",(()=>{n.params.closeByBackdropClick&&o.off("click",h)})),f[0].f7Modal=n,n.params.destroyOnClose&&n.once("closed",(()=>{setTimeout((()=>{n.destroy()}),0)})),n}}var g={name:"dialog",params:{dialog:{title:void 0,buttonOk:"OK",buttonCancel:"Cancel",usernamePlaceholder:"Username",passwordPlaceholder:"Password",preloaderTitle:"Loading... ",progressTitle:"Loading... ",backdrop:!0,closeByBackdropClick:!1,destroyPredefinedDialogs:!0,keyboardActions:!0,autoFocus:!0}},static:{Dialog:u},create(){const o=this;function e(){return o.params.dialog.title||o.name}const t=o.params.dialog.destroyPredefinedDialogs,l=o.params.dialog.keyboardActions,a=o.params.dialog.autoFocus?{on:{opened(o){o.$el.find("input").eq(0).focus()}}}:{};o.dialog=i(s({app:o,constructor:u,defaultSelector:".dialog.modal-in"}),{alert(){for(var a=arguments.length,n=new Array(a),s=0;s`,buttons:[{text:o.params.dialog.buttonCancel,keyCodes:l?[27]:null,color:"aurora"===o.theme?"gray":null},{text:o.params.dialog.buttonOk,bold:!0,keyCodes:l?[13]:null}],onClick(o,e){const t=o.$el.find(".dialog-input").val();0===e&&p&&p(t),1===e&&c&&c(t)},destroyOnClose:t,...a}).open()},confirm(){for(var a=arguments.length,n=new Array(a),s=0;s\n \n \n \n \n
`,buttons:[{text:o.params.dialog.buttonCancel,keyCodes:l?[27]:null,color:"aurora"===o.theme?"gray":null},{text:o.params.dialog.buttonOk,bold:!0,keyCodes:l?[13]:null}],onClick(o,e){const t=o.$el.find('[name="dialog-username"]').val(),l=o.$el.find('[name="dialog-password"]').val();0===e&&p&&p(t,l),1===e&&c&&c(t,l)},destroyOnClose:t,...a}).open()},password(){for(var n=arguments.length,s=new Array(n),r=0;r\n \n `,buttons:[{text:o.params.dialog.buttonCancel,keyCodes:l?[27]:null,color:"aurora"===o.theme?"gray":null},{text:o.params.dialog.buttonOk,bold:!0,keyCodes:l?[13]:null}],onClick(o,e){const t=o.$el.find('[name="dialog-password"]').val();0===e&&p&&p(t),1===e&&c&&c(t)},destroyOnClose:t,...a}).open()},preloader(e,l){const a={iosPreloaderContent:d,mdPreloaderContent:c,auroraPreloaderContent:p}[`${o.theme}PreloaderContent`]||"";return new u(o,{title:null==e?o.params.dialog.preloaderTitle:e,content:`${a}
`,cssClass:"dialog-preloader",destroyOnClose:t}).open()},progress(){for(var e=arguments.length,l=new Array(e),a=0;a\n ${i?"":""}\n \n `,destroyOnClose:t});return i||d.setProgress(s),d.open()}})}};if(e){if(o.prototype.modules&&o.prototype.modules[g.name])return;o.use(g),o.instance&&(o.instance.useModuleParams(g,o.instance.params),o.instance.useModule(g))}return g}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/dialog/package.json b/www/assets/framework7/components/dialog/package.json
new file mode 100644
index 000000000..5e262813a
--- /dev/null
+++ b/www/assets/framework7/components/dialog/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/dialog",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/dialog/dialog.js",
+ "module": "../../esm/components/dialog/dialog.js",
+ "jsnext:main": "../../esm/components/dialog/dialog.js",
+ "typings": "../../types/components/dialog/dialog.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/elevation/elevation.d.ts b/www/assets/framework7/components/elevation/elevation.d.ts
index 56999d39c..87ce859c0 100644
--- a/www/assets/framework7/components/elevation/elevation.d.ts
+++ b/www/assets/framework7/components/elevation/elevation.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Elevation {
interface AppMethods {}
diff --git a/www/assets/framework7/components/elevation/elevation.js b/www/assets/framework7/components/elevation/elevation.js
index c7575790b..4542bb420 100644
--- a/www/assets/framework7/components/elevation/elevation.js
+++ b/www/assets/framework7/components/elevation/elevation.js
@@ -1,3 +1 @@
-export default {
- name: 'elevation'
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods;var t={name:"elevation"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/elevation/elevation.lazy.js b/www/assets/framework7/components/elevation/elevation.lazy.js
deleted file mode 100644
index b64e94b68..000000000
--- a/www/assets/framework7/components/elevation/elevation.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);e.$,e.utils,e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx;var t={name:"elevation"};if(o){if(e.prototype.modules&&e.prototype.modules[t.name])return;e.use(t),e.instance&&(e.instance.useModuleParams(t,e.instance.params),e.instance.useModule(t))}return t}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/elevation/package.json b/www/assets/framework7/components/elevation/package.json
new file mode 100644
index 000000000..8f6563cf8
--- /dev/null
+++ b/www/assets/framework7/components/elevation/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/elevation",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/elevation/elevation.js",
+ "module": "../../esm/components/elevation/elevation.js",
+ "jsnext:main": "../../esm/components/elevation/elevation.js",
+ "typings": "../../types/components/elevation/elevation.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/fab/fab-rtl.css b/www/assets/framework7/components/fab/fab-rtl.css
index 0cdbd0fe0..4642ad2c2 100644
--- a/www/assets/framework7/components/fab/fab-rtl.css
+++ b/www/assets/framework7/components/fab/fab-rtl.css
@@ -1 +1 @@
-:root{--f7-fab-margin:16px;--f7-fab-text-color:#fff;--f7-fab-extended-text-font-size:14px;--f7-fab-extended-text-padding:0 20px;--f7-fab-label-bg-color:#fff;--f7-fab-label-text-color:#333;--f7-fab-label-border-radius:4px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0, 0, 0, 0.4);--f7-fab-extended-size:50px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.md{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0.05em;--f7-fab-label-box-shadow:var(--f7-elevation-3)}.aurora{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{background-color:var(--f7-fab-bg-color,var(--f7-theme-color));width:var(--f7-fab-size);height:var(--f7-fab-size);box-shadow:var(--f7-fab-box-shadow);border-radius:calc(var(--f7-fab-size)/ 2);position:relative;transition-duration:.3s;display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:1;color:var(--f7-fab-text-color)}.fab-buttons a.active-state,.fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade))}.fab>a i{position:absolute;left:50%;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5);opacity:0}.fab-buttons a{border-radius:calc(var(--f7-fab-button-size)/ 2);width:var(--f7-fab-button-size);height:var(--f7-fab-button-size)}.fab-buttons{display:flex;visibility:hidden;pointer-events:none;position:absolute}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5);opacity:0}.fab-opened:not(.fab-morph)>a i+i{transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);opacity:1}.fab-opened .fab-buttons{visibility:visible;pointer-events:auto}.fab-opened .fab-buttons a{opacity:1;transform:translate3d(0,0px,0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:0.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:150ms}.fab-opened .fab-buttons a:nth-child(5){transition-delay:0.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:250ms}.fab-buttons-bottom,.fab-buttons-top{left:50%;width:var(--f7-fab-button-size);margin-left:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-top{bottom:100%;margin-bottom:16px;flex-direction:column-reverse}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{top:100%;margin-top:16px;flex-direction:column}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{top:50%;height:var(--f7-fab-button-size);margin-top:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-left{right:100%;margin-right:16px}.fab-buttons-left a{transform:translate3d(8px,0px,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px;flex-direction:row-reverse}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{left:0%;top:0%;width:100%;height:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);bottom:100%;margin-bottom:16px;transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-left:16px;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);top:100%;margin-top:16px;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){right:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-right:16px;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{border-radius:calc(var(--f7-fab-size)/ 2);background:var(--f7-fab-bg-color,var(--f7-theme-color));box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{box-shadow:none;background:0 0!important}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:250ms}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{width:auto;min-width:var(--f7-fab-extended-size)}.fab-extended>a{width:100%;height:var(--f7-fab-extended-size)}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/ 2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);padding:var(--f7-fab-extended-text-padding);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);text-transform:uppercase}.fab-label-button{overflow:visible!important}.fab-label{position:absolute;top:50%;padding:var(--f7-fab-label-padding);border-radius:var(--f7-fab-label-border-radius);background:var(--f7-fab-label-bg-color);color:var(--f7-fab-label-text-color);box-shadow:var(--f7-fab-label-box-shadow);white-space:nowrap;transform:translateY(-50%);pointer-events:none;font-size:var(--f7-fab-label-font-size)}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{right:100%;margin-right:8px}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-labels.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-right-bottom,.tabbar-labels.toolbar-bottom~* .fab-center-bottom,.tabbar-labels.toolbar-bottom~* .fab-left-bottom,.tabbar-labels.toolbar-bottom~* .fab-right-bottom,.tabbar-labels.toolbar-bottom~.fab-center-bottom,.tabbar-labels.toolbar-bottom~.fab-left-bottom,.tabbar-labels.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-labels-height)}.ios .tabbar-labels.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-top-md~.fab-center-bottom,.md .tabbar-labels.toolbar-top-md~.fab-left-bottom,.md .tabbar-labels.toolbar-top-md~.fab-right-bottom,.tabbar-labels.toolbar-top~* .fab-center-bottom,.tabbar-labels.toolbar-top~* .fab-left-bottom,.tabbar-labels.toolbar-top~* .fab-right-bottom,.tabbar-labels.toolbar-top~.fab-center-bottom,.tabbar-labels.toolbar-top~.fab-left-bottom,.tabbar-labels.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-labels-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbar+.toolbar-top.tabbar-labels~* .fab-center-top,.navbar+.toolbar-top.tabbar-labels~* .fab-left-top,.navbar+.toolbar-top.tabbar-labels~* .fab-right-top,.navbar+.toolbar-top.tabbar-labels~.fab-center-top,.navbar+.toolbar-top.tabbar-labels~.fab-left-top,.navbar+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbars+.toolbar-top.tabbar-labels~* .fab-center-top,.navbars+.toolbar-top.tabbar-labels~* .fab-left-top,.navbars+.toolbar-top.tabbar-labels~* .fab-right-top,.navbars+.toolbar-top.tabbar-labels~.fab-center-top,.navbars+.toolbar-top.tabbar-labels~.fab-left-top,.navbars+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{transition-duration:0s}
\ No newline at end of file
+:root{--f7-fab-margin:16px;--f7-fab-text-color:#fff;--f7-fab-extended-text-font-size:14px;--f7-fab-extended-text-padding:0 20px;--f7-fab-label-bg-color:#fff;--f7-fab-label-text-color:#333;--f7-fab-label-border-radius:4px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0, 0, 0, 0.4);--f7-fab-extended-size:50px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.md{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0.05em;--f7-fab-label-box-shadow:var(--f7-elevation-3)}.aurora{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{background-color:var(--f7-fab-bg-color,var(--f7-theme-color));width:var(--f7-fab-size);height:var(--f7-fab-size);box-shadow:var(--f7-fab-box-shadow);border-radius:calc(var(--f7-fab-size)/ 2);position:relative;transition-duration:.3s;display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:1;color:var(--f7-fab-text-color)}.fab-buttons a.active-state,.fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade))}.fab>a i{position:absolute;left:50%;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5);opacity:0}.fab-buttons a{border-radius:calc(var(--f7-fab-button-size)/ 2);width:var(--f7-fab-button-size);height:var(--f7-fab-button-size)}.fab-buttons{display:flex;visibility:hidden;pointer-events:none;position:absolute}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5);opacity:0}.fab-opened:not(.fab-morph)>a i+i{transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);opacity:1}.fab-opened .fab-buttons{visibility:visible;pointer-events:auto}.fab-opened .fab-buttons a{opacity:1;transform:translate3d(0,0px,0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:0.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:150ms}.fab-opened .fab-buttons a:nth-child(5){transition-delay:0.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:250ms}.fab-buttons-bottom,.fab-buttons-top{left:50%;width:var(--f7-fab-button-size);margin-left:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-top{bottom:100%;margin-bottom:16px;flex-direction:column-reverse}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{top:100%;margin-top:16px;flex-direction:column}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{top:50%;height:var(--f7-fab-button-size);margin-top:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-left{right:100%;margin-right:16px}.fab-buttons-left a{transform:translate3d(8px,0px,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px;flex-direction:row-reverse}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{left:0%;top:0%;width:100%;height:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:nth-child(1){left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);bottom:100%;margin-bottom:16px;transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-left:16px;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);top:100%;margin-top:16px;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){right:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-right:16px;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{border-radius:calc(var(--f7-fab-size)/ 2);background:var(--f7-fab-bg-color,var(--f7-theme-color));box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{box-shadow:none;background:0 0!important}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:250ms}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{width:auto;min-width:var(--f7-fab-extended-size)}.fab-extended>a{width:100%;height:var(--f7-fab-extended-size)}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/ 2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);padding:var(--f7-fab-extended-text-padding);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);text-transform:uppercase}.fab-label-button{overflow:visible!important}.fab-label{position:absolute;top:50%;padding:var(--f7-fab-label-padding);border-radius:var(--f7-fab-label-border-radius);background:var(--f7-fab-label-bg-color);color:var(--f7-fab-label-text-color);box-shadow:var(--f7-fab-label-box-shadow);white-space:nowrap;transform:translateY(-50%);pointer-events:none;font-size:var(--f7-fab-label-font-size)}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{right:100%;margin-right:8px}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-labels.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-right-bottom,.tabbar-labels.toolbar-bottom~* .fab-center-bottom,.tabbar-labels.toolbar-bottom~* .fab-left-bottom,.tabbar-labels.toolbar-bottom~* .fab-right-bottom,.tabbar-labels.toolbar-bottom~.fab-center-bottom,.tabbar-labels.toolbar-bottom~.fab-left-bottom,.tabbar-labels.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-labels-height)}.ios .tabbar-labels.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-top-md~.fab-center-bottom,.md .tabbar-labels.toolbar-top-md~.fab-left-bottom,.md .tabbar-labels.toolbar-top-md~.fab-right-bottom,.tabbar-labels.toolbar-top~* .fab-center-bottom,.tabbar-labels.toolbar-top~* .fab-left-bottom,.tabbar-labels.toolbar-top~* .fab-right-bottom,.tabbar-labels.toolbar-top~.fab-center-bottom,.tabbar-labels.toolbar-top~.fab-left-bottom,.tabbar-labels.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-labels-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbar+.toolbar-top.tabbar-labels~* .fab-center-top,.navbar+.toolbar-top.tabbar-labels~* .fab-left-top,.navbar+.toolbar-top.tabbar-labels~* .fab-right-top,.navbar+.toolbar-top.tabbar-labels~.fab-center-top,.navbar+.toolbar-top.tabbar-labels~.fab-left-top,.navbar+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbars+.toolbar-top.tabbar-labels~* .fab-center-top,.navbars+.toolbar-top.tabbar-labels~* .fab-left-top,.navbars+.toolbar-top.tabbar-labels~* .fab-right-top,.navbars+.toolbar-top.tabbar-labels~.fab-center-top,.navbars+.toolbar-top.tabbar-labels~.fab-left-top,.navbars+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{transition-duration:0s}
\ No newline at end of file
diff --git a/www/assets/framework7/components/fab/fab.css b/www/assets/framework7/components/fab/fab.css
index ba24064a6..ec9069f71 100644
--- a/www/assets/framework7/components/fab/fab.css
+++ b/www/assets/framework7/components/fab/fab.css
@@ -1 +1 @@
-:root{--f7-fab-margin:16px;--f7-fab-text-color:#fff;--f7-fab-extended-text-font-size:14px;--f7-fab-extended-text-padding:0 20px;--f7-fab-label-bg-color:#fff;--f7-fab-label-text-color:#333;--f7-fab-label-border-radius:4px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0, 0, 0, 0.4);--f7-fab-extended-size:50px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.md{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0.05em;--f7-fab-label-box-shadow:var(--f7-elevation-3)}.aurora{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{background-color:var(--f7-fab-bg-color,var(--f7-theme-color));width:var(--f7-fab-size);height:var(--f7-fab-size);box-shadow:var(--f7-fab-box-shadow);border-radius:calc(var(--f7-fab-size)/ 2);position:relative;transition-duration:.3s;display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:1;color:var(--f7-fab-text-color)}.fab-buttons a.active-state,.fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade))}.fab>a i{position:absolute;left:50%;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5);opacity:0}.fab-buttons a{border-radius:calc(var(--f7-fab-button-size)/ 2);width:var(--f7-fab-button-size);height:var(--f7-fab-button-size)}.fab-buttons{display:flex;visibility:hidden;pointer-events:none;position:absolute}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5);opacity:0}.fab-opened:not(.fab-morph)>a i+i{transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);opacity:1}.fab-opened .fab-buttons{visibility:visible;pointer-events:auto}.fab-opened .fab-buttons a{opacity:1;transform:translate3d(0,0px,0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:0.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:150ms}.fab-opened .fab-buttons a:nth-child(5){transition-delay:0.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:250ms}.fab-buttons-bottom,.fab-buttons-top{left:50%;width:var(--f7-fab-button-size);margin-left:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-top{bottom:100%;margin-bottom:16px;flex-direction:column-reverse}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{top:100%;margin-top:16px;flex-direction:column}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{top:50%;height:var(--f7-fab-button-size);margin-top:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-left{right:100%;margin-right:16px;flex-direction:row-reverse}.fab-buttons-left a{transform:translate3d(8px,0px,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{left:0%;top:0%;width:100%;height:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:first-child{left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);bottom:100%;margin-bottom:16px;transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-left:16px;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);top:100%;margin-top:16px;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){right:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-right:16px;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{border-radius:calc(var(--f7-fab-size)/ 2);background:var(--f7-fab-bg-color,var(--f7-theme-color));box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{box-shadow:none;background:0 0!important}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:250ms}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{width:auto;min-width:var(--f7-fab-extended-size)}.fab-extended>a{width:100%;height:var(--f7-fab-extended-size)}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/ 2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);padding:var(--f7-fab-extended-text-padding);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);text-transform:uppercase}.fab-label-button{overflow:visible!important}.fab-label{position:absolute;top:50%;padding:var(--f7-fab-label-padding);border-radius:var(--f7-fab-label-border-radius);background:var(--f7-fab-label-bg-color);color:var(--f7-fab-label-text-color);box-shadow:var(--f7-fab-label-box-shadow);white-space:nowrap;transform:translateY(-50%);pointer-events:none;font-size:var(--f7-fab-label-font-size)}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{right:100%;margin-right:8px}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-labels.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-right-bottom,.tabbar-labels.toolbar-bottom~* .fab-center-bottom,.tabbar-labels.toolbar-bottom~* .fab-left-bottom,.tabbar-labels.toolbar-bottom~* .fab-right-bottom,.tabbar-labels.toolbar-bottom~.fab-center-bottom,.tabbar-labels.toolbar-bottom~.fab-left-bottom,.tabbar-labels.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-labels-height)}.ios .tabbar-labels.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-top-md~.fab-center-bottom,.md .tabbar-labels.toolbar-top-md~.fab-left-bottom,.md .tabbar-labels.toolbar-top-md~.fab-right-bottom,.tabbar-labels.toolbar-top~* .fab-center-bottom,.tabbar-labels.toolbar-top~* .fab-left-bottom,.tabbar-labels.toolbar-top~* .fab-right-bottom,.tabbar-labels.toolbar-top~.fab-center-bottom,.tabbar-labels.toolbar-top~.fab-left-bottom,.tabbar-labels.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-labels-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbar+.toolbar-top.tabbar-labels~* .fab-center-top,.navbar+.toolbar-top.tabbar-labels~* .fab-left-top,.navbar+.toolbar-top.tabbar-labels~* .fab-right-top,.navbar+.toolbar-top.tabbar-labels~.fab-center-top,.navbar+.toolbar-top.tabbar-labels~.fab-left-top,.navbar+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbars+.toolbar-top.tabbar-labels~* .fab-center-top,.navbars+.toolbar-top.tabbar-labels~* .fab-left-top,.navbars+.toolbar-top.tabbar-labels~* .fab-right-top,.navbars+.toolbar-top.tabbar-labels~.fab-center-top,.navbars+.toolbar-top.tabbar-labels~.fab-left-top,.navbars+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{transition-duration:0s}
\ No newline at end of file
+:root{--f7-fab-margin:16px;--f7-fab-text-color:#fff;--f7-fab-extended-text-font-size:14px;--f7-fab-extended-text-padding:0 20px;--f7-fab-label-bg-color:#fff;--f7-fab-label-text-color:#333;--f7-fab-label-border-radius:4px;--f7-fab-label-padding:4px 12px;--f7-fab-label-font-size:inherit;--f7-fab-button-size:40px}.ios{--f7-fab-size:50px;--f7-fab-box-shadow:0px 2px 4px rgba(0, 0, 0, 0.4);--f7-fab-extended-size:50px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.md{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:500;--f7-fab-extended-text-letter-spacing:0.05em;--f7-fab-label-box-shadow:var(--f7-elevation-3)}.aurora{--f7-fab-size:56px;--f7-fab-box-shadow:var(--f7-elevation-6);--f7-fab-extended-size:48px;--f7-fab-extended-text-font-weight:600;--f7-fab-extended-text-letter-spacing:0;--f7-fab-label-box-shadow:0px 1px 2px rgba(0, 0, 0, 0.4)}.fab-backdrop{z-index:1400}.fab{position:absolute;z-index:1500}.fab a{--f7-touch-ripple-color:var(--f7-touch-ripple-white)}.fab-left-bottom,.fab-left-center,.fab-left-top{left:calc(var(--f7-fab-margin) + var(--f7-safe-area-left))}.fab-right-bottom,.fab-right-center,.fab-right-top{right:calc(var(--f7-fab-margin) + var(--f7-safe-area-right))}.fab-center-top,.fab-left-top,.fab-right-top{top:var(--f7-fab-margin)}.fab-center-bottom,.fab-left-bottom,.fab-right-bottom{bottom:calc(var(--f7-fab-margin) + var(--f7-safe-area-bottom))}.fab-center-bottom,.fab-center-center,.fab-center-top{left:50%;transform:translateX(-50%)}.fab-center-center,.fab-left-center,.fab-right-center{top:50%;transform:translateY(-50%)}.fab-center-center{top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.fab-buttons a,.fab>a{background-color:var(--f7-fab-bg-color,var(--f7-theme-color));width:var(--f7-fab-size);height:var(--f7-fab-size);box-shadow:var(--f7-fab-box-shadow);border-radius:calc(var(--f7-fab-size)/ 2);position:relative;transition-duration:.3s;display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:1;color:var(--f7-fab-text-color)}.fab-buttons a.active-state,.fab>a.active-state{background-color:var(--f7-fab-pressed-bg-color,var(--f7-theme-color-shade))}.fab>a i{position:absolute;left:50%;top:50%;transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);transition:.3s}.fab>a i+i{transform:translate3d(-50%,-50%,0) rotate(-90deg) scale(.5);opacity:0}.fab-buttons a{border-radius:calc(var(--f7-fab-button-size)/ 2);width:var(--f7-fab-button-size);height:var(--f7-fab-button-size)}.fab-buttons{display:flex;visibility:hidden;pointer-events:none;position:absolute}.fab-buttons a{opacity:0}.fab-opened:not(.fab-morph)>a i{transform:translate3d(-50%,-50%,0) rotate(90deg) scale(.5);opacity:0}.fab-opened:not(.fab-morph)>a i+i{transform:translate3d(-50%,-50%,0) rotate(0deg) scale(1);opacity:1}.fab-opened .fab-buttons{visibility:visible;pointer-events:auto}.fab-opened .fab-buttons a{opacity:1;transform:translate3d(0,0px,0) scale(1)!important}.fab-opened .fab-buttons a:nth-child(2){transition-delay:50ms}.fab-opened .fab-buttons a:nth-child(3){transition-delay:0.1s}.fab-opened .fab-buttons a:nth-child(4){transition-delay:150ms}.fab-opened .fab-buttons a:nth-child(5){transition-delay:0.2s}.fab-opened .fab-buttons a:nth-child(6){transition-delay:250ms}.fab-buttons-bottom,.fab-buttons-top{left:50%;width:var(--f7-fab-button-size);margin-left:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-top{bottom:100%;margin-bottom:16px;flex-direction:column-reverse}.fab-buttons-top a{transform:translate3d(0,8px,0) scale(.3);transform-origin:center bottom}.fab-buttons-top a+a{margin-bottom:16px}.fab-buttons-bottom{top:100%;margin-top:16px;flex-direction:column}.fab-buttons-bottom a{transform:translate3d(0,-8px,0) scale(.3);transform-origin:center top}.fab-buttons-bottom a+a{margin-top:16px}.fab-buttons-left,.fab-buttons-right{top:50%;height:var(--f7-fab-button-size);margin-top:calc(-1 * var(--f7-fab-button-size)/ 2)}.fab-buttons-left{right:100%;margin-right:16px;flex-direction:row-reverse}.fab-buttons-left a{transform:translate3d(8px,0px,0) scale(.3);transform-origin:right center}.fab-buttons-left a+a{margin-right:16px}.fab-buttons-right{left:100%;margin-left:16px}.fab-buttons-right a{transform:translate3d(-8px,0,0) scale(.3);transform-origin:left center}.fab-buttons-right a+a{margin-left:16px}.fab-buttons-center{left:0%;top:0%;width:100%;height:100%}.fab-buttons-center a{position:absolute}.fab-buttons-center a:nth-child(1){left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);bottom:100%;margin-bottom:16px;transform:translateY(-8px) scale(.3);transform-origin:center bottom}.fab-buttons-center a:nth-child(2){left:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-left:16px;transform:translateX(-8px) scale(.3);transform-origin:left center}.fab-buttons-center a:nth-child(3){left:50%;margin-left:calc(-1 * var(--f7-fab-button-size)/ 2);top:100%;margin-top:16px;transform:translateY(8px) scale(.3);transform-origin:center top}.fab-buttons-center a:nth-child(4){right:100%;margin-top:calc(-1 * var(--f7-fab-button-size)/ 2);top:50%;margin-right:16px;transform:translateX(8px) scale(.3);transform-origin:right center}.fab-morph{border-radius:calc(var(--f7-fab-size)/ 2);background:var(--f7-fab-bg-color,var(--f7-theme-color));box-shadow:var(--f7-fab-box-shadow)}.fab-morph>a{box-shadow:none;background:0 0!important}.fab-opened.fab-morph>a i{opacity:0}.fab-morph,.fab-morph-target,.fab-morph>a{transition-duration:250ms}.fab-morph-target:not(.fab-morph-target-visible){display:none}.fab-extended{width:auto;min-width:var(--f7-fab-extended-size)}.fab-extended>a{width:100%;height:var(--f7-fab-extended-size)}.fab-extended>a i{left:calc(var(--f7-fab-extended-size)/ 2)}.fab-extended i~.fab-text{padding-left:var(--f7-fab-extended-size)}.fab-extended>a{width:100%!important}.fab-text{box-sizing:border-box;font-size:var(--f7-fab-extended-text-font-size);padding:var(--f7-fab-extended-text-padding);font-weight:var(--f7-fab-extended-text-font-weight);letter-spacing:var(--f7-fab-extended-text-letter-spacing);text-transform:uppercase}.fab-label-button{overflow:visible!important}.fab-label{position:absolute;top:50%;padding:var(--f7-fab-label-padding);border-radius:var(--f7-fab-label-border-radius);background:var(--f7-fab-label-bg-color);color:var(--f7-fab-label-text-color);box-shadow:var(--f7-fab-label-box-shadow);white-space:nowrap;transform:translateY(-50%);pointer-events:none;font-size:var(--f7-fab-label-font-size)}.fab-right-bottom .fab-label,.fab-right-center .fab-label,.fab-right-top .fab-label{right:100%;margin-right:8px}.fab-left-bottom .fab-label,.fab-left-center .fab-label,.fab-left-top .fab-label{left:100%;margin-left:8px}.navbars~* .fab-center-top,.navbars~* .fab-left-top,.navbars~* .fab-right-top,.navbars~.fab-center-top,.navbars~.fab-left-top,.navbars~.fab-right-top,.navbar~* .fab-center-top,.navbar~* .fab-left-top,.navbar~* .fab-right-top,.navbar~.fab-center-top,.navbar~.fab-left-top,.navbar~.fab-right-top{margin-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .toolbar-top-ios~* .fab-center-top,.ios .toolbar-top-ios~* .fab-left-top,.ios .toolbar-top-ios~* .fab-right-top,.ios .toolbar-top-ios~.fab-center-top,.ios .toolbar-top-ios~.fab-left-top,.ios .toolbar-top-ios~.fab-right-top,.md .toolbar-top-md~* .fab-center-top,.md .toolbar-top-md~* .fab-left-top,.md .toolbar-top-md~* .fab-right-top,.md .toolbar-top-md~.fab-center-top,.md .toolbar-top-md~.fab-left-top,.md .toolbar-top-md~.fab-right-top,.toolbar-top~* .fab-center-top,.toolbar-top~* .fab-left-top,.toolbar-top~* .fab-right-top,.toolbar-top~.fab-center-top,.toolbar-top~.fab-left-top,.toolbar-top~.fab-right-top{margin-top:var(--f7-toolbar-height)}.ios .toolbar-bottom-ios~* .fab-center-bottom,.ios .toolbar-bottom-ios~* .fab-left-bottom,.ios .toolbar-bottom-ios~* .fab-right-bottom,.ios .toolbar-bottom-ios~.fab-center-bottom,.ios .toolbar-bottom-ios~.fab-left-bottom,.ios .toolbar-bottom-ios~.fab-right-bottom,.md .toolbar-bottom-md~* .fab-center-bottom,.md .toolbar-bottom-md~* .fab-left-bottom,.md .toolbar-bottom-md~* .fab-right-bottom,.md .toolbar-bottom-md~.fab-center-bottom,.md .toolbar-bottom-md~.fab-left-bottom,.md .toolbar-bottom-md~.fab-right-bottom,.toolbar-bottom~* .fab-center-bottom,.toolbar-bottom~* .fab-left-bottom,.toolbar-bottom~* .fab-right-bottom,.toolbar-bottom~.fab-center-bottom,.toolbar-bottom~.fab-left-bottom,.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-toolbar-height)}.ios .tabbar-labels.toolbar-bottom-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-bottom-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-center-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-left-bottom,.md .tabbar-labels.toolbar-bottom-md~.fab-right-bottom,.tabbar-labels.toolbar-bottom~* .fab-center-bottom,.tabbar-labels.toolbar-bottom~* .fab-left-bottom,.tabbar-labels.toolbar-bottom~* .fab-right-bottom,.tabbar-labels.toolbar-bottom~.fab-center-bottom,.tabbar-labels.toolbar-bottom~.fab-left-bottom,.tabbar-labels.toolbar-bottom~.fab-right-bottom{margin-bottom:var(--f7-tabbar-labels-height)}.ios .tabbar-labels.toolbar-top-ios~* .fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~* .fab-right-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-center-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-left-bottom,.ios .tabbar-labels.toolbar-top-ios~.fab-right-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-center-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-left-bottom,.md .tabbar-labels.toolbar-top-md~* .fab-right-bottom,.md .tabbar-labels.toolbar-top-md~.fab-center-bottom,.md .tabbar-labels.toolbar-top-md~.fab-left-bottom,.md .tabbar-labels.toolbar-top-md~.fab-right-bottom,.tabbar-labels.toolbar-top~* .fab-center-bottom,.tabbar-labels.toolbar-top~* .fab-left-bottom,.tabbar-labels.toolbar-top~* .fab-right-bottom,.tabbar-labels.toolbar-top~.fab-center-bottom,.tabbar-labels.toolbar-top~.fab-left-bottom,.tabbar-labels.toolbar-top~.fab-right-bottom{margin-top:var(--f7-tabbar-labels-height)}.messagebar~* .fab-center-bottom,.messagebar~* .fab-left-bottom,.messagebar~* .fab-right-bottom,.messagebar~.fab-center-bottom,.messagebar~.fab-left-bottom,.messagebar~.fab-right-bottom{margin-bottom:var(--f7-messagebar-height)}.ios .navbar+.toolbar-top-ios~* .fab-center-top,.ios .navbar+.toolbar-top-ios~* .fab-left-top,.ios .navbar+.toolbar-top-ios~* .fab-right-top,.ios .navbar+.toolbar-top-ios~.fab-center-top,.ios .navbar+.toolbar-top-ios~.fab-left-top,.ios .navbar+.toolbar-top-ios~.fab-right-top,.md .navbar+.toolbar-top-ios~* .fab-center-top,.md .navbar+.toolbar-top-ios~* .fab-left-top,.md .navbar+.toolbar-top-ios~* .fab-right-top,.md .navbar+.toolbar-top-ios~.fab-center-top,.md .navbar+.toolbar-top-ios~.fab-left-top,.md .navbar+.toolbar-top-ios~.fab-right-top,.navbar+.toolbar-top~* .fab-center-top,.navbar+.toolbar-top~* .fab-left-top,.navbar+.toolbar-top~* .fab-right-top,.navbar+.toolbar-top~.fab-center-top,.navbar+.toolbar-top~.fab-left-top,.navbar+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-center-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-left-top,.md .navbar+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbar+.toolbar-top.tabbar-labels~* .fab-center-top,.navbar+.toolbar-top.tabbar-labels~* .fab-left-top,.navbar+.toolbar-top.tabbar-labels~* .fab-right-top,.navbar+.toolbar-top.tabbar-labels~.fab-center-top,.navbar+.toolbar-top.tabbar-labels~.fab-left-top,.navbar+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios~* .fab-center-top,.ios .navbars+.toolbar-top-ios~* .fab-left-top,.ios .navbars+.toolbar-top-ios~* .fab-right-top,.ios .navbars+.toolbar-top-ios~.fab-center-top,.ios .navbars+.toolbar-top-ios~.fab-left-top,.ios .navbars+.toolbar-top-ios~.fab-right-top,.navbars+.toolbar-top~* .fab-center-top,.navbars+.toolbar-top~* .fab-left-top,.navbars+.toolbar-top~* .fab-right-top,.navbars+.toolbar-top~.fab-center-top,.navbars+.toolbar-top~.fab-left-top,.navbars+.toolbar-top~.fab-right-top{margin-top:calc(var(--f7-toolbar-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~* .fab-right-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-center-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-left-top,.ios .navbars+.toolbar-top-ios.tabbar-labels~.fab-right-top,.navbars+.toolbar-top.tabbar-labels~* .fab-center-top,.navbars+.toolbar-top.tabbar-labels~* .fab-left-top,.navbars+.toolbar-top.tabbar-labels~* .fab-right-top,.navbars+.toolbar-top.tabbar-labels~.fab-center-top,.navbars+.toolbar-top.tabbar-labels~.fab-left-top,.navbars+.toolbar-top.tabbar-labels~.fab-right-top{margin-top:calc(var(--f7-tabbar-labels-height) + var(--f7-navbar-height) + var(--f7-safe-area-top))}.ios .fab-buttons a.active-state,.ios .fab>a.active-state{transition-duration:0s}
\ No newline at end of file
diff --git a/www/assets/framework7/components/fab/fab.d.ts b/www/assets/framework7/components/fab/fab.d.ts
index 08a674b5c..c6285e984 100644
--- a/www/assets/framework7/components/fab/fab.d.ts
+++ b/www/assets/framework7/components/fab/fab.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Fab {
interface DomEvents {
diff --git a/www/assets/framework7/components/fab/fab.js b/www/assets/framework7/components/fab/fab.js
index 5c82a7465..a15d51f8d 100644
--- a/www/assets/framework7/components/fab/fab.js
+++ b/www/assets/framework7/components/fab/fab.js
@@ -1,193 +1 @@
-import $ from '../../shared/dom7.js';
-import { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';
-const Fab = {
- morphOpen(fabEl, targetEl) {
- const app = this;
- const $fabEl = $(fabEl);
- const $targetEl = $(targetEl);
- if ($targetEl.length === 0) return;
- $targetEl.transition(0).addClass('fab-morph-target-visible');
- const target = {
- width: $targetEl[0].offsetWidth,
- height: $targetEl[0].offsetHeight,
- offset: $targetEl.offset(),
- borderRadius: $targetEl.css('border-radius'),
- zIndex: $targetEl.css('z-index')
- };
- const fab = {
- width: $fabEl[0].offsetWidth,
- height: $fabEl[0].offsetHeight,
- offset: $fabEl.offset(),
- translateX: getTranslate($fabEl[0], 'x'),
- translateY: getTranslate($fabEl[0], 'y')
- };
- $fabEl[0].f7FabMorphData = {
- $targetEl,
- target,
- fab
- };
- const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
- const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
- const scaleX = target.width / fab.width;
- const scaleY = target.height / fab.height;
- let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));
- if (borderRadius > 0) borderRadius += 2;
-
- $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {
- $fabEl.transition(0).transform('');
- $targetEl.transition(0);
- target.width = $targetEl[0].offsetWidth;
- target.height = $targetEl[0].offsetHeight;
- target.offset = $targetEl.offset();
- fab.offset = $fabEl.offset();
- const diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
- const diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
- const scaleXNew = target.width / fab.width;
- const scaleYNew = target.height / fab.height;
- $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);
- };
-
- $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);
- $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);
- $fabEl.transitionEnd(() => {
- $targetEl.transition('');
- nextFrame(() => {
- $targetEl.css('opacity', 1).transform('scale(1,1)');
- $fabEl.transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`).css('border-radius', `${borderRadius}px`).css('box-shadow', 'none').css('opacity', '0');
- });
- app.on('resize', $fabEl[0].f7FabMorphResizeHandler);
-
- if ($targetEl.parents('.page-content').length > 0) {
- $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);
- }
- });
- },
-
- morphClose(fabEl) {
- const app = this;
- const $fabEl = $(fabEl);
- const morphData = $fabEl[0].f7FabMorphData;
- if (!morphData) return;
- const {
- $targetEl,
- target,
- fab
- } = morphData;
- if ($targetEl.length === 0) return;
- const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
- const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
- const scaleX = target.width / fab.width;
- const scaleY = target.height / fab.height;
- app.off('resize', $fabEl[0].f7FabMorphResizeHandler);
-
- if ($targetEl.parents('.page-content').length > 0) {
- $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);
- }
-
- $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);
- $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);
- $fabEl.transitionEnd(() => {
- $fabEl.css('z-index', '').removeClass('fab-opened').transform('');
- nextFrame(() => {
- $fabEl.transitionEnd(() => {
- $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');
- });
- });
- });
- },
-
- open(fabEl, targetEl) {
- const app = this;
- const $fabEl = $(fabEl).eq(0);
- const $buttonsEl = $fabEl.find('.fab-buttons');
- if (!$fabEl.length) return;
- if ($fabEl.hasClass('fab-opened')) return;
- if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;
-
- if (app.fab.openedEl) {
- if (app.fab.openedEl === $fabEl[0]) return;
- app.fab.close(app.fab.openedEl);
- }
-
- app.fab.openedEl = $fabEl[0];
-
- if ($fabEl.hasClass('fab-morph')) {
- app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));
- } else {
- $fabEl.addClass('fab-opened');
- }
-
- $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');
- $fabEl.trigger('fab:open');
- },
-
- close(fabEl) {
- if (fabEl === void 0) {
- fabEl = '.fab-opened';
- }
-
- const app = this;
- const $fabEl = $(fabEl).eq(0);
- const $buttonsEl = $fabEl.find('.fab-buttons');
- if (!$fabEl.length) return;
- if (!$fabEl.hasClass('fab-opened')) return;
- if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;
- app.fab.openedEl = null;
-
- if ($fabEl.hasClass('fab-morph')) {
- app.fab.morphClose($fabEl);
- } else {
- $fabEl.removeClass('fab-opened');
- }
-
- $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');
- $fabEl.trigger('fab:close');
- },
-
- toggle(fabEl) {
- const app = this;
- const $fabEl = $(fabEl);
- if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);
- }
-
-};
-export default {
- name: 'fab',
-
- create() {
- const app = this;
- bindMethods(app, {
- fab: {
- openedEl: null,
- ...Fab
- }
- });
- },
-
- clicks: {
- '.fab > a': function open($clickedEl) {
- const app = this;
- app.fab.toggle($clickedEl.parents('.fab'));
- },
- '.fab-open': function open($clickedEl, data) {
- if (data === void 0) {
- data = {};
- }
-
- const app = this;
- app.fab.open(data.fab);
- },
- '.fab-close': function close($clickedEl, data) {
- if (data === void 0) {
- data = {};
- }
-
- const app = this;
- app.fab.close(data.fab);
- },
- '.fab-backdrop': function close() {
- const app = this;
- app.fab.close();
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var n=t.$,a=t.utils;t.getDevice,t.getSupport,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods;function o(t){this.wrapped=t}function s(t){var e,n;function a(e,n){try{var r=t[e](n),f=r.value,i=f instanceof o;Promise.resolve(i?f.wrapped:f).then((function(t){i?a("return"===e?"return":"next",t):s(r.done?"return":"normal",t)}),(function(t){a("throw",t)}))}catch(t){s("throw",t)}}function s(t,o){switch(t){case"return":e.resolve({value:o,done:!0});break;case"throw":e.reject(o);break;default:e.resolve({value:o,done:!1})}(e=e.next)?a(e.key,e.arg):n=null}this._invoke=function(t,o){return new Promise((function(s,r){var f={key:t,arg:o,resolve:s,reject:r,next:null};n?n=n.next=f:(e=n=f,a(t,o))}))},"function"!=typeof t.return&&(this.return=void 0)}function r(){return(r=Object.assign||function(t){for(var e=1;e0&&(b+=2),o[0].f7FabMorphResizeHandler=function(){o.transition(0).transform(""),s.transition(0),r.width=s[0].offsetWidth,r.height=s[0].offsetHeight,r.offset=s.offset(),f.offset=o.offset();var t=f.offset.left+f.width/2-(r.offset.left+r.width/2)-f.translateX,e=f.offset.top+f.height/2-(r.offset.top+r.height/2)-f.translateY,n=r.width/f.width,a=r.height/f.height;o.transform("translate3d("+-t+"px, "+-e+"px, 0) scale("+n+", "+a+")")},s.css("opacity",0).transform("scale("+1/c+", "+1/d+")"),o.addClass("fab-opened").css("z-index",r.zIndex-1).transform("translate3d("+-l+"px, "+-p+"px, 0)"),o.transitionEnd((function(){s.transition(""),h((function(){s.css("opacity",1).transform("scale(1,1)"),o.transform("translate3d("+-l+"px, "+-p+"px, 0) scale("+c+", "+d+")").css("border-radius",b+"px").css("box-shadow","none").css("opacity","0")})),a.on("resize",o[0].f7FabMorphResizeHandler),s.parents(".page-content").length>0&&s.parents(".page-content").on("scroll",o[0].f7FabMorphResizeHandler)}))}},morphClose:function(t){var e=n(t),a=e[0].f7FabMorphData;if(a){var o=a.$targetEl,s=a.target,r=a.fab;if(0!==o.length){var f=r.offset.left+r.width/2-(s.offset.left+s.width/2)-r.translateX,i=r.offset.top+r.height/2-(s.offset.top+s.height/2)-r.translateY,l=s.width/r.width,p=s.height/r.height;this.off("resize",e[0].f7FabMorphResizeHandler),o.parents(".page-content").length>0&&o.parents(".page-content").off("scroll",e[0].f7FabMorphResizeHandler),o.css("opacity",0).transform("scale("+1/l+", "+1/p+")"),e.transition("").css("box-shadow","").css("border-radius","").css("opacity","1").transform("translate3d("+-f+"px, "+-i+"px, 0)"),e.transitionEnd((function(){e.css("z-index","").removeClass("fab-opened").transform(""),h((function(){e.transitionEnd((function(){o.removeClass("fab-morph-target-visible").css("opacity","").transform("").transition("")}))}))}))}}},open:function(t,e){var a=this,o=n(t).eq(0),s=o.find(".fab-buttons");if(o.length&&!o.hasClass("fab-opened")&&(s.length||o.hasClass("fab-morph"))){if(a.fab.openedEl){if(a.fab.openedEl===o[0])return;a.fab.close(a.fab.openedEl)}a.fab.openedEl=o[0],o.hasClass("fab-morph")?a.fab.morphOpen(o,e||o.attr("data-morph-to")):o.addClass("fab-opened"),o.siblings(".fab-backdrop").addClass("backdrop-in"),o.trigger("fab:open")}},close:function(t){void 0===t&&(t=".fab-opened");var e=n(t).eq(0),a=e.find(".fab-buttons");e.length&&e.hasClass("fab-opened")&&(a.length||e.hasClass("fab-morph"))&&(this.fab.openedEl=null,e.hasClass("fab-morph")?this.fab.morphClose(e):e.removeClass("fab-opened"),e.siblings(".fab-backdrop").removeClass("backdrop-in"),e.trigger("fab:close"))},toggle:function(t){n(t).hasClass("fab-opened")?this.fab.close(t):this.fab.open(t)}},p={name:"fab",create:function(){f(this,{fab:r({openedEl:null},l)})},clicks:{".fab > a":function(t){this.fab.toggle(t.parents(".fab"))},".fab-open":function(t,e){void 0===e&&(e={});this.fab.open(e.fab)},".fab-close":function(t,e){void 0===e&&(e={});this.fab.close(e.fab)},".fab-backdrop":function(){this.fab.close()}}};if(e){if(t.prototype.modules&&t.prototype.modules[p.name])return;t.use(p),t.instance&&(t.instance.useModuleParams(p,t.instance.params),t.instance.useModule(p))}return p}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/fab/fab.lazy.js b/www/assets/framework7/components/fab/fab.lazy.js
deleted file mode 100644
index 84ec51c66..000000000
--- a/www/assets/framework7/components/fab/fab.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var s=t.$,a=t.utils,o=(t.getDevice,t.getSupport,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,t.$jsx,a.getTranslate),n=a.nextFrame,f=a.bindMethods;const r={morphOpen(t,e){const a=this,f=s(t),r=s(e);if(0===r.length)return;r.transition(0).addClass("fab-morph-target-visible");const i={width:r[0].offsetWidth,height:r[0].offsetHeight,offset:r.offset(),borderRadius:r.css("border-radius"),zIndex:r.css("z-index")},h={width:f[0].offsetWidth,height:f[0].offsetHeight,offset:f.offset(),translateX:o(f[0],"x"),translateY:o(f[0],"y")};f[0].f7FabMorphData={$targetEl:r,target:i,fab:h};const l=h.offset.left+h.width/2-(i.offset.left+i.width/2)-h.translateX,d=h.offset.top+h.height/2-(i.offset.top+i.height/2)-h.translateY,p=i.width/h.width,b=i.height/h.height;let c=Math.ceil(parseInt(i.borderRadius,10)/Math.max(p,b));c>0&&(c+=2),f[0].f7FabMorphResizeHandler=function(){f.transition(0).transform(""),r.transition(0),i.width=r[0].offsetWidth,i.height=r[0].offsetHeight,i.offset=r.offset(),h.offset=f.offset();const t=h.offset.left+h.width/2-(i.offset.left+i.width/2)-h.translateX,e=h.offset.top+h.height/2-(i.offset.top+i.height/2)-h.translateY,s=i.width/h.width,a=i.height/h.height;f.transform(`translate3d(${-t}px, ${-e}px, 0) scale(${s}, ${a})`)},r.css("opacity",0).transform(`scale(${1/p}, ${1/b})`),f.addClass("fab-opened").css("z-index",i.zIndex-1).transform(`translate3d(${-l}px, ${-d}px, 0)`),f.transitionEnd((()=>{r.transition(""),n((()=>{r.css("opacity",1).transform("scale(1,1)"),f.transform(`translate3d(${-l}px, ${-d}px, 0) scale(${p}, ${b})`).css("border-radius",`${c}px`).css("box-shadow","none").css("opacity","0")})),a.on("resize",f[0].f7FabMorphResizeHandler),r.parents(".page-content").length>0&&r.parents(".page-content").on("scroll",f[0].f7FabMorphResizeHandler)}))},morphClose(t){const e=s(t),a=e[0].f7FabMorphData;if(!a)return;const{$targetEl:o,target:f,fab:r}=a;if(0===o.length)return;const i=r.offset.left+r.width/2-(f.offset.left+f.width/2)-r.translateX,h=r.offset.top+r.height/2-(f.offset.top+f.height/2)-r.translateY,l=f.width/r.width,d=f.height/r.height;this.off("resize",e[0].f7FabMorphResizeHandler),o.parents(".page-content").length>0&&o.parents(".page-content").off("scroll",e[0].f7FabMorphResizeHandler),o.css("opacity",0).transform(`scale(${1/l}, ${1/d})`),e.transition("").css("box-shadow","").css("border-radius","").css("opacity","1").transform(`translate3d(${-i}px, ${-h}px, 0)`),e.transitionEnd((()=>{e.css("z-index","").removeClass("fab-opened").transform(""),n((()=>{e.transitionEnd((()=>{o.removeClass("fab-morph-target-visible").css("opacity","").transform("").transition("")}))}))}))},open(t,e){const a=this,o=s(t).eq(0),n=o.find(".fab-buttons");if(o.length&&!o.hasClass("fab-opened")&&(n.length||o.hasClass("fab-morph"))){if(a.fab.openedEl){if(a.fab.openedEl===o[0])return;a.fab.close(a.fab.openedEl)}a.fab.openedEl=o[0],o.hasClass("fab-morph")?a.fab.morphOpen(o,e||o.attr("data-morph-to")):o.addClass("fab-opened"),o.siblings(".fab-backdrop").addClass("backdrop-in"),o.trigger("fab:open")}},close(t){void 0===t&&(t=".fab-opened");const e=this,a=s(t).eq(0),o=a.find(".fab-buttons");a.length&&a.hasClass("fab-opened")&&(o.length||a.hasClass("fab-morph"))&&(e.fab.openedEl=null,a.hasClass("fab-morph")?e.fab.morphClose(a):a.removeClass("fab-opened"),a.siblings(".fab-backdrop").removeClass("backdrop-in"),a.trigger("fab:close"))},toggle(t){s(t).hasClass("fab-opened")?this.fab.close(t):this.fab.open(t)}};var i={name:"fab",create(){f(this,{fab:{openedEl:null,...r}})},clicks:{".fab > a":function(t){this.fab.toggle(t.parents(".fab"))},".fab-open":function(t,e){void 0===e&&(e={});this.fab.open(e.fab)},".fab-close":function(t,e){void 0===e&&(e={});this.fab.close(e.fab)},".fab-backdrop":function(){this.fab.close()}}};if(e){if(t.prototype.modules&&t.prototype.modules[i.name])return;t.use(i),t.instance&&(t.instance.useModuleParams(i,t.instance.params),t.instance.useModule(i))}return i}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/fab/package.json b/www/assets/framework7/components/fab/package.json
new file mode 100644
index 000000000..ac5ea125c
--- /dev/null
+++ b/www/assets/framework7/components/fab/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/fab",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/fab/fab.js",
+ "module": "../../esm/components/fab/fab.js",
+ "jsnext:main": "../../esm/components/fab/fab.js",
+ "typings": "../../types/components/fab/fab.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/form/form.d.ts b/www/assets/framework7/components/form/form.d.ts
index e4b7b01b1..f906da0da 100644
--- a/www/assets/framework7/components/form/form.d.ts
+++ b/www/assets/framework7/components/form/form.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Form {
interface DomEvents {
diff --git a/www/assets/framework7/components/form/form.js b/www/assets/framework7/components/form/form.js
index 22f982698..bab95e355 100644
--- a/www/assets/framework7/components/form/form.js
+++ b/www/assets/framework7/components/form/form.js
@@ -1,347 +1 @@
-import { getWindow, getDocument } from 'ssr-window';
-import $ from '../../shared/dom7.js';
-import { extend, serializeObject } from '../../shared/utils.js'; // Form Data
-
-const FormData = {
- store(form, data) {
- const app = this;
- const window = getWindow();
- let formId = form;
- const $formEl = $(form);
-
- if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
- formId = $formEl.attr('id');
- } // Store form data in app.formsData
-
-
- app.form.data[`form-${formId}`] = data; // Store form data in local storage also
-
- window.localStorage[`f7form-${formId}`] = JSON.stringify(data);
- },
-
- get(form) {
- const app = this;
- const window = getWindow();
- let formId = form;
- const $formEl = $(form);
-
- if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
- formId = $formEl.attr('id');
- }
-
- if (window.localStorage[`f7form-${formId}`]) {
- return JSON.parse(window.localStorage[`f7form-${formId}`]);
- }
-
- if (app.form.data[`form-${formId}`]) {
- return app.form.data[`form-${formId}`];
- }
-
- return undefined;
- },
-
- remove(form) {
- const app = this;
- const window = getWindow();
- let formId = form;
- const $formEl = $(form);
-
- if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
- formId = $formEl.attr('id');
- } // Delete form data from app.formsData
-
-
- if (app.form.data[`form-${formId}`]) {
- app.form.data[`form-${formId}`] = '';
- delete app.form.data[`form-${formId}`];
- } // Delete form data from local storage also
-
-
- if (window.localStorage[`f7form-${formId}`]) {
- window.localStorage[`f7form-${formId}`] = '';
- window.localStorage.removeItem(`f7form-${formId}`);
- }
- }
-
-}; // Form Storage
-
-const FormStorage = {
- init(formEl) {
- const app = this;
- const $formEl = $(formEl);
- const formId = $formEl.attr('id');
- if (!formId) return;
- const initialData = app.form.getFormData(formId);
-
- if (initialData) {
- app.form.fillFromData($formEl, initialData);
- }
-
- function store() {
- const data = app.form.convertToData($formEl);
- if (!data) return;
- app.form.storeFormData(formId, data);
- $formEl.trigger('form:storedata', data);
- app.emit('formStoreData', $formEl[0], data);
- }
-
- $formEl.on('change submit', store);
- },
-
- destroy(formEl) {
- const $formEl = $(formEl);
- $formEl.off('change submit');
- }
-
-}; // Form To/From Data
-
-function formToData(formEl) {
- const app = this;
- const $formEl = $(formEl).eq(0);
- if ($formEl.length === 0) return undefined; // Form data
-
- const data = {}; // Skip input types
-
- const skipTypes = ['submit', 'image', 'button', 'file'];
- const skipNames = [];
- $formEl.find('input, select, textarea').each(inputEl => {
- const $inputEl = $(inputEl);
-
- if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {
- return;
- }
-
- const name = $inputEl.attr('name');
- const type = $inputEl.attr('type');
- const tag = inputEl.nodeName.toLowerCase();
- if (skipTypes.indexOf(type) >= 0) return;
- if (skipNames.indexOf(name) >= 0 || !name) return;
-
- if (tag === 'select' && $inputEl.prop('multiple')) {
- skipNames.push(name);
- data[name] = [];
- $formEl.find(`select[name="${name}"] option`).each(el => {
- if (el.selected) data[name].push(el.value);
- });
- } else {
- switch (type) {
- case 'checkbox':
- skipNames.push(name);
- data[name] = [];
- $formEl.find(`input[name="${name}"]`).each(el => {
- if (el.checked) data[name].push(el.value);
- });
- break;
-
- case 'radio':
- skipNames.push(name);
- $formEl.find(`input[name="${name}"]`).each(el => {
- if (el.checked) data[name] = el.value;
- });
- break;
-
- default:
- data[name] = $inputEl.val();
- break;
- }
- }
- });
- $formEl.trigger('form:todata', data);
- app.emit('formToData', $formEl[0], data);
- return data;
-}
-
-function formFromData(formEl, formData) {
- const app = this;
- const $formEl = $(formEl).eq(0);
- if (!$formEl.length) return;
- let data = formData;
- const formId = $formEl.attr('id');
-
- if (!data && formId) {
- data = app.form.getFormData(formId);
- }
-
- if (!data) return; // Skip input types
-
- const skipTypes = ['submit', 'image', 'button', 'file'];
- const skipNames = [];
- $formEl.find('input, select, textarea').each(inputEl => {
- const $inputEl = $(inputEl);
-
- if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {
- return;
- }
-
- const name = $inputEl.attr('name');
- const type = $inputEl.attr('type');
- const tag = inputEl.nodeName.toLowerCase();
- if (typeof data[name] === 'undefined' || data[name] === null) return;
- if (skipTypes.indexOf(type) >= 0) return;
- if (skipNames.indexOf(name) >= 0 || !name) return;
-
- if (tag === 'select' && $inputEl.prop('multiple')) {
- skipNames.push(name);
- $formEl.find(`select[name="${name}"] option`).each(el => {
- const selectEl = el;
- if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;
- });
- } else {
- switch (type) {
- case 'checkbox':
- skipNames.push(name);
- $formEl.find(`input[name="${name}"]`).each(el => {
- const checkboxEl = el;
- if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;
- });
- break;
-
- case 'radio':
- skipNames.push(name);
- $formEl.find(`input[name="${name}"]`).each(el => {
- const radioEl = el;
- if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;
- });
- break;
-
- default:
- $inputEl.val(data[name]);
- break;
- }
- }
-
- if (tag === 'select' || tag === 'input' || tag === 'textarea') {
- $inputEl.trigger('change', 'fromdata');
- }
- });
- $formEl.trigger('form:fromdata', data);
- app.emit('formFromData', $formEl[0], data);
-}
-
-function initAjaxForm() {
- const app = this;
- const window = getWindow();
- const document = getDocument();
-
- function onSubmitChange(e, fromData) {
- const $formEl = $(this);
- if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;
- if (e.type === 'submit') e.preventDefault();
- if (e.type === 'change' && fromData === 'fromdata') return;
- const method = ($formEl.attr('method') || 'GET').toUpperCase();
- const contentType = $formEl.prop('enctype') || $formEl.attr('enctype');
- const url = $formEl.attr('action');
- if (!url) return;
- let data;
-
- if (method === 'POST') {
- if (contentType === 'application/x-www-form-urlencoded') {
- data = app.form.convertToData($formEl[0]);
- } else {
- data = new window.FormData($formEl[0]);
- }
- } else {
- data = serializeObject(app.form.convertToData($formEl[0]));
- }
-
- app.request({
- method,
- url,
- contentType,
- data,
-
- beforeSend(xhr) {
- $formEl.trigger('formajax:beforesend', {
- data,
- xhr
- });
- app.emit('formAjaxBeforeSend', $formEl[0], data, xhr);
- },
-
- error(xhr) {
- $formEl.trigger('formajax:error', {
- data,
- xhr
- });
- app.emit('formAjaxError', $formEl[0], data, xhr);
- },
-
- complete(xhr) {
- $formEl.trigger('formajax:complete', {
- data,
- xhr
- });
- app.emit('formAjaxComplete', $formEl[0], data, xhr);
- },
-
- success(response, status, xhr) {
- $formEl.trigger('formajax:success', {
- data,
- xhr
- });
- app.emit('formAjaxSuccess', $formEl[0], data, xhr);
- }
-
- });
- }
-
- $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);
-}
-
-export default {
- name: 'form',
-
- create() {
- const app = this;
- extend(app, {
- form: {
- data: {},
- storeFormData: FormData.store.bind(app),
- getFormData: FormData.get.bind(app),
- removeFormData: FormData.remove.bind(app),
- convertToData: formToData.bind(app),
- fillFromData: formFromData.bind(app),
- storage: {
- init: FormStorage.init.bind(app),
- destroy: FormStorage.destroy.bind(app)
- }
- }
- });
- },
-
- on: {
- init() {
- const app = this;
- initAjaxForm.call(app);
- },
-
- tabBeforeRemove(tabEl) {
- const app = this;
- $(tabEl).find('.form-store-data').each(formEl => {
- app.form.storage.destroy(formEl);
- });
- },
-
- tabMounted(tabEl) {
- const app = this;
- $(tabEl).find('.form-store-data').each(formEl => {
- app.form.storage.init(formEl);
- });
- },
-
- pageBeforeRemove(page) {
- const app = this;
- page.$el.find('.form-store-data').each(formEl => {
- app.form.storage.destroy(formEl);
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.form-store-data').each(formEl => {
- app.form.storage.init(formEl);
- });
- }
-
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var a=t.$,o=t.utils,r=(t.getDevice,t.getSupport,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,o.extend),n=o.serializeObject,i={store:function(t,e){var o=t,r=a(t);r.length&&r.is("form")&&r.attr("id")&&(o=r.attr("id")),this.form.data["form-"+o]=e,window.localStorage["f7form-"+o]=JSON.stringify(e)},get:function(t){var e=t,o=a(t);return o.length&&o.is("form")&&o.attr("id")&&(e=o.attr("id")),window.localStorage["f7form-"+e]?JSON.parse(window.localStorage["f7form-"+e]):this.form.data["form-"+e]?this.form.data["form-"+e]:void 0},remove:function(t){var e=this,o=t,r=a(t);r.length&&r.is("form")&&r.attr("id")&&(o=r.attr("id")),e.form.data["form-"+o]&&(e.form.data["form-"+o]="",delete e.form.data["form-"+o]),window.localStorage["f7form-"+o]&&(window.localStorage["f7form-"+o]="",window.localStorage.removeItem("f7form-"+o))}},f={init:function(t){var e=this,o=a(t),r=o.attr("id");if(r){var n=e.form.getFormData(r);n&&e.form.fillFromData(o,n),o.on("change submit",(function(){var t=e.form.convertToData(o);t&&(e.form.storeFormData(r,t),o.trigger("form:storedata",t),e.emit("formStoreData",o[0],t))}))}},destroy:function(t){a(t).off("change submit")}};function s(t){var e=a(t).eq(0);if(0!==e.length){var o={},r=["submit","image","button","file"],n=[];return e.find("input, select, textarea").each((function(t){var i=a(t);if(!i.hasClass("ignore-store-data")&&!i.hasClass("no-store-data")){var f=i.attr("name"),s=i.attr("type"),m=t.nodeName.toLowerCase();if(!(r.indexOf(s)>=0)&&!(n.indexOf(f)>=0)&&f)if("select"===m&&i.prop("multiple"))n.push(f),o[f]=[],e.find('select[name="'+f+'"] option').each((function(t){t.selected&&o[f].push(t.value)}));else switch(s){case"checkbox":n.push(f),o[f]=[],e.find('input[name="'+f+'"]').each((function(t){t.checked&&o[f].push(t.value)}));break;case"radio":n.push(f),e.find('input[name="'+f+'"]').each((function(t){t.checked&&(o[f]=t.value)}));break;default:o[f]=i.val()}}})),e.trigger("form:todata",o),this.emit("formToData",e[0],o),o}}function m(t,e){var o=a(t).eq(0);if(o.length){var r=e,n=o.attr("id");if(!r&&n&&(r=this.form.getFormData(n)),r){var i=["submit","image","button","file"],f=[];o.find("input, select, textarea").each((function(t){var e=a(t);if(!e.hasClass("ignore-store-data")&&!e.hasClass("no-store-data")){var n=e.attr("name"),s=e.attr("type"),m=t.nodeName.toLowerCase();if(void 0!==r[n]&&null!==r[n]&&!(i.indexOf(s)>=0)&&!(f.indexOf(n)>=0)&&n){if("select"===m&&e.prop("multiple"))f.push(n),o.find('select[name="'+n+'"] option').each((function(t){var e=t;r[n].indexOf(t.value)>=0?e.selected=!0:e.selected=!1}));else switch(s){case"checkbox":f.push(n),o.find('input[name="'+n+'"]').each((function(t){var e=t;r[n].indexOf(t.value)>=0?e.checked=!0:e.checked=!1}));break;case"radio":f.push(n),o.find('input[name="'+n+'"]').each((function(t){var e=t;r[n]===t.value?e.checked=!0:e.checked=!1}));break;default:e.val(r[n])}"select"!==m&&"input"!==m&&"textarea"!==m||e.trigger("change","fromdata")}}})),o.trigger("form:fromdata",r),this.emit("formFromData",o[0],r)}}}function c(){var t=this;a(document).on("submit change","form.form-ajax-submit, form.form-ajax-submit-onchange",(function(e,o){var r=a(this);if(("change"!==e.type||r.hasClass("form-ajax-submit-onchange"))&&("submit"===e.type&&e.preventDefault(),"change"!==e.type||"fromdata"!==o)){var i,f=(r.attr("method")||"GET").toUpperCase(),s=r.prop("enctype")||r.attr("enctype"),m=r.attr("action");if(m)i="POST"===f?"application/x-www-form-urlencoded"===s?t.form.convertToData(r[0]):new window.FormData(r[0]):n(t.form.convertToData(r[0])),t.request({method:f,url:m,contentType:s,data:i,beforeSend:function(e){r.trigger("formajax:beforesend",{data:i,xhr:e}),t.emit("formAjaxBeforeSend",r[0],i,e)},error:function(e){r.trigger("formajax:error",{data:i,xhr:e}),t.emit("formAjaxError",r[0],i,e)},complete:function(e){r.trigger("formajax:complete",{data:i,xhr:e}),t.emit("formAjaxComplete",r[0],i,e)},success:function(e,a,o){r.trigger("formajax:success",{data:i,xhr:o}),t.emit("formAjaxSuccess",r[0],i,o)}})}}))}var d={name:"form",create:function(){var t=this;r(t,{form:{data:{},storeFormData:i.store.bind(t),getFormData:i.get.bind(t),removeFormData:i.remove.bind(t),convertToData:s.bind(t),fillFromData:m.bind(t),storage:{init:f.init.bind(t),destroy:f.destroy.bind(t)}}})},on:{init:function(){c.call(this)},tabBeforeRemove:function(t){var e=this;a(t).find(".form-store-data").each((function(t){e.form.storage.destroy(t)}))},tabMounted:function(t){var e=this;a(t).find(".form-store-data").each((function(t){e.form.storage.init(t)}))},pageBeforeRemove:function(t){var e=this;t.$el.find(".form-store-data").each((function(t){e.form.storage.destroy(t)}))},pageInit:function(t){var e=this;t.$el.find(".form-store-data").each((function(t){e.form.storage.init(t)}))}}};if(e){if(t.prototype.modules&&t.prototype.modules[d.name])return;t.use(d),t.instance&&(t.instance.useModuleParams(d,t.instance.params),t.instance.useModule(d))}return d}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/form/form.lazy.js b/www/assets/framework7/components/form/form.lazy.js
deleted file mode 100644
index 5d838c1bc..000000000
--- a/www/assets/framework7/components/form/form.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var o=t.$,a=t.utils,r=(t.getDevice,t.getSupport,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,t.$jsx,a.serializeObject),n=a.extend;const i={store(t,e){let a=t;const r=o(t);r.length&&r.is("form")&&r.attr("id")&&(a=r.attr("id")),this.form.data[`form-${a}`]=e,window.localStorage[`f7form-${a}`]=JSON.stringify(e)},get(t){const e=this;let a=t;const r=o(t);return r.length&&r.is("form")&&r.attr("id")&&(a=r.attr("id")),window.localStorage[`f7form-${a}`]?JSON.parse(window.localStorage[`f7form-${a}`]):e.form.data[`form-${a}`]?e.form.data[`form-${a}`]:void 0},remove(t){const e=this;let a=t;const r=o(t);r.length&&r.is("form")&&r.attr("id")&&(a=r.attr("id")),e.form.data[`form-${a}`]&&(e.form.data[`form-${a}`]="",delete e.form.data[`form-${a}`]),window.localStorage[`f7form-${a}`]&&(window.localStorage[`f7form-${a}`]="",window.localStorage.removeItem(`f7form-${a}`))}},s={init(t){const e=this,a=o(t),r=a.attr("id");if(!r)return;const n=e.form.getFormData(r);n&&e.form.fillFromData(a,n),a.on("change submit",(function(){const t=e.form.convertToData(a);t&&(e.form.storeFormData(r,t),a.trigger("form:storedata",t),e.emit("formStoreData",a[0],t))}))},destroy(t){o(t).off("change submit")}};function f(t){const e=o(t).eq(0);if(0===e.length)return;const a={},r=["submit","image","button","file"],n=[];return e.find("input, select, textarea").each((t=>{const i=o(t);if(i.hasClass("ignore-store-data")||i.hasClass("no-store-data"))return;const s=i.attr("name"),f=i.attr("type"),m=t.nodeName.toLowerCase();if(!(r.indexOf(f)>=0)&&!(n.indexOf(s)>=0)&&s)if("select"===m&&i.prop("multiple"))n.push(s),a[s]=[],e.find(`select[name="${s}"] option`).each((t=>{t.selected&&a[s].push(t.value)}));else switch(f){case"checkbox":n.push(s),a[s]=[],e.find(`input[name="${s}"]`).each((t=>{t.checked&&a[s].push(t.value)}));break;case"radio":n.push(s),e.find(`input[name="${s}"]`).each((t=>{t.checked&&(a[s]=t.value)}));break;default:a[s]=i.val()}})),e.trigger("form:todata",a),this.emit("formToData",e[0],a),a}function m(t,e){const a=this,r=o(t).eq(0);if(!r.length)return;let n=e;const i=r.attr("id");if(!n&&i&&(n=a.form.getFormData(i)),!n)return;const s=["submit","image","button","file"],f=[];r.find("input, select, textarea").each((t=>{const e=o(t);if(e.hasClass("ignore-store-data")||e.hasClass("no-store-data"))return;const a=e.attr("name"),i=e.attr("type"),m=t.nodeName.toLowerCase();if(void 0!==n[a]&&null!==n[a]&&!(s.indexOf(i)>=0)&&!(f.indexOf(a)>=0)&&a){if("select"===m&&e.prop("multiple"))f.push(a),r.find(`select[name="${a}"] option`).each((t=>{const e=t;n[a].indexOf(t.value)>=0?e.selected=!0:e.selected=!1}));else switch(i){case"checkbox":f.push(a),r.find(`input[name="${a}"]`).each((t=>{const e=t;n[a].indexOf(t.value)>=0?e.checked=!0:e.checked=!1}));break;case"radio":f.push(a),r.find(`input[name="${a}"]`).each((t=>{const e=t;n[a]===t.value?e.checked=!0:e.checked=!1}));break;default:e.val(n[a])}"select"!==m&&"input"!==m&&"textarea"!==m||e.trigger("change","fromdata")}})),r.trigger("form:fromdata",n),a.emit("formFromData",r[0],n)}function c(){const t=this;o(document).on("submit change","form.form-ajax-submit, form.form-ajax-submit-onchange",(function(e,a){const n=o(this);if("change"===e.type&&!n.hasClass("form-ajax-submit-onchange"))return;if("submit"===e.type&&e.preventDefault(),"change"===e.type&&"fromdata"===a)return;const i=(n.attr("method")||"GET").toUpperCase(),s=n.prop("enctype")||n.attr("enctype"),f=n.attr("action");if(!f)return;let m;m="POST"===i?"application/x-www-form-urlencoded"===s?t.form.convertToData(n[0]):new window.FormData(n[0]):r(t.form.convertToData(n[0])),t.request({method:i,url:f,contentType:s,data:m,beforeSend(e){n.trigger("formajax:beforesend",{data:m,xhr:e}),t.emit("formAjaxBeforeSend",n[0],m,e)},error(e){n.trigger("formajax:error",{data:m,xhr:e}),t.emit("formAjaxError",n[0],m,e)},complete(e){n.trigger("formajax:complete",{data:m,xhr:e}),t.emit("formAjaxComplete",n[0],m,e)},success(e,o,a){n.trigger("formajax:success",{data:m,xhr:a}),t.emit("formAjaxSuccess",n[0],m,a)}})}))}var d={name:"form",create(){const t=this;n(t,{form:{data:{},storeFormData:i.store.bind(t),getFormData:i.get.bind(t),removeFormData:i.remove.bind(t),convertToData:f.bind(t),fillFromData:m.bind(t),storage:{init:s.init.bind(t),destroy:s.destroy.bind(t)}}})},on:{init(){c.call(this)},tabBeforeRemove(t){const e=this;o(t).find(".form-store-data").each((t=>{e.form.storage.destroy(t)}))},tabMounted(t){const e=this;o(t).find(".form-store-data").each((t=>{e.form.storage.init(t)}))},pageBeforeRemove(t){const e=this;t.$el.find(".form-store-data").each((t=>{e.form.storage.destroy(t)}))},pageInit(t){const e=this;t.$el.find(".form-store-data").each((t=>{e.form.storage.init(t)}))}}};if(e){if(t.prototype.modules&&t.prototype.modules[d.name])return;t.use(d),t.instance&&(t.instance.useModuleParams(d,t.instance.params),t.instance.useModule(d))}return d}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/form/package.json b/www/assets/framework7/components/form/package.json
new file mode 100644
index 000000000..bdd3df2f1
--- /dev/null
+++ b/www/assets/framework7/components/form/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/form",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/form/form.js",
+ "module": "../../esm/components/form/form.js",
+ "jsnext:main": "../../esm/components/form/form.js",
+ "typings": "../../types/components/form/form.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/gauge/gauge-class.js b/www/assets/framework7/components/gauge/gauge-class.js
deleted file mode 100644
index 73d74cacc..000000000
--- a/www/assets/framework7/components/gauge/gauge-class.js
+++ /dev/null
@@ -1,314 +0,0 @@
-/* eslint no-nested-ternary: off */
-import { getDocument } from 'ssr-window';
-import $ from '../../shared/dom7.js';
-import { extend, deleteProps } from '../../shared/utils.js';
-import Framework7Class from '../../shared/class.js';
-/** @jsx $jsx */
-
-import $jsx from '../../shared/$jsx.js';
-
-class Gauge extends Framework7Class {
- constructor(app, params) {
- if (params === void 0) {
- params = {};
- }
-
- super(params, [app]);
- const self = this;
- const defaults = extend({}, app.params.gauge); // Extend defaults with modules params
-
- self.useModulesParams(defaults);
- self.params = extend(defaults, params);
- const {
- el
- } = self.params;
- if (!el) return self;
- const $el = $(el);
- if ($el.length === 0) return self;
- if ($el[0].f7Gauge) return $el[0].f7Gauge;
- extend(self, {
- app,
- $el,
- el: $el && $el[0]
- });
- $el[0].f7Gauge = self; // Install Modules
-
- self.useModules();
- self.init();
- return self;
- }
-
- calcRadius() {
- const self = this;
- const {
- size,
- borderWidth
- } = self.params;
- return size / 2 - borderWidth / 2;
- }
-
- calcBorderLength() {
- const self = this;
- const radius = self.calcRadius();
- return 2 * Math.PI * radius;
- }
-
- render() {
- const self = this;
- if (self.params.render) return self.params.render.call(self, self);
- const {
- type,
- value,
- size,
- bgColor,
- borderBgColor,
- borderColor,
- borderWidth,
- valueText,
- valueTextColor,
- valueFontSize,
- valueFontWeight,
- labelText,
- labelTextColor,
- labelFontSize,
- labelFontWeight
- } = self.params;
- const semiCircle = type === 'semicircle';
- const radius = self.calcRadius();
- const length = self.calcBorderLength();
- const progress = Math.max(Math.min(value, 1), 0);
- return $jsx("svg", {
- class: "gauge-svg",
- width: `${size}px`,
- height: `${semiCircle ? size / 2 : size}px`,
- viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`
- }, semiCircle && $jsx("path", {
- class: "gauge-back-semi",
- d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,
- stroke: borderBgColor,
- "stroke-width": borderWidth,
- fill: bgColor || 'none'
- }), semiCircle && $jsx("path", {
- class: "gauge-front-semi",
- d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,
- stroke: borderColor,
- "stroke-width": borderWidth,
- "stroke-dasharray": length / 2,
- "stroke-dashoffset": length / 2 * (1 + progress),
- fill: borderBgColor ? 'none' : bgColor || 'none'
- }), !semiCircle && borderBgColor && $jsx("circle", {
- class: "gauge-back-circle",
- stroke: borderBgColor,
- "stroke-width": borderWidth,
- fill: bgColor || 'none',
- cx: size / 2,
- cy: size / 2,
- r: radius
- }), !semiCircle && $jsx("circle", {
- class: "gauge-front-circle",
- transform: `rotate(-90 ${size / 2} ${size / 2})`,
- stroke: borderColor,
- "stroke-width": borderWidth,
- "stroke-dasharray": length,
- "stroke-dashoffset": length * (1 - progress),
- fill: borderBgColor ? 'none' : bgColor || 'none',
- cx: size / 2,
- cy: size / 2,
- r: radius
- }), valueText && $jsx("text", {
- class: "gauge-value-text",
- x: "50%",
- y: semiCircle ? '100%' : '50%',
- "font-weight": valueFontWeight,
- "font-size": valueFontSize,
- fill: valueTextColor,
- dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,
- "text-anchor": "middle",
- "dominant-baseline": !semiCircle && 'middle'
- }, valueText), labelText && $jsx("text", {
- class: "gauge-label-text",
- x: "50%",
- y: semiCircle ? '100%' : '50%',
- "font-weight": labelFontWeight,
- "font-size": labelFontSize,
- fill: labelTextColor,
- dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,
- "text-anchor": "middle",
- "dominant-baseline": !semiCircle && 'middle'
- }, labelText));
- }
-
- update(newParams) {
- if (newParams === void 0) {
- newParams = {};
- }
-
- const self = this;
- const document = getDocument();
- const {
- params,
- $svgEl
- } = self;
- Object.keys(newParams).forEach(param => {
- if (typeof newParams[param] !== 'undefined') {
- params[param] = newParams[param];
- }
- });
- if ($svgEl.length === 0) return self;
- const {
- value,
- size,
- bgColor,
- borderBgColor,
- borderColor,
- borderWidth,
- valueText,
- valueTextColor,
- valueFontSize,
- valueFontWeight,
- labelText,
- labelTextColor,
- labelFontSize,
- labelFontWeight
- } = params;
- const length = self.calcBorderLength();
- const progress = Math.max(Math.min(value, 1), 0);
- const radius = self.calcRadius();
- const semiCircle = params.type === 'semicircle';
- const svgAttrs = {
- width: `${size}px`,
- height: `${semiCircle ? size / 2 : size}px`,
- viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`
- };
- Object.keys(svgAttrs).forEach(attr => {
- $svgEl.attr(attr, svgAttrs[attr]);
- });
-
- if (semiCircle) {
- const backAttrs = {
- d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,
- stroke: borderBgColor,
- 'stroke-width': borderWidth,
- fill: bgColor || 'none'
- };
- const frontAttrs = {
- d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,
- stroke: borderColor,
- 'stroke-width': borderWidth,
- 'stroke-dasharray': length / 2,
- 'stroke-dashoffset': length / 2 * (1 + progress),
- fill: borderBgColor ? 'none' : bgColor || 'none'
- };
- Object.keys(backAttrs).forEach(attr => {
- $svgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);
- });
- Object.keys(frontAttrs).forEach(attr => {
- $svgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);
- });
- } else {
- const backAttrs = {
- stroke: borderBgColor,
- 'stroke-width': borderWidth,
- fill: bgColor || 'none',
- cx: size / 2,
- cy: size / 2,
- r: radius
- };
- const frontAttrs = {
- transform: `rotate(-90 ${size / 2} ${size / 2})`,
- stroke: borderColor,
- 'stroke-width': borderWidth,
- 'stroke-dasharray': length,
- 'stroke-dashoffset': length * (1 - progress),
- fill: borderBgColor ? 'none' : bgColor || 'none',
- cx: size / 2,
- cy: size / 2,
- r: radius
- };
- Object.keys(backAttrs).forEach(attr => {
- $svgEl.find('.gauge-back-circle').attr(attr, backAttrs[attr]);
- });
- Object.keys(frontAttrs).forEach(attr => {
- $svgEl.find('.gauge-front-circle').attr(attr, frontAttrs[attr]);
- });
- }
-
- if (valueText) {
- if (!$svgEl.find('.gauge-value-text').length) {
- const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');
- textEl.classList.add('gauge-value-text');
- $svgEl.append(textEl);
- }
-
- const textAttrs = {
- x: '50%',
- y: semiCircle ? '100%' : '50%',
- 'font-weight': valueFontWeight,
- 'font-size': valueFontSize,
- fill: valueTextColor,
- dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,
- 'text-anchor': 'middle',
- 'dominant-baseline': !semiCircle && 'middle'
- };
- Object.keys(textAttrs).forEach(attr => {
- $svgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);
- });
- $svgEl.find('.gauge-value-text').text(valueText);
- } else {
- $svgEl.find('.gauge-value-text').remove();
- }
-
- if (labelText) {
- if (!$svgEl.find('.gauge-label-text').length) {
- const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');
- textEl.classList.add('gauge-label-text');
- $svgEl.append(textEl);
- }
-
- const labelAttrs = {
- x: '50%',
- y: semiCircle ? '100%' : '50%',
- 'font-weight': labelFontWeight,
- 'font-size': labelFontSize,
- fill: labelTextColor,
- dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,
- 'text-anchor': 'middle',
- 'dominant-baseline': !semiCircle && 'middle'
- };
- Object.keys(labelAttrs).forEach(attr => {
- $svgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);
- });
- $svgEl.find('.gauge-label-text').text(labelText);
- } else {
- $svgEl.find('.gauge-label-text').remove();
- }
-
- return self;
- }
-
- init() {
- const self = this;
- const $svgEl = $(self.render()).eq(0);
- $svgEl.f7Gauge = self;
- extend(self, {
- $svgEl,
- svgEl: $svgEl && $svgEl[0]
- });
- self.$el.append($svgEl);
- return self;
- }
-
- destroy() {
- const self = this;
- if (!self.$el || self.destroyed) return;
- self.$el.trigger('gauge:beforedestroy');
- self.emit('local::beforeDestroy gaugeBeforeDestroy', self);
- self.$svgEl.remove();
- delete self.$el[0].f7Gauge;
- deleteProps(self);
- self.destroyed = true;
- }
-
-}
-
-export default Gauge;
\ No newline at end of file
diff --git a/www/assets/framework7/components/gauge/gauge.d.ts b/www/assets/framework7/components/gauge/gauge.d.ts
index 3fc989b3d..4bb3f4c4a 100644
--- a/www/assets/framework7/components/gauge/gauge.d.ts
+++ b/www/assets/framework7/components/gauge/gauge.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Gauge {
interface Gauge extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/gauge/gauge.js b/www/assets/framework7/components/gauge/gauge.js
index 2742c3d5c..01a961139 100644
--- a/www/assets/framework7/components/gauge/gauge.js
+++ b/www/assets/framework7/components/gauge/gauge.js
@@ -1,99 +1 @@
-import $ from '../../shared/dom7.js';
-import Gauge from './gauge-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-import { extend } from '../../shared/utils.js';
-export default {
- name: 'gauge',
- static: {
- Gauge
- },
-
- create() {
- const app = this;
- app.gauge = ConstructorMethods({
- defaultSelector: '.gauge',
- constructor: Gauge,
- app,
- domProp: 'f7Gauge'
- });
-
- app.gauge.update = function update(el, newParams) {
- const $el = $(el);
- if ($el.length === 0) return undefined;
- const gauge = app.gauge.get(el);
- if (!gauge) return undefined;
- gauge.update(newParams);
- return gauge;
- };
- },
-
- params: {
- gauge: {
- el: null,
- type: 'circle',
- value: 0,
- size: 200,
- bgColor: 'transparent',
- borderBgColor: '#eeeeee',
- borderColor: '#000000',
- borderWidth: 10,
- valueText: null,
- valueTextColor: '#000000',
- valueFontSize: 31,
- valueFontWeight: 500,
- labelText: null,
- labelTextColor: '#888888',
- labelFontSize: 14,
- labelFontWeight: 400
- }
- },
- on: {
- tabMounted(tabEl) {
- const app = this;
- $(tabEl).find('.gauge-init').each(el => {
- app.gauge.create(extend({
- el
- }, $(el).dataset() || {}));
- });
- },
-
- tabBeforeRemove(tabEl) {
- $(tabEl).find('.gauge-init').each(el => {
- if (el.f7Gauge) el.f7Gauge.destroy();
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.gauge-init').each(el => {
- app.gauge.create(extend({
- el
- }, $(el).dataset() || {}));
- });
- },
-
- pageBeforeRemove(page) {
- page.$el.find('.gauge-init').each(el => {
- if (el.f7Gauge) el.f7Gauge.destroy();
- });
- }
-
- },
- vnode: {
- 'gauge-init': {
- insert(vnode) {
- const app = this;
- const el = vnode.elm;
- app.gauge.create(extend({
- el
- }, $(el).dataset() || {}));
- },
-
- destroy(vnode) {
- const el = vnode.elm;
- if (el.f7Gauge) el.f7Gauge.destroy();
- }
-
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var r=e.$,a=e.utils,n=(e.getDevice,e.getSupport,e.Class),o=(e.Modal,e.ConstructorMethods);e.ModalMethods;function i(e){this.wrapped=e}function l(e){var t,r;function a(t,r){try{var o=e[t](r),l=o.value,s=l instanceof i;Promise.resolve(s?l.wrapped:l).then((function(e){s?a("return"===t?"return":"next",e):n(o.done?"return":"normal",e)}),(function(e){a("throw",e)}))}catch(e){n("throw",e)}}function n(e,n){switch(e){case"return":t.resolve({value:n,done:!0});break;case"throw":t.reject(n);break;default:t.resolve({value:n,done:!1})}(t=t.next)?a(t.key,t.arg):r=null}this._invoke=function(e,n){return new Promise((function(o,i){var l={key:e,arg:n,resolve:o,reject:i,next:null};r?r=r.next=l:(t=r=l,a(e,n))}))},"function"!=typeof e.return&&(this.return=void 0)}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}l.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},l.prototype.next=function(e){return this._invoke("next",e)},l.prototype.throw=function(e){return this._invoke("throw",e)},l.prototype.return=function(e){return this._invoke("return",e)};var c=a.extend,d=a.deleteProps,f=function(e){var t,a;function n(t,a){var n;void 0===a&&(a={});var o=u(n=e.call(this,a,[t])||this),i=c({},t.params.gauge);o.useModulesParams(i),o.params=c(i,a);var l=o.params.el;if(!l)return o||u(n);var s=r(l);return 0===s.length?o||u(n):s[0].f7Gauge?s[0].f7Gauge||u(n):(c(o,{app:t,$el:s,el:s&&s[0]}),s[0].f7Gauge=o,o.useModules(),o.init(),o||u(n))}a=e,(t=n).prototype=Object.create(a.prototype),t.prototype.constructor=t,s(t,a);var o=n.prototype;return o.calcRadius=function(){var e=this.params;return e.size/2-e.borderWidth/2},o.calcBorderLength=function(){var e=this.calcRadius();return 2*Math.PI*e},o.render=function(){var e=this;if(e.params.render)return e.params.render.call(e,e);var t=e.params,r=t.type,a=t.value,n=t.size,o=t.bgColor,i=t.borderBgColor,l=t.borderColor,s=t.borderWidth,u=t.valueText,c=t.valueTextColor,d=t.valueFontSize,f=t.valueFontWeight,g=t.labelText,h=t.labelTextColor,v=t.labelFontSize,p=t.labelFontWeight,x="semicircle"===r,m=e.calcRadius(),b=e.calcBorderLength(),y=Math.max(Math.min(a,1),0);return $jsx("svg",{class:"gauge-svg",width:n+"px",height:(x?n/2:n)+"px",viewBox:"0 0 "+n+" "+(x?n/2:n)},x&&$jsx("path",{class:"gauge-back-semi",d:"M"+(n-s/2)+","+n/2+" a1,1 0 0,0 -"+(n-s)+",0",stroke:i,"stroke-width":s,fill:o||"none"}),x&&$jsx("path",{class:"gauge-front-semi",d:"M"+(n-s/2)+","+n/2+" a1,1 0 0,0 -"+(n-s)+",0",stroke:l,"stroke-width":s,"stroke-dasharray":b/2,"stroke-dashoffset":b/2*(1+y),fill:i?"none":o||"none"}),!x&&i&&$jsx("circle",{class:"gauge-back-circle",stroke:i,"stroke-width":s,fill:o||"none",cx:n/2,cy:n/2,r:m}),!x&&$jsx("circle",{class:"gauge-front-circle",transform:"rotate(-90 "+n/2+" "+n/2+")",stroke:l,"stroke-width":s,"stroke-dasharray":b,"stroke-dashoffset":b*(1-y),fill:i?"none":o||"none",cx:n/2,cy:n/2,r:m}),u&&$jsx("text",{class:"gauge-value-text",x:"50%",y:x?"100%":"50%","font-weight":f,"font-size":d,fill:c,dy:x?g?-v-15:-5:0,"text-anchor":"middle","dominant-baseline":!x&&"middle"},u),g&&$jsx("text",{class:"gauge-label-text",x:"50%",y:x?"100%":"50%","font-weight":p,"font-size":v,fill:h,dy:x?-5:u?d/2+10:0,"text-anchor":"middle","dominant-baseline":!x&&"middle"},g))},o.update=function(e){void 0===e&&(e={});var t=this,r=t.params,a=t.$svgEl;if(Object.keys(e).forEach((function(t){void 0!==e[t]&&(r[t]=e[t])})),0===a.length)return t;var n=r.value,o=r.size,i=r.bgColor,l=r.borderBgColor,s=r.borderColor,u=r.borderWidth,c=r.valueText,d=r.valueTextColor,f=r.valueFontSize,g=r.valueFontWeight,h=r.labelText,v=r.labelTextColor,p=r.labelFontSize,x=r.labelFontWeight,m=t.calcBorderLength(),b=Math.max(Math.min(n,1),0),y=t.calcRadius(),k="semicircle"===r.type,w={width:o+"px",height:(k?o/2:o)+"px",viewBox:"0 0 "+o+" "+(k?o/2:o)};if(Object.keys(w).forEach((function(e){a.attr(e,w[e])})),k){var j={d:"M"+(o-u/2)+","+o/2+" a1,1 0 0,0 -"+(o-u)+",0",stroke:l,"stroke-width":u,fill:i||"none"},C={d:"M"+(o-u/2)+","+o/2+" a1,1 0 0,0 -"+(o-u)+",0",stroke:s,"stroke-width":u,"stroke-dasharray":m/2,"stroke-dashoffset":m/2*(1+b),fill:l?"none":i||"none"};Object.keys(j).forEach((function(e){a.find(".gauge-back-semi").attr(e,j[e])})),Object.keys(C).forEach((function(e){a.find(".gauge-front-semi").attr(e,C[e])}))}else{var M={stroke:l,"stroke-width":u,fill:i||"none",cx:o/2,cy:o/2,r:y},$={transform:"rotate(-90 "+o/2+" "+o/2+")",stroke:s,"stroke-width":u,"stroke-dasharray":m,"stroke-dashoffset":m*(1-b),fill:l?"none":i||"none",cx:o/2,cy:o/2,r:y};Object.keys(M).forEach((function(e){a.find(".gauge-back-circle").attr(e,M[e])})),Object.keys($).forEach((function(e){a.find(".gauge-front-circle").attr(e,$[e])}))}if(c){if(!a.find(".gauge-value-text").length){var E=document.createElementNS("http://www.w3.org/2000/svg","text");E.classList.add("gauge-value-text"),a.append(E)}var z={x:"50%",y:k?"100%":"50%","font-weight":g,"font-size":f,fill:d,dy:k?h?-p-15:-5:0,"text-anchor":"middle","dominant-baseline":!k&&"middle"};Object.keys(z).forEach((function(e){a.find(".gauge-value-text").attr(e,z[e])})),a.find(".gauge-value-text").text(c)}else a.find(".gauge-value-text").remove();if(h){if(!a.find(".gauge-label-text").length){var G=document.createElementNS("http://www.w3.org/2000/svg","text");G.classList.add("gauge-label-text"),a.append(G)}var F={x:"50%",y:k?"100%":"50%","font-weight":x,"font-size":p,fill:v,dy:k?-5:c?f/2+10:0,"text-anchor":"middle","dominant-baseline":!k&&"middle"};Object.keys(F).forEach((function(e){a.find(".gauge-label-text").attr(e,F[e])})),a.find(".gauge-label-text").text(h)}else a.find(".gauge-label-text").remove();return t},o.init=function(){var e=this,t=r(e.render()).eq(0);return t.f7Gauge=e,c(e,{$svgEl:t,svgEl:t&&t[0]}),e.$el.append(t),e},o.destroy=function(){var e=this;e.$el&&!e.destroyed&&(e.$el.trigger("gauge:beforedestroy"),e.emit("local::beforeDestroy gaugeBeforeDestroy",e),e.$svgEl.remove(),delete e.$el[0].f7Gauge,d(e),e.destroyed=!0)},n}(n),g={name:"gauge",static:{Gauge:f},create:function(){var e=this;e.gauge=o({defaultSelector:".gauge",constructor:f,app:e,domProp:"f7Gauge"}),e.gauge.update=function(t,a){if(0!==r(t).length){var n=e.gauge.get(t);if(n)return n.update(a),n}}},params:{gauge:{el:null,type:"circle",value:0,size:200,bgColor:"transparent",borderBgColor:"#eeeeee",borderColor:"#000000",borderWidth:10,valueText:null,valueTextColor:"#000000",valueFontSize:31,valueFontWeight:500,labelText:null,labelTextColor:"#888888",labelFontSize:14,labelFontWeight:400}},on:{tabMounted:function(e){var t=this;r(e).find(".gauge-init").each((function(e){t.gauge.create(c({el:e},r(e).dataset()||{}))}))},tabBeforeRemove:function(e){r(e).find(".gauge-init").each((function(e){e.f7Gauge&&e.f7Gauge.destroy()}))},pageInit:function(e){var t=this;e.$el.find(".gauge-init").each((function(e){t.gauge.create(c({el:e},r(e).dataset()||{}))}))},pageBeforeRemove:function(e){e.$el.find(".gauge-init").each((function(e){e.f7Gauge&&e.f7Gauge.destroy()}))}},vnode:{"gauge-init":{insert:function(e){var t=e.elm;this.gauge.create(c({el:t},r(t).dataset()||{}))},destroy:function(e){var t=e.elm;t.f7Gauge&&t.f7Gauge.destroy()}}}};if(t){if(e.prototype.modules&&e.prototype.modules[g.name])return;e.use(g),e.instance&&(e.instance.useModuleParams(g,e.instance.params),e.instance.useModule(g))}return g}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/gauge/gauge.lazy.js b/www/assets/framework7/components/gauge/gauge.lazy.js
deleted file mode 100644
index 1848a0080..000000000
--- a/www/assets/framework7/components/gauge/gauge.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,o=e.utils,r=(e.getDevice,e.getSupport,e.Class),s=(e.Modal,e.ConstructorMethods),l=(e.ModalMethods,e.$jsx),n=o.extend,i=o.deleteProps;class d extends r{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const o=this,r=n({},e.params.gauge);o.useModulesParams(r),o.params=n(r,t);const{el:s}=o.params;if(!s)return o;const l=a(s);return 0===l.length?o:l[0].f7Gauge?l[0].f7Gauge:(n(o,{app:e,$el:l,el:l&&l[0]}),l[0].f7Gauge=o,o.useModules(),o.init(),o)}calcRadius(){const{size:e,borderWidth:t}=this.params;return e/2-t/2}calcBorderLength(){const e=this.calcRadius();return 2*Math.PI*e}render(){const e=this;if(e.params.render)return e.params.render.call(e,e);const{type:t,value:a,size:o,bgColor:r,borderBgColor:s,borderColor:n,borderWidth:i,valueText:d,valueTextColor:g,valueFontSize:c,valueFontWeight:u,labelText:f,labelTextColor:h,labelFontSize:m,labelFontWeight:x}=e.params,b="semicircle"===t,p=e.calcRadius(),v=e.calcBorderLength(),y=Math.max(Math.min(a,1),0);return l("svg",{class:"gauge-svg",width:`${o}px`,height:`${b?o/2:o}px`,viewBox:`0 0 ${o} ${b?o/2:o}`},b&&l("path",{class:"gauge-back-semi",d:`M${o-i/2},${o/2} a1,1 0 0,0 -${o-i},0`,stroke:s,"stroke-width":i,fill:r||"none"}),b&&l("path",{class:"gauge-front-semi",d:`M${o-i/2},${o/2} a1,1 0 0,0 -${o-i},0`,stroke:n,"stroke-width":i,"stroke-dasharray":v/2,"stroke-dashoffset":v/2*(1+y),fill:s?"none":r||"none"}),!b&&s&&l("circle",{class:"gauge-back-circle",stroke:s,"stroke-width":i,fill:r||"none",cx:o/2,cy:o/2,r:p}),!b&&l("circle",{class:"gauge-front-circle",transform:`rotate(-90 ${o/2} ${o/2})`,stroke:n,"stroke-width":i,"stroke-dasharray":v,"stroke-dashoffset":v*(1-y),fill:s?"none":r||"none",cx:o/2,cy:o/2,r:p}),d&&l("text",{class:"gauge-value-text",x:"50%",y:b?"100%":"50%","font-weight":u,"font-size":c,fill:g,dy:b?f?-m-15:-5:0,"text-anchor":"middle","dominant-baseline":!b&&"middle"},d),f&&l("text",{class:"gauge-label-text",x:"50%",y:b?"100%":"50%","font-weight":x,"font-size":m,fill:h,dy:b?-5:d?c/2+10:0,"text-anchor":"middle","dominant-baseline":!b&&"middle"},f))}update(e){void 0===e&&(e={});const t=this,{params:a,$svgEl:o}=t;if(Object.keys(e).forEach((t=>{void 0!==e[t]&&(a[t]=e[t])})),0===o.length)return t;const{value:r,size:s,bgColor:l,borderBgColor:n,borderColor:i,borderWidth:d,valueText:g,valueTextColor:c,valueFontSize:u,valueFontWeight:f,labelText:h,labelTextColor:m,labelFontSize:x,labelFontWeight:b}=a,p=t.calcBorderLength(),v=Math.max(Math.min(r,1),0),y=t.calcRadius(),k="semicircle"===a.type,$={width:`${s}px`,height:`${k?s/2:s}px`,viewBox:`0 0 ${s} ${k?s/2:s}`};if(Object.keys($).forEach((e=>{o.attr(e,$[e])})),k){const e={d:`M${s-d/2},${s/2} a1,1 0 0,0 -${s-d},0`,stroke:n,"stroke-width":d,fill:l||"none"},t={d:`M${s-d/2},${s/2} a1,1 0 0,0 -${s-d},0`,stroke:i,"stroke-width":d,"stroke-dasharray":p/2,"stroke-dashoffset":p/2*(1+v),fill:n?"none":l||"none"};Object.keys(e).forEach((t=>{o.find(".gauge-back-semi").attr(t,e[t])})),Object.keys(t).forEach((e=>{o.find(".gauge-front-semi").attr(e,t[e])}))}else{const e={stroke:n,"stroke-width":d,fill:l||"none",cx:s/2,cy:s/2,r:y},t={transform:`rotate(-90 ${s/2} ${s/2})`,stroke:i,"stroke-width":d,"stroke-dasharray":p,"stroke-dashoffset":p*(1-v),fill:n?"none":l||"none",cx:s/2,cy:s/2,r:y};Object.keys(e).forEach((t=>{o.find(".gauge-back-circle").attr(t,e[t])})),Object.keys(t).forEach((e=>{o.find(".gauge-front-circle").attr(e,t[e])}))}if(g){if(!o.find(".gauge-value-text").length){const e=document.createElementNS("http://www.w3.org/2000/svg","text");e.classList.add("gauge-value-text"),o.append(e)}const e={x:"50%",y:k?"100%":"50%","font-weight":f,"font-size":u,fill:c,dy:k?h?-x-15:-5:0,"text-anchor":"middle","dominant-baseline":!k&&"middle"};Object.keys(e).forEach((t=>{o.find(".gauge-value-text").attr(t,e[t])})),o.find(".gauge-value-text").text(g)}else o.find(".gauge-value-text").remove();if(h){if(!o.find(".gauge-label-text").length){const e=document.createElementNS("http://www.w3.org/2000/svg","text");e.classList.add("gauge-label-text"),o.append(e)}const e={x:"50%",y:k?"100%":"50%","font-weight":b,"font-size":x,fill:m,dy:k?-5:g?u/2+10:0,"text-anchor":"middle","dominant-baseline":!k&&"middle"};Object.keys(e).forEach((t=>{o.find(".gauge-label-text").attr(t,e[t])})),o.find(".gauge-label-text").text(h)}else o.find(".gauge-label-text").remove();return t}init(){const e=this,t=a(e.render()).eq(0);return t.f7Gauge=e,n(e,{$svgEl:t,svgEl:t&&t[0]}),e.$el.append(t),e}destroy(){const e=this;e.$el&&!e.destroyed&&(e.$el.trigger("gauge:beforedestroy"),e.emit("local::beforeDestroy gaugeBeforeDestroy",e),e.$svgEl.remove(),delete e.$el[0].f7Gauge,i(e),e.destroyed=!0)}}var g={name:"gauge",static:{Gauge:d},create(){const e=this;e.gauge=s({defaultSelector:".gauge",constructor:d,app:e,domProp:"f7Gauge"}),e.gauge.update=function(t,o){if(0===a(t).length)return;const r=e.gauge.get(t);return r?(r.update(o),r):void 0}},params:{gauge:{el:null,type:"circle",value:0,size:200,bgColor:"transparent",borderBgColor:"#eeeeee",borderColor:"#000000",borderWidth:10,valueText:null,valueTextColor:"#000000",valueFontSize:31,valueFontWeight:500,labelText:null,labelTextColor:"#888888",labelFontSize:14,labelFontWeight:400}},on:{tabMounted(e){const t=this;a(e).find(".gauge-init").each((e=>{t.gauge.create(n({el:e},a(e).dataset()||{}))}))},tabBeforeRemove(e){a(e).find(".gauge-init").each((e=>{e.f7Gauge&&e.f7Gauge.destroy()}))},pageInit(e){const t=this;e.$el.find(".gauge-init").each((e=>{t.gauge.create(n({el:e},a(e).dataset()||{}))}))},pageBeforeRemove(e){e.$el.find(".gauge-init").each((e=>{e.f7Gauge&&e.f7Gauge.destroy()}))}},vnode:{"gauge-init":{insert(e){const t=e.elm;this.gauge.create(n({el:t},a(t).dataset()||{}))},destroy(e){const t=e.elm;t.f7Gauge&&t.f7Gauge.destroy()}}}};if(t){if(e.prototype.modules&&e.prototype.modules[g.name])return;e.use(g),e.instance&&(e.instance.useModuleParams(g,e.instance.params),e.instance.useModule(g))}return g}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/gauge/package.json b/www/assets/framework7/components/gauge/package.json
new file mode 100644
index 000000000..ce73ee0a9
--- /dev/null
+++ b/www/assets/framework7/components/gauge/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/gauge",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/gauge/gauge.js",
+ "module": "../../esm/components/gauge/gauge.js",
+ "jsnext:main": "../../esm/components/gauge/gauge.js",
+ "typings": "../../types/components/gauge/gauge.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/grid/grid-rtl.css b/www/assets/framework7/components/grid/grid-rtl.css
index 093c02532..0b7df4807 100644
--- a/www/assets/framework7/components/grid/grid-rtl.css
+++ b/www/assets/framework7/components/grid/grid-rtl.css
@@ -1 +1 @@
-:root{--f7-grid-gap:16px;--f7-grid-row-gap:0px;--f7-grid-resize-handler-bg-color:rgba(0, 0, 0, 0.35)}:root .dark,:root.dark{--f7-grid-resize-handler-bg-color:rgba(255, 255, 255, 0.35)}.row{display:flex;justify-content:space-between;flex-wrap:wrap;align-items:flex-start;--f7-cols-per-row:1}.row+.row{margin-top:var(--f7-grid-row-gap)}.row>.col,.row>[class*=col-]{box-sizing:border-box;width:calc((100% - var(--f7-grid-gap) * (var(--f7-cols-per-row) - 1))/ var(--f7-cols-per-row))}.row>.col.resizable,.row>[class*=col-].resizable{position:relative}.row.resizable{position:relative}.row.no-gap{--f7-grid-gap:0px;--f7-grid-row-gap:0px}.row .col-5{--f7-cols-per-row:20}.row .col-10{--f7-cols-per-row:10}.row .col-15{--f7-cols-per-row:6.66666667}.row .col-20{--f7-cols-per-row:5}.row .col-25{--f7-cols-per-row:4}.row .col-30{--f7-cols-per-row:3.33333333}.row .col-33{--f7-cols-per-row:3}.row .col-35{--f7-cols-per-row:2.85714286}.row .col-40{--f7-cols-per-row:2.5}.row .col-45{--f7-cols-per-row:2.22222222}.row .col-50{--f7-cols-per-row:2}.row .col-55{--f7-cols-per-row:1.81818182}.row .col-60{--f7-cols-per-row:1.66666667}.row .col-65{--f7-cols-per-row:1.53846154}.row .col-66{--f7-cols-per-row:1.5}.row .col-70{--f7-cols-per-row:1.42857143}.row .col-75{--f7-cols-per-row:1.33333333}.row .col-80{--f7-cols-per-row:1.25}.row .col-85{--f7-cols-per-row:1.17647059}.row .col-90{--f7-cols-per-row:1.11111111}.row .col-95{--f7-cols-per-row:1.05263158}.row .col-100{--f7-cols-per-row:1}.row .col:nth-last-of-type(1),.row .col:nth-last-of-type(1)~.col{--f7-cols-per-row:1}.row .col:nth-last-of-type(2),.row .col:nth-last-of-type(2)~.col{--f7-cols-per-row:2}.row .col:nth-last-of-type(3),.row .col:nth-last-of-type(3)~.col{--f7-cols-per-row:3}.row .col:nth-last-of-type(4),.row .col:nth-last-of-type(4)~.col{--f7-cols-per-row:4}.row .col:nth-last-of-type(5),.row .col:nth-last-of-type(5)~.col{--f7-cols-per-row:5}.row .col:nth-last-of-type(6),.row .col:nth-last-of-type(6)~.col{--f7-cols-per-row:6}.row .col:nth-last-of-type(7),.row .col:nth-last-of-type(7)~.col{--f7-cols-per-row:7}.row .col:nth-last-of-type(8),.row .col:nth-last-of-type(8)~.col{--f7-cols-per-row:8}.row .col:nth-last-of-type(9),.row .col:nth-last-of-type(9)~.col{--f7-cols-per-row:9}.row .col:nth-last-of-type(10),.row .col:nth-last-of-type(10)~.col{--f7-cols-per-row:10}.row .col:nth-last-of-type(11),.row .col:nth-last-of-type(11)~.col{--f7-cols-per-row:11}.row .col:nth-last-of-type(12),.row .col:nth-last-of-type(12)~.col{--f7-cols-per-row:12}.row .col:nth-last-of-type(13),.row .col:nth-last-of-type(13)~.col{--f7-cols-per-row:13}.row .col:nth-last-of-type(14),.row .col:nth-last-of-type(14)~.col{--f7-cols-per-row:14}.row .col:nth-last-of-type(15),.row .col:nth-last-of-type(15)~.col{--f7-cols-per-row:15}.row .col:nth-last-of-type(16),.row .col:nth-last-of-type(16)~.col{--f7-cols-per-row:16}.row .col:nth-last-of-type(17),.row .col:nth-last-of-type(17)~.col{--f7-cols-per-row:17}.row .col:nth-last-of-type(18),.row .col:nth-last-of-type(18)~.col{--f7-cols-per-row:18}.row .col:nth-last-of-type(19),.row .col:nth-last-of-type(19)~.col{--f7-cols-per-row:19}.row .col:nth-last-of-type(20),.row .col:nth-last-of-type(20)~.col{--f7-cols-per-row:20}.row .col:nth-last-of-type(21),.row .col:nth-last-of-type(21)~.col{--f7-cols-per-row:21}.row .col:nth-last-of-type(22),.row .col:nth-last-of-type(22)~.col{--f7-cols-per-row:22}@media (min-width:480px){.row .xsmall-5{--f7-cols-per-row:20}.row .xsmall-10{--f7-cols-per-row:10}.row .xsmall-15{--f7-cols-per-row:6.66666667}.row .xsmall-20{--f7-cols-per-row:5}.row .xsmall-25{--f7-cols-per-row:4}.row .xsmall-30{--f7-cols-per-row:3.33333333}.row .xsmall-33{--f7-cols-per-row:3}.row .xsmall-35{--f7-cols-per-row:2.85714286}.row .xsmall-40{--f7-cols-per-row:2.5}.row .xsmall-45{--f7-cols-per-row:2.22222222}.row .xsmall-50{--f7-cols-per-row:2}.row .xsmall-55{--f7-cols-per-row:1.81818182}.row .xsmall-60{--f7-cols-per-row:1.66666667}.row .xsmall-65{--f7-cols-per-row:1.53846154}.row .xsmall-66{--f7-cols-per-row:1.5}.row .xsmall-70{--f7-cols-per-row:1.42857143}.row .xsmall-75{--f7-cols-per-row:1.33333333}.row .xsmall-80{--f7-cols-per-row:1.25}.row .xsmall-85{--f7-cols-per-row:1.17647059}.row .xsmall-90{--f7-cols-per-row:1.11111111}.row .xsmall-95{--f7-cols-per-row:1.05263158}.row .xsmall-100{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(1),.row .xsmall-auto:nth-last-of-type(1)~.xsmall-auto{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(2),.row .xsmall-auto:nth-last-of-type(2)~.xsmall-auto{--f7-cols-per-row:2}.row .xsmall-auto:nth-last-of-type(3),.row .xsmall-auto:nth-last-of-type(3)~.xsmall-auto{--f7-cols-per-row:3}.row .xsmall-auto:nth-last-of-type(4),.row .xsmall-auto:nth-last-of-type(4)~.xsmall-auto{--f7-cols-per-row:4}.row .xsmall-auto:nth-last-of-type(5),.row .xsmall-auto:nth-last-of-type(5)~.xsmall-auto{--f7-cols-per-row:5}.row .xsmall-auto:nth-last-of-type(6),.row .xsmall-auto:nth-last-of-type(6)~.xsmall-auto{--f7-cols-per-row:6}.row .xsmall-auto:nth-last-of-type(7),.row .xsmall-auto:nth-last-of-type(7)~.xsmall-auto{--f7-cols-per-row:7}.row .xsmall-auto:nth-last-of-type(8),.row .xsmall-auto:nth-last-of-type(8)~.xsmall-auto{--f7-cols-per-row:8}.row .xsmall-auto:nth-last-of-type(9),.row .xsmall-auto:nth-last-of-type(9)~.xsmall-auto{--f7-cols-per-row:9}.row .xsmall-auto:nth-last-of-type(10),.row .xsmall-auto:nth-last-of-type(10)~.xsmall-auto{--f7-cols-per-row:10}.row .xsmall-auto:nth-last-of-type(11),.row .xsmall-auto:nth-last-of-type(11)~.xsmall-auto{--f7-cols-per-row:11}.row .xsmall-auto:nth-last-of-type(12),.row .xsmall-auto:nth-last-of-type(12)~.xsmall-auto{--f7-cols-per-row:12}.row .xsmall-auto:nth-last-of-type(13),.row .xsmall-auto:nth-last-of-type(13)~.xsmall-auto{--f7-cols-per-row:13}.row .xsmall-auto:nth-last-of-type(14),.row .xsmall-auto:nth-last-of-type(14)~.xsmall-auto{--f7-cols-per-row:14}.row .xsmall-auto:nth-last-of-type(15),.row .xsmall-auto:nth-last-of-type(15)~.xsmall-auto{--f7-cols-per-row:15}.row .xsmall-auto:nth-last-of-type(16),.row .xsmall-auto:nth-last-of-type(16)~.xsmall-auto{--f7-cols-per-row:16}.row .xsmall-auto:nth-last-of-type(17),.row .xsmall-auto:nth-last-of-type(17)~.xsmall-auto{--f7-cols-per-row:17}.row .xsmall-auto:nth-last-of-type(18),.row .xsmall-auto:nth-last-of-type(18)~.xsmall-auto{--f7-cols-per-row:18}.row .xsmall-auto:nth-last-of-type(19),.row .xsmall-auto:nth-last-of-type(19)~.xsmall-auto{--f7-cols-per-row:19}.row .xsmall-auto:nth-last-of-type(20),.row .xsmall-auto:nth-last-of-type(20)~.xsmall-auto{--f7-cols-per-row:20}.row .xsmall-auto:nth-last-of-type(21),.row .xsmall-auto:nth-last-of-type(21)~.xsmall-auto{--f7-cols-per-row:21}.row .xsmall-auto:nth-last-of-type(22),.row .xsmall-auto:nth-last-of-type(22)~.xsmall-auto{--f7-cols-per-row:22}}@media (min-width:568px){.row .small-5{--f7-cols-per-row:20}.row .small-10{--f7-cols-per-row:10}.row .small-15{--f7-cols-per-row:6.66666667}.row .small-20{--f7-cols-per-row:5}.row .small-25{--f7-cols-per-row:4}.row .small-30{--f7-cols-per-row:3.33333333}.row .small-33{--f7-cols-per-row:3}.row .small-35{--f7-cols-per-row:2.85714286}.row .small-40{--f7-cols-per-row:2.5}.row .small-45{--f7-cols-per-row:2.22222222}.row .small-50{--f7-cols-per-row:2}.row .small-55{--f7-cols-per-row:1.81818182}.row .small-60{--f7-cols-per-row:1.66666667}.row .small-65{--f7-cols-per-row:1.53846154}.row .small-66{--f7-cols-per-row:1.5}.row .small-70{--f7-cols-per-row:1.42857143}.row .small-75{--f7-cols-per-row:1.33333333}.row .small-80{--f7-cols-per-row:1.25}.row .small-85{--f7-cols-per-row:1.17647059}.row .small-90{--f7-cols-per-row:1.11111111}.row .small-95{--f7-cols-per-row:1.05263158}.row .small-100{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(1),.row .small-auto:nth-last-of-type(1)~.small-auto{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(2),.row .small-auto:nth-last-of-type(2)~.small-auto{--f7-cols-per-row:2}.row .small-auto:nth-last-of-type(3),.row .small-auto:nth-last-of-type(3)~.small-auto{--f7-cols-per-row:3}.row .small-auto:nth-last-of-type(4),.row .small-auto:nth-last-of-type(4)~.small-auto{--f7-cols-per-row:4}.row .small-auto:nth-last-of-type(5),.row .small-auto:nth-last-of-type(5)~.small-auto{--f7-cols-per-row:5}.row .small-auto:nth-last-of-type(6),.row .small-auto:nth-last-of-type(6)~.small-auto{--f7-cols-per-row:6}.row .small-auto:nth-last-of-type(7),.row .small-auto:nth-last-of-type(7)~.small-auto{--f7-cols-per-row:7}.row .small-auto:nth-last-of-type(8),.row .small-auto:nth-last-of-type(8)~.small-auto{--f7-cols-per-row:8}.row .small-auto:nth-last-of-type(9),.row .small-auto:nth-last-of-type(9)~.small-auto{--f7-cols-per-row:9}.row .small-auto:nth-last-of-type(10),.row .small-auto:nth-last-of-type(10)~.small-auto{--f7-cols-per-row:10}.row .small-auto:nth-last-of-type(11),.row .small-auto:nth-last-of-type(11)~.small-auto{--f7-cols-per-row:11}.row .small-auto:nth-last-of-type(12),.row .small-auto:nth-last-of-type(12)~.small-auto{--f7-cols-per-row:12}.row .small-auto:nth-last-of-type(13),.row .small-auto:nth-last-of-type(13)~.small-auto{--f7-cols-per-row:13}.row .small-auto:nth-last-of-type(14),.row .small-auto:nth-last-of-type(14)~.small-auto{--f7-cols-per-row:14}.row .small-auto:nth-last-of-type(15),.row .small-auto:nth-last-of-type(15)~.small-auto{--f7-cols-per-row:15}.row .small-auto:nth-last-of-type(16),.row .small-auto:nth-last-of-type(16)~.small-auto{--f7-cols-per-row:16}.row .small-auto:nth-last-of-type(17),.row .small-auto:nth-last-of-type(17)~.small-auto{--f7-cols-per-row:17}.row .small-auto:nth-last-of-type(18),.row .small-auto:nth-last-of-type(18)~.small-auto{--f7-cols-per-row:18}.row .small-auto:nth-last-of-type(19),.row .small-auto:nth-last-of-type(19)~.small-auto{--f7-cols-per-row:19}.row .small-auto:nth-last-of-type(20),.row .small-auto:nth-last-of-type(20)~.small-auto{--f7-cols-per-row:20}.row .small-auto:nth-last-of-type(21),.row .small-auto:nth-last-of-type(21)~.small-auto{--f7-cols-per-row:21}.row .small-auto:nth-last-of-type(22),.row .small-auto:nth-last-of-type(22)~.small-auto{--f7-cols-per-row:22}}@media (min-width:768px){.row .medium-5{--f7-cols-per-row:20}.row .medium-10{--f7-cols-per-row:10}.row .medium-15{--f7-cols-per-row:6.66666667}.row .medium-20{--f7-cols-per-row:5}.row .medium-25{--f7-cols-per-row:4}.row .medium-30{--f7-cols-per-row:3.33333333}.row .medium-33{--f7-cols-per-row:3}.row .medium-35{--f7-cols-per-row:2.85714286}.row .medium-40{--f7-cols-per-row:2.5}.row .medium-45{--f7-cols-per-row:2.22222222}.row .medium-50{--f7-cols-per-row:2}.row .medium-55{--f7-cols-per-row:1.81818182}.row .medium-60{--f7-cols-per-row:1.66666667}.row .medium-65{--f7-cols-per-row:1.53846154}.row .medium-66{--f7-cols-per-row:1.5}.row .medium-70{--f7-cols-per-row:1.42857143}.row .medium-75{--f7-cols-per-row:1.33333333}.row .medium-80{--f7-cols-per-row:1.25}.row .medium-85{--f7-cols-per-row:1.17647059}.row .medium-90{--f7-cols-per-row:1.11111111}.row .medium-95{--f7-cols-per-row:1.05263158}.row .medium-100{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(1),.row .medium-auto:nth-last-of-type(1)~.medium-auto{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(2),.row .medium-auto:nth-last-of-type(2)~.medium-auto{--f7-cols-per-row:2}.row .medium-auto:nth-last-of-type(3),.row .medium-auto:nth-last-of-type(3)~.medium-auto{--f7-cols-per-row:3}.row .medium-auto:nth-last-of-type(4),.row .medium-auto:nth-last-of-type(4)~.medium-auto{--f7-cols-per-row:4}.row .medium-auto:nth-last-of-type(5),.row .medium-auto:nth-last-of-type(5)~.medium-auto{--f7-cols-per-row:5}.row .medium-auto:nth-last-of-type(6),.row .medium-auto:nth-last-of-type(6)~.medium-auto{--f7-cols-per-row:6}.row .medium-auto:nth-last-of-type(7),.row .medium-auto:nth-last-of-type(7)~.medium-auto{--f7-cols-per-row:7}.row .medium-auto:nth-last-of-type(8),.row .medium-auto:nth-last-of-type(8)~.medium-auto{--f7-cols-per-row:8}.row .medium-auto:nth-last-of-type(9),.row .medium-auto:nth-last-of-type(9)~.medium-auto{--f7-cols-per-row:9}.row .medium-auto:nth-last-of-type(10),.row .medium-auto:nth-last-of-type(10)~.medium-auto{--f7-cols-per-row:10}.row .medium-auto:nth-last-of-type(11),.row .medium-auto:nth-last-of-type(11)~.medium-auto{--f7-cols-per-row:11}.row .medium-auto:nth-last-of-type(12),.row .medium-auto:nth-last-of-type(12)~.medium-auto{--f7-cols-per-row:12}.row .medium-auto:nth-last-of-type(13),.row .medium-auto:nth-last-of-type(13)~.medium-auto{--f7-cols-per-row:13}.row .medium-auto:nth-last-of-type(14),.row .medium-auto:nth-last-of-type(14)~.medium-auto{--f7-cols-per-row:14}.row .medium-auto:nth-last-of-type(15),.row .medium-auto:nth-last-of-type(15)~.medium-auto{--f7-cols-per-row:15}.row .medium-auto:nth-last-of-type(16),.row .medium-auto:nth-last-of-type(16)~.medium-auto{--f7-cols-per-row:16}.row .medium-auto:nth-last-of-type(17),.row .medium-auto:nth-last-of-type(17)~.medium-auto{--f7-cols-per-row:17}.row .medium-auto:nth-last-of-type(18),.row .medium-auto:nth-last-of-type(18)~.medium-auto{--f7-cols-per-row:18}.row .medium-auto:nth-last-of-type(19),.row .medium-auto:nth-last-of-type(19)~.medium-auto{--f7-cols-per-row:19}.row .medium-auto:nth-last-of-type(20),.row .medium-auto:nth-last-of-type(20)~.medium-auto{--f7-cols-per-row:20}.row .medium-auto:nth-last-of-type(21),.row .medium-auto:nth-last-of-type(21)~.medium-auto{--f7-cols-per-row:21}.row .medium-auto:nth-last-of-type(22),.row .medium-auto:nth-last-of-type(22)~.medium-auto{--f7-cols-per-row:22}}@media (min-width:1024px){.row .large-5{--f7-cols-per-row:20}.row .large-10{--f7-cols-per-row:10}.row .large-15{--f7-cols-per-row:6.66666667}.row .large-20{--f7-cols-per-row:5}.row .large-25{--f7-cols-per-row:4}.row .large-30{--f7-cols-per-row:3.33333333}.row .large-33{--f7-cols-per-row:3}.row .large-35{--f7-cols-per-row:2.85714286}.row .large-40{--f7-cols-per-row:2.5}.row .large-45{--f7-cols-per-row:2.22222222}.row .large-50{--f7-cols-per-row:2}.row .large-55{--f7-cols-per-row:1.81818182}.row .large-60{--f7-cols-per-row:1.66666667}.row .large-65{--f7-cols-per-row:1.53846154}.row .large-66{--f7-cols-per-row:1.5}.row .large-70{--f7-cols-per-row:1.42857143}.row .large-75{--f7-cols-per-row:1.33333333}.row .large-80{--f7-cols-per-row:1.25}.row .large-85{--f7-cols-per-row:1.17647059}.row .large-90{--f7-cols-per-row:1.11111111}.row .large-95{--f7-cols-per-row:1.05263158}.row .large-100{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(1),.row .large-auto:nth-last-of-type(1)~.large-auto{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(2),.row .large-auto:nth-last-of-type(2)~.large-auto{--f7-cols-per-row:2}.row .large-auto:nth-last-of-type(3),.row .large-auto:nth-last-of-type(3)~.large-auto{--f7-cols-per-row:3}.row .large-auto:nth-last-of-type(4),.row .large-auto:nth-last-of-type(4)~.large-auto{--f7-cols-per-row:4}.row .large-auto:nth-last-of-type(5),.row .large-auto:nth-last-of-type(5)~.large-auto{--f7-cols-per-row:5}.row .large-auto:nth-last-of-type(6),.row .large-auto:nth-last-of-type(6)~.large-auto{--f7-cols-per-row:6}.row .large-auto:nth-last-of-type(7),.row .large-auto:nth-last-of-type(7)~.large-auto{--f7-cols-per-row:7}.row .large-auto:nth-last-of-type(8),.row .large-auto:nth-last-of-type(8)~.large-auto{--f7-cols-per-row:8}.row .large-auto:nth-last-of-type(9),.row .large-auto:nth-last-of-type(9)~.large-auto{--f7-cols-per-row:9}.row .large-auto:nth-last-of-type(10),.row .large-auto:nth-last-of-type(10)~.large-auto{--f7-cols-per-row:10}.row .large-auto:nth-last-of-type(11),.row .large-auto:nth-last-of-type(11)~.large-auto{--f7-cols-per-row:11}.row .large-auto:nth-last-of-type(12),.row .large-auto:nth-last-of-type(12)~.large-auto{--f7-cols-per-row:12}.row .large-auto:nth-last-of-type(13),.row .large-auto:nth-last-of-type(13)~.large-auto{--f7-cols-per-row:13}.row .large-auto:nth-last-of-type(14),.row .large-auto:nth-last-of-type(14)~.large-auto{--f7-cols-per-row:14}.row .large-auto:nth-last-of-type(15),.row .large-auto:nth-last-of-type(15)~.large-auto{--f7-cols-per-row:15}.row .large-auto:nth-last-of-type(16),.row .large-auto:nth-last-of-type(16)~.large-auto{--f7-cols-per-row:16}.row .large-auto:nth-last-of-type(17),.row .large-auto:nth-last-of-type(17)~.large-auto{--f7-cols-per-row:17}.row .large-auto:nth-last-of-type(18),.row .large-auto:nth-last-of-type(18)~.large-auto{--f7-cols-per-row:18}.row .large-auto:nth-last-of-type(19),.row .large-auto:nth-last-of-type(19)~.large-auto{--f7-cols-per-row:19}.row .large-auto:nth-last-of-type(20),.row .large-auto:nth-last-of-type(20)~.large-auto{--f7-cols-per-row:20}.row .large-auto:nth-last-of-type(21),.row .large-auto:nth-last-of-type(21)~.large-auto{--f7-cols-per-row:21}.row .large-auto:nth-last-of-type(22),.row .large-auto:nth-last-of-type(22)~.large-auto{--f7-cols-per-row:22}}@media (min-width:1200px){.row .xlarge-5{--f7-cols-per-row:20}.row .xlarge-10{--f7-cols-per-row:10}.row .xlarge-15{--f7-cols-per-row:6.66666667}.row .xlarge-20{--f7-cols-per-row:5}.row .xlarge-25{--f7-cols-per-row:4}.row .xlarge-30{--f7-cols-per-row:3.33333333}.row .xlarge-33{--f7-cols-per-row:3}.row .xlarge-35{--f7-cols-per-row:2.85714286}.row .xlarge-40{--f7-cols-per-row:2.5}.row .xlarge-45{--f7-cols-per-row:2.22222222}.row .xlarge-50{--f7-cols-per-row:2}.row .xlarge-55{--f7-cols-per-row:1.81818182}.row .xlarge-60{--f7-cols-per-row:1.66666667}.row .xlarge-65{--f7-cols-per-row:1.53846154}.row .xlarge-66{--f7-cols-per-row:1.5}.row .xlarge-70{--f7-cols-per-row:1.42857143}.row .xlarge-75{--f7-cols-per-row:1.33333333}.row .xlarge-80{--f7-cols-per-row:1.25}.row .xlarge-85{--f7-cols-per-row:1.17647059}.row .xlarge-90{--f7-cols-per-row:1.11111111}.row .xlarge-95{--f7-cols-per-row:1.05263158}.row .xlarge-100{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(1),.row .xlarge-auto:nth-last-of-type(1)~.xlarge-auto{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(2),.row .xlarge-auto:nth-last-of-type(2)~.xlarge-auto{--f7-cols-per-row:2}.row .xlarge-auto:nth-last-of-type(3),.row .xlarge-auto:nth-last-of-type(3)~.xlarge-auto{--f7-cols-per-row:3}.row .xlarge-auto:nth-last-of-type(4),.row .xlarge-auto:nth-last-of-type(4)~.xlarge-auto{--f7-cols-per-row:4}.row .xlarge-auto:nth-last-of-type(5),.row .xlarge-auto:nth-last-of-type(5)~.xlarge-auto{--f7-cols-per-row:5}.row .xlarge-auto:nth-last-of-type(6),.row .xlarge-auto:nth-last-of-type(6)~.xlarge-auto{--f7-cols-per-row:6}.row .xlarge-auto:nth-last-of-type(7),.row .xlarge-auto:nth-last-of-type(7)~.xlarge-auto{--f7-cols-per-row:7}.row .xlarge-auto:nth-last-of-type(8),.row .xlarge-auto:nth-last-of-type(8)~.xlarge-auto{--f7-cols-per-row:8}.row .xlarge-auto:nth-last-of-type(9),.row .xlarge-auto:nth-last-of-type(9)~.xlarge-auto{--f7-cols-per-row:9}.row .xlarge-auto:nth-last-of-type(10),.row .xlarge-auto:nth-last-of-type(10)~.xlarge-auto{--f7-cols-per-row:10}.row .xlarge-auto:nth-last-of-type(11),.row .xlarge-auto:nth-last-of-type(11)~.xlarge-auto{--f7-cols-per-row:11}.row .xlarge-auto:nth-last-of-type(12),.row .xlarge-auto:nth-last-of-type(12)~.xlarge-auto{--f7-cols-per-row:12}.row .xlarge-auto:nth-last-of-type(13),.row .xlarge-auto:nth-last-of-type(13)~.xlarge-auto{--f7-cols-per-row:13}.row .xlarge-auto:nth-last-of-type(14),.row .xlarge-auto:nth-last-of-type(14)~.xlarge-auto{--f7-cols-per-row:14}.row .xlarge-auto:nth-last-of-type(15),.row .xlarge-auto:nth-last-of-type(15)~.xlarge-auto{--f7-cols-per-row:15}.row .xlarge-auto:nth-last-of-type(16),.row .xlarge-auto:nth-last-of-type(16)~.xlarge-auto{--f7-cols-per-row:16}.row .xlarge-auto:nth-last-of-type(17),.row .xlarge-auto:nth-last-of-type(17)~.xlarge-auto{--f7-cols-per-row:17}.row .xlarge-auto:nth-last-of-type(18),.row .xlarge-auto:nth-last-of-type(18)~.xlarge-auto{--f7-cols-per-row:18}.row .xlarge-auto:nth-last-of-type(19),.row .xlarge-auto:nth-last-of-type(19)~.xlarge-auto{--f7-cols-per-row:19}.row .xlarge-auto:nth-last-of-type(20),.row .xlarge-auto:nth-last-of-type(20)~.xlarge-auto{--f7-cols-per-row:20}.row .xlarge-auto:nth-last-of-type(21),.row .xlarge-auto:nth-last-of-type(21)~.xlarge-auto{--f7-cols-per-row:21}.row .xlarge-auto:nth-last-of-type(22),.row .xlarge-auto:nth-last-of-type(22)~.xlarge-auto{--f7-cols-per-row:22}}.row .resize-handler{position:absolute;-webkit-user-select:none;user-select:none;z-index:100}.row .resize-handler:before{content:'';position:absolute}.row .resize-handler:after{content:'';position:absolute;border-radius:4px;background:var(--f7-grid-resize-handler-bg-color)}.row>.resize-handler{width:100%;height:var(--f7-grid-row-gap);left:0;top:100%;cursor:row-resize}.row>.resize-handler:before{left:0%;top:50%;height:12px;width:100%;min-height:var(--f7-grid-row-gap);transform:translateY(-50%)}.row>.resize-handler:after{height:4px;margin-top:-2px;width:80%;max-width:20px;left:50%;top:50%;transform:translateX(-50%)}.col>.resize-handler,[class*=col-]>.resize-handler{width:var(--f7-grid-gap);left:100%;top:0;height:100%;cursor:col-resize}.col>.resize-handler:before,[class*=col-]>.resize-handler:before{left:50%;top:0;height:100%;width:12px;min-width:var(--f7-grid-gap);transform:translateX(-50%)}.col>.resize-handler:after,[class*=col-]>.resize-handler:after{width:4px;margin-left:-2px;height:80%;max-height:20px;border-radius:4px;left:50%;top:50%;transform:translateY(-50%)}.row .col:last-child>.resize-handler,.row .col:last-of-type>.resize-handler,.row [class*=col-]:last-child>.resize-handler,.row [class*=col-]:last-of-type>.resize-handler,.row:last-child>.resize-handler,.row:last-of-type>.resize-handler{display:none}
\ No newline at end of file
+:root{--f7-grid-gap:16px;--f7-grid-row-gap:0px;--f7-grid-resize-handler-bg-color:rgba(0, 0, 0, 0.35)}:root .theme-dark,:root.theme-dark{--f7-grid-resize-handler-bg-color:rgba(255, 255, 255, 0.35)}.row{display:flex;justify-content:space-between;flex-wrap:wrap;align-items:flex-start;--f7-cols-per-row:1}.row+.row{margin-top:var(--f7-grid-row-gap)}.row>.col,.row>[class*=col-]{box-sizing:border-box;width:calc((100% - var(--f7-grid-gap) * (var(--f7-cols-per-row) - 1))/ var(--f7-cols-per-row))}.row>.col.resizable,.row>[class*=col-].resizable{position:relative}.row.resizable{position:relative}.row.no-gap{--f7-grid-gap:0px;--f7-grid-row-gap:0px}.row .col-5{--f7-cols-per-row:20}.row .col-10{--f7-cols-per-row:10}.row .col-15{--f7-cols-per-row:6.66666667}.row .col-20{--f7-cols-per-row:5}.row .col-25{--f7-cols-per-row:4}.row .col-30{--f7-cols-per-row:3.33333333}.row .col-33{--f7-cols-per-row:3}.row .col-35{--f7-cols-per-row:2.85714286}.row .col-40{--f7-cols-per-row:2.5}.row .col-45{--f7-cols-per-row:2.22222222}.row .col-50{--f7-cols-per-row:2}.row .col-55{--f7-cols-per-row:1.81818182}.row .col-60{--f7-cols-per-row:1.66666667}.row .col-65{--f7-cols-per-row:1.53846154}.row .col-66{--f7-cols-per-row:1.5}.row .col-70{--f7-cols-per-row:1.42857143}.row .col-75{--f7-cols-per-row:1.33333333}.row .col-80{--f7-cols-per-row:1.25}.row .col-85{--f7-cols-per-row:1.17647059}.row .col-90{--f7-cols-per-row:1.11111111}.row .col-95{--f7-cols-per-row:1.05263158}.row .col-100{--f7-cols-per-row:1}.row .col:nth-last-of-type(1),.row .col:nth-last-of-type(1)~.col{--f7-cols-per-row:1}.row .col:nth-last-of-type(2),.row .col:nth-last-of-type(2)~.col{--f7-cols-per-row:2}.row .col:nth-last-of-type(3),.row .col:nth-last-of-type(3)~.col{--f7-cols-per-row:3}.row .col:nth-last-of-type(4),.row .col:nth-last-of-type(4)~.col{--f7-cols-per-row:4}.row .col:nth-last-of-type(5),.row .col:nth-last-of-type(5)~.col{--f7-cols-per-row:5}.row .col:nth-last-of-type(6),.row .col:nth-last-of-type(6)~.col{--f7-cols-per-row:6}.row .col:nth-last-of-type(7),.row .col:nth-last-of-type(7)~.col{--f7-cols-per-row:7}.row .col:nth-last-of-type(8),.row .col:nth-last-of-type(8)~.col{--f7-cols-per-row:8}.row .col:nth-last-of-type(9),.row .col:nth-last-of-type(9)~.col{--f7-cols-per-row:9}.row .col:nth-last-of-type(10),.row .col:nth-last-of-type(10)~.col{--f7-cols-per-row:10}.row .col:nth-last-of-type(11),.row .col:nth-last-of-type(11)~.col{--f7-cols-per-row:11}.row .col:nth-last-of-type(12),.row .col:nth-last-of-type(12)~.col{--f7-cols-per-row:12}.row .col:nth-last-of-type(13),.row .col:nth-last-of-type(13)~.col{--f7-cols-per-row:13}.row .col:nth-last-of-type(14),.row .col:nth-last-of-type(14)~.col{--f7-cols-per-row:14}.row .col:nth-last-of-type(15),.row .col:nth-last-of-type(15)~.col{--f7-cols-per-row:15}.row .col:nth-last-of-type(16),.row .col:nth-last-of-type(16)~.col{--f7-cols-per-row:16}.row .col:nth-last-of-type(17),.row .col:nth-last-of-type(17)~.col{--f7-cols-per-row:17}.row .col:nth-last-of-type(18),.row .col:nth-last-of-type(18)~.col{--f7-cols-per-row:18}.row .col:nth-last-of-type(19),.row .col:nth-last-of-type(19)~.col{--f7-cols-per-row:19}.row .col:nth-last-of-type(20),.row .col:nth-last-of-type(20)~.col{--f7-cols-per-row:20}.row .col:nth-last-of-type(21),.row .col:nth-last-of-type(21)~.col{--f7-cols-per-row:21}.row .col:nth-last-of-type(22),.row .col:nth-last-of-type(22)~.col{--f7-cols-per-row:22}@media (min-width:480px){.row .xsmall-5{--f7-cols-per-row:20}.row .xsmall-10{--f7-cols-per-row:10}.row .xsmall-15{--f7-cols-per-row:6.66666667}.row .xsmall-20{--f7-cols-per-row:5}.row .xsmall-25{--f7-cols-per-row:4}.row .xsmall-30{--f7-cols-per-row:3.33333333}.row .xsmall-33{--f7-cols-per-row:3}.row .xsmall-35{--f7-cols-per-row:2.85714286}.row .xsmall-40{--f7-cols-per-row:2.5}.row .xsmall-45{--f7-cols-per-row:2.22222222}.row .xsmall-50{--f7-cols-per-row:2}.row .xsmall-55{--f7-cols-per-row:1.81818182}.row .xsmall-60{--f7-cols-per-row:1.66666667}.row .xsmall-65{--f7-cols-per-row:1.53846154}.row .xsmall-66{--f7-cols-per-row:1.5}.row .xsmall-70{--f7-cols-per-row:1.42857143}.row .xsmall-75{--f7-cols-per-row:1.33333333}.row .xsmall-80{--f7-cols-per-row:1.25}.row .xsmall-85{--f7-cols-per-row:1.17647059}.row .xsmall-90{--f7-cols-per-row:1.11111111}.row .xsmall-95{--f7-cols-per-row:1.05263158}.row .xsmall-100{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(1),.row .xsmall-auto:nth-last-of-type(1)~.xsmall-auto{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(2),.row .xsmall-auto:nth-last-of-type(2)~.xsmall-auto{--f7-cols-per-row:2}.row .xsmall-auto:nth-last-of-type(3),.row .xsmall-auto:nth-last-of-type(3)~.xsmall-auto{--f7-cols-per-row:3}.row .xsmall-auto:nth-last-of-type(4),.row .xsmall-auto:nth-last-of-type(4)~.xsmall-auto{--f7-cols-per-row:4}.row .xsmall-auto:nth-last-of-type(5),.row .xsmall-auto:nth-last-of-type(5)~.xsmall-auto{--f7-cols-per-row:5}.row .xsmall-auto:nth-last-of-type(6),.row .xsmall-auto:nth-last-of-type(6)~.xsmall-auto{--f7-cols-per-row:6}.row .xsmall-auto:nth-last-of-type(7),.row .xsmall-auto:nth-last-of-type(7)~.xsmall-auto{--f7-cols-per-row:7}.row .xsmall-auto:nth-last-of-type(8),.row .xsmall-auto:nth-last-of-type(8)~.xsmall-auto{--f7-cols-per-row:8}.row .xsmall-auto:nth-last-of-type(9),.row .xsmall-auto:nth-last-of-type(9)~.xsmall-auto{--f7-cols-per-row:9}.row .xsmall-auto:nth-last-of-type(10),.row .xsmall-auto:nth-last-of-type(10)~.xsmall-auto{--f7-cols-per-row:10}.row .xsmall-auto:nth-last-of-type(11),.row .xsmall-auto:nth-last-of-type(11)~.xsmall-auto{--f7-cols-per-row:11}.row .xsmall-auto:nth-last-of-type(12),.row .xsmall-auto:nth-last-of-type(12)~.xsmall-auto{--f7-cols-per-row:12}.row .xsmall-auto:nth-last-of-type(13),.row .xsmall-auto:nth-last-of-type(13)~.xsmall-auto{--f7-cols-per-row:13}.row .xsmall-auto:nth-last-of-type(14),.row .xsmall-auto:nth-last-of-type(14)~.xsmall-auto{--f7-cols-per-row:14}.row .xsmall-auto:nth-last-of-type(15),.row .xsmall-auto:nth-last-of-type(15)~.xsmall-auto{--f7-cols-per-row:15}.row .xsmall-auto:nth-last-of-type(16),.row .xsmall-auto:nth-last-of-type(16)~.xsmall-auto{--f7-cols-per-row:16}.row .xsmall-auto:nth-last-of-type(17),.row .xsmall-auto:nth-last-of-type(17)~.xsmall-auto{--f7-cols-per-row:17}.row .xsmall-auto:nth-last-of-type(18),.row .xsmall-auto:nth-last-of-type(18)~.xsmall-auto{--f7-cols-per-row:18}.row .xsmall-auto:nth-last-of-type(19),.row .xsmall-auto:nth-last-of-type(19)~.xsmall-auto{--f7-cols-per-row:19}.row .xsmall-auto:nth-last-of-type(20),.row .xsmall-auto:nth-last-of-type(20)~.xsmall-auto{--f7-cols-per-row:20}.row .xsmall-auto:nth-last-of-type(21),.row .xsmall-auto:nth-last-of-type(21)~.xsmall-auto{--f7-cols-per-row:21}.row .xsmall-auto:nth-last-of-type(22),.row .xsmall-auto:nth-last-of-type(22)~.xsmall-auto{--f7-cols-per-row:22}}@media (min-width:568px){.row .small-5{--f7-cols-per-row:20}.row .small-10{--f7-cols-per-row:10}.row .small-15{--f7-cols-per-row:6.66666667}.row .small-20{--f7-cols-per-row:5}.row .small-25{--f7-cols-per-row:4}.row .small-30{--f7-cols-per-row:3.33333333}.row .small-33{--f7-cols-per-row:3}.row .small-35{--f7-cols-per-row:2.85714286}.row .small-40{--f7-cols-per-row:2.5}.row .small-45{--f7-cols-per-row:2.22222222}.row .small-50{--f7-cols-per-row:2}.row .small-55{--f7-cols-per-row:1.81818182}.row .small-60{--f7-cols-per-row:1.66666667}.row .small-65{--f7-cols-per-row:1.53846154}.row .small-66{--f7-cols-per-row:1.5}.row .small-70{--f7-cols-per-row:1.42857143}.row .small-75{--f7-cols-per-row:1.33333333}.row .small-80{--f7-cols-per-row:1.25}.row .small-85{--f7-cols-per-row:1.17647059}.row .small-90{--f7-cols-per-row:1.11111111}.row .small-95{--f7-cols-per-row:1.05263158}.row .small-100{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(1),.row .small-auto:nth-last-of-type(1)~.small-auto{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(2),.row .small-auto:nth-last-of-type(2)~.small-auto{--f7-cols-per-row:2}.row .small-auto:nth-last-of-type(3),.row .small-auto:nth-last-of-type(3)~.small-auto{--f7-cols-per-row:3}.row .small-auto:nth-last-of-type(4),.row .small-auto:nth-last-of-type(4)~.small-auto{--f7-cols-per-row:4}.row .small-auto:nth-last-of-type(5),.row .small-auto:nth-last-of-type(5)~.small-auto{--f7-cols-per-row:5}.row .small-auto:nth-last-of-type(6),.row .small-auto:nth-last-of-type(6)~.small-auto{--f7-cols-per-row:6}.row .small-auto:nth-last-of-type(7),.row .small-auto:nth-last-of-type(7)~.small-auto{--f7-cols-per-row:7}.row .small-auto:nth-last-of-type(8),.row .small-auto:nth-last-of-type(8)~.small-auto{--f7-cols-per-row:8}.row .small-auto:nth-last-of-type(9),.row .small-auto:nth-last-of-type(9)~.small-auto{--f7-cols-per-row:9}.row .small-auto:nth-last-of-type(10),.row .small-auto:nth-last-of-type(10)~.small-auto{--f7-cols-per-row:10}.row .small-auto:nth-last-of-type(11),.row .small-auto:nth-last-of-type(11)~.small-auto{--f7-cols-per-row:11}.row .small-auto:nth-last-of-type(12),.row .small-auto:nth-last-of-type(12)~.small-auto{--f7-cols-per-row:12}.row .small-auto:nth-last-of-type(13),.row .small-auto:nth-last-of-type(13)~.small-auto{--f7-cols-per-row:13}.row .small-auto:nth-last-of-type(14),.row .small-auto:nth-last-of-type(14)~.small-auto{--f7-cols-per-row:14}.row .small-auto:nth-last-of-type(15),.row .small-auto:nth-last-of-type(15)~.small-auto{--f7-cols-per-row:15}.row .small-auto:nth-last-of-type(16),.row .small-auto:nth-last-of-type(16)~.small-auto{--f7-cols-per-row:16}.row .small-auto:nth-last-of-type(17),.row .small-auto:nth-last-of-type(17)~.small-auto{--f7-cols-per-row:17}.row .small-auto:nth-last-of-type(18),.row .small-auto:nth-last-of-type(18)~.small-auto{--f7-cols-per-row:18}.row .small-auto:nth-last-of-type(19),.row .small-auto:nth-last-of-type(19)~.small-auto{--f7-cols-per-row:19}.row .small-auto:nth-last-of-type(20),.row .small-auto:nth-last-of-type(20)~.small-auto{--f7-cols-per-row:20}.row .small-auto:nth-last-of-type(21),.row .small-auto:nth-last-of-type(21)~.small-auto{--f7-cols-per-row:21}.row .small-auto:nth-last-of-type(22),.row .small-auto:nth-last-of-type(22)~.small-auto{--f7-cols-per-row:22}}@media (min-width:768px){.row .medium-5{--f7-cols-per-row:20}.row .medium-10{--f7-cols-per-row:10}.row .medium-15{--f7-cols-per-row:6.66666667}.row .medium-20{--f7-cols-per-row:5}.row .medium-25{--f7-cols-per-row:4}.row .medium-30{--f7-cols-per-row:3.33333333}.row .medium-33{--f7-cols-per-row:3}.row .medium-35{--f7-cols-per-row:2.85714286}.row .medium-40{--f7-cols-per-row:2.5}.row .medium-45{--f7-cols-per-row:2.22222222}.row .medium-50{--f7-cols-per-row:2}.row .medium-55{--f7-cols-per-row:1.81818182}.row .medium-60{--f7-cols-per-row:1.66666667}.row .medium-65{--f7-cols-per-row:1.53846154}.row .medium-66{--f7-cols-per-row:1.5}.row .medium-70{--f7-cols-per-row:1.42857143}.row .medium-75{--f7-cols-per-row:1.33333333}.row .medium-80{--f7-cols-per-row:1.25}.row .medium-85{--f7-cols-per-row:1.17647059}.row .medium-90{--f7-cols-per-row:1.11111111}.row .medium-95{--f7-cols-per-row:1.05263158}.row .medium-100{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(1),.row .medium-auto:nth-last-of-type(1)~.medium-auto{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(2),.row .medium-auto:nth-last-of-type(2)~.medium-auto{--f7-cols-per-row:2}.row .medium-auto:nth-last-of-type(3),.row .medium-auto:nth-last-of-type(3)~.medium-auto{--f7-cols-per-row:3}.row .medium-auto:nth-last-of-type(4),.row .medium-auto:nth-last-of-type(4)~.medium-auto{--f7-cols-per-row:4}.row .medium-auto:nth-last-of-type(5),.row .medium-auto:nth-last-of-type(5)~.medium-auto{--f7-cols-per-row:5}.row .medium-auto:nth-last-of-type(6),.row .medium-auto:nth-last-of-type(6)~.medium-auto{--f7-cols-per-row:6}.row .medium-auto:nth-last-of-type(7),.row .medium-auto:nth-last-of-type(7)~.medium-auto{--f7-cols-per-row:7}.row .medium-auto:nth-last-of-type(8),.row .medium-auto:nth-last-of-type(8)~.medium-auto{--f7-cols-per-row:8}.row .medium-auto:nth-last-of-type(9),.row .medium-auto:nth-last-of-type(9)~.medium-auto{--f7-cols-per-row:9}.row .medium-auto:nth-last-of-type(10),.row .medium-auto:nth-last-of-type(10)~.medium-auto{--f7-cols-per-row:10}.row .medium-auto:nth-last-of-type(11),.row .medium-auto:nth-last-of-type(11)~.medium-auto{--f7-cols-per-row:11}.row .medium-auto:nth-last-of-type(12),.row .medium-auto:nth-last-of-type(12)~.medium-auto{--f7-cols-per-row:12}.row .medium-auto:nth-last-of-type(13),.row .medium-auto:nth-last-of-type(13)~.medium-auto{--f7-cols-per-row:13}.row .medium-auto:nth-last-of-type(14),.row .medium-auto:nth-last-of-type(14)~.medium-auto{--f7-cols-per-row:14}.row .medium-auto:nth-last-of-type(15),.row .medium-auto:nth-last-of-type(15)~.medium-auto{--f7-cols-per-row:15}.row .medium-auto:nth-last-of-type(16),.row .medium-auto:nth-last-of-type(16)~.medium-auto{--f7-cols-per-row:16}.row .medium-auto:nth-last-of-type(17),.row .medium-auto:nth-last-of-type(17)~.medium-auto{--f7-cols-per-row:17}.row .medium-auto:nth-last-of-type(18),.row .medium-auto:nth-last-of-type(18)~.medium-auto{--f7-cols-per-row:18}.row .medium-auto:nth-last-of-type(19),.row .medium-auto:nth-last-of-type(19)~.medium-auto{--f7-cols-per-row:19}.row .medium-auto:nth-last-of-type(20),.row .medium-auto:nth-last-of-type(20)~.medium-auto{--f7-cols-per-row:20}.row .medium-auto:nth-last-of-type(21),.row .medium-auto:nth-last-of-type(21)~.medium-auto{--f7-cols-per-row:21}.row .medium-auto:nth-last-of-type(22),.row .medium-auto:nth-last-of-type(22)~.medium-auto{--f7-cols-per-row:22}}@media (min-width:1024px){.row .large-5{--f7-cols-per-row:20}.row .large-10{--f7-cols-per-row:10}.row .large-15{--f7-cols-per-row:6.66666667}.row .large-20{--f7-cols-per-row:5}.row .large-25{--f7-cols-per-row:4}.row .large-30{--f7-cols-per-row:3.33333333}.row .large-33{--f7-cols-per-row:3}.row .large-35{--f7-cols-per-row:2.85714286}.row .large-40{--f7-cols-per-row:2.5}.row .large-45{--f7-cols-per-row:2.22222222}.row .large-50{--f7-cols-per-row:2}.row .large-55{--f7-cols-per-row:1.81818182}.row .large-60{--f7-cols-per-row:1.66666667}.row .large-65{--f7-cols-per-row:1.53846154}.row .large-66{--f7-cols-per-row:1.5}.row .large-70{--f7-cols-per-row:1.42857143}.row .large-75{--f7-cols-per-row:1.33333333}.row .large-80{--f7-cols-per-row:1.25}.row .large-85{--f7-cols-per-row:1.17647059}.row .large-90{--f7-cols-per-row:1.11111111}.row .large-95{--f7-cols-per-row:1.05263158}.row .large-100{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(1),.row .large-auto:nth-last-of-type(1)~.large-auto{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(2),.row .large-auto:nth-last-of-type(2)~.large-auto{--f7-cols-per-row:2}.row .large-auto:nth-last-of-type(3),.row .large-auto:nth-last-of-type(3)~.large-auto{--f7-cols-per-row:3}.row .large-auto:nth-last-of-type(4),.row .large-auto:nth-last-of-type(4)~.large-auto{--f7-cols-per-row:4}.row .large-auto:nth-last-of-type(5),.row .large-auto:nth-last-of-type(5)~.large-auto{--f7-cols-per-row:5}.row .large-auto:nth-last-of-type(6),.row .large-auto:nth-last-of-type(6)~.large-auto{--f7-cols-per-row:6}.row .large-auto:nth-last-of-type(7),.row .large-auto:nth-last-of-type(7)~.large-auto{--f7-cols-per-row:7}.row .large-auto:nth-last-of-type(8),.row .large-auto:nth-last-of-type(8)~.large-auto{--f7-cols-per-row:8}.row .large-auto:nth-last-of-type(9),.row .large-auto:nth-last-of-type(9)~.large-auto{--f7-cols-per-row:9}.row .large-auto:nth-last-of-type(10),.row .large-auto:nth-last-of-type(10)~.large-auto{--f7-cols-per-row:10}.row .large-auto:nth-last-of-type(11),.row .large-auto:nth-last-of-type(11)~.large-auto{--f7-cols-per-row:11}.row .large-auto:nth-last-of-type(12),.row .large-auto:nth-last-of-type(12)~.large-auto{--f7-cols-per-row:12}.row .large-auto:nth-last-of-type(13),.row .large-auto:nth-last-of-type(13)~.large-auto{--f7-cols-per-row:13}.row .large-auto:nth-last-of-type(14),.row .large-auto:nth-last-of-type(14)~.large-auto{--f7-cols-per-row:14}.row .large-auto:nth-last-of-type(15),.row .large-auto:nth-last-of-type(15)~.large-auto{--f7-cols-per-row:15}.row .large-auto:nth-last-of-type(16),.row .large-auto:nth-last-of-type(16)~.large-auto{--f7-cols-per-row:16}.row .large-auto:nth-last-of-type(17),.row .large-auto:nth-last-of-type(17)~.large-auto{--f7-cols-per-row:17}.row .large-auto:nth-last-of-type(18),.row .large-auto:nth-last-of-type(18)~.large-auto{--f7-cols-per-row:18}.row .large-auto:nth-last-of-type(19),.row .large-auto:nth-last-of-type(19)~.large-auto{--f7-cols-per-row:19}.row .large-auto:nth-last-of-type(20),.row .large-auto:nth-last-of-type(20)~.large-auto{--f7-cols-per-row:20}.row .large-auto:nth-last-of-type(21),.row .large-auto:nth-last-of-type(21)~.large-auto{--f7-cols-per-row:21}.row .large-auto:nth-last-of-type(22),.row .large-auto:nth-last-of-type(22)~.large-auto{--f7-cols-per-row:22}}@media (min-width:1200px){.row .xlarge-5{--f7-cols-per-row:20}.row .xlarge-10{--f7-cols-per-row:10}.row .xlarge-15{--f7-cols-per-row:6.66666667}.row .xlarge-20{--f7-cols-per-row:5}.row .xlarge-25{--f7-cols-per-row:4}.row .xlarge-30{--f7-cols-per-row:3.33333333}.row .xlarge-33{--f7-cols-per-row:3}.row .xlarge-35{--f7-cols-per-row:2.85714286}.row .xlarge-40{--f7-cols-per-row:2.5}.row .xlarge-45{--f7-cols-per-row:2.22222222}.row .xlarge-50{--f7-cols-per-row:2}.row .xlarge-55{--f7-cols-per-row:1.81818182}.row .xlarge-60{--f7-cols-per-row:1.66666667}.row .xlarge-65{--f7-cols-per-row:1.53846154}.row .xlarge-66{--f7-cols-per-row:1.5}.row .xlarge-70{--f7-cols-per-row:1.42857143}.row .xlarge-75{--f7-cols-per-row:1.33333333}.row .xlarge-80{--f7-cols-per-row:1.25}.row .xlarge-85{--f7-cols-per-row:1.17647059}.row .xlarge-90{--f7-cols-per-row:1.11111111}.row .xlarge-95{--f7-cols-per-row:1.05263158}.row .xlarge-100{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(1),.row .xlarge-auto:nth-last-of-type(1)~.xlarge-auto{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(2),.row .xlarge-auto:nth-last-of-type(2)~.xlarge-auto{--f7-cols-per-row:2}.row .xlarge-auto:nth-last-of-type(3),.row .xlarge-auto:nth-last-of-type(3)~.xlarge-auto{--f7-cols-per-row:3}.row .xlarge-auto:nth-last-of-type(4),.row .xlarge-auto:nth-last-of-type(4)~.xlarge-auto{--f7-cols-per-row:4}.row .xlarge-auto:nth-last-of-type(5),.row .xlarge-auto:nth-last-of-type(5)~.xlarge-auto{--f7-cols-per-row:5}.row .xlarge-auto:nth-last-of-type(6),.row .xlarge-auto:nth-last-of-type(6)~.xlarge-auto{--f7-cols-per-row:6}.row .xlarge-auto:nth-last-of-type(7),.row .xlarge-auto:nth-last-of-type(7)~.xlarge-auto{--f7-cols-per-row:7}.row .xlarge-auto:nth-last-of-type(8),.row .xlarge-auto:nth-last-of-type(8)~.xlarge-auto{--f7-cols-per-row:8}.row .xlarge-auto:nth-last-of-type(9),.row .xlarge-auto:nth-last-of-type(9)~.xlarge-auto{--f7-cols-per-row:9}.row .xlarge-auto:nth-last-of-type(10),.row .xlarge-auto:nth-last-of-type(10)~.xlarge-auto{--f7-cols-per-row:10}.row .xlarge-auto:nth-last-of-type(11),.row .xlarge-auto:nth-last-of-type(11)~.xlarge-auto{--f7-cols-per-row:11}.row .xlarge-auto:nth-last-of-type(12),.row .xlarge-auto:nth-last-of-type(12)~.xlarge-auto{--f7-cols-per-row:12}.row .xlarge-auto:nth-last-of-type(13),.row .xlarge-auto:nth-last-of-type(13)~.xlarge-auto{--f7-cols-per-row:13}.row .xlarge-auto:nth-last-of-type(14),.row .xlarge-auto:nth-last-of-type(14)~.xlarge-auto{--f7-cols-per-row:14}.row .xlarge-auto:nth-last-of-type(15),.row .xlarge-auto:nth-last-of-type(15)~.xlarge-auto{--f7-cols-per-row:15}.row .xlarge-auto:nth-last-of-type(16),.row .xlarge-auto:nth-last-of-type(16)~.xlarge-auto{--f7-cols-per-row:16}.row .xlarge-auto:nth-last-of-type(17),.row .xlarge-auto:nth-last-of-type(17)~.xlarge-auto{--f7-cols-per-row:17}.row .xlarge-auto:nth-last-of-type(18),.row .xlarge-auto:nth-last-of-type(18)~.xlarge-auto{--f7-cols-per-row:18}.row .xlarge-auto:nth-last-of-type(19),.row .xlarge-auto:nth-last-of-type(19)~.xlarge-auto{--f7-cols-per-row:19}.row .xlarge-auto:nth-last-of-type(20),.row .xlarge-auto:nth-last-of-type(20)~.xlarge-auto{--f7-cols-per-row:20}.row .xlarge-auto:nth-last-of-type(21),.row .xlarge-auto:nth-last-of-type(21)~.xlarge-auto{--f7-cols-per-row:21}.row .xlarge-auto:nth-last-of-type(22),.row .xlarge-auto:nth-last-of-type(22)~.xlarge-auto{--f7-cols-per-row:22}}.row .resize-handler{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:100}.row .resize-handler:before{content:'';position:absolute}.row .resize-handler:after{content:'';position:absolute;border-radius:4px;background:var(--f7-grid-resize-handler-bg-color)}.row>.resize-handler{width:100%;height:var(--f7-grid-row-gap);left:0;top:100%;cursor:row-resize}.row>.resize-handler:before{left:0%;top:50%;height:12px;width:100%;min-height:var(--f7-grid-row-gap);transform:translateY(-50%)}.row>.resize-handler:after{height:4px;margin-top:-2px;width:80%;max-width:20px;left:50%;top:50%;transform:translateX(-50%)}.col>.resize-handler,[class*=col-]>.resize-handler{width:var(--f7-grid-gap);left:100%;top:0;height:100%;cursor:col-resize}.col>.resize-handler:before,[class*=col-]>.resize-handler:before{left:50%;top:0;height:100%;width:12px;min-width:var(--f7-grid-gap);transform:translateX(-50%)}.col>.resize-handler:after,[class*=col-]>.resize-handler:after{width:4px;margin-left:-2px;height:80%;max-height:20px;border-radius:4px;left:50%;top:50%;transform:translateY(-50%)}.row .col:last-child>.resize-handler,.row .col:last-of-type>.resize-handler,.row [class*=col-]:last-child>.resize-handler,.row [class*=col-]:last-of-type>.resize-handler,.row:last-child>.resize-handler,.row:last-of-type>.resize-handler{display:none}
\ No newline at end of file
diff --git a/www/assets/framework7/components/grid/grid.css b/www/assets/framework7/components/grid/grid.css
index 093c02532..0b7df4807 100644
--- a/www/assets/framework7/components/grid/grid.css
+++ b/www/assets/framework7/components/grid/grid.css
@@ -1 +1 @@
-:root{--f7-grid-gap:16px;--f7-grid-row-gap:0px;--f7-grid-resize-handler-bg-color:rgba(0, 0, 0, 0.35)}:root .dark,:root.dark{--f7-grid-resize-handler-bg-color:rgba(255, 255, 255, 0.35)}.row{display:flex;justify-content:space-between;flex-wrap:wrap;align-items:flex-start;--f7-cols-per-row:1}.row+.row{margin-top:var(--f7-grid-row-gap)}.row>.col,.row>[class*=col-]{box-sizing:border-box;width:calc((100% - var(--f7-grid-gap) * (var(--f7-cols-per-row) - 1))/ var(--f7-cols-per-row))}.row>.col.resizable,.row>[class*=col-].resizable{position:relative}.row.resizable{position:relative}.row.no-gap{--f7-grid-gap:0px;--f7-grid-row-gap:0px}.row .col-5{--f7-cols-per-row:20}.row .col-10{--f7-cols-per-row:10}.row .col-15{--f7-cols-per-row:6.66666667}.row .col-20{--f7-cols-per-row:5}.row .col-25{--f7-cols-per-row:4}.row .col-30{--f7-cols-per-row:3.33333333}.row .col-33{--f7-cols-per-row:3}.row .col-35{--f7-cols-per-row:2.85714286}.row .col-40{--f7-cols-per-row:2.5}.row .col-45{--f7-cols-per-row:2.22222222}.row .col-50{--f7-cols-per-row:2}.row .col-55{--f7-cols-per-row:1.81818182}.row .col-60{--f7-cols-per-row:1.66666667}.row .col-65{--f7-cols-per-row:1.53846154}.row .col-66{--f7-cols-per-row:1.5}.row .col-70{--f7-cols-per-row:1.42857143}.row .col-75{--f7-cols-per-row:1.33333333}.row .col-80{--f7-cols-per-row:1.25}.row .col-85{--f7-cols-per-row:1.17647059}.row .col-90{--f7-cols-per-row:1.11111111}.row .col-95{--f7-cols-per-row:1.05263158}.row .col-100{--f7-cols-per-row:1}.row .col:nth-last-of-type(1),.row .col:nth-last-of-type(1)~.col{--f7-cols-per-row:1}.row .col:nth-last-of-type(2),.row .col:nth-last-of-type(2)~.col{--f7-cols-per-row:2}.row .col:nth-last-of-type(3),.row .col:nth-last-of-type(3)~.col{--f7-cols-per-row:3}.row .col:nth-last-of-type(4),.row .col:nth-last-of-type(4)~.col{--f7-cols-per-row:4}.row .col:nth-last-of-type(5),.row .col:nth-last-of-type(5)~.col{--f7-cols-per-row:5}.row .col:nth-last-of-type(6),.row .col:nth-last-of-type(6)~.col{--f7-cols-per-row:6}.row .col:nth-last-of-type(7),.row .col:nth-last-of-type(7)~.col{--f7-cols-per-row:7}.row .col:nth-last-of-type(8),.row .col:nth-last-of-type(8)~.col{--f7-cols-per-row:8}.row .col:nth-last-of-type(9),.row .col:nth-last-of-type(9)~.col{--f7-cols-per-row:9}.row .col:nth-last-of-type(10),.row .col:nth-last-of-type(10)~.col{--f7-cols-per-row:10}.row .col:nth-last-of-type(11),.row .col:nth-last-of-type(11)~.col{--f7-cols-per-row:11}.row .col:nth-last-of-type(12),.row .col:nth-last-of-type(12)~.col{--f7-cols-per-row:12}.row .col:nth-last-of-type(13),.row .col:nth-last-of-type(13)~.col{--f7-cols-per-row:13}.row .col:nth-last-of-type(14),.row .col:nth-last-of-type(14)~.col{--f7-cols-per-row:14}.row .col:nth-last-of-type(15),.row .col:nth-last-of-type(15)~.col{--f7-cols-per-row:15}.row .col:nth-last-of-type(16),.row .col:nth-last-of-type(16)~.col{--f7-cols-per-row:16}.row .col:nth-last-of-type(17),.row .col:nth-last-of-type(17)~.col{--f7-cols-per-row:17}.row .col:nth-last-of-type(18),.row .col:nth-last-of-type(18)~.col{--f7-cols-per-row:18}.row .col:nth-last-of-type(19),.row .col:nth-last-of-type(19)~.col{--f7-cols-per-row:19}.row .col:nth-last-of-type(20),.row .col:nth-last-of-type(20)~.col{--f7-cols-per-row:20}.row .col:nth-last-of-type(21),.row .col:nth-last-of-type(21)~.col{--f7-cols-per-row:21}.row .col:nth-last-of-type(22),.row .col:nth-last-of-type(22)~.col{--f7-cols-per-row:22}@media (min-width:480px){.row .xsmall-5{--f7-cols-per-row:20}.row .xsmall-10{--f7-cols-per-row:10}.row .xsmall-15{--f7-cols-per-row:6.66666667}.row .xsmall-20{--f7-cols-per-row:5}.row .xsmall-25{--f7-cols-per-row:4}.row .xsmall-30{--f7-cols-per-row:3.33333333}.row .xsmall-33{--f7-cols-per-row:3}.row .xsmall-35{--f7-cols-per-row:2.85714286}.row .xsmall-40{--f7-cols-per-row:2.5}.row .xsmall-45{--f7-cols-per-row:2.22222222}.row .xsmall-50{--f7-cols-per-row:2}.row .xsmall-55{--f7-cols-per-row:1.81818182}.row .xsmall-60{--f7-cols-per-row:1.66666667}.row .xsmall-65{--f7-cols-per-row:1.53846154}.row .xsmall-66{--f7-cols-per-row:1.5}.row .xsmall-70{--f7-cols-per-row:1.42857143}.row .xsmall-75{--f7-cols-per-row:1.33333333}.row .xsmall-80{--f7-cols-per-row:1.25}.row .xsmall-85{--f7-cols-per-row:1.17647059}.row .xsmall-90{--f7-cols-per-row:1.11111111}.row .xsmall-95{--f7-cols-per-row:1.05263158}.row .xsmall-100{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(1),.row .xsmall-auto:nth-last-of-type(1)~.xsmall-auto{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(2),.row .xsmall-auto:nth-last-of-type(2)~.xsmall-auto{--f7-cols-per-row:2}.row .xsmall-auto:nth-last-of-type(3),.row .xsmall-auto:nth-last-of-type(3)~.xsmall-auto{--f7-cols-per-row:3}.row .xsmall-auto:nth-last-of-type(4),.row .xsmall-auto:nth-last-of-type(4)~.xsmall-auto{--f7-cols-per-row:4}.row .xsmall-auto:nth-last-of-type(5),.row .xsmall-auto:nth-last-of-type(5)~.xsmall-auto{--f7-cols-per-row:5}.row .xsmall-auto:nth-last-of-type(6),.row .xsmall-auto:nth-last-of-type(6)~.xsmall-auto{--f7-cols-per-row:6}.row .xsmall-auto:nth-last-of-type(7),.row .xsmall-auto:nth-last-of-type(7)~.xsmall-auto{--f7-cols-per-row:7}.row .xsmall-auto:nth-last-of-type(8),.row .xsmall-auto:nth-last-of-type(8)~.xsmall-auto{--f7-cols-per-row:8}.row .xsmall-auto:nth-last-of-type(9),.row .xsmall-auto:nth-last-of-type(9)~.xsmall-auto{--f7-cols-per-row:9}.row .xsmall-auto:nth-last-of-type(10),.row .xsmall-auto:nth-last-of-type(10)~.xsmall-auto{--f7-cols-per-row:10}.row .xsmall-auto:nth-last-of-type(11),.row .xsmall-auto:nth-last-of-type(11)~.xsmall-auto{--f7-cols-per-row:11}.row .xsmall-auto:nth-last-of-type(12),.row .xsmall-auto:nth-last-of-type(12)~.xsmall-auto{--f7-cols-per-row:12}.row .xsmall-auto:nth-last-of-type(13),.row .xsmall-auto:nth-last-of-type(13)~.xsmall-auto{--f7-cols-per-row:13}.row .xsmall-auto:nth-last-of-type(14),.row .xsmall-auto:nth-last-of-type(14)~.xsmall-auto{--f7-cols-per-row:14}.row .xsmall-auto:nth-last-of-type(15),.row .xsmall-auto:nth-last-of-type(15)~.xsmall-auto{--f7-cols-per-row:15}.row .xsmall-auto:nth-last-of-type(16),.row .xsmall-auto:nth-last-of-type(16)~.xsmall-auto{--f7-cols-per-row:16}.row .xsmall-auto:nth-last-of-type(17),.row .xsmall-auto:nth-last-of-type(17)~.xsmall-auto{--f7-cols-per-row:17}.row .xsmall-auto:nth-last-of-type(18),.row .xsmall-auto:nth-last-of-type(18)~.xsmall-auto{--f7-cols-per-row:18}.row .xsmall-auto:nth-last-of-type(19),.row .xsmall-auto:nth-last-of-type(19)~.xsmall-auto{--f7-cols-per-row:19}.row .xsmall-auto:nth-last-of-type(20),.row .xsmall-auto:nth-last-of-type(20)~.xsmall-auto{--f7-cols-per-row:20}.row .xsmall-auto:nth-last-of-type(21),.row .xsmall-auto:nth-last-of-type(21)~.xsmall-auto{--f7-cols-per-row:21}.row .xsmall-auto:nth-last-of-type(22),.row .xsmall-auto:nth-last-of-type(22)~.xsmall-auto{--f7-cols-per-row:22}}@media (min-width:568px){.row .small-5{--f7-cols-per-row:20}.row .small-10{--f7-cols-per-row:10}.row .small-15{--f7-cols-per-row:6.66666667}.row .small-20{--f7-cols-per-row:5}.row .small-25{--f7-cols-per-row:4}.row .small-30{--f7-cols-per-row:3.33333333}.row .small-33{--f7-cols-per-row:3}.row .small-35{--f7-cols-per-row:2.85714286}.row .small-40{--f7-cols-per-row:2.5}.row .small-45{--f7-cols-per-row:2.22222222}.row .small-50{--f7-cols-per-row:2}.row .small-55{--f7-cols-per-row:1.81818182}.row .small-60{--f7-cols-per-row:1.66666667}.row .small-65{--f7-cols-per-row:1.53846154}.row .small-66{--f7-cols-per-row:1.5}.row .small-70{--f7-cols-per-row:1.42857143}.row .small-75{--f7-cols-per-row:1.33333333}.row .small-80{--f7-cols-per-row:1.25}.row .small-85{--f7-cols-per-row:1.17647059}.row .small-90{--f7-cols-per-row:1.11111111}.row .small-95{--f7-cols-per-row:1.05263158}.row .small-100{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(1),.row .small-auto:nth-last-of-type(1)~.small-auto{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(2),.row .small-auto:nth-last-of-type(2)~.small-auto{--f7-cols-per-row:2}.row .small-auto:nth-last-of-type(3),.row .small-auto:nth-last-of-type(3)~.small-auto{--f7-cols-per-row:3}.row .small-auto:nth-last-of-type(4),.row .small-auto:nth-last-of-type(4)~.small-auto{--f7-cols-per-row:4}.row .small-auto:nth-last-of-type(5),.row .small-auto:nth-last-of-type(5)~.small-auto{--f7-cols-per-row:5}.row .small-auto:nth-last-of-type(6),.row .small-auto:nth-last-of-type(6)~.small-auto{--f7-cols-per-row:6}.row .small-auto:nth-last-of-type(7),.row .small-auto:nth-last-of-type(7)~.small-auto{--f7-cols-per-row:7}.row .small-auto:nth-last-of-type(8),.row .small-auto:nth-last-of-type(8)~.small-auto{--f7-cols-per-row:8}.row .small-auto:nth-last-of-type(9),.row .small-auto:nth-last-of-type(9)~.small-auto{--f7-cols-per-row:9}.row .small-auto:nth-last-of-type(10),.row .small-auto:nth-last-of-type(10)~.small-auto{--f7-cols-per-row:10}.row .small-auto:nth-last-of-type(11),.row .small-auto:nth-last-of-type(11)~.small-auto{--f7-cols-per-row:11}.row .small-auto:nth-last-of-type(12),.row .small-auto:nth-last-of-type(12)~.small-auto{--f7-cols-per-row:12}.row .small-auto:nth-last-of-type(13),.row .small-auto:nth-last-of-type(13)~.small-auto{--f7-cols-per-row:13}.row .small-auto:nth-last-of-type(14),.row .small-auto:nth-last-of-type(14)~.small-auto{--f7-cols-per-row:14}.row .small-auto:nth-last-of-type(15),.row .small-auto:nth-last-of-type(15)~.small-auto{--f7-cols-per-row:15}.row .small-auto:nth-last-of-type(16),.row .small-auto:nth-last-of-type(16)~.small-auto{--f7-cols-per-row:16}.row .small-auto:nth-last-of-type(17),.row .small-auto:nth-last-of-type(17)~.small-auto{--f7-cols-per-row:17}.row .small-auto:nth-last-of-type(18),.row .small-auto:nth-last-of-type(18)~.small-auto{--f7-cols-per-row:18}.row .small-auto:nth-last-of-type(19),.row .small-auto:nth-last-of-type(19)~.small-auto{--f7-cols-per-row:19}.row .small-auto:nth-last-of-type(20),.row .small-auto:nth-last-of-type(20)~.small-auto{--f7-cols-per-row:20}.row .small-auto:nth-last-of-type(21),.row .small-auto:nth-last-of-type(21)~.small-auto{--f7-cols-per-row:21}.row .small-auto:nth-last-of-type(22),.row .small-auto:nth-last-of-type(22)~.small-auto{--f7-cols-per-row:22}}@media (min-width:768px){.row .medium-5{--f7-cols-per-row:20}.row .medium-10{--f7-cols-per-row:10}.row .medium-15{--f7-cols-per-row:6.66666667}.row .medium-20{--f7-cols-per-row:5}.row .medium-25{--f7-cols-per-row:4}.row .medium-30{--f7-cols-per-row:3.33333333}.row .medium-33{--f7-cols-per-row:3}.row .medium-35{--f7-cols-per-row:2.85714286}.row .medium-40{--f7-cols-per-row:2.5}.row .medium-45{--f7-cols-per-row:2.22222222}.row .medium-50{--f7-cols-per-row:2}.row .medium-55{--f7-cols-per-row:1.81818182}.row .medium-60{--f7-cols-per-row:1.66666667}.row .medium-65{--f7-cols-per-row:1.53846154}.row .medium-66{--f7-cols-per-row:1.5}.row .medium-70{--f7-cols-per-row:1.42857143}.row .medium-75{--f7-cols-per-row:1.33333333}.row .medium-80{--f7-cols-per-row:1.25}.row .medium-85{--f7-cols-per-row:1.17647059}.row .medium-90{--f7-cols-per-row:1.11111111}.row .medium-95{--f7-cols-per-row:1.05263158}.row .medium-100{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(1),.row .medium-auto:nth-last-of-type(1)~.medium-auto{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(2),.row .medium-auto:nth-last-of-type(2)~.medium-auto{--f7-cols-per-row:2}.row .medium-auto:nth-last-of-type(3),.row .medium-auto:nth-last-of-type(3)~.medium-auto{--f7-cols-per-row:3}.row .medium-auto:nth-last-of-type(4),.row .medium-auto:nth-last-of-type(4)~.medium-auto{--f7-cols-per-row:4}.row .medium-auto:nth-last-of-type(5),.row .medium-auto:nth-last-of-type(5)~.medium-auto{--f7-cols-per-row:5}.row .medium-auto:nth-last-of-type(6),.row .medium-auto:nth-last-of-type(6)~.medium-auto{--f7-cols-per-row:6}.row .medium-auto:nth-last-of-type(7),.row .medium-auto:nth-last-of-type(7)~.medium-auto{--f7-cols-per-row:7}.row .medium-auto:nth-last-of-type(8),.row .medium-auto:nth-last-of-type(8)~.medium-auto{--f7-cols-per-row:8}.row .medium-auto:nth-last-of-type(9),.row .medium-auto:nth-last-of-type(9)~.medium-auto{--f7-cols-per-row:9}.row .medium-auto:nth-last-of-type(10),.row .medium-auto:nth-last-of-type(10)~.medium-auto{--f7-cols-per-row:10}.row .medium-auto:nth-last-of-type(11),.row .medium-auto:nth-last-of-type(11)~.medium-auto{--f7-cols-per-row:11}.row .medium-auto:nth-last-of-type(12),.row .medium-auto:nth-last-of-type(12)~.medium-auto{--f7-cols-per-row:12}.row .medium-auto:nth-last-of-type(13),.row .medium-auto:nth-last-of-type(13)~.medium-auto{--f7-cols-per-row:13}.row .medium-auto:nth-last-of-type(14),.row .medium-auto:nth-last-of-type(14)~.medium-auto{--f7-cols-per-row:14}.row .medium-auto:nth-last-of-type(15),.row .medium-auto:nth-last-of-type(15)~.medium-auto{--f7-cols-per-row:15}.row .medium-auto:nth-last-of-type(16),.row .medium-auto:nth-last-of-type(16)~.medium-auto{--f7-cols-per-row:16}.row .medium-auto:nth-last-of-type(17),.row .medium-auto:nth-last-of-type(17)~.medium-auto{--f7-cols-per-row:17}.row .medium-auto:nth-last-of-type(18),.row .medium-auto:nth-last-of-type(18)~.medium-auto{--f7-cols-per-row:18}.row .medium-auto:nth-last-of-type(19),.row .medium-auto:nth-last-of-type(19)~.medium-auto{--f7-cols-per-row:19}.row .medium-auto:nth-last-of-type(20),.row .medium-auto:nth-last-of-type(20)~.medium-auto{--f7-cols-per-row:20}.row .medium-auto:nth-last-of-type(21),.row .medium-auto:nth-last-of-type(21)~.medium-auto{--f7-cols-per-row:21}.row .medium-auto:nth-last-of-type(22),.row .medium-auto:nth-last-of-type(22)~.medium-auto{--f7-cols-per-row:22}}@media (min-width:1024px){.row .large-5{--f7-cols-per-row:20}.row .large-10{--f7-cols-per-row:10}.row .large-15{--f7-cols-per-row:6.66666667}.row .large-20{--f7-cols-per-row:5}.row .large-25{--f7-cols-per-row:4}.row .large-30{--f7-cols-per-row:3.33333333}.row .large-33{--f7-cols-per-row:3}.row .large-35{--f7-cols-per-row:2.85714286}.row .large-40{--f7-cols-per-row:2.5}.row .large-45{--f7-cols-per-row:2.22222222}.row .large-50{--f7-cols-per-row:2}.row .large-55{--f7-cols-per-row:1.81818182}.row .large-60{--f7-cols-per-row:1.66666667}.row .large-65{--f7-cols-per-row:1.53846154}.row .large-66{--f7-cols-per-row:1.5}.row .large-70{--f7-cols-per-row:1.42857143}.row .large-75{--f7-cols-per-row:1.33333333}.row .large-80{--f7-cols-per-row:1.25}.row .large-85{--f7-cols-per-row:1.17647059}.row .large-90{--f7-cols-per-row:1.11111111}.row .large-95{--f7-cols-per-row:1.05263158}.row .large-100{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(1),.row .large-auto:nth-last-of-type(1)~.large-auto{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(2),.row .large-auto:nth-last-of-type(2)~.large-auto{--f7-cols-per-row:2}.row .large-auto:nth-last-of-type(3),.row .large-auto:nth-last-of-type(3)~.large-auto{--f7-cols-per-row:3}.row .large-auto:nth-last-of-type(4),.row .large-auto:nth-last-of-type(4)~.large-auto{--f7-cols-per-row:4}.row .large-auto:nth-last-of-type(5),.row .large-auto:nth-last-of-type(5)~.large-auto{--f7-cols-per-row:5}.row .large-auto:nth-last-of-type(6),.row .large-auto:nth-last-of-type(6)~.large-auto{--f7-cols-per-row:6}.row .large-auto:nth-last-of-type(7),.row .large-auto:nth-last-of-type(7)~.large-auto{--f7-cols-per-row:7}.row .large-auto:nth-last-of-type(8),.row .large-auto:nth-last-of-type(8)~.large-auto{--f7-cols-per-row:8}.row .large-auto:nth-last-of-type(9),.row .large-auto:nth-last-of-type(9)~.large-auto{--f7-cols-per-row:9}.row .large-auto:nth-last-of-type(10),.row .large-auto:nth-last-of-type(10)~.large-auto{--f7-cols-per-row:10}.row .large-auto:nth-last-of-type(11),.row .large-auto:nth-last-of-type(11)~.large-auto{--f7-cols-per-row:11}.row .large-auto:nth-last-of-type(12),.row .large-auto:nth-last-of-type(12)~.large-auto{--f7-cols-per-row:12}.row .large-auto:nth-last-of-type(13),.row .large-auto:nth-last-of-type(13)~.large-auto{--f7-cols-per-row:13}.row .large-auto:nth-last-of-type(14),.row .large-auto:nth-last-of-type(14)~.large-auto{--f7-cols-per-row:14}.row .large-auto:nth-last-of-type(15),.row .large-auto:nth-last-of-type(15)~.large-auto{--f7-cols-per-row:15}.row .large-auto:nth-last-of-type(16),.row .large-auto:nth-last-of-type(16)~.large-auto{--f7-cols-per-row:16}.row .large-auto:nth-last-of-type(17),.row .large-auto:nth-last-of-type(17)~.large-auto{--f7-cols-per-row:17}.row .large-auto:nth-last-of-type(18),.row .large-auto:nth-last-of-type(18)~.large-auto{--f7-cols-per-row:18}.row .large-auto:nth-last-of-type(19),.row .large-auto:nth-last-of-type(19)~.large-auto{--f7-cols-per-row:19}.row .large-auto:nth-last-of-type(20),.row .large-auto:nth-last-of-type(20)~.large-auto{--f7-cols-per-row:20}.row .large-auto:nth-last-of-type(21),.row .large-auto:nth-last-of-type(21)~.large-auto{--f7-cols-per-row:21}.row .large-auto:nth-last-of-type(22),.row .large-auto:nth-last-of-type(22)~.large-auto{--f7-cols-per-row:22}}@media (min-width:1200px){.row .xlarge-5{--f7-cols-per-row:20}.row .xlarge-10{--f7-cols-per-row:10}.row .xlarge-15{--f7-cols-per-row:6.66666667}.row .xlarge-20{--f7-cols-per-row:5}.row .xlarge-25{--f7-cols-per-row:4}.row .xlarge-30{--f7-cols-per-row:3.33333333}.row .xlarge-33{--f7-cols-per-row:3}.row .xlarge-35{--f7-cols-per-row:2.85714286}.row .xlarge-40{--f7-cols-per-row:2.5}.row .xlarge-45{--f7-cols-per-row:2.22222222}.row .xlarge-50{--f7-cols-per-row:2}.row .xlarge-55{--f7-cols-per-row:1.81818182}.row .xlarge-60{--f7-cols-per-row:1.66666667}.row .xlarge-65{--f7-cols-per-row:1.53846154}.row .xlarge-66{--f7-cols-per-row:1.5}.row .xlarge-70{--f7-cols-per-row:1.42857143}.row .xlarge-75{--f7-cols-per-row:1.33333333}.row .xlarge-80{--f7-cols-per-row:1.25}.row .xlarge-85{--f7-cols-per-row:1.17647059}.row .xlarge-90{--f7-cols-per-row:1.11111111}.row .xlarge-95{--f7-cols-per-row:1.05263158}.row .xlarge-100{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(1),.row .xlarge-auto:nth-last-of-type(1)~.xlarge-auto{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(2),.row .xlarge-auto:nth-last-of-type(2)~.xlarge-auto{--f7-cols-per-row:2}.row .xlarge-auto:nth-last-of-type(3),.row .xlarge-auto:nth-last-of-type(3)~.xlarge-auto{--f7-cols-per-row:3}.row .xlarge-auto:nth-last-of-type(4),.row .xlarge-auto:nth-last-of-type(4)~.xlarge-auto{--f7-cols-per-row:4}.row .xlarge-auto:nth-last-of-type(5),.row .xlarge-auto:nth-last-of-type(5)~.xlarge-auto{--f7-cols-per-row:5}.row .xlarge-auto:nth-last-of-type(6),.row .xlarge-auto:nth-last-of-type(6)~.xlarge-auto{--f7-cols-per-row:6}.row .xlarge-auto:nth-last-of-type(7),.row .xlarge-auto:nth-last-of-type(7)~.xlarge-auto{--f7-cols-per-row:7}.row .xlarge-auto:nth-last-of-type(8),.row .xlarge-auto:nth-last-of-type(8)~.xlarge-auto{--f7-cols-per-row:8}.row .xlarge-auto:nth-last-of-type(9),.row .xlarge-auto:nth-last-of-type(9)~.xlarge-auto{--f7-cols-per-row:9}.row .xlarge-auto:nth-last-of-type(10),.row .xlarge-auto:nth-last-of-type(10)~.xlarge-auto{--f7-cols-per-row:10}.row .xlarge-auto:nth-last-of-type(11),.row .xlarge-auto:nth-last-of-type(11)~.xlarge-auto{--f7-cols-per-row:11}.row .xlarge-auto:nth-last-of-type(12),.row .xlarge-auto:nth-last-of-type(12)~.xlarge-auto{--f7-cols-per-row:12}.row .xlarge-auto:nth-last-of-type(13),.row .xlarge-auto:nth-last-of-type(13)~.xlarge-auto{--f7-cols-per-row:13}.row .xlarge-auto:nth-last-of-type(14),.row .xlarge-auto:nth-last-of-type(14)~.xlarge-auto{--f7-cols-per-row:14}.row .xlarge-auto:nth-last-of-type(15),.row .xlarge-auto:nth-last-of-type(15)~.xlarge-auto{--f7-cols-per-row:15}.row .xlarge-auto:nth-last-of-type(16),.row .xlarge-auto:nth-last-of-type(16)~.xlarge-auto{--f7-cols-per-row:16}.row .xlarge-auto:nth-last-of-type(17),.row .xlarge-auto:nth-last-of-type(17)~.xlarge-auto{--f7-cols-per-row:17}.row .xlarge-auto:nth-last-of-type(18),.row .xlarge-auto:nth-last-of-type(18)~.xlarge-auto{--f7-cols-per-row:18}.row .xlarge-auto:nth-last-of-type(19),.row .xlarge-auto:nth-last-of-type(19)~.xlarge-auto{--f7-cols-per-row:19}.row .xlarge-auto:nth-last-of-type(20),.row .xlarge-auto:nth-last-of-type(20)~.xlarge-auto{--f7-cols-per-row:20}.row .xlarge-auto:nth-last-of-type(21),.row .xlarge-auto:nth-last-of-type(21)~.xlarge-auto{--f7-cols-per-row:21}.row .xlarge-auto:nth-last-of-type(22),.row .xlarge-auto:nth-last-of-type(22)~.xlarge-auto{--f7-cols-per-row:22}}.row .resize-handler{position:absolute;-webkit-user-select:none;user-select:none;z-index:100}.row .resize-handler:before{content:'';position:absolute}.row .resize-handler:after{content:'';position:absolute;border-radius:4px;background:var(--f7-grid-resize-handler-bg-color)}.row>.resize-handler{width:100%;height:var(--f7-grid-row-gap);left:0;top:100%;cursor:row-resize}.row>.resize-handler:before{left:0%;top:50%;height:12px;width:100%;min-height:var(--f7-grid-row-gap);transform:translateY(-50%)}.row>.resize-handler:after{height:4px;margin-top:-2px;width:80%;max-width:20px;left:50%;top:50%;transform:translateX(-50%)}.col>.resize-handler,[class*=col-]>.resize-handler{width:var(--f7-grid-gap);left:100%;top:0;height:100%;cursor:col-resize}.col>.resize-handler:before,[class*=col-]>.resize-handler:before{left:50%;top:0;height:100%;width:12px;min-width:var(--f7-grid-gap);transform:translateX(-50%)}.col>.resize-handler:after,[class*=col-]>.resize-handler:after{width:4px;margin-left:-2px;height:80%;max-height:20px;border-radius:4px;left:50%;top:50%;transform:translateY(-50%)}.row .col:last-child>.resize-handler,.row .col:last-of-type>.resize-handler,.row [class*=col-]:last-child>.resize-handler,.row [class*=col-]:last-of-type>.resize-handler,.row:last-child>.resize-handler,.row:last-of-type>.resize-handler{display:none}
\ No newline at end of file
+:root{--f7-grid-gap:16px;--f7-grid-row-gap:0px;--f7-grid-resize-handler-bg-color:rgba(0, 0, 0, 0.35)}:root .theme-dark,:root.theme-dark{--f7-grid-resize-handler-bg-color:rgba(255, 255, 255, 0.35)}.row{display:flex;justify-content:space-between;flex-wrap:wrap;align-items:flex-start;--f7-cols-per-row:1}.row+.row{margin-top:var(--f7-grid-row-gap)}.row>.col,.row>[class*=col-]{box-sizing:border-box;width:calc((100% - var(--f7-grid-gap) * (var(--f7-cols-per-row) - 1))/ var(--f7-cols-per-row))}.row>.col.resizable,.row>[class*=col-].resizable{position:relative}.row.resizable{position:relative}.row.no-gap{--f7-grid-gap:0px;--f7-grid-row-gap:0px}.row .col-5{--f7-cols-per-row:20}.row .col-10{--f7-cols-per-row:10}.row .col-15{--f7-cols-per-row:6.66666667}.row .col-20{--f7-cols-per-row:5}.row .col-25{--f7-cols-per-row:4}.row .col-30{--f7-cols-per-row:3.33333333}.row .col-33{--f7-cols-per-row:3}.row .col-35{--f7-cols-per-row:2.85714286}.row .col-40{--f7-cols-per-row:2.5}.row .col-45{--f7-cols-per-row:2.22222222}.row .col-50{--f7-cols-per-row:2}.row .col-55{--f7-cols-per-row:1.81818182}.row .col-60{--f7-cols-per-row:1.66666667}.row .col-65{--f7-cols-per-row:1.53846154}.row .col-66{--f7-cols-per-row:1.5}.row .col-70{--f7-cols-per-row:1.42857143}.row .col-75{--f7-cols-per-row:1.33333333}.row .col-80{--f7-cols-per-row:1.25}.row .col-85{--f7-cols-per-row:1.17647059}.row .col-90{--f7-cols-per-row:1.11111111}.row .col-95{--f7-cols-per-row:1.05263158}.row .col-100{--f7-cols-per-row:1}.row .col:nth-last-of-type(1),.row .col:nth-last-of-type(1)~.col{--f7-cols-per-row:1}.row .col:nth-last-of-type(2),.row .col:nth-last-of-type(2)~.col{--f7-cols-per-row:2}.row .col:nth-last-of-type(3),.row .col:nth-last-of-type(3)~.col{--f7-cols-per-row:3}.row .col:nth-last-of-type(4),.row .col:nth-last-of-type(4)~.col{--f7-cols-per-row:4}.row .col:nth-last-of-type(5),.row .col:nth-last-of-type(5)~.col{--f7-cols-per-row:5}.row .col:nth-last-of-type(6),.row .col:nth-last-of-type(6)~.col{--f7-cols-per-row:6}.row .col:nth-last-of-type(7),.row .col:nth-last-of-type(7)~.col{--f7-cols-per-row:7}.row .col:nth-last-of-type(8),.row .col:nth-last-of-type(8)~.col{--f7-cols-per-row:8}.row .col:nth-last-of-type(9),.row .col:nth-last-of-type(9)~.col{--f7-cols-per-row:9}.row .col:nth-last-of-type(10),.row .col:nth-last-of-type(10)~.col{--f7-cols-per-row:10}.row .col:nth-last-of-type(11),.row .col:nth-last-of-type(11)~.col{--f7-cols-per-row:11}.row .col:nth-last-of-type(12),.row .col:nth-last-of-type(12)~.col{--f7-cols-per-row:12}.row .col:nth-last-of-type(13),.row .col:nth-last-of-type(13)~.col{--f7-cols-per-row:13}.row .col:nth-last-of-type(14),.row .col:nth-last-of-type(14)~.col{--f7-cols-per-row:14}.row .col:nth-last-of-type(15),.row .col:nth-last-of-type(15)~.col{--f7-cols-per-row:15}.row .col:nth-last-of-type(16),.row .col:nth-last-of-type(16)~.col{--f7-cols-per-row:16}.row .col:nth-last-of-type(17),.row .col:nth-last-of-type(17)~.col{--f7-cols-per-row:17}.row .col:nth-last-of-type(18),.row .col:nth-last-of-type(18)~.col{--f7-cols-per-row:18}.row .col:nth-last-of-type(19),.row .col:nth-last-of-type(19)~.col{--f7-cols-per-row:19}.row .col:nth-last-of-type(20),.row .col:nth-last-of-type(20)~.col{--f7-cols-per-row:20}.row .col:nth-last-of-type(21),.row .col:nth-last-of-type(21)~.col{--f7-cols-per-row:21}.row .col:nth-last-of-type(22),.row .col:nth-last-of-type(22)~.col{--f7-cols-per-row:22}@media (min-width:480px){.row .xsmall-5{--f7-cols-per-row:20}.row .xsmall-10{--f7-cols-per-row:10}.row .xsmall-15{--f7-cols-per-row:6.66666667}.row .xsmall-20{--f7-cols-per-row:5}.row .xsmall-25{--f7-cols-per-row:4}.row .xsmall-30{--f7-cols-per-row:3.33333333}.row .xsmall-33{--f7-cols-per-row:3}.row .xsmall-35{--f7-cols-per-row:2.85714286}.row .xsmall-40{--f7-cols-per-row:2.5}.row .xsmall-45{--f7-cols-per-row:2.22222222}.row .xsmall-50{--f7-cols-per-row:2}.row .xsmall-55{--f7-cols-per-row:1.81818182}.row .xsmall-60{--f7-cols-per-row:1.66666667}.row .xsmall-65{--f7-cols-per-row:1.53846154}.row .xsmall-66{--f7-cols-per-row:1.5}.row .xsmall-70{--f7-cols-per-row:1.42857143}.row .xsmall-75{--f7-cols-per-row:1.33333333}.row .xsmall-80{--f7-cols-per-row:1.25}.row .xsmall-85{--f7-cols-per-row:1.17647059}.row .xsmall-90{--f7-cols-per-row:1.11111111}.row .xsmall-95{--f7-cols-per-row:1.05263158}.row .xsmall-100{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(1),.row .xsmall-auto:nth-last-of-type(1)~.xsmall-auto{--f7-cols-per-row:1}.row .xsmall-auto:nth-last-of-type(2),.row .xsmall-auto:nth-last-of-type(2)~.xsmall-auto{--f7-cols-per-row:2}.row .xsmall-auto:nth-last-of-type(3),.row .xsmall-auto:nth-last-of-type(3)~.xsmall-auto{--f7-cols-per-row:3}.row .xsmall-auto:nth-last-of-type(4),.row .xsmall-auto:nth-last-of-type(4)~.xsmall-auto{--f7-cols-per-row:4}.row .xsmall-auto:nth-last-of-type(5),.row .xsmall-auto:nth-last-of-type(5)~.xsmall-auto{--f7-cols-per-row:5}.row .xsmall-auto:nth-last-of-type(6),.row .xsmall-auto:nth-last-of-type(6)~.xsmall-auto{--f7-cols-per-row:6}.row .xsmall-auto:nth-last-of-type(7),.row .xsmall-auto:nth-last-of-type(7)~.xsmall-auto{--f7-cols-per-row:7}.row .xsmall-auto:nth-last-of-type(8),.row .xsmall-auto:nth-last-of-type(8)~.xsmall-auto{--f7-cols-per-row:8}.row .xsmall-auto:nth-last-of-type(9),.row .xsmall-auto:nth-last-of-type(9)~.xsmall-auto{--f7-cols-per-row:9}.row .xsmall-auto:nth-last-of-type(10),.row .xsmall-auto:nth-last-of-type(10)~.xsmall-auto{--f7-cols-per-row:10}.row .xsmall-auto:nth-last-of-type(11),.row .xsmall-auto:nth-last-of-type(11)~.xsmall-auto{--f7-cols-per-row:11}.row .xsmall-auto:nth-last-of-type(12),.row .xsmall-auto:nth-last-of-type(12)~.xsmall-auto{--f7-cols-per-row:12}.row .xsmall-auto:nth-last-of-type(13),.row .xsmall-auto:nth-last-of-type(13)~.xsmall-auto{--f7-cols-per-row:13}.row .xsmall-auto:nth-last-of-type(14),.row .xsmall-auto:nth-last-of-type(14)~.xsmall-auto{--f7-cols-per-row:14}.row .xsmall-auto:nth-last-of-type(15),.row .xsmall-auto:nth-last-of-type(15)~.xsmall-auto{--f7-cols-per-row:15}.row .xsmall-auto:nth-last-of-type(16),.row .xsmall-auto:nth-last-of-type(16)~.xsmall-auto{--f7-cols-per-row:16}.row .xsmall-auto:nth-last-of-type(17),.row .xsmall-auto:nth-last-of-type(17)~.xsmall-auto{--f7-cols-per-row:17}.row .xsmall-auto:nth-last-of-type(18),.row .xsmall-auto:nth-last-of-type(18)~.xsmall-auto{--f7-cols-per-row:18}.row .xsmall-auto:nth-last-of-type(19),.row .xsmall-auto:nth-last-of-type(19)~.xsmall-auto{--f7-cols-per-row:19}.row .xsmall-auto:nth-last-of-type(20),.row .xsmall-auto:nth-last-of-type(20)~.xsmall-auto{--f7-cols-per-row:20}.row .xsmall-auto:nth-last-of-type(21),.row .xsmall-auto:nth-last-of-type(21)~.xsmall-auto{--f7-cols-per-row:21}.row .xsmall-auto:nth-last-of-type(22),.row .xsmall-auto:nth-last-of-type(22)~.xsmall-auto{--f7-cols-per-row:22}}@media (min-width:568px){.row .small-5{--f7-cols-per-row:20}.row .small-10{--f7-cols-per-row:10}.row .small-15{--f7-cols-per-row:6.66666667}.row .small-20{--f7-cols-per-row:5}.row .small-25{--f7-cols-per-row:4}.row .small-30{--f7-cols-per-row:3.33333333}.row .small-33{--f7-cols-per-row:3}.row .small-35{--f7-cols-per-row:2.85714286}.row .small-40{--f7-cols-per-row:2.5}.row .small-45{--f7-cols-per-row:2.22222222}.row .small-50{--f7-cols-per-row:2}.row .small-55{--f7-cols-per-row:1.81818182}.row .small-60{--f7-cols-per-row:1.66666667}.row .small-65{--f7-cols-per-row:1.53846154}.row .small-66{--f7-cols-per-row:1.5}.row .small-70{--f7-cols-per-row:1.42857143}.row .small-75{--f7-cols-per-row:1.33333333}.row .small-80{--f7-cols-per-row:1.25}.row .small-85{--f7-cols-per-row:1.17647059}.row .small-90{--f7-cols-per-row:1.11111111}.row .small-95{--f7-cols-per-row:1.05263158}.row .small-100{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(1),.row .small-auto:nth-last-of-type(1)~.small-auto{--f7-cols-per-row:1}.row .small-auto:nth-last-of-type(2),.row .small-auto:nth-last-of-type(2)~.small-auto{--f7-cols-per-row:2}.row .small-auto:nth-last-of-type(3),.row .small-auto:nth-last-of-type(3)~.small-auto{--f7-cols-per-row:3}.row .small-auto:nth-last-of-type(4),.row .small-auto:nth-last-of-type(4)~.small-auto{--f7-cols-per-row:4}.row .small-auto:nth-last-of-type(5),.row .small-auto:nth-last-of-type(5)~.small-auto{--f7-cols-per-row:5}.row .small-auto:nth-last-of-type(6),.row .small-auto:nth-last-of-type(6)~.small-auto{--f7-cols-per-row:6}.row .small-auto:nth-last-of-type(7),.row .small-auto:nth-last-of-type(7)~.small-auto{--f7-cols-per-row:7}.row .small-auto:nth-last-of-type(8),.row .small-auto:nth-last-of-type(8)~.small-auto{--f7-cols-per-row:8}.row .small-auto:nth-last-of-type(9),.row .small-auto:nth-last-of-type(9)~.small-auto{--f7-cols-per-row:9}.row .small-auto:nth-last-of-type(10),.row .small-auto:nth-last-of-type(10)~.small-auto{--f7-cols-per-row:10}.row .small-auto:nth-last-of-type(11),.row .small-auto:nth-last-of-type(11)~.small-auto{--f7-cols-per-row:11}.row .small-auto:nth-last-of-type(12),.row .small-auto:nth-last-of-type(12)~.small-auto{--f7-cols-per-row:12}.row .small-auto:nth-last-of-type(13),.row .small-auto:nth-last-of-type(13)~.small-auto{--f7-cols-per-row:13}.row .small-auto:nth-last-of-type(14),.row .small-auto:nth-last-of-type(14)~.small-auto{--f7-cols-per-row:14}.row .small-auto:nth-last-of-type(15),.row .small-auto:nth-last-of-type(15)~.small-auto{--f7-cols-per-row:15}.row .small-auto:nth-last-of-type(16),.row .small-auto:nth-last-of-type(16)~.small-auto{--f7-cols-per-row:16}.row .small-auto:nth-last-of-type(17),.row .small-auto:nth-last-of-type(17)~.small-auto{--f7-cols-per-row:17}.row .small-auto:nth-last-of-type(18),.row .small-auto:nth-last-of-type(18)~.small-auto{--f7-cols-per-row:18}.row .small-auto:nth-last-of-type(19),.row .small-auto:nth-last-of-type(19)~.small-auto{--f7-cols-per-row:19}.row .small-auto:nth-last-of-type(20),.row .small-auto:nth-last-of-type(20)~.small-auto{--f7-cols-per-row:20}.row .small-auto:nth-last-of-type(21),.row .small-auto:nth-last-of-type(21)~.small-auto{--f7-cols-per-row:21}.row .small-auto:nth-last-of-type(22),.row .small-auto:nth-last-of-type(22)~.small-auto{--f7-cols-per-row:22}}@media (min-width:768px){.row .medium-5{--f7-cols-per-row:20}.row .medium-10{--f7-cols-per-row:10}.row .medium-15{--f7-cols-per-row:6.66666667}.row .medium-20{--f7-cols-per-row:5}.row .medium-25{--f7-cols-per-row:4}.row .medium-30{--f7-cols-per-row:3.33333333}.row .medium-33{--f7-cols-per-row:3}.row .medium-35{--f7-cols-per-row:2.85714286}.row .medium-40{--f7-cols-per-row:2.5}.row .medium-45{--f7-cols-per-row:2.22222222}.row .medium-50{--f7-cols-per-row:2}.row .medium-55{--f7-cols-per-row:1.81818182}.row .medium-60{--f7-cols-per-row:1.66666667}.row .medium-65{--f7-cols-per-row:1.53846154}.row .medium-66{--f7-cols-per-row:1.5}.row .medium-70{--f7-cols-per-row:1.42857143}.row .medium-75{--f7-cols-per-row:1.33333333}.row .medium-80{--f7-cols-per-row:1.25}.row .medium-85{--f7-cols-per-row:1.17647059}.row .medium-90{--f7-cols-per-row:1.11111111}.row .medium-95{--f7-cols-per-row:1.05263158}.row .medium-100{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(1),.row .medium-auto:nth-last-of-type(1)~.medium-auto{--f7-cols-per-row:1}.row .medium-auto:nth-last-of-type(2),.row .medium-auto:nth-last-of-type(2)~.medium-auto{--f7-cols-per-row:2}.row .medium-auto:nth-last-of-type(3),.row .medium-auto:nth-last-of-type(3)~.medium-auto{--f7-cols-per-row:3}.row .medium-auto:nth-last-of-type(4),.row .medium-auto:nth-last-of-type(4)~.medium-auto{--f7-cols-per-row:4}.row .medium-auto:nth-last-of-type(5),.row .medium-auto:nth-last-of-type(5)~.medium-auto{--f7-cols-per-row:5}.row .medium-auto:nth-last-of-type(6),.row .medium-auto:nth-last-of-type(6)~.medium-auto{--f7-cols-per-row:6}.row .medium-auto:nth-last-of-type(7),.row .medium-auto:nth-last-of-type(7)~.medium-auto{--f7-cols-per-row:7}.row .medium-auto:nth-last-of-type(8),.row .medium-auto:nth-last-of-type(8)~.medium-auto{--f7-cols-per-row:8}.row .medium-auto:nth-last-of-type(9),.row .medium-auto:nth-last-of-type(9)~.medium-auto{--f7-cols-per-row:9}.row .medium-auto:nth-last-of-type(10),.row .medium-auto:nth-last-of-type(10)~.medium-auto{--f7-cols-per-row:10}.row .medium-auto:nth-last-of-type(11),.row .medium-auto:nth-last-of-type(11)~.medium-auto{--f7-cols-per-row:11}.row .medium-auto:nth-last-of-type(12),.row .medium-auto:nth-last-of-type(12)~.medium-auto{--f7-cols-per-row:12}.row .medium-auto:nth-last-of-type(13),.row .medium-auto:nth-last-of-type(13)~.medium-auto{--f7-cols-per-row:13}.row .medium-auto:nth-last-of-type(14),.row .medium-auto:nth-last-of-type(14)~.medium-auto{--f7-cols-per-row:14}.row .medium-auto:nth-last-of-type(15),.row .medium-auto:nth-last-of-type(15)~.medium-auto{--f7-cols-per-row:15}.row .medium-auto:nth-last-of-type(16),.row .medium-auto:nth-last-of-type(16)~.medium-auto{--f7-cols-per-row:16}.row .medium-auto:nth-last-of-type(17),.row .medium-auto:nth-last-of-type(17)~.medium-auto{--f7-cols-per-row:17}.row .medium-auto:nth-last-of-type(18),.row .medium-auto:nth-last-of-type(18)~.medium-auto{--f7-cols-per-row:18}.row .medium-auto:nth-last-of-type(19),.row .medium-auto:nth-last-of-type(19)~.medium-auto{--f7-cols-per-row:19}.row .medium-auto:nth-last-of-type(20),.row .medium-auto:nth-last-of-type(20)~.medium-auto{--f7-cols-per-row:20}.row .medium-auto:nth-last-of-type(21),.row .medium-auto:nth-last-of-type(21)~.medium-auto{--f7-cols-per-row:21}.row .medium-auto:nth-last-of-type(22),.row .medium-auto:nth-last-of-type(22)~.medium-auto{--f7-cols-per-row:22}}@media (min-width:1024px){.row .large-5{--f7-cols-per-row:20}.row .large-10{--f7-cols-per-row:10}.row .large-15{--f7-cols-per-row:6.66666667}.row .large-20{--f7-cols-per-row:5}.row .large-25{--f7-cols-per-row:4}.row .large-30{--f7-cols-per-row:3.33333333}.row .large-33{--f7-cols-per-row:3}.row .large-35{--f7-cols-per-row:2.85714286}.row .large-40{--f7-cols-per-row:2.5}.row .large-45{--f7-cols-per-row:2.22222222}.row .large-50{--f7-cols-per-row:2}.row .large-55{--f7-cols-per-row:1.81818182}.row .large-60{--f7-cols-per-row:1.66666667}.row .large-65{--f7-cols-per-row:1.53846154}.row .large-66{--f7-cols-per-row:1.5}.row .large-70{--f7-cols-per-row:1.42857143}.row .large-75{--f7-cols-per-row:1.33333333}.row .large-80{--f7-cols-per-row:1.25}.row .large-85{--f7-cols-per-row:1.17647059}.row .large-90{--f7-cols-per-row:1.11111111}.row .large-95{--f7-cols-per-row:1.05263158}.row .large-100{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(1),.row .large-auto:nth-last-of-type(1)~.large-auto{--f7-cols-per-row:1}.row .large-auto:nth-last-of-type(2),.row .large-auto:nth-last-of-type(2)~.large-auto{--f7-cols-per-row:2}.row .large-auto:nth-last-of-type(3),.row .large-auto:nth-last-of-type(3)~.large-auto{--f7-cols-per-row:3}.row .large-auto:nth-last-of-type(4),.row .large-auto:nth-last-of-type(4)~.large-auto{--f7-cols-per-row:4}.row .large-auto:nth-last-of-type(5),.row .large-auto:nth-last-of-type(5)~.large-auto{--f7-cols-per-row:5}.row .large-auto:nth-last-of-type(6),.row .large-auto:nth-last-of-type(6)~.large-auto{--f7-cols-per-row:6}.row .large-auto:nth-last-of-type(7),.row .large-auto:nth-last-of-type(7)~.large-auto{--f7-cols-per-row:7}.row .large-auto:nth-last-of-type(8),.row .large-auto:nth-last-of-type(8)~.large-auto{--f7-cols-per-row:8}.row .large-auto:nth-last-of-type(9),.row .large-auto:nth-last-of-type(9)~.large-auto{--f7-cols-per-row:9}.row .large-auto:nth-last-of-type(10),.row .large-auto:nth-last-of-type(10)~.large-auto{--f7-cols-per-row:10}.row .large-auto:nth-last-of-type(11),.row .large-auto:nth-last-of-type(11)~.large-auto{--f7-cols-per-row:11}.row .large-auto:nth-last-of-type(12),.row .large-auto:nth-last-of-type(12)~.large-auto{--f7-cols-per-row:12}.row .large-auto:nth-last-of-type(13),.row .large-auto:nth-last-of-type(13)~.large-auto{--f7-cols-per-row:13}.row .large-auto:nth-last-of-type(14),.row .large-auto:nth-last-of-type(14)~.large-auto{--f7-cols-per-row:14}.row .large-auto:nth-last-of-type(15),.row .large-auto:nth-last-of-type(15)~.large-auto{--f7-cols-per-row:15}.row .large-auto:nth-last-of-type(16),.row .large-auto:nth-last-of-type(16)~.large-auto{--f7-cols-per-row:16}.row .large-auto:nth-last-of-type(17),.row .large-auto:nth-last-of-type(17)~.large-auto{--f7-cols-per-row:17}.row .large-auto:nth-last-of-type(18),.row .large-auto:nth-last-of-type(18)~.large-auto{--f7-cols-per-row:18}.row .large-auto:nth-last-of-type(19),.row .large-auto:nth-last-of-type(19)~.large-auto{--f7-cols-per-row:19}.row .large-auto:nth-last-of-type(20),.row .large-auto:nth-last-of-type(20)~.large-auto{--f7-cols-per-row:20}.row .large-auto:nth-last-of-type(21),.row .large-auto:nth-last-of-type(21)~.large-auto{--f7-cols-per-row:21}.row .large-auto:nth-last-of-type(22),.row .large-auto:nth-last-of-type(22)~.large-auto{--f7-cols-per-row:22}}@media (min-width:1200px){.row .xlarge-5{--f7-cols-per-row:20}.row .xlarge-10{--f7-cols-per-row:10}.row .xlarge-15{--f7-cols-per-row:6.66666667}.row .xlarge-20{--f7-cols-per-row:5}.row .xlarge-25{--f7-cols-per-row:4}.row .xlarge-30{--f7-cols-per-row:3.33333333}.row .xlarge-33{--f7-cols-per-row:3}.row .xlarge-35{--f7-cols-per-row:2.85714286}.row .xlarge-40{--f7-cols-per-row:2.5}.row .xlarge-45{--f7-cols-per-row:2.22222222}.row .xlarge-50{--f7-cols-per-row:2}.row .xlarge-55{--f7-cols-per-row:1.81818182}.row .xlarge-60{--f7-cols-per-row:1.66666667}.row .xlarge-65{--f7-cols-per-row:1.53846154}.row .xlarge-66{--f7-cols-per-row:1.5}.row .xlarge-70{--f7-cols-per-row:1.42857143}.row .xlarge-75{--f7-cols-per-row:1.33333333}.row .xlarge-80{--f7-cols-per-row:1.25}.row .xlarge-85{--f7-cols-per-row:1.17647059}.row .xlarge-90{--f7-cols-per-row:1.11111111}.row .xlarge-95{--f7-cols-per-row:1.05263158}.row .xlarge-100{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(1),.row .xlarge-auto:nth-last-of-type(1)~.xlarge-auto{--f7-cols-per-row:1}.row .xlarge-auto:nth-last-of-type(2),.row .xlarge-auto:nth-last-of-type(2)~.xlarge-auto{--f7-cols-per-row:2}.row .xlarge-auto:nth-last-of-type(3),.row .xlarge-auto:nth-last-of-type(3)~.xlarge-auto{--f7-cols-per-row:3}.row .xlarge-auto:nth-last-of-type(4),.row .xlarge-auto:nth-last-of-type(4)~.xlarge-auto{--f7-cols-per-row:4}.row .xlarge-auto:nth-last-of-type(5),.row .xlarge-auto:nth-last-of-type(5)~.xlarge-auto{--f7-cols-per-row:5}.row .xlarge-auto:nth-last-of-type(6),.row .xlarge-auto:nth-last-of-type(6)~.xlarge-auto{--f7-cols-per-row:6}.row .xlarge-auto:nth-last-of-type(7),.row .xlarge-auto:nth-last-of-type(7)~.xlarge-auto{--f7-cols-per-row:7}.row .xlarge-auto:nth-last-of-type(8),.row .xlarge-auto:nth-last-of-type(8)~.xlarge-auto{--f7-cols-per-row:8}.row .xlarge-auto:nth-last-of-type(9),.row .xlarge-auto:nth-last-of-type(9)~.xlarge-auto{--f7-cols-per-row:9}.row .xlarge-auto:nth-last-of-type(10),.row .xlarge-auto:nth-last-of-type(10)~.xlarge-auto{--f7-cols-per-row:10}.row .xlarge-auto:nth-last-of-type(11),.row .xlarge-auto:nth-last-of-type(11)~.xlarge-auto{--f7-cols-per-row:11}.row .xlarge-auto:nth-last-of-type(12),.row .xlarge-auto:nth-last-of-type(12)~.xlarge-auto{--f7-cols-per-row:12}.row .xlarge-auto:nth-last-of-type(13),.row .xlarge-auto:nth-last-of-type(13)~.xlarge-auto{--f7-cols-per-row:13}.row .xlarge-auto:nth-last-of-type(14),.row .xlarge-auto:nth-last-of-type(14)~.xlarge-auto{--f7-cols-per-row:14}.row .xlarge-auto:nth-last-of-type(15),.row .xlarge-auto:nth-last-of-type(15)~.xlarge-auto{--f7-cols-per-row:15}.row .xlarge-auto:nth-last-of-type(16),.row .xlarge-auto:nth-last-of-type(16)~.xlarge-auto{--f7-cols-per-row:16}.row .xlarge-auto:nth-last-of-type(17),.row .xlarge-auto:nth-last-of-type(17)~.xlarge-auto{--f7-cols-per-row:17}.row .xlarge-auto:nth-last-of-type(18),.row .xlarge-auto:nth-last-of-type(18)~.xlarge-auto{--f7-cols-per-row:18}.row .xlarge-auto:nth-last-of-type(19),.row .xlarge-auto:nth-last-of-type(19)~.xlarge-auto{--f7-cols-per-row:19}.row .xlarge-auto:nth-last-of-type(20),.row .xlarge-auto:nth-last-of-type(20)~.xlarge-auto{--f7-cols-per-row:20}.row .xlarge-auto:nth-last-of-type(21),.row .xlarge-auto:nth-last-of-type(21)~.xlarge-auto{--f7-cols-per-row:21}.row .xlarge-auto:nth-last-of-type(22),.row .xlarge-auto:nth-last-of-type(22)~.xlarge-auto{--f7-cols-per-row:22}}.row .resize-handler{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:100}.row .resize-handler:before{content:'';position:absolute}.row .resize-handler:after{content:'';position:absolute;border-radius:4px;background:var(--f7-grid-resize-handler-bg-color)}.row>.resize-handler{width:100%;height:var(--f7-grid-row-gap);left:0;top:100%;cursor:row-resize}.row>.resize-handler:before{left:0%;top:50%;height:12px;width:100%;min-height:var(--f7-grid-row-gap);transform:translateY(-50%)}.row>.resize-handler:after{height:4px;margin-top:-2px;width:80%;max-width:20px;left:50%;top:50%;transform:translateX(-50%)}.col>.resize-handler,[class*=col-]>.resize-handler{width:var(--f7-grid-gap);left:100%;top:0;height:100%;cursor:col-resize}.col>.resize-handler:before,[class*=col-]>.resize-handler:before{left:50%;top:0;height:100%;width:12px;min-width:var(--f7-grid-gap);transform:translateX(-50%)}.col>.resize-handler:after,[class*=col-]>.resize-handler:after{width:4px;margin-left:-2px;height:80%;max-height:20px;border-radius:4px;left:50%;top:50%;transform:translateY(-50%)}.row .col:last-child>.resize-handler,.row .col:last-of-type>.resize-handler,.row [class*=col-]:last-child>.resize-handler,.row [class*=col-]:last-of-type>.resize-handler,.row:last-child>.resize-handler,.row:last-of-type>.resize-handler{display:none}
\ No newline at end of file
diff --git a/www/assets/framework7/components/grid/grid.d.ts b/www/assets/framework7/components/grid/grid.d.ts
index f86ce02f1..364dd25a2 100644
--- a/www/assets/framework7/components/grid/grid.d.ts
+++ b/www/assets/framework7/components/grid/grid.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Grid {
interface AppMethods {}
diff --git a/www/assets/framework7/components/grid/grid.js b/www/assets/framework7/components/grid/grid.js
index 7dcefc675..fa8af39aa 100644
--- a/www/assets/framework7/components/grid/grid.js
+++ b/www/assets/framework7/components/grid/grid.js
@@ -1,227 +1 @@
-import { getDocument } from 'ssr-window';
-import $ from '../../shared/dom7.js';
-import { extend } from '../../shared/utils.js';
-
-function getElMinSize(dimension, $el) {
- let minSize = $el.css(`min-${dimension}`);
-
- if (minSize === 'auto' || minSize === 'none') {
- minSize = 0;
- } else if (minSize.indexOf('px') >= 0) {
- minSize = parseFloat(minSize);
- } else if (minSize.indexOf('%') >= 0) {
- minSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(minSize) / 100;
- }
-
- return minSize;
-}
-
-function getElMaxSize(dimension, $el) {
- let maxSize = $el.css(`max-${dimension}`);
-
- if (maxSize === 'auto' || maxSize === 'none') {
- maxSize = null;
- } else if (maxSize.indexOf('px') >= 0) {
- maxSize = parseFloat(maxSize);
- } else if (maxSize.indexOf('%') >= 0) {
- maxSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(maxSize) / 100;
- }
-
- return maxSize;
-}
-
-const Grid = {
- init() {
- const app = this;
- let isTouched;
- let isMoved;
- let touchStartX;
- let touchStartY;
- let $resizeHandlerEl;
- let $prevResizableEl;
- let $nextResizableEl;
- let prevElSize;
- let prevElMinSize;
- let prevElMaxSize;
- let nextElSize;
- let nextElMinSize;
- let nextElMaxSize;
- let parentSize;
- let itemsInFlow;
- let gapSize;
- let isScrolling;
-
- function handleTouchStart(e) {
- if (isTouched || isMoved) return;
- $resizeHandlerEl = $(e.target).closest('.resize-handler');
- touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
- touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
- isTouched = true;
- $prevResizableEl = undefined;
- $nextResizableEl = undefined;
- isScrolling = undefined;
- }
-
- function handleTouchMove(e) {
- if (!isTouched) return;
- const isRow = $resizeHandlerEl.parent('.row').length === 1;
- const sizeProp = isRow ? 'height' : 'width';
- const getSizeProp = isRow ? 'offsetHeight' : 'offsetWidth';
-
- if (!isMoved) {
- $prevResizableEl = $resizeHandlerEl.parent(isRow ? '.row' : '.col');
-
- if ($prevResizableEl.length && (!$prevResizableEl.hasClass('resizable') || $prevResizableEl.hasClass('resizable-fixed'))) {
- $prevResizableEl = $prevResizableEl.prevAll('.resizable:not(.resizable-fixed)').eq(0);
- }
-
- $nextResizableEl = $prevResizableEl.next(isRow ? '.row' : '.col');
-
- if ($nextResizableEl.length && (!$nextResizableEl.hasClass('resizable') || $nextResizableEl.hasClass('resizable-fixed'))) {
- $nextResizableEl = $nextResizableEl.nextAll('.resizable:not(.resizable-fixed)').eq(0);
- }
-
- if ($prevResizableEl.length) {
- prevElSize = $prevResizableEl[0][getSizeProp];
- prevElMinSize = getElMinSize(sizeProp, $prevResizableEl);
- prevElMaxSize = getElMaxSize(sizeProp, $prevResizableEl);
- parentSize = $prevResizableEl.parent()[0][getSizeProp];
- itemsInFlow = $prevResizableEl.parent().children(isRow ? '.row' : '[class*="col-"], .col').length;
- gapSize = parseFloat($prevResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));
- }
-
- if ($nextResizableEl.length) {
- nextElSize = $nextResizableEl[0][getSizeProp];
- nextElMinSize = getElMinSize(sizeProp, $nextResizableEl);
- nextElMaxSize = getElMaxSize(sizeProp, $nextResizableEl);
-
- if (!$prevResizableEl.length) {
- parentSize = $nextResizableEl.parent()[0][getSizeProp];
- itemsInFlow = $nextResizableEl.parent().children(isRow ? '.row' : '[class*="col-"], .col').length;
- gapSize = parseFloat($nextResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));
- }
- }
- }
-
- isMoved = true;
- const touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
- const touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
-
- if (typeof isScrolling === 'undefined' && !isRow) {
- isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
- }
-
- if (isScrolling) {
- isTouched = false;
- isMoved = false;
- return;
- }
-
- const isAbsolute = $prevResizableEl.hasClass('resizable-absolute') || $nextResizableEl.hasClass('resizable-absolute');
- const resizeNextEl = !isRow || isRow && !isAbsolute;
-
- if (resizeNextEl && !$nextResizableEl.length || !$prevResizableEl.length) {
- isTouched = false;
- isMoved = false;
- return;
- }
-
- e.preventDefault();
- let diff = isRow ? touchCurrentY - touchStartY : touchCurrentX - touchStartX;
- let prevElNewSize;
- let nextElNewSize;
-
- if ($prevResizableEl.length) {
- prevElNewSize = prevElSize + diff;
-
- if (prevElNewSize < prevElMinSize) {
- prevElNewSize = prevElMinSize;
- diff = prevElNewSize - prevElSize;
- }
-
- if (prevElMaxSize && prevElNewSize > prevElMaxSize) {
- prevElNewSize = prevElMaxSize;
- diff = prevElNewSize - prevElSize;
- }
- }
-
- if ($nextResizableEl.length && resizeNextEl) {
- nextElNewSize = nextElSize - diff;
-
- if (nextElNewSize < nextElMinSize) {
- nextElNewSize = nextElMinSize;
- diff = nextElSize - nextElNewSize;
- prevElNewSize = prevElSize + diff;
- }
-
- if (nextElMaxSize && nextElNewSize > nextElMaxSize) {
- nextElNewSize = nextElMaxSize;
- diff = nextElSize - nextElNewSize;
- prevElNewSize = prevElSize + diff;
- }
- }
-
- if (isAbsolute) {
- $prevResizableEl[0].style[sizeProp] = `${prevElNewSize}px`;
-
- if (resizeNextEl) {
- $nextResizableEl[0].style[sizeProp] = `${nextElNewSize}px`;
- }
-
- $prevResizableEl.trigger('grid:resize');
- $nextResizableEl.trigger('grid:resize');
- app.emit('gridResize', $prevResizableEl[0]);
- app.emit('gridResize', $nextResizableEl[0]);
- return;
- }
-
- const gapAddSize = (itemsInFlow - 1) * gapSize / itemsInFlow;
- const gapAddSizeCSS = isRow ? `${itemsInFlow - 1} * var(--f7-grid-row-gap) / ${itemsInFlow}` : '(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)';
- const prevElNewSizeNormalized = prevElNewSize + gapAddSize;
- const nextElNewSizeNormalized = nextElNewSize + gapAddSize;
- $prevResizableEl[0].style[sizeProp] = `calc(${prevElNewSizeNormalized / parentSize * 100}% - ${gapAddSizeCSS})`;
- $nextResizableEl[0].style[sizeProp] = `calc(${nextElNewSizeNormalized / parentSize * 100}% - ${gapAddSizeCSS})`;
- $prevResizableEl.trigger('grid:resize');
- $nextResizableEl.trigger('grid:resize');
- app.emit('gridResize', $prevResizableEl[0]);
- app.emit('gridResize', $nextResizableEl[0]);
- }
-
- function handleTouchEnd() {
- if (!isTouched) return;
-
- if (!isMoved) {
- isTouched = false;
- }
-
- isTouched = false;
- isMoved = false;
- }
-
- const document = getDocument();
- $(document).on(app.touchEvents.start, '.col > .resize-handler, .row > .resize-handler', handleTouchStart);
- app.on('touchmove', handleTouchMove);
- app.on('touchend', handleTouchEnd);
- }
-
-};
-export default {
- name: 'grid',
-
- create() {
- const app = this;
- extend(app, {
- grid: {
- init: Grid.init.bind(app)
- }
- });
- },
-
- on: {
- init() {
- const app = this;
- app.grid.init();
- }
-
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var r=e.$,a=e.utils,i=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,a.extend);function s(e,t){var r=t.css("min-"+e);return"auto"===r||"none"===r?r=0:r.indexOf("px")>=0?r=parseFloat(r):r.indexOf("%")>=0&&(r=t.parent()[0]["height"===e?"offsetHeight":"offsetWidth"]*parseFloat(r)/100),r}function o(e,t){var r=t.css("max-"+e);return"auto"===r||"none"===r?r=null:r.indexOf("px")>=0?r=parseFloat(r):r.indexOf("%")>=0&&(r=t.parent()[0]["height"===e?"offsetHeight":"offsetWidth"]*parseFloat(r)/100),r}var n={init:function(){var e,t,a,i,n,l,g,d,h,c,p,f,u,v,z,m,x,b=this;r(document).on(b.touchEvents.start,".col > .resize-handler, .row > .resize-handler",(function(s){e||t||(n=r(s.target).closest(".resize-handler"),a="touchstart"===s.type?s.targetTouches[0].pageX:s.pageX,i="touchstart"===s.type?s.targetTouches[0].pageY:s.pageY,e=!0,l=void 0,g=void 0,x=void 0)})),b.on("touchmove",(function(r){if(e){var w=1===n.parent(".row").length,y=w?"height":"width",C=w?"offsetHeight":"offsetWidth";t||(!(l=n.parent(w?".row":".col")).length||l.hasClass("resizable")&&!l.hasClass("resizable-fixed")||(l=l.prevAll(".resizable:not(.resizable-fixed)").eq(0)),!(g=l.next(w?".row":".col")).length||g.hasClass("resizable")&&!g.hasClass("resizable-fixed")||(g=g.nextAll(".resizable:not(.resizable-fixed)").eq(0)),l.length&&(d=l[0][C],h=s(y,l),c=o(y,l),v=l.parent()[0][C],z=l.parent().children(w?".row":'[class*="col-"], .col').length,m=parseFloat(l.css(w?"--f7-grid-row-gap":"--f7-grid-gap"))),g.length&&(p=g[0][C],f=s(y,g),u=o(y,g),l.length||(v=g.parent()[0][C],z=g.parent().children(w?".row":'[class*="col-"], .col').length,m=parseFloat(g.css(w?"--f7-grid-row-gap":"--f7-grid-gap"))))),t=!0;var M="touchmove"===r.type?r.targetTouches[0].pageX:r.pageX,F="touchmove"===r.type?r.targetTouches[0].pageY:r.pageY;if(void 0!==x||w||(x=!!(x||Math.abs(F-i)>Math.abs(M-a))),x)return e=!1,void(t=!1);var O=l.hasClass("resizable-absolute")||g.hasClass("resizable-absolute"),R=!w||w&&!O;if(R&&!g.length||!l.length)return e=!1,void(t=!1);r.preventDefault();var T,X,Y=w?F-i:M-a;if(l.length&&((T=d+Y)c&&(Y=(T=c)-d)),g.length&&R&&((X=p-Y)u&&(T=d+(Y=p-(X=u)))),O)return l[0].style[y]=T+"px",R&&(g[0].style[y]=X+"px"),l.trigger("grid:resize"),g.trigger("grid:resize"),b.emit("gridResize",l[0]),void b.emit("gridResize",g[0]);var H=(z-1)*m/z,W=w?z-1+" * var(--f7-grid-row-gap) / "+z:"(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)",q=T+H,A=X+H;l[0].style[y]="calc("+q/v*100+"% - "+W+")",g[0].style[y]="calc("+A/v*100+"% - "+W+")",l.trigger("grid:resize"),g.trigger("grid:resize"),b.emit("gridResize",l[0]),b.emit("gridResize",g[0])}})),b.on("touchend",(function(){e&&(t||(e=!1),e=!1,t=!1)}))}},l={name:"grid",create:function(){i(this,{grid:{init:n.init.bind(this)}})},on:{init:function(){this.grid.init()}}};if(t){if(e.prototype.modules&&e.prototype.modules[l.name])return;e.use(l),e.instance&&(e.instance.useModuleParams(l,e.instance.params),e.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/grid/grid.lazy.js b/www/assets/framework7/components/grid/grid.lazy.js
deleted file mode 100644
index 90aefe890..000000000
--- a/www/assets/framework7/components/grid/grid.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var r=e.$,s=e.utils,i=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,s.extend);function a(e,t){let r=t.css(`min-${e}`);return"auto"===r||"none"===r?r=0:r.indexOf("px")>=0?r=parseFloat(r):r.indexOf("%")>=0&&(r=t.parent()[0]["height"===e?"offsetHeight":"offsetWidth"]*parseFloat(r)/100),r}function o(e,t){let r=t.css(`max-${e}`);return"auto"===r||"none"===r?r=null:r.indexOf("px")>=0?r=parseFloat(r):r.indexOf("%")>=0&&(r=t.parent()[0]["height"===e?"offsetHeight":"offsetWidth"]*parseFloat(r)/100),r}const n={init(){const e=this;let t,s,i,n,l,g,d,h,c,p,f,u,v,z,m,x,b;r(document).on(e.touchEvents.start,".col > .resize-handler, .row > .resize-handler",(function(e){t||s||(l=r(e.target).closest(".resize-handler"),i="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,n="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,t=!0,g=void 0,d=void 0,b=void 0)})),e.on("touchmove",(function(r){if(!t)return;const w=1===l.parent(".row").length,$=w?"height":"width",y=w?"offsetHeight":"offsetWidth";s||(g=l.parent(w?".row":".col"),!g.length||g.hasClass("resizable")&&!g.hasClass("resizable-fixed")||(g=g.prevAll(".resizable:not(.resizable-fixed)").eq(0)),d=g.next(w?".row":".col"),!d.length||d.hasClass("resizable")&&!d.hasClass("resizable-fixed")||(d=d.nextAll(".resizable:not(.resizable-fixed)").eq(0)),g.length&&(h=g[0][y],c=a($,g),p=o($,g),z=g.parent()[0][y],m=g.parent().children(w?".row":'[class*="col-"], .col').length,x=parseFloat(g.css(w?"--f7-grid-row-gap":"--f7-grid-gap"))),d.length&&(f=d[0][y],u=a($,d),v=o($,d),g.length||(z=d.parent()[0][y],m=d.parent().children(w?".row":'[class*="col-"], .col').length,x=parseFloat(d.css(w?"--f7-grid-row-gap":"--f7-grid-gap"))))),s=!0;const C="touchmove"===r.type?r.targetTouches[0].pageX:r.pageX,M="touchmove"===r.type?r.targetTouches[0].pageY:r.pageY;if(void 0!==b||w||(b=!!(b||Math.abs(M-n)>Math.abs(C-i))),b)return t=!1,void(s=!1);const F=g.hasClass("resizable-absolute")||d.hasClass("resizable-absolute"),O=!w||w&&!F;if(O&&!d.length||!g.length)return t=!1,void(s=!1);r.preventDefault();let R,T,X=w?M-n:C-i;if(g.length&&(R=h+X,Rp&&(R=p,X=R-h)),d.length&&O&&(T=f-X,Tv&&(T=v,X=f-T,R=h+X)),F)return g[0].style[$]=`${R}px`,O&&(d[0].style[$]=`${T}px`),g.trigger("grid:resize"),d.trigger("grid:resize"),e.emit("gridResize",g[0]),void e.emit("gridResize",d[0]);const Y=(m-1)*x/m,H=w?`${m-1} * var(--f7-grid-row-gap) / ${m}`:"(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)",W=R+Y,q=T+Y;g[0].style[$]=`calc(${W/z*100}% - ${H})`,d[0].style[$]=`calc(${q/z*100}% - ${H})`,g.trigger("grid:resize"),d.trigger("grid:resize"),e.emit("gridResize",g[0]),e.emit("gridResize",d[0])})),e.on("touchend",(function(){t&&(s||(t=!1),t=!1,s=!1)}))}};var l={name:"grid",create(){i(this,{grid:{init:n.init.bind(this)}})},on:{init(){this.grid.init()}}};if(t){if(e.prototype.modules&&e.prototype.modules[l.name])return;e.use(l),e.instance&&(e.instance.useModuleParams(l,e.instance.params),e.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/grid/package.json b/www/assets/framework7/components/grid/package.json
new file mode 100644
index 000000000..681f0045d
--- /dev/null
+++ b/www/assets/framework7/components/grid/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/grid",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/grid/grid.js",
+ "module": "../../esm/components/grid/grid.js",
+ "jsnext:main": "../../esm/components/grid/grid.js",
+ "typings": "../../types/components/grid/grid.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/icon/icon.d.ts b/www/assets/framework7/components/icon/icon.d.ts
index 13b4671d9..4faddf6aa 100644
--- a/www/assets/framework7/components/icon/icon.d.ts
+++ b/www/assets/framework7/components/icon/icon.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Icon {
interface AppMethods {}
diff --git a/www/assets/framework7/components/icon/package.json b/www/assets/framework7/components/icon/package.json
new file mode 100644
index 000000000..38cdbe918
--- /dev/null
+++ b/www/assets/framework7/components/icon/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/icon",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/icon/icon.js",
+ "module": "../../esm/components/icon/icon.js",
+ "jsnext:main": "../../esm/components/icon/icon.js",
+ "typings": "../../types/components/icon/icon.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/infinite-scroll/infinite-scroll.d.ts b/www/assets/framework7/components/infinite-scroll/infinite-scroll.d.ts
index b75bb1f01..57aad564a 100644
--- a/www/assets/framework7/components/infinite-scroll/infinite-scroll.d.ts
+++ b/www/assets/framework7/components/infinite-scroll/infinite-scroll.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace InfiniteScroll {
interface DomEvents {
diff --git a/www/assets/framework7/components/infinite-scroll/infinite-scroll.js b/www/assets/framework7/components/infinite-scroll/infinite-scroll.js
index 2dd42d05e..ebeb4deb7 100644
--- a/www/assets/framework7/components/infinite-scroll/infinite-scroll.js
+++ b/www/assets/framework7/components/infinite-scroll/infinite-scroll.js
@@ -1,110 +1 @@
-import $ from '../../shared/dom7.js';
-import { bindMethods } from '../../shared/utils.js';
-const InfiniteScroll = {
- handle(el, e) {
- const app = this;
- const $el = $(el);
- const scrollTop = $el[0].scrollTop;
- const scrollHeight = $el[0].scrollHeight;
- const height = $el[0].offsetHeight;
- let distance = $el[0].getAttribute('data-infinite-distance');
- const virtualListContainer = $el.find('.virtual-list');
- let virtualList;
- const onTop = $el.hasClass('infinite-scroll-top');
- if (!distance) distance = 50;
-
- if (typeof distance === 'string' && distance.indexOf('%') >= 0) {
- distance = parseInt(distance, 10) / 100 * height;
- }
-
- if (distance > height) distance = height;
-
- if (onTop) {
- if (scrollTop < distance) {
- $el.trigger('infinite', e);
- app.emit('infinite', $el[0], e);
- }
- } else if (scrollTop + height >= scrollHeight - distance) {
- if (virtualListContainer.length > 0) {
- virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;
-
- if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {
- return;
- }
- }
-
- $el.trigger('infinite', e);
- app.emit('infinite', $el[0], e);
- }
- },
-
- create(el) {
- const $el = $(el);
- const app = this;
-
- function scrollHandler(e) {
- app.infiniteScroll.handle(this, e);
- }
-
- $el.each(element => {
- element.f7InfiniteScrollHandler = scrollHandler;
- element.addEventListener('scroll', element.f7InfiniteScrollHandler);
- });
- },
-
- destroy(el) {
- const $el = $(el);
- $el.each(element => {
- element.removeEventListener('scroll', element.f7InfiniteScrollHandler);
- delete element.f7InfiniteScrollHandler;
- });
- }
-
-};
-export default {
- name: 'infiniteScroll',
-
- create() {
- const app = this;
- bindMethods(app, {
- infiniteScroll: InfiniteScroll
- });
- },
-
- on: {
- tabMounted(tabEl) {
- const app = this;
- const $tabEl = $(tabEl);
- const $isEls = $tabEl.find('.infinite-scroll-content');
- if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);
- $isEls.each(el => {
- app.infiniteScroll.create(el);
- });
- },
-
- tabBeforeRemove(tabEl) {
- const $tabEl = $(tabEl);
- const app = this;
- const $isEls = $tabEl.find('.infinite-scroll-content');
- if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);
- $isEls.each(el => {
- app.infiniteScroll.destroy(el);
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.infinite-scroll-content').each(el => {
- app.infiniteScroll.create(el);
- });
- },
-
- pageBeforeRemove(page) {
- const app = this;
- page.$el.find('.infinite-scroll-content').each(el => {
- app.infiniteScroll.destroy(el);
- });
- }
-
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(n,i){void 0===i&&(i=!0);var e=n.$,t=n.utils,o=(n.getDevice,n.getSupport,n.Class,n.Modal,n.ConstructorMethods,n.ModalMethods,t.bindMethods),r={handle:function(n,i){var t,o=e(n),r=o[0].scrollTop,l=o[0].scrollHeight,c=o[0].offsetHeight,f=o[0].getAttribute("data-infinite-distance"),a=o.find(".virtual-list"),s=o.hasClass("infinite-scroll-top");if(f||(f=50),"string"==typeof f&&f.indexOf("%")>=0&&(f=parseInt(f,10)/100*c),f>c&&(f=c),s)r=l-f){if(a.length>0&&(t=a.eq(-1)[0].f7VirtualList)&&!t.reachEnd&&!t.params.updatableScroll)return;o.trigger("infinite",i),this.emit("infinite",o[0],i)}},create:function(n){var i=e(n),t=this;function o(n){t.infiniteScroll.handle(this,n)}i.each((function(n){n.f7InfiniteScrollHandler=o,n.addEventListener("scroll",n.f7InfiniteScrollHandler)}))},destroy:function(n){e(n).each((function(n){n.removeEventListener("scroll",n.f7InfiniteScrollHandler),delete n.f7InfiniteScrollHandler}))}},l={name:"infiniteScroll",create:function(){o(this,{infiniteScroll:r})},on:{tabMounted:function(n){var i=this,t=e(n),o=t.find(".infinite-scroll-content");t.is(".infinite-scroll-content")&&o.add(t),o.each((function(n){i.infiniteScroll.create(n)}))},tabBeforeRemove:function(n){var i=e(n),t=this,o=i.find(".infinite-scroll-content");i.is(".infinite-scroll-content")&&o.add(i),o.each((function(n){t.infiniteScroll.destroy(n)}))},pageInit:function(n){var i=this;n.$el.find(".infinite-scroll-content").each((function(n){i.infiniteScroll.create(n)}))},pageBeforeRemove:function(n){var i=this;n.$el.find(".infinite-scroll-content").each((function(n){i.infiniteScroll.destroy(n)}))}}};if(i){if(n.prototype.modules&&n.prototype.modules[l.name])return;n.use(l),n.instance&&(n.instance.useModuleParams(l,n.instance.params),n.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/infinite-scroll/infinite-scroll.lazy.js b/www/assets/framework7/components/infinite-scroll/infinite-scroll.lazy.js
deleted file mode 100644
index 736191eae..000000000
--- a/www/assets/framework7/components/infinite-scroll/infinite-scroll.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var i=e.$,n=e.utils,o=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,n.bindMethods);const l={handle(e,t){const n=this,o=i(e),l=o[0].scrollTop,r=o[0].scrollHeight,s=o[0].offsetHeight;let c=o[0].getAttribute("data-infinite-distance");const a=o.find(".virtual-list");let f;const d=o.hasClass("infinite-scroll-top");if(c||(c=50),"string"==typeof c&&c.indexOf("%")>=0&&(c=parseInt(c,10)/100*s),c>s&&(c=s),d)l=r-c){if(a.length>0&&(f=a.eq(-1)[0].f7VirtualList,f&&!f.reachEnd&&!f.params.updatableScroll))return;o.trigger("infinite",t),n.emit("infinite",o[0],t)}},create(e){const t=i(e),n=this;function o(e){n.infiniteScroll.handle(this,e)}t.each((e=>{e.f7InfiniteScrollHandler=o,e.addEventListener("scroll",e.f7InfiniteScrollHandler)}))},destroy(e){i(e).each((e=>{e.removeEventListener("scroll",e.f7InfiniteScrollHandler),delete e.f7InfiniteScrollHandler}))}};var r={name:"infiniteScroll",create(){o(this,{infiniteScroll:l})},on:{tabMounted(e){const t=this,n=i(e),o=n.find(".infinite-scroll-content");n.is(".infinite-scroll-content")&&o.add(n),o.each((e=>{t.infiniteScroll.create(e)}))},tabBeforeRemove(e){const t=i(e),n=this,o=t.find(".infinite-scroll-content");t.is(".infinite-scroll-content")&&o.add(t),o.each((e=>{n.infiniteScroll.destroy(e)}))},pageInit(e){const t=this;e.$el.find(".infinite-scroll-content").each((e=>{t.infiniteScroll.create(e)}))},pageBeforeRemove(e){const t=this;e.$el.find(".infinite-scroll-content").each((e=>{t.infiniteScroll.destroy(e)}))}}};if(t){if(e.prototype.modules&&e.prototype.modules[r.name])return;e.use(r),e.instance&&(e.instance.useModuleParams(r,e.instance.params),e.instance.useModule(r))}return r}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/infinite-scroll/package.json b/www/assets/framework7/components/infinite-scroll/package.json
new file mode 100644
index 000000000..a4cc0091e
--- /dev/null
+++ b/www/assets/framework7/components/infinite-scroll/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/infinite-scroll",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/infinite-scroll/infinite-scroll.js",
+ "module": "../../esm/components/infinite-scroll/infinite-scroll.js",
+ "jsnext:main": "../../esm/components/infinite-scroll/infinite-scroll.js",
+ "typings": "../../types/components/infinite-scroll/infinite-scroll.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/input/input-rtl.css b/www/assets/framework7/components/input/input-rtl.css
index 00158302b..d86055d82 100644
--- a/www/assets/framework7/components/input/input-rtl.css
+++ b/www/assets/framework7/components/input/input-rtl.css
@@ -1 +1 @@
-:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-line-height:1.3;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-input-outline-height:40px;--f7-input-outline-border-radius:4px;--f7-input-outline-padding-horizontal:12px;--f7-textarea-height:100px;--f7-input-outline-border-color:#bbb}:root .dark,:root.dark{--f7-input-outline-border-color:#444}.ios{--f7-input-height:44px;--f7-input-font-size:17px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:11px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(17 / 12);--f7-inline-label-font-size:17px;--f7-inline-label-line-height:1.4;--f7-inline-label-padding-top:3px;--f7-input-clear-button-size:14px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0, 0, 0, 0.45);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45)}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255, 255, 255, 0.55);--f7-input-clear-button-color:rgba(255, 255, 255, 0.5)}.md{--f7-input-height:36px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:7px;--f7-label-font-size:12px;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:7px;--f7-input-clear-button-size:18px;--f7-input-clear-button-color:#aaa;--f7-input-text-color:#212121;--f7-input-placeholder-color:rgba(0, 0, 0, 0.35);--f7-label-text-color:rgba(0, 0, 0, 0.65);--f7-input-info-text-color:rgba(0, 0, 0, 0.45)}.md .dark,.md.dark{--f7-input-text-color:rgba(255, 255, 255, 0.87);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-label-text-color:rgba(255, 255, 255, 0.54);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}.aurora{--f7-input-height:32px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:4px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:4px;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-placeholder-color:rgba(0, 0, 0, 0.32);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45);--f7-input-info-text-color:rgba(0, 0, 0, 0.5)}.aurora .dark,.aurora.dark{--f7-input-text-color:#fff;--f7-input-clear-button-color:rgba(255, 255, 255, 0.5);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{box-sizing:border-box;-webkit-appearance:none;appearance:none;border:none;box-shadow:none;border-radius:0;outline:0;display:block;padding:0;margin:0;font-family:inherit;background:0 0;resize:none;font-size:inherit;color:inherit}.textarea-resizable-shadow{opacity:0;position:absolute;z-index:-1000;pointer-events:none;left:-1000px;top:-1000px;visibility:hidden}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{width:100%;height:var(--f7-input-height);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);background-color:var(--f7-input-bg-color,transparent);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{width:100%;color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);resize:none;line-height:1.4;height:var(--f7-textarea-height);background-color:var(--f7-input-bg-color,transparent);padding-top:var(--f7-textarea-padding-vertical);padding-bottom:var(--f7-textarea-padding-vertical);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:var(--f7-input-height)}.list input[type=datetime-local]{max-width:50vw}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list input[type=date],.list input[type=datetime-local],.list input[type=month]{text-align:right;flex-direction:row-reverse;width:auto}.list .item-floating-label,.list .item-label{width:100%;vertical-align:top;flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-line-height);color:var(--f7-label-text-color);transition-duration:.2s;transition-property:transform,color}.list .item-floating-label{--label-height:calc(var(--f7-label-font-size) * var(--f7-label-line-height));transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/ 2 + 50%)/ var(--f7-floating-label-scale)));color:var(--f7-input-placeholder-color);width:auto;max-width:calc(100% / var(--f7-floating-label-scale));pointer-events:none;right:var(--f7-input-padding-right);transform-origin:right center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)}.list .item-input-wrap{width:100%;flex-shrink:1;position:relative}.item-input .item-inner{display:flex;flex-direction:column;align-items:flex-start}.input-error-message,.item-input-error-message{font-size:var(--f7-input-error-font-size);line-height:var(--f7-input-error-line-height);color:var(--f7-input-error-text-color);font-weight:var(--f7-input-error-font-weight);display:none;box-sizing:border-box}.input-info,.item-input-info{font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height);color:var(--f7-input-info-text-color)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.inline-label .item-inner,.inline-labels .item-inner{display:flex;align-items:center;flex-direction:row}.inline-label .item-floating-label,.inline-label .item-label,.inline-labels .item-floating-label,.inline-labels .item-label{padding-top:var(--f7-inline-label-padding-top);align-self:flex-start;width:35%;font-size:var(--f7-inline-label-font-size);line-height:var(--f7-inline-label-line-height)}.inline-label .item-floating-label+.item-input-wrap,.inline-label .item-label+.item-input-wrap,.inline-labels .item-floating-label+.item-input-wrap,.inline-labels .item-label+.item-input-wrap{margin-right:8px}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{opacity:0;pointer-events:none;visibility:hidden;transition-duration:.1s;position:absolute;top:50%;border:none;padding:0;margin:0;outline:0;z-index:1;cursor:pointer;background:0 0;width:var(--f7-input-clear-button-size);height:var(--f7-input-clear-button-size);margin-top:calc(-1 * var(--f7-input-clear-button-size)/ 2);color:var(--f7-input-clear-button-color);left:0}.input-clear-button:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px}.input-clear-button:before{position:absolute;content:'';left:50%;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/ 2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{content:'';pointer-events:none;position:absolute;top:50%;margin-top:-2px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;left:6px}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-left:calc(20px + var(--f7-input-padding-left))}.input-outline:after,.item-input-outline .item-input-wrap:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);transition-duration:.2s;pointer-events:none}.input-outline.input-focused:after,.item-input-outline.item-input-focused .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-focused-border-color,var(--f7-theme-color))}.input-outline.input-invalid:after,.item-input-outline.item-input-invalid .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color))}.input-outline input,.input-outline select,.input-outline textarea,.item-input-outline input,.item-input-outline select,.item-input-outline textarea,.list .item-input-outline input,.list .item-input-outline select,.list .item-input-outline textarea{border-radius:var(--f7-input-outline-border-radius);padding-left:var(--f7-input-outline-padding-horizontal);padding-right:var(--f7-input-outline-padding-horizontal)}.input-outline.input-dropdown:before,.item-input-outline .input-dropdown-wrap:before{left:8px}.input-outline.input-dropdown input,.input-outline.input-dropdown select,.input-outline.input-dropdown textarea,.item-input-outline .input-dropdown-wrap input,.item-input-outline .input-dropdown-wrap select,.item-input-outline .input-dropdown-wrap textarea{padding-left:20px}.input-outline .input-clear-button,.item-input-outline .input-clear-button{left:8px}.item-input-outline{--f7-input-height:var(--f7-input-outline-height)}.item-input-outline .item-inner:after{display:none!important}.item-input-outline .item-label{right:var(--f7-input-outline-padding-horizontal)}.inline-label .item-input-outline .item-label,.inline-labels .item-input-outline .item-label,.item-input-outline .inline-label .item-label,.item-input-outline .inline-label.item-label{right:0}.item-input-outline .item-floating-label{right:calc(var(--f7-input-outline-padding-horizontal) - 4px);padding-left:4px;padding-right:4px;background:var(--f7-page-bg-color);z-index:10;margin-top:calc(-.5 * (var(--f7-label-font-size) * var(--f7-label-line-height)))}.item-input-outline.item-input-focused .item-floating-label,.item-input-outline.item-input-with-value .item-floating-label{transform:scale(1) translateY(50%)}.item-input-outline .item-input-error-message,.item-input-outline .item-input-info{padding-right:var(--f7-input-outline-padding-horizontal)}.block-strong .item-input-outline .item-floating-label{background:var(--f7-block-strong-bg-color)}.list .item-input-outline .item-floating-label{background:var(--f7-list-bg-color)}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical));margin-bottom:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-floating-label+.item-input-wrap,.ios .inline-label .item-label+.item-input-wrap,.ios .inline-labels .item-floating-label+.item-input-wrap,.ios .inline-labels .item-label+.item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-input-wrap,.ios .inline-labels .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{position:relative;margin-bottom:6px;margin-top:-8px}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.ios .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.ios .input-outline .input-error-message,.ios .input-outline .input-info,.ios .input-outline .item-input-error-message,.ios .input-outline .item-input-info,.ios .item-input-outline .input-error-message,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-error-message,.ios .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.ios .input-outline .input-info,.ios .input-outline .item-input-info,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline .input-error-message,.ios .input-outline .item-input-error-message,.ios .item-input-outline .input-error-message,.ios .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.ios .input-outline.input-with-info .item-input-wrap,.ios .input-outline.item-input-with-info .item-input-wrap,.ios .item-input-outline.input-with-info .item-input-wrap,.ios .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline.input-with-error-message .item-input-wrap,.ios .input-outline.item-input-with-error-message .item-input-wrap,.ios .item-input-outline.input-with-error-message .item-input-wrap,.ios .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{transition-duration:.2s}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-input .item-media{align-self:flex-end}.md .item-input .item-inner:after{display:none!important}.md .inline-label .item-media,.md .inline-labels .item-media{align-self:flex-start;padding-top:14px}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:20px}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{position:absolute;top:100%;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;right:0}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{font-size:calc(var(--f7-input-clear-button-size) / (24 / 20));content:'delete_round_md';line-height:1.2}.md .input-clear-button:before{width:48px;height:48px;margin-left:-24px;margin-top:-24px}.aurora .item-floating-label+.item-input-wrap,.aurora .item-label+.item-input-wrap{margin-top:0}.aurora .input:not(.input-outline):after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.aurora .input:not(.input-outline):after{transition-duration:.2s}.aurora .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.aurora .inline-label .item-media,.aurora .inline-labels .item-media{align-self:flex-start;padding-top:12px}.aurora .input-error-message,.aurora .input-info,.aurora .item-input-error-message,.aurora .item-input-info{position:relative}.aurora .input-focused:not(.input-outline):after,.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{transform:scaleY(2)!important;display:block!important}.aurora .item-input-focused .item-floating-label,.aurora .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.aurora .input-focused:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.aurora .item-input-invalid .item-floating-label,.aurora .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.aurora .input-invalid input,.aurora .input-invalid select,.aurora .input-invalid textarea,.aurora .item-input-invalid input,.aurora .item-input-invalid select,.aurora .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.aurora .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.aurora .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.aurora .input-outline .item-input-wrap,.aurora .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.aurora .input-outline .input-error-message,.aurora .input-outline .input-info,.aurora .input-outline .item-input-error-message,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-error-message,.aurora .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.aurora .input-outline .input-info,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline .input-error-message,.aurora .input-outline .item-input-error-message,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.aurora .input-outline.input-with-info .item-input-wrap,.aurora .input-outline.item-input-with-info .item-input-wrap,.aurora .item-input-outline.input-with-info .item-input-wrap,.aurora .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline.input-with-error-message .item-input-wrap,.aurora .input-outline.item-input-with-error-message .item-input-wrap,.aurora .item-input-outline.input-with-error-message .item-input-wrap,.aurora .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}
\ No newline at end of file
+:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-line-height:1.3;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-input-outline-height:40px;--f7-input-outline-border-radius:4px;--f7-input-outline-padding-horizontal:12px;--f7-textarea-height:100px;--f7-input-outline-border-color:#bbb}:root .theme-dark,:root.theme-dark{--f7-input-outline-border-color:#444}.ios{--f7-input-height:44px;--f7-input-font-size:17px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:11px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(17 / 12);--f7-inline-label-font-size:17px;--f7-inline-label-line-height:1.4;--f7-inline-label-padding-top:3px;--f7-input-clear-button-size:14px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0, 0, 0, 0.45);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45)}.ios .theme-dark,.ios.theme-dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255, 255, 255, 0.55);--f7-input-clear-button-color:rgba(255, 255, 255, 0.5)}.md{--f7-input-height:36px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:7px;--f7-label-font-size:12px;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:7px;--f7-input-clear-button-size:18px;--f7-input-clear-button-color:#aaa;--f7-input-text-color:#212121;--f7-input-placeholder-color:rgba(0, 0, 0, 0.35);--f7-label-text-color:rgba(0, 0, 0, 0.65);--f7-input-info-text-color:rgba(0, 0, 0, 0.45)}.md .theme-dark,.md.theme-dark{--f7-input-text-color:rgba(255, 255, 255, 0.87);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-label-text-color:rgba(255, 255, 255, 0.54);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}.aurora{--f7-input-height:32px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:4px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:4px;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-placeholder-color:rgba(0, 0, 0, 0.32);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45);--f7-input-info-text-color:rgba(0, 0, 0, 0.5)}.aurora .theme-dark,.aurora.theme-dark{--f7-input-text-color:#fff;--f7-input-clear-button-color:rgba(255, 255, 255, 0.5);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;border-radius:0;outline:0;display:block;padding:0;margin:0;font-family:inherit;background:0 0;resize:none;font-size:inherit;color:inherit}.textarea-resizable-shadow{opacity:0;position:absolute;z-index:-1000;pointer-events:none;left:-1000px;top:-1000px;visibility:hidden}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{width:100%;height:var(--f7-input-height);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);background-color:var(--f7-input-bg-color,transparent);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list input[type=date]::-webkit-input-placeholder,.list input[type=datetime-local]::-webkit-input-placeholder,.list input[type=email]::-webkit-input-placeholder,.list input[type=month]::-webkit-input-placeholder,.list input[type=number]::-webkit-input-placeholder,.list input[type=password]::-webkit-input-placeholder,.list input[type=search]::-webkit-input-placeholder,.list input[type=tel]::-webkit-input-placeholder,.list input[type=text]::-webkit-input-placeholder,.list input[type=time]::-webkit-input-placeholder,.list input[type=url]::-webkit-input-placeholder,.list select::-webkit-input-placeholder{color:var(--f7-input-placeholder-color)}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{width:100%;color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);resize:none;line-height:1.4;height:var(--f7-textarea-height);background-color:var(--f7-input-bg-color,transparent);padding-top:var(--f7-textarea-padding-vertical);padding-bottom:var(--f7-textarea-padding-vertical);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list textarea::-webkit-input-placeholder{color:var(--f7-input-placeholder-color)}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:var(--f7-input-height)}.list input[type=datetime-local]{max-width:50vw}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list input[type=date],.list input[type=datetime-local],.list input[type=month]{text-align:right;flex-direction:row-reverse;width:auto}.list .item-floating-label,.list .item-label{width:100%;vertical-align:top;flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-line-height);color:var(--f7-label-text-color);transition-duration:.2s;transition-property:transform,color}.list .item-floating-label{--label-height:calc(var(--f7-label-font-size) * var(--f7-label-line-height));transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/ 2 + 50%)/ var(--f7-floating-label-scale)));color:var(--f7-input-placeholder-color);width:auto;max-width:calc(100% / var(--f7-floating-label-scale));pointer-events:none;right:var(--f7-input-padding-right);transform-origin:right center}.list .item-floating-label~.item-input-wrap input::-webkit-input-placeholder,.list .item-floating-label~.item-input-wrap textarea::-webkit-input-placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::-webkit-input-placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::-webkit-input-placeholder{opacity:1;transition-duration:.3s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)}.list .item-input-wrap{width:100%;flex-shrink:1;position:relative}.item-input .item-inner{display:flex;flex-direction:column;align-items:flex-start}.input-error-message,.item-input-error-message{font-size:var(--f7-input-error-font-size);line-height:var(--f7-input-error-line-height);color:var(--f7-input-error-text-color);font-weight:var(--f7-input-error-font-weight);display:none;box-sizing:border-box}.input-info,.item-input-info{font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height);color:var(--f7-input-info-text-color)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.inline-label .item-inner,.inline-labels .item-inner{display:flex;align-items:center;flex-direction:row}.inline-label .item-floating-label,.inline-label .item-label,.inline-labels .item-floating-label,.inline-labels .item-label{padding-top:var(--f7-inline-label-padding-top);align-self:flex-start;width:35%;font-size:var(--f7-inline-label-font-size);line-height:var(--f7-inline-label-line-height)}.inline-label .item-floating-label+.item-input-wrap,.inline-label .item-label+.item-input-wrap,.inline-labels .item-floating-label+.item-input-wrap,.inline-labels .item-label+.item-input-wrap{margin-right:8px}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{opacity:0;pointer-events:none;visibility:hidden;transition-duration:.1s;position:absolute;top:50%;border:none;padding:0;margin:0;outline:0;z-index:1;cursor:pointer;background:0 0;width:var(--f7-input-clear-button-size);height:var(--f7-input-clear-button-size);margin-top:calc(-1 * var(--f7-input-clear-button-size)/ 2);color:var(--f7-input-clear-button-color);left:0}.input-clear-button:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px}.input-clear-button:before{position:absolute;content:'';left:50%;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/ 2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{content:'';pointer-events:none;position:absolute;top:50%;margin-top:-2px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;left:6px}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-left:calc(20px + var(--f7-input-padding-left))}.input-outline:after,.item-input-outline .item-input-wrap:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);transition-duration:.2s;pointer-events:none}.input-outline.input-focused:after,.item-input-outline.item-input-focused .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-focused-border-color,var(--f7-theme-color))}.input-outline.input-invalid:after,.item-input-outline.item-input-invalid .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color))}.input-outline input,.input-outline select,.input-outline textarea,.item-input-outline input,.item-input-outline select,.item-input-outline textarea,.list .item-input-outline input,.list .item-input-outline select,.list .item-input-outline textarea{border-radius:var(--f7-input-outline-border-radius);padding-left:var(--f7-input-outline-padding-horizontal);padding-right:var(--f7-input-outline-padding-horizontal)}.input-outline.input-dropdown:before,.item-input-outline .input-dropdown-wrap:before{left:8px}.input-outline.input-dropdown input,.input-outline.input-dropdown select,.input-outline.input-dropdown textarea,.item-input-outline .input-dropdown-wrap input,.item-input-outline .input-dropdown-wrap select,.item-input-outline .input-dropdown-wrap textarea{padding-left:20px}.input-outline .input-clear-button,.item-input-outline .input-clear-button{left:8px}.item-input-outline{--f7-input-height:var(--f7-input-outline-height)}.item-input-outline .item-inner:after{display:none!important}.item-input-outline .item-label{right:var(--f7-input-outline-padding-horizontal)}.inline-label .item-input-outline .item-label,.inline-labels .item-input-outline .item-label,.item-input-outline .inline-label .item-label,.item-input-outline .inline-label.item-label{right:0}.item-input-outline .item-floating-label{right:calc(var(--f7-input-outline-padding-horizontal) - 4px);padding-left:4px;padding-right:4px;background:var(--f7-page-bg-color);z-index:10;margin-top:calc(-.5 * (var(--f7-label-font-size) * var(--f7-label-line-height)))}.item-input-outline.item-input-focused .item-floating-label,.item-input-outline.item-input-with-value .item-floating-label{transform:scale(1) translateY(50%)}.item-input-outline .item-input-error-message,.item-input-outline .item-input-info{padding-right:var(--f7-input-outline-padding-horizontal)}.block-strong .item-input-outline .item-floating-label{background:var(--f7-block-strong-bg-color)}.list .item-input-outline .item-floating-label{background:var(--f7-list-bg-color)}.theme-dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical));margin-bottom:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-floating-label+.item-input-wrap,.ios .inline-label .item-label+.item-input-wrap,.ios .inline-labels .item-floating-label+.item-input-wrap,.ios .inline-labels .item-label+.item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-input-wrap,.ios .inline-labels .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{position:relative;margin-bottom:6px;margin-top:-8px}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.ios .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.ios .input-outline .input-error-message,.ios .input-outline .input-info,.ios .input-outline .item-input-error-message,.ios .input-outline .item-input-info,.ios .item-input-outline .input-error-message,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-error-message,.ios .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.ios .input-outline .input-info,.ios .input-outline .item-input-info,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline .input-error-message,.ios .input-outline .item-input-error-message,.ios .item-input-outline .input-error-message,.ios .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.ios .input-outline.input-with-info .item-input-wrap,.ios .input-outline.item-input-with-info .item-input-wrap,.ios .item-input-outline.input-with-info .item-input-wrap,.ios .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline.input-with-error-message .item-input-wrap,.ios .input-outline.item-input-with-error-message .item-input-wrap,.ios .item-input-outline.input-with-error-message .item-input-wrap,.ios .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{transition-duration:.2s}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-input .item-media{align-self:flex-end}.md .item-input .item-inner:after{display:none!important}.md .inline-label .item-media,.md .inline-labels .item-media{align-self:flex-start;padding-top:14px}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:20px}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{position:absolute;top:100%;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;right:0}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{font-size:calc(var(--f7-input-clear-button-size) / (24 / 20));content:'delete_round_md';line-height:1.2}.md .input-clear-button:before{width:48px;height:48px;margin-left:-24px;margin-top:-24px}.aurora .item-floating-label+.item-input-wrap,.aurora .item-label+.item-input-wrap{margin-top:0}.aurora .input:not(.input-outline):after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.aurora .input:not(.input-outline):after{transition-duration:.2s}.aurora .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.aurora .inline-label .item-media,.aurora .inline-labels .item-media{align-self:flex-start;padding-top:12px}.aurora .input-error-message,.aurora .input-info,.aurora .item-input-error-message,.aurora .item-input-info{position:relative}.aurora .input-focused:not(.input-outline):after,.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{transform:scaleY(2)!important;display:block!important}.aurora .item-input-focused .item-floating-label,.aurora .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.aurora .input-focused:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.aurora .item-input-invalid .item-floating-label,.aurora .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.aurora .input-invalid input,.aurora .input-invalid select,.aurora .input-invalid textarea,.aurora .item-input-invalid input,.aurora .item-input-invalid select,.aurora .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.aurora .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.aurora .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.aurora .input-outline .item-input-wrap,.aurora .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.aurora .input-outline .input-error-message,.aurora .input-outline .input-info,.aurora .input-outline .item-input-error-message,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-error-message,.aurora .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.aurora .input-outline .input-info,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline .input-error-message,.aurora .input-outline .item-input-error-message,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.aurora .input-outline.input-with-info .item-input-wrap,.aurora .input-outline.item-input-with-info .item-input-wrap,.aurora .item-input-outline.input-with-info .item-input-wrap,.aurora .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline.input-with-error-message .item-input-wrap,.aurora .input-outline.item-input-with-error-message .item-input-wrap,.aurora .item-input-outline.input-with-error-message .item-input-wrap,.aurora .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}
\ No newline at end of file
diff --git a/www/assets/framework7/components/input/input.css b/www/assets/framework7/components/input/input.css
index 1c22d981b..d6c1b3e18 100644
--- a/www/assets/framework7/components/input/input.css
+++ b/www/assets/framework7/components/input/input.css
@@ -1 +1 @@
-:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-line-height:1.3;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-input-outline-height:40px;--f7-input-outline-border-radius:4px;--f7-input-outline-padding-horizontal:12px;--f7-textarea-height:100px;--f7-input-outline-border-color:#bbb}:root .dark,:root.dark{--f7-input-outline-border-color:#444}.ios{--f7-input-height:44px;--f7-input-font-size:17px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:11px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(17 / 12);--f7-inline-label-font-size:17px;--f7-inline-label-line-height:1.4;--f7-inline-label-padding-top:3px;--f7-input-clear-button-size:14px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0, 0, 0, 0.45);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45)}.ios .dark,.ios.dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255, 255, 255, 0.55);--f7-input-clear-button-color:rgba(255, 255, 255, 0.5)}.md{--f7-input-height:36px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:7px;--f7-label-font-size:12px;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:7px;--f7-input-clear-button-size:18px;--f7-input-clear-button-color:#aaa;--f7-input-text-color:#212121;--f7-input-placeholder-color:rgba(0, 0, 0, 0.35);--f7-label-text-color:rgba(0, 0, 0, 0.65);--f7-input-info-text-color:rgba(0, 0, 0, 0.45)}.md .dark,.md.dark{--f7-input-text-color:rgba(255, 255, 255, 0.87);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-label-text-color:rgba(255, 255, 255, 0.54);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}.aurora{--f7-input-height:32px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:4px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:4px;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-placeholder-color:rgba(0, 0, 0, 0.32);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45);--f7-input-info-text-color:rgba(0, 0, 0, 0.5)}.aurora .dark,.aurora.dark{--f7-input-text-color:#fff;--f7-input-clear-button-color:rgba(255, 255, 255, 0.5);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{box-sizing:border-box;-webkit-appearance:none;appearance:none;border:none;box-shadow:none;border-radius:0;outline:0;display:block;padding:0;margin:0;font-family:inherit;background:0 0;resize:none;font-size:inherit;color:inherit}.textarea-resizable-shadow{opacity:0;position:absolute;z-index:-1000;pointer-events:none;left:-1000px;top:-1000px;visibility:hidden}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{width:100%;height:var(--f7-input-height);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);background-color:var(--f7-input-bg-color,transparent);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{width:100%;color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);resize:none;line-height:1.4;height:var(--f7-textarea-height);background-color:var(--f7-input-bg-color,transparent);padding-top:var(--f7-textarea-padding-vertical);padding-bottom:var(--f7-textarea-padding-vertical);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:var(--f7-input-height)}.list input[type=datetime-local]{max-width:50vw}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list .item-floating-label,.list .item-label{width:100%;vertical-align:top;flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-line-height);color:var(--f7-label-text-color);transition-duration:.2s;transition-property:transform,color}.list .item-floating-label{--label-height:calc(var(--f7-label-font-size) * var(--f7-label-line-height));transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/ 2 + 50%)/ var(--f7-floating-label-scale)));color:var(--f7-input-placeholder-color);width:auto;max-width:calc(100% / var(--f7-floating-label-scale));pointer-events:none;left:var(--f7-input-padding-left);transform-origin:left center}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)}.list .item-input-wrap{width:100%;flex-shrink:1;position:relative}.item-input .item-inner{display:flex;flex-direction:column;align-items:flex-start}.input-error-message,.item-input-error-message{font-size:var(--f7-input-error-font-size);line-height:var(--f7-input-error-line-height);color:var(--f7-input-error-text-color);font-weight:var(--f7-input-error-font-weight);display:none;box-sizing:border-box}.input-info,.item-input-info{font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height);color:var(--f7-input-info-text-color)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.inline-label .item-inner,.inline-labels .item-inner{display:flex;align-items:center;flex-direction:row}.inline-label .item-floating-label,.inline-label .item-label,.inline-labels .item-floating-label,.inline-labels .item-label{padding-top:var(--f7-inline-label-padding-top);align-self:flex-start;width:35%;font-size:var(--f7-inline-label-font-size);line-height:var(--f7-inline-label-line-height)}.inline-label .item-floating-label+.item-input-wrap,.inline-label .item-label+.item-input-wrap,.inline-labels .item-floating-label+.item-input-wrap,.inline-labels .item-label+.item-input-wrap{margin-left:8px}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{opacity:0;pointer-events:none;visibility:hidden;transition-duration:.1s;position:absolute;top:50%;border:none;padding:0;margin:0;outline:0;z-index:1;cursor:pointer;background:0 0;width:var(--f7-input-clear-button-size);height:var(--f7-input-clear-button-size);margin-top:calc(-1 * var(--f7-input-clear-button-size)/ 2);color:var(--f7-input-clear-button-color);right:0}.input-clear-button:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px}.input-clear-button:before{position:absolute;content:'';left:50%;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/ 2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{content:'';pointer-events:none;position:absolute;top:50%;margin-top:-2px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;right:6px}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-right:calc(20px + var(--f7-input-padding-right))}.input-outline:after,.item-input-outline .item-input-wrap:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);transition-duration:.2s;pointer-events:none}.input-outline.input-focused:after,.item-input-outline.item-input-focused .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-focused-border-color,var(--f7-theme-color))}.input-outline.input-invalid:after,.item-input-outline.item-input-invalid .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color))}.input-outline input,.input-outline select,.input-outline textarea,.item-input-outline input,.item-input-outline select,.item-input-outline textarea,.list .item-input-outline input,.list .item-input-outline select,.list .item-input-outline textarea{border-radius:var(--f7-input-outline-border-radius);padding-left:var(--f7-input-outline-padding-horizontal);padding-right:var(--f7-input-outline-padding-horizontal)}.input-outline.input-dropdown:before,.item-input-outline .input-dropdown-wrap:before{right:8px}.input-outline.input-dropdown input,.input-outline.input-dropdown select,.input-outline.input-dropdown textarea,.item-input-outline .input-dropdown-wrap input,.item-input-outline .input-dropdown-wrap select,.item-input-outline .input-dropdown-wrap textarea{padding-right:20px}.input-outline .input-clear-button,.item-input-outline .input-clear-button{right:8px}.item-input-outline{--f7-input-height:var(--f7-input-outline-height)}.item-input-outline .item-inner:after{display:none!important}.item-input-outline .item-label{left:var(--f7-input-outline-padding-horizontal)}.inline-label .item-input-outline .item-label,.inline-labels .item-input-outline .item-label,.item-input-outline .inline-label .item-label,.item-input-outline .inline-label.item-label{left:0}.item-input-outline .item-floating-label{left:calc(var(--f7-input-outline-padding-horizontal) - 4px);padding-left:4px;padding-right:4px;background:var(--f7-page-bg-color);z-index:10;margin-top:calc(-.5 * (var(--f7-label-font-size) * var(--f7-label-line-height)))}.item-input-outline.item-input-focused .item-floating-label,.item-input-outline.item-input-with-value .item-floating-label{transform:scale(1) translateY(50%)}.item-input-outline .item-input-error-message,.item-input-outline .item-input-info{padding-left:var(--f7-input-outline-padding-horizontal)}.block-strong .item-input-outline .item-floating-label{background:var(--f7-block-strong-bg-color)}.list .item-input-outline .item-floating-label{background:var(--f7-list-bg-color)}.dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical));margin-bottom:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-floating-label+.item-input-wrap,.ios .inline-label .item-label+.item-input-wrap,.ios .inline-labels .item-floating-label+.item-input-wrap,.ios .inline-labels .item-label+.item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-input-wrap,.ios .inline-labels .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{position:relative;margin-bottom:6px;margin-top:-8px}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.ios .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.ios .input-outline .input-error-message,.ios .input-outline .input-info,.ios .input-outline .item-input-error-message,.ios .input-outline .item-input-info,.ios .item-input-outline .input-error-message,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-error-message,.ios .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.ios .input-outline .input-info,.ios .input-outline .item-input-info,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline .input-error-message,.ios .input-outline .item-input-error-message,.ios .item-input-outline .input-error-message,.ios .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.ios .input-outline.input-with-info .item-input-wrap,.ios .input-outline.item-input-with-info .item-input-wrap,.ios .item-input-outline.input-with-info .item-input-wrap,.ios .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline.input-with-error-message .item-input-wrap,.ios .input-outline.item-input-with-error-message .item-input-wrap,.ios .item-input-outline.input-with-error-message .item-input-wrap,.ios .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{transition-duration:.2s}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-input .item-media{align-self:flex-end}.md .item-input .item-inner:after{display:none!important}.md .inline-label .item-media,.md .inline-labels .item-media{align-self:flex-start;padding-top:14px}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:20px}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{position:absolute;top:100%;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;left:0}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{font-size:calc(var(--f7-input-clear-button-size) / (24 / 20));content:'delete_round_md';line-height:1.2}.md .input-clear-button:before{width:48px;height:48px;margin-left:-24px;margin-top:-24px}.aurora .item-floating-label+.item-input-wrap,.aurora .item-label+.item-input-wrap{margin-top:0}.aurora .input:not(.input-outline):after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.aurora .input:not(.input-outline):after{transition-duration:.2s}.aurora .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.aurora .inline-label .item-media,.aurora .inline-labels .item-media{align-self:flex-start;padding-top:12px}.aurora .input-error-message,.aurora .input-info,.aurora .item-input-error-message,.aurora .item-input-info{position:relative}.aurora .input-focused:not(.input-outline):after,.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{transform:scaleY(2)!important;display:block!important}.aurora .item-input-focused .item-floating-label,.aurora .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.aurora .input-focused:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.aurora .item-input-invalid .item-floating-label,.aurora .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.aurora .input-invalid input,.aurora .input-invalid select,.aurora .input-invalid textarea,.aurora .item-input-invalid input,.aurora .item-input-invalid select,.aurora .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.aurora .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.aurora .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.aurora .input-outline .item-input-wrap,.aurora .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.aurora .input-outline .input-error-message,.aurora .input-outline .input-info,.aurora .input-outline .item-input-error-message,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-error-message,.aurora .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.aurora .input-outline .input-info,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline .input-error-message,.aurora .input-outline .item-input-error-message,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.aurora .input-outline.input-with-info .item-input-wrap,.aurora .input-outline.item-input-with-info .item-input-wrap,.aurora .item-input-outline.input-with-info .item-input-wrap,.aurora .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline.input-with-error-message .item-input-wrap,.aurora .input-outline.item-input-with-error-message .item-input-wrap,.aurora .item-input-outline.input-with-error-message .item-input-wrap,.aurora .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}
\ No newline at end of file
+:root{--f7-input-bg-color:transparent;--f7-label-font-weight:400;--f7-label-line-height:1.3;--f7-input-padding-left:0px;--f7-input-padding-right:0px;--f7-input-error-text-color:#ff3b30;--f7-input-error-font-size:12px;--f7-input-error-line-height:1.4;--f7-input-error-font-weight:400;--f7-input-info-font-size:12px;--f7-input-info-line-height:1.4;--f7-input-outline-height:40px;--f7-input-outline-border-radius:4px;--f7-input-outline-padding-horizontal:12px;--f7-textarea-height:100px;--f7-input-outline-border-color:#bbb}:root .theme-dark,:root.theme-dark{--f7-input-outline-border-color:#444}.ios{--f7-input-height:44px;--f7-input-font-size:17px;--f7-input-placeholder-color:#a9a9a9;--f7-textarea-padding-vertical:11px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(17 / 12);--f7-inline-label-font-size:17px;--f7-inline-label-line-height:1.4;--f7-inline-label-padding-top:3px;--f7-input-clear-button-size:14px;--f7-input-text-color:#000000;--f7-input-info-text-color:rgba(0, 0, 0, 0.45);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45)}.ios .theme-dark,.ios.theme-dark{--f7-input-text-color:#fff;--f7-input-info-text-color:rgba(255, 255, 255, 0.55);--f7-input-clear-button-color:rgba(255, 255, 255, 0.5)}.md{--f7-input-height:36px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:7px;--f7-label-font-size:12px;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:7px;--f7-input-clear-button-size:18px;--f7-input-clear-button-color:#aaa;--f7-input-text-color:#212121;--f7-input-placeholder-color:rgba(0, 0, 0, 0.35);--f7-label-text-color:rgba(0, 0, 0, 0.65);--f7-input-info-text-color:rgba(0, 0, 0, 0.45)}.md .theme-dark,.md.theme-dark{--f7-input-text-color:rgba(255, 255, 255, 0.87);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-label-text-color:rgba(255, 255, 255, 0.54);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}.aurora{--f7-input-height:32px;--f7-input-font-size:16px;--f7-textarea-padding-vertical:4px;--f7-label-font-size:12px;--f7-label-text-color:inherit;--f7-floating-label-scale:calc(16 / 12);--f7-inline-label-font-size:16px;--f7-inline-label-line-height:1.5;--f7-inline-label-padding-top:4px;--f7-input-clear-button-size:14px;--f7-input-outline-border-radius:8px;--f7-input-text-color:#000000;--f7-input-placeholder-color:rgba(0, 0, 0, 0.32);--f7-input-clear-button-color:rgba(0, 0, 0, 0.45);--f7-input-info-text-color:rgba(0, 0, 0, 0.5)}.aurora .theme-dark,.aurora.theme-dark{--f7-input-text-color:#fff;--f7-input-clear-button-color:rgba(255, 255, 255, 0.5);--f7-input-placeholder-color:rgba(255, 255, 255, 0.35);--f7-input-info-text-color:rgba(255, 255, 255, 0.45)}input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],select,textarea{box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;border-radius:0;outline:0;display:block;padding:0;margin:0;font-family:inherit;background:0 0;resize:none;font-size:inherit;color:inherit}.textarea-resizable-shadow{opacity:0;position:absolute;z-index:-1000;pointer-events:none;left:-1000px;top:-1000px;visibility:hidden}.list input[type=date],.list input[type=datetime-local],.list input[type=email],.list input[type=month],.list input[type=number],.list input[type=password],.list input[type=search],.list input[type=tel],.list input[type=text],.list input[type=time],.list input[type=url],.list select{width:100%;height:var(--f7-input-height);color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);background-color:var(--f7-input-bg-color,transparent);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list input[type=date]::-webkit-input-placeholder,.list input[type=datetime-local]::-webkit-input-placeholder,.list input[type=email]::-webkit-input-placeholder,.list input[type=month]::-webkit-input-placeholder,.list input[type=number]::-webkit-input-placeholder,.list input[type=password]::-webkit-input-placeholder,.list input[type=search]::-webkit-input-placeholder,.list input[type=tel]::-webkit-input-placeholder,.list input[type=text]::-webkit-input-placeholder,.list input[type=time]::-webkit-input-placeholder,.list input[type=url]::-webkit-input-placeholder,.list select::-webkit-input-placeholder{color:var(--f7-input-placeholder-color)}.list input[type=date]::placeholder,.list input[type=datetime-local]::placeholder,.list input[type=email]::placeholder,.list input[type=month]::placeholder,.list input[type=number]::placeholder,.list input[type=password]::placeholder,.list input[type=search]::placeholder,.list input[type=tel]::placeholder,.list input[type=text]::placeholder,.list input[type=time]::placeholder,.list input[type=url]::placeholder,.list select::placeholder{color:var(--f7-input-placeholder-color)}.list textarea{width:100%;color:var(--f7-input-text-color);font-size:var(--f7-input-font-size);resize:none;line-height:1.4;height:var(--f7-textarea-height);background-color:var(--f7-input-bg-color,transparent);padding-top:var(--f7-textarea-padding-vertical);padding-bottom:var(--f7-textarea-padding-vertical);padding-left:var(--f7-input-padding-left);padding-right:var(--f7-input-padding-right)}.list textarea::-webkit-input-placeholder{color:var(--f7-input-placeholder-color)}.list textarea::placeholder{color:var(--f7-input-placeholder-color)}.list textarea.resizable{height:var(--f7-input-height)}.list input[type=datetime-local]{max-width:50vw}.list input[type=date],.list input[type=datetime-local],.list input[type=month],.list input[type=time]{line-height:var(--f7-input-height)}.list .item-floating-label,.list .item-label{width:100%;vertical-align:top;flex-shrink:0;font-size:var(--f7-label-font-size);font-weight:var(--f7-label-font-weight);line-height:var(--f7-label-line-height);color:var(--f7-label-text-color);transition-duration:.2s;transition-property:transform,color}.list .item-floating-label{--label-height:calc(var(--f7-label-font-size) * var(--f7-label-line-height));transform:scale(var(--f7-floating-label-scale)) translateY(calc((var(--f7-input-height)/ 2 + 50%)/ var(--f7-floating-label-scale)));color:var(--f7-input-placeholder-color);width:auto;max-width:calc(100% / var(--f7-floating-label-scale));pointer-events:none;left:var(--f7-input-padding-left);transform-origin:left center}.list .item-floating-label~.item-input-wrap input::-webkit-input-placeholder,.list .item-floating-label~.item-input-wrap textarea::-webkit-input-placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input::placeholder,.list .item-floating-label~.item-input-wrap textarea::placeholder{opacity:0;transition-duration:.1s}.list .item-floating-label~.item-input-wrap input.input-focused::-webkit-input-placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::-webkit-input-placeholder{opacity:1;transition-duration:.3s}.list .item-floating-label~.item-input-wrap input.input-focused::placeholder,.list .item-floating-label~.item-input-wrap textarea.input-focused::placeholder{opacity:1;transition-duration:.3s}.list .item-input-with-value .item-floating-label{color:var(--f7-label-text-color)}.list .item-input-focused .item-floating-label,.list .item-input-with-value .item-floating-label{transform:scale(1) translateY(0)}.list .item-input-wrap{width:100%;flex-shrink:1;position:relative}.item-input .item-inner{display:flex;flex-direction:column;align-items:flex-start}.input-error-message,.item-input-error-message{font-size:var(--f7-input-error-font-size);line-height:var(--f7-input-error-line-height);color:var(--f7-input-error-text-color);font-weight:var(--f7-input-error-font-weight);display:none;box-sizing:border-box}.input-info,.item-input-info{font-size:var(--f7-input-info-font-size);line-height:var(--f7-input-info-line-height);color:var(--f7-input-info-text-color)}.input-invalid .input-error-message,.input-invalid .item-input-error-message,.item-input-invalid .input-error-message,.item-input-invalid .item-input-error-message{display:block}.input-invalid .input-info,.input-invalid .item-input-info,.item-input-invalid .input-info,.item-input-invalid .item-input-info{display:none}.inline-label .item-inner,.inline-labels .item-inner{display:flex;align-items:center;flex-direction:row}.inline-label .item-floating-label,.inline-label .item-label,.inline-labels .item-floating-label,.inline-labels .item-label{padding-top:var(--f7-inline-label-padding-top);align-self:flex-start;width:35%;font-size:var(--f7-inline-label-font-size);line-height:var(--f7-inline-label-line-height)}.inline-label .item-floating-label+.item-input-wrap,.inline-label .item-label+.item-input-wrap,.inline-labels .item-floating-label+.item-input-wrap,.inline-labels .item-label+.item-input-wrap{margin-left:8px}.input{position:relative}.input input,.input select,.input textarea{width:100%}.input-clear-button{opacity:0;pointer-events:none;visibility:hidden;transition-duration:.1s;position:absolute;top:50%;border:none;padding:0;margin:0;outline:0;z-index:1;cursor:pointer;background:0 0;width:var(--f7-input-clear-button-size);height:var(--f7-input-clear-button-size);margin-top:calc(-1 * var(--f7-input-clear-button-size)/ 2);color:var(--f7-input-clear-button-color);right:0}.input-clear-button:after{font-family:framework7-core-icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga';text-align:center;display:block;width:100%;height:100%;font-size:20px}.input-clear-button:before{position:absolute;content:'';left:50%;top:50%}.item-input-wrap .input-clear-button{top:calc(var(--f7-input-height)/ 2)}.input-clear-button.active-state{opacity:.75!important}.input-with-value .input-clear-button,.input-with-value~.input-clear-button,.item-input-with-value .input-clear-button{opacity:1;pointer-events:auto;visibility:visible}.input-dropdown,.input-dropdown-wrap{position:relative}.input-dropdown-wrap:before,.input-dropdown:before{content:'';pointer-events:none;position:absolute;top:50%;margin-top:-2px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #727272;right:6px}.input-dropdown input,.input-dropdown select,.input-dropdown textarea,.input-dropdown-wrap input,.input-dropdown-wrap select,.input-dropdown-wrap textarea{padding-right:calc(20px + var(--f7-input-padding-right))}.input-outline:after,.item-input-outline .item-input-wrap:after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid var(--f7-input-outline-border-color);border-radius:var(--f7-input-outline-border-radius);transition-duration:.2s;pointer-events:none}.input-outline.input-focused:after,.item-input-outline.item-input-focused .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-focused-border-color,var(--f7-theme-color))}.input-outline.input-invalid:after,.item-input-outline.item-input-invalid .item-input-wrap:after{border-width:2px;border-color:var(--f7-input-outline-invalid-border-color,var(--f7-input-error-text-color))}.input-outline input,.input-outline select,.input-outline textarea,.item-input-outline input,.item-input-outline select,.item-input-outline textarea,.list .item-input-outline input,.list .item-input-outline select,.list .item-input-outline textarea{border-radius:var(--f7-input-outline-border-radius);padding-left:var(--f7-input-outline-padding-horizontal);padding-right:var(--f7-input-outline-padding-horizontal)}.input-outline.input-dropdown:before,.item-input-outline .input-dropdown-wrap:before{right:8px}.input-outline.input-dropdown input,.input-outline.input-dropdown select,.input-outline.input-dropdown textarea,.item-input-outline .input-dropdown-wrap input,.item-input-outline .input-dropdown-wrap select,.item-input-outline .input-dropdown-wrap textarea{padding-right:20px}.input-outline .input-clear-button,.item-input-outline .input-clear-button{right:8px}.item-input-outline{--f7-input-height:var(--f7-input-outline-height)}.item-input-outline .item-inner:after{display:none!important}.item-input-outline .item-label{left:var(--f7-input-outline-padding-horizontal)}.inline-label .item-input-outline .item-label,.inline-labels .item-input-outline .item-label,.item-input-outline .inline-label .item-label,.item-input-outline .inline-label.item-label{left:0}.item-input-outline .item-floating-label{left:calc(var(--f7-input-outline-padding-horizontal) - 4px);padding-left:4px;padding-right:4px;background:var(--f7-page-bg-color);z-index:10;margin-top:calc(-.5 * (var(--f7-label-font-size) * var(--f7-label-line-height)))}.item-input-outline.item-input-focused .item-floating-label,.item-input-outline.item-input-with-value .item-floating-label{transform:scale(1) translateY(50%)}.item-input-outline .item-input-error-message,.item-input-outline .item-input-info{padding-left:var(--f7-input-outline-padding-horizontal)}.block-strong .item-input-outline .item-floating-label{background:var(--f7-block-strong-bg-color)}.list .item-input-outline .item-floating-label{background:var(--f7-list-bg-color)}.theme-dark option{background-color:var(--f7-page-bg-color)}.ios .item-floating-label+.item-input-wrap,.ios .item-label+.item-input-wrap{margin-top:0}.ios .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.ios .item-input .item-media{align-self:flex-start}.ios .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical));margin-bottom:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-floating-label+.item-input-wrap,.ios .inline-label .item-label+.item-input-wrap,.ios .inline-labels .item-floating-label+.item-input-wrap,.ios .inline-labels .item-label+.item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .inline-label .item-input-wrap,.ios .inline-labels .item-input-wrap{margin-top:calc(-1 * var(--f7-list-item-padding-vertical))}.ios .input-error-message,.ios .input-info,.ios .item-input-error-message,.ios .item-input-info{position:relative;margin-bottom:6px;margin-top:-8px}.ios .item-input-focused .item-floating-label,.ios .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-label-text-color))}.ios .item-input-focused .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-list-item-border-color))}.ios .item-input-invalid .item-floating-label,.ios .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-label-text-color))}.ios .item-input-invalid .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-list-item-border-color))}.ios .input-invalid input,.ios .input-invalid select,.ios .input-invalid textarea,.ios .item-input-invalid input,.ios .item-input-invalid select,.ios .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-error-text-color))}.ios .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.ios .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.ios .input-outline .item-input-wrap,.ios .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.ios .input-outline .input-error-message,.ios .input-outline .input-info,.ios .input-outline .item-input-error-message,.ios .input-outline .item-input-info,.ios .item-input-outline .input-error-message,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-error-message,.ios .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.ios .input-outline .input-info,.ios .input-outline .item-input-info,.ios .item-input-outline .input-info,.ios .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline .input-error-message,.ios .input-outline .item-input-error-message,.ios .item-input-outline .input-error-message,.ios .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.ios .input-outline.input-with-info .item-input-wrap,.ios .input-outline.item-input-with-info .item-input-wrap,.ios .item-input-outline.input-with-info .item-input-wrap,.ios .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.ios .input-outline.input-with-error-message .item-input-wrap,.ios .input-outline.item-input-with-error-message .item-input-wrap,.ios .item-input-outline.input-with-error-message .item-input-wrap,.ios .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.md .input:not(.input-outline):after,.md .item-input:not(.item-input-outline) .item-input-wrap:after{transition-duration:.2s}.md .item-input-wrap{min-height:var(--f7-input-height)}.md .item-input .item-media{align-self:flex-end}.md .item-input .item-inner:after{display:none!important}.md .inline-label .item-media,.md .inline-labels .item-media{align-self:flex-start;padding-top:14px}.md .input-with-error-message,.md .input-with-info,.md .item-input-with-error-message,.md .item-input-with-info{padding-bottom:20px}.md .input-error-message,.md .input-info,.md .item-input-error-message,.md .item-input-info{position:absolute;top:100%;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;left:0}.md .item-input-focused .item-floating-label,.md .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.md .input-focused:not(.input-outline):after,.md .input-invalid:not(.input-outline):after,.md .item-input-focused:not(.item-input-outline) .item-input-wrap:after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{transform:scaleY(2)!important}.md .input-invalid:not(.input-outline):after,.md .item-input-invalid:not(.item-input-outline) .item-input-wrap:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.md .item-input-invalid .item-floating-label,.md .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.md .input-invalid input,.md .input-invalid select,.md .input-invalid textarea,.md .item-input-invalid input,.md .item-input-invalid select,.md .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.md .input-clear-button:after{font-size:calc(var(--f7-input-clear-button-size) / (24 / 20));content:'delete_round_md';line-height:1.2}.md .input-clear-button:before{width:48px;height:48px;margin-left:-24px;margin-top:-24px}.aurora .item-floating-label+.item-input-wrap,.aurora .item-label+.item-input-wrap{margin-top:0}.aurora .input:not(.input-outline):after{content:'';position:absolute;background-color:var(--f7-list-item-border-color);display:block;z-index:15;top:auto;right:auto;bottom:0;left:0;height:1px;width:100%;transform-origin:50% 100%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.aurora .input:not(.input-outline):after{transition-duration:.2s}.aurora .item-input-focused .item-floating-label{color:var(--f7-label-text-color)}.aurora .inline-label .item-media,.aurora .inline-labels .item-media{align-self:flex-start;padding-top:12px}.aurora .input-error-message,.aurora .input-info,.aurora .item-input-error-message,.aurora .item-input-info{position:relative}.aurora .input-focused:not(.input-outline):after,.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{transform:scaleY(2)!important;display:block!important}.aurora .item-input-focused .item-floating-label,.aurora .item-input-focused .item-label{color:var(--f7-label-focused-text-color,var(--f7-theme-color))}.aurora .input-focused:not(.input-outline):after,.aurora .item-input-focused:not(.item-input-outline) .item-inner:after{background:var(--f7-input-focused-border-color,var(--f7-theme-color))}.aurora .item-input-invalid .item-floating-label,.aurora .item-input-invalid .item-label{color:var(--f7-label-invalid-text-color,var(--f7-input-error-text-color))}.aurora .input-invalid:not(.input-outline):after,.aurora .item-input-invalid:not(.item-input-outline) .item-inner:after{background:var(--f7-input-invalid-border-color,var(--f7-input-error-text-color))}.aurora .input-invalid input,.aurora .input-invalid select,.aurora .input-invalid textarea,.aurora .item-input-invalid input,.aurora .item-input-invalid select,.aurora .item-input-invalid textarea{color:var(--f7-input-invalid-text-color,var(--f7-input-text-color))}.aurora .input-clear-button:after{content:'delete_round_ios';font-size:calc(var(--f7-input-clear-button-size) / (14 / 10));line-height:1.4}.aurora .input-clear-button:before{width:44px;height:44px;margin-left:-22px;margin-top:-22px}.aurora .input-outline .item-input-wrap,.aurora .item-input-outline .item-input-wrap{margin-top:0;margin-bottom:0}.aurora .input-outline .input-error-message,.aurora .input-outline .input-info,.aurora .input-outline .item-input-error-message,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-error-message,.aurora .item-input-outline .item-input-info{margin-top:0;white-space:normal;overflow:hidden;text-overflow:ellipsis}.aurora .input-outline .input-info,.aurora .input-outline .item-input-info,.aurora .item-input-outline .input-info,.aurora .item-input-outline .item-input-info{margin-bottom:calc(-1 * var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline .input-error-message,.aurora .input-outline .item-input-error-message,.aurora .item-input-outline .input-error-message,.aurora .item-input-outline .item-input-error-message{margin-bottom:calc(-1 * var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}.aurora .input-outline.input-with-info .item-input-wrap,.aurora .input-outline.item-input-with-info .item-input-wrap,.aurora .item-input-outline.input-with-info .item-input-wrap,.aurora .item-input-outline.item-input-with-info .item-input-wrap{margin-bottom:calc(var(--f7-input-info-font-size) * var(--f7-input-info-line-height))}.aurora .input-outline.input-with-error-message .item-input-wrap,.aurora .input-outline.item-input-with-error-message .item-input-wrap,.aurora .item-input-outline.input-with-error-message .item-input-wrap,.aurora .item-input-outline.item-input-with-error-message .item-input-wrap{margin-bottom:calc(var(--f7-input-error-font-size) * var(--f7-input-error-line-height))}
\ No newline at end of file
diff --git a/www/assets/framework7/components/input/input.d.ts b/www/assets/framework7/components/input/input.d.ts
index 023298fb1..f616c5626 100644
--- a/www/assets/framework7/components/input/input.d.ts
+++ b/www/assets/framework7/components/input/input.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Input {
interface DomEvents {
diff --git a/www/assets/framework7/components/input/input.js b/www/assets/framework7/components/input/input.js
index 1e71fd83d..f61099175 100644
--- a/www/assets/framework7/components/input/input.js
+++ b/www/assets/framework7/components/input/input.js
@@ -1,398 +1 @@
-import { getWindow, getDocument } from 'ssr-window';
-import $ from '../../shared/dom7.js';
-import { bindMethods } from '../../shared/utils.js';
-import { getDevice } from '../../shared/get-device.js';
-const Input = {
- ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],
-
- createTextareaResizableShadow() {
- const document = getDocument();
- const $shadowEl = $(document.createElement('textarea'));
- $shadowEl.addClass('textarea-resizable-shadow');
- $shadowEl.prop({
- disabled: true,
- readonly: true
- });
- Input.textareaResizableShadow = $shadowEl;
- },
-
- textareaResizableShadow: undefined,
-
- resizeTextarea(textareaEl) {
- const app = this;
- const window = getWindow();
- const $textareaEl = $(textareaEl);
-
- if (!Input.textareaResizableShadow) {
- Input.createTextareaResizableShadow();
- }
-
- const $shadowEl = Input.textareaResizableShadow;
- if (!$textareaEl.length) return;
- if (!$textareaEl.hasClass('resizable')) return;
-
- if (Input.textareaResizableShadow.parents().length === 0) {
- app.$el.append($shadowEl);
- }
-
- const styles = window.getComputedStyle($textareaEl[0]);
- 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(style => {
- let styleValue = styles[style];
-
- if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {
- styleValue = styleValue.replace(',', '.');
- }
-
- $shadowEl.css(style, styleValue);
- });
- const currentHeight = $textareaEl[0].clientHeight;
- $shadowEl.val('');
- const initialHeight = $shadowEl[0].scrollHeight;
- $shadowEl.val($textareaEl.val());
- $shadowEl.css('height', 0);
- const scrollHeight = $shadowEl[0].scrollHeight;
-
- if (currentHeight !== scrollHeight) {
- if (scrollHeight > initialHeight) {
- $textareaEl.css('height', `${scrollHeight}px`);
- } else if (scrollHeight < currentHeight) {
- $textareaEl.css('height', '');
- }
-
- if (scrollHeight > initialHeight || scrollHeight < currentHeight) {
- $textareaEl.trigger('textarea:resize', {
- initialHeight,
- currentHeight,
- scrollHeight
- });
- app.emit('textareaResize', {
- initialHeight,
- currentHeight,
- scrollHeight
- });
- }
- }
- },
-
- validate(inputEl) {
- const $inputEl = $(inputEl);
- if (!$inputEl.length) return true;
- const $itemInputEl = $inputEl.parents('.item-input');
- const $inputWrapEl = $inputEl.parents('.input');
-
- function unsetReadonly() {
- if ($inputEl[0].f7ValidateReadonly) {
- $inputEl[0].readOnly = false;
- }
- }
-
- function setReadonly() {
- if ($inputEl[0].f7ValidateReadonly) {
- $inputEl[0].readOnly = true;
- }
- }
-
- unsetReadonly();
- const validity = $inputEl[0].validity;
- const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';
-
- if (!validity) {
- setReadonly();
- return true;
- }
-
- if (!validity.valid) {
- let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');
-
- if (validationMessage) {
- if ($errorEl.length === 0) {
- $errorEl = $(``);
- $errorEl.insertAfter($inputEl);
- }
-
- $errorEl.text(validationMessage);
- }
-
- if ($errorEl.length > 0) {
- $itemInputEl.addClass('item-input-with-error-message');
- $inputWrapEl.addClass('input-with-error-message');
- }
-
- $itemInputEl.addClass('item-input-invalid');
- $inputWrapEl.addClass('input-invalid');
- $inputEl.addClass('input-invalid');
- setReadonly();
- return false;
- }
-
- $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');
- $inputWrapEl.removeClass('input-invalid input-with-error-message');
- $inputEl.removeClass('input-invalid');
- setReadonly();
- return true;
- },
-
- validateInputs(el) {
- const app = this;
- const validates = $(el).find('input, textarea, select').map(inputEl => app.input.validate(inputEl));
- return validates.indexOf(false) < 0;
- },
-
- focus(inputEl) {
- const $inputEl = $(inputEl);
- const type = $inputEl.attr('type');
- if (Input.ignoreTypes.indexOf(type) >= 0) return;
- $inputEl.parents('.item-input').addClass('item-input-focused');
- $inputEl.parents('.input').addClass('input-focused');
- $inputEl.addClass('input-focused');
- },
-
- blur(inputEl) {
- const $inputEl = $(inputEl);
- $inputEl.parents('.item-input').removeClass('item-input-focused');
- $inputEl.parents('.input').removeClass('input-focused');
- $inputEl.removeClass('input-focused');
- },
-
- checkEmptyState(inputEl) {
- const app = this;
- let $inputEl = $(inputEl);
-
- if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {
- $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);
- }
-
- if (!$inputEl.length) return;
- const isContentEditable = $inputEl[0].hasAttribute('contenteditable');
- let value;
-
- if (isContentEditable) {
- if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();
- } else {
- value = $inputEl.val();
- }
-
- const $itemInputEl = $inputEl.parents('.item-input');
- const $inputWrapEl = $inputEl.parents('.input');
-
- if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {
- $itemInputEl.addClass('item-input-with-value');
- $inputWrapEl.addClass('input-with-value');
- $inputEl.addClass('input-with-value');
- $inputEl.trigger('input:notempty');
- app.emit('inputNotEmpty', $inputEl[0]);
- } else {
- $itemInputEl.removeClass('item-input-with-value');
- $inputWrapEl.removeClass('input-with-value');
- $inputEl.removeClass('input-with-value');
- $inputEl.trigger('input:empty');
- app.emit('inputEmpty', $inputEl[0]);
- }
- },
-
- scrollIntoView(inputEl, duration, centered, force) {
- if (duration === void 0) {
- duration = 0;
- }
-
- const $inputEl = $(inputEl);
- const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);
-
- if (!$scrollableEl.length) {
- return false;
- }
-
- const contentHeight = $scrollableEl[0].offsetHeight;
- const contentScrollTop = $scrollableEl[0].scrollTop;
- const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);
- const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);
- const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;
- const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;
- const inputHeight = $inputEl[0].offsetHeight;
- const min = inputOffsetTop + contentScrollTop - contentPaddingTop;
- const max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;
- const centeredPosition = min + (max - min) / 2;
-
- if (contentScrollTop > min) {
- $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);
- return true;
- }
-
- if (contentScrollTop < max) {
- $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);
- return true;
- }
-
- if (force) {
- $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);
- }
-
- return false;
- },
-
- init() {
- const app = this;
- const device = getDevice();
- const window = getWindow();
- const document = getDocument();
- Input.createTextareaResizableShadow();
-
- function onFocus() {
- const inputEl = this;
-
- if (app.params.input.scrollIntoViewOnFocus) {
- if (device.android) {
- $(window).once('resize', () => {
- if (document && document.activeElement === inputEl) {
- app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);
- }
- });
- } else {
- app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);
- }
- }
-
- app.input.focus(inputEl);
- }
-
- function onBlur() {
- const $inputEl = $(this);
- const tag = $inputEl[0].nodeName.toLowerCase();
- app.input.blur($inputEl);
-
- if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {
- app.input.validate($inputEl);
- } // Resize textarea
-
-
- if (tag === 'textarea' && $inputEl.hasClass('resizable')) {
- if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();
- }
- }
-
- function onChange() {
- const $inputEl = $(this);
- const type = $inputEl.attr('type');
- const tag = $inputEl[0].nodeName.toLowerCase();
- const isContentEditable = $inputEl[0].hasAttribute('contenteditable');
- if (Input.ignoreTypes.indexOf(type) >= 0) return; // Check Empty State
-
- app.input.checkEmptyState($inputEl);
- if (isContentEditable) return; // Check validation
-
- if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {
- app.input.validate($inputEl);
- } // Resize textarea
-
-
- if (tag === 'textarea' && $inputEl.hasClass('resizable')) {
- app.input.resizeTextarea($inputEl);
- }
- }
-
- function onInvalid(e) {
- const $inputEl = $(this);
-
- if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {
- e.preventDefault();
- app.input.validate($inputEl);
- }
- }
-
- function clearInput() {
- const $clicked = $(this);
- const $inputEl = $clicked.siblings('input, textarea').eq(0);
- const previousValue = $inputEl.val();
- $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);
- app.emit('inputClear', previousValue);
- }
-
- function preventDefault(e) {
- e.preventDefault();
- }
-
- $(document).on('click', '.input-clear-button', clearInput);
- $(document).on('mousedown', '.input-clear-button', preventDefault);
- $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);
- $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);
- $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);
- $(document).on('invalid', 'input, textarea, select', onInvalid, true);
- }
-
-};
-export default {
- name: 'input',
- params: {
- input: {
- scrollIntoViewOnFocus: undefined,
- scrollIntoViewCentered: false,
- scrollIntoViewDuration: 0,
- scrollIntoViewAlways: false
- }
- },
-
- create() {
- const app = this;
-
- if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {
- app.params.input.scrollIntoViewOnFocus = getDevice().android;
- }
-
- bindMethods(app, {
- input: Input
- });
- },
-
- on: {
- init() {
- const app = this;
- app.input.init();
- },
-
- tabMounted(tabEl) {
- const app = this;
- const $tabEl = $(tabEl);
- $tabEl.find('.item-input, .input').each(itemInputEl => {
- const $itemInputEl = $(itemInputEl);
- $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {
- const $inputEl = $(inputEl);
- if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;
- app.input.checkEmptyState($inputEl);
- });
- });
- $tabEl.find('textarea.resizable').each(textareaEl => {
- app.input.resizeTextarea(textareaEl);
- });
- },
-
- pageInit(page) {
- const app = this;
- const $pageEl = page.$el;
- $pageEl.find('.item-input, .input').each(itemInputEl => {
- const $itemInputEl = $(itemInputEl);
- $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {
- const $inputEl = $(inputEl);
- if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;
- app.input.checkEmptyState($inputEl);
- });
- });
- $pageEl.find('textarea.resizable').each(textareaEl => {
- app.input.resizeTextarea(textareaEl);
- });
- },
-
- 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {
- const app = this;
-
- if (instance && instance.$el) {
- instance.$el.find('textarea.resizable').each(textareaEl => {
- app.input.resizeTextarea(textareaEl);
- });
- } else {
- $('textarea.resizable').each(textareaEl => {
- app.input.resizeTextarea(textareaEl);
- });
- }
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var a=t.$,i=t.utils,n=t.getDevice,r=(t.getSupport,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,i.bindMethods),s={ignoreTypes:["checkbox","button","submit","range","radio","image"],createTextareaResizableShadow:function(){var t=a(document.createElement("textarea"));t.addClass("textarea-resizable-shadow"),t.prop({disabled:!0,readonly:!0}),s.textareaResizableShadow=t},textareaResizableShadow:void 0,resizeTextarea:function(t){var e=a(t);s.textareaResizableShadow||s.createTextareaResizableShadow();var i=s.textareaResizableShadow;if(e.length&&e.hasClass("resizable")){0===s.textareaResizableShadow.parents().length&&this.$el.append(i);var n=window.getComputedStyle(e[0]);"padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display".split(" ").forEach((function(t){var e=n[t];"font-size line-height letter-spacing width".split(" ").indexOf(t)>=0&&(e=e.replace(",",".")),i.css(t,e)}));var r=e[0].clientHeight;i.val("");var o=i[0].scrollHeight;i.val(e.val()),i.css("height",0);var l=i[0].scrollHeight;r!==l&&(l>o?e.css("height",l+"px"):lo||l')).insertAfter(e),l.text(o)),l.length>0&&(i.addClass("item-input-with-error-message"),n.addClass("input-with-error-message")),i.addClass("item-input-invalid"),n.addClass("input-invalid"),e.addClass("input-invalid"),r(),!1}return i.removeClass("item-input-invalid item-input-with-error-message"),n.removeClass("input-invalid input-with-error-message"),e.removeClass("input-invalid"),r(),!0},validateInputs:function(t){var e=this;return a(t).find("input, textarea, select").map((function(t){return e.input.validate(t)})).indexOf(!1)<0},focus:function(t){var e=a(t),i=e.attr("type");s.ignoreTypes.indexOf(i)>=0||(e.parents(".item-input").addClass("item-input-focused"),e.parents(".input").addClass("input-focused"),e.addClass("input-focused"))},blur:function(t){var e=a(t);e.parents(".item-input").removeClass("item-input-focused"),e.parents(".input").removeClass("input-focused"),e.removeClass("input-focused")},checkEmptyState:function(t){var e=a(t);if(e.is("input, select, textarea, .item-input [contenteditable]")||(e=e.find("input, select, textarea, .item-input [contenteditable]").eq(0)),e.length){var i;i=e[0].hasAttribute("contenteditable")?e.find(".text-editor-placeholder").length?"":e.html():e.val();var n=e.parents(".item-input"),r=e.parents(".input");i&&"string"==typeof i&&""!==i.trim()||Array.isArray(i)&&i.length>0?(n.addClass("item-input-with-value"),r.addClass("input-with-value"),e.addClass("input-with-value"),e.trigger("input:notempty"),this.emit("inputNotEmpty",e[0])):(n.removeClass("item-input-with-value"),r.removeClass("input-with-value"),e.removeClass("input-with-value"),e.trigger("input:empty"),this.emit("inputEmpty",e[0]))}},scrollIntoView:function(t,e,i,n){void 0===e&&(e=0);var r=a(t),s=r.parents(".page-content, .panel, .card-expandable .card-content").eq(0);if(!s.length)return!1;var o=s[0].offsetHeight,l=s[0].scrollTop,u=parseInt(s.css("padding-top"),10),p=parseInt(s.css("padding-bottom"),10),d=s.offset().top-l,c=r.offset().top-d,h=c+l-u,m=c+l-o+p+r[0].offsetHeight,f=h+(m-h)/2;return l>h?(s.scrollTop(i?f:h,e),!0):l=0||(t.input.checkEmptyState(e),r||(null!==e.attr("data-validate-on-blur")||!e.dataset().validate&&null===e.attr("validate")||t.input.validate(e),"textarea"===n&&e.hasClass("resizable")&&t.input.resizeTextarea(e)))}),!0),a(document).on("focus","input, textarea, select, .item-input [contenteditable]",(function(){var i=this;t.params.input.scrollIntoViewOnFocus&&(e.android?a(window).once("resize",(function(){document&&document.activeElement===i&&t.input.scrollIntoView(i,t.params.input.scrollIntoViewDuration,t.params.input.scrollIntoViewCentered,t.params.input.scrollIntoViewAlways)})):t.input.scrollIntoView(i,t.params.input.scrollIntoViewDuration,t.params.input.scrollIntoViewCentered,t.params.input.scrollIntoViewAlways)),t.input.focus(i)}),!0),a(document).on("blur","input, textarea, select, .item-input [contenteditable]",(function(){var e=a(this),i=e[0].nodeName.toLowerCase();t.input.blur(e),(e.dataset().validate||null!==e.attr("validate")||null!==e.attr("data-validate-on-blur"))&&t.input.validate(e),"textarea"===i&&e.hasClass("resizable")&&s.textareaResizableShadow&&s.textareaResizableShadow.remove()}),!0),a(document).on("invalid","input, textarea, select",(function(e){var i=a(this);null!==i.attr("data-validate-on-blur")||!i.dataset().validate&&null===i.attr("validate")||(e.preventDefault(),t.input.validate(i))}),!0)}},o={name:"input",params:{input:{scrollIntoViewOnFocus:void 0,scrollIntoViewCentered:!1,scrollIntoViewDuration:0,scrollIntoViewAlways:!1}},create:function(){var t=this;void 0===t.params.input.scrollIntoViewOnFocus&&(t.params.input.scrollIntoViewOnFocus=n().android),r(t,{input:s})},on:{init:function(){this.input.init()},tabMounted:function(t){var e=this,i=a(t);i.find(".item-input, .input").each((function(t){a(t).find("input, select, textarea, [contenteditable]").each((function(t){var i=a(t);s.ignoreTypes.indexOf(i.attr("type"))>=0||e.input.checkEmptyState(i)}))})),i.find("textarea.resizable").each((function(t){e.input.resizeTextarea(t)}))},pageInit:function(t){var e=this,i=t.$el;i.find(".item-input, .input").each((function(t){a(t).find("input, select, textarea, [contenteditable]").each((function(t){var i=a(t);s.ignoreTypes.indexOf(i.attr("type"))>=0||e.input.checkEmptyState(i)}))})),i.find("textarea.resizable").each((function(t){e.input.resizeTextarea(t)}))},"panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint":function(t){var e=this;t&&t.$el?t.$el.find("textarea.resizable").each((function(t){e.input.resizeTextarea(t)})):a("textarea.resizable").each((function(t){e.input.resizeTextarea(t)}))}}};if(e){if(t.prototype.modules&&t.prototype.modules[o.name])return;t.use(o),t.instance&&(t.instance.useModuleParams(o,t.instance.params),t.instance.useModule(o))}return o}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/input/input.lazy.js b/www/assets/framework7/components/input/input.lazy.js
deleted file mode 100644
index 2248aba59..000000000
--- a/www/assets/framework7/components/input/input.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var a=t.$,i=t.utils,n=t.getDevice,s=(t.getSupport,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,t.$jsx,i.bindMethods);const r={ignoreTypes:["checkbox","button","submit","range","radio","image"],createTextareaResizableShadow(){const t=a(document.createElement("textarea"));t.addClass("textarea-resizable-shadow"),t.prop({disabled:!0,readonly:!0}),r.textareaResizableShadow=t},textareaResizableShadow:void 0,resizeTextarea(t){const e=this,i=a(t);r.textareaResizableShadow||r.createTextareaResizableShadow();const n=r.textareaResizableShadow;if(!i.length)return;if(!i.hasClass("resizable"))return;0===r.textareaResizableShadow.parents().length&&e.$el.append(n);const s=window.getComputedStyle(i[0]);"padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display".split(" ").forEach((t=>{let e=s[t];"font-size line-height letter-spacing width".split(" ").indexOf(t)>=0&&(e=e.replace(",",".")),n.css(t,e)}));const o=i[0].clientHeight;n.val("");const l=n[0].scrollHeight;n.val(i.val()),n.css("height",0);const p=n[0].scrollHeight;o!==p&&(p>l?i.css("height",`${p}px`):pl||p`),t.insertAfter(e)),t.text(o)),t.length>0&&(i.addClass("item-input-with-error-message"),n.addClass("input-with-error-message")),i.addClass("item-input-invalid"),n.addClass("input-invalid"),e.addClass("input-invalid"),s(),!1}return i.removeClass("item-input-invalid item-input-with-error-message"),n.removeClass("input-invalid input-with-error-message"),e.removeClass("input-invalid"),s(),!0},validateInputs(t){const e=this;return a(t).find("input, textarea, select").map((t=>e.input.validate(t))).indexOf(!1)<0},focus(t){const e=a(t),i=e.attr("type");r.ignoreTypes.indexOf(i)>=0||(e.parents(".item-input").addClass("item-input-focused"),e.parents(".input").addClass("input-focused"),e.addClass("input-focused"))},blur(t){const e=a(t);e.parents(".item-input").removeClass("item-input-focused"),e.parents(".input").removeClass("input-focused"),e.removeClass("input-focused")},checkEmptyState(t){const e=this;let i=a(t);if(i.is("input, select, textarea, .item-input [contenteditable]")||(i=i.find("input, select, textarea, .item-input [contenteditable]").eq(0)),!i.length)return;let n;n=i[0].hasAttribute("contenteditable")?i.find(".text-editor-placeholder").length?"":i.html():i.val();const s=i.parents(".item-input"),r=i.parents(".input");n&&"string"==typeof n&&""!==n.trim()||Array.isArray(n)&&n.length>0?(s.addClass("item-input-with-value"),r.addClass("input-with-value"),i.addClass("input-with-value"),i.trigger("input:notempty"),e.emit("inputNotEmpty",i[0])):(s.removeClass("item-input-with-value"),r.removeClass("input-with-value"),i.removeClass("input-with-value"),i.trigger("input:empty"),e.emit("inputEmpty",i[0]))},scrollIntoView(t,e,i,n){void 0===e&&(e=0);const s=a(t),r=s.parents(".page-content, .panel, .card-expandable .card-content").eq(0);if(!r.length)return!1;const o=r[0].offsetHeight,l=r[0].scrollTop,p=parseInt(r.css("padding-top"),10),u=parseInt(r.css("padding-bottom"),10),d=r.offset().top-l,c=s.offset().top-d,m=c+l-p,h=c+l-o+u+s[0].offsetHeight,g=m+(h-m)/2;return l>m?(r.scrollTop(i?g:m,e),!0):l=0||(t.input.checkEmptyState(e),s||(null!==e.attr("data-validate-on-blur")||!e.dataset().validate&&null===e.attr("validate")||t.input.validate(e),"textarea"===n&&e.hasClass("resizable")&&t.input.resizeTextarea(e)))}),!0),a(document).on("focus","input, textarea, select, .item-input [contenteditable]",(function(){const i=this;t.params.input.scrollIntoViewOnFocus&&(e.android?a(window).once("resize",(()=>{document&&document.activeElement===i&&t.input.scrollIntoView(i,t.params.input.scrollIntoViewDuration,t.params.input.scrollIntoViewCentered,t.params.input.scrollIntoViewAlways)})):t.input.scrollIntoView(i,t.params.input.scrollIntoViewDuration,t.params.input.scrollIntoViewCentered,t.params.input.scrollIntoViewAlways)),t.input.focus(i)}),!0),a(document).on("blur","input, textarea, select, .item-input [contenteditable]",(function(){const e=a(this),i=e[0].nodeName.toLowerCase();t.input.blur(e),(e.dataset().validate||null!==e.attr("validate")||null!==e.attr("data-validate-on-blur"))&&t.input.validate(e),"textarea"===i&&e.hasClass("resizable")&&r.textareaResizableShadow&&r.textareaResizableShadow.remove()}),!0),a(document).on("invalid","input, textarea, select",(function(e){const i=a(this);null!==i.attr("data-validate-on-blur")||!i.dataset().validate&&null===i.attr("validate")||(e.preventDefault(),t.input.validate(i))}),!0)}};var o={name:"input",params:{input:{scrollIntoViewOnFocus:void 0,scrollIntoViewCentered:!1,scrollIntoViewDuration:0,scrollIntoViewAlways:!1}},create(){const t=this;void 0===t.params.input.scrollIntoViewOnFocus&&(t.params.input.scrollIntoViewOnFocus=n().android),s(t,{input:r})},on:{init(){this.input.init()},tabMounted(t){const e=this,i=a(t);i.find(".item-input, .input").each((t=>{a(t).find("input, select, textarea, [contenteditable]").each((t=>{const i=a(t);r.ignoreTypes.indexOf(i.attr("type"))>=0||e.input.checkEmptyState(i)}))})),i.find("textarea.resizable").each((t=>{e.input.resizeTextarea(t)}))},pageInit(t){const e=this,i=t.$el;i.find(".item-input, .input").each((t=>{a(t).find("input, select, textarea, [contenteditable]").each((t=>{const i=a(t);r.ignoreTypes.indexOf(i.attr("type"))>=0||e.input.checkEmptyState(i)}))})),i.find("textarea.resizable").each((t=>{e.input.resizeTextarea(t)}))},"panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint":function(t){const e=this;t&&t.$el?t.$el.find("textarea.resizable").each((t=>{e.input.resizeTextarea(t)})):a("textarea.resizable").each((t=>{e.input.resizeTextarea(t)}))}}};if(e){if(t.prototype.modules&&t.prototype.modules[o.name])return;t.use(o),t.instance&&(t.instance.useModuleParams(o,t.instance.params),t.instance.useModule(o))}return o}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/input/input.less b/www/assets/framework7/components/input/input.less
index 951979585..49f5115c3 100644
--- a/www/assets/framework7/components/input/input.less
+++ b/www/assets/framework7/components/input/input.less
@@ -428,7 +428,7 @@ textarea {
}
.if-dark-theme({
- .dark option {
+ .theme-dark option {
background-color: var(--f7-page-bg-color);
}
});
diff --git a/www/assets/framework7/components/input/package.json b/www/assets/framework7/components/input/package.json
new file mode 100644
index 000000000..7df27ff97
--- /dev/null
+++ b/www/assets/framework7/components/input/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/input",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/input/input.js",
+ "module": "../../esm/components/input/input.js",
+ "jsnext:main": "../../esm/components/input/input.js",
+ "typings": "../../types/components/input/input.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/lazy/lazy.d.ts b/www/assets/framework7/components/lazy/lazy.d.ts
index 8387d7975..fc0e14bd6 100644
--- a/www/assets/framework7/components/lazy/lazy.d.ts
+++ b/www/assets/framework7/components/lazy/lazy.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Lazy {
interface DomEvents {
diff --git a/www/assets/framework7/components/lazy/lazy.js b/www/assets/framework7/components/lazy/lazy.js
index 23bcc37b3..e5d596bb2 100644
--- a/www/assets/framework7/components/lazy/lazy.js
+++ b/www/assets/framework7/components/lazy/lazy.js
@@ -1,283 +1 @@
-import { getWindow } from 'ssr-window';
-import $ from '../../shared/dom7.js';
-import { bindMethods } from '../../shared/utils.js';
-import { getSupport } from '../../shared/get-support.js';
-const Lazy = {
- destroy(pageEl) {
- const $pageEl = $(pageEl).closest('.page');
- if (!$pageEl.length) return;
-
- if ($pageEl[0].f7LazyDestroy) {
- $pageEl[0].f7LazyDestroy();
- }
- },
-
- create(pageEl) {
- const app = this;
- const window = getWindow();
- const support = getSupport();
- const $pageEl = $(pageEl).closest('.page').eq(0); // Lazy images
-
- const $lazyLoadImages = $pageEl.find('.lazy');
- if ($lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) return; // Placeholder
-
- const placeholderSrc = app.params.lazy.placeholder;
-
- if (placeholderSrc !== false) {
- $lazyLoadImages.each(lazyEl => {
- if ($(lazyEl).attr('data-src') && !$(lazyEl).attr('src')) $(lazyEl).attr('src', placeholderSrc);
- });
- } // load image
-
-
- const imagesSequence = [];
- let imageIsLoading = false;
-
- function onImageComplete(lazyEl) {
- if (imagesSequence.indexOf(lazyEl) >= 0) {
- imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);
- }
-
- imageIsLoading = false;
-
- if (app.params.lazy.sequential && imagesSequence.length > 0) {
- imageIsLoading = true;
- app.lazy.loadImage(imagesSequence[0], onImageComplete);
- }
- }
-
- function observerCallback(entries, observer) {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- if (app.params.lazy.sequential && imageIsLoading) {
- if (imagesSequence.indexOf(entry.target) < 0) imagesSequence.push(entry.target);
- return;
- } // Load image
-
-
- imageIsLoading = true;
- app.lazy.loadImage(entry.target, onImageComplete); // Detach
-
- observer.unobserve(entry.target);
- }
- });
- }
-
- if (app.params.lazy.observer && support.intersectionObserver) {
- let observer = $pageEl[0].f7LazyObserver;
-
- if (!observer) {
- observer = new window.IntersectionObserver(observerCallback, {
- root: $pageEl[0]
- });
- }
-
- $lazyLoadImages.each(el => {
- if (el.f7LazyObserverAdded) return;
- el.f7LazyObserverAdded = true;
- observer.observe(el);
- });
-
- if (!$pageEl[0].f7LazyDestroy) {
- $pageEl[0].f7LazyDestroy = () => {
- observer.disconnect();
- delete $pageEl[0].f7LazyDestroy;
- delete $pageEl[0].f7LazyObserver;
- };
- }
-
- return;
- }
-
- function lazyHandler() {
- app.lazy.load($pageEl, lazyEl => {
- if (app.params.lazy.sequential && imageIsLoading) {
- if (imagesSequence.indexOf(lazyEl) < 0) imagesSequence.push(lazyEl);
- return;
- }
-
- imageIsLoading = true;
- app.lazy.loadImage(lazyEl, onImageComplete);
- });
- }
-
- function attachEvents() {
- $pageEl[0].f7LazyAttached = true;
- $pageEl.on('lazy', lazyHandler);
- $pageEl.on('scroll', lazyHandler, true);
- $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);
- app.on('resize', lazyHandler);
- }
-
- function detachEvents() {
- $pageEl[0].f7LazyAttached = false;
- delete $pageEl[0].f7LazyAttached;
- $pageEl.off('lazy', lazyHandler);
- $pageEl.off('scroll', lazyHandler, true);
- $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);
- app.off('resize', lazyHandler);
- } // Store detach function
-
-
- if (!$pageEl[0].f7LazyDestroy) {
- $pageEl[0].f7LazyDestroy = detachEvents;
- } // Attach events
-
-
- if (!$pageEl[0].f7LazyAttached) {
- attachEvents();
- } // Run loader on page load/init
-
-
- lazyHandler();
- },
-
- isInViewport(lazyEl) {
- const app = this;
- const rect = lazyEl.getBoundingClientRect();
- const threshold = app.params.lazy.threshold || 0;
- return rect.top >= 0 - threshold && rect.left >= 0 - threshold && rect.top <= app.height + threshold && rect.left <= app.width + threshold;
- },
-
- loadImage(imageEl, callback) {
- const app = this;
- const window = getWindow();
- const $imageEl = $(imageEl);
- const bg = $imageEl.attr('data-background');
- const src = bg || $imageEl.attr('data-src');
-
- function onLoad() {
- $imageEl.removeClass('lazy').addClass('lazy-loaded');
-
- if (bg) {
- $imageEl.css('background-image', `url(${src})`);
- } else if (src) {
- $imageEl.attr('src', src);
- }
-
- if (callback) callback(imageEl);
- $imageEl.trigger('lazy:loaded');
- app.emit('lazyLoaded', $imageEl[0]);
- }
-
- if (!src) {
- $imageEl.trigger('lazy:load');
- app.emit('lazyLoad', $imageEl[0]);
- onLoad();
- return;
- }
-
- function onError() {
- $imageEl.removeClass('lazy').addClass('lazy-loaded');
-
- if (bg) {
- $imageEl.css('background-image', `url(${app.params.lazy.placeholder || ''})`);
- } else {
- $imageEl.attr('src', app.params.lazy.placeholder || '');
- }
-
- if (callback) callback(imageEl);
- $imageEl.trigger('lazy:error');
- app.emit('lazyError', $imageEl[0]);
- }
-
- const image = new window.Image();
- image.onload = onLoad;
- image.onerror = onError;
- image.src = src;
- $imageEl.removeAttr('data-src').removeAttr('data-background'); // Add loaded callback and events
-
- $imageEl.trigger('lazy:load');
- app.emit('lazyLoad', $imageEl[0]);
- },
-
- load(pageEl, callback) {
- const app = this;
- let $pageEl = $(pageEl);
- if (!$pageEl.hasClass('page')) $pageEl = $pageEl.parents('.page').eq(0);
-
- if ($pageEl.length === 0) {
- return;
- }
-
- $pageEl.find('.lazy').each(lazyEl => {
- const $lazyEl = $(lazyEl);
-
- if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {
- return;
- }
-
- if (app.lazy.isInViewport(lazyEl)) {
- if (callback) callback(lazyEl);else app.lazy.loadImage(lazyEl);
- }
- });
- }
-
-};
-export default {
- name: 'lazy',
- params: {
- lazy: {
- placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',
- threshold: 0,
- sequential: true,
- observer: true
- }
- },
-
- create() {
- const app = this;
- bindMethods(app, {
- lazy: Lazy
- });
- },
-
- on: {
- pageInit(page) {
- const app = this;
-
- if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
- app.lazy.create(page.$el);
- }
- },
-
- pageAfterIn(page) {
- const app = this;
- const support = getSupport();
- if (app.params.lazy.observer && support.intersectionObserver) return;
-
- if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
- app.lazy.create(page.$el);
- }
- },
-
- pageBeforeRemove(page) {
- const app = this;
-
- if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
- app.lazy.destroy(page.$el);
- }
- },
-
- tabMounted(tabEl) {
- const app = this;
- const $tabEl = $(tabEl);
-
- if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {
- app.lazy.create($tabEl);
- }
- },
-
- tabBeforeRemove(tabEl) {
- const app = this;
- const support = getSupport();
- if (app.params.lazy.observer && support.intersectionObserver) return;
- const $tabEl = $(tabEl);
-
- if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {
- app.lazy.destroy($tabEl);
- }
- }
-
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(a,e){void 0===e&&(e=!0);var t=a.$,r=a.utils,o=(a.getDevice,a.getSupport),s=(a.Class,a.Modal,a.ConstructorMethods,a.ModalMethods,r.bindMethods),n={destroy:function(a){var e=t(a).closest(".page");e.length&&e[0].f7LazyDestroy&&e[0].f7LazyDestroy()},create:function(a){var e=this,r=o(),s=t(a).closest(".page").eq(0),n=s.find(".lazy");if(0!==n.length||s.hasClass("lazy")){var l=e.params.lazy.placeholder;!1!==l&&n.each((function(a){t(a).attr("data-src")&&!t(a).attr("src")&&t(a).attr("src",l)}));var i=[],d=!1;if(e.params.lazy.observer&&r.intersectionObserver){var y=s[0].f7LazyObserver;return y||(y=new window.IntersectionObserver((function(a,t){a.forEach((function(a){if(a.isIntersecting){if(e.params.lazy.sequential&&d)return void(i.indexOf(a.target)<0&&i.push(a.target));d=!0,e.lazy.loadImage(a.target,c),t.unobserve(a.target)}}))}),{root:s[0]})),n.each((function(a){a.f7LazyObserverAdded||(a.f7LazyObserverAdded=!0,y.observe(a))})),void(s[0].f7LazyDestroy||(s[0].f7LazyDestroy=function(){y.disconnect(),delete s[0].f7LazyDestroy,delete s[0].f7LazyObserver}))}s[0].f7LazyDestroy||(s[0].f7LazyDestroy=function(){s[0].f7LazyAttached=!1,delete s[0].f7LazyAttached,s.off("lazy",f),s.off("scroll",f,!0),s.find(".tab").off("tab:mounted tab:show",f),e.off("resize",f)}),s[0].f7LazyAttached||(s[0].f7LazyAttached=!0,s.on("lazy",f),s.on("scroll",f,!0),s.find(".tab").on("tab:mounted tab:show",f),e.on("resize",f)),f()}function c(a){i.indexOf(a)>=0&&i.splice(i.indexOf(a),1),d=!1,e.params.lazy.sequential&&i.length>0&&(d=!0,e.lazy.loadImage(i[0],c))}function f(){e.lazy.load(s,(function(a){e.params.lazy.sequential&&d?i.indexOf(a)<0&&i.push(a):(d=!0,e.lazy.loadImage(a,c))}))}},isInViewport:function(a){var e=this,t=a.getBoundingClientRect(),r=e.params.lazy.threshold||0;return t.top>=0-r&&t.left>=0-r&&t.top<=e.height+r&&t.left<=e.width+r},loadImage:function(a,e){var r=this,o=t(a),s=o.attr("data-background"),n=s||o.attr("data-src");function l(){o.removeClass("lazy").addClass("lazy-loaded"),s?o.css("background-image","url("+n+")"):n&&o.attr("src",n),e&&e(a),o.trigger("lazy:loaded"),r.emit("lazyLoaded",o[0])}if(!n)return o.trigger("lazy:load"),r.emit("lazyLoad",o[0]),void l();var i=new window.Image;i.onload=l,i.onerror=function(){o.removeClass("lazy").addClass("lazy-loaded"),s?o.css("background-image","url("+(r.params.lazy.placeholder||"")+")"):o.attr("src",r.params.lazy.placeholder||""),e&&e(a),o.trigger("lazy:error"),r.emit("lazyError",o[0])},i.src=n,o.removeAttr("data-src").removeAttr("data-background"),o.trigger("lazy:load"),r.emit("lazyLoad",o[0])},load:function(a,e){var r=this,o=t(a);o.hasClass("page")||(o=o.parents(".page").eq(0)),0!==o.length&&o.find(".lazy").each((function(a){t(a).parents(".tab:not(.tab-active)").length>0||r.lazy.isInViewport(a)&&(e?e(a):r.lazy.loadImage(a))}))}},l={name:"lazy",params:{lazy:{placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",threshold:0,sequential:!0,observer:!0}},create:function(){s(this,{lazy:n})},on:{pageInit:function(a){(a.$el.find(".lazy").length>0||a.$el.hasClass("lazy"))&&this.lazy.create(a.$el)},pageAfterIn:function(a){var e=o();this.params.lazy.observer&&e.intersectionObserver||(a.$el.find(".lazy").length>0||a.$el.hasClass("lazy"))&&this.lazy.create(a.$el)},pageBeforeRemove:function(a){(a.$el.find(".lazy").length>0||a.$el.hasClass("lazy"))&&this.lazy.destroy(a.$el)},tabMounted:function(a){var e=t(a);(e.find(".lazy").length>0||e.hasClass("lazy"))&&this.lazy.create(e)},tabBeforeRemove:function(a){var e=o();if(!this.params.lazy.observer||!e.intersectionObserver){var r=t(a);(r.find(".lazy").length>0||r.hasClass("lazy"))&&this.lazy.destroy(r)}}}};if(e){if(a.prototype.modules&&a.prototype.modules[l.name])return;a.use(l),a.instance&&(a.instance.useModuleParams(l,a.instance.params),a.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/lazy/lazy.lazy.js b/www/assets/framework7/components/lazy/lazy.lazy.js
deleted file mode 100644
index ec6a9d25d..000000000
--- a/www/assets/framework7/components/lazy/lazy.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,a){void 0===a&&(a=!0);var t=e.$,r=e.utils,s=(e.getDevice,e.getSupport),l=(e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,r.bindMethods);const o={destroy(e){const a=t(e).closest(".page");a.length&&a[0].f7LazyDestroy&&a[0].f7LazyDestroy()},create(e){const a=this,r=s(),l=t(e).closest(".page").eq(0),o=l.find(".lazy");if(0===o.length&&!l.hasClass("lazy"))return;const n=a.params.lazy.placeholder;!1!==n&&o.each((e=>{t(e).attr("data-src")&&!t(e).attr("src")&&t(e).attr("src",n)}));const d=[];let i=!1;function y(e){d.indexOf(e)>=0&&d.splice(d.indexOf(e),1),i=!1,a.params.lazy.sequential&&d.length>0&&(i=!0,a.lazy.loadImage(d[0],y))}if(a.params.lazy.observer&&r.intersectionObserver){let e=l[0].f7LazyObserver;return e||(e=new window.IntersectionObserver((function(e,t){e.forEach((e=>{if(e.isIntersecting){if(a.params.lazy.sequential&&i)return void(d.indexOf(e.target)<0&&d.push(e.target));i=!0,a.lazy.loadImage(e.target,y),t.unobserve(e.target)}}))}),{root:l[0]})),o.each((a=>{a.f7LazyObserverAdded||(a.f7LazyObserverAdded=!0,e.observe(a))})),void(l[0].f7LazyDestroy||(l[0].f7LazyDestroy=()=>{e.disconnect(),delete l[0].f7LazyDestroy,delete l[0].f7LazyObserver}))}function c(){a.lazy.load(l,(e=>{a.params.lazy.sequential&&i?d.indexOf(e)<0&&d.push(e):(i=!0,a.lazy.loadImage(e,y))}))}l[0].f7LazyDestroy||(l[0].f7LazyDestroy=function(){l[0].f7LazyAttached=!1,delete l[0].f7LazyAttached,l.off("lazy",c),l.off("scroll",c,!0),l.find(".tab").off("tab:mounted tab:show",c),a.off("resize",c)}),l[0].f7LazyAttached||(l[0].f7LazyAttached=!0,l.on("lazy",c),l.on("scroll",c,!0),l.find(".tab").on("tab:mounted tab:show",c),a.on("resize",c)),c()},isInViewport(e){const a=this,t=e.getBoundingClientRect(),r=a.params.lazy.threshold||0;return t.top>=0-r&&t.left>=0-r&&t.top<=a.height+r&&t.left<=a.width+r},loadImage(e,a){const r=this,s=t(e),l=s.attr("data-background"),o=l||s.attr("data-src");function n(){s.removeClass("lazy").addClass("lazy-loaded"),l?s.css("background-image",`url(${o})`):o&&s.attr("src",o),a&&a(e),s.trigger("lazy:loaded"),r.emit("lazyLoaded",s[0])}if(!o)return s.trigger("lazy:load"),r.emit("lazyLoad",s[0]),void n();const d=new window.Image;d.onload=n,d.onerror=function(){s.removeClass("lazy").addClass("lazy-loaded"),l?s.css("background-image",`url(${r.params.lazy.placeholder||""})`):s.attr("src",r.params.lazy.placeholder||""),a&&a(e),s.trigger("lazy:error"),r.emit("lazyError",s[0])},d.src=o,s.removeAttr("data-src").removeAttr("data-background"),s.trigger("lazy:load"),r.emit("lazyLoad",s[0])},load(e,a){const r=this;let s=t(e);s.hasClass("page")||(s=s.parents(".page").eq(0)),0!==s.length&&s.find(".lazy").each((e=>{t(e).parents(".tab:not(.tab-active)").length>0||r.lazy.isInViewport(e)&&(a?a(e):r.lazy.loadImage(e))}))}};var n={name:"lazy",params:{lazy:{placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==",threshold:0,sequential:!0,observer:!0}},create(){l(this,{lazy:o})},on:{pageInit(e){const a=this;(e.$el.find(".lazy").length>0||e.$el.hasClass("lazy"))&&a.lazy.create(e.$el)},pageAfterIn(e){const a=this,t=s();a.params.lazy.observer&&t.intersectionObserver||(e.$el.find(".lazy").length>0||e.$el.hasClass("lazy"))&&a.lazy.create(e.$el)},pageBeforeRemove(e){const a=this;(e.$el.find(".lazy").length>0||e.$el.hasClass("lazy"))&&a.lazy.destroy(e.$el)},tabMounted(e){const a=this,r=t(e);(r.find(".lazy").length>0||r.hasClass("lazy"))&&a.lazy.create(r)},tabBeforeRemove(e){const a=this,r=s();if(a.params.lazy.observer&&r.intersectionObserver)return;const l=t(e);(l.find(".lazy").length>0||l.hasClass("lazy"))&&a.lazy.destroy(l)}}};if(a){if(e.prototype.modules&&e.prototype.modules[n.name])return;e.use(n),e.instance&&(e.instance.useModuleParams(n,e.instance.params),e.instance.useModule(n))}return n}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/lazy/package.json b/www/assets/framework7/components/lazy/package.json
new file mode 100644
index 000000000..4ae6d4557
--- /dev/null
+++ b/www/assets/framework7/components/lazy/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/lazy",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/lazy/lazy.js",
+ "module": "../../esm/components/lazy/lazy.js",
+ "jsnext:main": "../../esm/components/lazy/lazy.js",
+ "typings": "../../types/components/lazy/lazy.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/link/link.d.ts b/www/assets/framework7/components/link/link.d.ts
index bb32f2084..1c567a0eb 100644
--- a/www/assets/framework7/components/link/link.d.ts
+++ b/www/assets/framework7/components/link/link.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Link {
interface AppMethods {}
diff --git a/www/assets/framework7/components/link/package.json b/www/assets/framework7/components/link/package.json
new file mode 100644
index 000000000..b1d7df779
--- /dev/null
+++ b/www/assets/framework7/components/link/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/link",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/link/link.js",
+ "module": "../../esm/components/link/link.js",
+ "jsnext:main": "../../esm/components/link/link.js",
+ "typings": "../../types/components/link/link.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/list-index/list-index-rtl.css b/www/assets/framework7/components/list-index/list-index-rtl.css
index 11caaf57c..885426ade 100644
--- a/www/assets/framework7/components/list-index/list-index-rtl.css
+++ b/www/assets/framework7/components/list-index/list-index-rtl.css
@@ -1 +1 @@
-:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-text-color:#fff;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.aurora{--f7-list-index-font-size:12px;--f7-list-index-label-size:32px;--f7-list-index-label-font-size:12px;--f7-list-index-label-font-weight:600;--f7-list-index-skip-dot-size:4px}.list-index{position:absolute;top:0;bottom:0;text-align:center;z-index:10;width:var(--f7-list-index-width);cursor:pointer;-webkit-user-select:none;user-select:none;left:var(--f7-safe-area-left)}.list-index:before{content:'';position:absolute;width:20px;top:0;right:100%;height:100%}.list-index ul{color:var(--f7-list-index-text-color,var(--f7-theme-color));font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);list-style:none;margin:0;padding:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-shrink:0;height:100%;width:100%;position:relative}.list-index li{margin:0;padding:0;list-style:none;position:relative;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height);flex-shrink:0;display:block;width:100%}.list-index .list-index-skip-placeholder:after{content:'';position:absolute;left:50%;top:50%;border-radius:50%;width:var(--f7-list-index-skip-dot-size);height:var(--f7-list-index-skip-dot-size);margin-left:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);margin-top:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);background:var(--f7-list-index-text-color,var(--f7-theme-color))}.list-index .list-index-label{position:absolute;bottom:0;right:100%;text-align:center;background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));color:var(--f7-list-index-label-text-color);width:var(--f7-list-index-label-size);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-labels~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-labels~.list-index,.navbars~.toolbar-top.tabbar-labels~.list-index,.navbar~.toolbar-top.tabbar-labels~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-labels-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-labels~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.page>.list-index,.md .toolbar-bottom-md.tabbar-labels~* .page>.list-index,.md .toolbar-bottom-md.tabbar-labels~.list-index,.md .toolbar-bottom-md.tabbar-labels~.page>.list-index,.toolbar-bottom.tabbar-labels~* .page>.list-index,.toolbar-bottom.tabbar-labels~.list-index,.toolbar-bottom.tabbar-labels~.page>.list-index{bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.ios .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 0% 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}.aurora .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.aurora .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 1px 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}
\ No newline at end of file
+:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-text-color:#fff;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.aurora{--f7-list-index-font-size:12px;--f7-list-index-label-size:32px;--f7-list-index-label-font-size:12px;--f7-list-index-label-font-weight:600;--f7-list-index-skip-dot-size:4px}.list-index{position:absolute;top:0;bottom:0;text-align:center;z-index:10;width:var(--f7-list-index-width);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:var(--f7-safe-area-left)}.list-index:before{content:'';position:absolute;width:20px;top:0;right:100%;height:100%}.list-index ul{color:var(--f7-list-index-text-color,var(--f7-theme-color));font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);list-style:none;margin:0;padding:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-shrink:0;height:100%;width:100%;position:relative}.list-index li{margin:0;padding:0;list-style:none;position:relative;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height);flex-shrink:0;display:block;width:100%}.list-index .list-index-skip-placeholder:after{content:'';position:absolute;left:50%;top:50%;border-radius:50%;width:var(--f7-list-index-skip-dot-size);height:var(--f7-list-index-skip-dot-size);margin-left:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);margin-top:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);background:var(--f7-list-index-text-color,var(--f7-theme-color))}.list-index .list-index-label{position:absolute;bottom:0;right:100%;text-align:center;background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));color:var(--f7-list-index-label-text-color);width:var(--f7-list-index-label-size);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-labels~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-labels~.list-index,.navbars~.toolbar-top.tabbar-labels~.list-index,.navbar~.toolbar-top.tabbar-labels~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-labels-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-labels~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.page>.list-index,.md .toolbar-bottom-md.tabbar-labels~* .page>.list-index,.md .toolbar-bottom-md.tabbar-labels~.list-index,.md .toolbar-bottom-md.tabbar-labels~.page>.list-index,.toolbar-bottom.tabbar-labels~* .page>.list-index,.toolbar-bottom.tabbar-labels~.list-index,.toolbar-bottom.tabbar-labels~.page>.list-index{bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.ios .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 0% 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}.aurora .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.aurora .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 1px 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}
\ No newline at end of file
diff --git a/www/assets/framework7/components/list-index/list-index.css b/www/assets/framework7/components/list-index/list-index.css
index e5bfa1968..6f688eb93 100644
--- a/www/assets/framework7/components/list-index/list-index.css
+++ b/www/assets/framework7/components/list-index/list-index.css
@@ -1 +1 @@
-:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-text-color:#fff;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.aurora{--f7-list-index-font-size:12px;--f7-list-index-label-size:32px;--f7-list-index-label-font-size:12px;--f7-list-index-label-font-weight:600;--f7-list-index-skip-dot-size:4px}.list-index{position:absolute;top:0;bottom:0;text-align:center;z-index:10;width:var(--f7-list-index-width);cursor:pointer;-webkit-user-select:none;user-select:none;right:var(--f7-safe-area-right)}.list-index:before{content:'';position:absolute;width:20px;top:0;right:100%;height:100%}.list-index ul{color:var(--f7-list-index-text-color,var(--f7-theme-color));font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);list-style:none;margin:0;padding:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-shrink:0;height:100%;width:100%;position:relative}.list-index li{margin:0;padding:0;list-style:none;position:relative;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height);flex-shrink:0;display:block;width:100%}.list-index .list-index-skip-placeholder:after{content:'';position:absolute;left:50%;top:50%;border-radius:50%;width:var(--f7-list-index-skip-dot-size);height:var(--f7-list-index-skip-dot-size);margin-left:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);margin-top:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);background:var(--f7-list-index-text-color,var(--f7-theme-color))}.list-index .list-index-label{position:absolute;bottom:0;right:100%;text-align:center;background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));color:var(--f7-list-index-label-text-color);width:var(--f7-list-index-label-size);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-labels~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-labels~.list-index,.navbars~.toolbar-top.tabbar-labels~.list-index,.navbar~.toolbar-top.tabbar-labels~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-labels-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-labels~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.page>.list-index,.md .toolbar-bottom-md.tabbar-labels~* .page>.list-index,.md .toolbar-bottom-md.tabbar-labels~.list-index,.md .toolbar-bottom-md.tabbar-labels~.page>.list-index,.toolbar-bottom.tabbar-labels~* .page>.list-index,.toolbar-bottom.tabbar-labels~.list-index,.toolbar-bottom.tabbar-labels~.page>.list-index{bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.ios .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 0% 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}.aurora .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.aurora .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 1px 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}
\ No newline at end of file
+:root{--f7-list-index-width:16px;--f7-list-index-font-size:11px;--f7-list-index-font-weight:600;--f7-list-index-item-height:14px;--f7-list-index-label-text-color:#fff;--f7-list-index-label-font-weight:500}.ios{--f7-list-index-label-size:44px;--f7-list-index-label-font-size:17px;--f7-list-index-skip-dot-size:6px}.md{--f7-list-index-label-size:56px;--f7-list-index-label-font-size:20px;--f7-list-index-skip-dot-size:4px}.aurora{--f7-list-index-font-size:12px;--f7-list-index-label-size:32px;--f7-list-index-label-font-size:12px;--f7-list-index-label-font-weight:600;--f7-list-index-skip-dot-size:4px}.list-index{position:absolute;top:0;bottom:0;text-align:center;z-index:10;width:var(--f7-list-index-width);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;right:var(--f7-safe-area-right)}.list-index:before{content:'';position:absolute;width:20px;top:0;right:100%;height:100%}.list-index ul{color:var(--f7-list-index-text-color,var(--f7-theme-color));font-size:var(--f7-list-index-font-size);font-weight:var(--f7-list-index-font-weight);list-style:none;margin:0;padding:0;display:flex;flex-direction:column;justify-content:center;align-items:center;flex-shrink:0;height:100%;width:100%;position:relative}.list-index li{margin:0;padding:0;list-style:none;position:relative;height:var(--f7-list-index-item-height);line-height:var(--f7-list-index-item-height);flex-shrink:0;display:block;width:100%}.list-index .list-index-skip-placeholder:after{content:'';position:absolute;left:50%;top:50%;border-radius:50%;width:var(--f7-list-index-skip-dot-size);height:var(--f7-list-index-skip-dot-size);margin-left:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);margin-top:calc(-1 * var(--f7-list-index-skip-dot-size)/ 2);background:var(--f7-list-index-text-color,var(--f7-theme-color))}.list-index .list-index-label{position:absolute;bottom:0;right:100%;text-align:center;background-color:var(--f7-list-index-label-bg-color,var(--f7-theme-color));color:var(--f7-list-index-label-text-color);width:var(--f7-list-index-label-size);height:var(--f7-list-index-label-size);line-height:var(--f7-list-index-label-size);font-size:var(--f7-list-index-label-font-size);font-weight:var(--f7-list-index-label-font-weight)}.navbars~.page>.list-index,.navbar~.list-index,.navbar~.page>.list-index{top:var(--f7-navbar-height)}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md~.list-index,.ios .navbar~.toolbar-top-ios~.list-index,.navbars~.toolbar-top~.list-index,.navbar~.toolbar-top~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-toolbar-height))}.ios .navbars~.toolbar-top-ios .md .navbar~.toolbar-top-md.tabbar-labels~.list-index,.ios .navbar~.toolbar-top-ios.tabbar-labels~.list-index,.navbars~.toolbar-top.tabbar-labels~.list-index,.navbar~.toolbar-top.tabbar-labels~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-tabbar-labels-height))}.navbars~.subnavbar~.list-index,.navbar~.subnavbar~.list-index,.page-with-subnavbar .navbar~.list-index{top:calc(var(--f7-navbar-height) + var(--f7-subnavbar-height))}.ios .toolbar-bottom-ios~* .page>.list-index,.ios .toolbar-bottom-ios~.list-index,.ios .toolbar-bottom-ios~.page>.list-index,.md .toolbar-bottom-md~* .page>.list-index,.md .toolbar-bottom-md~.list-index,.md .toolbar-bottom-md~.page>.list-index,.toolbar-bottom~* .page>.list-index,.toolbar-bottom~.list-index,.toolbar-bottom~.page>.list-index{bottom:calc(var(--f7-toolbar-height) + var(--f7-safe-area-bottom))}.ios .toolbar-bottom-ios.tabbar-labels~* .page>.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.list-index,.ios .toolbar-bottom-ios.tabbar-labels~.page>.list-index,.md .toolbar-bottom-md.tabbar-labels~* .page>.list-index,.md .toolbar-bottom-md.tabbar-labels~.list-index,.md .toolbar-bottom-md.tabbar-labels~.page>.list-index,.toolbar-bottom.tabbar-labels~* .page>.list-index,.toolbar-bottom.tabbar-labels~.list-index,.toolbar-bottom.tabbar-labels~.page>.list-index{bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom))}.ios .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.ios .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 0% 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}.md .list-index .list-index-label{border-radius:50% 50% 0 50%}.aurora .list-index .list-index-label{margin-bottom:calc(-1 * var(--f7-list-index-label-size)/ 2);margin-right:calc(var(--f7-list-index-width) - 1px);border-radius:50%}.aurora .list-index .list-index-label:before{position:absolute;width:100%;height:100%;border-radius:50% 1px 50% 50%;content:'';background-color:inherit;left:0;top:0;transform:rotate(45deg);z-index:-1}
\ No newline at end of file
diff --git a/www/assets/framework7/components/list-index/list-index.d.ts b/www/assets/framework7/components/list-index/list-index.d.ts
index c0856fd18..1004e48ae 100644
--- a/www/assets/framework7/components/list-index/list-index.d.ts
+++ b/www/assets/framework7/components/list-index/list-index.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace ListIndex {
interface ListIndex extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/list-index/list-index.js b/www/assets/framework7/components/list-index/list-index.js
index 5a7fe1899..5828301e5 100644
--- a/www/assets/framework7/components/list-index/list-index.js
+++ b/www/assets/framework7/components/list-index/list-index.js
@@ -1,73 +1 @@
-import $ from '../../shared/dom7.js';
-import { extend } from '../../shared/utils.js';
-import ListIndex from './list-index-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-export default {
- name: 'listIndex',
- static: {
- ListIndex
- },
-
- create() {
- const app = this;
- app.listIndex = ConstructorMethods({
- defaultSelector: '.list-index',
- constructor: ListIndex,
- app,
- domProp: 'f7ListIndex'
- });
- },
-
- on: {
- tabMounted(tabEl) {
- const app = this;
- $(tabEl).find('.list-index-init').each(listIndexEl => {
- const params = extend($(listIndexEl).dataset(), {
- el: listIndexEl
- });
- app.listIndex.create(params);
- });
- },
-
- tabBeforeRemove(tabEl) {
- $(tabEl).find('.list-index-init').each(listIndexEl => {
- if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.list-index-init').each(listIndexEl => {
- const params = extend($(listIndexEl).dataset(), {
- el: listIndexEl
- });
- app.listIndex.create(params);
- });
- },
-
- pageBeforeRemove(page) {
- page.$el.find('.list-index-init').each(listIndexEl => {
- if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
- });
- }
-
- },
- vnode: {
- 'list-index-init': {
- insert(vnode) {
- const app = this;
- const listIndexEl = vnode.elm;
- const params = extend($(listIndexEl).dataset(), {
- el: listIndexEl
- });
- app.listIndex.create(params);
- },
-
- destroy(vnode) {
- const listIndexEl = vnode.elm;
- if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
- }
-
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var n=e.$,i=e.utils,r=(e.getDevice,e.getSupport),a=e.Class,o=(e.Modal,e.ConstructorMethods),s=(e.ModalMethods,i.extend),l=i.deleteProps;function c(e){this.wrapped=e}function d(e){var t,n;function i(t,n){try{var a=e[t](n),o=a.value,s=o instanceof c;Promise.resolve(s?o.wrapped:o).then((function(e){s?i("return"===t?"return":"next",e):r(a.done?"return":"normal",e)}),(function(e){i("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?i(t.key,t.arg):n=null}this._invoke=function(e,r){return new Promise((function(a,o){var s={key:e,arg:r,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,i(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}d.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},d.prototype.next=function(e){return this._invoke("next",e)},d.prototype.throw=function(e){return this._invoke("throw",e)},d.prototype.return=function(e){return this._invoke("return",e)};var f=function(e){var t,i;function a(t,i){var a;void 0===i&&(i={});var o,l,c,d,u=p(a=e.call(this,i,[t])||this),f={el:null,listEl:null,indexes:"auto",iosItemHeight:14,mdItemHeight:14,auroraItemHeight:14,scrollList:!0,label:!1,renderItem:function(e,t){return("\n - "+e+"
\n ").trim()},renderSkipPlaceholder:function(){return''},on:{}};if(u.useModulesParams(f),u.params=s(f,i),!u.params.el)return u||p(a);if((o=n(u.params.el))[0].f7ListIndex)return o[0].f7ListIndex||p(a);if(0===(d=o.find("ul")).length&&(d=n(""),o.append(d)),u.params.listEl&&(l=n(u.params.listEl)),"auto"===u.params.indexes&&!l)return u||p(a);function h(){var e={index:u};u.calcSize(),e!==u.height&&u.render()}function v(e){var t=n(e.target).closest("li");if(t.length){var i=t.index();if(u.skipRate>0){var r=i/(t.siblings("li").length-1);i=Math.round((u.indexes.length-1)*r)}var a=u.indexes[i];u.$el.trigger("listindex:click",{content:a,index:i}),u.emit("local::click listIndexClick",u,a,i),u.$el.trigger("listindex:select",{content:a,index:i}),u.emit("local::select listIndexSelect",u,a,i),u.$listEl&&u.params.scrollList&&u.scrollListToIndex(a,i)}}l?c=l.parents(".page-content").eq(0):0===(c=o.siblings(".page-content").eq(0)).length&&(c=o.parents(".page").eq(0).find(".page-content").eq(0)),o[0].f7ListIndex=u,s(u,{app:t,$el:o,el:o&&o[0],$ul:d,ul:d&&d[0],$listEl:l,listEl:l&&l[0],$pageContentEl:c,pageContentEl:c&&c[0],indexes:i.indexes,height:0,skipRate:0}),u.useModules();var g,x,m,I,y,b={},k=null;function L(e){var t=d.children();t.length&&(m=t[0].getBoundingClientRect().top,I=t[t.length-1].getBoundingClientRect().top+t[0].offsetHeight,b.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,b.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,g=!0,x=!1,k=null)}function E(e){if(g){!x&&u.params.label&&(y=n(''),o.append(y)),x=!0;var t="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY;e.preventDefault();var i=(t-m)/(I-m);i=Math.min(Math.max(i,0),1);var r=Math.round((u.indexes.length-1)*i),a=u.indexes[r],s=I-m,l=(u.height-s)/2+(1-i)*s;r!==k&&(u.params.label&&y.html(a).transform("translateY(-"+l+"px)"),u.$listEl&&u.params.scrollList&&u.scrollListToIndex(a,r)),k=r,u.$el.trigger("listindex:select"),u.emit("local::select listIndexSelect",u,a,r)}}function $(){g&&(g=!1,x=!1,u.params.label&&(y&&y.remove(),y=void 0))}var w=!!r().passiveListener&&{passive:!0};return u.attachEvents=function(){o.parents(".tab").on("tab:show",h),o.parents(".page").on("page:reinit",h),o.parents(".panel").on("panel:open",h),o.parents(".sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast").on("modal:open",h),t.on("resize",h),o.on("click",v),o.on(t.touchEvents.start,L,w),t.on("touchmove:active",E),t.on("touchend:passive",$)},u.detachEvents=function(){o.parents(".tab").off("tab:show",h),o.parents(".page").off("page:reinit",h),o.parents(".panel").off("panel:open",h),o.parents(".sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast").off("modal:open",h),t.off("resize",h),o.off("click",v),o.off(t.touchEvents.start,L,w),t.off("touchmove:active",E),t.off("touchend:passive",$)},u.init(),u||p(a)}i=e,(t=a).prototype=Object.create(i.prototype),t.prototype.constructor=t,u(t,i);var o=a.prototype;return o.scrollListToIndex=function(e,t){var i,r=this,a=r.$listEl,o=r.$pageContentEl,s=r.app;if(!a||!o||0===o.length)return r;if(a.find(".list-group-title, .item-divider").each((function(t){if(!i){var r=n(t);r.text()===e&&(i=r)}})),!i||0===i.length)return r;var l=i.parent().offset().top,c=parseInt(o.css("padding-top"),10),d=o[0].scrollTop,u=i.offset().top;if(o.parents(".page-with-navbar-large").length){var p=s.navbar.getElByPage(o.parents(".page-with-navbar-large").eq(0)),f=n(p).find(".title-large");f.length&&(c-=f[0].offsetHeight||0)}return l<=c?o.scrollTop(l+d-c):o.scrollTop(u+d-c),r},o.renderSkipPlaceholder=function(){return this.params.renderSkipPlaceholder.call(this)},o.renderItem=function(e,t){return this.params.renderItem.call(this,e,t)},o.render=function(){var e,t=this,n=t.$ul,i=t.indexes,r=t.skipRate,a=i.map((function(n,i){if(i%r!=0&&r>0)return e=!0,"";var a=t.renderItem(n,i);return e&&(a=t.renderSkipPlaceholder()+a),e=!1,a})).join("");return n.html(a),t},o.calcSize=function(){var e=this,t=e.app,n=e.params,i=e.el,r=e.indexes,a=i.offsetHeight,o=n[t.theme+"ItemHeight"],s=Math.floor(a/o),l=r.length,c=0;return l>s&&(c=Math.ceil((2*l-1)/s)),e.height=a,e.skipRate=c,e},o.calcIndexes=function(){var e=this;return"auto"===e.params.indexes?(e.indexes=[],e.$listEl.find(".list-group-title, .item-divider").each((function(t){var i=n(t).text();e.indexes.indexOf(i)<0&&e.indexes.push(i)}))):e.indexes=e.params.indexes,e},o.update=function(){var e=this;return e.calcIndexes(),e.calcSize(),e.render(),e},o.init=function(){var e=this;e.calcIndexes(),e.calcSize(),e.render(),e.attachEvents()},o.destroy=function(){var e=this;e.$el.trigger("listindex:beforedestroy",e),e.emit("local::beforeDestroy listIndexBeforeDestroy"),e.detachEvents(),e.$el[0]&&(e.$el[0].f7ListIndex=null,delete e.$el[0].f7ListIndex),l(e),e=null},a}(a),h={name:"listIndex",static:{ListIndex:f},create:function(){this.listIndex=o({defaultSelector:".list-index",constructor:f,app:this,domProp:"f7ListIndex"})},on:{tabMounted:function(e){var t=this;n(e).find(".list-index-init").each((function(e){var i=s(n(e).dataset(),{el:e});t.listIndex.create(i)}))},tabBeforeRemove:function(e){n(e).find(".list-index-init").each((function(e){e.f7ListIndex&&e.f7ListIndex.destroy()}))},pageInit:function(e){var t=this;e.$el.find(".list-index-init").each((function(e){var i=s(n(e).dataset(),{el:e});t.listIndex.create(i)}))},pageBeforeRemove:function(e){e.$el.find(".list-index-init").each((function(e){e.f7ListIndex&&e.f7ListIndex.destroy()}))}},vnode:{"list-index-init":{insert:function(e){var t=e.elm,i=s(n(t).dataset(),{el:t});this.listIndex.create(i)},destroy:function(e){var t=e.elm;t.f7ListIndex&&t.f7ListIndex.destroy()}}}};if(t){if(e.prototype.modules&&e.prototype.modules[h.name])return;e.use(h),e.instance&&(e.instance.useModuleParams(h,e.instance.params),e.instance.useModule(h))}return h}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/list-index/list-index.lazy.js b/www/assets/framework7/components/list-index/list-index.lazy.js
deleted file mode 100644
index fd84e976c..000000000
--- a/www/assets/framework7/components/list-index/list-index.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var n=e.$,s=e.utils,i=(e.getDevice,e.getSupport),l=e.Class,a=(e.Modal,e.ConstructorMethods),o=(e.ModalMethods,e.$jsx,s.extend),r=s.deleteProps;class d extends l{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const s=this,l={el:null,listEl:null,indexes:"auto",iosItemHeight:14,mdItemHeight:14,auroraItemHeight:14,scrollList:!0,label:!1,renderItem:(e,t)=>`\n - ${e}
\n `.trim(),renderSkipPlaceholder:()=>'',on:{}};let a,r,d,c;if(s.useModulesParams(l),s.params=o(l,t),!s.params.el)return s;if(a=n(s.params.el),a[0].f7ListIndex)return a[0].f7ListIndex;if(c=a.find("ul"),0===c.length&&(c=n(""),a.append(c)),s.params.listEl&&(r=n(s.params.listEl)),"auto"===s.params.indexes&&!r)return s;function p(){const e={index:s};s.calcSize(),e!==s.height&&s.render()}function h(e){const t=n(e.target).closest("li");if(!t.length)return;let i=t.index();if(s.skipRate>0){const e=i/(t.siblings("li").length-1);i=Math.round((s.indexes.length-1)*e)}const l=s.indexes[i];s.$el.trigger("listindex:click",{content:l,index:i}),s.emit("local::click listIndexClick",s,l,i),s.$el.trigger("listindex:select",{content:l,index:i}),s.emit("local::select listIndexSelect",s,l,i),s.$listEl&&s.params.scrollList&&s.scrollListToIndex(l,i)}r?d=r.parents(".page-content").eq(0):(d=a.siblings(".page-content").eq(0),0===d.length&&(d=a.parents(".page").eq(0).find(".page-content").eq(0))),a[0].f7ListIndex=s,o(s,{app:e,$el:a,el:a&&a[0],$ul:c,ul:c&&c[0],$listEl:r,listEl:r&&r[0],$pageContentEl:d,pageContentEl:d&&d[0],indexes:t.indexes,height:0,skipRate:0}),s.useModules();const u={};let f,g,x,m,I,v=null;function $(e){const t=c.children();t.length&&(x=t[0].getBoundingClientRect().top,m=t[t.length-1].getBoundingClientRect().top+t[0].offsetHeight,u.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,u.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,f=!0,g=!1,v=null)}function L(e){if(!f)return;!g&&s.params.label&&(I=n(''),a.append(I)),g=!0;const t="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY;e.preventDefault();let i=(t-x)/(m-x);i=Math.min(Math.max(i,0),1);const l=Math.round((s.indexes.length-1)*i),o=s.indexes[l],r=m-x,d=(s.height-r)/2+(1-i)*r;l!==v&&(s.params.label&&I.html(o).transform(`translateY(-${d}px)`),s.$listEl&&s.params.scrollList&&s.scrollListToIndex(o,l)),v=l,s.$el.trigger("listindex:select"),s.emit("local::select listIndexSelect",s,o,l)}function E(){f&&(f=!1,g=!1,s.params.label&&(I&&I.remove(),I=void 0))}const b=!!i().passiveListener&&{passive:!0};return s.attachEvents=function(){a.parents(".tab").on("tab:show",p),a.parents(".page").on("page:reinit",p),a.parents(".panel").on("panel:open",p),a.parents(".sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast").on("modal:open",p),e.on("resize",p),a.on("click",h),a.on(e.touchEvents.start,$,b),e.on("touchmove:active",L),e.on("touchend:passive",E)},s.detachEvents=function(){a.parents(".tab").off("tab:show",p),a.parents(".page").off("page:reinit",p),a.parents(".panel").off("panel:open",p),a.parents(".sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast").off("modal:open",p),e.off("resize",p),a.off("click",h),a.off(e.touchEvents.start,$,b),e.off("touchmove:active",L),e.off("touchend:passive",E)},s.init(),s}scrollListToIndex(e,t){const s=this,{$listEl:i,$pageContentEl:l,app:a}=s;if(!i||!l||0===l.length)return s;let o;if(i.find(".list-group-title, .item-divider").each((t=>{if(o)return;const s=n(t);s.text()===e&&(o=s)})),!o||0===o.length)return s;const r=o.parent().offset().top;let d=parseInt(l.css("padding-top"),10);const c=l[0].scrollTop,p=o.offset().top;if(l.parents(".page-with-navbar-large").length){const e=a.navbar.getElByPage(l.parents(".page-with-navbar-large").eq(0)),t=n(e).find(".title-large");t.length&&(d-=t[0].offsetHeight||0)}return r<=d?l.scrollTop(r+c-d):l.scrollTop(p+c-d),s}renderSkipPlaceholder(){return this.params.renderSkipPlaceholder.call(this)}renderItem(e,t){return this.params.renderItem.call(this,e,t)}render(){const e=this,{$ul:t,indexes:n,skipRate:s}=e;let i;const l=n.map(((t,n)=>{if(n%s!=0&&s>0)return i=!0,"";let l=e.renderItem(t,n);return i&&(l=e.renderSkipPlaceholder()+l),i=!1,l})).join("");return t.html(l),e}calcSize(){const e=this,{app:t,params:n,el:s,indexes:i}=e,l=s.offsetHeight,a=n[`${t.theme}ItemHeight`],o=Math.floor(l/a),r=i.length;let d=0;return r>o&&(d=Math.ceil((2*r-1)/o)),e.height=l,e.skipRate=d,e}calcIndexes(){const e=this;return"auto"===e.params.indexes?(e.indexes=[],e.$listEl.find(".list-group-title, .item-divider").each((t=>{const s=n(t).text();e.indexes.indexOf(s)<0&&e.indexes.push(s)}))):e.indexes=e.params.indexes,e}update(){const e=this;return e.calcIndexes(),e.calcSize(),e.render(),e}init(){const e=this;e.calcIndexes(),e.calcSize(),e.render(),e.attachEvents()}destroy(){let e=this;e.$el.trigger("listindex:beforedestroy",e),e.emit("local::beforeDestroy listIndexBeforeDestroy"),e.detachEvents(),e.$el[0]&&(e.$el[0].f7ListIndex=null,delete e.$el[0].f7ListIndex),r(e),e=null}}var c={name:"listIndex",static:{ListIndex:d},create(){this.listIndex=a({defaultSelector:".list-index",constructor:d,app:this,domProp:"f7ListIndex"})},on:{tabMounted(e){const t=this;n(e).find(".list-index-init").each((e=>{const s=o(n(e).dataset(),{el:e});t.listIndex.create(s)}))},tabBeforeRemove(e){n(e).find(".list-index-init").each((e=>{e.f7ListIndex&&e.f7ListIndex.destroy()}))},pageInit(e){const t=this;e.$el.find(".list-index-init").each((e=>{const s=o(n(e).dataset(),{el:e});t.listIndex.create(s)}))},pageBeforeRemove(e){e.$el.find(".list-index-init").each((e=>{e.f7ListIndex&&e.f7ListIndex.destroy()}))}},vnode:{"list-index-init":{insert(e){const t=e.elm,s=o(n(t).dataset(),{el:t});this.listIndex.create(s)},destroy(e){const t=e.elm;t.f7ListIndex&&t.f7ListIndex.destroy()}}}};if(t){if(e.prototype.modules&&e.prototype.modules[c.name])return;e.use(c),e.instance&&(e.instance.useModuleParams(c,e.instance.params),e.instance.useModule(c))}return c}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/list-index/package.json b/www/assets/framework7/components/list-index/package.json
new file mode 100644
index 000000000..e26df010f
--- /dev/null
+++ b/www/assets/framework7/components/list-index/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/list-index",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/list-index/list-index.js",
+ "module": "../../esm/components/list-index/list-index.js",
+ "jsnext:main": "../../esm/components/list-index/list-index.js",
+ "typings": "../../types/components/list-index/list-index.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/list/list.d.ts b/www/assets/framework7/components/list/list.d.ts
index b118fe559..ac8ac8f69 100644
--- a/www/assets/framework7/components/list/list.d.ts
+++ b/www/assets/framework7/components/list/list.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace List {
interface AppMethods {}
diff --git a/www/assets/framework7/components/list/package.json b/www/assets/framework7/components/list/package.json
new file mode 100644
index 000000000..f8dd85bc2
--- /dev/null
+++ b/www/assets/framework7/components/list/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/list",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/list/list.js",
+ "module": "../../esm/components/list/list.js",
+ "jsnext:main": "../../esm/components/list/list.js",
+ "typings": "../../types/components/list/list.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/login-screen/login-screen-class.js b/www/assets/framework7/components/login-screen/login-screen-class.js
deleted file mode 100644
index c26bb77f4..000000000
--- a/www/assets/framework7/components/login-screen/login-screen-class.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import $ from '../../shared/dom7.js';
-import { extend } from '../../shared/utils.js';
-import Modal from '../modal/modal-class.js';
-
-class LoginScreen extends Modal {
- constructor(app, params) {
- const extendedParams = extend({
- on: {}
- }, params); // Extends with open/close Modal methods;
-
- super(app, extendedParams);
- const loginScreen = this;
- loginScreen.params = extendedParams; // Find Element
-
- let $el;
-
- if (!loginScreen.params.el) {
- $el = $(loginScreen.params.content).filter(node => node.nodeType === 1).eq(0);
- } else {
- $el = $(loginScreen.params.el).eq(0);
- }
-
- if ($el && $el.length > 0 && $el[0].f7Modal) {
- return $el[0].f7Modal;
- }
-
- if ($el.length === 0) {
- return loginScreen.destroy();
- }
-
- extend(loginScreen, {
- app,
- $el,
- el: $el[0],
- type: 'loginScreen'
- });
- $el[0].f7Modal = loginScreen;
- return loginScreen;
- }
-
-}
-
-export default LoginScreen;
\ No newline at end of file
diff --git a/www/assets/framework7/components/login-screen/login-screen-rtl.css b/www/assets/framework7/components/login-screen/login-screen-rtl.css
index 6c3e926a3..c0ca9343a 100644
--- a/www/assets/framework7/components/login-screen/login-screen-rtl.css
+++ b/www/assets/framework7/components/login-screen/login-screen-rtl.css
@@ -1 +1 @@
-:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}:root .dark,:root.dark{--f7-login-screen-bg-color:#121212;--f7-login-screen-content-bg-color:#121212}.ios{--f7-login-screen-blocks-margin-vertical:25px}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-blocks-margin-vertical:24px}.aurora{--f7-login-screen-blocks-margin-vertical:16px}.login-screen{position:absolute;left:0;top:0;width:100%;height:100%;display:none;box-sizing:border-box;transition-property:transform;transform:translate3d(0,100vh,0);background:var(--f7-login-screen-bg-color);z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:.4s}.login-screen.not-animated{transition-duration:0s}.login-screen.modal-in{display:block;transform:translate3d(0,0,0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .list-button,.login-screen-page .list-button{text-align:center;color:var(--f7-login-screen-list-button-text-color,var(--f7-theme-color))}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:0 0}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{text-align:center;margin-left:auto;margin-right:auto}.login-screen-title{text-align:var(--f7-login-screen-title-text-align);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);color:var(--f7-login-screen-title-text-color);letter-spacing:var(--f7-login-screen-title-letter-spacing)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{margin-top:auto;margin-bottom:auto;height:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:transparent}
\ No newline at end of file
+:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-login-screen-bg-color:#121212;--f7-login-screen-content-bg-color:#121212}.ios{--f7-login-screen-blocks-margin-vertical:25px}.ios .theme-dark,.ios.theme-dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-blocks-margin-vertical:24px}.aurora{--f7-login-screen-blocks-margin-vertical:16px}.login-screen{position:absolute;left:0;top:0;width:100%;height:100%;display:none;box-sizing:border-box;transition-property:transform;transform:translate3d(0,100vh,0);background:var(--f7-login-screen-bg-color);z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:.4s}.login-screen.not-animated{transition-duration:0s}.login-screen.modal-in{display:block;transform:translate3d(0,0,0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .list-button,.login-screen-page .list-button{text-align:center;color:var(--f7-login-screen-list-button-text-color,var(--f7-theme-color))}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:0 0}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{text-align:center;margin-left:auto;margin-right:auto}.login-screen-title{text-align:var(--f7-login-screen-title-text-align);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);color:var(--f7-login-screen-title-text-color);letter-spacing:var(--f7-login-screen-title-letter-spacing)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{margin-top:auto;margin-bottom:auto;height:auto;max-height:100%;width:100%}.theme-dark .login-screen-content .block-strong,.theme-dark .login-screen-content .list ul,.theme-dark .login-screen-page .block-strong,.theme-dark .login-screen-page .list ul,.theme-dark.login-screen-page .block-strong,.theme-dark.login-screen-page .list ul{background-color:transparent}
\ No newline at end of file
diff --git a/www/assets/framework7/components/login-screen/login-screen.css b/www/assets/framework7/components/login-screen/login-screen.css
index 6c3e926a3..c0ca9343a 100644
--- a/www/assets/framework7/components/login-screen/login-screen.css
+++ b/www/assets/framework7/components/login-screen/login-screen.css
@@ -1 +1 @@
-:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}:root .dark,:root.dark{--f7-login-screen-bg-color:#121212;--f7-login-screen-content-bg-color:#121212}.ios{--f7-login-screen-blocks-margin-vertical:25px}.ios .dark,.ios.dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-blocks-margin-vertical:24px}.aurora{--f7-login-screen-blocks-margin-vertical:16px}.login-screen{position:absolute;left:0;top:0;width:100%;height:100%;display:none;box-sizing:border-box;transition-property:transform;transform:translate3d(0,100vh,0);background:var(--f7-login-screen-bg-color);z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:.4s}.login-screen.not-animated{transition-duration:0s}.login-screen.modal-in{display:block;transform:translate3d(0,0,0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .list-button,.login-screen-page .list-button{text-align:center;color:var(--f7-login-screen-list-button-text-color,var(--f7-theme-color))}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:0 0}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{text-align:center;margin-left:auto;margin-right:auto}.login-screen-title{text-align:var(--f7-login-screen-title-text-align);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);color:var(--f7-login-screen-title-text-color);letter-spacing:var(--f7-login-screen-title-letter-spacing)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{margin-top:auto;margin-bottom:auto;height:auto;max-height:100%;width:100%}.dark .login-screen-content .block-strong,.dark .login-screen-content .list ul,.dark .login-screen-page .block-strong,.dark .login-screen-page .list ul,.dark.login-screen-page .block-strong,.dark.login-screen-page .list ul{background-color:transparent}
\ No newline at end of file
+:root{--f7-login-screen-blocks-max-width:480px;--f7-login-screen-title-text-align:center;--f7-login-screen-title-text-color:inherit;--f7-login-screen-title-letter-spacing:0;--f7-login-screen-title-font-weight:600;--f7-login-screen-title-font-size:28px;--f7-login-screen-content-bg-color:#fff;--f7-login-screen-bg-color:#fff}:root .theme-dark,:root.theme-dark{--f7-login-screen-bg-color:#121212;--f7-login-screen-content-bg-color:#121212}.ios{--f7-login-screen-blocks-margin-vertical:25px}.ios .theme-dark,.ios.theme-dark{--f7-login-screen-bg-color:#000;--f7-login-screen-content-bg-color:#000}.md{--f7-login-screen-blocks-margin-vertical:24px}.aurora{--f7-login-screen-blocks-margin-vertical:16px}.login-screen{position:absolute;left:0;top:0;width:100%;height:100%;display:none;box-sizing:border-box;transition-property:transform;transform:translate3d(0,100vh,0);background:var(--f7-login-screen-bg-color);z-index:11000}.login-screen.modal-in,.login-screen.modal-out{transition-duration:.4s}.login-screen.not-animated{transition-duration:0s}.login-screen.modal-in{display:block;transform:translate3d(0,0,0)}.login-screen.modal-out{transform:translate3d(0,100%,0)}.login-screen .page,.login-screen-content,.login-screen-page{background:var(--f7-login-screen-content-bg-color)}.login-screen-content .list-button,.login-screen-page .list-button{text-align:center;color:var(--f7-login-screen-list-button-text-color,var(--f7-theme-color))}.login-screen-content .block,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .list,.login-screen-page .login-screen-title{margin:var(--f7-login-screen-blocks-margin-vertical) auto}.login-screen-content .block,.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-content .list,.login-screen-content .login-screen-title,.login-screen-page .block,.login-screen-page .block-footer,.login-screen-page .block-header,.login-screen-page .list,.login-screen-page .login-screen-title{max-width:var(--f7-login-screen-blocks-max-width)}.login-screen-content .list ul,.login-screen-page .list ul{background:0 0}.login-screen-content .list ul:after,.login-screen-content .list ul:before,.login-screen-page .list ul:after,.login-screen-page .list ul:before{display:none!important}.login-screen-content .block-footer,.login-screen-content .block-header,.login-screen-page .block-footer,.login-screen-page .block-header{text-align:center;margin-left:auto;margin-right:auto}.login-screen-title{text-align:var(--f7-login-screen-title-text-align);font-size:var(--f7-login-screen-title-font-size);font-weight:var(--f7-login-screen-title-font-weight);color:var(--f7-login-screen-title-text-color);letter-spacing:var(--f7-login-screen-title-letter-spacing)}.login-screen-page,.login-screen>.page,.login-screen>.view>.page{display:flex;flex-direction:column}.login-screen-page .login-screen-content,.login-screen-page .page-content,.login-screen>.page .login-screen-content,.login-screen>.page .page-content,.login-screen>.view>.page .login-screen-content,.login-screen>.view>.page .page-content{margin-top:auto;margin-bottom:auto;height:auto;max-height:100%;width:100%}.theme-dark .login-screen-content .block-strong,.theme-dark .login-screen-content .list ul,.theme-dark .login-screen-page .block-strong,.theme-dark .login-screen-page .list ul,.theme-dark.login-screen-page .block-strong,.theme-dark.login-screen-page .list ul{background-color:transparent}
\ No newline at end of file
diff --git a/www/assets/framework7/components/login-screen/login-screen.d.ts b/www/assets/framework7/components/login-screen/login-screen.d.ts
index 83fd8ffea..caf66adad 100644
--- a/www/assets/framework7/components/login-screen/login-screen.d.ts
+++ b/www/assets/framework7/components/login-screen/login-screen.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace LoginScreen {
interface LoginScreen extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/login-screen/login-screen.js b/www/assets/framework7/components/login-screen/login-screen.js
index b1876e980..166ae3ec5 100644
--- a/www/assets/framework7/components/login-screen/login-screen.js
+++ b/www/assets/framework7/components/login-screen/login-screen.js
@@ -1,36 +1 @@
-import LoginScreen from './login-screen-class.js';
-import ModalMethods from '../../shared/modal-methods.js';
-export default {
- name: 'loginScreen',
- static: {
- LoginScreen
- },
-
- create() {
- const app = this;
- app.loginScreen = ModalMethods({
- app,
- constructor: LoginScreen,
- defaultSelector: '.login-screen.modal-in'
- });
- },
-
- clicks: {
- '.login-screen-open': function openLoginScreen($clickedEl, data) {
- if (data === void 0) {
- data = {};
- }
-
- const app = this;
- app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);
- },
- '.login-screen-close': function closeLoginScreen($clickedEl, data) {
- if (data === void 0) {
- data = {};
- }
-
- const app = this;
- app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,n){void 0===n&&(n=!0);var t=e.$,r=e.utils,o=(e.getDevice,e.getSupport,e.Class,e.Modal),i=(e.ConstructorMethods,e.ModalMethods);function c(e){this.wrapped=e}function a(e){var n,t;function r(n,t){try{var i=e[n](t),a=i.value,u=a instanceof c;Promise.resolve(u?a.wrapped:a).then((function(e){u?r("return"===n?"return":"next",e):o(i.done?"return":"normal",e)}),(function(e){r("throw",e)}))}catch(e){o("throw",e)}}function o(e,o){switch(e){case"return":n.resolve({value:o,done:!0});break;case"throw":n.reject(o);break;default:n.resolve({value:o,done:!1})}(n=n.next)?r(n.key,n.arg):t=null}this._invoke=function(e,o){return new Promise((function(i,c){var a={key:e,arg:o,resolve:i,reject:c,next:null};t?t=t.next=a:(n=t=a,r(e,o))}))},"function"!=typeof e.return&&(this.return=void 0)}function u(e,n){return(u=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e})(e,n)}function s(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}a.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},a.prototype.next=function(e){return this._invoke("next",e)},a.prototype.throw=function(e){return this._invoke("throw",e)},a.prototype.return=function(e){return this._invoke("return",e)};var l=r.extend,p=function(e){var n,r;function o(n,r){var o,i,c=l({on:{}},r),a=s(o=e.call(this,n,c)||this);return a.params=c,(i=a.params.el?t(a.params.el).eq(0):t(a.params.content).filter((function(e){return 1===e.nodeType})).eq(0))&&i.length>0&&i[0].f7Modal?i[0].f7Modal||s(o):0===i.length?a.destroy()||s(o):(l(a,{app:n,$el:i,el:i[0],type:"loginScreen"}),i[0].f7Modal=a,a||s(o))}return r=e,(n=o).prototype=Object.create(r.prototype),n.prototype.constructor=n,u(n,r),o}(o),f={name:"loginScreen",static:{LoginScreen:p},create:function(){this.loginScreen=i({app:this,constructor:p,defaultSelector:".login-screen.modal-in"})},clicks:{".login-screen-open":function(e,n){void 0===n&&(n={});this.loginScreen.open(n.loginScreen,n.animate,e)},".login-screen-close":function(e,n){void 0===n&&(n={});this.loginScreen.close(n.loginScreen,n.animate,e)}}};if(n){if(e.prototype.modules&&e.prototype.modules[f.name])return;e.use(f),e.instance&&(e.instance.useModuleParams(f,e.instance.params),e.instance.useModule(f))}return f}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/login-screen/login-screen.lazy.js b/www/assets/framework7/components/login-screen/login-screen.lazy.js
deleted file mode 100644
index b81caa079..000000000
--- a/www/assets/framework7/components/login-screen/login-screen.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,n){void 0===n&&(n=!0);var o=e.$,t=e.utils,s=(e.getDevice,e.getSupport,e.Class,e.Modal),r=(e.ConstructorMethods,e.ModalMethods),a=(e.$jsx,t.extend);class i extends s{constructor(e,n){const t=a({on:{}},n);super(e,t);const s=this;let r;return s.params=t,r=s.params.el?o(s.params.el).eq(0):o(s.params.content).filter((e=>1===e.nodeType)).eq(0),r&&r.length>0&&r[0].f7Modal?r[0].f7Modal:0===r.length?s.destroy():(a(s,{app:e,$el:r,el:r[0],type:"loginScreen"}),r[0].f7Modal=s,s)}}var l={name:"loginScreen",static:{LoginScreen:i},create(){this.loginScreen=r({app:this,constructor:i,defaultSelector:".login-screen.modal-in"})},clicks:{".login-screen-open":function(e,n){void 0===n&&(n={});this.loginScreen.open(n.loginScreen,n.animate,e)},".login-screen-close":function(e,n){void 0===n&&(n={});this.loginScreen.close(n.loginScreen,n.animate,e)}}};if(n){if(e.prototype.modules&&e.prototype.modules[l.name])return;e.use(l),e.instance&&(e.instance.useModuleParams(l,e.instance.params),e.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/login-screen/login-screen.less b/www/assets/framework7/components/login-screen/login-screen.less
index d9f71459c..6460590dd 100644
--- a/www/assets/framework7/components/login-screen/login-screen.less
+++ b/www/assets/framework7/components/login-screen/login-screen.less
@@ -84,7 +84,7 @@
}
}
-.dark {
+.theme-dark {
.login-screen-content .list ul,
.login-screen-content .block-strong,
.login-screen-page .list ul,
diff --git a/www/assets/framework7/components/login-screen/package.json b/www/assets/framework7/components/login-screen/package.json
new file mode 100644
index 000000000..e22f4e8b8
--- /dev/null
+++ b/www/assets/framework7/components/login-screen/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/login-screen",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/login-screen/login-screen.js",
+ "module": "../../esm/components/login-screen/login-screen.js",
+ "jsnext:main": "../../esm/components/login-screen/login-screen.js",
+ "typings": "../../types/components/login-screen/login-screen.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/menu/menu.d.ts b/www/assets/framework7/components/menu/menu.d.ts
index 75d49fc41..c0764e2f8 100644
--- a/www/assets/framework7/components/menu/menu.d.ts
+++ b/www/assets/framework7/components/menu/menu.d.ts
@@ -1,8 +1,4 @@
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Menu {
interface DomEvents {
diff --git a/www/assets/framework7/components/menu/menu.js b/www/assets/framework7/components/menu/menu.js
index 7ba6212f9..4b468ba56 100644
--- a/www/assets/framework7/components/menu/menu.js
+++ b/www/assets/framework7/components/menu/menu.js
@@ -1,87 +1 @@
-import $ from '../../shared/dom7.js';
-import { bindMethods } from '../../shared/utils.js';
-const Menu = {
- open(el) {
- if (el === void 0) {
- el = '.menu-item-dropdown';
- }
-
- const app = this;
- if (!el) return;
- const $el = $(el).closest('.menu-item-dropdown');
- if (!$el.length) return;
- const $menuEl = $el.closest('.menu').eq(0);
-
- if ($menuEl.length) {
- const zIndex = $menuEl.css('z-index');
- const originalZIndex = $menuEl[0].style.zIndex;
- $menuEl.css('z-index', parseInt(zIndex || 0, 10) + 1);
- $menuEl[0].f7MenuZIndex = originalZIndex;
- }
-
- $el.eq(0).addClass('menu-item-dropdown-opened').trigger('menu:opened');
- app.emit('menuOpened', $el.eq(0)[0]);
- },
-
- close(el) {
- if (el === void 0) {
- el = '.menu-item-dropdown-opened';
- }
-
- const app = this;
- if (!el) return;
- const $el = $(el).closest('.menu-item-dropdown-opened');
- if (!$el.length) return;
- const $menuEl = $el.closest('.menu').eq(0);
-
- if ($menuEl.length) {
- const zIndex = $menuEl[0].f7MenuZIndex;
- $menuEl.css('z-index', zIndex);
- delete $menuEl[0].f7MenuZIndex;
- }
-
- $el.eq(0).removeClass('menu-item-dropdown-opened').trigger('menu:closed');
- app.emit('menuClosed', $el.eq(0)[0]);
- }
-
-};
-export default {
- name: 'menu',
-
- create() {
- const app = this;
- bindMethods(app, {
- menu: Menu
- });
- },
-
- on: {
- click(e) {
- const app = this;
- const openedMenus = $('.menu-item-dropdown-opened');
- if (!openedMenus.length) return;
- openedMenus.each(el => {
- if (!$(e.target).closest('.menu-item-dropdown-opened').length) {
- app.menu.close(el);
- }
- });
- }
-
- },
- clicks: {
- '.menu-item-dropdown': function onClick($clickedEl, dataset, e) {
- const app = this;
-
- if ($clickedEl.hasClass('menu-item-dropdown-opened')) {
- if ($(e.target).closest('.menu-dropdown').length) return;
- app.menu.close($clickedEl);
- } else {
- app.menu.open($clickedEl);
- }
- },
- '.menu-close': function onClick() {
- const app = this;
- app.menu.close();
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,n){void 0===n&&(n=!0);var o=e.$,t=e.utils,s=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,t.bindMethods),d={open:function(e){void 0===e&&(e=".menu-item-dropdown");if(e){var n=o(e).closest(".menu-item-dropdown");if(n.length){var t=n.closest(".menu").eq(0);if(t.length){var s=t.css("z-index"),d=t[0].style.zIndex;t.css("z-index",parseInt(s||0,10)+1),t[0].f7MenuZIndex=d}n.eq(0).addClass("menu-item-dropdown-opened").trigger("menu:opened"),this.emit("menuOpened",n.eq(0)[0])}}},close:function(e){void 0===e&&(e=".menu-item-dropdown-opened");if(e){var n=o(e).closest(".menu-item-dropdown-opened");if(n.length){var t=n.closest(".menu").eq(0);if(t.length){var s=t[0].f7MenuZIndex;t.css("z-index",s),delete t[0].f7MenuZIndex}n.eq(0).removeClass("menu-item-dropdown-opened").trigger("menu:closed"),this.emit("menuClosed",n.eq(0)[0])}}}},i={name:"menu",create:function(){s(this,{menu:d})},on:{click:function(e){var n=this,t=o(".menu-item-dropdown-opened");t.length&&t.each((function(t){o(e.target).closest(".menu-item-dropdown-opened").length||n.menu.close(t)}))}},clicks:{".menu-item-dropdown":function(e,n,t){if(e.hasClass("menu-item-dropdown-opened")){if(o(t.target).closest(".menu-dropdown").length)return;this.menu.close(e)}else this.menu.open(e)},".menu-close":function(){this.menu.close()}}};if(n){if(e.prototype.modules&&e.prototype.modules[i.name])return;e.use(i),e.instance&&(e.instance.useModuleParams(i,e.instance.params),e.instance.useModule(i))}return i}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/menu/menu.lazy.js b/www/assets/framework7/components/menu/menu.lazy.js
deleted file mode 100644
index a84485ff8..000000000
--- a/www/assets/framework7/components/menu/menu.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,n){void 0===n&&(n=!0);var o=e.$,t=e.utils,s=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,t.bindMethods);const d={open(e){void 0===e&&(e=".menu-item-dropdown");if(!e)return;const n=o(e).closest(".menu-item-dropdown");if(!n.length)return;const t=n.closest(".menu").eq(0);if(t.length){const e=t.css("z-index"),n=t[0].style.zIndex;t.css("z-index",parseInt(e||0,10)+1),t[0].f7MenuZIndex=n}n.eq(0).addClass("menu-item-dropdown-opened").trigger("menu:opened"),this.emit("menuOpened",n.eq(0)[0])},close(e){void 0===e&&(e=".menu-item-dropdown-opened");if(!e)return;const n=o(e).closest(".menu-item-dropdown-opened");if(!n.length)return;const t=n.closest(".menu").eq(0);if(t.length){const e=t[0].f7MenuZIndex;t.css("z-index",e),delete t[0].f7MenuZIndex}n.eq(0).removeClass("menu-item-dropdown-opened").trigger("menu:closed"),this.emit("menuClosed",n.eq(0)[0])}};var i={name:"menu",create(){s(this,{menu:d})},on:{click(e){const n=this,t=o(".menu-item-dropdown-opened");t.length&&t.each((t=>{o(e.target).closest(".menu-item-dropdown-opened").length||n.menu.close(t)}))}},clicks:{".menu-item-dropdown":function(e,n,t){const s=this;if(e.hasClass("menu-item-dropdown-opened")){if(o(t.target).closest(".menu-dropdown").length)return;s.menu.close(e)}else s.menu.open(e)},".menu-close":function(){this.menu.close()}}};if(n){if(e.prototype.modules&&e.prototype.modules[i.name])return;e.use(i),e.instance&&(e.instance.useModuleParams(i,e.instance.params),e.instance.useModule(i))}return i}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/menu/package.json b/www/assets/framework7/components/menu/package.json
new file mode 100644
index 000000000..cc390a6e4
--- /dev/null
+++ b/www/assets/framework7/components/menu/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/menu",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/menu/menu.js",
+ "module": "../../esm/components/menu/menu.js",
+ "jsnext:main": "../../esm/components/menu/menu.js",
+ "typings": "../../types/components/menu/menu.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/messagebar/messagebar-rtl.css b/www/assets/framework7/components/messagebar/messagebar-rtl.css
index 2b03a8d1d..462776253 100644
--- a/www/assets/framework7/components/messagebar/messagebar-rtl.css
+++ b/www/assets/framework7/components/messagebar/messagebar-rtl.css
@@ -1 +1 @@
-:root{--f7-messagebar-shadow-image:none;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-attachments-height:155px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}:root .dark,:root.dark{--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.ios .dark,.ios.dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.md{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:0px;--f7-messagebar-textarea-padding:5px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:4px;--f7-messagebar-link-color:#333;--f7-messagebar-border-color:#d1d1d1;--f7-messagebar-textarea-text-color:#333;--f7-messagebar-attachments-border-color:#ddd}.md .dark,.md.dark{--f7-messagebar-border-color:transparent;--f7-messagebar-link-color:rgba(255, 255, 255, 0.87);--f7-messagebar-textarea-text-color:rgba(255, 255, 255, 0.87);--f7-messagebar-attachments-border-color:rgba(255, 255, 255, 0.2)}.aurora{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:8px;--f7-messagebar-textarea-padding:4px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:8px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.aurora .dark,.aurora.dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.messagebar{transform:translate3d(0,0,0);background:var(--f7-messagebar-bg-color);height:auto;min-height:var(--f7-messagebar-height);font-size:var(--f7-messagebar-font-size);padding-bottom:var(--f7-safe-area-bottom);bottom:0}.messagebar:before{content:'';position:absolute;background-color:var(--f7-messagebar-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.messagebar:after{content:'';position:absolute;right:0;width:100%;bottom:100%;height:8px;top:auto;pointer-events:none;background:var(--f7-messagebar-shadow-image);transform:translate3d(0,0,0)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity));-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.messagebar.no-border:before,.messagebar.no-hairline:before{display:none!important}.messagebar.no-shadow:after,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{top:auto;position:relative;height:auto;bottom:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left,var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right,var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));flex-direction:row-reverse}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{width:100%;flex-shrink:1;overflow:hidden;position:relative}.messagebar textarea{width:100%;flex-shrink:1;background-color:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius);padding:var(--f7-messagebar-textarea-padding);height:var(--f7-messagebar-textarea-height);color:var(--f7-messagebar-textarea-text-color);font-size:var(--f7-messagebar-textarea-font-size);line-height:var(--f7-messagebar-textarea-line-height);border:var(--f7-messagebar-textarea-border)}.messagebar a.link{align-self:flex-end;flex-shrink:0;color:var(--f7-messagebar-link-color,var(--f7-theme-color))}.messagebar-attachments{width:100%;overflow:auto;-webkit-overflow-scrolling:touch;font-size:0;white-space:nowrap;box-sizing:border-box;position:relative}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-size:cover;background-position:center;background-repeat:no-repeat;display:inline-block;vertical-align:middle;white-space:normal;height:var(--f7-messagebar-attachment-height);position:relative;border-radius:var(--f7-messagebar-attachment-border-radius)}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{display:block;width:auto;height:100%;border-radius:var(--f7-messagebar-attachment-border-radius)}.messagebar-attachment+.messagebar-attachment{margin-right:8px}.messagebar-sheet{overflow:auto;-webkit-overflow-scrolling:touch;display:flex;flex-wrap:wrap;flex-direction:column;align-content:flex-start;height:var(--f7-messagebar-sheet-height);background-color:var(--f7-messagebar-sheet-bg-color);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image,.messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;margin-top:1px;position:relative;overflow:hidden;height:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);width:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);margin-right:1px}@media (orientation:landscape){.messagebar-sheet-image,.messagebar-sheet-item{width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2);height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2)}}.messagebar-sheet-image .icon-checkbox,.messagebar-sheet-image .icon-radio,.messagebar-sheet-item .icon-checkbox,.messagebar-sheet-item .icon-radio{position:absolute;right:8px;bottom:8px}.messagebar-sheet-image{background-size:cover;background-position:center;background-repeat:no-repeat}.messagebar-attachment-delete{display:block;position:absolute;border-radius:50%;box-sizing:border-box;cursor:pointer;box-shadow:0px 0px 2px rgba(0,0,0,.2)}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{position:absolute;content:'';left:50%;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only){margin-left:8px}.ios .messagebar-area{margin-top:5px;margin-bottom:5px}.ios .messagebar-attachments{padding:5px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment-delete{right:5px;top:5px;width:20px;height:20px;background:#7d7e80;border:2px solid #fff}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{width:10px;height:2px;background:#fff;margin-left:-5px;margin-top:-1px}.md .messagebar-attachments{padding:8px;border-bottom:1px solid var(--f7-messagebar-attachments-border-color)}.md .messagebar-area{margin-top:8px;margin-bottom:8px}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.md .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color);border-radius:4px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}.aurora .messagebar a.link+.messagebar-area{margin-left:8px}.aurora .messagebar .messagebar-area+a.link{margin-left:8px}.aurora .messagebar-area{margin-top:8px;margin-bottom:8px}.aurora .messagebar-sheet-image .icon-checkbox,.aurora .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.aurora .messagebar-attachments{padding:8px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.aurora .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.aurora .messagebar-attachment{font-size:14px}.aurora .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color)}.aurora .messagebar-attachment-delete:after,.aurora .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}
\ No newline at end of file
+:root{--f7-messagebar-shadow-image:none;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-attachments-height:155px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}:root .theme-dark,:root.theme-dark{--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.ios .theme-dark,.ios.theme-dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.md{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:0px;--f7-messagebar-textarea-padding:5px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:4px;--f7-messagebar-link-color:#333;--f7-messagebar-border-color:#d1d1d1;--f7-messagebar-textarea-text-color:#333;--f7-messagebar-attachments-border-color:#ddd}.md .theme-dark,.md.theme-dark{--f7-messagebar-border-color:transparent;--f7-messagebar-link-color:rgba(255, 255, 255, 0.87);--f7-messagebar-textarea-text-color:rgba(255, 255, 255, 0.87);--f7-messagebar-attachments-border-color:rgba(255, 255, 255, 0.2)}.aurora{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:8px;--f7-messagebar-textarea-padding:4px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:8px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.aurora .theme-dark,.aurora.theme-dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.messagebar{transform:translate3d(0,0,0);background:var(--f7-messagebar-bg-color);height:auto;min-height:var(--f7-messagebar-height);font-size:var(--f7-messagebar-font-size);padding-bottom:var(--f7-safe-area-bottom);bottom:0}.messagebar:before{content:'';position:absolute;background-color:var(--f7-messagebar-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.messagebar:after{content:'';position:absolute;right:0;width:100%;bottom:100%;height:8px;top:auto;pointer-events:none;background:var(--f7-messagebar-shadow-image);transform:translate3d(0,0,0)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity));-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.messagebar.no-border:before,.messagebar.no-hairline:before{display:none!important}.messagebar.no-shadow:after,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{top:auto;position:relative;height:auto;bottom:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left,var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right,var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right));flex-direction:row-reverse}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{width:100%;flex-shrink:1;overflow:hidden;position:relative}.messagebar textarea{width:100%;flex-shrink:1;background-color:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius);padding:var(--f7-messagebar-textarea-padding);height:var(--f7-messagebar-textarea-height);color:var(--f7-messagebar-textarea-text-color);font-size:var(--f7-messagebar-textarea-font-size);line-height:var(--f7-messagebar-textarea-line-height);border:var(--f7-messagebar-textarea-border)}.messagebar a.link{align-self:flex-end;flex-shrink:0;color:var(--f7-messagebar-link-color,var(--f7-theme-color))}.messagebar-attachments{width:100%;overflow:auto;-webkit-overflow-scrolling:touch;font-size:0;white-space:nowrap;box-sizing:border-box;position:relative}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-size:cover;background-position:center;background-repeat:no-repeat;display:inline-block;vertical-align:middle;white-space:normal;height:var(--f7-messagebar-attachment-height);position:relative;border-radius:var(--f7-messagebar-attachment-border-radius)}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{display:block;width:auto;height:100%;border-radius:var(--f7-messagebar-attachment-border-radius)}.messagebar-attachment+.messagebar-attachment{margin-right:8px}.messagebar-sheet{overflow:auto;-webkit-overflow-scrolling:touch;display:flex;flex-wrap:wrap;flex-direction:column;align-content:flex-start;height:var(--f7-messagebar-sheet-height);background-color:var(--f7-messagebar-sheet-bg-color);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image,.messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;margin-top:1px;position:relative;overflow:hidden;height:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);width:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);margin-right:1px}@media (orientation:landscape){.messagebar-sheet-image,.messagebar-sheet-item{width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2);height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2)}}.messagebar-sheet-image .icon-checkbox,.messagebar-sheet-image .icon-radio,.messagebar-sheet-item .icon-checkbox,.messagebar-sheet-item .icon-radio{position:absolute;right:8px;bottom:8px}.messagebar-sheet-image{background-size:cover;background-position:center;background-repeat:no-repeat}.messagebar-attachment-delete{display:block;position:absolute;border-radius:50%;box-sizing:border-box;cursor:pointer;box-shadow:0px 0px 2px rgba(0,0,0,.2)}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{position:absolute;content:'';left:50%;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only){margin-left:8px}.ios .messagebar-area{margin-top:5px;margin-bottom:5px}.ios .messagebar-attachments{padding:5px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment-delete{right:5px;top:5px;width:20px;height:20px;background:#7d7e80;border:2px solid #fff}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{width:10px;height:2px;background:#fff;margin-left:-5px;margin-top:-1px}.md .messagebar-attachments{padding:8px;border-bottom:1px solid var(--f7-messagebar-attachments-border-color)}.md .messagebar-area{margin-top:8px;margin-bottom:8px}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.md .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color);border-radius:4px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}.aurora .messagebar a.link+.messagebar-area{margin-left:8px}.aurora .messagebar .messagebar-area+a.link{margin-left:8px}.aurora .messagebar-area{margin-top:8px;margin-bottom:8px}.aurora .messagebar-sheet-image .icon-checkbox,.aurora .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.aurora .messagebar-attachments{padding:8px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.aurora .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.aurora .messagebar-attachment{font-size:14px}.aurora .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color)}.aurora .messagebar-attachment-delete:after,.aurora .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/messagebar/messagebar.css b/www/assets/framework7/components/messagebar/messagebar.css
index ffedb2666..df8ba9b1f 100644
--- a/www/assets/framework7/components/messagebar/messagebar.css
+++ b/www/assets/framework7/components/messagebar/messagebar.css
@@ -1 +1 @@
-:root{--f7-messagebar-shadow-image:none;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-attachments-height:155px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}:root .dark,:root.dark{--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.ios .dark,.ios.dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.md{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:0px;--f7-messagebar-textarea-padding:5px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:4px;--f7-messagebar-link-color:#333;--f7-messagebar-border-color:#d1d1d1;--f7-messagebar-textarea-text-color:#333;--f7-messagebar-attachments-border-color:#ddd}.md .dark,.md.dark{--f7-messagebar-border-color:transparent;--f7-messagebar-link-color:rgba(255, 255, 255, 0.87);--f7-messagebar-textarea-text-color:rgba(255, 255, 255, 0.87);--f7-messagebar-attachments-border-color:rgba(255, 255, 255, 0.2)}.aurora{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:8px;--f7-messagebar-textarea-padding:4px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:8px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.aurora .dark,.aurora.dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.messagebar{transform:translate3d(0,0,0);background:var(--f7-messagebar-bg-color);height:auto;min-height:var(--f7-messagebar-height);font-size:var(--f7-messagebar-font-size);padding-bottom:var(--f7-safe-area-bottom);bottom:0}.messagebar:before{content:'';position:absolute;background-color:var(--f7-messagebar-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.messagebar:after{content:'';position:absolute;right:0;width:100%;bottom:100%;height:8px;top:auto;pointer-events:none;background:var(--f7-messagebar-shadow-image);transform:translate3d(0,0,0)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity));-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.messagebar.no-border:before,.messagebar.no-hairline:before{display:none!important}.messagebar.no-shadow:after,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{top:auto;position:relative;height:auto;bottom:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left,var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right,var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right))}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{width:100%;flex-shrink:1;overflow:hidden;position:relative}.messagebar textarea{width:100%;flex-shrink:1;background-color:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius);padding:var(--f7-messagebar-textarea-padding);height:var(--f7-messagebar-textarea-height);color:var(--f7-messagebar-textarea-text-color);font-size:var(--f7-messagebar-textarea-font-size);line-height:var(--f7-messagebar-textarea-line-height);border:var(--f7-messagebar-textarea-border)}.messagebar a.link{align-self:flex-end;flex-shrink:0;color:var(--f7-messagebar-link-color,var(--f7-theme-color))}.messagebar-attachments{width:100%;overflow:auto;-webkit-overflow-scrolling:touch;font-size:0;white-space:nowrap;box-sizing:border-box;position:relative}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-size:cover;background-position:center;background-repeat:no-repeat;display:inline-block;vertical-align:middle;white-space:normal;height:var(--f7-messagebar-attachment-height);position:relative;border-radius:var(--f7-messagebar-attachment-border-radius)}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{display:block;width:auto;height:100%;border-radius:var(--f7-messagebar-attachment-border-radius)}.messagebar-attachment+.messagebar-attachment{margin-left:8px}.messagebar-sheet{overflow:auto;-webkit-overflow-scrolling:touch;display:flex;flex-wrap:wrap;flex-direction:column;align-content:flex-start;height:var(--f7-messagebar-sheet-height);background-color:var(--f7-messagebar-sheet-bg-color);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image,.messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;margin-top:1px;position:relative;overflow:hidden;height:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);width:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);margin-left:1px}@media (orientation:landscape){.messagebar-sheet-image,.messagebar-sheet-item{width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2);height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2)}}.messagebar-sheet-image .icon-checkbox,.messagebar-sheet-image .icon-radio,.messagebar-sheet-item .icon-checkbox,.messagebar-sheet-item .icon-radio{position:absolute;right:8px;bottom:8px}.messagebar-sheet-image{background-size:cover;background-position:center;background-repeat:no-repeat}.messagebar-attachment-delete{display:block;position:absolute;border-radius:50%;box-sizing:border-box;cursor:pointer;box-shadow:0px 0px 2px rgba(0,0,0,.2)}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{position:absolute;content:'';left:50%;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only){margin-left:8px}.ios .messagebar-area{margin-top:5px;margin-bottom:5px}.ios .messagebar-attachments{padding:5px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment-delete{right:5px;top:5px;width:20px;height:20px;background:#7d7e80;border:2px solid #fff}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{width:10px;height:2px;background:#fff;margin-left:-5px;margin-top:-1px}.md .messagebar-attachments{padding:8px;border-bottom:1px solid var(--f7-messagebar-attachments-border-color)}.md .messagebar-area{margin-top:8px;margin-bottom:8px}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.md .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color);border-radius:4px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}.aurora .messagebar a.link+.messagebar-area{margin-left:8px}.aurora .messagebar .messagebar-area+a.link{margin-left:8px}.aurora .messagebar-area{margin-top:8px;margin-bottom:8px}.aurora .messagebar-sheet-image .icon-checkbox,.aurora .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.aurora .messagebar-attachments{padding:8px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.aurora .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.aurora .messagebar-attachment{font-size:14px}.aurora .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color)}.aurora .messagebar-attachment-delete:after,.aurora .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}
\ No newline at end of file
+:root{--f7-messagebar-shadow-image:none;--f7-messagebar-textarea-bg-color:transparent;--f7-messagebar-attachments-height:155px;--f7-messagebar-attachment-height:155px;--f7-messagebar-attachment-landscape-height:120px;--f7-messagebar-sheet-height:252px;--f7-messagebar-sheet-landscape-height:192px;--f7-messagebar-bg-color:#fff;--f7-messagebar-bg-color-rgb:255,255,255}:root .theme-dark,:root.theme-dark{--f7-messagebar-bg-color:var(--f7-bars-bg-color);--f7-messagebar-bg-color-rgb:var(--f7-bars-bg-color-rgb)}.ios{--f7-messagebar-height:44px;--f7-messagebar-font-size:17px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:17px;--f7-messagebar-textarea-padding:6px 16px;--f7-messagebar-textarea-height:34px;--f7-messagebar-textarea-font-size:17px;--f7-messagebar-textarea-line-height:20px;--f7-messagebar-sheet-bg-color:#d1d5da;--f7-messagebar-attachment-border-radius:12px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.ios .theme-dark,.ios.theme-dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.md{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-textarea-border-radius:0px;--f7-messagebar-textarea-padding:5px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-textarea-border:1px solid transparent;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:4px;--f7-messagebar-link-color:#333;--f7-messagebar-border-color:#d1d1d1;--f7-messagebar-textarea-text-color:#333;--f7-messagebar-attachments-border-color:#ddd}.md .theme-dark,.md.theme-dark{--f7-messagebar-border-color:transparent;--f7-messagebar-link-color:rgba(255, 255, 255, 0.87);--f7-messagebar-textarea-text-color:rgba(255, 255, 255, 0.87);--f7-messagebar-attachments-border-color:rgba(255, 255, 255, 0.2)}.aurora{--f7-messagebar-height:48px;--f7-messagebar-font-size:16px;--f7-messagebar-border-color:transparent;--f7-messagebar-textarea-border-radius:8px;--f7-messagebar-textarea-padding:4px 8px;--f7-messagebar-textarea-height:32px;--f7-messagebar-textarea-font-size:16px;--f7-messagebar-textarea-line-height:22px;--f7-messagebar-sheet-bg-color:#fff;--f7-messagebar-attachment-border-radius:8px;--f7-messagebar-textarea-text-color:#000;--f7-messagebar-textarea-border:1px solid #c8c8cd;--f7-messagebar-attachments-border-color:#c8c8cd}.aurora .theme-dark,.aurora.theme-dark{--f7-messagebar-textarea-text-color:#fff;--f7-messagebar-textarea-border:1px solid var(--f7-bars-border-color);--f7-messagebar-attachments-border-color:var(--f7-bars-border-color)}.messagebar{transform:translate3d(0,0,0);background:var(--f7-messagebar-bg-color);height:auto;min-height:var(--f7-messagebar-height);font-size:var(--f7-messagebar-font-size);padding-bottom:var(--f7-safe-area-bottom);bottom:0}.messagebar:before{content:'';position:absolute;background-color:var(--f7-messagebar-border-color);display:block;z-index:15;top:0;right:auto;bottom:auto;left:0;height:1px;width:100%;transform-origin:50% 0%;transform:scaleY(calc(1 / var(--f7-device-pixel-ratio)))}.messagebar:after{content:'';position:absolute;right:0;width:100%;bottom:100%;height:8px;top:auto;pointer-events:none;background:var(--f7-messagebar-shadow-image);transform:translate3d(0,0,0)}@supports ((-webkit-backdrop-filter:blur(20px)) or (backdrop-filter:blur(20px))){.ios-translucent-bars .messagebar{background-color:rgba(var(--f7-messagebar-bg-color-rgb),var(--f7-bars-translucent-opacity));-webkit-backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur));backdrop-filter:saturate(180%) blur(var(--f7-bars-translucent-blur))}}.messagebar.no-border:before,.messagebar.no-hairline:before{display:none!important}.messagebar.no-shadow:after,.messagebar.toolbar-hidden:after{display:none!important}.messagebar .toolbar-inner{top:auto;position:relative;height:auto;bottom:auto;padding-left:calc(var(--f7-messagebar-inner-padding-left,var(--f7-toolbar-inner-padding-left)) + var(--f7-safe-area-left));padding-right:calc(var(--f7-messagebar-inner-padding-right,var(--f7-toolbar-inner-padding-right)) + var(--f7-safe-area-right))}.messagebar.messagebar-sheet-visible>.toolbar-inner{bottom:0}.messagebar .messagebar-area{width:100%;flex-shrink:1;overflow:hidden;position:relative}.messagebar textarea{width:100%;flex-shrink:1;background-color:var(--f7-messagebar-textarea-bg-color);border-radius:var(--f7-messagebar-textarea-border-radius);padding:var(--f7-messagebar-textarea-padding);height:var(--f7-messagebar-textarea-height);color:var(--f7-messagebar-textarea-text-color);font-size:var(--f7-messagebar-textarea-font-size);line-height:var(--f7-messagebar-textarea-line-height);border:var(--f7-messagebar-textarea-border)}.messagebar a.link{align-self:flex-end;flex-shrink:0;color:var(--f7-messagebar-link-color,var(--f7-theme-color))}.messagebar-attachments{width:100%;overflow:auto;-webkit-overflow-scrolling:touch;font-size:0;white-space:nowrap;box-sizing:border-box;position:relative}.messagebar:not(.messagebar-attachments-visible) .messagebar-attachments{display:none}.messagebar-attachment{background-size:cover;background-position:center;background-repeat:no-repeat;display:inline-block;vertical-align:middle;white-space:normal;height:var(--f7-messagebar-attachment-height);position:relative;border-radius:var(--f7-messagebar-attachment-border-radius)}@media (orientation:landscape){.messagebar-attachment{height:var(--f7-messagebar-attachment-landscape-height)}}.messagebar-attachment img{display:block;width:auto;height:100%;border-radius:var(--f7-messagebar-attachment-border-radius)}.messagebar-attachment+.messagebar-attachment{margin-left:8px}.messagebar-sheet{overflow:auto;-webkit-overflow-scrolling:touch;display:flex;flex-wrap:wrap;flex-direction:column;align-content:flex-start;height:var(--f7-messagebar-sheet-height);background-color:var(--f7-messagebar-sheet-bg-color);padding-left:var(--f7-safe-area-left);padding-right:var(--f7-safe-area-right)}@media (orientation:landscape){.messagebar-sheet{height:var(--f7-messagebar-sheet-landscape-height)}}.messagebar-sheet-image,.messagebar-sheet-item{box-sizing:border-box;flex-shrink:0;margin-top:1px;position:relative;overflow:hidden;height:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);width:calc((var(--f7-messagebar-sheet-height) - 2px)/ 2);margin-left:1px}@media (orientation:landscape){.messagebar-sheet-image,.messagebar-sheet-item{width:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2);height:calc((var(--f7-messagebar-sheet-landscape-height) - 2px)/ 2)}}.messagebar-sheet-image .icon-checkbox,.messagebar-sheet-image .icon-radio,.messagebar-sheet-item .icon-checkbox,.messagebar-sheet-item .icon-radio{position:absolute;right:8px;bottom:8px}.messagebar-sheet-image{background-size:cover;background-position:center;background-repeat:no-repeat}.messagebar-attachment-delete{display:block;position:absolute;border-radius:50%;box-sizing:border-box;cursor:pointer;box-shadow:0px 0px 2px rgba(0,0,0,.2)}.messagebar-attachment-delete:after,.messagebar-attachment-delete:before{position:absolute;content:'';left:50%;top:50%}.messagebar-attachment-delete:after{transform:rotate(45deg)}.messagebar-attachment-delete:before{transform:rotate(-45deg)}.messagebar:not(.messagebar-sheet-visible) .messagebar-sheet{display:none}.messagebar~*{--f7-page-toolbar-bottom-offset:var(--f7-messagebar-height)}.ios .messagebar a.link.icon-only:first-child{margin-left:-8px}.ios .messagebar a.link.icon-only:last-child{margin-right:-8px}.ios .messagebar a.link:not(.icon-only)+.messagebar-area{margin-left:8px}.ios .messagebar .messagebar-area+a.link:not(.icon-only){margin-left:8px}.ios .messagebar-area{margin-top:5px;margin-bottom:5px}.ios .messagebar-attachments{padding:5px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.ios .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.ios .messagebar-attachment{font-size:14px}.ios .messagebar-attachment-delete{right:5px;top:5px;width:20px;height:20px;background:#7d7e80;border:2px solid #fff}.ios .messagebar-attachment-delete:after,.ios .messagebar-attachment-delete:before{width:10px;height:2px;background:#fff;margin-left:-5px;margin-top:-1px}.md .messagebar-attachments{padding:8px;border-bottom:1px solid var(--f7-messagebar-attachments-border-color)}.md .messagebar-area{margin-top:8px;margin-bottom:8px}.md .messagebar-sheet-image .icon-checkbox,.md .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.md .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color);border-radius:4px}.md .messagebar-attachment-delete:after,.md .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}.aurora .messagebar a.link+.messagebar-area{margin-left:8px}.aurora .messagebar .messagebar-area+a.link{margin-left:8px}.aurora .messagebar-area{margin-top:8px;margin-bottom:8px}.aurora .messagebar-sheet-image .icon-checkbox,.aurora .messagebar-sheet-item .icon-checkbox{border-color:#fff;background:rgba(255,255,255,.25);box-shadow:0px 0px 10px rgba(0,0,0,.5)}.aurora .messagebar-attachments{padding:8px;border-radius:var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius) 0 0;border:1px solid var(--f7-messagebar-attachments-border-color);border-bottom:none}.aurora .messagebar-attachments-visible .messagebar-attachments+textarea{border-radius:0 0 var(--f7-messagebar-textarea-border-radius) var(--f7-messagebar-textarea-border-radius)}.aurora .messagebar-attachment{font-size:14px}.aurora .messagebar-attachment-delete{right:8px;top:8px;width:24px;height:24px;background-color:var(--f7-theme-color)}.aurora .messagebar-attachment-delete:after,.aurora .messagebar-attachment-delete:before{width:14px;height:2px;background:#fff;margin-left:-7px;margin-top:-1px}
\ No newline at end of file
diff --git a/www/assets/framework7/components/messagebar/messagebar.d.ts b/www/assets/framework7/components/messagebar/messagebar.d.ts
index 26e4b78cc..450bbb4b7 100644
--- a/www/assets/framework7/components/messagebar/messagebar.d.ts
+++ b/www/assets/framework7/components/messagebar/messagebar.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Messagebar {
interface Messagebar extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/messagebar/messagebar.js b/www/assets/framework7/components/messagebar/messagebar.js
index 708df4dd6..b8a962c73 100644
--- a/www/assets/framework7/components/messagebar/messagebar.js
+++ b/www/assets/framework7/components/messagebar/messagebar.js
@@ -1,74 +1 @@
-import $ from '../../shared/dom7.js';
-import { extend } from '../../shared/utils.js';
-import Messagebar from './messagebar-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-export default {
- name: 'messagebar',
- static: {
- Messagebar
- },
-
- create() {
- const app = this;
- app.messagebar = ConstructorMethods({
- defaultSelector: '.messagebar',
- constructor: Messagebar,
- app,
- domProp: 'f7Messagebar',
- addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')
- });
- },
-
- on: {
- tabBeforeRemove(tabEl) {
- const app = this;
- $(tabEl).find('.messagebar-init').each(messagebarEl => {
- app.messagebar.destroy(messagebarEl);
- });
- },
-
- tabMounted(tabEl) {
- const app = this;
- $(tabEl).find('.messagebar-init').each(messagebarEl => {
- app.messagebar.create(extend({
- el: messagebarEl
- }, $(messagebarEl).dataset()));
- });
- },
-
- pageBeforeRemove(page) {
- const app = this;
- page.$el.find('.messagebar-init').each(messagebarEl => {
- app.messagebar.destroy(messagebarEl);
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.messagebar-init').each(messagebarEl => {
- app.messagebar.create(extend({
- el: messagebarEl
- }, $(messagebarEl).dataset()));
- });
- }
-
- },
- vnode: {
- 'messagebar-init': {
- insert(vnode) {
- const app = this;
- const messagebarEl = vnode.elm;
- app.messagebar.create(extend({
- el: messagebarEl
- }, $(messagebarEl).dataset()));
- },
-
- destroy(vnode) {
- const app = this;
- const messagebarEl = vnode.elm;
- app.messagebar.destroy(messagebarEl);
- }
-
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,s=e.utils,r=(e.getDevice,e.getSupport,e.Class),n=(e.Modal,e.ConstructorMethods),i=(e.ModalMethods,s.extend),o=s.deleteProps;function c(e){this.wrapped=e}function l(e){var t,a;function s(t,a){try{var n=e[t](a),i=n.value,o=i instanceof c;Promise.resolve(o?i.wrapped:i).then((function(e){o?s("return"===t?"return":"next",e):r(n.done?"return":"normal",e)}),(function(e){s("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?s(t.key,t.arg):a=null}this._invoke=function(e,r){return new Promise((function(n,i){var o={key:e,arg:r,resolve:n,reject:i,next:null};a?a=a.next=o:(t=a=o,s(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}l.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},l.prototype.next=function(e){return this._invoke("next",e)},l.prototype.throw=function(e){return this._invoke("throw",e)},l.prototype.return=function(e){return this._invoke("return",e)};var u=function(e){var t,s;function r(t,s){var r;void 0===s&&(s={});var n=m(r=e.call(this,s,[t])||this),o={top:!1,topOffset:0,bottomOffset:0,attachments:[],renderAttachments:void 0,renderAttachment:void 0,maxHeight:null,resizePage:!0};n.useModulesParams(o),n.params=i(o,s);var c=a(n.params.el);if(0===c.length)return n||m(r);if(c[0].f7Messagebar)return c[0].f7Messagebar||m(r);c[0].f7Messagebar=n;var l,h=c.parents(".page").eq(0),u=h.find(".page-content").eq(0),g=c.find(".messagebar-area");l=n.params.textareaEl?a(n.params.textareaEl):c.find("textarea");var f=c.find(".messagebar-attachments"),d=c.find(".messagebar-sheet");function b(){n.params.resizePage&&n.resizePage()}function p(e){e.preventDefault()}function v(e){var t=a(this).index();a(e.target).closest(".messagebar-attachment-delete").length?(a(this).trigger("messagebar:attachmentdelete",t),n.emit("local::attachmentDelete messagebarAttachmentDelete",n,this,t)):(a(this).trigger("messagebar:attachmentclick",t),n.emit("local::attachmentClick messagebarAttachmentClick",n,this,t))}function $(){n.checkEmptyState(),n.$el.trigger("messagebar:change"),n.emit("local::change messagebarChange",n)}function E(){n.sheetHide(),n.$el.addClass("messagebar-focused"),n.$el.trigger("messagebar:focus"),n.emit("local::focus messagebarFocus",n)}function y(){n.$el.removeClass("messagebar-focused"),n.$el.trigger("messagebar:blur"),n.emit("local::blur messagebarBlur",n)}return n.params.top&&c.addClass("messagebar-top"),i(n,{$el:c,el:c[0],$areaEl:g,areaEl:g[0],$textareaEl:l,textareaEl:l[0],$attachmentsEl:f,attachmentsEl:f[0],attachmentsVisible:f.hasClass("messagebar-attachments-visible"),$sheetEl:d,sheetEl:d[0],sheetVisible:d.hasClass("messagebar-sheet-visible"),$pageEl:h,pageEl:h[0],$pageContentEl:u,pageContentEl:u,top:c.hasClass("messagebar-top")||n.params.top,attachments:[]}),n.attachEvents=function(){c.on("textarea:resize",b),c.on("submit",p),c.on("click",".messagebar-attachment",v),l.on("change input",$),l.on("focus",E),l.on("blur",y),t.on("resize",b)},n.detachEvents=function(){c.off("textarea:resize",b),c.off("submit",p),c.off("click",".messagebar-attachment",v),l.off("change input",$),l.off("focus",E),l.off("blur",y),t.off("resize",b)},n.useModules(),n.init(),n||m(r)}s=e,(t=r).prototype=Object.create(s.prototype),t.prototype.constructor=t,h(t,s);var n=r.prototype;return n.focus=function(){return this.$textareaEl.focus(),this},n.blur=function(){return this.$textareaEl.blur(),this},n.clear=function(){return this.$textareaEl.val("").trigger("change"),this},n.getValue=function(){return this.$textareaEl.val().trim()},n.setValue=function(e){return this.$textareaEl.val(e).trigger("change"),this},n.setPlaceholder=function(e){return this.$textareaEl.attr("placeholder",e),this},n.resizePage=function(){var e=this,t=e.params,a=e.$el,s=e.top,r=e.$pageEl,n=e.$pageContentEl,i=e.$areaEl,o=e.$textareaEl,c=e.$sheetEl,l=e.$attachmentsEl,h=a[0].offsetHeight,m=t.maxHeight;if(s);else{var u=parseInt(n.css("padding-bottom"),10),g=h+t.bottomOffset;if(g!==u&&n.length){var f=parseInt(n.css("padding-top"),10),d=n[0].scrollHeight,b=n[0].offsetHeight,p=n[0].scrollTop===d-b;m||(m=r[0].offsetHeight-f-c.outerHeight()-l.outerHeight()-parseInt(i.css("margin-top"),10)-parseInt(i.css("margin-bottom"),10)),o.css("max-height",m+"px"),n.css("padding-bottom",g+"px"),p&&n.scrollTop(n[0].scrollHeight-b),a.trigger("messagebar:resizepage"),e.emit("local::resizePage messagebarResizePage",e)}}},n.checkEmptyState=function(){var e=this.$el,t=this.$textareaEl.val().trim();t&&t.length?e.addClass("messagebar-with-value"):e.removeClass("messagebar-with-value")},n.attachmentsCreate=function(e){void 0===e&&(e="");var t=this,s=a(''+e+"
");return s.insertBefore(t.$textareaEl),i(t,{$attachmentsEl:s,attachmentsEl:s[0]}),t},n.attachmentsShow=function(e){void 0===e&&(e="");var t=this;return t.$attachmentsEl=t.$el.find(".messagebar-attachments"),0===t.$attachmentsEl.length&&t.attachmentsCreate(e),t.$el.addClass("messagebar-attachments-visible"),t.attachmentsVisible=!0,t.params.resizePage&&t.resizePage(),t},n.attachmentsHide=function(){var e=this;return e.$el.removeClass("messagebar-attachments-visible"),e.attachmentsVisible=!1,e.params.resizePage&&e.resizePage(),e},n.attachmentsToggle=function(){var e=this;return e.attachmentsVisible?e.attachmentsHide():e.attachmentsShow(),e},n.renderAttachment=function(e){var t=this;return t.params.renderAttachment?t.params.renderAttachment.call(t,e):'\n \n
\n
\n
\n '},n.renderAttachments=function(){var e,t=this;e=t.params.renderAttachments?t.params.renderAttachments.call(t,t.attachments):""+t.attachments.map((function(e){return t.renderAttachment(e)})).join(""),0===t.$attachmentsEl.length?t.attachmentsCreate(e):t.$attachmentsEl.html(e)},n.sheetCreate=function(e){void 0===e&&(e="");var t=this,s=a(''+e+"
");return t.$el.append(s),i(t,{$sheetEl:s,sheetEl:s[0]}),t},n.sheetShow=function(e){void 0===e&&(e="");var t=this;return t.$sheetEl=t.$el.find(".messagebar-sheet"),0===t.$sheetEl.length&&t.sheetCreate(e),t.$el.addClass("messagebar-sheet-visible"),t.sheetVisible=!0,t.params.resizePage&&t.resizePage(),t},n.sheetHide=function(){var e=this;return e.$el.removeClass("messagebar-sheet-visible"),e.sheetVisible=!1,e.params.resizePage&&e.resizePage(),e},n.sheetToggle=function(){var e=this;return e.sheetVisible?e.sheetHide():e.sheetShow(),e},n.init=function(){var e=this;return e.attachEvents(),e.checkEmptyState(),e},n.destroy=function(){var e=this;e.emit("local::beforeDestroy messagebarBeforeDestroy",e),e.$el.trigger("messagebar:beforedestroy"),e.detachEvents(),e.$el[0]&&(e.$el[0].f7Messagebar=null,delete e.$el[0].f7Messagebar),o(e)},r}(r),g={name:"messagebar",static:{Messagebar:u},create:function(){this.messagebar=n({defaultSelector:".messagebar",constructor:u,app:this,domProp:"f7Messagebar",addMethods:"clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle".split(" ")})},on:{tabBeforeRemove:function(e){var t=this;a(e).find(".messagebar-init").each((function(e){t.messagebar.destroy(e)}))},tabMounted:function(e){var t=this;a(e).find(".messagebar-init").each((function(e){t.messagebar.create(i({el:e},a(e).dataset()))}))},pageBeforeRemove:function(e){var t=this;e.$el.find(".messagebar-init").each((function(e){t.messagebar.destroy(e)}))},pageInit:function(e){var t=this;e.$el.find(".messagebar-init").each((function(e){t.messagebar.create(i({el:e},a(e).dataset()))}))}},vnode:{"messagebar-init":{insert:function(e){var t=e.elm;this.messagebar.create(i({el:t},a(t).dataset()))},destroy:function(e){var t=e.elm;this.messagebar.destroy(t)}}}};if(t){if(e.prototype.modules&&e.prototype.modules[g.name])return;e.use(g),e.instance&&(e.instance.useModuleParams(g,e.instance.params),e.instance.useModule(g))}return g}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/messagebar/messagebar.lazy.js b/www/assets/framework7/components/messagebar/messagebar.lazy.js
deleted file mode 100644
index f7f49e7e7..000000000
--- a/www/assets/framework7/components/messagebar/messagebar.lazy.js
+++ /dev/null
@@ -1 +0,0 @@
-(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var a=e.$,s=e.utils,r=(e.getDevice,e.getSupport,e.Class),n=(e.Modal,e.ConstructorMethods),i=(e.ModalMethods,e.$jsx,s.extend),l=s.deleteProps;class c extends r{constructor(e,t){void 0===t&&(t={}),super(t,[e]);const s=this,r={top:!1,topOffset:0,bottomOffset:0,attachments:[],renderAttachments:void 0,renderAttachment:void 0,maxHeight:null,resizePage:!0};s.useModulesParams(r),s.params=i(r,t);const n=a(s.params.el);if(0===n.length)return s;if(n[0].f7Messagebar)return n[0].f7Messagebar;n[0].f7Messagebar=s;const l=n.parents(".page").eq(0),c=l.find(".page-content").eq(0),h=n.find(".messagebar-area");let o;o=s.params.textareaEl?a(s.params.textareaEl):n.find("textarea");const m=n.find(".messagebar-attachments"),g=n.find(".messagebar-sheet");function d(){s.params.resizePage&&s.resizePage()}function b(e){e.preventDefault()}function u(e){const t=a(this).index();a(e.target).closest(".messagebar-attachment-delete").length?(a(this).trigger("messagebar:attachmentdelete",t),s.emit("local::attachmentDelete messagebarAttachmentDelete",s,this,t)):(a(this).trigger("messagebar:attachmentclick",t),s.emit("local::attachmentClick messagebarAttachmentClick",s,this,t))}function f(){s.checkEmptyState(),s.$el.trigger("messagebar:change"),s.emit("local::change messagebarChange",s)}function p(){s.sheetHide(),s.$el.addClass("messagebar-focused"),s.$el.trigger("messagebar:focus"),s.emit("local::focus messagebarFocus",s)}function $(){s.$el.removeClass("messagebar-focused"),s.$el.trigger("messagebar:blur"),s.emit("local::blur messagebarBlur",s)}return s.params.top&&n.addClass("messagebar-top"),i(s,{$el:n,el:n[0],$areaEl:h,areaEl:h[0],$textareaEl:o,textareaEl:o[0],$attachmentsEl:m,attachmentsEl:m[0],attachmentsVisible:m.hasClass("messagebar-attachments-visible"),$sheetEl:g,sheetEl:g[0],sheetVisible:g.hasClass("messagebar-sheet-visible"),$pageEl:l,pageEl:l[0],$pageContentEl:c,pageContentEl:c,top:n.hasClass("messagebar-top")||s.params.top,attachments:[]}),s.attachEvents=function(){n.on("textarea:resize",d),n.on("submit",b),n.on("click",".messagebar-attachment",u),o.on("change input",f),o.on("focus",p),o.on("blur",$),e.on("resize",d)},s.detachEvents=function(){n.off("textarea:resize",d),n.off("submit",b),n.off("click",".messagebar-attachment",u),o.off("change input",f),o.off("focus",p),o.off("blur",$),e.off("resize",d)},s.useModules(),s.init(),s}focus(){return this.$textareaEl.focus(),this}blur(){return this.$textareaEl.blur(),this}clear(){return this.$textareaEl.val("").trigger("change"),this}getValue(){return this.$textareaEl.val().trim()}setValue(e){return this.$textareaEl.val(e).trigger("change"),this}setPlaceholder(e){return this.$textareaEl.attr("placeholder",e),this}resizePage(){const e=this,{params:t,$el:a,top:s,$pageEl:r,$pageContentEl:n,$areaEl:i,$textareaEl:l,$sheetEl:c,$attachmentsEl:h}=e,o=a[0].offsetHeight;let m=t.maxHeight;if(s);else{const s=parseInt(n.css("padding-bottom"),10),g=o+t.bottomOffset;if(g!==s&&n.length){const t=parseInt(n.css("padding-top"),10),s=n[0].scrollHeight,o=n[0].offsetHeight,d=n[0].scrollTop===s-o;m||(m=r[0].offsetHeight-t-c.outerHeight()-h.outerHeight()-parseInt(i.css("margin-top"),10)-parseInt(i.css("margin-bottom"),10)),l.css("max-height",`${m}px`),n.css("padding-bottom",`${g}px`),d&&n.scrollTop(n[0].scrollHeight-o),a.trigger("messagebar:resizepage"),e.emit("local::resizePage messagebarResizePage",e)}}}checkEmptyState(){const{$el:e,$textareaEl:t}=this,a=t.val().trim();a&&a.length?e.addClass("messagebar-with-value"):e.removeClass("messagebar-with-value")}attachmentsCreate(e){void 0===e&&(e="");const t=this,s=a(`${e}
`);return s.insertBefore(t.$textareaEl),i(t,{$attachmentsEl:s,attachmentsEl:s[0]}),t}attachmentsShow(e){void 0===e&&(e="");const t=this;return t.$attachmentsEl=t.$el.find(".messagebar-attachments"),0===t.$attachmentsEl.length&&t.attachmentsCreate(e),t.$el.addClass("messagebar-attachments-visible"),t.attachmentsVisible=!0,t.params.resizePage&&t.resizePage(),t}attachmentsHide(){const e=this;return e.$el.removeClass("messagebar-attachments-visible"),e.attachmentsVisible=!1,e.params.resizePage&&e.resizePage(),e}attachmentsToggle(){const e=this;return e.attachmentsVisible?e.attachmentsHide():e.attachmentsShow(),e}renderAttachment(e){const t=this;return t.params.renderAttachment?t.params.renderAttachment.call(t,e):`\n \n
\n
\n
\n `}renderAttachments(){const e=this;let t;t=e.params.renderAttachments?e.params.renderAttachments.call(e,e.attachments):`${e.attachments.map((t=>e.renderAttachment(t))).join("")}`,0===e.$attachmentsEl.length?e.attachmentsCreate(t):e.$attachmentsEl.html(t)}sheetCreate(e){void 0===e&&(e="");const t=this,s=a(`${e}
`);return t.$el.append(s),i(t,{$sheetEl:s,sheetEl:s[0]}),t}sheetShow(e){void 0===e&&(e="");const t=this;return t.$sheetEl=t.$el.find(".messagebar-sheet"),0===t.$sheetEl.length&&t.sheetCreate(e),t.$el.addClass("messagebar-sheet-visible"),t.sheetVisible=!0,t.params.resizePage&&t.resizePage(),t}sheetHide(){const e=this;return e.$el.removeClass("messagebar-sheet-visible"),e.sheetVisible=!1,e.params.resizePage&&e.resizePage(),e}sheetToggle(){const e=this;return e.sheetVisible?e.sheetHide():e.sheetShow(),e}init(){const e=this;return e.attachEvents(),e.checkEmptyState(),e}destroy(){const e=this;e.emit("local::beforeDestroy messagebarBeforeDestroy",e),e.$el.trigger("messagebar:beforedestroy"),e.detachEvents(),e.$el[0]&&(e.$el[0].f7Messagebar=null,delete e.$el[0].f7Messagebar),l(e)}}var h={name:"messagebar",static:{Messagebar:c},create(){this.messagebar=n({defaultSelector:".messagebar",constructor:c,app:this,domProp:"f7Messagebar",addMethods:"clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle".split(" ")})},on:{tabBeforeRemove(e){const t=this;a(e).find(".messagebar-init").each((e=>{t.messagebar.destroy(e)}))},tabMounted(e){const t=this;a(e).find(".messagebar-init").each((e=>{t.messagebar.create(i({el:e},a(e).dataset()))}))},pageBeforeRemove(e){const t=this;e.$el.find(".messagebar-init").each((e=>{t.messagebar.destroy(e)}))},pageInit(e){const t=this;e.$el.find(".messagebar-init").each((e=>{t.messagebar.create(i({el:e},a(e).dataset()))}))}},vnode:{"messagebar-init":{insert(e){const t=e.elm;this.messagebar.create(i({el:t},a(t).dataset()))},destroy(e){const t=e.elm;this.messagebar.destroy(t)}}}};if(t){if(e.prototype.modules&&e.prototype.modules[h.name])return;e.use(h),e.instance&&(e.instance.useModuleParams(h,e.instance.params),e.instance.useModule(h))}return h}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))
diff --git a/www/assets/framework7/components/messagebar/package.json b/www/assets/framework7/components/messagebar/package.json
new file mode 100644
index 000000000..2469323dd
--- /dev/null
+++ b/www/assets/framework7/components/messagebar/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "framework7/messagebar",
+ "private": true,
+ "sideEffects": false,
+ "main": "../../cjs/components/messagebar/messagebar.js",
+ "module": "../../esm/components/messagebar/messagebar.js",
+ "jsnext:main": "../../esm/components/messagebar/messagebar.js",
+ "typings": "../../types/components/messagebar/messagebar.d.ts"
+}
\ No newline at end of file
diff --git a/www/assets/framework7/components/messages/messages-rtl.css b/www/assets/framework7/components/messages/messages-rtl.css
index bc493b699..4be027474 100644
--- a/www/assets/framework7/components/messages/messages-rtl.css
+++ b/www/assets/framework7/components/messages/messages-rtl.css
@@ -1 +1 @@
-:root{--f7-message-text-header-text-color:inherit;--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-text-color:inherit;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-typing-indicator-bg-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-message-received-text-color:#000}:root .dark,:root.dark{--f7-messages-title-text-color:rgba(255, 255, 255, 0.54);--f7-message-header-text-color:rgba(255, 255, 255, 0.54);--f7-message-name-text-color:rgba(255, 255, 255, 0.54);--f7-message-footer-text-color:rgba(255, 255, 255, 0.54);--f7-messages-content-bg-color:transparent;--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-messages-title-text-color:rgba(0, 0, 0, 0.45);--f7-messages-title-font-size:11px;--f7-message-header-text-color:rgba(0, 0, 0, 0.45);--f7-message-footer-text-color:rgba(0, 0, 0, 0.45);--f7-message-name-text-color:rgba(0, 0, 0, 0.45);--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35}.md{--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:4px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:8px;--f7-message-typing-indicator-opacity:0.6;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.aurora{--f7-messages-title-font-size:14px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:34px;--f7-message-bubble-font-size:16px;--f7-message-bubble-line-height:1.4;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:10px;--f7-message-typing-indicator-opacity:0.5;--f7-message-header-font-size:14px;--f7-message-footer-font-size:12px;--f7-message-name-font-size:14px;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{text-align:center;width:100%;line-height:1;color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight)}.message{max-width:70%;box-sizing:border-box;display:flex;align-items:flex-end;position:relative;z-index:1;transform:translate3d(0,0,0)}.message-avatar{border-radius:var(--f7-message-avatar-border-radius);position:relative;background-size:cover;align-self:flex-end;flex-shrink:0;width:var(--f7-message-avatar-size);height:var(--f7-message-avatar-size)}.message-content{position:relative;display:flex;flex-direction:column}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{box-sizing:border-box;word-break:break-word;display:flex;flex-direction:column;position:relative;line-height:var(--f7-message-bubble-line-height);font-size:var(--f7-message-bubble-font-size);border-radius:var(--f7-message-bubble-border-radius);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);min-height:var(--f7-message-bubble-min-height)}.message-image img{display:block;max-width:100%;height:auto;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);opacity:var(--f7-message-text-header-opacity);font-size:var(--f7-message-text-header-font-size)}.message-text-footer{color:var(--f7-message-text-footer-text-color);opacity:var(--f7-message-text-footer-opacity);font-size:var(--f7-message-text-footer-font-size)}.message-text{text-align:left}.message-sent{text-align:right;flex-direction:row;align-self:flex-start}.message-sent .message-bubble{color:var(--f7-message-sent-text-color);background:var(--f7-message-sent-bg-color,var(--f7-theme-color))}.message-sent .message-content{align-items:flex-start}.message-sent.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.message-received{flex-direction:row-reverse;align-self:flex-end}.message-received .message-bubble{color:var(--f7-message-received-text-color);background:var(--f7-message-received-bg-color)}.message-received .message-content{align-items:flex-end}.message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.message:not(.message-last) .message-avatar{opacity:0}.message:not(.message-first) .message-name{display:none}.message.message-same-name .message-name{display:none}.message.message-same-header .message-header{display:none}.message.message-same-footer .message-footer{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{display:inline-block;position:relative;background:var(--f7-message-typing-indicator-bg-color);opacity:var(--f7-message-typing-indicator-opacity);vertical-align:middle;border-radius:50%}@keyframes message-appear-from-bottom{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes message-appear-from-top{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal))}.ios .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received .message-image{margin-left:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0px}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent .message-image{margin-right:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0px}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{content:'';position:absolute;background:var(--f7-message-received-bg-color);border-radius:50%}.ios .message-received.message-typing .message-content:after{width:11px;height:11px;left:4px;bottom:0px}.ios .message-received.message-typing .message-content:before{width:6px;height:6px;left:-1px;bottom:-4px}.ios .message-typing-indicator>div{width:9px;height:9px}.ios .message-typing-indicator>div+div{margin-right:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s 150ms infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-received.message-tail .message-bubble:before,.md .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-avatar+.message-content{margin-left:var(--f7-message-bubble-padding-horizontal)}.md .message-received.message-tail .message-bubble:before{border-left:8px solid transparent;border-right:0 solid transparent;border-bottom:8px solid var(--f7-message-received-bg-color);right:100%}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:8px solid transparent;border-bottom:8px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%}.md .message+.message:not(.message-first){margin-top:8px}.md .message-typing-indicator>div{width:6px;height:6px}.md .message-typing-indicator>div+div{margin-right:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s 150ms infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0%)}25%{transform:translateY(-5px)}50%{transform:translateY(0%)}}.aurora .message-footer b,.aurora .message-header b,.aurora .message-name b,.aurora .messages-title b{font-weight:500}.aurora .message-header,.aurora .message-name{margin-bottom:2px}.aurora .message-footer{margin-top:2px}.aurora .message-text-header{margin-bottom:2px}.aurora .message-text-footer{margin-top:2px}.aurora .message-received.message-tail .message-bubble:before,.aurora .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.aurora .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal) + 4px)}.aurora .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-received{margin-left:calc(16px + var(--f7-safe-area-left))}.aurora .message-received .message-avatar+.message-content{margin-left:5px}.aurora .message-received .message-footer,.aurora .message-received .message-header,.aurora .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.aurora .message-received.message-tail .message-bubble:before{border-left:6px solid transparent;border-right:0 solid transparent;border-bottom:6px solid var(--f7-message-received-bg-color);right:100%;transform:translate(2px,0px) rotate(-15deg);transform-origin:right bottom}.aurora .message-sent{margin-right:calc(16px + var(--f7-safe-area-right))}.aurora .message-sent .message-avatar+.message-content{margin-right:5px}.aurora .message-sent .message-footer,.aurora .message-sent .message-header,.aurora .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.aurora .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%;transform:translate(-2px,0px) rotate(15deg);transform-origin:left bottom}.aurora .message+.message:not(.message-first){margin-top:5px}.aurora .message-typing-indicator>div{width:6px;height:6px}.aurora .message-typing-indicator>div+div{margin-right:4px}.aurora .message-typing-indicator>div:first-child{animation:aurora-message-typing-indicator .9s infinite}.aurora .message-typing-indicator>div:nth-child(2){animation:aurora-message-typing-indicator .9s 150ms infinite}.aurora .message-typing-indicator>div:nth-child(3){animation:aurora-message-typing-indicator .9s .3s infinite}@keyframes aurora-message-typing-indicator{0%{transform:translateY(0%)}50%{transform:translateY(-5px)}100%{transform:translateY(0%)}}
\ No newline at end of file
+:root{--f7-message-text-header-text-color:inherit;--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-text-color:inherit;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-typing-indicator-bg-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-message-received-text-color:#000}:root .theme-dark,:root.theme-dark{--f7-messages-title-text-color:rgba(255, 255, 255, 0.54);--f7-message-header-text-color:rgba(255, 255, 255, 0.54);--f7-message-name-text-color:rgba(255, 255, 255, 0.54);--f7-message-footer-text-color:rgba(255, 255, 255, 0.54);--f7-messages-content-bg-color:transparent;--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-messages-title-text-color:rgba(0, 0, 0, 0.45);--f7-messages-title-font-size:11px;--f7-message-header-text-color:rgba(0, 0, 0, 0.45);--f7-message-footer-text-color:rgba(0, 0, 0, 0.45);--f7-message-name-text-color:rgba(0, 0, 0, 0.45);--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35}.md{--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:4px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:8px;--f7-message-typing-indicator-opacity:0.6;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.aurora{--f7-messages-title-font-size:14px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:34px;--f7-message-bubble-font-size:16px;--f7-message-bubble-line-height:1.4;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:10px;--f7-message-typing-indicator-opacity:0.5;--f7-message-header-font-size:14px;--f7-message-footer-font-size:12px;--f7-message-name-font-size:14px;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{text-align:center;width:100%;line-height:1;color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight)}.message{max-width:70%;box-sizing:border-box;display:flex;align-items:flex-end;position:relative;z-index:1;transform:translate3d(0,0,0)}.message-avatar{border-radius:var(--f7-message-avatar-border-radius);position:relative;background-size:cover;align-self:flex-end;flex-shrink:0;width:var(--f7-message-avatar-size);height:var(--f7-message-avatar-size)}.message-content{position:relative;display:flex;flex-direction:column}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{box-sizing:border-box;word-break:break-word;display:flex;flex-direction:column;position:relative;line-height:var(--f7-message-bubble-line-height);font-size:var(--f7-message-bubble-font-size);border-radius:var(--f7-message-bubble-border-radius);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);min-height:var(--f7-message-bubble-min-height)}.message-image img{display:block;max-width:100%;height:auto;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);opacity:var(--f7-message-text-header-opacity);font-size:var(--f7-message-text-header-font-size)}.message-text-footer{color:var(--f7-message-text-footer-text-color);opacity:var(--f7-message-text-footer-opacity);font-size:var(--f7-message-text-footer-font-size)}.message-text{text-align:left}.message-sent{text-align:right;flex-direction:row;align-self:flex-start}.message-sent .message-bubble{color:var(--f7-message-sent-text-color);background:var(--f7-message-sent-bg-color,var(--f7-theme-color))}.message-sent .message-content{align-items:flex-start}.message-sent.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.message-received{flex-direction:row-reverse;align-self:flex-end}.message-received .message-bubble{color:var(--f7-message-received-text-color);background:var(--f7-message-received-bg-color)}.message-received .message-content{align-items:flex-end}.message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.message:not(.message-last) .message-avatar{opacity:0}.message:not(.message-first) .message-name{display:none}.message.message-same-name .message-name{display:none}.message.message-same-header .message-header{display:none}.message.message-same-footer .message-footer{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{display:inline-block;position:relative;background:var(--f7-message-typing-indicator-bg-color);opacity:var(--f7-message-typing-indicator-opacity);vertical-align:middle;border-radius:50%}@keyframes message-appear-from-bottom{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes message-appear-from-top{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal))}.ios .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received .message-image{margin-left:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0px}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent .message-image{margin-right:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0px}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{content:'';position:absolute;background:var(--f7-message-received-bg-color);border-radius:50%}.ios .message-received.message-typing .message-content:after{width:11px;height:11px;left:4px;bottom:0px}.ios .message-received.message-typing .message-content:before{width:6px;height:6px;left:-1px;bottom:-4px}.ios .message-typing-indicator>div{width:9px;height:9px}.ios .message-typing-indicator>div+div{margin-right:4px}.ios .message-typing-indicator>div:nth-child(1){animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s 150ms infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-received.message-tail .message-bubble:before,.md .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-avatar+.message-content{margin-left:var(--f7-message-bubble-padding-horizontal)}.md .message-received.message-tail .message-bubble:before{border-left:8px solid transparent;border-right:0 solid transparent;border-bottom:8px solid var(--f7-message-received-bg-color);right:100%}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:8px solid transparent;border-bottom:8px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%}.md .message+.message:not(.message-first){margin-top:8px}.md .message-typing-indicator>div{width:6px;height:6px}.md .message-typing-indicator>div+div{margin-right:6px}.md .message-typing-indicator>div:nth-child(1){animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s 150ms infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0%)}25%{transform:translateY(-5px)}50%{transform:translateY(0%)}}.aurora .message-footer b,.aurora .message-header b,.aurora .message-name b,.aurora .messages-title b{font-weight:500}.aurora .message-header,.aurora .message-name{margin-bottom:2px}.aurora .message-footer{margin-top:2px}.aurora .message-text-header{margin-bottom:2px}.aurora .message-text-footer{margin-top:2px}.aurora .message-received.message-tail .message-bubble:before,.aurora .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.aurora .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal) + 4px)}.aurora .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-received{margin-left:calc(16px + var(--f7-safe-area-left))}.aurora .message-received .message-avatar+.message-content{margin-left:5px}.aurora .message-received .message-footer,.aurora .message-received .message-header,.aurora .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.aurora .message-received.message-tail .message-bubble:before{border-left:6px solid transparent;border-right:0 solid transparent;border-bottom:6px solid var(--f7-message-received-bg-color);right:100%;transform:translate(2px,0px) rotate(-15deg);transform-origin:right bottom}.aurora .message-sent{margin-right:calc(16px + var(--f7-safe-area-right))}.aurora .message-sent .message-avatar+.message-content{margin-right:5px}.aurora .message-sent .message-footer,.aurora .message-sent .message-header,.aurora .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.aurora .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%;transform:translate(-2px,0px) rotate(15deg);transform-origin:left bottom}.aurora .message+.message:not(.message-first){margin-top:5px}.aurora .message-typing-indicator>div{width:6px;height:6px}.aurora .message-typing-indicator>div+div{margin-right:4px}.aurora .message-typing-indicator>div:nth-child(1){animation:aurora-message-typing-indicator .9s infinite}.aurora .message-typing-indicator>div:nth-child(2){animation:aurora-message-typing-indicator .9s 150ms infinite}.aurora .message-typing-indicator>div:nth-child(3){animation:aurora-message-typing-indicator .9s .3s infinite}@keyframes aurora-message-typing-indicator{0%{transform:translateY(0%)}50%{transform:translateY(-5px)}100%{transform:translateY(0%)}}
\ No newline at end of file
diff --git a/www/assets/framework7/components/messages/messages.css b/www/assets/framework7/components/messages/messages.css
index fb5a9987e..954a45296 100644
--- a/www/assets/framework7/components/messages/messages.css
+++ b/www/assets/framework7/components/messages/messages.css
@@ -1 +1 @@
-:root{--f7-message-text-header-text-color:inherit;--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-text-color:inherit;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-typing-indicator-bg-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-message-received-text-color:#000}:root .dark,:root.dark{--f7-messages-title-text-color:rgba(255, 255, 255, 0.54);--f7-message-header-text-color:rgba(255, 255, 255, 0.54);--f7-message-name-text-color:rgba(255, 255, 255, 0.54);--f7-message-footer-text-color:rgba(255, 255, 255, 0.54);--f7-messages-content-bg-color:transparent;--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-messages-title-text-color:rgba(0, 0, 0, 0.45);--f7-messages-title-font-size:11px;--f7-message-header-text-color:rgba(0, 0, 0, 0.45);--f7-message-footer-text-color:rgba(0, 0, 0, 0.45);--f7-message-name-text-color:rgba(0, 0, 0, 0.45);--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35}.md{--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:4px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:8px;--f7-message-typing-indicator-opacity:0.6;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.aurora{--f7-messages-title-font-size:14px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:34px;--f7-message-bubble-font-size:16px;--f7-message-bubble-line-height:1.4;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:10px;--f7-message-typing-indicator-opacity:0.5;--f7-message-header-font-size:14px;--f7-message-footer-font-size:12px;--f7-message-name-font-size:14px;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{text-align:center;width:100%;line-height:1;color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight)}.message{max-width:70%;box-sizing:border-box;display:flex;align-items:flex-end;position:relative;z-index:1;transform:translate3d(0,0,0)}.message-avatar{border-radius:var(--f7-message-avatar-border-radius);position:relative;background-size:cover;align-self:flex-end;flex-shrink:0;width:var(--f7-message-avatar-size);height:var(--f7-message-avatar-size)}.message-content{position:relative;display:flex;flex-direction:column}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{box-sizing:border-box;word-break:break-word;display:flex;flex-direction:column;position:relative;line-height:var(--f7-message-bubble-line-height);font-size:var(--f7-message-bubble-font-size);border-radius:var(--f7-message-bubble-border-radius);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);min-height:var(--f7-message-bubble-min-height)}.message-image img{display:block;max-width:100%;height:auto;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);opacity:var(--f7-message-text-header-opacity);font-size:var(--f7-message-text-header-font-size)}.message-text-footer{color:var(--f7-message-text-footer-text-color);opacity:var(--f7-message-text-footer-opacity);font-size:var(--f7-message-text-footer-font-size)}.message-text{text-align:left}.message-sent{text-align:right;flex-direction:row-reverse;align-self:flex-end}.message-sent .message-bubble{color:var(--f7-message-sent-text-color);background:var(--f7-message-sent-bg-color,var(--f7-theme-color))}.message-sent .message-content{align-items:flex-end}.message-sent.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.message-received{flex-direction:row}.message-received .message-bubble{color:var(--f7-message-received-text-color);background:var(--f7-message-received-bg-color)}.message-received .message-content{align-items:flex-start}.message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.message:not(.message-last) .message-avatar{opacity:0}.message:not(.message-first) .message-name{display:none}.message.message-same-name .message-name{display:none}.message.message-same-header .message-header{display:none}.message.message-same-footer .message-footer{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{display:inline-block;position:relative;background:var(--f7-message-typing-indicator-bg-color);opacity:var(--f7-message-typing-indicator-opacity);vertical-align:middle;border-radius:50%}@keyframes message-appear-from-bottom{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes message-appear-from-top{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal))}.ios .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received .message-image{margin-left:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0px}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent .message-image{margin-right:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0px}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{content:'';position:absolute;background:var(--f7-message-received-bg-color);border-radius:50%}.ios .message-received.message-typing .message-content:after{width:11px;height:11px;left:4px;bottom:0px}.ios .message-received.message-typing .message-content:before{width:6px;height:6px;left:-1px;bottom:-4px}.ios .message-typing-indicator>div{width:9px;height:9px}.ios .message-typing-indicator>div+div{margin-left:4px}.ios .message-typing-indicator>div:first-child{animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s 150ms infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-received.message-tail .message-bubble:before,.md .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-avatar+.message-content{margin-left:var(--f7-message-bubble-padding-horizontal)}.md .message-received.message-tail .message-bubble:before{border-left:8px solid transparent;border-right:0 solid transparent;border-bottom:8px solid var(--f7-message-received-bg-color);right:100%}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:8px solid transparent;border-bottom:8px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%}.md .message+.message:not(.message-first){margin-top:8px}.md .message-typing-indicator>div{width:6px;height:6px}.md .message-typing-indicator>div+div{margin-left:6px}.md .message-typing-indicator>div:first-child{animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s 150ms infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0%)}25%{transform:translateY(-5px)}50%{transform:translateY(0%)}}.aurora .message-footer b,.aurora .message-header b,.aurora .message-name b,.aurora .messages-title b{font-weight:500}.aurora .message-header,.aurora .message-name{margin-bottom:2px}.aurora .message-footer{margin-top:2px}.aurora .message-text-header{margin-bottom:2px}.aurora .message-text-footer{margin-top:2px}.aurora .message-received.message-tail .message-bubble:before,.aurora .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.aurora .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal) + 4px)}.aurora .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-received{margin-left:calc(16px + var(--f7-safe-area-left))}.aurora .message-received .message-avatar+.message-content{margin-left:5px}.aurora .message-received .message-footer,.aurora .message-received .message-header,.aurora .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.aurora .message-received.message-tail .message-bubble:before{border-left:6px solid transparent;border-right:0 solid transparent;border-bottom:6px solid var(--f7-message-received-bg-color);right:100%;transform:translate(2px,0px) rotate(-15deg);transform-origin:right bottom}.aurora .message-sent{margin-right:calc(16px + var(--f7-safe-area-right))}.aurora .message-sent .message-avatar+.message-content{margin-right:5px}.aurora .message-sent .message-footer,.aurora .message-sent .message-header,.aurora .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.aurora .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%;transform:translate(-2px,0px) rotate(15deg);transform-origin:left bottom}.aurora .message+.message:not(.message-first){margin-top:5px}.aurora .message-typing-indicator>div{width:6px;height:6px}.aurora .message-typing-indicator>div+div{margin-left:4px}.aurora .message-typing-indicator>div:first-child{animation:aurora-message-typing-indicator .9s infinite}.aurora .message-typing-indicator>div:nth-child(2){animation:aurora-message-typing-indicator .9s 150ms infinite}.aurora .message-typing-indicator>div:nth-child(3){animation:aurora-message-typing-indicator .9s .3s infinite}@keyframes aurora-message-typing-indicator{0%{transform:translateY(0%)}50%{transform:translateY(-5px)}100%{transform:translateY(0%)}}
\ No newline at end of file
+:root{--f7-message-text-header-text-color:inherit;--f7-message-text-header-opacity:0.65;--f7-message-text-header-font-size:12px;--f7-message-text-footer-text-color:inherit;--f7-message-text-footer-opacity:0.65;--f7-message-text-footer-font-size:12px;--f7-message-bubble-line-height:1.2;--f7-message-header-font-size:12px;--f7-message-footer-font-size:11px;--f7-message-name-font-size:12px;--f7-message-name-font-weight:inherit;--f7-message-avatar-border-radius:50%;--f7-messages-title-font-weight:inherit;--f7-message-sent-text-color:#fff;--f7-messages-content-bg-color:#fff;--f7-message-typing-indicator-bg-color:#000;--f7-message-received-bg-color:#e5e5ea;--f7-message-received-text-color:#000}:root .theme-dark,:root.theme-dark{--f7-messages-title-text-color:rgba(255, 255, 255, 0.54);--f7-message-header-text-color:rgba(255, 255, 255, 0.54);--f7-message-name-text-color:rgba(255, 255, 255, 0.54);--f7-message-footer-text-color:rgba(255, 255, 255, 0.54);--f7-messages-content-bg-color:transparent;--f7-message-received-bg-color:#252525;--f7-message-received-text-color:#fff;--f7-message-typing-indicator-bg-color:#fff}.ios{--f7-messages-title-text-color:rgba(0, 0, 0, 0.45);--f7-messages-title-font-size:11px;--f7-message-header-text-color:rgba(0, 0, 0, 0.45);--f7-message-footer-text-color:rgba(0, 0, 0, 0.45);--f7-message-name-text-color:rgba(0, 0, 0, 0.45);--f7-message-avatar-size:29px;--f7-message-margin:10px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:17px;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:16px;--f7-message-typing-indicator-opacity:0.35}.md{--f7-messages-title-font-size:12px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:32px;--f7-message-bubble-font-size:16px;--f7-message-bubble-border-radius:4px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:8px;--f7-message-typing-indicator-opacity:0.6;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.aurora{--f7-messages-title-font-size:14px;--f7-message-avatar-size:32px;--f7-message-margin:16px;--f7-message-bubble-min-height:34px;--f7-message-bubble-font-size:16px;--f7-message-bubble-line-height:1.4;--f7-message-bubble-border-radius:16px;--f7-message-bubble-padding-vertical:6px;--f7-message-bubble-padding-horizontal:10px;--f7-message-typing-indicator-opacity:0.5;--f7-message-header-font-size:14px;--f7-message-footer-font-size:12px;--f7-message-name-font-size:14px;--f7-messages-title-text-color:rgba(0, 0, 0, 0.51);--f7-message-header-text-color:rgba(0, 0, 0, 0.51);--f7-message-footer-text-color:rgba(0, 0, 0, 0.51);--f7-message-name-text-color:rgba(0, 0, 0, 0.51)}.messages,.messages-content{background:var(--f7-messages-content-bg-color)}.messages{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:1}.message,.messages-title{margin-top:var(--f7-message-margin)}.message:last-child,.messages-title:last-child{margin-bottom:var(--f7-message-margin)}.messages-title{text-align:center;width:100%;line-height:1;color:var(--f7-messages-title-text-color);font-size:var(--f7-messages-title-font-size);font-weight:var(--f7-messages-title-font-weight)}.message{max-width:70%;box-sizing:border-box;display:flex;align-items:flex-end;position:relative;z-index:1;transform:translate3d(0,0,0)}.message-avatar{border-radius:var(--f7-message-avatar-border-radius);position:relative;background-size:cover;align-self:flex-end;flex-shrink:0;width:var(--f7-message-avatar-size);height:var(--f7-message-avatar-size)}.message-content{position:relative;display:flex;flex-direction:column}.message-footer,.message-header,.message-name{line-height:1}.message-header{color:var(--f7-message-header-text-color);font-size:var(--f7-message-header-font-size)}.message-footer{color:var(--f7-message-footer-text-color);font-size:var(--f7-message-footer-font-size);margin-bottom:-1em}.message-name{color:var(--f7-message-name-text-color);font-size:var(--f7-message-name-font-size);font-weight:var(--f7-message-name-font-weight)}.message-bubble{box-sizing:border-box;word-break:break-word;display:flex;flex-direction:column;position:relative;line-height:var(--f7-message-bubble-line-height);font-size:var(--f7-message-bubble-font-size);border-radius:var(--f7-message-bubble-border-radius);padding:var(--f7-message-bubble-padding-vertical) var(--f7-message-bubble-padding-horizontal);min-height:var(--f7-message-bubble-min-height)}.message-image img{display:block;max-width:100%;height:auto;width:auto}.message-text-footer,.message-text-header{line-height:1}.message-text-header{color:var(--f7-message-text-header-text-color);opacity:var(--f7-message-text-header-opacity);font-size:var(--f7-message-text-header-font-size)}.message-text-footer{color:var(--f7-message-text-footer-text-color);opacity:var(--f7-message-text-footer-opacity);font-size:var(--f7-message-text-footer-font-size)}.message-text{text-align:left}.message-sent{text-align:right;flex-direction:row-reverse;align-self:flex-end}.message-sent .message-bubble{color:var(--f7-message-sent-text-color);background:var(--f7-message-sent-bg-color,var(--f7-theme-color))}.message-sent .message-content{align-items:flex-end}.message-sent.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0 var(--f7-message-bubble-border-radius)}.message-received{flex-direction:row}.message-received .message-bubble{color:var(--f7-message-received-text-color);background:var(--f7-message-received-bg-color)}.message-received .message-content{align-items:flex-start}.message-received.message-tail .message-bubble{border-radius:var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) var(--f7-message-bubble-border-radius) 0}.message:not(.message-last) .message-avatar{opacity:0}.message:not(.message-first) .message-name{display:none}.message.message-same-name .message-name{display:none}.message.message-same-header .message-header{display:none}.message.message-same-footer .message-footer{display:none}.message-appear-from-bottom{animation:message-appear-from-bottom .3s}.message-appear-from-top{animation:message-appear-from-top .3s}.message-typing-indicator{display:inline-block;font-size:0;vertical-align:middle}.message-typing-indicator>div{display:inline-block;position:relative;background:var(--f7-message-typing-indicator-bg-color);opacity:var(--f7-message-typing-indicator-opacity);vertical-align:middle;border-radius:50%}@keyframes message-appear-from-bottom{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes message-appear-from-top{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}.ios .message-footer b,.ios .message-header b,.ios .message-name b,.ios .messages-title b{font-weight:600}.ios .message-header,.ios .message-name{margin-bottom:3px}.ios .message-footer{margin-top:3px}.ios .message-bubble{min-width:48px}.ios .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal))}.ios .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical))}.ios .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.ios .message-text-header{margin-bottom:3px}.ios .message-text-footer{margin-top:3px}.ios .message-received{margin-left:calc(10px + var(--f7-safe-area-left))}.ios .message-received .message-footer,.ios .message-received .message-header,.ios .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.ios .message-received .message-bubble{padding-left:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received .message-image{margin-left:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-received.message-tail:not(.message-typing) .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 42% 46% 56%}.ios .message-received.message-tail:not(.message-typing) .message-bubble .message-image:last-child img{border-bottom-left-radius:0px}.ios .message-sent{margin-right:calc(10px + var(--f7-safe-area-right))}.ios .message-sent .message-footer,.ios .message-sent .message-header,.ios .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.ios .message-sent .message-bubble{padding-right:calc(var(--f7-message-bubble-padding-horizontal) + 6px);-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent .message-image{margin-right:calc(-1 * (var(--f7-message-bubble-padding-horizontal) + 6px))}.ios .message-sent.message-tail .message-bubble{-webkit-mask-box-image:url("data:image/svg+xml;charset=utf-8,") 50% 56% 46% 42%}.ios .message-sent.message-tail .message-bubble .message-image:last-child img{border-bottom-right-radius:0px}.ios .message+.message:not(.message-first){margin-top:1px}.ios .message-received.message-typing .message-content:after,.ios .message-received.message-typing .message-content:before{content:'';position:absolute;background:var(--f7-message-received-bg-color);border-radius:50%}.ios .message-received.message-typing .message-content:after{width:11px;height:11px;left:4px;bottom:0px}.ios .message-received.message-typing .message-content:before{width:6px;height:6px;left:-1px;bottom:-4px}.ios .message-typing-indicator>div{width:9px;height:9px}.ios .message-typing-indicator>div+div{margin-left:4px}.ios .message-typing-indicator>div:nth-child(1){animation:ios-message-typing-indicator .9s infinite}.ios .message-typing-indicator>div:nth-child(2){animation:ios-message-typing-indicator .9s 150ms infinite}.ios .message-typing-indicator>div:nth-child(3){animation:ios-message-typing-indicator .9s .3s infinite}@keyframes ios-message-typing-indicator{0%{opacity:.35}25%{opacity:.2}50%{opacity:.2}}.md .message-footer b,.md .message-header b,.md .message-name b,.md .messages-title b{font-weight:500}.md .message-header,.md .message-name{margin-bottom:2px}.md .message-footer{margin-top:2px}.md .message-text-header{margin-bottom:4px}.md .message-text-footer{margin-top:4px}.md .message-received.message-tail .message-bubble:before,.md .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.md .message-received{margin-left:calc(8px + var(--f7-safe-area-left))}.md .message-received .message-avatar+.message-content{margin-left:var(--f7-message-bubble-padding-horizontal)}.md .message-received.message-tail .message-bubble:before{border-left:8px solid transparent;border-right:0 solid transparent;border-bottom:8px solid var(--f7-message-received-bg-color);right:100%}.md .message-sent{margin-right:calc(8px + var(--f7-safe-area-right))}.md .message-sent .message-avatar+.message-content{margin-right:var(--f7-message-bubble-padding-horizontal)}.md .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:8px solid transparent;border-bottom:8px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%}.md .message+.message:not(.message-first){margin-top:8px}.md .message-typing-indicator>div{width:6px;height:6px}.md .message-typing-indicator>div+div{margin-left:6px}.md .message-typing-indicator>div:nth-child(1){animation:md-message-typing-indicator .9s infinite}.md .message-typing-indicator>div:nth-child(2){animation:md-message-typing-indicator .9s 150ms infinite}.md .message-typing-indicator>div:nth-child(3){animation:md-message-typing-indicator .9s .3s infinite}@keyframes md-message-typing-indicator{0%{transform:translateY(0%)}25%{transform:translateY(-5px)}50%{transform:translateY(0%)}}.aurora .message-footer b,.aurora .message-header b,.aurora .message-name b,.aurora .messages-title b{font-weight:500}.aurora .message-header,.aurora .message-name{margin-bottom:2px}.aurora .message-footer{margin-top:2px}.aurora .message-text-header{margin-bottom:2px}.aurora .message-text-footer{margin-top:2px}.aurora .message-received.message-tail .message-bubble:before,.aurora .message-sent.message-tail .message-bubble:before{position:absolute;content:'';bottom:0;width:0;height:0}.aurora .message-image{margin:var(--f7-message-bubble-padding-vertical) calc(-1 * var(--f7-message-bubble-padding-horizontal) + 4px)}.aurora .message-image:first-child{margin-top:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:first-child img{border-top-left-radius:var(--f7-message-bubble-border-radius);border-top-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-image:last-child{margin-bottom:calc(-1 * var(--f7-message-bubble-padding-vertical) + 4px)}.aurora .message-image:last-child img{border-bottom-left-radius:var(--f7-message-bubble-border-radius);border-bottom-right-radius:var(--f7-message-bubble-border-radius)}.aurora .message-received{margin-left:calc(16px + var(--f7-safe-area-left))}.aurora .message-received .message-avatar+.message-content{margin-left:5px}.aurora .message-received .message-footer,.aurora .message-received .message-header,.aurora .message-received .message-name{margin-left:var(--f7-message-bubble-padding-horizontal)}.aurora .message-received.message-tail .message-bubble:before{border-left:6px solid transparent;border-right:0 solid transparent;border-bottom:6px solid var(--f7-message-received-bg-color);right:100%;transform:translate(2px,0px) rotate(-15deg);transform-origin:right bottom}.aurora .message-sent{margin-right:calc(16px + var(--f7-safe-area-right))}.aurora .message-sent .message-avatar+.message-content{margin-right:5px}.aurora .message-sent .message-footer,.aurora .message-sent .message-header,.aurora .message-sent .message-name{margin-right:var(--f7-message-bubble-padding-horizontal)}.aurora .message-sent.message-tail .message-bubble:before{border-left:0 solid transparent;border-right:6px solid transparent;border-bottom:6px solid var(--f7-message-sent-bg-color,var(--f7-theme-color));left:100%;transform:translate(-2px,0px) rotate(15deg);transform-origin:left bottom}.aurora .message+.message:not(.message-first){margin-top:5px}.aurora .message-typing-indicator>div{width:6px;height:6px}.aurora .message-typing-indicator>div+div{margin-left:4px}.aurora .message-typing-indicator>div:nth-child(1){animation:aurora-message-typing-indicator .9s infinite}.aurora .message-typing-indicator>div:nth-child(2){animation:aurora-message-typing-indicator .9s 150ms infinite}.aurora .message-typing-indicator>div:nth-child(3){animation:aurora-message-typing-indicator .9s .3s infinite}@keyframes aurora-message-typing-indicator{0%{transform:translateY(0%)}50%{transform:translateY(-5px)}100%{transform:translateY(0%)}}
\ No newline at end of file
diff --git a/www/assets/framework7/components/messages/messages.d.ts b/www/assets/framework7/components/messages/messages.d.ts
index 11e52920d..8554a8ba0 100644
--- a/www/assets/framework7/components/messages/messages.d.ts
+++ b/www/assets/framework7/components/messages/messages.d.ts
@@ -1,9 +1,5 @@
import { Dom7Array } from 'dom7';
-import Framework7, {
- CSSSelector,
- Framework7EventsClass,
- Framework7Plugin,
-} from '../app/app-class.js';
+import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Messages {
interface Messages extends Framework7EventsClass {
diff --git a/www/assets/framework7/components/messages/messages.js b/www/assets/framework7/components/messages/messages.js
index b2257d129..effb37744 100644
--- a/www/assets/framework7/components/messages/messages.js
+++ b/www/assets/framework7/components/messages/messages.js
@@ -1,73 +1 @@
-import $ from '../../shared/dom7.js';
-import Messages from './messages-class.js';
-import ConstructorMethods from '../../shared/constructor-methods.js';
-export default {
- name: 'messages',
- static: {
- Messages
- },
-
- create() {
- const app = this;
- app.messages = ConstructorMethods({
- defaultSelector: '.messages',
- constructor: Messages,
- app,
- domProp: 'f7Messages',
- addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')
- });
- },
-
- on: {
- tabBeforeRemove(tabEl) {
- const app = this;
- $(tabEl).find('.messages-init').each(messagesEl => {
- app.messages.destroy(messagesEl);
- });
- },
-
- tabMounted(tabEl) {
- const app = this;
- $(tabEl).find('.messages-init').each(messagesEl => {
- app.messages.create({
- el: messagesEl
- });
- });
- },
-
- pageBeforeRemove(page) {
- const app = this;
- page.$el.find('.messages-init').each(messagesEl => {
- app.messages.destroy(messagesEl);
- });
- },
-
- pageInit(page) {
- const app = this;
- page.$el.find('.messages-init').each(messagesEl => {
- app.messages.create({
- el: messagesEl
- });
- });
- }
-
- },
- vnode: {
- 'messages-init': {
- insert(vnode) {
- const app = this;
- const messagesEl = vnode.elm;
- app.messages.create({
- el: messagesEl
- });
- },
-
- destroy(vnode) {
- const app = this;
- const messagesEl = vnode.elm;
- app.messages.destroy(messagesEl);
- }
-
- }
- }
-};
\ No newline at end of file
+(function framework7ComponentLoader(e,s){void 0===s&&(s=!0);var a=e.$,t=e.utils,r=(e.getDevice,e.getSupport,e.Class),n=(e.Modal,e.ConstructorMethods);e.ModalMethods;function i(e){this.wrapped=e}function o(e){var s,a;function t(s,a){try{var n=e[s](a),o=n.value,g=o instanceof i;Promise.resolve(g?o.wrapped:o).then((function(e){g?t("return"===s?"return":"next",e):r(n.done?"return":"normal",e)}),(function(e){t("throw",e)}))}catch(e){r("throw",e)}}function r(e,r){switch(e){case"return":s.resolve({value:r,done:!0});break;case"throw":s.reject(r);break;default:s.resolve({value:r,done:!1})}(s=s.next)?t(s.key,s.arg):a=null}this._invoke=function(e,r){return new Promise((function(n,i){var o={key:e,arg:r,resolve:n,reject:i,next:null};a?a=a.next=o:(s=a=o,t(e,r))}))},"function"!=typeof e.return&&(this.return=void 0)}function g(){return(g=Object.assign||function(e){for(var s=1;s