| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /framework7/node_modules/.vite/deps/ |
Upload File : |
{
"version": 3,
"sources": ["../../framework7/components/dialog/dialog-class.js", "../../framework7/components/dialog/dialog.js", "../../framework7/components/popup/popup-class.js", "../../framework7/components/popup/popup.js", "../../framework7/components/login-screen/login-screen-class.js", "../../framework7/components/login-screen/login-screen.js", "../../framework7/components/popover/popover-class.js", "../../framework7/components/popover/popover.js", "../../framework7/components/actions/actions-class.js", "../../framework7/components/actions/actions.js", "../../framework7/components/sheet/sheet-class.js", "../../framework7/components/sheet/sheet.js", "../../framework7/components/toast/toast-class.js", "../../framework7/components/toast/toast.js", "../../framework7/components/preloader/preloader.js", "../../framework7/components/progressbar/progressbar.js", "../../framework7/components/sortable/sortable.js", "../../framework7/components/swipeout/swipeout.js", "../../framework7/components/accordion/accordion.js", "../../framework7/components/contacts-list/contacts-list.js", "../../framework7/components/virtual-list/virtual-list-class.js", "../../framework7/components/virtual-list/virtual-list.js", "../../framework7/components/list-index/list-index-class.js", "../../framework7/components/list-index/list-index.js", "../../framework7/components/timeline/timeline.js", "../../framework7/components/tabs/tabs.js", "../../framework7/components/panel/swipe-panel.js", "../../framework7/components/panel/resizable-panel.js", "../../framework7/components/panel/panel-class.js", "../../framework7/components/panel/panel.js", "../../framework7/components/card/card.js", "../../framework7/components/chip/chip.js", "../../framework7/components/form/form.js", "../../framework7/components/input/input.js", "../../framework7/components/checkbox/checkbox.js", "../../framework7/components/radio/radio.js", "../../framework7/components/toggle/toggle-class.js", "../../framework7/components/toggle/toggle.js", "../../framework7/components/range/range-class.js", "../../framework7/components/range/range.js", "../../framework7/components/stepper/stepper-class.js", "../../framework7/components/stepper/stepper.js", "../../framework7/components/searchbar/remove-diacritics.js", "../../framework7/components/smart-select/smart-select-class.js", "../../framework7/components/smart-select/smart-select.js", "../../framework7/components/grid/grid.js", "../../framework7/components/calendar/calendar-class.js", "../../framework7/components/calendar/calendar.js", "../../framework7/components/picker/picker-column.js", "../../framework7/components/picker/picker-class.js", "../../framework7/components/picker/picker.js", "../../framework7/components/infinite-scroll/infinite-scroll.js", "../../framework7/components/pull-to-refresh/pull-to-refresh-class.js", "../../framework7/components/pull-to-refresh/pull-to-refresh.js", "../../framework7/components/data-table/data-table-class.js", "../../framework7/components/data-table/data-table.js", "../../framework7/components/fab/fab.js", "../../framework7/components/searchbar/searchbar-class.js", "../../framework7/components/searchbar/searchbar.js", "../../framework7/components/messages/messages-class.js", "../../framework7/components/messages/messages.js", "../../framework7/components/messagebar/messagebar-class.js", "../../framework7/components/messagebar/messagebar.js", "../../framework7/node_modules/swiper/shared/ssr-window.esm.mjs", "../../framework7/node_modules/swiper/shared/utils.mjs", "../../framework7/node_modules/swiper/shared/swiper-core.mjs", "../../framework7/node_modules/swiper/modules/virtual.mjs", "../../framework7/node_modules/swiper/modules/keyboard.mjs", "../../framework7/node_modules/swiper/modules/mousewheel.mjs", "../../framework7/node_modules/swiper/shared/create-element-if-not-defined.mjs", "../../framework7/node_modules/swiper/modules/navigation.mjs", "../../framework7/node_modules/swiper/shared/classes-to-selector.mjs", "../../framework7/node_modules/swiper/modules/pagination.mjs", "../../framework7/node_modules/swiper/modules/scrollbar.mjs", "../../framework7/node_modules/swiper/modules/parallax.mjs", "../../framework7/node_modules/swiper/modules/zoom.mjs", "../../framework7/node_modules/swiper/modules/controller.mjs", "../../framework7/node_modules/swiper/modules/a11y.mjs", "../../framework7/node_modules/swiper/modules/history.mjs", "../../framework7/node_modules/swiper/modules/hash-navigation.mjs", "../../framework7/node_modules/swiper/modules/autoplay.mjs", "../../framework7/node_modules/swiper/modules/thumbs.mjs", "../../framework7/node_modules/swiper/modules/free-mode.mjs", "../../framework7/node_modules/swiper/modules/grid.mjs", "../../framework7/node_modules/swiper/modules/manipulation.mjs", "../../framework7/node_modules/swiper/shared/effect-init.mjs", "../../framework7/node_modules/swiper/shared/effect-target.mjs", "../../framework7/node_modules/swiper/shared/effect-virtual-transition-end.mjs", "../../framework7/node_modules/swiper/modules/effect-fade.mjs", "../../framework7/node_modules/swiper/modules/effect-cube.mjs", "../../framework7/node_modules/swiper/shared/create-shadow.mjs", "../../framework7/node_modules/swiper/modules/effect-flip.mjs", "../../framework7/node_modules/swiper/modules/effect-coverflow.mjs", "../../framework7/node_modules/swiper/modules/effect-creative.mjs", "../../framework7/node_modules/swiper/modules/effect-cards.mjs", "../../framework7/node_modules/swiper/swiper-bundle.mjs", "../../framework7/node_modules/swiper/shared/update-swiper.mjs", "../../framework7/node_modules/swiper/shared/get-element-params.mjs", "../../framework7/node_modules/swiper/swiper-element-bundle.mjs", "../../framework7/components/swiper/swiper.js", "../../framework7/components/photo-browser/photo-browser-class.js", "../../framework7/components/photo-browser/photo-browser.js", "../../framework7/components/notification/notification-class.js", "../../framework7/components/notification/notification.js", "../../framework7/components/autocomplete/autocomplete-class.js", "../../framework7/components/autocomplete/autocomplete.js", "../../framework7/components/tooltip/tooltip-class.js", "../../framework7/components/tooltip/tooltip.js", "../../framework7/components/skeleton/skeleton.js", "../../framework7/components/color-picker/modules/alpha-slider.js", "../../framework7/components/color-picker/modules/current-color.js", "../../framework7/components/color-picker/modules/hex.js", "../../framework7/components/color-picker/modules/hsb-sliders.js", "../../framework7/components/color-picker/modules/hue-slider.js", "../../framework7/components/color-picker/modules/brightness-slider.js", "../../framework7/components/color-picker/modules/palette.js", "../../framework7/components/color-picker/modules/initial-current-colors.js", "../../framework7/components/color-picker/modules/rgb-bars.js", "../../framework7/components/color-picker/modules/rgb-sliders.js", "../../framework7/components/color-picker/modules/sb-spectrum.js", "../../framework7/components/color-picker/modules/hs-spectrum.js", "../../framework7/components/color-picker/modules/wheel.js", "../../framework7/components/color-picker/color-picker-class.js", "../../framework7/components/color-picker/color-picker.js", "../../framework7/components/treeview/treeview.js", "../../framework7/components/text-editor/text-editor-class.js", "../../framework7/components/text-editor/text-editor.js", "../../framework7/components/breadcrumbs/breadcrumbs.js", "../../framework7/components/typography/typography.js", "../../framework7/framework7-lite-bundle.esm.js"],
"sourcesContent": ["import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {}\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const dialog = this;\n const device = getDevice();\n const document = getDocument();\n const {\n title,\n text,\n content,\n buttons,\n verticalButtons,\n cssClass,\n backdrop\n } = extendedParams;\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = $jsx(\"div\", {\n class: \"dialog-buttons\"\n }, buttons.map(button => $jsx(\"span\", {\n class: `dialog-button${button.strong ? ' dialog-button-strong' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}`\n }, button.text)));\n }\n const dialogHtml = $jsx(\"div\", {\n class: dialogClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"dialog-inner\"\n }, title && $jsx(\"div\", {\n class: \"dialog-title\"\n }, title), text && $jsx(\"div\", {\n class: \"dialog-text\"\n }, text), content), buttonsHTML);\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return dialog.destroy();\n }\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.$el.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"dialog-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((buttonEl, index) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('<div class=\"dialog-text\"></div>');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('<div class=\"dialog-title\"></div>');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n }\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {\n dialog.close();\n }\n }\n }\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = dialog;\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n return dialog;\n }\n}\nexport default Dialog;", "import { extend, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport Dialog from './dialog-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true\n }\n },\n static: {\n Dialog\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = autoFocus ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n }\n }\n } : {};\n const isIosTheme = app.theme === 'ios';\n app.dialog = extend(ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in'\n }), {\n // Shortcuts\n alert() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null\n }],\n destroyOnClose\n }).open();\n },\n prompt() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `<div class=\"dialog-input-field input\"><input type=\"text\" class=\"dialog-input\" value=\"${defaultValue}\"></div>`,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n confirm() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null\n }],\n destroyOnClose\n }).open();\n },\n login() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"text\" name=\"dialog-username\" placeholder=\"${app.params.dialog.usernamePlaceholder}\" class=\"dialog-input\">\n </div>\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n </div>`,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n password() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n // prettier-ignore\n content: `\n <div class=\"dialog-input-field input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n </div>`,\n buttons: [{\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: null\n }, {\n text: app.params.dialog.buttonOk,\n strong: isIosTheme,\n keyCodes: keyboardActions ? [13] : null\n }],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler\n }).open();\n },\n preloader(title, color) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n // prettier-ignore\n content: `<div class=\"preloader${color ? ` color-${color}` : ''}\">${preloaderInner}</div>`,\n cssClass: 'dialog-preloader',\n destroyOnClose\n }).open();\n },\n progress() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n // prettier-ignore\n content: `\n <div class=\"progressbar${infinite ? '-infinite' : ''}${color ? ` color-${color}` : ''}\">\n ${!infinite ? '<span></span>' : ''}\n </div>\n `,\n destroyOnClose\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n }\n });\n }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popup, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popup = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return popup.destroy();\n }\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n if (popup.params.backdropUnique) {\n $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n popup.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popup.$containerEl.children('.popup-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"popup-backdrop\"></div>');\n popup.$containerEl.append($backdropEl);\n }\n }\n extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html')\n });\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each(popupEl => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n let pushOffset;\n let isPush;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose || !e.isTrusted) return;\n if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n $el.transition('');\n return;\n }\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.$el.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`, 'important');\n });\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0, 0px , 0px) scale(${scale})`, 'important');\n });\n }\n } else {\n $pushEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = new Date().getTime() - touchStartTime;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n let hasPreviousPushPopup;\n const updatePushOffset = () => {\n const wasPush = isPush;\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush && !wasPush) {\n // eslint-disable-next-line\n setPushOffset();\n } else if (isPush && wasPush) {\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n } else if (!isPush && wasPush) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n };\n const setPushOffset = () => {\n app.off('resize', updatePushOffset);\n if (popup.push) {\n isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) {\n pushOffset = 0;\n }\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-offset', `${pushOffset}px`);\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n app.on('resize', updatePushOffset);\n };\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n setPushOffset();\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n app.off('resize', updatePushOffset);\n });\n popup.on('closed', () => {\n $el.removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-offset');\n }\n });\n $el[0].f7Modal = popup;\n return popup;\n }\n}\nexport default Popup;", "import Popup from './popup-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n containerEl: null\n }\n },\n static: {\n Popup\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup'\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const loginScreen = this;\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen'\n });\n $el[0].f7Modal = loginScreen;\n return loginScreen;\n }\n}\nexport default LoginScreen;", "import LoginScreen from './login-screen-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in'\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n }\n }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.popover, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const popover = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n const forceBackdropUnique = popover.params.backdrop && app.$el.find('.popover.modal-in').filter(anotherPopoverEl => anotherPopoverEl !== $el[0]).length > 0;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n if (popover.params.backdropUnique || forceBackdropUnique) {\n $backdropEl = $('<div class=\"popover-backdrop popover-backdrop-unique\"></div>');\n $backdropEl[0].f7PopoverRef = popover;\n popover.$containerEl.append($backdropEl);\n } else {\n $backdropEl = popover.$containerEl.children('.popover-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"popover-backdrop\"></div>');\n popover.$containerEl.append($backdropEl);\n }\n }\n\n // Find Arrow\n let $arrowEl;\n if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {\n $arrowEl = $('<div class=\"popover-arrow\"></div>');\n $el.prepend($arrowEl);\n } else {\n $arrowEl = $el.find('.popover-arrow');\n }\n\n // Open\n const originalOpen = popover.open;\n extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $arrowEl,\n arrowEl: $arrowEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n forceBackdropUnique,\n open() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n }\n });\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n let touchStartTarget = null;\n function handleTouchStart(e) {\n touchStartTarget = e.target;\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target && touchStartTarget === target) {\n popover.close();\n } else if (popover.params.closeByOutsideClick && touchStartTarget === target) {\n const isAnotherPopoverBackdrop = $target.hasClass('popover-backdrop-unique') && target.f7PopoverRef !== popover || $target.hasClass('popover-backdrop') && target !== popover.backdropEl;\n const isAnotherPopoverTarget = target.closest('.popover') && target.closest('.popover') !== popover.$el[0];\n if (!isAnotherPopoverBackdrop && !isAnotherPopoverTarget) {\n popover.close();\n }\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('touchstart', handleTouchStart);\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('touchstart', handleTouchStart);\n app.off('click', handleClick);\n }\n });\n $el[0].f7Modal = popover;\n return popover;\n }\n resize() {\n const popover = this;\n const {\n app,\n $el,\n $targetEl,\n $arrowEl\n } = popover;\n const {\n targetX,\n targetY,\n verticalPosition\n } = popover.params;\n $el.css({\n left: '',\n top: ''\n });\n const [width, height] = [$el.width(), $el.height()];\n let arrowSize = 0;\n let arrowLeft;\n let arrowTop;\n const hasArrow = $arrowEl.length > 0;\n const arrowMin = app.theme === 'ios' ? 13 : 24;\n if (hasArrow) {\n $arrowEl.removeClass('on-left on-right on-top on-bottom').css({\n left: '',\n top: ''\n });\n arrowSize = $arrowEl.width() / 2;\n }\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n let safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);\n let safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;\n if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;\n let position = forcedPosition || 'top';\n if (forcedPosition === 'top' || !forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height - arrowSize;\n } else if (forcedPosition === 'bottom' || !forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + arrowSize;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (safeAreaLeft) {\n left = Math.max(left, safeAreaLeft);\n }\n if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {\n left = app.width - 5 - safeAreaRight - width;\n }\n diff -= left;\n if (hasArrow) {\n if (position === 'top') {\n $arrowEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $arrowEl.addClass('on-top');\n }\n arrowLeft = width / 2 - arrowSize + diff;\n arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n left: `${arrowLeft}px`\n });\n }\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - arrowSize;\n if (hasArrow) $arrowEl.addClass('on-right');\n if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {\n if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;\n if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;\n if (left < safeAreaLeft) left = safeAreaLeft;\n if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');\n }\n if (hasArrow) {\n arrowTop = height / 2 - arrowSize + diff;\n arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);\n $arrowEl.css({\n top: `${arrowTop}px`\n });\n }\n }\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n } else {\n hPosition = 'left';\n }\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n}\nexport default Popover;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Popover from './popover-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'popover',\n params: {\n popover: {\n verticalPosition: 'auto',\n arrow: true,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n containerEl: null\n }\n },\n static: {\n Popover\n },\n create() {\n const app = this;\n app.popover = extend(ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in'\n }), {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each(el => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(app, Object.assign({\n el: $popoverEl,\n targetEl\n }, data));\n }\n return popover.open(targetEl, animate);\n }\n });\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n }\n }\n};", "/* eslint indent: [\"off\"] */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\nimport $ from '../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.actions, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const actions = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content).filter(node => node.nodeType === 1).eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n if (actions.params.backdropUnique) {\n $backdropEl = $('<div class=\"popup-backdrop popup-backdrop-unique\"></div>');\n actions.$containerEl.append($backdropEl);\n } else {\n $backdropEl = actions.$containerEl.children('.actions-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"actions-backdrop\"></div>');\n actions.$containerEl.append($backdropEl);\n }\n }\n const originalOpen = actions.open;\n const originalClose = actions.close;\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const {\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight\n } = actions.params;\n if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {\n // Popover\n if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n containerEl: actions.params.containerEl,\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n }\n }\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each(buttonEl => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions'\n });\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n if ($el) {\n $el[0].f7Modal = actions;\n }\n return actions;\n }\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}`\n }, groups.map(group => $jsx(\"div\", {\n class: \"actions-group\"\n }, group.map(button => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (strong) buttonClasses.push('actions-button-strong');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, text);\n }\n return $jsx(\"div\", {\n class: buttonClasses.join(' ')\n }, icon && $jsx(\"div\", {\n class: \"actions-button-media\"\n }, icon), $jsx(\"div\", {\n class: \"actions-button-text\"\n }, text));\n }))));\n }\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const {\n groups\n } = actions;\n const cssClass = actions.params.cssClass;\n return $jsx(\"div\", {\n class: `popover popover-from-actions ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, groups.map(group => $jsx(\"div\", {\n class: \"list\"\n }, $jsx(\"ul\", null, group.map(button => {\n const itemClasses = [];\n const {\n color,\n bg,\n strong,\n disabled,\n label,\n text,\n icon\n } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (strong) itemClasses.push('popover-from-actions-strong');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `<li class=\"${itemClasses.join(' ')}\">${text}</li>`;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, $jsx(\"div\", {\n class: \"item-media\"\n }, icon), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, text))));\n }\n itemClasses.push('list-button');\n return $jsx(\"li\", null, $jsx(\"a\", {\n class: itemClasses.join(' ')\n }, text));\n }))))));\n }\n}\nexport default Actions;", "import Actions from './actions-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n backdropUnique: false,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n containerEl: null\n }\n },\n static: {\n Actions\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in'\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n }\n }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, getTranslate } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Modal from '../modal/modal-class.js';\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.sheet, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const sheet = this;\n const window = getWindow();\n const document = getDocument();\n const support = getSupport();\n const device = getDevice();\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content).filter(node => node.nodeType === 1).eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n if (sheet.params.backdropUnique) {\n $backdropEl = $('<div class=\"sheet-backdrop sheet-backdrop-unique\"></div>');\n sheet.$containerEl.append($backdropEl);\n } else {\n $backdropEl = sheet.$containerEl.children('.sheet-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"sheet-backdrop\"></div>');\n sheet.$containerEl.append($backdropEl);\n }\n }\n extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html')\n });\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n let newPaddingBottom;\n const scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = pageScroll + scrollElTop - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': ''\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n let pushOffset;\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n let breakpointsTranslate = [];\n let currentBreakpointIndex;\n let backdropBreakpointSet = true;\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted) return;\n if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n return;\n }\n if ($(e.target).closest('.sortable-handler').length > 0) return;\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY\n };\n touchStartTime = now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY\n };\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n touchesDiff = startTouch.y - currentTouch.y;\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.$el.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : useBreakpoints ? breakpointsTranslate[0] : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (useBreakpoints) {\n let progress = isTopSheetModal ? 1 + currentTranslate / sheetElOffsetHeight : 1 - currentTranslate / sheetElOffsetHeight;\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n // eslint-disable-next-line\n setBackdropBreakpoint(progress);\n // eslint-disable-next-line\n setPushBreakpoint(progress);\n }\n if (sheet.push && pushOffset && !useBreakpoints) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = currentTranslate / swipeStepTranslate;\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${scale})`, 'important');\n });\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - currentTranslate / swipeStepTranslate;\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('');\n if (!useBreakpoints) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n const timeDiff = new Date().getTime() - touchStartTime;\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {\n sheet.close();\n }\n return;\n }\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n if (timeDiff < 300 && diff > 10 && useBreakpoints) {\n // SHORT SWIPES BREAKPOINTS\n if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {\n if (currentBreakpointIndex === params.breakpoints.length - 1) {\n // open\n sheet.setBreakpoint(1);\n } else {\n // move to next breakpoint\n currentBreakpointIndex = Math.min(breakpointsTranslate.length - 1, currentBreakpointIndex + 1);\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n if (direction === closeDirection) {\n if (currentBreakpointIndex === 0) {\n // close\n sheet.close();\n } else {\n // move to prev breakpoint\n if (typeof currentBreakpointIndex === 'undefined') {\n currentBreakpointIndex = params.breakpoints.length - 1;\n } else {\n currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);\n }\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n }\n } else if (timeDiff < 300 && diff > 10) {\n // SHORT SWIPES SWIPE STEP\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300 && useBreakpoints) {\n // LONG SWIPES BREAKPOINTS\n const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];\n const closestTranslate = allBreakpoints.reduce((prev, curr) => {\n return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate) ? curr : prev;\n });\n const closestIndex = allBreakpoints.indexOf(closestTranslate);\n if (closestTranslate === 0) {\n // open\n sheet.setBreakpoint(1);\n } else if (closestIndex === 0) {\n // close\n sheet.close();\n } else {\n // set bp\n currentBreakpointIndex = closestIndex - 1;\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n } else if (timeDiff >= 300) {\n // LONG SWIPES SWIPE STEP\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < absSwipeStepTranslate / 2) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n sheet.emit('local::_swipeStep', false);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n sheet.emit('local::_swipeStep', true);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n const setPushBreakpoint = breakpoint => {\n const {\n pushBreakpoint\n } = params;\n if (pushBreakpoint === null || typeof pushBreakpoint === 'undefined' || !sheet.push || !pushOffset) return;\n if (breakpoint >= pushBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition('').forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);\n } else {\n const pushBreakpoints = [0, ...params.breakpoints, 1];\n const pushTransparentBreakpoint = pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];\n if (breakpoint <= pushTransparentBreakpoint) {\n $pushViewEl.transition('').css('transform', '');\n $pushViewEl.css('border-radius', '');\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n if (breakpoint === pushTransparentBreakpoint) {\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n } else {\n const progress = (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);\n sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');\n $pushViewEl.transition(0).forEach(el => {\n el.style.setProperty('transform', `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`, 'important');\n });\n $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);\n }\n }\n };\n const setBackdropBreakpoint = breakpoint => {\n const {\n backdrop,\n backdropBreakpoint\n } = params;\n if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;\n if (breakpoint >= backdropBreakpoint) {\n if (!backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: '',\n pointerEvents: ''\n });\n }\n backdropBreakpointSet = true;\n } else {\n const backdropBreakpoints = [0, ...params.breakpoints, 1];\n const backdropTransparentBreakpoint = backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];\n if (breakpoint <= backdropTransparentBreakpoint) {\n if (backdropBreakpointSet) {\n $backdropEl.transition('').css({\n opacity: 0,\n pointerEvents: 'none'\n });\n }\n backdropBreakpointSet = false;\n } else {\n const progress = (breakpoint - backdropTransparentBreakpoint) / (backdropBreakpoint - backdropTransparentBreakpoint);\n $backdropEl.transition(0).css({\n opacity: progress,\n pointerEvents: 'auto'\n });\n }\n }\n };\n sheet.calcBreakpoints = () => {\n if (!useBreakpoints) {\n return;\n }\n const fullSize = $el[0].offsetHeight;\n // eslint-disable-next-line\n const isTopSheetModal = $el.hasClass('sheet-modal-top');\n breakpointsTranslate = [];\n sheet.params.breakpoints.forEach(ratio => {\n breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));\n });\n };\n sheet.setBreakpoint = value => {\n if (!useBreakpoints) {\n return sheet;\n }\n if (value === 1) {\n // open\n if (!sheet.opened) {\n sheet.open();\n }\n $el.removeClass('modal-in-breakpoint');\n currentBreakpointIndex = undefined;\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n } else if (value === 0) {\n // close\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n sheet.close();\n } else {\n const index = params.breakpoints.indexOf(value);\n if (index < 0) return sheet;\n if (!sheet.opened) {\n sheet.open();\n }\n setBackdropBreakpoint(value);\n setPushBreakpoint(value);\n $el.trigger('sheet:breakpoint', value);\n sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);\n currentBreakpointIndex = index;\n $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);\n $el.addClass('modal-in-breakpoint');\n }\n return sheet;\n };\n const setBreakpointsOnResize = () => {\n sheet.calcBreakpoints();\n if (typeof currentBreakpointIndex !== 'undefined') {\n sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);\n }\n };\n sheet.setSwipeStep = function setSwipeStep(byResize) {\n if (byResize === void 0) {\n byResize = true;\n }\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n\n // eslint-disable-next-line\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n } else {\n swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n }\n };\n function onResize() {\n if (useBreakpoints) {\n setBreakpointsOnResize();\n } else {\n sheet.setSwipeStep(true);\n }\n }\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n app.on('resize', onResize);\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);\n $el.addClass('sheet-modal-push');\n if (!useBreakpoints) {\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n }\n if (!sheet.params.swipeToStep && !useBreakpoints) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.$el.children('.view, .views');\n pushBorderRadius = app.theme === 'ios' ? 10 : 16;\n $pushViewEl.css('border-radius', '0px');\n }\n }\n if (useBreakpoints) {\n sheet.calcBreakpoints();\n sheet.setBreakpoint(params.breakpoints[0]);\n } else if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n currentBreakpointIndex = undefined;\n if (sheet.params.swipeToStep || useBreakpoints) {\n $el.removeClass('modal-in-swipe-step modal-in-breakpoint');\n sheet.emit('local::_swipeStep', false);\n }\n app.off('resize', onResize);\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n if ($pushViewEl) {\n $pushViewEl.transform('');\n $pushViewEl.css('border-radius', '');\n }\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-offset');\n }\n });\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', false);\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', true);\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n sheet.emit('local::_swipeStep', $el.hasClass('modal-in-swipe-step'));\n };\n $el[0].f7Modal = sheet;\n return sheet;\n }\n}\nexport default Sheet;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Sheet from './sheet-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n backdropUnique: false,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n breakpoints: [],\n backdropBreakpoint: 0,\n pushBreakpoint: 0,\n swipeHandler: null,\n containerEl: null\n }\n },\n static: {\n Sheet\n },\n create() {\n const app = this;\n app.sheet = extend({}, ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in'\n }), {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n setBreakpoint(sheet, breakpoint) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.setBreakpoint) return sheetInstance.setBreakpoint(breakpoint);\n return undefined;\n }\n });\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n }\n }\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const toast = this;\n const window = getWindow();\n toast.app = app;\n toast.params = extendedParams;\n const {\n closeButton,\n closeTimeout\n } = toast.params;\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return toast.destroy();\n }\n extend(toast, {\n $el,\n el: $el[0],\n type: 'toast'\n });\n $el[0].f7Modal = toast;\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each(openedEl => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n return toast;\n }\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const {\n position,\n horizontalPosition,\n cssClass,\n icon,\n text,\n closeButton,\n closeButtonColor,\n closeButtonText\n } = toast.params;\n const horizontalClass = position === 'top' || position === 'bottom' ? `toast-horizontal-${horizontalPosition}` : '';\n return $jsx(\"div\", {\n class: `toast toast-${position} ${horizontalClass} ${cssClass || ''} ${icon ? 'toast-with-icon' : ''}`\n }, $jsx(\"div\", {\n class: \"toast-content\"\n }, icon && $jsx(\"div\", {\n class: \"toast-icon\"\n }, icon), $jsx(\"div\", {\n class: \"toast-text\"\n }, text), closeButton && !icon && $jsx(\"a\", {\n class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`\n }, closeButtonText)));\n }\n}\nexport default Toast;", "import { extend } from '../../shared/utils.js';\nimport Toast from './toast-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'toast',\n static: {\n Toast\n },\n create() {\n const app = this;\n app.toast = extend({}, ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in'\n }), {\n // Shortcuts\n show(params) {\n extend(params, {\n destroyOnClose: true\n });\n return new Toast(app, params).open();\n }\n });\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n horizontalPosition: 'left',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Preloader = {\n init(el) {\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const $el = $(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n $el.append(preloaders[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n if (Preloader.visible) return;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n // prettier-ignore\n app.$el.append(`\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-${color}\">${preloaderInner}</div>\n </div>\n `);\n Preloader.visible = true;\n },\n showIn(el, color) {\n if (color === void 0) {\n color = 'white';\n }\n const app = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n const preloaderInner = preloaders[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n // prettier-ignore\n $(el || app.$el).append(`\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-${color}\">${preloaderInner}</div>\n </div>\n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.$el.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();\n }\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n bindMethods(app, {\n preloader: Preloader\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each(preloaderEl => {\n app.preloader.init(preloaderEl);\n });\n }\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n }\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst Progressbar = {\n set() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.$el;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n const $el = $(el || app.$el);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $('<span></span>');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform(`translate3d(${(-100 + progressNormalized) * (app.rtl ? -1 : 1)}%,0,0)`);\n return $progressbarEl[0];\n },\n show() {\n const app = this;\n\n // '.page', 50, 'multi'\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let [el, progress, color] = args;\n let type = 'determined';\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.$el;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.$el;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.$el;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.$el;\n }\n const $el = $(el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n <span class=\"progressbar${type === 'infinite' ? '-infinite' : ''}${color ? ` color-${color}` : ''} progressbar-in\">\n ${type === 'infinite' ? '' : '<span></span>'}\n </span>`);\n $el.append($progressbarEl);\n }\n }\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide) {\n if (removeAfterHide === void 0) {\n removeAfterHide = true;\n }\n const app = this;\n const $el = $(el || app.$el);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n }\n};\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n bindMethods(app, {\n progressbar: Progressbar\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each(progressbarEl => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n }\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n }\n }\n }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Sortable = {\n init() {\n const app = this;\n const document = getDocument();\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n touchesDiff = pageY - touchStartY;\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n const scrollAddition = 44;\n let allowScroll = true;\n if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {\n allowScroll = false;\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n let scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n $sortingItems.each(el => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n let currentTranslate;\n const prevTranslate = $currentEl[0].f7Translate;\n if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {\n currentTranslate = -sortingElHeight;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {\n currentTranslate = sortingElHeight;\n $currentEl[0].f7Translate = currentTranslate;\n $currentEl.transform(`translate3d(0, ${currentTranslate}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n currentTranslate = undefined;\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n if (prevTranslate !== currentTranslate) {\n $currentEl.trigger('sortable:move');\n app.emit('sortableMove', $currentEl[0], $sortableContainer[0]);\n }\n $currentEl[0].f7Translate = currentTranslate;\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;\n const virtualList = $sortableContainer[0].f7VirtualList;\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', {\n from: indexFrom,\n to: indexTo\n });\n app.emit('sortableSort', $sortingEl[0], {\n from: indexFrom,\n to: indexTo,\n el: $sortingEl[0]\n }, $sortableContainer[0]);\n }\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n const activeListener = getSupport().passiveListener ? {\n passive: false,\n capture: false\n } : false;\n $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el) {\n if (el === void 0) {\n el = '.list.sortable';\n }\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n }\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n sortable: Sortable\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n }\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.sortable.toggle(data.sortable);\n }\n }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nconst Swipeout = {\n init() {\n const app = this;\n const document = getDocument();\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n function handleTouchStart(e) {\n if (!app.swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = new Date().getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;\n }\n if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';\n let buttonOffset;\n let progress;\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n const ratio = buttonTranslate / -actionsRightWidth;\n buttonTranslate = -actionsRightWidth - (-buttonTranslate - actionsRightWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({\n left: `${overswipeRight ? -buttonOffset : 0}px`\n });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n const ratio = buttonTranslate / actionsRightWidth;\n buttonTranslate = actionsLeftWidth + (buttonTranslate - actionsLeftWidth) ** 0.8;\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((buttonEl, index) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({\n left: `${overswipeLeft ? buttonOffset : 0}px`\n });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if (opened && action === 'open' || !opened && action === 'close') return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n app.on('touchstart', e => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (!($(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)) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open() {\n const app = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonEl, buttonIndex) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n app.swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n let closeTimeout;\n function onSwipeoutClose() {\n app.swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n $buttons.each(buttonEl => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n $buttonEl.css({\n left: '0px'\n }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({\n height: `${$el.outerHeight()}px`\n });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n nextFrame(() => {\n $el.addClass('swipeout-deleting swipeout-transitioning').css({\n height: '0px'\n }).find('.swipeout-content').transform('translate3d(-100%,0,0)');\n });\n }\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n overswipeRatio: 1.2\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n swipeout: Swipeout\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const {\n confirm,\n confirmTitle\n } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n }\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', {\n prevent\n }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', {\n prevent\n }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);\n }\n};\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n bindMethods(app, {\n accordion: Accordion\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n }\n }\n};", "export default {\n name: 'contactsList'\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass VirtualList extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const vl = this;\n const device = getDevice();\n const document = getDocument();\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n }\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n <li>\n <div class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">${item}</div>\n </div>\n </div>\n </li>\n `.trim();\n },\n on: {}\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n vl.params = extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (device.ios && device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append <ul>\n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('<ul></ul>');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;\n extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n autoHeight: vl.params.height === 'auto'\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n return vl;\n }\n setListSize(autoHeightRerender) {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n if (!autoHeightRerender) {\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n }\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else if (vl.autoHeight) {\n vl.listHeight = 0;\n if (!vl.heights) vl.heights = [];\n if (!vl.heightsCalculated) vl.heightsCalculated = [];\n const renderedItems = {};\n vl.$itemsWrapEl.find(`[data-virtual-list-index]`).forEach(el => {\n renderedItems[parseInt(el.getAttribute('data-virtual-list-index'), 10)] = el;\n });\n for (let i = 0; i < items.length; i += 1) {\n const itemIndex = vl.items.indexOf(items[i]);\n const renderedItem = renderedItems[itemIndex];\n if (renderedItem) {\n if (!vl.heightsCalculated.includes(itemIndex)) {\n vl.heights[itemIndex] = renderedItem.offsetHeight;\n vl.heightsCalculated.push(itemIndex);\n }\n }\n if (typeof vl.heights[i] === 'undefined') {\n vl.heights[itemIndex] = 40;\n }\n vl.listHeight += vl.heights[itemIndex];\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;\n vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;\n }\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({\n height: `${vl.listHeight}px`\n });\n }\n }\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;\n }\n if (typeof toIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);\n }\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight || vl.autoHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = i * vl.params.height / vl.params.cols;\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight || vl.autoHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${i * vl.params.height / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems\n });\n }\n if (vl.autoHeight) {\n requestAnimationFrame(() => {\n vl.setListSize(true);\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop) {\n if (resetScrollTop === void 0) {\n resetScrollTop = true;\n }\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight || vl.autoHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach(cached => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.heightsCalculated = [];\n vl.setListSize();\n vl.render(true);\n }\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n deleteProps(vl);\n vl = null;\n }\n}\nexport default VirtualList;", "import VirtualList from './virtual-list-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'virtualList',\n static: {\n VirtualList\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList'\n });\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass ListIndex extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const index = this;\n const defaults = {\n el: null,\n // where to render indexes\n listEl: null,\n // list el to generate indexes\n indexes: 'auto',\n // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n <li>${itemContent}</li>\n `.trim();\n },\n renderSkipPlaceholder() {\n return '<li class=\"list-index-skip-placeholder\"></li>';\n },\n on: {}\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n index.params = extend(defaults, params);\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('<ul></ul>');\n $el.append($ul);\n }\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n $el[0].f7ListIndex = index;\n extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = {\n index\n };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n index.$el.trigger('listindex:click', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', {\n content: itemContent,\n index: itemIndex\n });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $('<span class=\"list-index-label\"></span>');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n previousIndex = itemIndex;\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = getSupport().passiveListener ? {\n passive: true\n } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);\n app.on('resize', handleResize);\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);\n app.off('resize', handleResize);\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const {\n $listEl,\n $pageContentEl,\n app\n } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n let $scrollToEl;\n $listEl.find('.list-group-title').each(el => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);\n } else {\n $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);\n }\n return index;\n }\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n render() {\n const index = this;\n const {\n $ul,\n indexes,\n skipRate\n } = index;\n let wasSkipped;\n const html = indexes.map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n }).join('');\n $ul.html(html);\n return index;\n }\n calcSize() {\n const index = this;\n const {\n app,\n params,\n el,\n indexes\n } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil((items * 2 - 1) / maxItems);\n }\n index.height = height;\n index.skipRate = skipRate;\n return index;\n }\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n index.$listEl.find('.list-group-title').each(el => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n return index;\n }\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n deleteProps(index);\n index = null;\n }\n}\nexport default ListIndex;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport ListIndex from './list-index-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'listIndex',\n static: {\n ListIndex\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex'\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each(listIndexEl => {\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each(listIndexEl => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n }\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = extend($(listIndexEl).dataset(), {\n el: listIndexEl\n });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n }\n }\n }\n};", "export default {\n name: 'timeline'\n};", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nconst Tab = {\n show() {\n const app = this;\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n let animatedInit;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0] && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n animatedInit = args[0].animatedInit;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0]\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach(callback => {\n callback();\n });\n }\n let animated = false;\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl[0].nodeName.toLowerCase() === 'swiper-container' && app.swiper) {\n swiper = $tabsEl[0].swiper;\n const newTabIndex = swiper.slides.indexOf($newTabEl[0]);\n if (swiper && swiper.activeIndex !== newTabIndex) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n }).slideTo(newTabIndex, animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper.once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each(pageEl => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {\n $('[data-tab]').each(el => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $('[data-tab]').each(tabLinkElement => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter(tabLinkElement => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-icons');\n const hasHighlight = app.toolbar && $tabbarEl.length > 0 && ($tabbarEl.hasClass('tabbar-highlight') || app.theme !== 'ios');\n if (hasHighlight) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated\n };\n }\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n extend(app, {\n tab: {\n show: Tab.show.bind(app)\n }\n });\n },\n on: {\n 'pageInit tabMounted': function onInit(pageOrTabEl) {\n const $el = $(pageOrTabEl.el || pageOrTabEl);\n const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n if (!animatedTabEl) return;\n const app = this;\n app.tab.show({\n tabEl: animatedTabEl,\n animatedInit: true,\n animate: false\n });\n }\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {\n const app = this;\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate\n });\n }\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, now, nextFrame } from '../../shared/utils.js';\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n extend(panel, {\n swipeable: true,\n swipeInitialized: true\n });\n const params = panel.params;\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n let otherPanel;\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n let $viewEl;\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n if ($(e.target).closest('.range-slider, swiper-container.tabs, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n touchStartTime = now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {\n isTouched = false;\n return;\n }\n }\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n if ($backdropEl) $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n isMoved = true;\n if (e.cancelable) {\n e.preventDefault();\n }\n touchesDiff = pageX - touchesStart.x + threshold;\n const startTranslate = effect === 'floating' ? 8 : 0;\n if (side === 'right') {\n if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n translate = touchesDiff + (panel.opened ? startTranslate : panelWidth);\n if (translate < 0 - startTranslate) translate = -startTranslate;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : startTranslate);\n if (translate < 0) translate = 0;\n if (translate > panelWidth + startTranslate) {\n translate = panelWidth + startTranslate;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if ($backdropEl) $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n if ($backdropEl) {\n $backdropEl.transition(0);\n $backdropEl.css({\n opacity: backdropOpacity\n });\n }\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n if (effect === 'push') {\n const viewTranslate = side === 'left' ? translate + panelWidth : translate - panelWidth;\n $viewEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${viewTranslate}px,0,0)`).transition(0);\n }\n }\n }\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n if (params.swipeNoFollow) {\n const stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = new Date().getTime() - touchStartTime;\n let action;\n const startTranslate = effect === 'floating' ? side === 'left' ? 8 : -8 : 0;\n const edge = (translate === startTranslate || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n const threshold = params.swipeThreshold || 0;\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0 + startTranslate) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover' || effect === 'push' || effect === 'floating') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {\n if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n panel.setStateClasses('before-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n panel.setStateClasses('after-closing');\n });\n }\n }\n }\n if (effect === 'reveal' || effect === 'push') {\n nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n if ($backdropEl) {\n $backdropEl.transform('').transition('').css({\n opacity: '',\n visibility: ''\n });\n }\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\nexport default swipePanel;", "import $ from '../../shared/dom7.js';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nfunction resizablePanel(panel) {\n const app = panel.app;\n const support = getSupport();\n if (panel.resizableInitialized) return;\n extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true\n });\n const $htmlEl = $('html');\n const {\n $el,\n $backdropEl,\n side,\n effect\n } = panel;\n if (!$el) return;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n let $viewEl;\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n const isPushingPanel = effect !== 'cover' && effect !== 'floating';\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (isPushingPanel || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n if (panel.$containerEl && panel.$containerEl.hasClass('page')) {\n $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));\n }\n }\n if (isPushingPanel && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n isMoved = true;\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (isPushingPanel && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (isPushingPanel && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n nextFrame(() => {\n $el.transition('');\n if (isPushingPanel) {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('<div class=\"panel-resize-handler\"></div>');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\nexport default resizablePanel;", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport swipePanel from './swipe-panel.js';\nimport resizablePanel from './resizable-panel.js';\nclass Panel extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n const extendedParams = extend({\n on: {}\n }, app.params.panel, params);\n super(extendedParams, [app]);\n const panel = this;\n panel.params = extendedParams;\n panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;\n panel.containerEl = panel.$containerEl[0];\n if (!panel.containerEl) {\n panel.$containerEl = app.$el;\n panel.containerEl = app.$el[0];\n }\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content).filter(node => node.nodeType === 1).eq(0);\n }\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n $el[0].f7Panel = panel;\n let {\n side,\n effect,\n resizable\n } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined')\n // eslint-disable-next-line\n effect = $el.hasClass('panel-cover') ? 'cover' : $el.hasClass('panel-push') ? 'push' : $el.hasClass('panel-floating') ? 'floating' : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = panel.$containerEl.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"panel-backdrop\"></div>');\n panel.$containerEl.prepend($backdropEl);\n }\n }\n extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0]\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n return panel;\n }\n getViewEl() {\n const panel = this;\n let viewEl;\n if (panel.$containerEl.children('.views').length > 0) {\n viewEl = panel.$containerEl.children('.views')[0];\n } else {\n viewEl = panel.$containerEl.children('.view')[0];\n }\n return viewEl;\n }\n setStateClasses(state) {\n const panel = this;\n const {\n side,\n el,\n effect\n } = panel;\n const viewEl = panel.getViewEl();\n const panelInView = viewEl && viewEl.contains(el);\n const $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');\n if (state === 'open') {\n $targetEl.addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'before-closing') {\n $targetEl.addClass('with-panel-closing');\n }\n if (state === 'closing') {\n $targetEl.addClass('with-panel-closing');\n $targetEl.removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n if (state === 'after-closing') {\n $targetEl.removeClass('with-panel-closing');\n }\n if (state === 'closed') {\n $targetEl.removeClass(`with-panel-${side}-${effect}`);\n }\n }\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n setVisibleBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const {\n side,\n $el,\n $containerEl,\n params,\n visibleBreakpointDisabled\n } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));\n }\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: ''\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n setCollapsedBreakpoint(emitEvents) {\n if (emitEvents === void 0) {\n emitEvents = true;\n }\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const {\n $el,\n params,\n collapsedBreakpointDisabled\n } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n if (!wasVisible) {\n panel.setStateClasses('closed');\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n onOpen(modifyHtmlClasses) {\n if (modifyHtmlClasses === void 0) {\n modifyHtmlClasses = true;\n }\n const panel = this;\n // eslint-disable-next-line\n panel._openTransitionStarted = false;\n const app = panel.app;\n panel.opened = true;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n if (modifyHtmlClasses) {\n panel.setStateClasses('open');\n }\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n onOpened() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n onClose() {\n const panel = this;\n const app = panel.app;\n panel.opened = false;\n app.panel.allowOpen = false;\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n panel.setStateClasses('closing');\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n panel.setStateClasses('after-closing');\n panel.$el.removeClass('panel-out');\n if (panel.$backdropEl) {\n const otherPanel = app.panel.get('.panel-in');\n const shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;\n if (shouldHideBackdrop) {\n panel.$backdropEl.removeClass('panel-backdrop-in');\n }\n }\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n toggle(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);else panel.open(animate);\n return panel;\n }\n insertToRoot() {\n const panel = this;\n const document = getDocument();\n const {\n $el,\n $backdropEl,\n $containerEl\n } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n $containerEl.prepend($el);\n }\n if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {\n $backdropEl.insertBefore($el);\n }\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n open(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const app = panel.app;\n if (!app.panel.allowOpen) return false;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n if ($backdropEl) {\n $backdropEl.addClass('panel-backdrop-in');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n if (['cover', 'push', 'floating'].includes(panel.effect)) {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n function panelTransitionStart() {\n transitionEndTarget.transitionStart(() => {\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n });\n }\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd(e => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionStart();\n panelTransitionEnd();\n $el.removeClass('panel-out not-animated').addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n // eslint-disable-next-line\n panel._openTransitionStarted = true;\n }\n return true;\n }\n close(animate) {\n if (animate === void 0) {\n animate = true;\n }\n const panel = this;\n const {\n effect,\n $el,\n $backdropEl,\n opened,\n $containerEl\n } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;\n // eslint-disable-next-line\n if (!panel._openTransitionStarted) {\n // eslint-disable-next-line\n animate = false;\n }\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n panel.setStateClasses('after-closing');\n }\n if (animate) {\n transitionEndTarget.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n return panel;\n }\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n destroy() {\n let panel = this;\n const app = panel.app;\n const {\n $containerEl\n } = panel;\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n if ($containerEl && $containerEl.hasClass('page')) {\n $viewEl.add($containerEl.children('.page-content, .tabs'));\n }\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: ''\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n deleteProps(panel);\n panel = null;\n }\n}\nexport default Panel;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Panel from './panel-class.js';\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined,\n // default based on panel-in class\n side: undefined,\n // default based on panel class\n effect: undefined,\n // default based on panel class\n resizable: undefined,\n // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false,\n // or true\n swipeNoFollow: false,\n // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n containerEl: undefined\n }\n },\n static: {\n Panel\n },\n create() {\n const app = this;\n extend(app, {\n panel: {\n allowOpen: true,\n create(params) {\n return new Panel(app, params);\n },\n get(el) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el) {\n if (el === void 0) {\n el = '.panel';\n }\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el, animate) {\n if (el === void 0) {\n el = '.panel-in';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el, animate) {\n if (el === void 0) {\n el = '.panel';\n }\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({\n el\n });\n return panel.toggle(animate);\n }\n return undefined;\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each(panelEl => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n }\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign({\n el: panelEl\n }, $(panelEl).dataset() || {});\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n }\n }\n },\n clicks: {\n '.panel-open': function open(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (instance && instance.params.closeByBackdropClick === false) return;\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n }\n }\n};", "/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport $ from '../../shared/dom7.js';\nconst CardExpandable = {\n open(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const document = getDocument();\n const support = getSupport();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n let prevented;\n function prevent() {\n prevented = true;\n }\n $cardEl.trigger('card:beforeopen', {\n prevent\n });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n if (prevented) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $pageContentEl = $cardEl.parents('.page-content');\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('<div class=\"card-backdrop\"></div>');\n $pageContentEl.append($backdropEl);\n }\n }\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n let cardLeftOffset;\n let cardTopOffset;\n if (hasTransform) {\n const transformValues = currTransform.replace(/matrix\\(|\\)/g, '').split(',').map(el => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n $cardContentEl.css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`\n }).transform(`translate3d(${app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n }\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length || !e.isTrusted) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n if (!(isH || isV) || isV && cardScrollTop !== 0) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n isMoved = true;\n progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if (progress > 0 && isV || isH) {\n if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n }\n }\n function onTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) return;\n isTouched = false;\n isMoved = false;\n if (device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl.addClass('card-transitioning').transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n }\n }\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n app.on('resize', onResize);\n if (support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable.card-opened';\n }\n if (animate === void 0) {\n animate = true;\n }\n const app = this;\n const device = getDevice();\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n const cardParams = Object.assign({\n animate\n }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n let $navbarEl;\n let $toolbarEl;\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate, true);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n $pageEl.removeClass('page-with-card-opened');\n if (device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl.css({\n width: '',\n height: ''\n });\n }\n $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl, animate) {\n if (cardEl === void 0) {\n cardEl = '.card-expandable';\n }\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n }\n};\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true\n }\n },\n create() {\n const app = this;\n bindMethods(app, {\n card: CardExpandable\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);\n }\n if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n }\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n }\n }\n};", "export default {\n name: 'chip'\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, serializeObject } from '../../shared/utils.js';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n const window = getWindow();\n let formId = form;\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n }\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n }\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n let data = formData;\n const formId = $formEl.attr('id');\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each(inputEl => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each(el => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each(el => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\nfunction initAjaxForm() {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n if (e.type === 'change' && fromData === 'fromdata') return;\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.attr('enctype') || $formEl.prop('enctype');\n let url = $formEl.attr('action');\n if (!url) return;\n let data;\n if (method === 'POST') {\n if (contentType === 'application/x-www-form-urlencoded' || contentType === 'application/json') {\n data = app.form.convertToData($formEl[0]);\n if (contentType === 'application/json') {\n data = JSON.stringify(data);\n }\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = serializeObject(app.form.convertToData($formEl[0]));\n if (url.includes('?')) {\n url += `&${data}`;\n } else {\n url += `?${data}`;\n }\n }\n $formEl.trigger('formajax:beforesend', {\n data\n });\n app.emit('formAjaxBeforeSend', $formEl[0], data);\n fetch(url, {\n method,\n headers: {\n 'Content-Type': contentType || 'application/x-www-form-urlencoded'\n },\n ...(method === 'POST' || method === 'PUT' ? {\n body: data\n } : {})\n }).then(response => {\n $formEl.trigger('formajax:complete', {\n data,\n response\n });\n app.emit('formAjaxComplete', $formEl[0], data, response);\n $formEl.trigger('formajax:success', {\n data,\n response\n });\n app.emit('formAjaxSuccess', $formEl[0], data, response);\n }).catch(error => {\n $formEl.trigger('formajax:error', {\n data,\n error\n });\n app.emit('formAjaxError', $formEl[0], data, error);\n });\n }\n $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\nexport default {\n name: 'form',\n create() {\n const app = this;\n extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app)\n }\n }\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each(formEl => {\n app.form.storage.init(formEl);\n });\n }\n }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const document = getDocument();\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const window = getWindow();\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.$el.append($shadowEl);\n }\n const styles = window.getComputedStyle($textareaEl[0]);\n '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 => {\n let styleValue = styles[style];\n if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n app.emit('textareaResize', {\n initialHeight,\n currentHeight,\n scrollHeight\n });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n function unsetReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = false;\n }\n }\n function setReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = true;\n }\n }\n unsetReadonly();\n const validity = $inputEl[0].validity;\n const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) {\n setReadonly();\n return true;\n }\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(`<div class=\"${$inputWrapEl.length ? 'input-error-message' : 'item-input-error-message'}\"></div>`);\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n setReadonly();\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n setReadonly();\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el).find('input, textarea, select').map(inputEl => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration, centered, force) {\n if (duration === void 0) {\n duration = 0;\n }\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n const min = inputOffsetTop + contentScrollTop - contentPaddingTop;\n const max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;\n const centeredPosition = min + (max - min) / 2;\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n const device = getDevice();\n const window = getWindow();\n const document = getDocument();\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n });\n } else {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n }\n};\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: undefined,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false\n }\n },\n create() {\n const app = this;\n if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {\n app.params.input.scrollIntoViewOnFocus = getDevice().android;\n }\n bindMethods(app, {\n input: Input\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each(itemInputEl => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each(inputEl => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each(textareaEl => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n }\n }\n};", "export default {\n name: 'checkbox'\n};", "export default {\n name: 'radio'\n};", "import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Toggle extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const toggle = this;\n const support = getSupport();\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n toggle.params = extend(defaults, params);\n const el = toggle.params.el;\n if (!el) return toggle;\n const $el = $(el);\n if ($el.length === 0) return toggle;\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled\n });\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n }\n });\n $el[0].f7Toggle = toggle;\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = now();\n touchStartChecked = toggle.checked;\n toggleWidth = $el[0].offsetWidth;\n nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n touchesDiff = pageX - touchesStart.x;\n let changed;\n if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n $el.removeClass('toggle-active-state');\n let changed;\n if (now() - touchStartTime < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n deleteProps(toggle);\n toggle = null;\n }\n}\nexport default Toggle;", "import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Toggle from './toggle-class.js';\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle'\n });\n },\n static: {\n Toggle\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each(toggleEl => app.toggle.create({\n el: toggleEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each(toggleEl => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n }\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({\n el: toggleEl\n });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n }\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const range = this;\n const support = getSupport();\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios'\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n range.params = extend(defaults, params);\n const el = range.params.el;\n if (!el) return range;\n const $el = $(el);\n if ($el.length === 0) return range;\n if ($el[0].f7Range) return $el[0].f7Range;\n const dataset = $el.dataset();\n 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n 'dual label vertical verticalReversed scale'.split(' ').forEach(paramName => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n const {\n dual,\n step,\n label,\n min,\n max,\n value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n } = range.params;\n extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition\n });\n if ($inputEl) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('<div class=\"range-bar\"></div>');\n const $barActiveEl = $('<div class=\"range-bar-active\"></div>');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n // prettier-ignore\n const knobHTML = `\n <div class=\"range-knob-wrap\">\n <div class=\"range-knob\"></div>\n ${range.label ? '<div class=\"range-knob-label\"></div>' : ''}\n </div>\n `;\n const knobs = [$(knobHTML)];\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n $el.append($barEl);\n knobs.forEach($knobEl => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps >= 1) {\n $scaleEl = $(`\n <div class=\"range-scale\">\n ${range.renderScale()}\n </div>\n `);\n $el.append($scaleEl);\n }\n extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl\n });\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = progress * (range.max - range.min) + range.min;\n }\n nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n let newValue = progress * (range.max - range.min) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open panel:resize', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open panel:resize', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n return range;\n }\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n if (range.dual) {\n const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = (value - min) / (max - min);\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = rangeSize * progress - knobSize / 2;\n if (realStartPos < 0) startPos = knobSize / 2;\n if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n setValue(newValue, byTouchMove) {\n const range = this;\n const {\n step,\n min,\n max\n } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n getValue() {\n return this.value;\n }\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n renderScale() {\n const range = this;\n const {\n app,\n verticalReversed,\n vertical\n } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';\n let html = '';\n Array.from({\n length: range.scaleSteps + 1\n }).forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = (scaleValue - range.min) / (range.max - range.min);\n html += `<div class=\"range-scale-step\" style=\"${positionProperty}: ${progress * 100}%\">${range.formatScaleLabel(scaleValue)}</div>`;\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array.from({\n length: range.scaleSubSteps - 1\n }).forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = (scaleSubValue - range.min) / (range.max - range.min);\n html += `<div class=\"range-scale-step range-scale-substep\" style=\"${positionProperty}: ${subProgress * 100}%\"></div>`;\n });\n }\n });\n return html;\n }\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 1) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('<div class=\"range-scale\"></div>');\n range.$el.append(range.$scaleEl);\n }\n range.$scaleEl.html(range.renderScale());\n }\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n deleteProps(range);\n range = null;\n }\n}\nexport default Range;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Range from './range-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = extend(ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.range-slider';\n }\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Range\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each(rangeEl => new Range(app, {\n el: rangeEl\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each(rangeEl => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n }\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({\n el: rangeEl\n });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n }\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n stepper.params = extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n const el = stepper.params.el;\n if (!el) return stepper;\n const $el = $(el);\n if ($el.length === 0) return stepper;\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n if ($inputEl && $inputEl.length) {\n 'step min max'.split(' ').forEach(paramName => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n const inputValue = parseFloat($inputEl.val());\n if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n stepper.params.value = inputValue;\n }\n }\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n const {\n step,\n min,\n max,\n value,\n decimalPoint\n } = stepper.params;\n extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false\n });\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n }\n }, current === 1 ? startsIn : progressionStep);\n }\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) {\n return;\n }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) {\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n const distance = ((pageX - touchesStart.x) ** 2 + (pageY - touchesStart.y) ** 2) ** 0.5;\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n return stepper;\n }\n minus() {\n return this.decrement();\n }\n plus() {\n return this.increment();\n }\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const {\n step,\n min,\n max\n } = stepper;\n const oldValue = stepper.value;\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n endTypeMode(noBlur) {\n const stepper = this;\n const {\n min,\n max\n } = stepper;\n let value = parseFloat(stepper.value);\n if (Number.isNaN(value)) value = 0;\n value = Math.max(Math.min(value, max), min);\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', {\n sentByF7Stepper: true\n });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.length === 1 && inputTxt === '-') return stepper;\n if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n getValue() {\n return this.value;\n }\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n deleteProps(stepper);\n stepper = null;\n }\n}\nexport default Stepper;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Stepper from './stepper-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = extend(ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper'\n }), {\n getValue(el) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el, value) {\n if (el === void 0) {\n el = '.stepper';\n }\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n }\n });\n },\n static: {\n Stepper\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each(stepperEl => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each(stepperEl => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n }\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(extend({\n el: stepperEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n }\n }\n }\n};", "/* eslint no-control-regex: \"off\" */\nconst defaultDiacriticsRemovalap = [{\n base: 'A',\n letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F'\n}, {\n base: 'AA',\n letters: '\\uA732'\n}, {\n base: 'AE',\n letters: '\\u00C6\\u01FC\\u01E2'\n}, {\n base: 'AO',\n letters: '\\uA734'\n}, {\n base: 'AU',\n letters: '\\uA736'\n}, {\n base: 'AV',\n letters: '\\uA738\\uA73A'\n}, {\n base: 'AY',\n letters: '\\uA73C'\n}, {\n base: 'B',\n letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181'\n}, {\n base: 'C',\n letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E'\n}, {\n base: 'D',\n letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779'\n}, {\n base: 'DZ',\n letters: '\\u01F1\\u01C4'\n}, {\n base: 'Dz',\n letters: '\\u01F2\\u01C5'\n}, {\n base: 'E',\n letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E'\n}, {\n base: 'F',\n letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B'\n}, {\n base: 'G',\n letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E'\n}, {\n base: 'H',\n letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D'\n}, {\n base: 'I',\n letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197'\n}, {\n base: 'J',\n letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248'\n}, {\n base: 'K',\n letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2'\n}, {\n base: 'L',\n letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780'\n}, {\n base: 'LJ',\n letters: '\\u01C7'\n}, {\n base: 'Lj',\n letters: '\\u01C8'\n}, {\n base: 'M',\n letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C'\n}, {\n base: 'N',\n letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4'\n}, {\n base: 'NJ',\n letters: '\\u01CA'\n}, {\n base: 'Nj',\n letters: '\\u01CB'\n}, {\n base: 'O',\n letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C'\n}, {\n base: 'OI',\n letters: '\\u01A2'\n}, {\n base: 'OO',\n letters: '\\uA74E'\n}, {\n base: 'OU',\n letters: '\\u0222'\n}, {\n base: 'OE',\n letters: '\\u008C\\u0152'\n}, {\n base: 'oe',\n letters: '\\u009C\\u0153'\n}, {\n base: 'P',\n letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754'\n}, {\n base: 'Q',\n letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A'\n}, {\n base: 'R',\n letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782'\n}, {\n base: 'S',\n letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784'\n}, {\n base: 'T',\n letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786'\n}, {\n base: 'TZ',\n letters: '\\uA728'\n}, {\n base: 'U',\n letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244'\n}, {\n base: 'V',\n letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245'\n}, {\n base: 'VY',\n letters: '\\uA760'\n}, {\n base: 'W',\n letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72'\n}, {\n base: 'X',\n letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C'\n}, {\n base: 'Y',\n letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE'\n}, {\n base: 'Z',\n letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762'\n}, {\n base: 'a',\n letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250'\n}, {\n base: 'aa',\n letters: '\\uA733'\n}, {\n base: 'ae',\n letters: '\\u00E6\\u01FD\\u01E3'\n}, {\n base: 'ao',\n letters: '\\uA735'\n}, {\n base: 'au',\n letters: '\\uA737'\n}, {\n base: 'av',\n letters: '\\uA739\\uA73B'\n}, {\n base: 'ay',\n letters: '\\uA73D'\n}, {\n base: 'b',\n letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253'\n}, {\n base: 'c',\n letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184'\n}, {\n base: 'd',\n letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A'\n}, {\n base: 'dz',\n letters: '\\u01F3\\u01C6'\n}, {\n base: 'e',\n letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD'\n}, {\n base: 'f',\n letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C'\n}, {\n base: 'g',\n letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F'\n}, {\n base: 'h',\n letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265'\n}, {\n base: 'hv',\n letters: '\\u0195'\n}, {\n base: 'i',\n letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131'\n}, {\n base: 'j',\n letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249'\n}, {\n base: 'k',\n letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3'\n}, {\n base: 'l',\n letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747'\n}, {\n base: 'lj',\n letters: '\\u01C9'\n}, {\n base: 'm',\n letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F'\n}, {\n base: 'n',\n letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5'\n}, {\n base: 'nj',\n letters: '\\u01CC'\n}, {\n base: 'o',\n letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275'\n}, {\n base: 'oi',\n letters: '\\u01A3'\n}, {\n base: 'ou',\n letters: '\\u0223'\n}, {\n base: 'oo',\n letters: '\\uA74F'\n}, {\n base: 'p',\n letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755'\n}, {\n base: 'q',\n letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759'\n}, {\n base: 'r',\n letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783'\n}, {\n base: 's',\n letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B'\n}, {\n base: 't',\n letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787'\n}, {\n base: 'tz',\n letters: '\\uA729'\n}, {\n base: 'u',\n letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289'\n}, {\n base: 'v',\n letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C'\n}, {\n base: 'vy',\n letters: '\\uA761'\n}, {\n base: 'w',\n letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73'\n}, {\n base: 'x',\n letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D'\n}, {\n base: 'y',\n letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF'\n}, {\n base: 'z',\n letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763'\n}];\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n const letters = defaultDiacriticsRemovalap[i].letters;\n for (let j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n}\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, a => diacriticsMap[a] || a);\n}\nexport default removeDiacritics;", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps, id, nextTick } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport removeDiacritics from '../searchbar/remove-diacritics.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass SmartSelect extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ss = this;\n const defaults = extend({\n on: {}\n }, app.params.smartSelect);\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n ss.params = extend({}, defaults, params);\n ss.app = app;\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('<div class=\"item-after\"></div>');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const selectId = id();\n extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id: selectId,\n inputName: `${inputType}-${selectId}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength\n });\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n if (!optionEl) {\n optionEl = ss.$selectEl.find('option').filter(optEl => optEl.value === value)[0];\n }\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n return ss;\n }\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(optionText);\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.formatValueTextContent([]);\n }\n ss.$selectEl.find('option').each(optionEl => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n if (ss.$containerEl) {\n ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n get view() {\n const {\n params,\n $el\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each(inputEl => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n formatValueTextContent(values) {\n const ss = this;\n const valueFormatted = ss.formatValueText(values);\n if (valueFormatted.includes('<') && valueFormatted.includes('>')) {\n ss.$valueEl.html(valueFormatted);\n } else {\n ss.$valueEl.text(valueFormatted);\n }\n }\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.formatValueTextContent(valueArray);\n }\n }\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each(optionEl => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionInputIconPosition = optionData.inputIconPosition || ss.params.inputIconPosition || '';\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd;\n const optionColor = optionData.optionColor;\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n inputIconPosition: optionInputIconPosition,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType\n });\n });\n ss.items = items;\n return items;\n }\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ss.params.searchbarSpellcheck || 'false',\n placeholder: ss.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ss.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ss.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n function getIconContent(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue) {\n if (iconValue === void 0) {\n iconValue = '';\n }\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `<li class=\"list-group-title\">${item.groupLabel}</li>`;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n const {\n icon,\n iconIos,\n iconMd\n } = item;\n const hasIcon = icon || iconIos || iconMd;\n const iconContent = getIconContent(icon || iconIos || iconMd || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || '');\n itemHtml = $jsx(\"li\", {\n class: `${item.className || ''}${disabled ? ' disabled' : ''}`\n }, $jsx(\"label\", {\n class: `item-${item.inputType} ${item.inputIconPosition ? `item-${item.inputType}-icon-${item.inputIconPosition}` : ''} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: item.value,\n _checked: selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), item.hasMedia && $jsx(\"div\", {\n class: \"item-media\"\n }, hasIcon && $jsx(\"i\", {\n class: `icon ${iconClass}`\n }, iconContent), item.image && $jsx(\"img\", {\n src: item.image\n })), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: `item-title${item.color ? ` text-color-${item.color}` : ''}`\n }, item.text))));\n }\n return itemHtml;\n }\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n return $jsx(\"div\", {\n class: `page smart-select-page ${cssClass}`,\n \"data-name\": \"smart-select-page\",\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner sliding ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ss.params.pageBackLinkText))), pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n return $jsx(\"div\", {\n class: `popup smart-select-popup ${cssClass} ${ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}`,\n \"data-name\": \"smart-select-page\"\n }, $jsx(\"div\", {\n class: `navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, pageTitle && $jsx(\"div\", {\n class: \"title\"\n }, pageTitle), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": `.smart-select-popup[data-select-name='${ss.selectName}']`\n }, ss.params.popupCloseLinkText)), ss.params.searchbar && $jsx(\"div\", {\n class: \"subnavbar\"\n }, ss.renderSearchbar()))), ss.params.searchbar && $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-outline-ios list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));\n }\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `sheet-modal smart-select-sheet ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: `toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close\"\n }, ss.params.sheetCloseLinkText)))), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items))))));\n }\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n // prettier-ignore\n return $jsx(\"div\", {\n class: `popover smart-select-popover ${cssClass}`,\n \"data-select-name\": ss.selectName\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `list list-strong-ios list-dividers-ios smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null, !ss.params.virtualList && ss.renderItems(ss.items)))));\n }\n scrollToSelectedItem() {\n const ss = this;\n const {\n params,\n $containerEl\n } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $scrollableEl = $containerEl.find('.page-content, .popover-inner');\n if (!$scrollableEl.length) return ss;\n $scrollableEl.scrollTop($selectedItemEl.offset().top - $scrollableEl.offset().top - parseInt($scrollableEl.css('padding-top'), 10));\n }\n return ss;\n }\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (item.text && removeDiacritics(item.text).toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n return false;\n }\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(`<div class=\"block searchbar-not-found\">${ss.params.appendSearchbarNotFound}</div>`);\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('<div class=\"block searchbar-not-found\">Nothing found</div>');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n const searchbarParams = extend({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title'\n }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n onOpened() {\n const ss = this;\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n }\n }\n }\n });\n return ss;\n }\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams\n }\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n const sheetParams = {\n content: sheetHtml,\n backdrop: ss.params.sheetBackdrop,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams\n }\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n closeByBackdropClick: ss.params.closeByBackdropClick,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n }\n }\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams\n }\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', {\n prevent\n });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ss;\n }\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n deleteProps(ss);\n ss.destroyed = true;\n }\n}\nexport default SmartSelect;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport SmartSelect from './smart-select-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page',\n // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined,\n // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined,\n // defaults to app\n sheetBackdrop: false,\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n closeByBackdropClick: true,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: false,\n url: 'select/',\n inputIconPosition: 'start',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined\n }\n },\n static: {\n SmartSelect\n },\n create() {\n const app = this;\n app.smartSelect = extend(ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect'\n }), {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n }\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each(smartSelectEl => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n }\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(extend({\n el: $clickedEl\n }, data));\n ss.open();\n }\n }\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(extend({\n el: smartSelectEl\n }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n }\n }\n }\n};", "export default {\n name: 'grid'\n};", "import { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Calendar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const calendar = this;\n calendar.params = extend({}, app.params.calendar, params);\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n const isHorizontal = calendar.params.direction === 'horizontal';\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n allowTouchMove: true,\n hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple\n });\n calendar.dayFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n day: 'numeric'\n });\n return formatter.format(date).replace(/日/, '');\n };\n calendar.monthFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n month: 'long'\n });\n return formatter.format(date);\n };\n calendar.yearFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, {\n year: 'numeric'\n });\n return formatter.format(date);\n };\n calendar.timeSelectorFormatter = date => {\n const formatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n return formatter.format(date);\n };\n const timeFormatCheckDate = calendar.timeSelectorFormatter(new Date()).toLowerCase();\n calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;\n\n // Auto names\n let {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar.params;\n const {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n } = calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n });\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if (calendar.monthPickerPopover || calendar.yearPickerPopover || calendar.timePickerPopover) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n calendar.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n delete calendar.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n const {\n $el,\n $wrapperEl\n } = calendar;\n function handleTouchStart(e) {\n if (isMoved || isTouched || !e.isTrusted) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = new Date().getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n const {\n isHorizontal: isH\n } = calendar;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling || !calendar.allowTouchMove) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved || !e.isTrusted) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {\n calendar.close();\n }\n }\n }\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n function onNextYearClick() {\n calendar.nextYear();\n }\n function onPrevYearClick() {\n calendar.prevYear();\n }\n function onMonthSelectorClick() {\n calendar.openMonthPicker();\n }\n function onYearSelectorClick() {\n calendar.openYearPicker();\n }\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n calendar.init();\n return calendar;\n }\n get view() {\n const {\n $inputEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, {\n month: 'long'\n });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {\n month: 'short'\n });\n const formatterDayNames = new Intl.DateTimeFormat(locale, {\n weekday: 'long'\n });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, {\n weekday: 'short'\n });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter(date);\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl\n };\n }\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(val => calendar.normalizeDate(val));\n }\n return newValues;\n }\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n isPopover() {\n const calendar = this;\n const {\n app,\n modal,\n params\n } = calendar;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort\n } = calendar;\n const {\n dateFormat,\n locale\n } = calendar.params;\n function twoDigits(number) {\n return number < 10 ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay]\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase()\n });\n }\n const regexp = new RegExp(Object.keys(tokens).map(t => `(${t})`).join('|'), 'g');\n return dateFormat.replace(regexp, token => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n formatValue() {\n const calendar = this;\n const {\n value\n } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value.map(v => calendar.formatDate(v)).join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n addValue(newValue) {\n const calendar = this;\n const {\n multiple,\n rangePicker,\n rangePickerMinDays,\n rangePickerMaxDays\n } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n 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 = [];\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n updateValue(onlyHeader) {\n const calendar = this;\n const {\n $el,\n $wrapperEl,\n $inputEl,\n value,\n params\n } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');\n let valueDate;\n if (params.rangePicker && value.length === 2) {\n const leftDate = new Date(value[0]).getTime();\n const rightDate = new Date(value[1]).getTime();\n for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n let addClass = 'calendar-day-selected';\n if (leftDate !== rightDate) {\n if (i !== leftDate && i !== rightDate) {\n addClass += ' calendar-day-selected-range';\n }\n if (i === leftDate) {\n addClass += ' calendar-day-selected-left';\n }\n if (i === rightDate) {\n addClass += ' calendar-day-selected-right';\n }\n }\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass(addClass);\n }\n valueDate = new Date(leftDate);\n $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');\n valueDate = new Date(rightDate);\n $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');\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter(value[0]) : calendar.params.timePickerPlaceholder);\n }\n if ($inputEl && $inputEl.length || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const {\n $months,\n $el,\n monthNames\n } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');\n currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n update() {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl\n } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n $wrapperEl.transition(0).html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`).transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n }\n onMonthChangeStart(dir) {\n const calendar = this;\n const {\n $months,\n currentYear,\n currentMonth\n } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);\n }\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const {\n currentYear,\n currentMonth,\n $wrapperEl,\n monthsTranslate\n } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);\n calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);\n }\n setMonthsTranslate(translate) {\n const calendar = this;\n const {\n $months,\n isHorizontal: isH,\n inverter\n } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $months.eq(1).transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`).addClass('calendar-month-current');\n $months.eq(2).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n }\n nextMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next')).transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`).addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n prevMonth(transition) {\n const calendar = this;\n const {\n params,\n $wrapperEl,\n inverter,\n isHorizontal: isH\n } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev')).transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`).addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n resetMonth(transition) {\n if (transition === void 0) {\n transition = '';\n }\n const calendar = this;\n const {\n $wrapperEl,\n inverter,\n isHorizontal: isH,\n monthsTranslate\n } = calendar;\n const translate = monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const {\n params,\n isHorizontal: isH,\n $wrapperEl,\n inverter\n } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months.eq(calendar.$months.length - 1).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months.eq(0).transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`).addClass('calendar-month-prev');\n }\n calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = calendar.monthsTranslate * 100 * inverter;\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return $jsx(\"div\", {\n class: \"calendar-months-wrapper\"\n }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));\n }\n renderMonth(d, offset) {\n const calendar = this;\n const {\n params,\n value\n } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter(date);\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter(date);\n }\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n const weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {\n addClass += ' calendar-day-selected';\n }\n if (currentValues[0] !== currentValues[1]) {\n if (dayDate > currentValues[0] && dayDate < currentValues[1]) {\n addClass += ' calendar-day-selected-range';\n }\n if (dayDate === currentValues[0]) {\n addClass += ' calendar-day-selected-left';\n }\n if (dayDate === currentValues[1]) {\n addClass += ' calendar-day-selected-right';\n }\n }\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n // prettier-ignore\n eventsHtml = `\n <span class=\"calendar-day-events\">\n <span class=\"calendar-day-event\"></span>\n </span>\n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach(ev => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n // prettier-ignore\n eventsHtml = `\n <span class=\"calendar-day-events\">\n ${eventDots.map(color => `\n <span class=\"calendar-day-event\" style=\"${color ? `background-color: ${color}` : ''}\"></span>\n `.trim()).join('')}\n </span>\n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter(dayDate);\n // prettier-ignore\n rowHtml += `\n <div data-year=\"${dayYear}\" data-month=\"${dayMonth}\" data-day=\"${dayNumber}\" class=\"calendar-day${addClass}\" data-date=\"${dayYear}-${dayMonth}-${dayNumber}\">\n <span class=\"calendar-day-number\">${dayNumberDisplay}${eventsHtml}</span>\n </div>`.trim();\n }\n monthHtml += `<div class=\"calendar-row\">${rowHtml}</div>`;\n }\n monthHtml = `<div class=\"calendar-month\" data-year=\"${year}\" data-month=\"${month}\" data-locale-year=\"${localeYear}\" data-locale-month=\"${localeMonth}\">${monthHtml}</div>`;\n return monthHtml;\n }\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const {\n params\n } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `<div class=\"calendar-week-day\">${dayName}</div>`;\n }\n return $jsx(\"div\", {\n class: \"calendar-week-header\"\n }, weekDaysHtml);\n }\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-month-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.monthPicker ? $jsx(\"a\", {\n class: \"current-month-value link\"\n }) : $jsx(\"span\", {\n class: \"current-month-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-month-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-year-selector\"\n }, $jsx(\"a\", {\n class: \"link icon-only calendar-prev-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-prev\"\n })), calendar.params.yearPicker ? $jsx(\"a\", {\n class: \"current-year-value link\"\n }) : $jsx(\"span\", {\n class: \"current-year-value\"\n }), $jsx(\"a\", {\n class: \"link icon-only calendar-next-year-button\"\n }, $jsx(\"i\", {\n class: \"icon icon-next\"\n })));\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter(value);\n return $jsx(\"div\", {\n class: \"calendar-time-selector\"\n }, $jsx(\"span\", null, calendar.params.timePickerLabel), $jsx(\"a\", {\n class: \"link\"\n }, timeString || calendar.params.timePickerPlaceholder));\n }\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-header\"\n }, $jsx(\"div\", {\n class: \"calendar-selected-date\"\n }, calendar.params.headerPlaceholder));\n }\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return $jsx(\"div\", {\n class: \"calendar-footer\"\n }, $jsx(\"a\", {\n class: `${app.theme === 'md' ? 'button button-round' : 'link'} calendar-close sheet-close popover-close`\n }, calendar.params.toolbarCloseText));\n }\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n // prettier-ignore\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderCustomModal() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderSheet() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: `sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"sheet-modal-inner calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());\n }\n renderPopover() {\n const calendar = this;\n const {\n cssClass,\n toolbar,\n header,\n footer,\n rangePicker,\n weekHeader\n } = calendar.params;\n const {\n value,\n hasTimePicker\n } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n return $jsx(\"div\", {\n class: \"popover calendar-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}`\n }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx(\"div\", {\n class: \"calendar-months\"\n }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));\n }\n render() {\n const calendar = this;\n const {\n params\n } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n openMonthPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('<div class=\"popover calendar-popover calendar-month-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-month-picker\"></div></div></div>');\n calendar.monthPickerPopover = app.popover.create({\n el: $el.find('.calendar-month-picker-popover'),\n targetEl: $el.find('.calendar-month-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeMonthPicker();\n },\n closed() {\n if (calendar.monthPickerPopover.$el) calendar.monthPickerPopover.$el.remove();\n calendar.monthPickerPopover.destroy();\n if (calendar.monthPickerInstance) {\n calendar.monthPickerInstance.close();\n calendar.monthPickerInstance.destroy();\n }\n delete calendar.monthPickerInstance;\n delete calendar.monthPickerPopover;\n }\n }\n });\n calendar.monthPickerPopover.open();\n const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const values = [];\n const displayValues = [];\n calendar.monthNames.forEach((m, index) => {\n values.push(index);\n displayValues.push(m);\n });\n calendar.monthPickerInstance = app.picker.create({\n containerEl: calendar.monthPickerPopover.$el.find('.calendar-month-picker'),\n value: [localeMonth],\n toolbar: calendar.params.monthPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.monthPickerCloseText,\n cols: [{\n values,\n displayValues\n }]\n });\n }\n closeMonthPicker() {\n const calendar = this;\n if (calendar.monthPickerPopover && calendar.monthPickerPopover.opened) calendar.monthPickerPopover.close();\n const index = calendar.monthPickerInstance.value[0];\n const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n }\n openYearPicker() {\n const calendar = this;\n const {\n $el,\n app\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('<div class=\"popover calendar-popover calendar-year-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-year-picker\"></div></div></div>');\n calendar.yearPickerPopover = app.popover.create({\n el: $el.find('.calendar-year-picker-popover'),\n targetEl: $el.find('.calendar-year-selector'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeYearPicker();\n },\n closed() {\n if (calendar.yearPickerPopover.$el) calendar.yearPickerPopover.$el.remove();\n calendar.yearPickerPopover.destroy();\n if (calendar.yearPickerInstance) {\n calendar.yearPickerInstance.close();\n calendar.yearPickerInstance.destroy();\n }\n delete calendar.yearPickerInstance;\n delete calendar.yearPickerPopover;\n }\n }\n });\n calendar.yearPickerPopover.open();\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n calendar.yearPickerInstance = app.picker.create({\n containerEl: calendar.yearPickerPopover.$el.find('.calendar-year-picker'),\n value: [currentYear],\n toolbar: calendar.params.yearPickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.yearPickerCloseText,\n cols: [{\n values: years\n }]\n });\n }\n closeYearPicker() {\n const calendar = this;\n if (calendar.yearPickerPopover && calendar.yearPickerPopover.opened) calendar.yearPickerPopover.close();\n calendar.setYearMonth(calendar.yearPickerInstance.value[0], undefined, 0);\n }\n openTimePicker() {\n const calendar = this;\n const {\n $el,\n app,\n is12HoursFormat\n } = calendar;\n if (!$el || !$el.length) return;\n $el.append('<div class=\"popover calendar-popover calendar-time-picker-popover\"><div class=\"popover-inner\"><div class=\"calendar-time-picker\"></div></div></div>');\n const hoursArr = [];\n const minutesArr = [];\n const hoursMin = is12HoursFormat ? 1 : 0;\n const hoursMax = is12HoursFormat ? 12 : 23;\n for (let i = hoursMin; i <= hoursMax; i += 1) {\n hoursArr.push(i);\n }\n for (let i = 0; i <= 59; i += 1) {\n minutesArr.push(i);\n }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n if (is12HoursFormat) {\n value.push(value[0] < 12 ? 'AM' : 'PM');\n if (value[0] > 12) value[0] -= 12;\n if (value[0] === 0) value[0] = 12;\n }\n calendar.timePickerPopover = app.popover.create({\n el: $el.find('.calendar-time-picker-popover'),\n targetEl: $el.find('.calendar-time-selector .link'),\n backdrop: true,\n backdropUnique: true,\n on: {\n close() {\n calendar.closeTimePicker();\n },\n closed() {\n if (calendar.timePickerPopover.$el) calendar.timePickerPopover.$el.remove();\n calendar.timePickerPopover.destroy();\n if (calendar.timePickerInstance) {\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n }\n delete calendar.timePickerInstance;\n delete calendar.timePickerPopover;\n }\n }\n });\n calendar.timePickerPopover.open();\n calendar.timePickerInstance = app.picker.create({\n containerEl: calendar.timePickerPopover.$el.find('.calendar-time-picker'),\n value,\n toolbar: calendar.params.timePickerToolbar,\n rotateEffect: false,\n toolbarCloseText: calendar.params.timePickerCloseText,\n cols: [{\n values: hoursArr\n }, {\n divider: true,\n content: ':'\n }, {\n values: minutesArr,\n displayValues: minutesArr.map(m => m < 10 ? `0${m}` : m)\n }, ...(is12HoursFormat ? [{\n values: ['AM', 'PM']\n }] : [])]\n });\n }\n closeTimePicker() {\n const calendar = this;\n const {\n is12HoursFormat\n } = calendar;\n if (calendar.timePickerInstance) {\n const timePickerValue = calendar.timePickerInstance.value;\n let hours = parseInt(timePickerValue[0], 10);\n const minutes = parseInt(timePickerValue[1], 10);\n const period = calendar.timePickerInstance.value[2];\n if (is12HoursFormat) {\n if (period === 'AM' && hours === 12) {\n hours = 0;\n } else if (period === 'PM' && hours !== 12) {\n hours += 12;\n }\n }\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n if (calendar.timePickerPopover && calendar.timePickerPopover.opened) calendar.timePickerPopover.close();\n }\n }\n onOpen() {\n const calendar = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n calendar.initialized = true;\n calendar.$months.each(monthEl => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n if (calendar.$inputEl) {\n if (app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n } else {\n const validate = calendar.$inputEl.attr('validate');\n const required = calendar.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(calendar.$inputEl);\n }\n }\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n if (!calendar.inline) {\n nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n open() {\n const calendar = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n params\n } = calendar;\n if (opened) return;\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: params.backdrop === true || (modalType === 'popover' || modalType === 'customModal') && app.params.popover.backdrop !== false && params.backdrop !== false,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el).find('.calendar-close').once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() {\n calendar.onOpened();\n },\n close() {\n calendar.onClose();\n },\n closed() {\n calendar.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams\n }\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n close() {\n const calendar = this;\n const {\n opened,\n inline\n } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n init() {\n const calendar = this;\n calendar.initInput();\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const {\n $el\n } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\nexport default Calendar;", "import ConstructorMethods from '../../shared/constructor-methods.js';\nimport Calendar from './calendar-class.js';\nimport $ from '../../shared/dom7.js';\nexport default {\n name: 'calendar',\n static: {\n Calendar\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar'\n });\n app.calendar.close = function close(el) {\n if (el === void 0) {\n el = '.calendar';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || calendar && !calendar.opened) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1,\n // First day of the week, Monday\n weekendDays: [0, 6],\n // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1,\n // when calendar is used as rangePicker\n rangePickerMaxDays: 0,\n // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal',\n // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null,\n // dates range of disabled days\n events: null,\n // dates range of days with events\n rangesClasses: null,\n // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n monthPickerToolbar: true,\n monthPickerCloseText: 'Done',\n yearSelector: true,\n yearPicker: true,\n yearPickerToolbar: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n yearPickerCloseText: 'Done',\n timePicker: false,\n timePickerToolbar: true,\n timePickerLabel: 'Time',\n timePickerFormat: {\n hour: 'numeric',\n minute: 'numeric'\n },\n timePickerPlaceholder: 'Select time',\n timePickerCloseText: 'Done',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null\n }\n }\n};", "import $ from '../../shared/dom7.js';\nexport default function pickerColumn(colEl, updateItems) {\n const picker = this;\n // const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n let itemHeight;\n let colHeight;\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n const hadPadding = col.el.style.getPropertyValue('--f7-picker-scroll-padding');\n col.el.style.setProperty('--f7-picker-scroll-padding', `${(colHeight - itemHeight) / 2}px`);\n if (!hadPadding) {\n col.$itemsEl[0].scrollTop = 0;\n }\n };\n col.setValue = function setColValue(newValue, valueCallbacks) {\n const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newScrollTop = newActiveIndex * itemHeight;\n col.$itemsEl[0].scrollTop = newScrollTop;\n\n // Update items\n col.updateItems(newActiveIndex, newScrollTop, valueCallbacks);\n };\n col.updateItems = function updateColItems(activeIndex, scrollTop, valueCallbacks) {\n if (typeof scrollTop === 'undefined') {\n // eslint-disable-next-line\n scrollTop = col.$itemsEl[0].scrollTop;\n }\n\n /* eslint-disable no-param-reassign */\n if (typeof activeIndex === 'undefined') {\n activeIndex = Math.round(scrollTop / itemHeight);\n }\n if (activeIndex < 0) activeIndex = 0;\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n /* eslint-enable no-param-reassign */\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n const selectedItem = col.items.eq(activeIndex);\n selectedItem.addClass('picker-item-selected').children().transform('');\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each(itemEl => {\n const $itemEl = $(itemEl);\n const itemOffset = itemEl.offsetTop - (colHeight - itemHeight) / 2 - scrollTop;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n let angle = -24 * percentage;\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.children('span').transform(`translate3d(0, ${-percentage * itemHeight}px, -100px) rotateX(${angle}deg)`);\n });\n }\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n function handleScroll() {\n col.updateItems();\n }\n function handleClick() {\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n col.attachEvents = function attachColEvents() {\n col.$itemsEl.on('scroll', handleScroll);\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.items.off('click', handleClick);\n };\n col.init = function initCol() {\n col.calcSize();\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n if (picker.params.freeMode) col.$el.addClass('picker-column-free-mode');\n // Update items on init\n if (updateItems) col.updateItems(0);\n col.attachEvents();\n };\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n col.init();\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport pickerColumn from './picker-column.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Picker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const picker = this;\n const device = getDevice();\n const window = getWindow();\n picker.params = extend({}, app.params.picker, params);\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url\n });\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n let htmlTouchStartTarget = null;\n function onHtmlTouchStart(e) {\n htmlTouchStartTarget = e.target;\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if (htmlTouchStartTarget === e.target && $targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n picker.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n delete picker.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n app.on('touchstart', onHtmlTouchStart);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n app.off('touchstart', onHtmlTouchStart);\n }\n });\n picker.init();\n return picker;\n }\n get view() {\n const {\n app,\n params,\n $inputEl\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, false);\n }\n }\n }\n isPopover() {\n const picker = this;\n const {\n app,\n modal,\n params\n } = picker;\n const device = getDevice();\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (device.ios) {\n return !!device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n }\n return false;\n }\n formatValue() {\n const picker = this;\n const {\n value,\n displayValue\n } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n setValue(values) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex]);\n valueIndex += 1;\n }\n }\n }\n getValue() {\n const picker = this;\n return picker.value;\n }\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\"\n }, picker.params.toolbarCloseText))));\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n let columnHtml;\n let columnItemsHtml;\n if (col.divider) {\n // prettier-ignore\n columnHtml = `\n <div class=\"${colClasses} picker-column-divider\">${col.content}</div>\n `;\n } else {\n // prettier-ignore\n columnItemsHtml = col.values.map((value, index) => `\n <div class=\"picker-item\" data-picker-value=\"${value}\">\n <span>${col.displayValues ? col.displayValues[index] : value}</span>\n </div>\n `).join('');\n // prettier-ignore\n columnHtml = `\n <div class=\"${colClasses}\">\n <div class=\"picker-items\">${columnItemsHtml}</div>\n </div>\n `;\n }\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n renderInline() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const inlineHtml = $jsx(\"div\", {\n class: `picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return inlineHtml;\n }\n renderSheet() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const sheetHtml = $jsx(\"div\", {\n class: `sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })));\n return sheetHtml;\n }\n renderPopover() {\n const picker = this;\n const {\n rotateEffect,\n cssClass,\n toolbar\n } = picker.params;\n const popoverHtml = $jsx(\"div\", {\n class: \"popover picker-popover\"\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}`\n }, toolbar && picker.renderToolbar(), $jsx(\"div\", {\n class: \"picker-columns\"\n }, picker.cols.map(col => picker.renderColumn(col)), $jsx(\"div\", {\n class: \"picker-center-highlight\"\n })))));\n return popoverHtml;\n }\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n onOpen() {\n const picker = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params\n } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each(colEl => {\n let updateItems = true;\n if (!initialized && params.value || initialized && value) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value);else if (params.value) {\n picker.setValue(params.value);\n }\n } else if (value) {\n picker.setValue(value);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n onOpened() {\n const picker = this;\n picker.opening = false;\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n picker.cols.forEach(col => {\n if (col.destroy) col.destroy();\n });\n if (picker.$inputEl) {\n if (app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n } else {\n const validate = picker.$inputEl.attr('validate');\n const required = picker.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(picker.$inputEl);\n }\n }\n }\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n if (!picker.inline) {\n nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n open() {\n const picker = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $scrollToEl,\n params\n } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach(col => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() {\n picker.onOpened();\n },\n close() {\n picker.onClose();\n },\n closed() {\n picker.onClosed();\n }\n }\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams\n }\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n close() {\n const picker = this;\n const {\n opened,\n inline\n } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n init() {\n const picker = this;\n picker.initInput();\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const {\n $el\n } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n deleteProps(picker);\n picker.destroyed = true;\n }\n}\nexport default Picker;", "import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport Picker from './picker-class.js';\nexport default {\n name: 'picker',\n static: {\n Picker\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker'\n });\n app.picker.close = function close(el) {\n if (el === void 0) {\n el = '.picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || picker && !picker.opened) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n rotateEffect: false,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto',\n // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined,\n // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nconst InfiniteScroll = {\n handle(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = parseInt(distance, 10) / 100 * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each(element => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each(element => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n }\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n bindMethods(app, {\n infiniteScroll: InfiniteScroll\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each(el => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each(el => {\n app.infiniteScroll.destroy(el);\n });\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const device = getDevice();\n const support = getSupport();\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n const onTranstionEnd = e => {\n if ($(e.target).closest($preloaderEl).length) return;\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n $transitionTarget.off('transitionend', onTranstionEnd);\n };\n $transitionTarget.on('transitionend', onTranstionEnd);\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');\n const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n }\n function setPreloaderProgress(progress) {\n if (progress === void 0) {\n progress = 0;\n }\n const $bars = $preloaderEl.find('.preloader-inner-line');\n const perBarProgress = 1 / $bars.length;\n $bars.forEach((barEl, barIndex) => {\n const barProgress = (progress - barIndex * perBarProgress) / perBarProgress;\n barEl.style.opacity = Math.max(Math.min(barProgress, 1), 0) * 0.27;\n });\n }\n function unsetPreloaderProgress() {\n $preloaderEl.find('.preloader-inner-line').css('opacity', '');\n }\n function handleTouchStart(e) {\n if (!e.isTrusted) return;\n if (isTouched) {\n if (device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched || !e.isTrusted) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n scrollTop = $el[0].scrollTop;\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n // iOS 8 fix\n if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = (ptr.bottom ? -1 * Math.abs(touchesDiff) ** 0.85 : touchesDiff ** 0.85) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom || isIos) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n // eslint-disable-next-line\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,0px,0)`);\n }\n }\n } else if (isIos && !ptr.bottom) {\n $preloaderEl.transform(`translate3d(0,${scrollTop}px,0)`);\n }\n let progress;\n if (isIos && !refresh) {\n progress = useTranslate || forceUseTranslate ? Math.abs(touchesDiff) ** 0.85 / triggerDistance : Math.abs(touchesDiff) / (triggerDistance * 2);\n setPreloaderProgress(progress);\n }\n if ((useTranslate || forceUseTranslate) && Math.abs(touchesDiff) ** 0.85 > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (!e.isTrusted) return;\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom || isIos) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('').find('.ptr-arrow').transform('');\n } else {\n $preloaderEl.transform('');\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const {\n deltaX,\n deltaY\n } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n clearTimeout(mousewheelTimeout);\n scrollTop = $el[0].scrollTop;\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n if (isIos) {\n setPreloaderProgress(0);\n }\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each(ptrScrollableEl => {\n if (ptrScrollableEl === el) return;\n if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n const ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + (Math.abs(translate) - triggerDistance) ** 0.7;\n if (ptr.bottom) translate = -translate;\n }\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`).find('.ptr-arrow').transform(`rotate(${180 * (Math.abs(touchesDiff) / 66) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n if (isIos) {\n $preloaderEl.transform(`translate3d(0,${-translate}px,0)`);\n }\n }\n }\n let progress;\n if (isIos && !refresh) {\n progress = Math.abs(translate) / triggerDistance;\n setPreloaderProgress(progress);\n }\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n unsetPreloaderProgress();\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n if (!$pageEl.length || !$el.length) return ptr;\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n return ptr;\n }\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n deleteProps(ptr);\n ptr = null;\n }\n}\nexport default PullToRefresh;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport PullToRefresh from './pull-to-refresh-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = extend(ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh'\n }), {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n }\n });\n },\n static: {\n PullToRefresh\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each(el => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each(el => {\n app.ptr.destroy(el);\n });\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass DataTable extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const table = this;\n const defaults = {};\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n table.params = extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n table.$el = $el;\n table.el = $el[0];\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n table.$el[0].f7DataTable = table;\n extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected')\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el.find(`tbody tr td:nth-child(${columnIndex + 1}) input`).prop('checked', checked).trigger('change', {\n sentByF7DataTable: true\n });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', {\n sentByF7DataTable: true\n });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n return table;\n }\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each(el => {\n const $el = $(el);\n const elIndex = $el.index();\n const collapsibleTitle = $el.attr('data-collapsible-title');\n if (!collapsibleTitle && collapsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n destroy() {\n let table = this;\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n table.detachEvents();\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n deleteProps(table);\n table = null;\n }\n}\nexport default DataTable;", "import $ from '../../shared/dom7.js';\nimport DataTable from './data-table-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'dataTable',\n static: {\n DataTable\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable'\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each(tableEl => {\n app.dataTable.create({\n el: tableEl\n });\n });\n }\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({\n el: tableEl\n });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n }\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods, getTranslate, nextFrame } from '../../shared/utils.js';\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index')\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: getTranslate($fabEl[0], 'x'),\n translateY: getTranslate($fabEl[0], 'y')\n };\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab\n };\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n const diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n };\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl.transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`).css('border-radius', `${borderRadius}px`).css('box-shadow', 'none').css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const {\n $targetEl,\n target,\n fab\n } = morphData;\n if ($targetEl.length === 0) return;\n const diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;\n const diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n $targetEl.css('opacity', 0).transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl.css('z-index', '').removeClass('fab-opened').transform('');\n nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl) {\n if (fabEl === void 0) {\n fabEl = '.fab-opened';\n }\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);\n }\n};\nexport default {\n name: 'fab',\n create() {\n const app = this;\n bindMethods(app, {\n fab: {\n openedEl: null,\n ...Fab\n }\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n }\n }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, nextTick, deleteProps } from '../../shared/utils.js';\nimport FrameworkClass from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport removeDiacritics from './remove-diacritics.js';\nclass Searchbar extends FrameworkClass {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const sb = this;\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined,\n // container to search, HTMLElement or CSS selector\n searchItem: 'li',\n // single item selector, CSS selector\n searchIn: undefined,\n // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: true,\n removeDiacritics: true,\n customSearch: false,\n hideGroupTitles: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n sb.params = extend(defaults, params);\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n $el[0].f7Searchbar = sb;\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n if (typeof sb.params.backdrop === 'undefined') {\n sb.params.backdrop = !inline;\n }\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"searchbar-backdrop\"></div>');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || sb && !sb.$el) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n return sb;\n }\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n const document = getDocument();\n const device = getDevice();\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n const $pageContentEl = sb.$pageEl.find('.page-content');\n const $titleLargeEl = $navbarEl.find('.title-large');\n $pageContentEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n } else {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large')) {\n $navbarEl.addClass('navbar-large-collapsed');\n }\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n const $titleLargeEl = $navbarEl.find('.title-large');\n sb.$el.transitionEnd(() => {\n $pageContentEl.removeClass('with-searchbar-expandable-closing');\n });\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {\n const scrollTop = $pageContentEl[0].scrollTop;\n const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n if (scrollTop > titleLargeHeight) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n } else {\n $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n }\n if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {\n sb.backdropHide();\n }\n sb.enabled = false;\n sb.$inputEl.blur();\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();else sb.enable(true);\n return sb;\n }\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n const {\n $searchContainer,\n $el,\n $foundEl,\n $notFoundEl,\n $hideOnSearchEl,\n isVirtualList\n } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics) values = removeDiacritics(query.trim().toLowerCase()).split(' ');else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(itemEl => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each(searchInEl => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n if (sb.params.hideGroupTitles) {\n $searchContainer.find(sb.params.searchGroupTitle).each(titleEl => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each(groupEl => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter(el => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n $el.trigger('searchbar:search', {\n query,\n previousQuery: sb.previousQuery,\n foundItems\n });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n return sb;\n }\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n deleteProps(sb);\n }\n}\nexport default Searchbar;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Searchbar from './searchbar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'searchbar',\n static: {\n Searchbar\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' ')\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each(searchbarEl => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n }\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data) {\n if (data === void 0) {\n data = {};\n }\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n }\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(extend($searchbarEl.dataset(), {\n el: searchbarEl\n }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n }\n }\n }\n};", "function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Messages extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const m = this;\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n m.params = extend(defaults, params);\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n if ($el[0].f7Messages) return $el[0].f7Messages;\n $el[0].f7Messages = m;\n const $pageContentEl = $el.closest('.page-content').eq(0);\n extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0]\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing')\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(`<div class=\"message-text-header\">${data.textHeader}</div>`, '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(`<div class=\"message-text-footer\">${data.textFooter}</div>`, '');\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n return data;\n }\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each(messageEl => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n renderMessage(messageToRender) {\n const m = this;\n const message = extend({\n type: 'sent',\n attrs: {}\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `<div class=\"messages-title\">${message.text}</div>`;\n }\n return $jsx(\"div\", _extends({\n class: `message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${message.cssClass || ''}`\n }, message.attrs), message.avatar && $jsx(\"div\", {\n class: \"message-avatar\",\n style: `background-image:url(${message.avatar})`\n }), $jsx(\"div\", {\n class: \"message-content\"\n }, message.name && $jsx(\"div\", {\n class: \"message-name\"\n }, message.name), message.header && $jsx(\"div\", {\n class: \"message-header\"\n }, message.header), $jsx(\"div\", {\n class: \"message-bubble\"\n }, message.textHeader && $jsx(\"div\", {\n class: \"message-text-header\"\n }, message.textHeader), message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, message.image), message.imageSrc && !message.image && $jsx(\"div\", {\n class: \"message-image\"\n }, $jsx(\"img\", {\n src: message.imageSrc\n })), (message.text || message.isTyping) && $jsx(\"div\", {\n class: \"message-text\"\n }, message.text || '', message.isTyping && $jsx(\"div\", {\n class: \"message-typing-indicator\"\n }, $jsx(\"div\", null), $jsx(\"div\", null), $jsx(\"div\", null))), message.textFooter && $jsx(\"div\", {\n class: \"message-text-footer\"\n }, message.textFooter)), message.footer && $jsx(\"div\", {\n class: \"message-footer\"\n }, message.footer)));\n }\n renderMessages(messagesToRender, method) {\n if (messagesToRender === void 0) {\n messagesToRender = this.messages;\n }\n if (method === void 0) {\n method = this.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const m = this;\n const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n isFirstMessage() {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...arguments);\n return false;\n }\n isLastMessage() {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...arguments);\n return false;\n }\n isTailMessage() {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...arguments);\n return false;\n }\n isSameNameMessage() {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...arguments);\n return false;\n }\n isSameHeaderMessage() {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...arguments);\n return false;\n }\n isSameFooterMessage() {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...arguments);\n return false;\n }\n isSameAvatarMessage() {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...arguments);\n return false;\n }\n isCustomClassMessage() {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...arguments);\n return undefined;\n }\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((messageEl, index) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach(customClass => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach(className => {\n $messageEl.addClass(className);\n });\n });\n }\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n removeMessage(messageToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n removeMessages(messagesToRemove, layout) {\n if (layout === void 0) {\n layout = true;\n }\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach(messageToRemoveIndex => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each(messageToRemove => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n addMessage() {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n return m.addMessages([messageToAdd], animate, method);\n }\n setScrollData() {\n const m = this;\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n m.scrollData = {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n return {\n scrollHeightBefore,\n heightBefore,\n scrollBefore\n };\n }\n addMessages() {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n const {\n scrollHeightBefore,\n scrollBefore\n } = m.setScrollData();\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n messagesToAdd.forEach(messageToAdd => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {\n m.scrollWithEdgeCheck(animate);\n }\n return m;\n }\n showTyping(message) {\n if (message === void 0) {\n message = {};\n }\n const m = this;\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(extend({\n type: 'received',\n isTyping: true\n }, message));\n return m;\n }\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n scrollWithEdgeCheck(animate) {\n const m = this;\n const {\n scrollBefore,\n scrollHeightBefore,\n heightBefore\n } = m.scrollData;\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n scroll(duration, scrollTop) {\n if (duration === void 0) {\n duration = 300;\n }\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n deleteProps(m);\n }\n}\nexport default Messages;", "import $ from '../../shared/dom7.js';\nimport Messages from './messages-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messages',\n static: {\n Messages\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each(messagesEl => {\n app.messages.create({\n el: messagesEl\n });\n });\n }\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({\n el: messagesEl\n });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n }\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nclass Messagebar extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const messagebar = this;\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n messagebar.params = extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: []\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n return messagebar;\n }\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n checkEmptyState() {\n const messagebar = this;\n const {\n $el,\n $textareaEl\n } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n attachmentsCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $attachmentsEl = $(`<div class=\"messagebar-attachments\">${innerHTML}</div>`);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0]\n });\n return messagebar;\n }\n attachmentsShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n <div class=\"messagebar-attachment\">\n <img src=\"${attachment}\">\n <span class=\"messagebar-attachment-delete\"></span>\n </div>\n `;\n }\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n sheetCreate(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n const $sheetEl = $(`<div class=\"messagebar-sheet\">${innerHTML}</div>`);\n messagebar.$el.append($sheetEl);\n extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0]\n });\n return messagebar;\n }\n sheetShow(innerHTML) {\n if (innerHTML === void 0) {\n innerHTML = '';\n }\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n deleteProps(messagebar);\n }\n}\nexport default Messagebar;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Messagebar from './messagebar-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'messagebar',\n static: {\n Messagebar\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each(messagebarEl => {\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n });\n }\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(extend({\n el: messagebarEl\n }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n }\n }\n }\n};", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n", "import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n return {\n isSafari: needPerspectiveFix || isSafari(),\n needPerspectiveFix,\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n });\n let activeSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n if (nextSlide) {\n nextSlide.classList.add(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n if (prevSlide) {\n prevSlide.classList.add(params.slidePrevClass);\n }\n }\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled) return swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n swiper.slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(swiper.slides[index]);\n swiper.slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.swipeDirection === 'next' && swiper.allowSlideNext || swiper.swipeDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopedSlides: null,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update();\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n", "import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n", "import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n", "function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n", "import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const realIndex = swiper.realIndex;\n const newSlideIndex = swiper.getSlideIndexByData(index);\n const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n const loopFix = dir => {\n const indexBeforeLoopFix = swiper.activeIndex;\n swiper.loopFix({\n direction: dir,\n activeSlideIndex: newSlideIndex,\n slideTo: false\n });\n const indexAfterFix = swiper.activeIndex;\n if (indexBeforeLoopFix === indexAfterFix) {\n swiper.slideToLoop(realIndex, 0, false, true);\n }\n };\n if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n loopFix(newSlideIndex > currentSlideIndex ? 'next' : 'prev');\n } else if (swiper.params.centeredSlides) {\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (newSlideIndex < Math.floor(slidesPerView / 2)) {\n loopFix('prev');\n }\n }\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n", "import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n", "import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n", "import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n", "import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n", "import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n", "import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n", "import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n", "function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n", "function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n", "function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n", "import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n", "import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n", "import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n", "import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n", "import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n", "/**\n * Swiper 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport { S as Swiper } from './shared/swiper-core.mjs';\nimport Virtual from './modules/virtual.mjs';\nimport Keyboard from './modules/keyboard.mjs';\nimport Mousewheel from './modules/mousewheel.mjs';\nimport Navigation from './modules/navigation.mjs';\nimport Pagination from './modules/pagination.mjs';\nimport Scrollbar from './modules/scrollbar.mjs';\nimport Parallax from './modules/parallax.mjs';\nimport Zoom from './modules/zoom.mjs';\nimport Controller from './modules/controller.mjs';\nimport A11y from './modules/a11y.mjs';\nimport History from './modules/history.mjs';\nimport HashNavigation from './modules/hash-navigation.mjs';\nimport Autoplay from './modules/autoplay.mjs';\nimport Thumb from './modules/thumbs.mjs';\nimport freeMode from './modules/free-mode.mjs';\nimport Grid from './modules/grid.mjs';\nimport Manipulation from './modules/manipulation.mjs';\nimport EffectFade from './modules/effect-fade.mjs';\nimport EffectCube from './modules/effect-cube.mjs';\nimport EffectFlip from './modules/effect-flip.mjs';\nimport EffectCoverflow from './modules/effect-coverflow.mjs';\nimport EffectCreative from './modules/effect-creative.mjs';\nimport EffectCards from './modules/effect-cards.mjs';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n\nexport { Swiper, Swiper as default };\n", "/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n", "import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nconst formatValue = val => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('\"')) {\n let v;\n try {\n v = JSON.parse(val);\n } catch (err) {\n v = val;\n }\n return v;\n }\n return val;\n};\nconst modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom'];\nfunction getParams(element, propName, propValue) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n const localParamsList = [...paramsList, 'on'];\n const allowedParams = localParamsList.map(key => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach(paramName => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n const attrsList = [...element.attributes];\n if (typeof propName === 'string' && typeof propValue !== 'undefined') {\n attrsList.push({\n name: propName,\n value: isObject(propValue) ? {\n ...propValue\n } : propValue\n });\n }\n attrsList.forEach(attr => {\n const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = {\n enabled: true\n };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = !!value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n extend(params, passedParams);\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {})\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {})\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {})\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n return {\n params,\n passedParams\n };\n}\n\nexport { getParams as g };\n", "/**\n * Swiper Custom Element 10.3.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 28, 2023\n */\n\nimport './swiper-bundle.mjs';\nimport { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs';\nimport { g as getParams } from './shared/get-element-params.mjs';\nimport { S as Swiper } from './shared/swiper-core.mjs';\n\n/* eslint-disable spaced-comment */\n\nconst SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`\nconst SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`\n\nclass DummyHTMLElement {}\nconst ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;\nconst arrowSvg = `<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>\n `;\nconst addStyle = (shadowRoot, styles) => {\n if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {\n const styleSheet = new CSSStyleSheet();\n styleSheet.replaceSync(styles);\n shadowRoot.adoptedStyleSheets = [styleSheet];\n } else {\n const style = document.createElement('style');\n style.rel = 'stylesheet';\n style.textContent = styles;\n shadowRoot.appendChild(style);\n }\n};\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n static get nextButtonSvg() {\n return arrowSvg;\n }\n static get prevButtonSvg() {\n return arrowSvg.replace('/></svg>', ' transform-origin=\"center\" transform=\"rotate(180)\"/></svg>');\n }\n cssStyles() {\n return [SwiperCSS,\n // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\\n');\n }\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n calcSlideSlots() {\n const currentSideSlots = this.slideSlots || 0;\n // slide slots\n const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {\n return parseInt(child.getAttribute('slot').split('slide-')[1], 10);\n });\n this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;\n if (!this.rendered) return;\n if (this.slideSlots > currentSideSlots) {\n for (let i = currentSideSlots; i < this.slideSlots; i += 1) {\n const slideEl = document.createElement('swiper-slide');\n slideEl.setAttribute('part', `slide slide-${i + 1}`);\n const slotEl = document.createElement('slot');\n slotEl.setAttribute('name', `slide-${i + 1}`);\n slideEl.appendChild(slotEl);\n this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);\n }\n } else if (this.slideSlots < currentSideSlots) {\n const slides = this.swiper.slides;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (i > this.slideSlots) {\n slides[i].remove();\n }\n }\n }\n }\n render() {\n if (this.rendered) return;\n this.calcSlideSlots();\n\n // local styles\n let localStyles = this.cssStyles();\n if (this.slideSlots > 0) {\n localStyles = localStyles.replace(/::slotted\\(([a-z-0-9.]*)\\)/g, '$1');\n }\n if (localStyles.length) {\n addStyle(this.shadowRoot, localStyles);\n }\n this.cssLinks().forEach(url => {\n const linkExists = this.shadowRoot.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowRoot.appendChild(linkEl);\n });\n // prettier-ignore\n const el = document.createElement('div');\n el.classList.add('swiper');\n el.part = 'container';\n\n // prettier-ignore\n el.innerHTML = `\n <slot name=\"container-start\"></slot>\n <div class=\"swiper-wrapper\" part=\"wrapper\">\n <slot></slot>\n ${Array.from({\n length: this.slideSlots\n }).map((_, index) => `\n <swiper-slide part=\"slide slide-${index}\">\n <slot name=\"slide-${index}\"></slot>\n </swiper-slide>\n `).join('')}\n </div>\n <slot name=\"container-end\"></slot>\n ${needsNavigation(this.passedParams) ? `\n <div part=\"button-prev\" class=\"swiper-button-prev\">${this.constructor.prevButtonSvg}</div>\n <div part=\"button-next\" class=\"swiper-button-next\">${this.constructor.nextButtonSvg}</div>\n ` : ''}\n ${needsPagination(this.passedParams) ? `\n <div part=\"pagination\" class=\"swiper-pagination\"></div>\n ` : ''}\n ${needsScrollbar(this.passedParams) ? `\n <div part=\"scrollbar\" class=\"swiper-scrollbar\"></div>\n ` : ''}\n `;\n this.shadowRoot.appendChild(el);\n this.rendered = true;\n }\n initialize() {\n var _this = this;\n if (this.initialized) return;\n this.initialized = true;\n const {\n params: swiperParams,\n passedParams\n } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n this.render();\n\n // eslint-disable-next-line\n this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), {\n ...(swiperParams.virtual ? {} : {\n observer: true,\n observeSlideChildren: this.slideSlots > 0\n }),\n ...swiperParams,\n touchEventsTarget: 'container',\n onAny: function (name) {\n if (name === 'observerUpdate') {\n _this.calcSlideSlots();\n }\n const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const event = new CustomEvent(eventName, {\n detail: args,\n bubbles: name !== 'hashChange',\n cancelable: true\n });\n _this.dispatchEvent(event);\n }\n });\n }\n connectedCallback() {\n if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.init === false || this.getAttribute('init') === 'false') {\n return;\n }\n this.initialize();\n }\n disconnectedCallback() {\n if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) {\n return;\n }\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n this.initialized = false;\n }\n updateSwiperOnPropChange(propName, propValue) {\n const {\n params: swiperParams,\n passedParams\n } = getParams(this, propName, propValue);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName] ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next'\n } : {}),\n ...(propName === 'pagination' && passedParams[propName] ? {\n paginationEl: '.swiper-pagination'\n } : {}),\n ...(propName === 'scrollbar' && passedParams[propName] ? {\n scrollbarEl: '.swiper-scrollbar'\n } : {})\n });\n }\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n if (prevValue === 'true' && newValue === null) {\n newValue = false;\n }\n this.updateSwiperOnPropChange(attr, newValue);\n }\n static get observedAttributes() {\n const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase());\n return attrs;\n }\n}\nparamsList.forEach(paramName => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n configurable: true,\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n }\n });\n});\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n this.attachShadow({\n mode: 'open'\n });\n }\n render() {\n const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n addStyle(this.shadowRoot, SwiperSlideCSS);\n this.shadowRoot.appendChild(document.createElement('slot'));\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n lazyDiv.part.add('preloader');\n this.shadowRoot.appendChild(lazyDiv);\n }\n }\n initialize() {\n this.render();\n }\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = () => {\n if (typeof window === 'undefined') return;\n if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide);\n};\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = params => {\n paramsList.push(...params);\n };\n}\n\nexport { SwiperContainer, SwiperSlide, register };\n", "// eslint-disable-next-line\nimport Swiper from 'swiper/bundle';\n// eslint-disable-next-line\nimport { register } from 'swiper/element/bundle';\nimport $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nregister();\n\n\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n const isElement = $swiperEl[0].swiper && $swiperEl[0].swiper.isElement;\n if ($swiperEl[0].swiper && !$swiperEl[0].swiper.isElement) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs')) {\n initialSlide = $swiperEl.children('swiper-slide').indexOf($swiperEl.children('.tab-active')[0]);\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n const swiper = isElement ? $swiperEl[0].swiper : app.swiper.create($swiperEl[0], params);\n if (isElement) {\n swiper.slideTo(initialSlide, 0);\n }\n function updateSwiper() {\n swiper.update();\n }\n const $tabEl = $swiperEl.parents('.tab').filter(tabEl => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, swiper-container.tabs').length === 0;\n }).eq(0);\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.on('tab:show', updateSwiper);\n }\n swiper.on('beforeDestroy', () => {\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.off('tab:show', updateSwiper);\n }\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRouteUrl = router.findTabRouteUrl($(swiper.slides).eq(swiper.activeIndex)[0]);\n if (tabRouteUrl) {\n setTimeout(() => {\n router.navigate(tabRouteUrl);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: $(swiper.slides).eq(swiper.activeIndex)\n });\n }\n });\n }\n}\nexport default {\n name: 'swiper',\n static: {\n Swiper\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper',\n constructor: Swiper,\n domProp: 'swiper'\n });\n },\n on: {\n pageMounted(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('swiper-container.tabs').each(swiperEl => {\n app.swiper.destroy(swiperEl);\n });\n }\n }\n};", "/* eslint indent: [\"off\"] */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, now, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const pb = this;\n pb.app = app;\n const defaults = extend({\n on: {}\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n pb.params = extend(defaults, params);\n extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined\n }\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n get view() {\n const {\n params,\n app\n } = this;\n return params.view || app.views.main;\n }\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n const $activeSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : $(swiper.slides).eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides ? $(swiper.wrapperEl).find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`) : $(swiper.slides).eq(swiper.previousIndex);\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = $(pb.swiper.wrapperEl).children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = $(pb.swiper.slides).eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = new Date().getTime() - swipeToClose.timeStart;\n if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {\n nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n const pageBackLinkText = pb.app.theme === 'ios' && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n const isPopup = pb.params.type !== 'page';\n return $jsx(\"div\", {\n class: `navbar navbar-photo-browser ${pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner navbar-inner-centered-title sliding\"\n }, !isPopup && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: `link ${!pageBackLinkText ? 'icon-only' : ''} back`\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n }), pageBackLinkText && $jsx(\"span\", null, pageBackLinkText))), renderNavbarCount && $jsx(\"div\", {\n class: \"title\"\n }, $jsx(\"span\", {\n class: \"photo-browser-current\"\n }), $jsx(\"span\", {\n class: \"photo-browser-of\"\n }, pb.params.navbarOfText), $jsx(\"span\", {\n class: \"photo-browser-total\"\n })), isPopup && (pb.params.popupCloseLinkText || pb.params.popupCloseLinkIcon) && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".photo-browser-popup\"\n }, pb.params.popupCloseLinkIcon && pb.app.theme === 'ios' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"56\",\n height: \"56\",\n viewBox: \"0 0 56 56\"\n }, $jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M 10.0234 43.0234 C 9.2266 43.8203 9.2031 45.1797 10.0234 45.9766 C 10.8438 46.7734 12.1797 46.7734 13.0000 45.9766 L 28.0000 30.9766 L 43.0000 45.9766 C 43.7969 46.7734 45.1563 46.7969 45.9766 45.9766 C 46.7734 45.1562 46.7734 43.8203 45.9766 43.0234 L 30.9531 28.0000 L 45.9766 13.0000 C 46.7734 12.2031 46.7969 10.8437 45.9766 10.0469 C 45.1328 9.2266 43.7969 9.2266 43.0000 10.0469 L 28.0000 25.0469 L 13.0000 10.0469 C 12.1797 9.2266 10.8203 9.2031 10.0234 10.0469 C 9.2266 10.8672 9.2266 12.2031 10.0234 13.0000 L 25.0234 28.0000 Z\"\n }))), pb.params.popupCloseLinkIcon && pb.app.theme === 'md' && $jsx(\"i\", null, $jsx(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n width: \"24px\",\n fill: \"currentColor\"\n }, $jsx(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n }), $jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"\n }))), pb.params.popupCloseLinkText && $jsx(\"span\", null, pb.params.popupCloseLinkText)))));\n }\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n const iconsColor = pb.params.iconsColor;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom tabbar\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"a\", {\n class: \"link photo-browser-prev\"\n }, $jsx(\"i\", {\n class: `icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}`\n })), $jsx(\"a\", {\n class: \"link photo-browser-next\"\n }, $jsx(\"i\", {\n class: `icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}`\n }))));\n }\n renderThumbs() {\n const pb = this;\n return $jsx(\"div\", {\n class: \"toolbar toolbar-bottom photo-browser-thumbs\"\n }, $jsx(\"div\", {\n class: \"swiper\"\n }, $jsx(\"div\", {\n class: \"swiper-wrapper\"\n }, pb.params.thumbs.map((thumb, index) => pb.renderThumb(thumb, index)))));\n }\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n return $jsx(\"div\", {\n class: \"photo-browser-caption\",\n \"data-caption-index\": index\n }, caption);\n }\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-object-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, photo.html ? photo.html : photo);\n }\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide photo-browser-slide-lazy swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"div\", {\n class: \"swiper-lazy-preloader\"\n }), $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n loading: \"lazy\",\n src: photo.url ? photo.url : photo\n })));\n }\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n return $jsx(\"div\", {\n class: \"photo-browser-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, $jsx(\"span\", {\n class: \"swiper-zoom-container\"\n }, $jsx(\"img\", {\n src: photo.url ? photo.url : photo\n })));\n }\n renderThumb(thumb, index) {\n const pb = this;\n const url = typeof thumb === 'string' ? thumb : thumb.url;\n if (pb.params.renderThumb) return pb.params.renderThumb.call(pb, thumb, index);\n return $jsx(\"div\", {\n class: \"photo-browser-thumbs-slide swiper-slide\",\n \"data-swiper-slide-index\": index\n }, url && $jsx(\"img\", {\n src: url,\n loading: \"lazy\"\n }));\n }\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n return $jsx(\"div\", {\n class: `photo-browser photo-browser-${pb.params.theme}`\n }, $jsx(\"div\", {\n class: \"view\"\n }, $jsx(\"div\", {\n class: `page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}`,\n \"data-name\": \"photo-browser-page\"\n }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), pb.params.thumbs && pb.params.thumbs.length && pb.renderThumbs(), $jsx(\"div\", {\n class: `photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}`\n }, pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n })), $jsx(\"div\", {\n class: \"photo-browser-swiper-container swiper\"\n }, $jsx(\"div\", {\n class: \"photo-browser-swiper-wrapper swiper-wrapper\"\n }, !pb.params.virtualSlides && pb.params.photos.map((photo, index) => {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }))))));\n }\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = `<div class=\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\">${pb.render()}</div>`;\n return standaloneHtml;\n }\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n return pageHtml;\n }\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = `<div class=\"popup photo-browser-popup\">${pb.render()}</div>`;\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n $el[0].f7PhotoBrowser = pb;\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n const hasThumbs = pb.params.thumbs && pb.params.thumbs.length > 0;\n\n // Init Swiper\n let clickTimeout;\n let preventThumbsSlide;\n let preventMainSlide;\n const initialSlide = pb.activeIndex;\n const swiperParams = extend({}, pb.params.swiper, {\n initialSlide,\n // cssMode:\n // typeof pb.params.swiper.cssMode === 'undefined' && (app.device.ios || app.device.android)\n // ? true\n // : pb.params.swiper.cssMode,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange() {\n const swiper = this;\n if (hasThumbs && pb.thumbsSwiper && !preventMainSlide) {\n preventThumbsSlide = true;\n pb.thumbsSwiper.slideTo(pb.swiper.activeIndex);\n setTimeout(() => {\n preventThumbsSlide = false;\n });\n }\n pb.onSlideChange(swiper);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n pb.emit('local::slideChange', ...args);\n },\n transitionStart() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart() {\n const swiper = this;\n pb.onSlideChange(swiper);\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n pb.emit('local::slideChangeTransitionEnd', ...args);\n }\n }\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n extend(swiperParams.on, {\n touchStart(swiper, e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(swiper, e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(swiper, e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n }\n });\n }\n if (pb.params.virtualSlides) {\n extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.lazy === true) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }\n }\n });\n }\n const window = getWindow();\n pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl[0], swiperParams) : new window.Swiper(pb.$swiperContainerEl[0], swiperParams);\n if (pb.activeIndex === 0 || pb.params.virtualSlides) {\n pb.onSlideChange(pb.swiper);\n }\n if (hasThumbs) {\n const thumbsSwiperParams = {\n el: pb.$el.find('.photo-browser-thumbs .swiper')[0],\n slidesPerView: 'auto',\n centeredSlides: true,\n spaceBetween: 4,\n watchSlidesProgress: true,\n initialSlide,\n on: {\n touchMove() {\n preventMainSlide = true;\n },\n touchEnd() {\n preventMainSlide = false;\n },\n slideChange(s) {\n if (preventThumbsSlide) return;\n pb.swiper.slideTo(s.activeIndex, 0);\n },\n click(s) {\n if (!s.clickedSlide) return;\n const index = parseInt($(s.clickedSlide).attr('data-swiper-slide-index'), 10);\n s.slideTo(index, 0);\n }\n }\n };\n pb.thumbsSwiper = app.swiper ? app.swiper.create(thumbsSwiperParams) : new window.Swiper(thumbsSwiperParams);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.thumbsSwiper && pb.thumbsSwiper.destroy) {\n pb.thumbsSwiper.destroy(true, false);\n pb.thumbsSwiper = null;\n delete pb.thumbsSwiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n const pageHtml = pb.renderPage();\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n }\n }\n }\n });\n return pb;\n }\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n const standaloneHtml = pb.renderStandalone();\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n const popupHtml = pb.renderPopup();\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n closeByBackdropClick: pb.params.closeByBackdropClick,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n }\n }\n };\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams\n }\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\nexport default PhotoBrowser;", "import PhotoBrowser from './photo-browser-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n thumbs: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: undefined,\n popupCloseLinkIcon: true,\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: false,\n virtualSlides: true,\n lazy: true,\n closeByBackdropClick: true,\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderThumb: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n swiper: {\n cssMode: false,\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n keyboard: {\n enabled: true\n },\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev'\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1\n }\n }\n }\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser'\n });\n },\n static: {\n PhotoBrowser\n }\n};", "import $ from '../../shared/dom7.js';\nimport { extend, now, nextTick } from '../../shared/utils.js';\nimport Modal from '../modal/modal-class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = extend({\n on: {}\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n const notification = this;\n notification.app = app;\n notification.params = extendedParams;\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick\n } = notification.params;\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n });\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n if ($el.length === 0) {\n return notification.destroy();\n }\n extend(notification, {\n $el,\n el: $el[0],\n type: 'notification'\n });\n $el[0].f7Modal = notification;\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', e => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n const timeDiff = now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {\n notification.close();\n }\n }\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, {\n passive: true\n });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each(openedEl => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n clearTimeout(timeoutId);\n });\n return notification;\n }\n render() {\n const notification = this;\n if (notification.params.render) return notification.params.render.call(notification, notification);\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass\n } = notification.params;\n return $jsx(\"div\", {\n class: `notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"notification-header\"\n }, icon && $jsx(\"div\", {\n class: \"notification-icon\"\n }, icon), title && $jsx(\"div\", {\n class: \"notification-title\"\n }, title), titleRightText && $jsx(\"div\", {\n class: \"notification-title-right-text\"\n }, titleRightText), closeButton && $jsx(\"span\", {\n class: \"notification-close-button\"\n })), $jsx(\"div\", {\n class: \"notification-content\"\n }, subtitle && $jsx(\"div\", {\n class: \"notification-subtitle\"\n }, subtitle), text && $jsx(\"div\", {\n class: \"notification-text\"\n }, text)));\n }\n}\nexport default Notification;", "import { extend } from '../../shared/utils.js';\nimport Notification from './notification-class.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nexport default {\n name: 'notification',\n static: {\n Notification\n },\n create() {\n const app = this;\n app.notification = extend({}, ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in'\n }));\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n containerEl: null\n }\n }\n};", "/* eslint \"no-useless-escape\": \"off\" */\nimport $ from '../../shared/dom7.js';\nimport { extend, id, nextTick, deleteProps, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport Framework7Class from '../../shared/class.js';\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass Autocomplete extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const ac = this;\n ac.app = app;\n const device = getDevice();\n const defaults = extend({\n on: {}\n }, app.params.autocomplete);\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n ac.params = extend(defaults, params);\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n const uniqueId = id();\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id: uniqueId,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${uniqueId}`,\n $modalEl: undefined,\n $dropdownEl: undefined\n });\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const inputEl = this;\n const value = inputEl.value;\n const isValues = $(inputEl).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !inputEl.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (inputEl.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n return ac;\n }\n get view() {\n const ac = this;\n const {\n $openerEl,\n $inputEl,\n app\n } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n positionDropdown() {\n const ac = this;\n const {\n $inputEl,\n app,\n $dropdownEl\n } = ac;\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n let $listParent;\n $listEl.parents().each(parentEl => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 ? `${paddingValue}px` : ''\n });\n }\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n const {\n $el\n } = ac;\n ac.params.source.call(ac, query, items => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n renderPreloader() {\n const ac = this;\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n return $jsx(\"div\", {\n class: `autocomplete-preloader preloader ${ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''}`\n }, preloaders[`${ac.app.theme}PreloaderContent`] || '');\n }\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n return $jsx(\"form\", {\n class: \"searchbar\"\n }, $jsx(\"div\", {\n class: \"searchbar-inner\"\n }, $jsx(\"div\", {\n class: \"searchbar-input-wrap\"\n }, $jsx(\"input\", {\n type: \"search\",\n spellcheck: ac.params.searchbarSpellcheck || 'false',\n placeholder: ac.params.searchbarPlaceholder\n }), $jsx(\"i\", {\n class: \"searchbar-icon\"\n }), $jsx(\"span\", {\n class: \"input-clear-button\"\n })), ac.params.searchbarDisableButton && $jsx(\"span\", {\n class: \"searchbar-disable-button\"\n }, ac.params.searchbarDisableText)));\n }\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: `item-${item.inputType} item-content`\n }, $jsx(\"input\", {\n type: item.inputType,\n name: item.inputName,\n value: itemValue,\n _checked: item.selected\n }), $jsx(\"i\", {\n class: `icon icon-${item.inputType}`\n }), $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n // Dropdown\n if (!item.placeholder) {\n return $jsx(\"li\", null, $jsx(\"label\", {\n class: \"item-radio item-content\",\n \"data-value\": itemValue\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n\n // Dropwdown placeholder\n return $jsx(\"li\", {\n class: \"autocomplete-dropdown-placeholder\"\n }, $jsx(\"label\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, item.text))));\n }\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n\n // eslint-disable-next-line\n const navbarLeft = inPopup ? ac.params.preloader && $jsx(\"div\", {\n class: \"left\"\n }, ac.renderPreloader()) : $jsx(\"div\", {\n class: \"left sliding\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, ac.params.pageBackLinkText)));\n const navbarRight = inPopup ? $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".autocomplete-popup\"\n }, ac.params.popupCloseLinkText)) : ac.params.preloader && $jsx(\"div\", {\n class: \"right\"\n }, ac.renderPreloader());\n return $jsx(\"div\", {\n class: `navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: `navbar-inner ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}`\n }, navbarLeft, pageTitle && $jsx(\"div\", {\n class: \"title sliding\"\n }, pageTitle), navbarRight, $jsx(\"div\", {\n class: \"subnavbar sliding\"\n }, ac.renderSearchbar())));\n }\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"autocomplete-dropdown\"\n }, $jsx(\"div\", {\n class: \"autocomplete-dropdown-inner\"\n }, $jsx(\"div\", {\n class: `list no-safe-areas`\n }, $jsx(\"ul\", null))), ac.params.preloader && ac.renderPreloader());\n }\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"page page-with-subnavbar autocomplete-page\",\n \"data-name\": \"autocomplete-page\"\n }, ac.renderNavbar(inPopup), $jsx(\"div\", {\n class: \"searchbar-backdrop\"\n }), $jsx(\"div\", {\n class: \"page-content\"\n }, $jsx(\"div\", {\n class: `list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''}`\n }, $jsx(\"ul\", null)), $jsx(\"div\", {\n class: \"list autocomplete-not-found\"\n }, $jsx(\"ul\", null, $jsx(\"li\", {\n class: \"item-content\"\n }, $jsx(\"div\", {\n class: \"item-inner\"\n }, $jsx(\"div\", {\n class: \"item-title\"\n }, ac.params.notFoundText))))), $jsx(\"div\", {\n class: \"list autocomplete-values\"\n }, $jsx(\"ul\", null))));\n }\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n return $jsx(\"div\", {\n class: \"popup autocomplete-popup\"\n }, $jsx(\"div\", {\n class: \"view\"\n }, ac.renderPage(true), \";\"));\n }\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n }\n }\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n ac.emit('local::open autocompleteOpen', ac);\n }\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n } else {\n ac.detachPageEvents();\n }\n ac.emit('local::close autocompleteClose', ac);\n }\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n ac.emit('local::closed autocompleteClosed', ac);\n }\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n }\n },\n options: {\n animate: ac.params.animate\n }\n }\n });\n return ac;\n }\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n }\n }\n };\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams\n }\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n openDropdown() {\n const ac = this;\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ac;\n }\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {\n ac.view.router.back({\n animate: ac.params.animate\n });\n } else {\n ac.modal.once('modalClosed', () => {\n nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n init() {\n const ac = this;\n ac.attachEvents();\n }\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n deleteProps(ac);\n ac.destroyed = true;\n }\n}\nexport default Autocomplete;", "import { extend } from '../../shared/utils.js';\nimport Autocomplete from './autocomplete-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n value: undefined,\n multiple: false,\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n openIn: 'page',\n // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: true,\n searchbarSpellcheck: false,\n popupPush: false,\n popupSwipeToClose: undefined,\n animate: true,\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n // Routing\n routableModals: false,\n url: 'select/',\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined\n }\n },\n static: {\n Autocomplete\n },\n create() {\n const app = this;\n app.autocomplete = extend(ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete'\n }), {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n }\n });\n }\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nclass Tooltip extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const tooltip = this;\n const support = getSupport();\n const defaults = extend({}, app.params.tooltip);\n const document = getDocument();\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n tooltip.params = extend(defaults, params);\n if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {\n tooltip.params.offset = 10;\n }\n const {\n targetEl,\n containerEl\n } = tooltip.params;\n if (!targetEl && !tooltip.params.delegated) return tooltip;\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip;\n if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip;\n let $containerEl = $(containerEl || app.$el).eq(0);\n if ($containerEl.length === 0) {\n $containerEl = app.$el;\n }\n const $el = $(tooltip.render()).eq(0);\n extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false\n });\n if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (tooltip.opened && ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)) return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = ((x - touchesStart.x) ** 2 + (y - touchesStart.y) ** 2) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.on('click', handleClick);\n }\n $('html').on('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n }\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n if (tooltip.params.delegated) {\n $(document).on('click', tooltip.params.targetEl, handleClick);\n } else {\n tooltip.$targetEl.off('click', handleClick);\n }\n $('html').off('click', handleClickOut);\n return;\n }\n if (tooltip.params.trigger === 'manual') return;\n if (support.touch) {\n const passive = support.passiveListener ? {\n passive: true\n } : false;\n if (tooltip.params.delegated) {\n $(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);\n } else {\n tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n }\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n // eslint-disable-next-line\n if (tooltip.params.delegated) {\n $(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);\n $(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);\n } else {\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);\n tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);\n }\n }\n };\n\n // Install Modules\n tooltip.useModules();\n tooltip.init();\n return tooltip;\n }\n setTargetEl(targetEl) {\n const tooltip = this;\n tooltip.detachEvents();\n tooltip.$targetEl = $(targetEl);\n tooltip.targetEl = tooltip.$targetEl[0];\n tooltip.attachEvents();\n return tooltip;\n }\n position(targetEl) {\n const tooltip = this;\n const {\n $el,\n app,\n $containerEl\n } = tooltip;\n const hasContainerEl = !!tooltip.params.containerEl;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({\n left: '',\n top: ''\n });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n $el.css({\n left: '',\n top: ''\n });\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n const boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n const clientRect = $targetEl[0].getBoundingClientRect();\n targetWidth = clientRect.width;\n targetHeight = clientRect.height;\n }\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - boundaries.left;\n targetOffsetTop = targetOffset.top - boundaries.top;\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < boundaries.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = targetHeight / 2 + targetOffsetTop - height / 2;\n if (top <= 0) {\n top = 8;\n } else if (top + height >= boundaries.height) {\n top = boundaries.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = targetWidth / 2 + targetOffsetLeft - width / 2;\n if (left < 8) left = 8;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || left + width > boundaries.width) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > boundaries.width) left = boundaries.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({\n top: `${top}px`,\n left: `${left}px`\n });\n }\n show(aroundEl) {\n const tooltip = this;\n const {\n $el,\n $targetEl,\n $containerEl\n } = tooltip;\n if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {\n $containerEl.append($el);\n }\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n hide() {\n const tooltip = this;\n const {\n $el,\n $targetEl\n } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const {\n cssClass,\n text\n } = tooltip.params;\n return `\n <div class=\"tooltip ${cssClass || ''}\">\n <div class=\"tooltip-content\">${text || ''}</div>\n </div>\n `.trim();\n }\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;", "import $ from '../../shared/dom7.js';\nimport Tooltip from './tooltip-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'tooltip',\n static: {\n Tooltip\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip'\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n delegated: false,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n containerEl: undefined\n }\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each(el => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n }\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({\n targetEl: el,\n text\n });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n }\n }\n }\n};", "export default {\n name: 'skeleton'\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n alphaLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-alpha-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, alphaLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-alpha\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.01\",\n min: \"0\",\n max: \"1\",\n class: \"color-picker-value-alpha\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-alpha\"\n }))));\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({\n alpha\n });\n }\n }\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({\n alpha: value\n });\n }\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n alpha\n } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-current-color\"\n }, $jsx(\"div\", {\n class: \"color-picker-current-color\"\n }));\n },\n update(self) {\n self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);\n }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n hexLabel,\n hexLabelText,\n hexValueEditable\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hex\"\n }, $jsx(\"div\", {\n class: \"color-picker-hex-wrap\"\n }, hexLabel && $jsx(\"div\", {\n class: \"color-picker-hex-label\"\n }, hexLabelText), $jsx(\"div\", {\n class: \"color-picker-hex-value\"\n }, hexValueEditable ? $jsx(\"input\", {\n type: \"text\",\n class: \"color-picker-value-hex\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hex\"\n }))));\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({\n hex: value\n });\n }\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hexValueEditable\n } = self.params;\n const {\n hex\n } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n }\n};", "import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText,\n saturationLabelText,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hsb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, saturationLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-saturation\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-saturation\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-saturation\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], s, self.value.hsb[2]]\n });\n }\n }\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n hsb[index] = value;\n self.setValue({\n hsb\n });\n }\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb,\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`);\n 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}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n hueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hue-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, hueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-hue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"360\",\n class: \"color-picker-value-hue\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-hue\"\n }))));\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n hue: value\n });\n }\n }\n });\n },\n update(self) {\n const {\n value\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hue\n } = value;\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hue}, 100%, 50%)`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n }\n};", "import { colorHsbToHsl } from '../../../shared/utils.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n brightnessLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-brightness-slider\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, brightnessLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-brightness\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n max: \"100\",\n class: \"color-picker-value-brightness\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-brightness\"\n }))));\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({\n hsb: [self.value.hsb[0], self.value.hsb[1], b]\n });\n }\n }\n });\n },\n update(self) {\n const {\n value,\n app\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n hsb\n } = value;\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n const hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);\n self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`);\n 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}%))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n }\n};", "/* eslint indent: [\"off\"] */\nimport $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-palette\"\n }, $jsx(\"div\", {\n class: \"color-picker-palette\"\n }, self.params.palette.map(p => {\n if (Array.isArray(p)) {\n let row = '<div class=\"color-picker-palette-row\">';\n // prettier-ignore\n row += p.map(c => `\n <div class=\"color-picker-palette-value\" data-palette-color=\"${c}\" style=\"background-color: ${c}\"></div>\n `).join('');\n row += '</div>';\n return row;\n }\n return $jsx(\"div\", {\n class: \"color-picker-palette-value\",\n \"data-palette-color\": p,\n style: `background-color: ${p}`\n });\n })));\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex\n });\n }\n self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n }\n};", "/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-current-colors\"\n }, $jsx(\"div\", {\n class: \"color-picker-initial-color\"\n }), $jsx(\"div\", {\n class: \"color-picker-current-color\"\n })));\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const {\n hex,\n alpha\n } = self.initialValue;\n self.setValue({\n hex,\n alpha\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n }\n};", "import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n barLabel,\n barValue,\n barValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-bars\"\n }, $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-red\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-green\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-bar-wrap\"\n }, barLabel && $jsx(\"div\", {\n class: \"color-picker-bar-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-bar color-picker-bar-blue\"\n }), barValue && $jsx(\"div\", {\n class: \"color-picker-bar-value\"\n }, barValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-bar-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-bar-blue\"\n }))));\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n redBar,\n greenBar,\n blueBar\n } = self;\n const {\n barValue,\n barValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n }\n};", "import $ from '../../../shared/dom7.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render(self) {\n const {\n sliderLabel,\n sliderValue,\n sliderValueEditable,\n redLabelText,\n greenLabelText,\n blueLabelText\n } = self.params;\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-rgb-sliders\"\n }, $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, redLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-red\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-red\",\n \"data-color-index\": \"0\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-red\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, greenLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-green\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-green\",\n \"data-color-index\": \"1\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-green\"\n }))), $jsx(\"div\", {\n class: \"color-picker-slider-wrap\"\n }, sliderLabel && $jsx(\"div\", {\n class: \"color-picker-slider-label\"\n }, blueLabelText), $jsx(\"div\", {\n class: \"range-slider color-picker-slider color-picker-slider-blue\"\n }), sliderValue && $jsx(\"div\", {\n class: \"color-picker-slider-value\"\n }, sliderValueEditable ? $jsx(\"input\", {\n type: \"number\",\n step: \"1\",\n min: \"0\",\n max: \"255\",\n class: \"color-picker-value-blue\",\n \"data-color-index\": \"2\"\n }) : $jsx(\"span\", {\n class: \"color-picker-value-blue\"\n }))));\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [value, self.value.rgb[1], self.value.rgb[2]]\n });\n }\n }\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], value, self.value.rgb[2]]\n });\n }\n }\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({\n rgb: [self.value.rgb[0], self.value.rgb[1], value]\n });\n }\n }\n });\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({\n rgb\n });\n }\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n redRangeSlider,\n greenRangeSlider,\n blueRangeSlider\n } = self;\n const {\n sliderValue,\n sliderValueEditable\n } = self.params;\n const {\n rgb\n } = value;\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n const direction = app.rtl ? 'to left' : 'to right';\n redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n }\n};", "import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-sb-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n 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)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};", "import $ from '../../../shared/dom7.js';\nimport { colorHsbToHsl } from '../../../shared/utils.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum\"\n }, $jsx(\"div\", {\n class: \"color-picker-hs-spectrum-handle\"\n })));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHSFromSpecterCoords(x, y) {\n let h = (x - specterRect.left) / specterRect.width * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n self.setValue({\n hsb: [h, s, self.value.hsb[2]]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n const hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);\n 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)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n }\n};", "import $ from '../../../shared/dom7.js';\nimport { getSupport } from '../../../shared/get-support.js';\n/** @jsx $jsx */\nimport $jsx from '../../../shared/$jsx.js';\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = i * Math.PI / (total / 2);\n const hue = 360 / total * i;\n circles += `<circle cx=\"${150 - Math.sin(angle) * 125}\" cy=\"${150 - Math.cos(angle) * 125}\" r=\"25\" fill=\"hsl(${hue}, 100%, 50%)\"></circle>`;\n }\n return circles;\n}\nexport default {\n render() {\n return $jsx(\"div\", {\n class: \"color-picker-module color-picker-module-wheel\"\n }, $jsx(\"div\", {\n class: \"color-picker-wheel\"\n }, $jsx(\"svg\", {\n viewBox: \"0 0 300 300\",\n width: \"300\",\n height: \"300\"\n }, svgWheelCircles()), $jsx(\"div\", {\n class: \"color-picker-wheel-handle\"\n }), $jsx(\"div\", {\n class: \"color-picker-sb-spectrum\",\n style: \"background-color: hsl(0, 100%, 50%)\"\n }, $jsx(\"div\", {\n class: \"color-picker-sb-spectrum-handle\"\n }))));\n },\n init(self) {\n const {\n app\n } = self;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n const {\n $el\n } = self;\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = angleRad * 180 / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({\n hue: angleDeg\n });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n self.setValue({\n hsb: [self.value.hue, s, b]\n });\n }\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n function handleResize() {\n self.modules.wheel.update(self);\n }\n const passiveListener = app.touchEvents.start === 'touchstart' && getSupport().passiveListener ? {\n passive: true,\n capture: false\n } : false;\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value\n } = self;\n const {\n hsl,\n hsb\n } = value;\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = value.hue * Math.PI / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el.find('.color-picker-wheel-handle').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`).transform(`translate(${tX}px, ${tY}px)`);\n self.$el.find('.color-picker-sb-spectrum').css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n 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)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n }\n};", "import { extend, colorRgbToHex, colorRgbToHsl, colorHslToHsb, colorHslToRgb, colorHsbToHsl, colorHexToRgb, nextTick, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport $ from '../../shared/dom7.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport moduleAlphaSlider from './modules/alpha-slider.js';\nimport moduleCurrentColor from './modules/current-color.js';\nimport moduleHex from './modules/hex.js';\nimport moduleHsbSliders from './modules/hsb-sliders.js';\nimport moduleHueSlider from './modules/hue-slider.js';\nimport moduleBrightnessSlider from './modules/brightness-slider.js';\nimport modulePalette from './modules/palette.js';\nimport moduleInitialCurrentColors from './modules/initial-current-colors.js';\nimport moduleRgbBars from './modules/rgb-bars.js';\nimport moduleRgbSliders from './modules/rgb-sliders.js';\nimport moduleSbSpectrum from './modules/sb-spectrum.js';\nimport moduleHsSpectrum from './modules/hs-spectrum.js';\nimport moduleWheel from './modules/wheel.js';\n\n/** @jsx $jsx */\nimport $jsx from '../../shared/$jsx.js';\nclass ColorPicker extends Framework7Class {\n constructor(app, params) {\n if (params === void 0) {\n params = {};\n }\n super(params, [app]);\n const self = this;\n self.params = extend({}, app.params.colorPicker, params);\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n hex: moduleHex,\n // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n palette: modulePalette,\n // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n wheel: moduleWheel // eslint-disable-line\n }\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n self.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n delete self.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n }\n });\n self.init();\n return self;\n }\n get view() {\n const {\n $inputEl,\n $targetEl,\n app,\n params\n } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n return view;\n }\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const {\n scrollHeight,\n offsetHeight\n } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n getModalType() {\n const self = this;\n const {\n app,\n modal,\n params\n } = self;\n const {\n openIn,\n openInPhone\n } = params;\n const device = getDevice();\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (device.ios) {\n return device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768) {\n return 'popover';\n }\n return openInPhone;\n }\n formatValue() {\n const self = this;\n const {\n value\n } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];\n }\n setValue(value, updateModules) {\n if (value === void 0) {\n value = {};\n }\n if (updateModules === void 0) {\n updateModules = true;\n }\n const self = this;\n if (typeof value === 'undefined') return;\n let {\n hex,\n rgb,\n hsl,\n hsb,\n alpha = 1,\n hue,\n rgba,\n hsla\n } = self.value || {};\n const needChangeEvent = self.value || !self.value && !self.params.value;\n let valueChanged;\n Object.keys(value).forEach(k => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = value.rgb || value.rgba;\n rgb = [r, g, b];\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = value.hsl || value.hsla;\n hsl = [h, s, l];\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = colorHsbToHsl(...hsb);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n if (value.hex) {\n rgb = colorHexToRgb(value.hex);\n hex = colorRgbToHex(...rgb);\n hsl = colorRgbToHsl(...rgb);\n hsb = colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = colorHslToHsb(...hsl);\n rgb = colorHslToRgb(...hsl);\n hex = colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla\n };\n if (!self.initialValue) self.initialValue = extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n getValue() {\n const self = this;\n return self.value;\n }\n updateValue(fireEvents) {\n if (fireEvents === void 0) {\n fireEvents = true;\n }\n const self = this;\n const {\n $inputEl,\n value,\n $targetEl\n } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const {\n rgba\n } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n updateModules() {\n const self = this;\n const {\n modules\n } = self;\n self.params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n update() {\n const self = this;\n self.updateModules();\n }\n renderPicker() {\n const self = this;\n const {\n params,\n modules\n } = self;\n let html = '';\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n return html;\n }\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const {\n openIn,\n navbarTitleText,\n navbarBackLinkText,\n navbarCloseText\n } = self.params;\n return $jsx(\"div\", {\n class: \"navbar\"\n }, $jsx(\"div\", {\n class: \"navbar-bg\"\n }), $jsx(\"div\", {\n class: \"navbar-inner sliding\"\n }, openIn === 'page' && $jsx(\"div\", {\n class: \"left\"\n }, $jsx(\"a\", {\n class: \"link back\"\n }, $jsx(\"i\", {\n class: \"icon icon-back\"\n }), $jsx(\"span\", {\n class: \"if-not-md\"\n }, navbarBackLinkText))), $jsx(\"div\", {\n class: \"title\"\n }, navbarTitleText), openIn !== 'page' && $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link popup-close\",\n \"data-popup\": \".color-picker-popup\"\n }, navbarCloseText))));\n }\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return $jsx(\"div\", {\n class: \"toolbar toolbar-top\"\n }, $jsx(\"div\", {\n class: \"toolbar-inner\"\n }, $jsx(\"div\", {\n class: \"left\"\n }), $jsx(\"div\", {\n class: \"right\"\n }, $jsx(\"a\", {\n class: \"link sheet-close popover-close\",\n \"data-sheet\": \".color-picker-sheet-modal\",\n \"data-popover\": \".color-picker-popover\"\n }, self.params.toolbarCloseText))));\n }\n renderInline() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `color-picker color-picker-inline ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, self.renderPicker());\n }\n renderSheet() {\n const self = this;\n const {\n cssClass,\n toolbarSheet,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `sheet-modal color-picker color-picker-sheet-modal ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}`\n }, toolbarSheet && self.renderToolbar(), $jsx(\"div\", {\n class: \"sheet-modal-inner\"\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n renderPopover() {\n const self = this;\n const {\n cssClass,\n toolbarPopover,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popover color-picker-popover ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"popover-inner\"\n }, $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, toolbarPopover && self.renderToolbar(), $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPopup() {\n const self = this;\n const {\n cssClass,\n navbarPopup,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `popup color-picker-popup ${cssClass || ''}`\n }, $jsx(\"div\", {\n class: \"page\"\n }, navbarPopup && self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker()))));\n }\n renderPage() {\n const self = this;\n const {\n cssClass,\n groupedModules\n } = self.params;\n return $jsx(\"div\", {\n class: `page color-picker-page ${cssClass || ''}`,\n \"data-name\": \"color-picker-page\"\n }, self.renderNavbar(), $jsx(\"div\", {\n class: `color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}`\n }, $jsx(\"div\", {\n class: \"page-content\"\n }, self.renderPicker())));\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const {\n params\n } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n onOpen() {\n const self = this;\n const {\n initialized,\n $el,\n app,\n $inputEl,\n inline,\n value,\n params,\n modules\n } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({\n hex: '#ff0000'\n }, false);\n }\n } else if (value) {\n self.initialValue = extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n onClose() {\n const self = this;\n const {\n app,\n params,\n modules\n } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n if (self.$inputEl) {\n if (app.theme === 'md') {\n self.$inputEl.trigger('blur');\n } else {\n const validate = self.$inputEl.attr('validate');\n const required = self.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(self.$inputEl);\n }\n }\n }\n params.modules.forEach(m => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n if (!self.inline) {\n nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n open() {\n const self = this;\n const {\n app,\n opened,\n inline,\n $inputEl,\n $targetEl,\n params\n } = self;\n if (opened) return;\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n const colorPickerContent = self.render();\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n }\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: $targetEl || $inputEl,\n scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() {\n self.onOpened();\n },\n close() {\n self.onClose();\n },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n }\n }\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams\n }\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n close() {\n const self = this;\n const {\n opened,\n inline\n } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if (self.params.routableModals && self.view || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n init() {\n const self = this;\n self.initInput();\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const {\n $el\n } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n deleteProps(self);\n self.destroyed = true;\n }\n}\nexport default ColorPicker;", "import $ from '../../shared/dom7.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ColorPicker from './color-picker-class.js';\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker'\n });\n app.colorPicker.close = function close(el) {\n if (el === void 0) {\n el = '.color-picker';\n }\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || colorPicker && !colorPicker.opened) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: ['wheel'],\n 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']],\n groupedModules: false,\n centerModules: true,\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n hexLabel: false,\n hexValueEditable: false,\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n // Common opener settings\n containerEl: null,\n openIn: 'popover',\n // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup',\n // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: false,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null\n }\n }\n};", "import $ from '../../shared/dom7.js';\nimport { bindMethods, iosPreloaderContent, mdPreloaderContent } from '../../shared/utils.js';\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n const preloaders = {\n iosPreloaderContent,\n mdPreloaderContent\n };\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-item-root').prepend(`<div class=\"preloader treeview-preloader\">${preloaders[`${app.theme}PreloaderContent`]}</div>`);\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n }\n};\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n bindMethods(app, {\n treeview: Treeview\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n }\n }\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\nimport { getDevice } from '../../shared/get-device.js';\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '<i class=\"icon\">¶</i>', 'formatBlock.P'],\n h1: ['<i class=\"icon\">H<sub>1</sub></i>', '<i class=\"icon\">H<sub>1</sub></i>', 'formatBlock.H1'],\n h2: ['<i class=\"icon\">H<sub>2</sub></i>', '<i class=\"icon\">H<sub>2</sub></i>', 'formatBlock.H2'],\n h3: ['<i class=\"icon\">H<sub>3</sub></i>', '<i class=\"icon\">H<sub>3</sub></i>', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', '<i class=\"icon\">A<sub>1</sub></i>', 'subscript'],\n superscript: ['textformat_superscript', '<i class=\"icon\">A<sup>1</sup></i>', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']\n};\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n const document = getDocument();\n const device = getDevice();\n const defaults = extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n self.params = extend(defaults, params);\n const el = self.params.el;\n if (!el) return self;\n const $el = $(el);\n if ($el.length === 0) return self;\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('<div class=\"text-editor-content\" contenteditable></div>');\n $contentEl = $el.children('.text-editor-content');\n }\n extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0]\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n if (self.params.mode === 'keyboard-toolbar') {\n if (!(device.cordova || device.capacitor) && !device.android) {\n self.params.mode = 'popover';\n }\n }\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n return self;\n }\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n getValue() {\n const self = this;\n return self.value;\n }\n clearValue() {\n const self = this;\n self.setValue('');\n if (self.params.placeholder && !self.$contentEl.html()) {\n self.insertPlaceholder();\n }\n return self;\n }\n createLink() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n const selectedNodesLinks = [];\n const $selectedNodes = $(selectedNodes);\n for (let i = 0; i < $selectedNodes.length; i += 1) {\n const childNodes = $selectedNodes[i].children;\n if (childNodes) {\n for (let j = 0; j < childNodes.length; j += 1) {\n if ($(childNodes[j]).is('a')) {\n selectedNodesLinks.push(childNodes[j]);\n }\n }\n }\n }\n $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each(linkNode => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.linkUrlText, link => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n self.$el.trigger('texteditor:insertlink', {\n url: link.trim()\n });\n self.emit('local:insertLink textEditorInsertLink', self, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n insertImage() {\n const self = this;\n const document = getDocument();\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt('', self.params.imageUrlText, imageUrl => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n self.$el.trigger('texteditor:insertimage', {\n url: imageUrl.trim()\n });\n self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`<div class=\"text-editor-placeholder\">${self.params.placeholder}</div>`);\n }\n onSelectionChange() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n const rootEl = self.app.$el[0] || document.body;\n self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n onPaste(e) {\n const self = this;\n const document = getDocument();\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n self.value = value;\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self, self.value);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n onBlur() {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n onButtonClick(e) {\n const self = this;\n const window = getWindow();\n const document = getDocument();\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n const window = getWindow();\n const document = getDocument();\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n const window = getWindow();\n const document = getDocument();\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${buttonData.content || ''}</button>`;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${iconContent.indexOf('<') >= 0 ? iconContent : `<i class=\"${iconClass}\">${iconContent}</i>`}</button>`.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach(b => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '<div class=\"text-editor-button-divider\"></div>';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n createToolbar() {\n const self = this;\n self.$el.prepend(`<div class=\"text-editor-toolbar\">${self.renderButtons()}</div>`);\n }\n createKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl = $(`<div class=\"toolbar toolbar-bottom text-editor-keyboard-toolbar\"><div class=\"toolbar-inner\">${self.renderButtons()}</div></div>`);\n }\n createPopover() {\n const self = this;\n self.popover = self.app.popover.create({\n content: `\n <div class=\"popover dark text-editor-popover\">\n <div class=\"popover-inner\">${self.renderButtons()}</div>\n </div>\n `,\n closeByOutsideClick: false,\n backdrop: false\n });\n }\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.$el.append(self.$keyboardToolbarEl);\n }\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n deleteProps(self);\n self = null;\n }\n}\nexport default TextEditor;", "import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport TextEditor from './text-editor-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar',\n // or 'popover'\n value: undefined,\n // will use html content\n customButtons: null,\n buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true\n }\n },\n create() {\n const app = this;\n app.textEditor = extend(ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor'\n }));\n },\n static: {\n TextEditor\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each(editorEl => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each(editorEl => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n }\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(extend({\n el: editorEl\n }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n }\n }\n }\n};", "import { bindMethods } from '../../shared/utils.js';\nconst Breadcrumbs = {};\nexport default {\n name: 'breadrumbs',\n create() {\n const app = this;\n bindMethods(app, {\n breadrumbs: Breadcrumbs\n });\n }\n};", "export default {\n name: 'typography'\n};", "/**\n * Framework7 8.3.3\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: March 25, 2024\n */\n\nimport $ from './shared/dom7.js';\nimport Framework7 from './components/app/app-class.js';\nimport * as utils from './shared/utils.js';\nimport { getSupport } from './shared/get-support.js';\nimport { getDevice } from './shared/get-device.js';\nimport DeviceModule from './modules/device/device.js';\nimport SupportModule from './modules/support/support.js';\nimport UtilsModule from './modules/utils/utils.js';\nimport ResizeModule from './modules/resize/resize.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport HistoryModule from './modules/history/history.js';\nimport ServiceWorkerModule from './modules/service-worker/service-worker.js';\nimport StoreModule, { createStore } from './modules/store/store.js';\nimport Statusbar from './components/statusbar/statusbar.js';\nimport View from './components/view/view.js';\nimport Navbar from './components/navbar/navbar.js';\nimport Toolbar from './components/toolbar/toolbar.js';\nimport Subnavbar from './components/subnavbar/subnavbar.js';\nimport TouchRipple from './components/touch-ripple/touch-ripple.js';\nimport Modal from './components/modal/modal.js';\nimport Dialog from './components/dialog/dialog.js';\nimport Popup from './components/popup/popup.js';\nimport LoginScreen from './components/login-screen/login-screen.js';\nimport Popover from './components/popover/popover.js';\nimport Actions from './components/actions/actions.js';\nimport Sheet from './components/sheet/sheet.js';\nimport Toast from './components/toast/toast.js';\nimport Preloader from './components/preloader/preloader.js';\nimport Progressbar from './components/progressbar/progressbar.js';\nimport Sortable from './components/sortable/sortable.js';\nimport Swipeout from './components/swipeout/swipeout.js';\nimport Accordion from './components/accordion/accordion.js';\nimport ContactsList from './components/contacts-list/contacts-list.js';\nimport VirtualList from './components/virtual-list/virtual-list.js';\nimport ListIndex from './components/list-index/list-index.js';\nimport Timeline from './components/timeline/timeline.js';\nimport Tabs from './components/tabs/tabs.js';\nimport Panel from './components/panel/panel.js';\nimport Card from './components/card/card.js';\nimport Chip from './components/chip/chip.js';\nimport Form from './components/form/form.js';\nimport Input from './components/input/input.js';\nimport Checkbox from './components/checkbox/checkbox.js';\nimport Radio from './components/radio/radio.js';\nimport Toggle from './components/toggle/toggle.js';\nimport Range from './components/range/range.js';\nimport Stepper from './components/stepper/stepper.js';\nimport SmartSelect from './components/smart-select/smart-select.js';\nimport Grid from './components/grid/grid.js';\nimport Calendar from './components/calendar/calendar.js';\nimport Picker from './components/picker/picker.js';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll.js';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh.js';\nimport DataTable from './components/data-table/data-table.js';\nimport Fab from './components/fab/fab.js';\nimport Searchbar from './components/searchbar/searchbar.js';\nimport Messages from './components/messages/messages.js';\nimport Messagebar from './components/messagebar/messagebar.js';\nimport Swiper from './components/swiper/swiper.js';\nimport PhotoBrowser from './components/photo-browser/photo-browser.js';\nimport Notification from './components/notification/notification.js';\nimport Autocomplete from './components/autocomplete/autocomplete.js';\nimport Tooltip from './components/tooltip/tooltip.js';\nimport Skeleton from './components/skeleton/skeleton.js';\nimport ColorPicker from './components/color-picker/color-picker.js';\nimport Treeview from './components/treeview/treeview.js';\nimport TextEditor from './components/text-editor/text-editor.js';\nimport Breadcrumbs from './components/breadcrumbs/breadcrumbs.js';\nimport Typography from './components/typography/typography.js';\nFramework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ServiceWorkerModule, StoreModule, Statusbar, View, Navbar, Toolbar, Subnavbar, TouchRipple, Modal, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader, Progressbar, Sortable, Swipeout, Accordion, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid, Calendar, Picker, InfiniteScroll, PullToRefresh, DataTable, Fab, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Skeleton, ColorPicker, Treeview, TextEditor, Breadcrumbs, Typography]);\nexport { $ as Dom7, utils, getDevice, getSupport, createStore };\nexport default Framework7;\n"],
"mappings": "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S;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AACX,GAAG;AAAA,EACD,MAAM;AAAA,EACN,SAA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",
"names": ["document", "window", "document", "support", "window", "document", "window", "document", "open", "close", "window", "document", "support", "minTranslate", "maxTranslate", "isTopSheetModal", "onResize", "window", "document", "translate", "document", "translate", "document", "defaults", "attachEvents", "defaults", "attachEvents", "translate", "support", "document", "transitionEnd", "open", "close", "document", "support", "transitionEnd", "onResize", "onTouchStart", "onTouchMove", "onTouchEnd", "closeCard", "window", "document", "document", "window", "toggle", "support", "defaults", "attachEvents", "detachEvents", "support", "defaults", "attachEvents", "detachEvents", "defaults", "decimalPoint", "onTouchStart", "onTouchMove", "onTouchEnd", "attachEvents", "detachEvents", "defaults", "onClick", "attachEvents", "detachEvents", "open", "translate", "transition", "close", "window", "onResize", "close", "support", "refresh", "translate", "attachEvents", "detachEvents", "defaults", "attachEvents", "detachEvents", "open", "close", "defaults", "attachEvents", "detachEvents", "document", "enable", "enable", "disable", "toggle", "defaults", "classes", "defaults", "attachEvents", "detachEvents", "extend", "getDocument", "CustomEvent", "id", "getWindow", "deleteProps", "nextTick", "now", "getComputedStyle", "window", "getWindow", "getTranslate", "isObject", "extend", "classes", "document", "getDocument", "window", "getWindow", "document", "getDocument", "getSupport", "support", "getDevice", "observerUpdate", "events", "event", "slide", "translate", "realIndex", "getTranslate", "minTranslate", "maxTranslate", "transitionEnd", "nextTick", "slideTo", "setTranslate", "now", "increment", "breakpoints", "extend", "deleteProps", "modules", "document", "getDocument", "slide", "update", "appendSlide", "prependSlide", "removeSlide", "removeAllSlides", "document", "getDocument", "window", "getWindow", "event", "enable", "disable", "window", "getWindow", "now", "event", "nextTick", "events", "enable", "disable", "update", "disable", "enable", "classes", "loopFix", "update", "disable", "enable", "document", "getDocument", "setTranslate", "setTransition", "updateSize", "nextTick", "events", "disable", "enable", "setTranslate", "setTransition", "window", "getWindow", "onTouchStart", "event", "onTouchMove", "getTranslate", "onTouchEnd", "enable", "disable", "setTranslate", "Swiper", "translate", "setTransition", "nextTick", "id", "window", "getWindow", "slide", "document", "getDocument", "window", "getWindow", "document", "getDocument", "isObject", "update", "document", "getDocument", "onTouchStart", "translate", "onTouchMove", "now", "onTouchEnd", "slide", "onInit", "setTranslate", "setTransition", "slide", "setTranslate", "setTransition", "setTranslate", "browser", "setTransition", "setTranslate", "setTransition", "setTranslate", "translate", "setTransition", "setTranslate", "setTransition", "setTranslate", "setTransition", "isObject", "extend", "isObject", "extend", "extend", "isObject", "event", "updateSwiper", "defaults", "window", "defaults", "onResize", "attachEvents", "support", "defaults", "document", "attachEvents", "detachEvents", "modules", "close", "toggle", "document", "defaults", "attachEvents", "detachEvents", "window"]
}