framework7 6.3.16 → 7.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/accordion/accordion.js +132 -1
- package/components/accordion/accordion.lazy.js +1 -0
- package/components/actions/actions-class.js +370 -0
- package/components/actions/actions-rtl.css +1 -1
- package/components/actions/actions.css +1 -1
- package/components/actions/actions.d.ts +2 -0
- package/components/actions/actions.js +43 -1
- package/components/actions/actions.lazy.js +1 -0
- package/components/actions/actions.less +3 -0
- package/components/app/app-class.d.ts +10 -10
- package/{esm/components → components}/app/app-class.js +119 -152
- package/components/app/app.less +3 -3
- package/{esm/components → components}/app/load-module.js +34 -34
- package/components/appbar/appbar.js +3 -1
- package/components/appbar/appbar.lazy.js +1 -0
- package/components/area-chart/area-chart-class.js +507 -0
- package/components/area-chart/area-chart-rtl.css +1 -1
- package/components/area-chart/area-chart.css +1 -1
- package/components/area-chart/area-chart.js +47 -1
- package/components/area-chart/area-chart.lazy.js +1 -0
- package/{esm/components → components}/autocomplete/autocomplete-class.js +246 -258
- package/components/autocomplete/autocomplete-rtl.css +1 -1
- package/components/autocomplete/autocomplete.css +1 -1
- package/components/autocomplete/autocomplete.js +86 -1
- package/components/autocomplete/autocomplete.lazy.js +1 -0
- package/{esm/components → components}/badge/badge.js +0 -0
- package/{esm/components → components}/block/block.js +0 -0
- package/components/breadcrumbs/breadcrumbs-aurora.less +2 -0
- package/components/breadcrumbs/breadcrumbs-ios.less +2 -0
- package/components/breadcrumbs/breadcrumbs-md.less +2 -0
- package/components/breadcrumbs/breadcrumbs-rtl.css +1 -0
- package/components/breadcrumbs/breadcrumbs-vars.less +36 -0
- package/components/breadcrumbs/breadcrumbs.css +1 -0
- package/components/breadcrumbs/breadcrumbs.d.ts +15 -0
- package/components/breadcrumbs/breadcrumbs.js +13 -0
- package/components/breadcrumbs/breadcrumbs.lazy.js +1 -0
- package/components/breadcrumbs/breadcrumbs.less +100 -0
- package/{esm/components → components}/button/button.js +0 -0
- package/{esm/components → components}/calendar/calendar-class.js +828 -728
- package/components/calendar/calendar-rtl.css +1 -1
- package/components/calendar/calendar-vars.less +6 -10
- package/components/calendar/calendar.css +1 -1
- package/components/calendar/calendar.d.ts +2 -0
- package/components/calendar/calendar.js +112 -1
- package/components/calendar/calendar.lazy.js +1 -0
- package/components/calendar/calendar.less +20 -16
- package/components/card/card-rtl.css +1 -1
- package/components/card/card.css +1 -1
- package/components/card/card.js +592 -1
- package/components/card/card.lazy.js +1 -0
- package/components/checkbox/checkbox-rtl.css +1 -1
- package/components/checkbox/checkbox.css +1 -1
- package/components/checkbox/checkbox.js +3 -1
- package/components/checkbox/checkbox.lazy.js +1 -0
- package/components/chip/chip-rtl.css +1 -1
- package/components/chip/chip.css +1 -1
- package/components/chip/chip.js +3 -1
- package/components/chip/chip.lazy.js +1 -0
- package/{esm/components → components}/color-picker/color-picker-class.js +354 -367
- package/components/color-picker/color-picker-rtl.css +1 -1
- package/components/color-picker/color-picker.css +1 -1
- package/components/color-picker/color-picker.js +92 -1
- package/components/color-picker/color-picker.lazy.js +1 -0
- package/{esm/components → components}/color-picker/modules/alpha-slider.js +31 -20
- package/{esm/components → components}/color-picker/modules/brightness-slider.js +37 -26
- package/{esm/components → components}/color-picker/modules/current-color.js +5 -3
- package/{esm/components → components}/color-picker/modules/hex.js +28 -17
- package/{esm/components → components}/color-picker/modules/hs-spectrum.js +41 -29
- package/{esm/components → components}/color-picker/modules/hsb-sliders.js +57 -44
- package/{esm/components → components}/color-picker/modules/hue-slider.js +30 -19
- package/{esm/components → components}/color-picker/modules/initial-current-colors.js +15 -10
- package/{esm/components → components}/color-picker/modules/palette.js +16 -13
- package/{esm/components → components}/color-picker/modules/rgb-bars.js +44 -31
- package/{esm/components → components}/color-picker/modules/rgb-sliders.js +49 -36
- package/{esm/components → components}/color-picker/modules/sb-spectrum.js +41 -29
- package/{esm/components → components}/color-picker/modules/wheel.js +62 -50
- package/components/contacts-list/contacts-list-rtl.css +1 -1
- package/components/contacts-list/contacts-list.css +1 -1
- package/components/contacts-list/contacts-list.js +3 -1
- package/components/contacts-list/contacts-list.lazy.js +1 -0
- package/{esm/components → components}/data-table/data-table-class.js +43 -62
- package/components/data-table/data-table-rtl.css +1 -1
- package/components/data-table/data-table.css +1 -1
- package/components/data-table/data-table.js +72 -1
- package/components/data-table/data-table.lazy.js +1 -0
- package/{esm/components → components}/dialog/dialog-class.js +63 -72
- package/components/dialog/dialog-rtl.css +1 -1
- package/components/dialog/dialog.css +1 -1
- package/components/dialog/dialog.js +254 -1
- package/components/dialog/dialog.lazy.js +1 -0
- package/components/elevation/elevation.js +3 -1
- package/components/elevation/elevation.lazy.js +1 -0
- package/components/fab/fab.js +181 -1
- package/components/fab/fab.lazy.js +1 -0
- package/components/form/form.js +347 -1
- package/components/form/form.lazy.js +1 -0
- package/components/gauge/gauge-class.js +306 -0
- package/components/gauge/gauge.js +99 -1
- package/components/gauge/gauge.lazy.js +1 -0
- package/components/grid/grid-rtl.css +1 -1
- package/components/grid/grid.css +1 -1
- package/components/grid/grid.js +227 -1
- package/components/grid/grid.lazy.js +1 -0
- package/{esm/components → components}/icon/icon.js +0 -0
- package/components/infinite-scroll/infinite-scroll.js +110 -1
- package/components/infinite-scroll/infinite-scroll.lazy.js +1 -0
- package/components/input/input-rtl.css +1 -1
- package/components/input/input.css +1 -1
- package/components/input/input.js +394 -1
- package/components/input/input.lazy.js +1 -0
- package/components/input/input.less +1 -1
- package/components/lazy/lazy.js +283 -1
- package/components/lazy/lazy.lazy.js +1 -0
- package/{esm/components → components}/link/link.js +0 -0
- package/{esm/components → components}/list/list.js +0 -0
- package/{esm/components → components}/list-index/list-index-class.js +118 -126
- package/components/list-index/list-index-rtl.css +1 -1
- package/components/list-index/list-index.css +1 -1
- package/components/list-index/list-index.js +73 -1
- package/components/list-index/list-index.lazy.js +1 -0
- package/components/login-screen/login-screen-class.js +43 -0
- package/components/login-screen/login-screen-rtl.css +1 -1
- package/components/login-screen/login-screen.css +1 -1
- package/components/login-screen/login-screen.js +28 -1
- package/components/login-screen/login-screen.lazy.js +1 -0
- package/components/login-screen/login-screen.less +1 -1
- package/components/menu/menu.js +79 -1
- package/components/menu/menu.lazy.js +1 -0
- package/{esm/components → components}/messagebar/messagebar-class.js +128 -156
- package/components/messagebar/messagebar-rtl.css +1 -1
- package/components/messagebar/messagebar.css +1 -1
- package/components/messagebar/messagebar.js +74 -1
- package/components/messagebar/messagebar.lazy.js +1 -0
- package/{esm/components → components}/messages/messages-class.js +166 -246
- package/components/messages/messages-rtl.css +1 -1
- package/components/messages/messages.css +1 -1
- package/components/messages/messages.js +73 -1
- package/components/messages/messages.lazy.js +1 -0
- package/components/modal/custom-modal-class.js +76 -0
- package/{esm/components → components}/modal/modal-class.js +81 -86
- package/components/modal/modal.js +25 -0
- package/{esm/components → components}/navbar/navbar.js +169 -174
- package/components/notification/notification-aurora.less +1 -1
- package/{esm/components → components}/notification/notification-class.js +69 -82
- package/components/notification/notification-ios.less +1 -1
- package/components/notification/notification-rtl.css +1 -1
- package/components/notification/notification.css +1 -1
- package/components/notification/notification.js +35 -1
- package/components/notification/notification.lazy.js +1 -0
- package/components/page/page-vars.less +1 -1
- package/{esm/components → components}/page/page.js +0 -0
- package/{esm/components → components}/panel/panel-class.js +189 -220
- package/components/panel/panel-rtl.css +1 -1
- package/components/panel/panel.css +1 -1
- package/components/panel/panel.js +190 -1
- package/components/panel/panel.lazy.js +1 -0
- package/{esm/components → components}/panel/resizable-panel.js +33 -31
- package/{esm/components → components}/panel/swipe-panel.js +48 -46
- package/{esm/components → components}/photo-browser/photo-browser-class.js +210 -238
- package/components/photo-browser/photo-browser.js +73 -1
- package/components/photo-browser/photo-browser.lazy.js +1 -0
- package/{esm/components → components}/picker/picker-class.js +244 -244
- package/components/picker/picker-column.js +141 -0
- package/components/picker/picker-rtl.css +1 -1
- package/components/picker/picker.css +1 -1
- package/components/picker/picker.d.ts +2 -13
- package/components/picker/picker.js +59 -1
- package/components/picker/picker.lazy.js +1 -0
- package/components/picker/picker.less +28 -10
- package/components/pie-chart/pie-chart-class.js +264 -0
- package/components/pie-chart/pie-chart.js +35 -1
- package/components/pie-chart/pie-chart.lazy.js +1 -0
- package/{esm/components → components}/popover/popover-class.js +92 -104
- package/components/popover/popover-rtl.css +1 -1
- package/components/popover/popover.css +1 -1
- package/components/popover/popover.d.ts +2 -0
- package/components/popover/popover.js +77 -1
- package/components/popover/popover.lazy.js +1 -0
- package/components/popover/popover.less +3 -0
- package/{esm/components → components}/popup/popup-class.js +78 -88
- package/components/popup/popup-rtl.css +1 -1
- package/components/popup/popup.css +1 -1
- package/components/popup/popup.d.ts +2 -0
- package/components/popup/popup.js +42 -1
- package/components/popup/popup.lazy.js +1 -0
- package/components/popup/popup.less +24 -21
- package/components/preloader/preloader.js +115 -1
- package/components/preloader/preloader.lazy.js +1 -0
- package/components/progressbar/progressbar-rtl.css +1 -1
- package/components/progressbar/progressbar.css +1 -1
- package/components/progressbar/progressbar.js +166 -1
- package/components/progressbar/progressbar.lazy.js +1 -0
- package/{esm/components → components}/pull-to-refresh/pull-to-refresh-class.js +107 -124
- package/components/pull-to-refresh/pull-to-refresh.js +70 -1
- package/components/pull-to-refresh/pull-to-refresh.lazy.js +1 -0
- package/components/radio/radio-rtl.css +1 -1
- package/components/radio/radio.css +1 -1
- package/components/radio/radio.js +3 -1
- package/components/radio/radio.lazy.js +1 -0
- package/{esm/components → components}/range/range-class.js +196 -197
- package/components/range/range-rtl.css +1 -1
- package/components/range/range.css +1 -1
- package/components/range/range.js +79 -1
- package/components/range/range.lazy.js +1 -0
- package/components/searchbar/remove-diacritics.js +275 -0
- package/{esm/components → components}/searchbar/searchbar-class.js +135 -152
- package/components/searchbar/searchbar-rtl.css +1 -1
- package/components/searchbar/searchbar.css +1 -1
- package/components/searchbar/searchbar.js +121 -1
- package/components/searchbar/searchbar.lazy.js +1 -0
- package/components/searchbar/searchbar.less +1 -1
- package/{esm/components → components}/sheet/sheet-class.js +99 -113
- package/components/sheet/sheet-rtl.css +1 -1
- package/components/sheet/sheet.css +1 -1
- package/components/sheet/sheet.d.ts +2 -0
- package/components/sheet/sheet.js +69 -1
- package/components/sheet/sheet.lazy.js +1 -0
- package/components/sheet/sheet.less +19 -16
- package/components/skeleton/skeleton-rtl.css +1 -1
- package/components/skeleton/skeleton-vars.less +1 -1
- package/components/skeleton/skeleton.css +1 -1
- package/components/skeleton/skeleton.js +3 -1
- package/components/skeleton/skeleton.lazy.js +1 -0
- package/components/skeleton/skeleton.less +1 -1
- package/{esm/components → components}/smart-select/smart-select-class.js +288 -300
- package/components/smart-select/smart-select.js +149 -1
- package/components/smart-select/smart-select.lazy.js +1 -0
- package/components/sortable/sortable-rtl.css +1 -1
- package/components/sortable/sortable.css +1 -1
- package/components/sortable/sortable.js +306 -1
- package/components/sortable/sortable.lazy.js +1 -0
- package/components/statusbar/statusbar.d.ts +9 -9
- package/{esm/components → components}/statusbar/statusbar.js +51 -44
- package/{esm/components → components}/stepper/stepper-class.js +108 -119
- package/components/stepper/stepper-rtl.css +1 -1
- package/components/stepper/stepper.css +1 -1
- package/components/stepper/stepper.js +86 -1
- package/components/stepper/stepper.lazy.js +1 -0
- package/{esm/components → components}/subnavbar/subnavbar.js +4 -3
- package/components/swipeout/swipeout-rtl.css +1 -1
- package/components/swipeout/swipeout.css +1 -1
- package/components/swipeout/swipeout.js +597 -1
- package/components/swipeout/swipeout.lazy.js +1 -0
- package/components/swiper/swiper-rtl.css +1 -1
- package/components/swiper/swiper.css +1 -1
- package/components/swiper/swiper.js +191 -1
- package/components/swiper/swiper.lazy.js +1 -0
- package/components/swiper/swiper.less +1 -1
- package/components/tabs/tabs.js +271 -1
- package/components/tabs/tabs.lazy.js +1 -0
- package/{esm/components → components}/text-editor/text-editor-class.js +174 -186
- package/components/text-editor/text-editor-rtl.css +1 -1
- package/components/text-editor/text-editor.css +1 -1
- package/components/text-editor/text-editor.js +89 -1
- package/components/text-editor/text-editor.lazy.js +1 -0
- package/components/timeline/timeline-rtl.css +1 -1
- package/components/timeline/timeline.css +1 -1
- package/components/timeline/timeline.js +3 -1
- package/components/timeline/timeline.lazy.js +1 -0
- package/components/toast/toast-class.js +119 -0
- package/components/toast/toast.js +43 -1
- package/components/toast/toast.lazy.js +1 -0
- package/{esm/components → components}/toggle/toggle-class.js +51 -68
- package/components/toggle/toggle-rtl.css +1 -1
- package/components/toggle/toggle.css +1 -1
- package/components/toggle/toggle.js +65 -1
- package/components/toggle/toggle.lazy.js +1 -0
- package/{esm/components → components}/toolbar/toolbar.js +65 -61
- package/{esm/components → components}/tooltip/tooltip-class.js +100 -111
- package/components/tooltip/tooltip.js +144 -1
- package/components/tooltip/tooltip.lazy.js +1 -0
- package/components/touch-ripple/touch-ripple-class.js +98 -0
- package/components/touch-ripple/touch-ripple-vars.less +1 -1
- package/components/touch-ripple/touch-ripple.js +18 -0
- package/components/treeview/treeview-rtl.css +1 -1
- package/components/treeview/treeview.css +1 -1
- package/components/treeview/treeview.js +83 -1
- package/components/treeview/treeview.lazy.js +1 -0
- package/components/typography/typography.js +3 -1
- package/components/typography/typography.lazy.js +1 -0
- package/{esm/components → components}/view/resizable-view.js +26 -24
- package/{esm/components → components}/view/view-class.js +54 -73
- package/components/view/view.d.ts +3 -1
- package/{esm/components → components}/view/view.js +41 -31
- package/{esm/components → components}/virtual-list/virtual-list-class.js +158 -175
- package/components/virtual-list/virtual-list.js +19 -1
- package/components/virtual-list/virtual-list.lazy.js +1 -0
- package/framework7-bundle-rtl.css +544 -1021
- package/framework7-bundle-rtl.min.css +3 -3
- package/framework7-bundle.css +544 -1021
- package/framework7-bundle.esm.js +99 -0
- package/framework7-bundle.js +34567 -35041
- package/framework7-bundle.js.map +1 -1
- package/framework7-bundle.less +3 -2
- package/framework7-bundle.min.css +3 -3
- package/framework7-bundle.min.js +3 -3
- package/framework7-bundle.min.js.map +1 -1
- package/framework7-lite-bundle.esm.js +92 -0
- package/framework7-lite.esm.js +39 -0
- package/framework7-rtl.css +52 -56
- package/framework7-rtl.min.css +3 -3
- package/{types/types.d.ts → framework7-types.d.ts} +5 -1
- package/framework7.css +52 -56
- package/framework7.d.ts +85 -81
- package/framework7.esm.js +43 -0
- package/framework7.js +3395 -4063
- package/framework7.js.map +1 -1
- package/framework7.less +2 -2
- package/framework7.min.css +3 -3
- package/framework7.min.js +3 -3
- package/framework7.min.js.map +1 -1
- package/less/mixins.less +2 -2
- package/{esm/modules → modules}/clicks/clicks.js +19 -18
- package/modules/component/$h.js +14 -0
- package/modules/component/$jsx.js +18 -0
- package/modules/component/component-class.js +382 -0
- package/modules/component/component.js +50 -0
- package/{esm/modules → modules}/component/custom-components.js +0 -0
- package/{esm/modules → modules}/component/eventslisteners.js +15 -19
- package/modules/component/parse-component.js +80 -0
- package/modules/component/patch.js +8 -0
- package/{esm/modules → modules}/component/snabbdom/h.js +1 -1
- package/{esm/modules → modules}/component/snabbdom/helpers/attachto.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/hooks.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/htmldomapi.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/is.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/attributes.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/class.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/dataset.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/eventlisteners.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/hero.js +1 -1
- package/{esm/modules → modules}/component/snabbdom/modules/module.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/props.js +0 -0
- package/{esm/modules → modules}/component/snabbdom/modules/style.js +1 -1
- package/modules/component/snabbdom/snabbdom.bundle.js +19 -0
- package/{esm/modules → modules}/component/snabbdom/snabbdom.js +9 -21
- package/{esm/modules → modules}/component/snabbdom/thunk.js +1 -1
- package/{esm/modules → modules}/component/snabbdom/tovnode.js +2 -2
- package/{esm/modules → modules}/component/snabbdom/vnode.js +0 -0
- package/{esm/modules → modules}/component/vdom.js +110 -134
- package/{esm/modules → modules}/demo-module.js +15 -7
- package/{esm/modules → modules}/device/device.js +14 -13
- package/{esm/modules → modules}/history/history.js +3 -2
- package/{esm/modules → modules}/request/request.js +3 -3
- package/modules/resize/resize.js +65 -0
- package/{esm/modules → modules}/router/app-router-check.js +1 -1
- package/{esm/modules → modules}/router/async-component.js +3 -3
- package/{esm/modules → modules}/router/back.js +125 -125
- package/{esm/modules → modules}/router/clear-previous-history.js +10 -10
- package/modules/router/component-loader.js +174 -0
- package/{esm/modules → modules}/router/modal.js +53 -53
- package/{esm/modules → modules}/router/navigate.js +147 -228
- package/{esm/modules → modules}/router/process-route-queue.js +20 -17
- package/{esm/modules → modules}/router/redirect.js +8 -12
- package/{esm/modules → modules}/router/router-class.js +423 -444
- package/{esm/modules → modules}/router/router.js +6 -4
- package/{esm/modules → modules}/router/swipe-back.js +148 -182
- package/{esm/modules → modules}/router/tab.js +52 -52
- package/{esm/modules → modules}/service-worker/service-worker.js +42 -38
- package/modules/store/create-store.js +149 -0
- package/modules/store/store.js +11 -0
- package/modules/support/support.js +7 -0
- package/{esm/modules → modules}/touch/touch.js +75 -74
- package/modules/utils/utils.js +10 -0
- package/package.json +256 -11
- package/shared/$jsx.js +22 -0
- package/shared/class.js +143 -0
- package/shared/constructor-methods.js +42 -0
- package/{esm/shared → shared}/dom7.js +2 -1
- package/shared/events-class.js +100 -0
- package/{types/shared → shared}/get-device.d.ts +0 -2
- package/{esm/shared → shared}/get-device.js +34 -40
- package/{types/shared → shared}/get-support.d.ts +0 -0
- package/{esm/shared → shared}/get-support.js +7 -6
- package/{esm/shared → shared}/history.js +63 -49
- package/shared/modal-methods.js +90 -0
- package/{types/shared → shared}/request.d.ts +0 -0
- package/shared/request.js +474 -0
- package/{types/shared → shared}/utils.d.ts +0 -0
- package/{esm/shared → shared}/utils.js +125 -162
- package/bundle/package.json +0 -8
- package/cjs/components/accordion/accordion.js +0 -136
- package/cjs/components/actions/actions-class.js +0 -383
- package/cjs/components/actions/actions.js +0 -58
- package/cjs/components/app/app-class.js +0 -378
- package/cjs/components/app/load-module.js +0 -155
- package/cjs/components/appbar/appbar.js +0 -8
- package/cjs/components/area-chart/area-chart-class.js +0 -526
- package/cjs/components/area-chart/area-chart.js +0 -56
- package/cjs/components/autocomplete/autocomplete-class.js +0 -975
- package/cjs/components/autocomplete/autocomplete.js +0 -93
- package/cjs/components/badge/badge.js +0 -8
- package/cjs/components/block/block.js +0 -8
- package/cjs/components/button/button.js +0 -8
- package/cjs/components/calendar/calendar-class.js +0 -2095
- package/cjs/components/calendar/calendar.js +0 -124
- package/cjs/components/card/card.js +0 -625
- package/cjs/components/checkbox/checkbox.js +0 -8
- package/cjs/components/chip/chip.js +0 -8
- package/cjs/components/color-picker/color-picker-class.js +0 -1022
- package/cjs/components/color-picker/color-picker.js +0 -105
- package/cjs/components/color-picker/modules/alpha-slider.js +0 -101
- package/cjs/components/color-picker/modules/brightness-slider.js +0 -86
- package/cjs/components/color-picker/modules/current-color.js +0 -23
- package/cjs/components/color-picker/modules/hex.js +0 -81
- package/cjs/components/color-picker/modules/hs-spectrum.js +0 -137
- package/cjs/components/color-picker/modules/hsb-sliders.js +0 -206
- package/cjs/components/color-picker/modules/hue-slider.js +0 -78
- package/cjs/components/color-picker/modules/initial-current-colors.js +0 -54
- package/cjs/components/color-picker/modules/palette.js +0 -61
- package/cjs/components/color-picker/modules/rgb-bars.js +0 -196
- package/cjs/components/color-picker/modules/rgb-sliders.js +0 -198
- package/cjs/components/color-picker/modules/sb-spectrum.js +0 -137
- package/cjs/components/color-picker/modules/wheel.js +0 -198
- package/cjs/components/contacts-list/contacts-list.js +0 -8
- package/cjs/components/data-table/data-table-class.js +0 -188
- package/cjs/components/data-table/data-table.js +0 -75
- package/cjs/components/dialog/dialog-class.js +0 -250
- package/cjs/components/dialog/dialog.js +0 -297
- package/cjs/components/elevation/elevation.js +0 -8
- package/cjs/components/fab/fab.js +0 -195
- package/cjs/components/form/form.js +0 -341
- package/cjs/components/gauge/gauge-class.js +0 -332
- package/cjs/components/gauge/gauge.js +0 -103
- package/cjs/components/grid/grid.js +0 -233
- package/cjs/components/icon/icon.js +0 -8
- package/cjs/components/infinite-scroll/infinite-scroll.js +0 -111
- package/cjs/components/input/input.js +0 -396
- package/cjs/components/lazy/lazy.js +0 -283
- package/cjs/components/link/link.js +0 -8
- package/cjs/components/list/list.js +0 -8
- package/cjs/components/list-index/list-index-class.js +0 -405
- package/cjs/components/list-index/list-index.js +0 -77
- package/cjs/components/login-screen/login-screen-class.js +0 -68
- package/cjs/components/login-screen/login-screen.js +0 -44
- package/cjs/components/menu/menu.js +0 -92
- package/cjs/components/messagebar/messagebar-class.js +0 -446
- package/cjs/components/messagebar/messagebar.js +0 -78
- package/cjs/components/messages/messages-class.js +0 -633
- package/cjs/components/messages/messages.js +0 -76
- package/cjs/components/modal/custom-modal-class.js +0 -99
- package/cjs/components/modal/modal-class.js +0 -277
- package/cjs/components/modal/modal.js +0 -32
- package/cjs/components/navbar/navbar.js +0 -833
- package/cjs/components/notification/notification-class.js +0 -269
- package/cjs/components/notification/notification.js +0 -44
- package/cjs/components/page/page.js +0 -8
- package/cjs/components/panel/panel-class.js +0 -660
- package/cjs/components/panel/panel.js +0 -219
- package/cjs/components/panel/resizable-panel.js +0 -197
- package/cjs/components/panel/swipe-panel.js +0 -363
- package/cjs/components/photo-browser/photo-browser-class.js +0 -781
- package/cjs/components/photo-browser/photo-browser.js +0 -78
- package/cjs/components/picker/picker-class.js +0 -704
- package/cjs/components/picker/picker-column.js +0 -389
- package/cjs/components/picker/picker.js +0 -77
- package/cjs/components/pie-chart/pie-chart-class.js +0 -290
- package/cjs/components/pie-chart/pie-chart.js +0 -44
- package/cjs/components/popover/popover-class.js +0 -365
- package/cjs/components/popover/popover.js +0 -93
- package/cjs/components/popup/popup-class.js +0 -416
- package/cjs/components/popup/popup.js +0 -57
- package/cjs/components/preloader/preloader.js +0 -111
- package/cjs/components/progressbar/progressbar.js +0 -185
- package/cjs/components/pull-to-refresh/pull-to-refresh-class.js +0 -627
- package/cjs/components/pull-to-refresh/pull-to-refresh.js +0 -74
- package/cjs/components/radio/radio.js +0 -8
- package/cjs/components/range/range-class.js +0 -674
- package/cjs/components/range/range.js +0 -93
- package/cjs/components/searchbar/remove-diacritics.js +0 -283
- package/cjs/components/searchbar/searchbar-class.js +0 -739
- package/cjs/components/searchbar/searchbar.js +0 -141
- package/cjs/components/sheet/sheet-class.js +0 -593
- package/cjs/components/sheet/sheet.js +0 -83
- package/cjs/components/skeleton/skeleton.js +0 -8
- package/cjs/components/smart-select/smart-select-class.js +0 -1005
- package/cjs/components/smart-select/smart-select.js +0 -151
- package/cjs/components/sortable/sortable.js +0 -335
- package/cjs/components/statusbar/statusbar.js +0 -226
- package/cjs/components/stepper/stepper-class.js +0 -497
- package/cjs/components/stepper/stepper.js +0 -96
- package/cjs/components/subnavbar/subnavbar.js +0 -28
- package/cjs/components/swipeout/swipeout.js +0 -618
- package/cjs/components/swiper/swiper.js +0 -189
- package/cjs/components/tabs/tabs.js +0 -295
- package/cjs/components/text-editor/text-editor-class.js +0 -627
- package/cjs/components/text-editor/text-editor.js +0 -93
- package/cjs/components/timeline/timeline.js +0 -8
- package/cjs/components/toast/toast-class.js +0 -142
- package/cjs/components/toast/toast.js +0 -51
- package/cjs/components/toggle/toggle-class.js +0 -213
- package/cjs/components/toggle/toggle.js +0 -72
- package/cjs/components/toolbar/toolbar.js +0 -234
- package/cjs/components/tooltip/tooltip-class.js +0 -409
- package/cjs/components/tooltip/tooltip.js +0 -146
- package/cjs/components/touch-ripple/touch-ripple-class.js +0 -110
- package/cjs/components/touch-ripple/touch-ripple.js +0 -34
- package/cjs/components/treeview/treeview.js +0 -88
- package/cjs/components/typography/typography.js +0 -8
- package/cjs/components/view/resizable-view.js +0 -155
- package/cjs/components/view/view-class.js +0 -251
- package/cjs/components/view/view.js +0 -196
- package/cjs/components/virtual-list/virtual-list-class.js +0 -654
- package/cjs/components/virtual-list/virtual-list.js +0 -27
- package/cjs/framework7-bundle.js +0 -208
- package/cjs/framework7-lite-bundle.js +0 -191
- package/cjs/framework7-lite.js +0 -87
- package/cjs/framework7.js +0 -98
- package/cjs/modules/clicks/clicks.js +0 -115
- package/cjs/modules/component/$h.js +0 -31
- package/cjs/modules/component/$jsx.js +0 -31
- package/cjs/modules/component/component-class.js +0 -434
- package/cjs/modules/component/component.js +0 -58
- package/cjs/modules/component/custom-components.js +0 -6
- package/cjs/modules/component/eventslisteners.js +0 -90
- package/cjs/modules/component/parse-component.js +0 -80
- package/cjs/modules/component/patch.js +0 -21
- package/cjs/modules/component/snabbdom/h.js +0 -72
- package/cjs/modules/component/snabbdom/helpers/attachto.js +0 -62
- package/cjs/modules/component/snabbdom/hooks.js +0 -1
- package/cjs/modules/component/snabbdom/htmldomapi.js +0 -90
- package/cjs/modules/component/snabbdom/is.js +0 -11
- package/cjs/modules/component/snabbdom/modules/attributes.js +0 -61
- package/cjs/modules/component/snabbdom/modules/class.js +0 -38
- package/cjs/modules/component/snabbdom/modules/dataset.js +0 -47
- package/cjs/modules/component/snabbdom/modules/eventlisteners.js +0 -106
- package/cjs/modules/component/snabbdom/modules/hero.js +0 -193
- package/cjs/modules/component/snabbdom/modules/module.js +0 -1
- package/cjs/modules/component/snabbdom/modules/props.js +0 -40
- package/cjs/modules/component/snabbdom/modules/style.js +0 -116
- package/cjs/modules/component/snabbdom/snabbdom.bundle.js +0 -33
- package/cjs/modules/component/snabbdom/snabbdom.js +0 -374
- package/cjs/modules/component/snabbdom/thunk.js +0 -66
- package/cjs/modules/component/snabbdom/tovnode.js +0 -57
- package/cjs/modules/component/snabbdom/vnode.js +0 -20
- package/cjs/modules/component/vdom.js +0 -393
- package/cjs/modules/demo-module.js +0 -49
- package/cjs/modules/device/device.js +0 -56
- package/cjs/modules/history/history.js +0 -21
- package/cjs/modules/request/request.js +0 -20
- package/cjs/modules/resize/resize.js +0 -72
- package/cjs/modules/router/app-router-check.js +0 -10
- package/cjs/modules/router/async-component.js +0 -33
- package/cjs/modules/router/back.js +0 -908
- package/cjs/modules/router/clear-previous-history.js +0 -50
- package/cjs/modules/router/component-loader.js +0 -140
- package/cjs/modules/router/modal.js +0 -254
- package/cjs/modules/router/navigate.js +0 -1054
- package/cjs/modules/router/process-route-queue.js +0 -80
- package/cjs/modules/router/redirect.js +0 -52
- package/cjs/modules/router/router-class.js +0 -1500
- package/cjs/modules/router/router.js +0 -36
- package/cjs/modules/router/swipe-back.js +0 -735
- package/cjs/modules/router/tab.js +0 -264
- package/cjs/modules/service-worker/service-worker.js +0 -101
- package/cjs/modules/store/create-store.js +0 -169
- package/cjs/modules/store/store.js +0 -21
- package/cjs/modules/support/support.js +0 -14
- package/cjs/modules/touch/touch.js +0 -585
- package/cjs/modules/utils/utils.js +0 -21
- package/cjs/shared/$jsx.js +0 -39
- package/cjs/shared/class.js +0 -206
- package/cjs/shared/constructor-methods.js +0 -73
- package/cjs/shared/dom7.js +0 -17
- package/cjs/shared/events-class.js +0 -125
- package/cjs/shared/get-device.js +0 -157
- package/cjs/shared/get-support.js +0 -44
- package/cjs/shared/history.js +0 -185
- package/cjs/shared/modal-methods.js +0 -105
- package/cjs/shared/request.js +0 -552
- package/cjs/shared/utils.js +0 -472
- package/components/accordion/package.json +0 -9
- package/components/actions/package.json +0 -9
- package/components/app/package.json +0 -9
- package/components/appbar/package.json +0 -9
- package/components/area-chart/package.json +0 -9
- package/components/autocomplete/package.json +0 -9
- package/components/badge/package.json +0 -9
- package/components/block/package.json +0 -9
- package/components/button/package.json +0 -9
- package/components/calendar/package.json +0 -9
- package/components/card/package.json +0 -9
- package/components/checkbox/package.json +0 -9
- package/components/chip/package.json +0 -9
- package/components/color-picker/package.json +0 -9
- package/components/contacts-list/package.json +0 -9
- package/components/data-table/package.json +0 -9
- package/components/dialog/package.json +0 -9
- package/components/elevation/package.json +0 -9
- package/components/fab/package.json +0 -9
- package/components/form/package.json +0 -9
- package/components/gauge/package.json +0 -9
- package/components/grid/package.json +0 -9
- package/components/icon/package.json +0 -9
- package/components/infinite-scroll/package.json +0 -9
- package/components/input/package.json +0 -9
- package/components/lazy/package.json +0 -9
- package/components/link/package.json +0 -9
- package/components/list/package.json +0 -9
- package/components/list-index/package.json +0 -9
- package/components/login-screen/package.json +0 -9
- package/components/menu/package.json +0 -9
- package/components/messagebar/package.json +0 -9
- package/components/messages/package.json +0 -9
- package/components/modal/package.json +0 -9
- package/components/navbar/package.json +0 -9
- package/components/notification/package.json +0 -9
- package/components/page/package.json +0 -9
- package/components/panel/package.json +0 -9
- package/components/photo-browser/package.json +0 -9
- package/components/picker/package.json +0 -9
- package/components/pie-chart/package.json +0 -9
- package/components/popover/package.json +0 -9
- package/components/popup/package.json +0 -9
- package/components/preloader/package.json +0 -9
- package/components/progressbar/package.json +0 -9
- package/components/pull-to-refresh/package.json +0 -9
- package/components/radio/package.json +0 -9
- package/components/range/package.json +0 -9
- package/components/searchbar/package.json +0 -9
- package/components/sheet/package.json +0 -9
- package/components/skeleton/package.json +0 -9
- package/components/smart-select/package.json +0 -9
- package/components/sortable/package.json +0 -9
- package/components/statusbar/package.json +0 -9
- package/components/stepper/package.json +0 -9
- package/components/subnavbar/package.json +0 -9
- package/components/swipeout/package.json +0 -9
- package/components/swiper/package.json +0 -9
- package/components/tabs/package.json +0 -9
- package/components/text-editor/package.json +0 -9
- package/components/timeline/package.json +0 -9
- package/components/toast/package.json +0 -9
- package/components/toggle/package.json +0 -9
- package/components/toolbar/package.json +0 -9
- package/components/tooltip/package.json +0 -9
- package/components/touch-ripple/package.json +0 -9
- package/components/treeview/package.json +0 -9
- package/components/typography/package.json +0 -9
- package/components/view/package.json +0 -9
- package/components/virtual-list/package.json +0 -9
- package/core/package.json +0 -8
- package/esm/components/accordion/accordion.js +0 -126
- package/esm/components/actions/actions-class.js +0 -373
- package/esm/components/actions/actions.js +0 -48
- package/esm/components/appbar/appbar.js +0 -3
- package/esm/components/area-chart/area-chart-class.js +0 -517
- package/esm/components/area-chart/area-chart.js +0 -45
- package/esm/components/autocomplete/autocomplete.js +0 -82
- package/esm/components/calendar/calendar.js +0 -113
- package/esm/components/card/card.js +0 -612
- package/esm/components/checkbox/checkbox.js +0 -3
- package/esm/components/chip/chip.js +0 -3
- package/esm/components/color-picker/color-picker.js +0 -94
- package/esm/components/contacts-list/contacts-list.js +0 -3
- package/esm/components/data-table/data-table.js +0 -64
- package/esm/components/dialog/dialog.js +0 -286
- package/esm/components/elevation/elevation.js +0 -3
- package/esm/components/fab/fab.js +0 -185
- package/esm/components/form/form.js +0 -330
- package/esm/components/gauge/gauge-class.js +0 -323
- package/esm/components/gauge/gauge.js +0 -91
- package/esm/components/grid/grid.js +0 -223
- package/esm/components/infinite-scroll/infinite-scroll.js +0 -101
- package/esm/components/input/input.js +0 -384
- package/esm/components/lazy/lazy.js +0 -271
- package/esm/components/list-index/list-index.js +0 -65
- package/esm/components/login-screen/login-screen-class.js +0 -58
- package/esm/components/login-screen/login-screen.js +0 -34
- package/esm/components/menu/menu.js +0 -82
- package/esm/components/messagebar/messagebar.js +0 -66
- package/esm/components/messages/messages.js +0 -65
- package/esm/components/modal/custom-modal-class.js +0 -89
- package/esm/components/modal/modal.js +0 -22
- package/esm/components/notification/notification.js +0 -33
- package/esm/components/panel/panel.js +0 -208
- package/esm/components/photo-browser/photo-browser.js +0 -68
- package/esm/components/picker/picker-column.js +0 -379
- package/esm/components/picker/picker.js +0 -66
- package/esm/components/pie-chart/pie-chart-class.js +0 -281
- package/esm/components/pie-chart/pie-chart.js +0 -33
- package/esm/components/popover/popover.js +0 -81
- package/esm/components/popup/popup.js +0 -47
- package/esm/components/preloader/preloader.js +0 -101
- package/esm/components/progressbar/progressbar.js +0 -175
- package/esm/components/pull-to-refresh/pull-to-refresh.js +0 -62
- package/esm/components/radio/radio.js +0 -3
- package/esm/components/range/range.js +0 -81
- package/esm/components/searchbar/remove-diacritics.js +0 -277
- package/esm/components/searchbar/searchbar.js +0 -129
- package/esm/components/sheet/sheet.js +0 -71
- package/esm/components/skeleton/skeleton.js +0 -3
- package/esm/components/smart-select/smart-select.js +0 -139
- package/esm/components/sortable/sortable.js +0 -323
- package/esm/components/stepper/stepper.js +0 -84
- package/esm/components/swipeout/swipeout.js +0 -606
- package/esm/components/swiper/swiper.js +0 -177
- package/esm/components/tabs/tabs.js +0 -285
- package/esm/components/text-editor/text-editor.js +0 -81
- package/esm/components/timeline/timeline.js +0 -3
- package/esm/components/toast/toast-class.js +0 -132
- package/esm/components/toast/toast.js +0 -40
- package/esm/components/toggle/toggle.js +0 -61
- package/esm/components/tooltip/tooltip.js +0 -135
- package/esm/components/touch-ripple/touch-ripple-class.js +0 -103
- package/esm/components/touch-ripple/touch-ripple.js +0 -25
- package/esm/components/treeview/treeview.js +0 -78
- package/esm/components/typography/typography.js +0 -3
- package/esm/components/virtual-list/virtual-list.js +0 -17
- package/esm/framework7-bundle.js +0 -98
- package/esm/framework7-lite-bundle.js +0 -91
- package/esm/framework7-lite.js +0 -39
- package/esm/framework7.js +0 -43
- package/esm/modules/component/$h.js +0 -20
- package/esm/modules/component/$jsx.js +0 -24
- package/esm/modules/component/component-class.js +0 -421
- package/esm/modules/component/component.js +0 -44
- package/esm/modules/component/parse-component.js +0 -70
- package/esm/modules/component/patch.js +0 -8
- package/esm/modules/component/snabbdom/snabbdom.bundle.js +0 -19
- package/esm/modules/resize/resize.js +0 -64
- package/esm/modules/router/component-loader.js +0 -133
- package/esm/modules/store/create-store.js +0 -164
- package/esm/modules/store/store.js +0 -11
- package/esm/modules/support/support.js +0 -7
- package/esm/modules/utils/utils.js +0 -10
- package/esm/shared/$jsx.js +0 -33
- package/esm/shared/class.js +0 -197
- package/esm/shared/constructor-methods.js +0 -65
- package/esm/shared/events-class.js +0 -119
- package/esm/shared/modal-methods.js +0 -95
- package/esm/shared/request.js +0 -545
- package/lite/package.json +0 -8
- package/lite-bundle/package.json +0 -8
- package/modules/clicks/package.json +0 -9
- package/modules/component/package.json +0 -9
- package/modules/device/package.json +0 -9
- package/modules/history/package.json +0 -9
- package/modules/request/package.json +0 -9
- package/modules/resize/package.json +0 -9
- package/modules/router/package.json +0 -9
- package/modules/service-worker/package.json +0 -9
- package/modules/store/package.json +0 -9
- package/modules/support/package.json +0 -9
- package/modules/touch/package.json +0 -9
- package/modules/utils/package.json +0 -9
- package/types/components/accordion/accordion.d.ts +0 -55
- package/types/components/actions/actions.d.ts +0 -158
- package/types/components/app/app-class.d.ts +0 -196
- package/types/components/appbar/appbar.d.ts +0 -10
- package/types/components/area-chart/area-chart.d.ts +0 -124
- package/types/components/autocomplete/autocomplete.d.ts +0 -191
- package/types/components/badge/badge.d.ts +0 -10
- package/types/components/block/block.d.ts +0 -10
- package/types/components/button/button.d.ts +0 -10
- package/types/components/calendar/calendar.d.ts +0 -304
- package/types/components/card/card.d.ts +0 -65
- package/types/components/checkbox/checkbox.d.ts +0 -10
- package/types/components/chip/chip.d.ts +0 -10
- package/types/components/color-picker/color-picker.d.ts +0 -229
- package/types/components/contacts-list/contacts-list.d.ts +0 -10
- package/types/components/data-table/data-table.d.ts +0 -57
- package/types/components/dialog/dialog.d.ts +0 -241
- package/types/components/elevation/elevation.d.ts +0 -10
- package/types/components/fab/fab.d.ts +0 -28
- package/types/components/form/form.d.ts +0 -60
- package/types/components/gauge/gauge.d.ts +0 -96
- package/types/components/grid/grid.d.ts +0 -17
- package/types/components/icon/icon.d.ts +0 -10
- package/types/components/infinite-scroll/infinite-scroll.d.ts +0 -23
- package/types/components/input/input.d.ts +0 -56
- package/types/components/lazy/lazy.d.ts +0 -53
- package/types/components/link/link.d.ts +0 -10
- package/types/components/list/list.d.ts +0 -10
- package/types/components/list-index/list-index.d.ts +0 -99
- package/types/components/login-screen/login-screen.d.ts +0 -95
- package/types/components/menu/menu.d.ts +0 -28
- package/types/components/messagebar/messagebar.d.ts +0 -161
- package/types/components/messages/messages.d.ts +0 -158
- package/types/components/modal/modal.d.ts +0 -78
- package/types/components/navbar/navbar.d.ts +0 -75
- package/types/components/notification/notification.d.ts +0 -118
- package/types/components/page/page.d.ts +0 -10
- package/types/components/panel/panel.d.ts +0 -194
- package/types/components/photo-browser/photo-browser.d.ts +0 -194
- package/types/components/picker/picker.d.ts +0 -216
- package/types/components/pie-chart/pie-chart.d.ts +0 -95
- package/types/components/popover/popover.d.ts +0 -127
- package/types/components/popup/popup.d.ts +0 -137
- package/types/components/preloader/preloader.d.ts +0 -22
- package/types/components/progressbar/progressbar.d.ts +0 -27
- package/types/components/pull-to-refresh/pull-to-refresh.d.ts +0 -99
- package/types/components/radio/radio.d.ts +0 -10
- package/types/components/range/range.d.ts +0 -139
- package/types/components/searchbar/searchbar.d.ts +0 -157
- package/types/components/sheet/sheet.d.ts +0 -149
- package/types/components/skeleton/skeleton.d.ts +0 -10
- package/types/components/smart-select/smart-select.d.ts +0 -199
- package/types/components/sortable/sortable.d.ts +0 -50
- package/types/components/statusbar/statusbar.d.ts +0 -50
- package/types/components/stepper/stepper.d.ts +0 -117
- package/types/components/subnavbar/subnavbar.d.ts +0 -11
- package/types/components/swipeout/swipeout.d.ts +0 -68
- package/types/components/swiper/swiper.d.ts +0 -21
- package/types/components/tabs/tabs.d.ts +0 -39
- package/types/components/text-editor/text-editor.d.ts +0 -162
- package/types/components/timeline/timeline.d.ts +0 -10
- package/types/components/toast/toast.d.ts +0 -117
- package/types/components/toggle/toggle.d.ts +0 -69
- package/types/components/toolbar/toolbar.d.ts +0 -43
- package/types/components/tooltip/tooltip.d.ts +0 -101
- package/types/components/touch-ripple/touch-ripple.d.ts +0 -21
- package/types/components/treeview/treeview.d.ts +0 -38
- package/types/components/typography/typography.d.ts +0 -10
- package/types/components/view/view.d.ts +0 -205
- package/types/components/virtual-list/virtual-list.d.ts +0 -138
- package/types/modules/clicks/clicks.d.ts +0 -19
- package/types/modules/component/component.d.ts +0 -96
- package/types/modules/component/snabbdom/h.d.ts +0 -10
- package/types/modules/component/snabbdom/helpers/attachto.d.ts +0 -9
- package/types/modules/component/snabbdom/hooks.d.ts +0 -23
- package/types/modules/component/snabbdom/htmldomapi.d.ts +0 -19
- package/types/modules/component/snabbdom/is.d.ts +0 -2
- package/types/modules/component/snabbdom/modules/attributes.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/class.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/dataset.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/eventlisteners.d.ts +0 -8
- package/types/modules/component/snabbdom/modules/hero.d.ts +0 -6
- package/types/modules/component/snabbdom/modules/module.d.ts +0 -9
- package/types/modules/component/snabbdom/modules/props.d.ts +0 -4
- package/types/modules/component/snabbdom/modules/style.d.ts +0 -7
- package/types/modules/component/snabbdom/snabbdom.bundle.d.ts +0 -5
- package/types/modules/component/snabbdom/snabbdom.d.ts +0 -6
- package/types/modules/component/snabbdom/thunk.d.ts +0 -14
- package/types/modules/component/snabbdom/tovnode.d.ts +0 -4
- package/types/modules/component/snabbdom/vnode.d.ts +0 -36
- package/types/modules/device/device.d.ts +0 -14
- package/types/modules/request/request.d.ts +0 -15
- package/types/modules/resize/resize.d.ts +0 -25
- package/types/modules/router/router.d.ts +0 -356
- package/types/modules/service-worker/service-worker.d.ts +0 -38
- package/types/modules/store/store.d.ts +0 -40
- package/types/modules/support/support.d.ts +0 -15
- package/types/modules/touch/touch.d.ts +0 -62
- package/types/modules/utils/utils.d.ts +0 -15
- package/types/package.json +0 -6
package/framework7.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/utils.js","../../src/core/shared/get-support.js","../../src/core/shared/get-device.js","../../src/core/shared/events-class.js","../../src/core/shared/class.js","../../src/core/shared/constructor-methods.js","../../src/core/components/app/load-module.js","../../src/core/components/app/app-class.js","../../src/core/shared/modal-methods.js","../../src/core/modules/device/device.js","../../src/core/modules/support/support.js","../../src/core/modules/utils/utils.js","../../src/core/modules/resize/resize.js","../../src/core/shared/request.js","../../src/core/modules/request/request.js","../../src/core/modules/touch/touch.js","../../node_modules/path-to-regexp/dist.es2015/index.js","../../src/core/shared/history.js","../../src/core/modules/router/swipe-back.js","../../src/core/modules/router/redirect.js","../../src/core/modules/router/process-route-queue.js","../../src/core/modules/router/app-router-check.js","../../src/core/modules/router/async-component.js","../../src/core/modules/router/navigate.js","../../src/core/modules/router/back.js","../../src/core/modules/router/router-class.js","../../src/core/modules/router/tab.js","../../src/core/modules/router/modal.js","../../src/core/modules/router/clear-previous-history.js","../../src/core/modules/router/router.js","../../src/core/components/view/resizable-view.js","../../src/core/components/view/view-class.js","../../src/core/modules/clicks/clicks.js","../../src/core/modules/router/component-loader.js","../../node_modules/htm/dist/htm.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/component.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/framework7.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","prototype","toString","call","e","_construct","Parent","args","Class","a","push","apply","instance","Function","bind","arguments","_wrapNativeSuper","_cache","Map","undefined","fn","indexOf","TypeError","has","get","set","Wrapper","create","value","enumerable","writable","configurable","Dom7","_Array","subClass","superClass","items","_this","proto","concat","self","ReferenceError","_assertThisInitialized","defineProperty","Array","arrayFlat","arr","res","el","isArray","arrayFilter","filter","$","selector","context","html","trim","toCreate","tempParent","innerHTML","i","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","split","shortcut","name","_len","_key","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","j","dom","_len10","els","_key10","toAdd","classes","classNames","map","c","_el$classList","classList","add","initialProps","initialParams","animateInstance","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","_el$prop","fireCallBack","off","newChild","k","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","_prop","dom7ElementDataStorage","dataKey","string","dataset","attributes","_attr","toLowerCase","match","group","toUpperCase","remove","parentNode","removeChild","textContent","returnIndex","foundElements","found","_len4","_key4","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","_next","_len6","_key6","eventType","targetSelector","listener","capture","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","_len5","_key5","handleLiveEvent","eventData","dom7EventData","unshift","_parents","handleEvent","_event","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","_styles2","styles","offsetHeight","_styles","offsetWidth","_parent","prepend","previousElementSibling","prevEls","_prev","propName","attr","removeAttribute","_len2","_key2","_el$classList2","_len3","_key3","scrollTo","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","nextAll","prevAll","text","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","_i","_el","options","selected","val","innerWidth","methods","methodName","uniqueNum","mask","floor","random","mdPreloaderContent","iosPreloaderContent","join","eventNameToColonCase","hasColon","char","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","param","query","urlToParse","paramsPart","decodeURIComponent","slice","serializeObject","newParents","resultArray","varName","parentParts","encodeURIComponent","varValue","toPush","String","merge","to","from","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","deep","colorHexToRgb","hex","h","m","r","g","b","result","exec","n","parseInt","colorRgbToHex","colorRgbToHsl","d","l","abs","colorHslToRgb","s","rgb1","hp","x","Number","isNaN","round","bindMethods","subKey","flattenArray","arg","support","deviceCalculated","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","t","rgb","hsl","hslShade","hslTint","shade","tint","--f7-theme-color","--f7-theme-color-rgb","--f7-theme-color-shade","--f7-theme-color-tint","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","getDevice","overrides","reset","_temp","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","capacitor","Capacitor","nwjs","screenWidth","width","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","theme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","_EventsClass","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","useModules","modulesParams","installModule","static","install","use","components","ConstructorMethods","parameters","_parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","fetchedModules","Framework7","_Framework7Class","Error","passedParams","w","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","autoDarkTheme","iosTranslucentBars","iosTranslucentModals","component","componentUrl","online","onLine","store","f7","initStore","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","dark","light","colorSchemeListener","_ref","media","darkTheme","__store","createStore","enableAutoDarkTheme","addListener","disableAutoDarkTheme","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","_extends","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackLoadName","scriptEl","xhr","status","styleLoad","resolveStyle","styleContent","styleEl","all","then","catch","err","DeviceModule","metaStatusbar","content","SupportModule","UtilsModule","utils","ResizeModule","getSize","offset","orientationchange","globals","jsonpRequests","RequestResponse","RequestError","_Error","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","abortController","canceled","message","fireCallback","type","stringData","paramsPrefix","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","XMLHttpRequest","aborted","onAbort","abort","requestParameters","postData","ArrayBuffer","Blob","Document","FormData","boundary","setRequestHeader","newData","JSON","stringify","Accept","headerName","crossDomain","test","RegExp","$2","onload","responseData","parseError","parse","responseText","responseType","response","statusText","ontimeout","send","globalCallbackValue","optionCallbackValue","requestShortcut","success","error","post","json","getJSON","postJSON","contoller","setup","RequestModule","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","auroraTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","start","move","end","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","useRipple","findActivableElement","activable","preventPropagation","newActivable","hasClass","isInsideScrollableView","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","targetTouches","touches","pageX","pageY","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","clientX","clientY","$activableEl","which","isNative","str","tokens","count","pattern","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","source","regexpToRegexp","paths","parts","arrayToRegexp","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","stateUrl","action","browserHistoryAnimate","browserHistory","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","_extend","newState","_extend2","substr","_extend3","readyState","SwipeBack","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$navbarsEl","isTouched","touchesStart","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","find","activeNavBackIconText","previousNavBackIconText","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","prev","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","pow","transform-origin","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","next","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","masterPageEl","otherDetailPageEl","modalType","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$oldPage","$newNavbarEl","$oldNavbarEl","$viewEl","$newPage","reload","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$navbarsInView","isDetail","isDetailRoot","$pagesInView","pageInView","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","backIndex","initialPreload","currentIsMaster","masterRoute","force","pageToRemove","$navbarToRemove","$pageToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","newRoute","tempDom","navbarsEl","newNavEls","oldNavEls","animateIcon","animatableNavEl","$navbarInner","isIconLabel","needsOpacityTransition","$iconEl","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","animationEnd","toDifferent","oldIsLarge","newIsLarge","routerTransitionClass","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","foundTabRouteUrl","$tabEl","tabId","matchingRoute","_router$parseRouteUrl","matched","pathsToMatch","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","pageFrom","$pageEl","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","_ref2","_ref2$on","_ref2$once","attachEvents","$pageContent","pageContentEl","f7PageInitialized","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","_router$parseRouteUrl2","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","_router$params","browserHistoryOnLoad","console","warn","_router$getInitialUrl","iosSwipeBack","mdSwipeBack","auroraSwipeBack","_router$params2","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","popup","loginScreen","clickedEl","popover","side","effect","panel","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","_load","preloadMaster","masterLoaded","refreshPage","parentPageEl","$parentPageEl","hasContentLoadProp","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","tabLoadProp","_loadTab","hasTabComponentChild","foundLoadProp","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","_loadModal","_navigateOptions","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","_loadBack","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","handleResize","transformCSSWidth","v","newV","$pageMasterEl","newWidth","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","ClicksModule","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","cachedComponent","componentFunction","componentRoot","componentContext","f7route","f7router","componentProps","routeProps","createdComponent","componentCache","cached","loadedComponent","parsedComponent","_temp2","_temp3","_ref3","u","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","is.array","is.primitive","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","_readOnlyError","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","isTreeNode","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","updateAttrs","oldAttrs","cur","setAttributeNS","attributesModule","updateProps","oldProps","propsModule","raf","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","rm","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","pre","isVnode","amount","applied","ev","Component","generateId","md","aurora","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","componentResult","getRenderFuncion","getComponentContext","renderFunction","getComponentRef","getComponentStore","_this2","_this$f7$store","_gettersPlain","$store","dispatch","getters","onUpdated","includeHooks","_this3","ctx","$f7route","$f7router","$id","$f7","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$on","$once","$onBeforeMount","$onMounted","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","detachEvents","_ref4","_ref5","startUpdateQueue","_this4","__requestAnimationFrameId","__updateIsPending","newVNode","resolvers","resolver","_this5","_this6","__destroyed","setState","_this7","mountMethod","registerComponent","unregisterComponent","ComponentModule","componentString","template","componentId","callbackCreateName","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","deps","dep","addGetterDependencies","__callback","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","color","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","isVisible","getInfo","info","visible","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","Statusbar$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","modalOpen panelOpen","modalBeforeDestroy panelBeforeDestroy","view-init","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","currLeft","diff","right","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","panelOpen panelSwipeOpen modalOpen","tabShow",".navbar .title","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","highlightWidth","highlightTranslate","$activeLink","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","_$el$0$getBoundingCli","center","diameter","isInset","insetElements","rippleTransform","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","animateModal","pushToQueue","$backdropEl","queueDialogs","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdrop","backdropEl","destroyed","CustomModal","extendedParams","customModal","_Modal","handleClick"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\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 var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar 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: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n var tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (var i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\nfunction addClass() {\n for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {\n classes[_key] = arguments[_key];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n var _el$classList;\n\n (_el$classList = el.classList).add.apply(_el$classList, classNames);\n });\n return this;\n}\n\nfunction removeClass() {\n for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n classes[_key2] = arguments[_key2];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n var _el$classList2;\n\n (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);\n });\n return this;\n}\n\nfunction toggleClass() {\n for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n classes[_key3] = arguments[_key3];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n this.forEach(function (el) {\n classNames.forEach(function (className) {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass() {\n for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n classes[_key4] = arguments[_key4];\n }\n\n var classNames = arrayFlat(classes.map(function (c) {\n return c.split(' ');\n }));\n return arrayFilter(this, function (el) {\n return classNames.filter(function (className) {\n return el.classList.contains(className);\n }).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","import { getWindow } from 'ssr-window';\n\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask = 'xxxxxxxxxx', map = '0123456789abcdef') {\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n`.trim();\n\nexport const auroraPreloaderContent = `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\n`;\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName\n .split('')\n .map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n })\n .join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\n\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] =\n typeof param[1] === 'undefined'\n ? undefined\n : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .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 =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents = []) {\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];\n else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach((prop) => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop));\n });\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge(...args) {\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map((n) => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b]\n .map((n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n })\n .join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;\n else if (max === r) h = ((g - b) / d) % 6;\n else if (max === g) h = (b - r) / d + 2;\n else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs((hp % 2) - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];\n else if (hp <= 2) rgb1 = [x, c, 0];\n else if (hp <= 3) rgb1 = [0, c, x];\n else if (hp <= 4) rgb1 = [0, x, c];\n else if (hp <= 5) rgb1 = [x, 0, c];\n else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map((n) => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0,\n };\n const HSB = { h, s, b };\n\n HSL.l = ((2 - HSB.s) * HSB.b) / 2;\n HSL.s = HSL.l && HSL.l < 1 ? (HSB.s * HSB.b) / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0,\n };\n const HSL = { h, s, l };\n\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? (2 * t) / HSB.b : HSB.s;\n\n return [HSB.h, HSB.s, HSB.b];\n}\nexport function colorThemeCSSProperties(...args) {\n let hex;\n let rgb;\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return {\n '--f7-theme-color': hex,\n '--f7-theme-color-rgb': rgb.join(', '),\n '--f7-theme-color-shade': shade,\n '--f7-theme-color-tint': tint,\n };\n}\n\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach((key) => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach((subKey) => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\n\nexport function flattenArray(...args) {\n const arr = [];\n args.forEach((arg) => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));\n else arr.push(arg);\n });\n return arr;\n}\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n pointerEvents:\n !!window.PointerEvent &&\n 'maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints >= 0,\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n intersectionObserver: (function checkObserver() {\n return 'IntersectionObserver' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}, reset) {\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\n\nexport { getDevice };\n","class EventsClass {\n constructor(parents = []) {\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.f7proxy && eventHandler.f7proxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map((eventName) => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter((eventName) => eventName.indexOf('local::') < 0);\n\n localEvents.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach((eventsParent) => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\n\nexport default EventsClass;\n","import { extend, now } from './utils';\nimport EventsClass from './events-class';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils';\nimport $ from '../../shared/dom7';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n Framework7.request.get(\n modulePath,\n (scriptContent) => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n const module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(\n new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`),\n );\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n\n resolveScript();\n },\n (xhr, status) => {\n rejectScript(xhr, status);\n },\n );\n });\n const styleLoad = new Promise((resolveStyle) => {\n Framework7.request.get(\n modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'),\n (styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n () => {\n resolveStyle();\n },\n );\n });\n\n Promise.all([scriptLoad, styleLoad])\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n }\n });\n}\n\nexport default loadModule;\n","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils';\nimport { getDevice } from '../../shared/get-device';\nimport { getSupport } from '../../shared/get-support';\nimport Framework7Class from '../../shared/class';\nimport EventsClass from '../../shared/events-class';\nimport ConstructorMethods from '../../shared/constructor-methods';\nimport ModalMethods from '../../shared/modal-methods';\nimport $ from '../../shared/dom7';\nimport loadModule from './load-module';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: w.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkTheme: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n\n extend(app, {\n // App Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n if (device.desktop && device.electron) return 'aurora';\n return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n });\n\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Theme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('theme-dark');\n app.darkTheme = true;\n app.emit('darkThemeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('theme-dark');\n app.darkTheme = false;\n app.emit('darkThemeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkTheme() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('theme-dark');\n app.darkTheme = true;\n app.emit('darkThemeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('theme-dark');\n app.darkTheme = false;\n app.emit('darkThemeChange', false);\n }\n }\n\n disableAutoDarkTheme() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);\n }\n\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(\n app.params.component,\n app.params.componentUrl,\n { componentOptions: { el: app.$el[0] } },\n (el) => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n },\n () => {},\n );\n }\n\n init(rootEl) {\n const app = this;\n\n app.mount(rootEl);\n\n const init = () => {\n if (app.initialized) return;\n\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Theme\n if (app.params.autoDarkTheme) {\n app.enableAutoDarkTheme();\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md aurora').addClass(app.theme);\n\n // iOS Translucent\n const device = app.device;\n if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule(...args) {\n return Framework7.loadModule(...args);\n }\n\n // eslint-disable-next-line\n loadModules(...args) {\n return Framework7.loadModules(...args);\n }\n\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n\n static get Dom7() {\n return $;\n }\n\n static get $() {\n return $;\n }\n\n static get device() {\n return getDevice();\n }\n\n static get support() {\n return getSupport();\n }\n\n static get Class() {\n return Framework7Class;\n }\n\n static get Events() {\n return EventsClass;\n }\n}\n\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import $ from './dom7';\nimport { extend } from './utils';\nimport ConstructorMethods from './constructor-methods';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova || device.phonegap) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils';\n\nconst globals = {};\nlet jsonpRequests = 0;\n\nclass RequestResponse {\n constructor(obj) {\n Object.assign(this, obj);\n }\n}\n\nclass RequestError extends Error {\n constructor(obj) {\n super();\n Object.assign(this, obj);\n }\n}\n\nconst request = (requestOptions) =>\n new Promise((resolve, reject) => {\n const window = getWindow();\n const document = getDocument();\n const globalsNoCallbacks = extend({}, globals);\n 'beforeCreate beforeOpen beforeSend error complete success statusCode'\n .split(' ')\n .forEach((callbackName) => {\n delete globalsNoCallbacks[callbackName];\n });\n const defaults = extend(\n {\n url: window.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n },\n globalsNoCallbacks,\n );\n\n let proceedRequest;\n\n const options = extend({}, defaults, requestOptions);\n if (requestOptions.abortController) {\n options.abortController = requestOptions.abortController;\n }\n\n if (options.abortController && options.abortController.canceled) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName, ...data) {\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status, message),\n complete (xhr, status),\n success (response, status, xhr),\n statusCode ()\n */\n let globalCallbackValue;\n let optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName](...data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName](...data);\n }\n if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;\n if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;\n if (\n options.abortController &&\n options.abortController.canceled &&\n (callbackName === 'beforeCreate' ||\n callbackName === 'beforeOpen' ||\n callbackName === 'beforeSend')\n ) {\n return false;\n }\n return globalCallbackValue && optionCallbackValue;\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // For jQuery guys\n if (options.type) options.method = options.type;\n\n // Parameters Prefix\n let paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n const method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if (\n (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') &&\n options.data\n ) {\n let stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];\n else stringData = options.data;\n } else {\n // Should be key=value object\n stringData = serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') paramsPrefix = '&';\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n const callbackName = `f7jsonp_${Date.now() + (jsonpRequests += 1)}`;\n let abortTimeout;\n const callbackSplit = options.url.split('callback=');\n let requestUrl = `${callbackSplit[0]}callback=${callbackName}`;\n if (callbackSplit[1].indexOf('&') >= 0) {\n const addVars = callbackSplit[1]\n .split('&')\n .filter((el) => el.indexOf('=') > 0)\n .join('&');\n if (addVars.length > 0) requestUrl += `&${addVars}`;\n }\n\n // Create script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror', 'scripterror');\n reject(new RequestError({ options, status: 'scripterror', message: 'scripterror' }));\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n window[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete window[callbackName];\n resolve(new RequestResponse({ options, data }));\n };\n document.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(() => {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout', 'timeout');\n reject(new RequestError({ options, status: 'timeout', message: 'timeout' }));\n }, options.timeout);\n }\n\n return;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += `${paramsPrefix}_nocache${Date.now()}`;\n }\n }\n\n // Create XHR\n const xhr = new XMLHttpRequest();\n\n if (options.abortController) {\n let aborted = false;\n options.abortController.onAbort = () => {\n if (aborted) return;\n aborted = true;\n xhr.abort();\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n };\n }\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n let postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n const postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n const boundary = `---------------------------${Date.now().toString(16)}`;\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', `multipart/form-data; boundary=${boundary}`);\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n let data = serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data = data.split('&');\n const newData = [];\n for (let i = 0; i < data.length; i += 1) {\n newData.push(\n `Content-Disposition: form-data; name=\"${data[i].split('=')[0]}\"\\r\\n\\r\\n${\n data[i].split('=')[1]\n }\\r\\n`,\n );\n }\n postData = `--${boundary}\\r\\n${newData.join(`--${boundary}\\r\\n`)}--${boundary}--\\r\\n`;\n } else if (options.contentType === 'application/json') {\n postData = JSON.stringify(options.data);\n } else {\n postData = data;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {\n xhr.setRequestHeader('Accept', 'application/json');\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach((headerName) => {\n if (typeof options.headers[headerName] === 'undefined') return;\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n options.crossDomain =\n // eslint-disable-next-line\n /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n extend(xhr, options.xhrFields);\n }\n\n // Handle XHR\n xhr.onload = function onload() {\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n let responseData;\n if (options.dataType === 'json') {\n let parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n } else {\n fireCallback('error', xhr, 'parseerror', 'parseerror');\n reject(new RequestError({ options, xhr, status: 'parseerror', message: 'parseerror' }));\n }\n } else {\n responseData =\n xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n }\n } else {\n fireCallback('error', xhr, xhr.status, xhr.statusText);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status])\n globals.statusCode[xhr.status](xhr);\n if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n fireCallback('error', xhr, xhr.status, xhr.status);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.timeout = options.timeout;\n xhr.ontimeout = () => {\n fireCallback('error', xhr, 'timeout', 'timeout');\n reject(new RequestError({ options, xhr, status: 'timeout', message: 'timeout' }));\n fireCallback('complete', xhr, 'timeout');\n };\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Send XHR\n xhr.send(postData);\n });\n\nfunction requestShortcut(method, ...args) {\n let [url, data, success, error, dataType] = [];\n if (typeof args[1] === 'function') {\n [url, success, error, dataType] = args;\n } else {\n [url, data, success, error, dataType] = args;\n }\n [success, error].forEach((callback) => {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) success = undefined;\n else error = undefined;\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n const requestOptions = {\n url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data,\n success,\n error,\n dataType,\n };\n if (method === 'postJSON') {\n extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return request(requestOptions);\n}\n\nObject.assign(request, {\n get: (...args) => requestShortcut('get', ...args),\n post: (...args) => requestShortcut('post', ...args),\n json: (...args) => requestShortcut('json', ...args),\n getJSON: (...args) => requestShortcut('json', ...args),\n postJSON: (...args) => requestShortcut('postJSON', ...args),\n});\n\nrequest.abortController = () => {\n const contoller = {\n canceled: false,\n onAbort: null,\n abort() {\n contoller.canceled = true;\n if (contoller.onAbort) contoller.onAbort();\n },\n };\n return contoller;\n};\n\nrequest.setup = function setup(options) {\n if (options.type && !options.method) {\n extend(options, { method: options.type });\n }\n extend(globals, options);\n};\n\nexport default request;\n","/* eslint no-param-reassign: \"off\" */\nimport request from '../../shared/request';\n\nexport default {\n name: 'request',\n proto: {\n request,\n },\n static: {\n request,\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { getSupport } from '../../shared/get-support';\nimport { getDevice } from '../../shared/get-device';\nimport { extend } from '../../shared/utils';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n auroraTouchRipple: false,\n touchRippleElements:\n '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements:\n '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back',\n },\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup',\n },\n });\n },\n on: {\n init: initTouch,\n },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \" + j);\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern)\n throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n // tslint:disable-next-line\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not repeat, but got an array\");\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not be empty\");\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to be \" + typeOfMessage);\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n // tslint:disable-next-line\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n }\n else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n }\n else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n }\n else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict)\n route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n : // tslint:disable-next-line\n endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7';\nimport { extend } from './utils';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7';\nimport History from '../../shared/history';\nimport { getSupport } from '../../shared/get-support';\nimport { getDevice } from '../../shared/get-device';\nimport { now } from '../../shared/utils';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (\n !allowViewTouchMove ||\n !swipeBackEnabled ||\n isTouched ||\n (app.swipeout && app.swipeout.el) ||\n !router.allowPageChange\n )\n return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if (\n $(e.target).closest('.page-master, .page-master-detail').length > 0 &&\n params.masterDetailBreakpoint > 0 &&\n app.width >= params.masterDetailBreakpoint\n )\n return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!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 =\n !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) ||\n (pageX < touchesStart.x && !app.rtl) ||\n (pageX > touchesStart.x && app.rtl);\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n\n $currentPageEl = target.closest('.page');\n if (\n $currentPageEl.hasClass('no-swipeback') ||\n target.closest('.no-swipeback, .card-opened').length > 0\n )\n cancel = true;\n $previousPageEl = $el.find('.page-previous:not(.stacked)');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder =\n touchesStart.x <\n $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n\n setAnimatableNavElements({ progress: percentage });\n }\n function handleTouchEnd() {\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10) ||\n (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n $currentPageEl\n .removeClass('page-current')\n .addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl\n .removeClass('page-previous')\n .addClass('page-current')\n .removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios,\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback(\n 'beforeIn',\n $previousPageEl,\n $previousNavbarEl,\n 'previous',\n 'current',\n { route: $previousPageEl[0].f7Page.route, swipeBack: true },\n $currentPageEl[0],\n );\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true, transition: false });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true,\n });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {\n $currentPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $currentNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true,\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n\n function attachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import { extend } from '../../shared/utils';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { extend, parseUrlQuery } from '../../shared/utils';\nimport History from '../../shared/history';\nimport redirect from './redirect';\nimport processRouteQueue from './process-route-queue';\nimport appRouterCheck from './app-router-check';\nimport asyncComponent from './async-component';\n\nfunction refreshPage() {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter((navbarInView) => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n isDetail = !isMaster && masterPageEl;\n\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n reloadDetail =\n isDetail &&\n options.reloadDetail &&\n app.width >= router.params.masterDetailBreakpoint &&\n masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .removeClass('page-previous page-current page-next')\n .addClass(\n `page-${newPagePosition}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl\n .removeClass('navbar-previous navbar-current navbar-next')\n .addClass(\n `navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked');\n $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter((pageEl) => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map((pageEl) => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter((pageEl) => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter((navbarEl) => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n $pagesInView.eq(i).trigger('page:stack');\n router.emit('pageStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(oldNavbarEl).addClass('stacked');\n }\n } else {\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback(\n 'beforeRemove',\n $pagesInView[i],\n $navbarsInView && $navbarsInView[i],\n 'previous',\n undefined,\n options,\n );\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter(\n (navbarEl) =>\n navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0,\n );\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter((pageEl) => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(\n (navbarEl) => !navbarEl.classList.contains('navbar-master'),\n );\n }\n }\n\n // Push State\n if (\n router.params.browserHistory &&\n (options.browserHistory || options.replaceState) &&\n !options.reloadPrevious\n ) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[\n options.reloadCurrent ||\n (reloadDetail && otherDetailPageEl) ||\n options.reloadAll ||\n options.replaceState\n ? 'replace'\n : 'push'\n ](\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n\n if (options.history) {\n if (\n ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n 0 ||\n options.replaceState\n ) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n $oldPageEl.trigger('page:stack');\n router.emit('pageStack', $oldPageEl[0]);\n if (dynamicNavbar) {\n $oldNavbarElEl.addClass('stacked');\n }\n } else {\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback(\n 'beforeRemove',\n $oldPageEl,\n $oldNavbarEl && $oldNavbarEl.eq(index),\n 'previous',\n undefined,\n options,\n );\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n }\n });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback(\n 'init',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n let keepOldPage =\n (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if (\n $newPage.hasClass('smart-select-page') ||\n $newPage.hasClass('photo-browser-page') ||\n $newPage.hasClass('autocomplete-page') ||\n $newPage.hasClass('color-picker-page')\n ) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else if (\n !($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')\n ) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate(\n $oldPage,\n $newPage,\n $oldNavbarEl,\n $newNavbarEl,\n 'forward',\n transition,\n () => {\n afterAnimation();\n },\n );\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams = {}, loadOptions = {}, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n !options.reloadCurrent &&\n options.route &&\n options.route.route &&\n options.route.route.parentPath &&\n router.currentRoute.route &&\n router.currentRoute.route.parentPath === options.route.route.parentPath\n ) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams =\n Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach((paramName) => {\n if (\n !(paramName in router.currentRoute.params) ||\n router.currentRoute.params[paramName] !== options.route.params[paramName]\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (\n !sameParams &&\n options.route.route.tab &&\n router.currentRoute.route.tab &&\n router.currentRoute.parentPath === options.route.parentPath\n ) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n\n if (\n options.route &&\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, { route: { url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n forward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\n\nfunction openIn(router, url, options) {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined,\n },\n },\n };\n const params = {\n ...options,\n };\n if (options.openIn === 'popup') {\n params.content = `<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.content = `<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.content = `<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n}\n\nfunction navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { extend, parseUrlQuery } from '../../shared/utils';\nimport { getDevice } from '../../shared/get-device';\nimport History from '../../shared/history';\nimport redirect from './redirect';\nimport processRouteQueue from './process-route-queue';\nimport appRouterCheck from './app-router-check';\nimport asyncComponent from './async-component';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail =\n !isMaster &&\n masterPageEl &&\n router.history.indexOf(options.route.url) >\n router.history.indexOf(masterPageEl.f7Page.route.url);\n\n if (\n !isDetail &&\n !isMaster &&\n masterPageEl &&\n masterPageEl.f7Page &&\n options.route.route.masterRoute\n ) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot =\n router.history.indexOf(options.route.url) -\n router.history.indexOf(masterPageEl.f7Page.route.url) ===\n 1;\n }\n\n // New Page\n $newPage\n .addClass(\n `page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl\n .addClass(\n `navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if (\n $oldPage.prev('.page-previous:not(.stacked)').length > 0 ||\n $oldPage.prev('.page-previous').length === 0\n ) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n const $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true,\n }),\n );\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n );\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || (device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (\n !transition &&\n router.previousRoute &&\n router.previousRoute.route &&\n router.previousRoute.route.options\n ) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(\n navigateUrl,\n extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }),\n );\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n const needHistoryBack =\n router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory =\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route.options &&\n router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el\n .children('.page-current')\n .prevAll('.page-previous:not(.page-master)')\n .eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each((pageEl) => {\n classes.push(pageEl.className);\n });\n\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (\n expectedPreviousPageRoute &&\n $previousMaster[0].f7Page &&\n expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n ) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (\n router.params.browserHistory &&\n $previousPage[0].f7Page &&\n router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n extend(navigateOptions, { force: true }),\n );\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n if (navigateOptions.preload && $previousPage.hasClass('stacked')) {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n return router;\n }\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n () => {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n },\n () => {},\n 'backward',\n );\n\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(\n router.history[router.history.length - 3],\n extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n }),\n );\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n options.route = route;\n\n let backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each((pageEl) => {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n loadBack(router, { el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, { el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, { [pageLoadProp]: route.route[pageLoadProp] }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'backward',\n );\n }\n\n // Return Router\n return router;\n}\nexport { back };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7';\nimport Framework7Class from '../../shared/class';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils';\nimport History from '../../shared/history';\nimport SwipeBack from './swipe-back';\n\nimport { refreshPage, navigate } from './navigate';\nimport { tabLoad, tabRemove } from './tab';\nimport { modalLoad, modalRemove } from './modal';\nimport { back } from './back';\nimport { clearPreviousHistory } from './clear-previous-history';\nimport appRouterCheck from './app-router-check';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute = {}) {\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl,\n });\n\n router.emit('local::mount routerMount', router);\n }\n\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (\n isSliding &&\n animateIcon &&\n $el.hasClass('left') &&\n $iconEl.length > 0 &&\n $iconEl.next('span').length\n ) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (\n !(\n $oldNavbarEl.hasClass('navbar-master') &&\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint\n )\n ) {\n $oldNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach((navEls) => {\n navEls.forEach((navEl) => {\n const n = navEl;\n const { isSliding, $el } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach((otherNavEl) => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls, oldNavEls };\n }\n\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [\n $oldPageEl,\n $newPageEl,\n $oldNavbarEl,\n $newNavbarEl,\n direction,\n callback,\n ]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n let newNavEls;\n let oldNavEls;\n\n let fromLarge;\n let toLarge;\n let toDifferent;\n\n let oldIsLarge;\n let newIsLarge;\n\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail =\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint &&\n (($oldNavbarEl.hasClass('navbar-master') &&\n $newNavbarEl.hasClass('navbar-master-detail')) ||\n ($oldNavbarEl.hasClass('navbar-master-detail') &&\n $newNavbarEl.hasClass('navbar-master')));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = (fromLarge && !toLarge) || (toLarge && !fromLarge);\n }\n const navEls = router.animatableNavElements(\n $newNavbarEl,\n $oldNavbarEl,\n toLarge,\n fromLarge,\n direction,\n );\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty(\n 'transform',\n `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n 'important',\n );\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(\n `translate3d(${\n offset * progress\n }px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n );\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n }\n if (\n $newNavbarEl.hasClass('sliding') ||\n $newNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if (\n $oldNavbarEl.hasClass('sliding') ||\n $oldNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each((tabEl) => {\n $(tabEl)\n .children()\n .each((tabChild) => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n\n return router.findElement('.page', router.tempDom);\n }\n\n findElement(stringSelector, container, notStacked) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector =\n '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n const $container = $(container);\n let selector = stringSelector;\n if (notStacked) selector += ':not(.stacked)';\n\n let found = $container\n .find(selector)\n .filter((el) => $(el).parents(modalsSelector).length === 0);\n\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n\n // Try to find not stacked\n if (!notStacked) found = router.findElement(selector, $container, true);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n\n flattenRoutes(routes = this.routes) {\n const router = this;\n let flattenedRoutes = [];\n routes.forEach((route) => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map((tabRoute) => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute,\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map((detailRoute) => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map((childRoute) => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path,\n };\n }\n\n generateUrl(parameters = {}) {\n if (typeof parameters === 'string') {\n return parameters;\n }\n const { name, path, params, query } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, { params, query });\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, { params, query } = {}) {\n const { path } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(\n `Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`,\n );\n }\n\n if (query) {\n if (typeof query === 'string') url += `?${query}`;\n else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query,\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = path\n .split('/')\n .slice(0, route.parentPath.split('/').length - 1)\n .join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path,\n parentPath,\n route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url = '', options = {}) {\n let compiledUrl = url;\n if (\n typeof compiledUrl === 'string' &&\n compiledUrl.indexOf('{{') >= 0 &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n Object.keys(options.route.params).forEach((paramName) => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const { ignoreCache } = options;\n let url = requestUrl;\n\n let hasQuery = url.indexOf('?') >= 0;\n if (\n params.passRouteQueryToRequest &&\n options &&\n options.route &&\n options.route.query &&\n Object.keys(options.route.query).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n\n if (\n params.passRouteParamsToRequest &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (\n params.xhrCache &&\n !ignoreCache &&\n url.indexOf('nocache') < 0 &&\n params.xhrCacheIgnore.indexOf(url) < 0\n ) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = router.app.request.abortController();\n router.app.request({\n abortController: router.xhrAbortController,\n url,\n method: 'GET',\n beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if (\n (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300) ||\n xhr.status === 0\n ) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: xhr.responseText,\n });\n }\n router.emit('routerAjaxSuccess', xhr, options);\n resolve(xhr.responseText);\n } else {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n }\n },\n error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\n });\n });\n }\n\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', { position });\n router.emit('navbarPosition', $el[0], position);\n }\n\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', { position });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';\n } else if (theme === 'aurora') {\n toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';\n }\n $(el).find(toRemove).remove();\n }\n\n getPageData(pageEl, navbarEl, from, to, route = {}, pageFromEl) {\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous'))\n direction = 'forward';\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current'))\n direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom,\n };\n\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options = {}, pageFromEl) {\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const { route } = options;\n const restoreScrollTopOnBack =\n router.params.restoreScrollTopOnBack &&\n !(\n router.params.masterDetailBreakpoint > 0 &&\n $pageEl.hasClass('page-master') &&\n router.app.width >= router.params.masterDetailBreakpoint\n );\n const keepAlive =\n $pageEl[0].f7Page &&\n $pageEl[0].f7Page.route &&\n $pageEl[0].f7Page.route.route &&\n $pageEl[0].f7Page.route.route.keepAlive;\n\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, { from, to, position: from });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n const { on = {}, once = {} } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach((eventName) => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach((eventName) => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (\n restoreScrollTopOnBack &&\n (from === 'previous' || !from) &&\n to === 'current' &&\n router.scrollHistory[page.route.url] &&\n !$pageEl.hasClass('no-restore-scroll')\n ) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (\n restoreScrollTopOnBack &&\n callback === 'beforeOut' &&\n from === 'current' &&\n to === 'previous'\n ) {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage\n ) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage &&\n window.localStorage[`f7router-${router.view.id}-history`]\n ) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const { query, hash, params, url, path } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path,\n });\n }\n\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n router.view.id,\n {\n url: newUrl,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + newUrl,\n );\n }\n\n // Save History\n router.saveHistory();\n\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored,\n };\n }\n const { app, view } = router;\n const document = getDocument();\n const window = getWindow();\n\n const location =\n app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined'\n ? new URL(app.params.url)\n : document.location;\n\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n let historyRestored;\n const { browserHistory, browserHistoryOnLoad, browserHistorySeparator } = router.params;\n let { browserHistoryRoot } = router.params;\n if (\n (window.cordova || (window.Capacitor && window.Capacitor.isNative)) &&\n browserHistory &&\n !browserHistorySeparator &&\n !browserHistoryRoot &&\n location.pathname.indexOf('index.html')\n ) {\n // eslint-disable-next-line\n console.warn(\n 'Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot',\n );\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.split(browserHistoryRoot)[1];\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.split(browserHistorySeparator)[1];\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (\n History.state &&\n History.state[view.id] &&\n History.state[view.id].url === router.history[router.history.length - 1]\n ) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n\n return { initialUrl, historyRestored };\n }\n\n init() {\n const router = this;\n const { app, view } = router;\n const document = getDocument();\n\n router.mount();\n\n const { initialUrl, historyRestored } = router.getInitialUrl();\n\n // Init Swipeback\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios') ||\n (view && router.params.mdSwipeBack && app.theme === 'md') ||\n (view && router.params.auroraSwipeBack && app.theme === 'aurora')\n ) {\n SwipeBack(router);\n }\n\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch,\n } = router.params;\n\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.params.stackPages) {\n router.$el.children('.page').each((pageEl) => {\n const $pageEl = $(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar')[0]);\n }\n });\n }\n\n if (\n router.$el.children('.page:not(.stacked)').length === 0 &&\n initialUrl &&\n router.params.loadInitialPage\n ) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n },\n });\n } else if (router.$el.children('.page:not(.stacked)').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').each((pageEl) => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n router.params.masterDetailBreakpoint > 0\n ) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', { role: 'master' });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (\n initialUrl &&\n browserHistory &&\n browserHistoryOnLoad &&\n (!History.state || !History.state[view.id])\n ) {\n History.initViewState(view.id, {\n url: initialUrl,\n });\n }\n router.emit('local::init routerInit', router);\n }\n\n destroy() {\n let router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach((routerProp) => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\n\nexport default Router;\n","import $ from '../../shared/dom7';\nimport { extend } from '../../shared/utils';\nimport History from '../../shared/history';\nimport asyncComponent from './async-component';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n },\n loadOptions,\n );\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History.replace(\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils';\nimport History from '../../shared/history';\nimport asyncComponent from './async-component';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {},\n },\n loadOptions,\n );\n\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n const routeCallback = (modal, name) => {\n const { on, once } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(\n `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n modal.el,\n route,\n modal,\n );\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app,\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7';\nimport appRouterCheck from './app-router-check';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n });\n}\n\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n\n clearPreviousPages(router);\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\n\nexport { clearPreviousHistory }; // eslint-disable-line\n","import Router from './router-class';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from '../../shared/dom7';\nimport { extend } from '../../shared/utils';\nimport { getSupport } from '../../shared/get-support';\n\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\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\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7';\nimport { extend } from '../../shared/utils';\nimport Router from '../../modules/router/router';\nimport Framework7Class from '../../shared/class';\nimport resizableView from './resizable-view';\n\nclass View extends Framework7Class {\n constructor(app, el, viewParams = {}) {\n super(viewParams, [app]);\n\n const view = this;\n\n const ssr = view.params.routerId;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message +=\n typeof el === 'string'\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {},\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail =\n app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector =\n ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n ($el.attr('class')\n ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n });\n\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n\n view.emit('local::mount viewMount', view);\n }\n\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n view.router.init();\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport ViewClass from '../../components/view/view-class';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if (\n $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n (url && url.indexOf('javascript:') >= 0)\n ) {\n const target = $clickedLinkEl.attr('target');\n if (\n url &&\n window.cordova &&\n window.cordova.InAppBrowser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (\n url &&\n window.Capacitor &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.Browser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({ url });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(\n app,\n matchingClickedElement,\n matchingClickedElement.dataset(),\n e,\n );\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;\n else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);\n else view.router.navigate(url, clickedLinkData);\n }\n }\n\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n },\n },\n};\n","import { merge } from '../../shared/utils';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentFunction) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw err;\n }\n }\n const componentContext = merge({}, context, {\n f7route: options.route,\n f7router: router,\n });\n const componentProps = merge(\n options.route ? options.route.params || {} : {},\n options.props || {},\n options.routeProps || {},\n );\n let componentEl;\n let componentRoot;\n if (options.componentOptions && options.componentOptions.el) {\n componentEl = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentRoot = options.componentOptions.root;\n }\n app.component\n .create(componentFunction, componentProps, {\n context: componentContext,\n el: componentEl,\n root: componentRoot,\n })\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err);\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw err;\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el, newOptions = {}) => {\n resolve(el, newOptions);\n },\n reject,\n );\n },\n },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n return {\n type,\n props: props || {},\n children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode';\nimport * as is from './is';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h';\nimport customComponents from './custom-components';\nimport { isObject, eventNameToColonCase } from '../../shared/utils';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n const tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n // eslint-disable-next-line\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode';\nimport * as is from './is';\nimport htmlDomApi from './htmldomapi';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h';\nexport { thunk } from './thunk';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom';\nimport attributesModule from './snabbdom/modules/attributes';\nimport propsModule from './snabbdom/modules/props';\nimport styleModule from './snabbdom/modules/style';\nimport eventListenersModule from './eventslisteners';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport $h from './$h';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils';\nimport vdom from './vdom';\nimport patch from './patch';\n\nclass Component {\n constructor(app, component, props = {}, { el, context, children } = {}) {\n const document = getDocument();\n merge(this, {\n f7: app,\n props: props || {},\n context: context || {},\n id: component.id || generateId(),\n children: children || [],\n theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n aurora: app.theme === 'aurora',\n },\n style: component.style,\n __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nexport default Component;\n","import Component from './component-class';\nimport parseComponent from './parse-component';\nimport customComponents from './custom-components';\nimport $jsx from './$jsx';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { id } from '../../shared/utils';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../shared/history';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { bindMethods } from '../../shared/utils';\nimport { getDevice } from '../../shared/get-device';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7';\nimport { extend } from '../../shared/utils';\nimport View from './view-class';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7';\nimport { bindMethods } from '../../shared/utils';\nimport { getSupport } from '../../shared/get-support';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle =\n $innerEl.hasClass('navbar-inner-centered-title') ||\n app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked') ||\n $el.parents('.stacked').length > 0 ||\n $el.parents('.tab:not(.tab-active)').length > 0 ||\n $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth =\n navbarWidth -\n parseInt(navbarStyles.paddingLeft, 10) -\n parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el\n .parent()\n .find('.navbar-current')\n .children('.left.sliding')\n .find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (\n router &&\n router.params.iosAnimateNavbarBackIcon &&\n left.find('.back .icon').length > 0\n ) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl\n ? subnavbar[0].offsetWidth\n : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl\n .parents('.view')\n .find('.page')\n .each((el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl\n .eq(0)\n .removeClass('page-with-navbar-large-collapsed')\n .trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each((pageContentEl) => {\n pageContentEl.f7ScrollableDistance =\n pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (\n currentScrollTop >= navbarTitleLargeHeight / 2 &&\n currentScrollTop < navbarTitleLargeHeight\n ) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent =\n $navbarEl.hasClass('navbar-large-transparent') ||\n ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(\n navbarTitleLargeHeight,\n pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n );\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle =\n previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed) ||\n (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n (collapseProgress === 1 && !navbarCollapsed) ||\n (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl\n .find('.navbar-bg')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each((pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar,\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n function onPanelResize() {\n const app = this;\n $('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll ||\n page.$el.find('.hide-navbar-on-scroll').length ||\n page.$el.hasClass('hide-navbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length ||\n page.$el.hasClass('keep-navbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(\n page.el,\n $navbarEl[0],\n needHideOnScrollHandler,\n needCollapseOnScrollHandler,\n needTransparentOnScroll,\n );\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous):not(.stacked)')\n .each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl\n .nextAll('.page-current:not(.stacked)')\n .find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7';\nimport { nextFrame, bindMethods } from '../../shared/utils';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n if (\n $tabbarEl.length === 0 ||\n !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))\n )\n return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar,\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll ||\n page.$el.find('.hide-toolbar-on-scroll').length ||\n page.$el.hasClass('hide-toolbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length ||\n page.$el.hasClass('keep-toolbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7';\n\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","import $ from '../../shared/dom7';\n\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n\n if (!$el) return undefined;\n\n const { left, top, width, height } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top,\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter =\n ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n\n ripple.$rippleWaveEl = $(\n `<div class=\"ripple-wave\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n diameter / 2\n }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n center.y\n }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n );\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n out() {\n const ripple = this;\n const { $rippleWaveEl } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}\n","import TouchRipple from './touch-ripple-class';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7';\nimport { extend, deleteProps } from '../../shared/utils';\nimport Framework7Class from '../../shared/class';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = extend(defaults, params);\n modal.opened = false;\n\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7';\nimport { extend } from '../../shared/utils';\nimport Modal from './modal-class';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class';\nimport CustomModal from './custom-modal-class';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import $ from './shared/dom7';\n\nimport Framework7 from './components/app/app-class';\n\n//IMPORT_HELPERS\n\nimport DeviceModule from './modules/device/device';\nimport SupportModule from './modules/support/support';\nimport UtilsModule from './modules/utils/utils';\nimport ResizeModule from './modules/resize/resize';\nimport RequestModule from './modules/request/request';\nimport TouchModule from './modules/touch/touch';\nimport ClicksModule from './modules/clicks/clicks';\nimport RouterModule from './modules/router/router';\nimport RouterComponentLoaderModule from './modules/router/component-loader';\nimport ComponentModule, { Component, $jsx } from './modules/component/component';\nimport HistoryModule from './modules/history/history';\nimport ServiceWorkerModule from './modules/service-worker/service-worker';\nimport StoreModule, { createStore } from './modules/store/store';\n\nimport Statusbar from './components/statusbar/statusbar';\nimport View from './components/view/view';\nimport Navbar from './components/navbar/navbar';\nimport Toolbar from './components/toolbar/toolbar';\nimport Subnavbar from './components/subnavbar/subnavbar';\nimport TouchRipple from './components/touch-ripple/touch-ripple';\nimport Modal from './components/modal/modal';\nimport Router from './modules/router/router-class';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/utils.js","../../src/core/shared/get-support.js","../../src/core/shared/get-device.js","../../src/core/shared/events-class.js","../../src/core/shared/class.js","../../src/core/shared/constructor-methods.js","../../src/core/components/app/load-module.js","../../src/core/components/app/app-class.js","../../src/core/shared/modal-methods.js","../../src/core/modules/device/device.js","../../src/core/modules/support/support.js","../../src/core/modules/utils/utils.js","../../src/core/modules/resize/resize.js","../../src/core/shared/request.js","../../src/core/modules/request/request.js","../../src/core/modules/touch/touch.js","../../node_modules/path-to-regexp/dist.es2015/index.js","../../src/core/shared/history.js","../../src/core/modules/router/swipe-back.js","../../src/core/modules/router/redirect.js","../../src/core/modules/router/process-route-queue.js","../../src/core/modules/router/app-router-check.js","../../src/core/modules/router/async-component.js","../../src/core/modules/router/navigate.js","../../src/core/modules/router/back.js","../../src/core/modules/router/router-class.js","../../src/core/modules/router/tab.js","../../src/core/modules/router/modal.js","../../src/core/modules/router/clear-previous-history.js","../../src/core/modules/router/router.js","../../src/core/components/view/resizable-view.js","../../src/core/components/view/view-class.js","../../src/core/modules/clicks/clicks.js","../../src/core/modules/router/component-loader.js","../../node_modules/htm/dist/htm.mjs","../../src/core/modules/component/$h.js","../../src/core/modules/component/snabbdom/vnode.js","../../src/core/modules/component/snabbdom/is.js","../../src/core/modules/component/snabbdom/h.js","../../src/core/modules/component/custom-components.js","../../src/core/modules/component/vdom.js","../../src/core/modules/component/snabbdom/htmldomapi.js","../../src/core/modules/component/snabbdom/snabbdom.js","../../src/core/modules/component/snabbdom/modules/attributes.js","../../src/core/modules/component/snabbdom/modules/props.js","../../src/core/modules/component/snabbdom/modules/style.js","../../src/core/modules/component/eventslisteners.js","../../src/core/modules/component/patch.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/component.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/history/history.js","../../src/core/modules/service-worker/service-worker.js","../../src/core/modules/store/create-store.js","../../src/core/modules/store/store.js","../../src/core/components/statusbar/statusbar.js","../../src/core/components/view/view.js","../../src/core/components/navbar/navbar.js","../../src/core/components/toolbar/toolbar.js","../../src/core/components/subnavbar/subnavbar.js","../../src/core/components/touch-ripple/touch-ripple-class.js","../../src/core/components/touch-ripple/touch-ripple.js","../../src/core/components/modal/modal-class.js","../../src/core/components/modal/custom-modal-class.js","../../src/core/components/modal/modal.js","../../src/core/framework7.js"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","Dom7","Array","items","super","proto","__proto__","defineProperty","get","set","value","makeReactive","arrayFlat","arr","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","a","qsa","nodeType","uniqueArray","arrayUnique","fn","noTrigger","split","shortcut","name","args","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","els","dom","j","toAdd","classes","classNames","map","c","classList","add","initialProps","initialParams","props","assign","params","duration","easing","elements","animating","que","easingProgress","progress","Math","cos","PI","stop","frameId","each","dom7AnimateInstance","done","complete","shift","animate","index","initialFullValue","initialValue","unit","finalValue","finalFullValue","container","prop","replace","parseFloat","currentValue","time","startTime","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","tempDiv","firstChild","appendChild","parent","append","attrs","arguments","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","parentNode","removeChild","textContent","returnIndex","foundElements","found","className","contains","innerHeight","css","display","child","previousSibling","after","insertBefore","nextSibling","cloneNode","before","compareWith","matches","webkitMatchesSelector","msMatchesSelector","nextElementSibling","nextEls","next","eventType","targetSelector","listener","capture","undefined","events","event","handlers","dom7Listeners","dom7LiveListeners","handler","dom7proxy","proxyListener","splice","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","eventName","onceHandler","eventArgs","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","scrollTo","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","nextAll","prevAll","text","toggle","transform","transitionDuration","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","uniqueNum","mask","floor","random","mdPreloaderContent","iosPreloaderContent","join","eventNameToColonCase","hasColon","char","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","param","urlToParse","paramsPart","decodeURIComponent","slice","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","String","o","merge","to","from","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","hex","h","m","r","g","b","result","exec","n","parseInt","colorRgbToHex","toString","colorRgbToHsl","d","l","abs","colorHslToRgb","s","hp","x","rgb1","Number","isNaN","round","bindMethods","instance","subKey","bind","flattenArray","arg","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","t","rgb","hsl","hslShade","hslTint","shade","tint","--f7-theme-color","--f7-theme-color-rgb","--f7-theme-color-shade","--f7-theme-color-tint","support","deviceCalculated","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","getDevice","overrides","reset","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","electron","capacitor","Capacitor","nwjs","screenWidth","width","screenHeight","height","nw","process","versions","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","prefersColorScheme","theme","calcDevice","EventsClass","eventsParents","eventsListeners","priority","self","method","once","f7proxy","eventHandler","emit","local","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","useModuleParams","module","instanceParams","originalParams","paramKey","useModulesParams","modules","moduleName","useModule","moduleParams","modulePropName","moduleProp","moduleEventName","vnode","vnodeHooks","vnodeId","hookName","create","useModules","modulesParams","components","use","[object Object]","Class","static","install","installModule","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","fetchedModules","Framework7","Error","passedParams","w","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","autoDarkMode","iosTranslucentBars","iosTranslucentModals","component","componentUrl","online","onLine","store","f7","initStore","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","dark","light","colorSchemeListener","media","darkMode","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackLoadName","scriptEl","xhr","status","styleLoad","resolveStyle","styleContent","styleEl","all","then","catch","err","DeviceModule","metaStatusbar","content","SupportModule","UtilsModule","utils","ResizeModule","getSize","offset","orientationchange","globals","jsonpRequests","RequestResponse","RequestError","requestOptions","globalsNoCallbacks","callbackName","async","cache","user","password","headers","xhrFields","statusCode","processData","dataType","contentType","timeout","proceedRequest","abortController","canceled","message","fireCallback","globalCallbackValue","optionCallbackValue","type","paramsPrefix","stringData","abortTimeout","callbackSplit","requestUrl","addVars","script","onerror","XMLHttpRequest","aborted","onAbort","abort","requestParameters","postData","ArrayBuffer","Blob","Document","FormData","boundary","setRequestHeader","newData","JSON","stringify","Accept","headerName","crossDomain","test","RegExp","$2","onload","responseData","parseError","parse","responseText","responseType","response","statusText","ontimeout","send","requestShortcut","success","error","post","json","getJSON","postJSON","contoller","setup","RequestModule","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","auroraTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","start","move","end","useRipple","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","isScrolling","findActivableElement","activable","newActivable","preventPropagation","hasClass","isInsideScrollableView","addActive","removeActive","createRipple","y","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","targetTouches","touches","pageX","pageY","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","clientX","clientY","$activableEl","which","isNative","str","tokens","count","pattern","TypeError","code","charCodeAt","lexer","_a","prefixes","defaultPattern","escapeString","delimiter","path","tryConsume","mustConsume","nextType","consumeText","prefix","suffix","modifier","name_1","pattern_1","compile","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","source","regexpToRegexp","paths","parts","arrayToRegexp","History","queue","clearQueue","currentQueue","routerQueue","clearRouterQueue","pop","stateUrl","action","browserHistoryAnimate","browserHistory","navigate","handle","blockPopstate","state","previousState","allowChange","views","view","viewState","allowPageChange","initViewState","viewId","newState","substr","readyState","SwipeBack","$navbarsEl","isTouched","touchesStart","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","transition","reflow","_clientLeft","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","cancel","find","notFromBorder","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","activeNavBackIconText","previousNavBackIconText","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","overflow","subNavEl","opacity","transform-origin","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","$pages","timeDiff","pageChanged","removeAttr","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","transitionEnd","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","attachEvents","redirect","direction","initial","redirectUrl","redirectOptions","processQueue","routeQueue","processRouteQueue","enterNextRoute","routesBeforeEnter","beforeEnter","routesBeforeLeave","beforeLeave","appRouterCheck","asyncComponent","resolvePromise","componentPromise","default","_default","asyncComponentResult","forward","forwardOptions","reloadCurrent","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","master","masterPageEl","otherDetailPageEl","modalType","detailsInBetweenRemoved","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","findMatchingRoute","modalRemove","$viewEl","$newPage","reload","$oldPage","$newNavbarEl","$oldNavbarEl","removeThemeElements","$navbarEl","keepAlive","keepAliveData","pageEl","$pagesInView","pageInView","$navbarsInView","isDetail","isDetailRoot","navbarInView","newPagePosition","position","role","root","detailRoot","navbar","getElByPage","navbarEl","removedPageEls","removedNavbarEls","oldNavbarEl","browserHistoryRoot","browserHistorySeparator","newPageInDom","componentEl","f7PageMounted","$oldPageEl","$oldNavbarElEl","tab","tabLoad","checkMasterDetailBreakpoint","setPagePosition","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","parentPath","sameParams","paramName","allowDuplicateUrls","parseRouteUrl","getPageEl","pageComponentLoader","routerEl","newOptions","xhrAbortController","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","initialPreload","currentIsMaster","backIndex","masterRoute","force","pageToRemove","$pageToRemove","$navbarToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialNavbars","configurable","newRoute","tempDom","navbarsEl","animateIcon","newNavEls","oldNavEls","animatableNavEl","$navbarInner","needsOpacityTransition","$iconEl","isIconLabel","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$newPageEl","animateCustom","routerCustomTransitionClass","onCustomTransitionDone","animationEnd","routerTransitionClass","toDifferent","oldIsLarge","newIsLarge","animateNavbars","setProperty","removeModal","removeEl","removeTabContent","tabEl","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenRoutes","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","concat","detailRoutes","detailRoute","dRoute","masterRoutePath","childRoute","cRoute","generateUrl","findRouteByKey","constructRouteUrl","toUrl","findTabRouteUrl","$tabEl","tabId","foundTabRouteUrl","matchingRoute","pathsToMatch","matched","alias","aliasPath","pathToMatch","keyObj","paramValue","replaceRequestUrlParams","compiledUrl","regExp","removeFromXhrCache","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","iosSwipeBack","mdSwipeBack","auroraSwipeBack","browserHistoryAnimateOnLoad","browserHistoryInitialMatch","initUrl","loadInitialPage","modalOpen","pageAfterIn","hasTabRoute","initOptions","routerProp","navigateParams","navigateOptions","createRoute","navigateUrl","currentPath","viewName","anotherViewName","anotherView","openIn","ignoreOpenIn","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","refreshPage","parentPageEl","browserHistoryTabs","$parentPageEl","tabShowResult","show","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","contentEl","tabEventTarget","unloadTabContent","tabRemove","onTabLoaded","tabComponentLoader","tabContent","hasContentLoadProp","tabLoadProp","hasTabComponentChild","isPanel","modalOrPanel","modalParams","routeCallback","panelOpen","modalClose","panelClose","modalClosed","panelClosed","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","loadModal","loadModalParams","loadModalOptions","modalComponentLoader","modalContent","foundLoadProp","prevOpenedModals","forceOtherUrl","isBrokenBrowserHistory","needHistoryBack","currentRouteWithoutBrowserHistory","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","v","newV","$pageMasterEl","newWidth","handleResize","View","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","ClicksModule","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","Plugins","Browser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","clickedEl","current","linksView","ViewClass","f7RouteProps","initClicks","RouterComponentLoaderModule","popup","loginScreen","popover","side","effect","componentFunction","componentContext","f7route","f7router","componentProps","routeProps","componentRoot","createdComponent","cachedComponent","componentCache","cached","loadedComponent","parsedComponent","u","p","Map","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","is.array","is.primitive","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","propsFromAttrs","word","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","f","getChildren","nodes","childNode","treeNodeToVNode","isTreeNode","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","getSlots","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","updateAttrs","oldAttrs","cur","setAttributeNS","attributesModule","updateProps","oldProps","propsModule","raf","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","updateEvents","oldOn","oldListener","oldElm","invokeHandler","patch","domApi","cbs","api","emptyNodeAt","createRmCb","childElm","listeners","parent_1","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","tag","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","rm","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","pre","isVnode","amount","applied","ev","Component","generateId","md","aurora","__updateQueue","__eventHandlers","__onceEventHandlers","__onBeforeMount","__onMounted","__onBeforeUpdate","__onUpdated","__onBeforeUnmount","__onUnmounted","createComponent","getComponentContext","componentResult","getRenderFuncion","renderFunction","getComponentRef","getComponentStore","_gettersPlain","dispatch","$store","getters","Proxy","onUpdated","includeHooks","ctx","$f7route","$f7router","$id","$f7","$f7ready","f7ready","$theme","$tick","tick","$update","$emit","$ref","$on","$once","$onBeforeMount","$onMounted","$onBeforeUpdate","$onUpdated","$onBeforeUnmount","$onUnmounted","detachEvents","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","registerComponent","unregisterComponent","ComponentModule","componentString","componentId","callbackCreateName","template","item","scripts","parseComponent","HistoryModule","SW","registrations","register","scope","serviceWorker","reg","unregister","registration","ServiceWorkerModule","storeParams","originalState","actions","propsQueue","gettersDependencies","gettersCallbacks","getterKey","getGetterValue","addGetterCallback","__removeCallback","stateKey","callbacks","removeGetterCallback","getterValue","addCallback","deps","dep","addGetterDependencies","__callback","actionName","StoreModule","isCapacitor","StatusBar","Statusbar","hide","onClick","setTextColor","color","styleLightContent","styleDefault","setStyle","setBackgroundColor","backgroundColorByHexString","isVisible","getInfo","info","visible","overlaysWebView","overlays","setOverlaysWebView","overlay","statusbar","enabled","isCordova","isCap","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","Statusbar$1","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","modalOpen panelOpen","modalBeforeDestroy panelBeforeDestroy","view-init","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","right","title","subnavbar","noLeft","noRight","leftWidth","outerWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","currLeft","diff","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","hideOnlyCurrent","isDynamic","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","calcScrollableDistance","f7ScrollableDistance","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","handleScroll","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","panelOpen panelSwipeOpen modalOpen","tabShow",".navbar .title","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","center","diameter","isInset","insetElements","rippleTransform","scale","$rippleWaveEl","shouldBeRemoved","out","removeTimeout","openedModals","dialogsQueue","Modal","opened","$containerEl","containerEl","onOpen","onOpened","onClose","onClosed","backdrop","backdropUnique","forceBackdropUnique","$backdropEl","animateModal","queueDialogs","pushToQueue","openedModal","$modalParentEl","wasInDom","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdropEl","clearDialogsQueue","destroyed","CustomModal","extendedParams","customModal","handleClick"],"mappings":"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","file":"framework7.min.js","sourcesContent":["/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","// eslint-disable-next-line\nimport * as methods from 'dom7';\n\nObject.keys(methods).forEach((methodName) => {\n if (methodName === '$') return;\n methods.$.fn[methodName] = methods[methodName];\n});\n\nexport default methods.$;\n","import { getWindow } from 'ssr-window';\n\nlet uniqueNum = 0;\nexport function uniqueNumber() {\n uniqueNum += 1;\n return uniqueNum;\n}\nexport function id(mask = 'xxxxxxxxxx', map = '0123456789abcdef') {\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor(Math.random() * length)]);\n}\nexport const mdPreloaderContent = `\n <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n`.trim();\n\nexport const iosPreloaderContent = `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n`.trim();\n\nexport const auroraPreloaderContent = `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\n`;\nexport function eventNameToColonCase(eventName) {\n let hasColon;\n return eventName\n .split('')\n .map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n })\n .join('');\n}\nexport function deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nexport function requestAnimationFrame(callback) {\n const window = getWindow();\n return window.requestAnimationFrame(callback);\n}\nexport function cancelAnimationFrame(frameId) {\n const window = getWindow();\n return window.cancelAnimationFrame(frameId);\n}\nexport function nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nexport function nextFrame(callback) {\n return requestAnimationFrame(() => {\n requestAnimationFrame(callback);\n });\n}\nexport function now() {\n return Date.now();\n}\n\nexport function parseUrlQuery(url) {\n const window = getWindow();\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] =\n typeof param[1] === 'undefined'\n ? undefined\n : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n}\nexport function getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform\n .split(', ')\n .map((a) => a.replace(',', '.'))\n .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 =\n curStyle.MozTransform ||\n curStyle.OTransform ||\n curStyle.MsTransform ||\n curStyle.msTransform ||\n curStyle.transform ||\n curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nexport function serializeObject(obj, parents = []) {\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];\n else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach((prop) => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop));\n });\n return resultArray.join(separator);\n}\nexport function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n}\nexport function merge(...args) {\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexport function extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n extend(to[nextKey], nextSource[nextKey]);\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nexport function colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result ? result.slice(1).map((n) => parseInt(n, 16)) : null;\n}\nexport function colorRgbToHex(r, g, b) {\n const result = [r, g, b]\n .map((n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n })\n .join('');\n return `#${result}`;\n}\nexport function colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;\n else if (max === r) h = ((g - b) / d) % 6;\n else if (max === g) h = (b - r) / d + 2;\n else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n}\nexport function colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs((hp % 2) - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];\n else if (hp <= 2) rgb1 = [x, c, 0];\n else if (hp <= 3) rgb1 = [0, c, x];\n else if (hp <= 4) rgb1 = [0, x, c];\n else if (hp <= 5) rgb1 = [x, 0, c];\n else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - c / 2;\n return rgb1.map((n) => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n}\nexport function colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0,\n };\n const HSB = { h, s, b };\n\n HSL.l = ((2 - HSB.s) * HSB.b) / 2;\n HSL.s = HSL.l && HSL.l < 1 ? (HSB.s * HSB.b) / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n\n return [HSL.h, HSL.s, HSL.l];\n}\nexport function colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0,\n };\n const HSL = { h, s, l };\n\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? (2 * t) / HSB.b : HSB.s;\n\n return [HSB.h, HSB.s, HSB.b];\n}\nexport function colorThemeCSSProperties(...args) {\n let hex;\n let rgb;\n if (args.length === 1) {\n hex = args[0];\n rgb = colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return {\n '--f7-theme-color': hex,\n '--f7-theme-color-rgb': rgb.join(', '),\n '--f7-theme-color-shade': shade,\n '--f7-theme-color-tint': tint,\n };\n}\n\nexport function bindMethods(instance, obj) {\n Object.keys(obj).forEach((key) => {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach((subKey) => {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n instance[key] = obj[key];\n });\n}\n\nexport function flattenArray(...args) {\n const arr = [];\n args.forEach((arg) => {\n if (Array.isArray(arg)) arr.push(...flattenArray(...arg));\n else arr.push(arg);\n });\n return arr;\n}\n","import { getWindow, getDocument } from 'ssr-window';\n\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n\n return {\n touch: !!(\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)\n ),\n\n pointerEvents:\n !!window.PointerEvent &&\n 'maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints >= 0,\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n })(),\n\n intersectionObserver: (function checkObserver() {\n return 'IntersectionObserver' in window;\n })(),\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nexport { getSupport };\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\n\nlet deviceCalculated;\n\nfunction calcDevice({ userAgent } = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!window.cordova,\n electron: false,\n capacitor: !!window.Capacitor,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS|iPhone;\\sCPU\\sOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs =\n typeof nw !== 'undefined' &&\n typeof process !== 'undefined' &&\n typeof process.versions !== 'undefined' &&\n typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = [\n '1024x1366',\n '1366x1024',\n '834x1194',\n '1194x834',\n '834x1112',\n '1112x834',\n '768x1024',\n '1024x768',\n '820x1180',\n '1180x820',\n '810x1080',\n '1080x810',\n ];\n if (\n !ipad &&\n macos &&\n support.touch &&\n iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView =\n !!(\n (iphone || ipad || ipod) &&\n (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)\n ) ||\n (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}\n\nfunction getDevice(overrides = {}, reset) {\n if (!deviceCalculated || reset) {\n deviceCalculated = calcDevice(overrides);\n }\n return deviceCalculated;\n}\n\nexport { getDevice };\n","class EventsClass {\n constructor(parents = []) {\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (\n eventHandler === handler ||\n (eventHandler.f7proxy && eventHandler.f7proxy === handler)\n ) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map((eventName) => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter((eventName) => eventName.indexOf('local::') < 0);\n\n localEvents.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach((eventsParent) => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\n\nexport default EventsClass;\n","import { extend, now } from './utils.js';\nimport EventsClass from './events-class.js';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = extend({}, instanceParams[paramKey]);\n });\n extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || `${Object.keys(Class.prototype.modules).length}_${now()}`;\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from './dom7.js';\n\nexport default function ConstructorMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, domProp, app, addMethods } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import { getWindow, getDocument } from 'ssr-window';\nimport { id } from '../../shared/utils.js';\nimport $ from '../../shared/dom7.js';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n const window = getWindow();\n const document = getDocument();\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (\n moduleToLoad.indexOf('.') < 0 &&\n matchNamePattern &&\n matchNamePattern[0].length === moduleToLoad.length\n ) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(\n new Error(\n 'Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name',\n ),\n );\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}/${moduleToLoad}.lazy.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(\n new Error(\"Framework7: Can't find Framework7 component in specified component function\"),\n );\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error(\"Framework7: Can't find Framework7 component in specified component\"));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n Framework7.request.get(\n modulePath,\n (scriptContent) => {\n const callbackId = id();\n const callbackLoadName = `f7_component_loader_callback_${callbackId}`;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n const module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(\n new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`),\n );\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n\n resolveScript();\n },\n (xhr, status) => {\n rejectScript(xhr, status);\n },\n );\n });\n const styleLoad = new Promise((resolveStyle) => {\n Framework7.request.get(\n modulePath\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .replace('.js', app.rtl ? '.rtl.css' : '.css'),\n (styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n () => {\n resolveStyle();\n },\n );\n });\n\n Promise.all([scriptLoad, styleLoad])\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n }\n });\n}\n\nexport default loadModule;\n","/* eslint-disable no-underscore-dangle */\n\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, nextFrame } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport Framework7Class from '../../shared/class.js';\nimport EventsClass from '../../shared/events-class.js';\nimport ConstructorMethods from '../../shared/constructor-methods.js';\nimport ModalMethods from '../../shared/modal-methods.js';\nimport $ from '../../shared/dom7.js';\nimport loadModule from './load-module.js';\n\nclass Framework7 extends Framework7Class {\n constructor(params = {}) {\n super(params);\n // eslint-disable-next-line\n if (Framework7.instance && typeof window !== 'undefined') {\n throw new Error(\"Framework7 is already initialized and can't be initialized more than once\");\n }\n const device = getDevice({ userAgent: params.userAgent || undefined });\n const support = getSupport();\n\n const passedParams = extend({}, params);\n\n // App Instance\n const app = this;\n\n app.device = device;\n app.support = support;\n\n const w = getWindow();\n const d = getDocument();\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.myapp',\n el: 'body',\n theme: 'auto',\n language: w.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkMode: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n\n extend(app, {\n // App Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (device.ios) return 'ios';\n if (device.desktop && device.electron) return 'aurora';\n return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n });\n\n if (params.store) app.params.store = params.store;\n\n // Save Root\n if (app.$el && app.$el[0]) {\n app.$el[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Store\n app.initStore();\n\n // Init\n if (app.params.init) {\n if (device.cordova && app.params.initOnDeviceReady) {\n $(d).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n mount(rootEl) {\n const app = this;\n const window = getWindow();\n const document = getDocument();\n const $rootEl = $(rootEl || app.params.el).eq(0);\n app.$el = $rootEl;\n if (app.$el && app.$el[0]) {\n app.el = app.$el[0];\n app.el.f7 = app;\n app.rtl = $rootEl.css('direction') === 'rtl';\n }\n\n // Auto Dark Mode\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n };\n app.emit('mount');\n }\n\n initStore() {\n const app = this;\n if (typeof app.params.store !== 'undefined' && app.params.store.__store) {\n app.store = app.params.store;\n } else {\n app.store = app.createStore(app.params.store);\n }\n }\n\n enableAutoDarkMode() {\n const window = getWindow();\n const document = getDocument();\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('dark');\n app.darkMode = true;\n app.emit('darkModeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('dark');\n app.darkMode = false;\n app.emit('darkModeChange', false);\n }\n }\n\n disableAutoDarkMode() {\n const window = getWindow();\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);\n }\n\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(\n app.params.component,\n app.params.componentUrl,\n { componentOptions: { el: app.$el[0] } },\n (el) => {\n app.$el = $(el);\n app.$el[0].f7 = app;\n app.$elComponent = el.f7Component;\n app.el = app.$el[0];\n if (callback) callback();\n },\n () => {},\n );\n }\n\n init(rootEl) {\n const app = this;\n\n app.mount(rootEl);\n\n const init = () => {\n if (app.initialized) return;\n\n app.$el.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Mode\n if (app.params.autoDarkMode) {\n app.enableAutoDarkMode();\n }\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md aurora').addClass(app.theme);\n\n // iOS Translucent\n const device = app.device;\n if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios' && device.ios) {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n nextFrame(() => {\n app.$el.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n };\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n init();\n });\n } else {\n init();\n }\n return app;\n }\n\n // eslint-disable-next-line\n loadModule(...args) {\n return Framework7.loadModule(...args);\n }\n\n // eslint-disable-next-line\n loadModules(...args) {\n return Framework7.loadModules(...args);\n }\n\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n\n static get Dom7() {\n return $;\n }\n\n static get $() {\n return $;\n }\n\n static get device() {\n return getDevice();\n }\n\n static get support() {\n return getSupport();\n }\n\n static get Class() {\n return Framework7Class;\n }\n\n static get Events() {\n return EventsClass;\n }\n}\n\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map((module) => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import $ from './dom7.js';\nimport { extend } from './utils.js';\nimport ConstructorMethods from './constructor-methods.js';\n\nexport default function ModalMethods(parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n },\n );\n return methods;\n}\n","import { getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'device',\n static: {\n getDevice,\n },\n on: {\n init() {\n const document = getDocument();\n const device = getDevice();\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector(\n 'meta[name=\"apple-mobile-web-app-status-bar-style\"]',\n );\n if (!html) return;\n if (\n device.standalone &&\n device.ios &&\n metaStatusbar &&\n metaStatusbar.content === 'black-translucent'\n ) {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(device.pixelRatio)}`);\n // OS classes\n if (device.os && !device.desktop) {\n classNames.push(`device-${device.os}`);\n } else if (device.desktop) {\n classNames.push('device-desktop');\n if (device.os) {\n classNames.push(`device-${device.os}`);\n }\n }\n if (device.cordova) {\n classNames.push('device-cordova');\n }\n if (device.capacitor) {\n classNames.push('device-capacitor');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import { getSupport } from '../../shared/get-support.js';\n\nexport default {\n name: 'support',\n static: {\n getSupport,\n },\n};\n","import * as utils from '../../shared/utils.js';\n\nexport default {\n name: 'utils',\n proto: {\n utils,\n },\n static: {\n utils,\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport { getDevice } from '../../shared/get-device.js';\n\nexport default {\n name: 'resize',\n create() {\n const app = this;\n app.getSize = () => {\n if (!app.el) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.$el.offset();\n const [width, height, left, top] = [\n app.el.offsetWidth,\n app.el.offsetHeight,\n offset.left,\n offset.top,\n ];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n };\n },\n on: {\n init() {\n const app = this;\n const window = getWindow();\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener(\n 'resize',\n () => {\n app.emit('resize');\n },\n false,\n );\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const document = getDocument();\n const device = getDevice();\n // Fix iPad weird body scroll\n if (device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint-disable max-classes-per-file */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { extend, serializeObject } from './utils.js';\n\nconst globals = {};\nlet jsonpRequests = 0;\n\nclass RequestResponse {\n constructor(obj) {\n Object.assign(this, obj);\n }\n}\n\nclass RequestError extends Error {\n constructor(obj) {\n super();\n Object.assign(this, obj);\n }\n}\n\nconst request = (requestOptions) =>\n new Promise((resolve, reject) => {\n const window = getWindow();\n const document = getDocument();\n const globalsNoCallbacks = extend({}, globals);\n 'beforeCreate beforeOpen beforeSend error complete success statusCode'\n .split(' ')\n .forEach((callbackName) => {\n delete globalsNoCallbacks[callbackName];\n });\n const defaults = extend(\n {\n url: window.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n },\n globalsNoCallbacks,\n );\n\n let proceedRequest;\n\n const options = extend({}, defaults, requestOptions);\n if (requestOptions.abortController) {\n options.abortController = requestOptions.abortController;\n }\n\n if (options.abortController && options.abortController.canceled) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName, ...data) {\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status, message),\n complete (xhr, status),\n success (response, status, xhr),\n statusCode ()\n */\n let globalCallbackValue;\n let optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName](...data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName](...data);\n }\n if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;\n if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;\n if (\n options.abortController &&\n options.abortController.canceled &&\n (callbackName === 'beforeCreate' ||\n callbackName === 'beforeOpen' ||\n callbackName === 'beforeSend')\n ) {\n return false;\n }\n return globalCallbackValue && optionCallbackValue;\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // For jQuery guys\n if (options.type) options.method = options.type;\n\n // Parameters Prefix\n let paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n const method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if (\n (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') &&\n options.data\n ) {\n let stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];\n else stringData = options.data;\n } else {\n // Should be key=value object\n stringData = serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') paramsPrefix = '&';\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n const callbackName = `f7jsonp_${Date.now() + (jsonpRequests += 1)}`;\n let abortTimeout;\n const callbackSplit = options.url.split('callback=');\n let requestUrl = `${callbackSplit[0]}callback=${callbackName}`;\n if (callbackSplit[1].indexOf('&') >= 0) {\n const addVars = callbackSplit[1]\n .split('&')\n .filter((el) => el.indexOf('=') > 0)\n .join('&');\n if (addVars.length > 0) requestUrl += `&${addVars}`;\n }\n\n // Create script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror', 'scripterror');\n reject(new RequestError({ options, status: 'scripterror', message: 'scripterror' }));\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n window[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete window[callbackName];\n resolve(new RequestResponse({ options, data }));\n };\n document.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(() => {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout', 'timeout');\n reject(new RequestError({ options, status: 'timeout', message: 'timeout' }));\n }, options.timeout);\n }\n\n return;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += `${paramsPrefix}_nocache${Date.now()}`;\n }\n }\n\n // Create XHR\n const xhr = new XMLHttpRequest();\n\n if (options.abortController) {\n let aborted = false;\n options.abortController.onAbort = () => {\n if (aborted) return;\n aborted = true;\n xhr.abort();\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n };\n }\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n let postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n const postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n const boundary = `---------------------------${Date.now().toString(16)}`;\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', `multipart/form-data; boundary=${boundary}`);\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n let data = serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data = data.split('&');\n const newData = [];\n for (let i = 0; i < data.length; i += 1) {\n newData.push(\n `Content-Disposition: form-data; name=\"${data[i].split('=')[0]}\"\\r\\n\\r\\n${\n data[i].split('=')[1]\n }\\r\\n`,\n );\n }\n postData = `--${boundary}\\r\\n${newData.join(`--${boundary}\\r\\n`)}--${boundary}--\\r\\n`;\n } else if (options.contentType === 'application/json') {\n postData = JSON.stringify(options.data);\n } else {\n postData = data;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {\n xhr.setRequestHeader('Accept', 'application/json');\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach((headerName) => {\n if (typeof options.headers[headerName] === 'undefined') return;\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n options.crossDomain =\n // eslint-disable-next-line\n /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n extend(xhr, options.xhrFields);\n }\n\n // Handle XHR\n xhr.onload = function onload() {\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n let responseData;\n if (options.dataType === 'json') {\n let parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n } else {\n fireCallback('error', xhr, 'parseerror', 'parseerror');\n reject(new RequestError({ options, xhr, status: 'parseerror', message: 'parseerror' }));\n }\n } else {\n responseData =\n xhr.responseType === 'text' || xhr.responseType === ''\n ? xhr.responseText\n : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n resolve(new RequestResponse({ options, data: responseData, status: xhr.status, xhr }));\n }\n } else {\n fireCallback('error', xhr, xhr.status, xhr.statusText);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status])\n globals.statusCode[xhr.status](xhr);\n if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n fireCallback('error', xhr, xhr.status, xhr.status);\n reject(new RequestError({ options, xhr, status: xhr.status, message: xhr.statusText }));\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.timeout = options.timeout;\n xhr.ontimeout = () => {\n fireCallback('error', xhr, 'timeout', 'timeout');\n reject(new RequestError({ options, xhr, status: 'timeout', message: 'timeout' }));\n fireCallback('complete', xhr, 'timeout');\n };\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) {\n reject(new RequestError({ options, xhr, status: 'canceled', message: 'canceled' }));\n return;\n }\n\n // Send XHR\n xhr.send(postData);\n });\n\nfunction requestShortcut(method, ...args) {\n let [url, data, success, error, dataType] = [];\n if (typeof args[1] === 'function') {\n [url, success, error, dataType] = args;\n } else {\n [url, data, success, error, dataType] = args;\n }\n [success, error].forEach((callback) => {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) success = undefined;\n else error = undefined;\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n const requestOptions = {\n url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data,\n success,\n error,\n dataType,\n };\n if (method === 'postJSON') {\n extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return request(requestOptions);\n}\n\nObject.assign(request, {\n get: (...args) => requestShortcut('get', ...args),\n post: (...args) => requestShortcut('post', ...args),\n json: (...args) => requestShortcut('json', ...args),\n getJSON: (...args) => requestShortcut('json', ...args),\n postJSON: (...args) => requestShortcut('postJSON', ...args),\n});\n\nrequest.abortController = () => {\n const contoller = {\n canceled: false,\n onAbort: null,\n abort() {\n contoller.canceled = true;\n if (contoller.onAbort) contoller.onAbort();\n },\n };\n return contoller;\n};\n\nrequest.setup = function setup(options) {\n if (options.type && !options.method) {\n extend(options, { method: options.type });\n }\n extend(globals, options);\n};\n\nexport default request;\n","/* eslint no-param-reassign: \"off\" */\nimport request from '../../shared/request.js';\n\nexport default {\n name: 'request',\n proto: {\n request,\n },\n static: {\n request,\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { extend } from '../../shared/utils.js';\n\nfunction initTouch() {\n const app = this;\n const device = getDevice();\n const support = getSupport();\n const window = getWindow();\n const document = getDocument();\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (device.ios && device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (\n activable.eq(i).hasClass('prevent-active-state-propagation') ||\n activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create(app, $el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n let isScrolling;\n let isSegmentedStrong = false;\n let segmentedStrongEl = null;\n\n const touchMoveActivableIos = '.dialog-button, .actions-button';\n let isTouchMoveActivable = false;\n let touchmoveActivableEl = null;\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n isScrolling = undefined;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isSegmentedStrong = e.target.closest(\n '.segmented-strong .button-active, .segmented-strong .tab-link-active',\n );\n isTouchMoveActivable = app.theme === 'ios' && e.target.closest(touchMoveActivableIos);\n if (isSegmentedStrong) {\n segmentedStrongEl = isSegmentedStrong.closest('.segmented-strong');\n }\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n let shouldRemoveActive = true;\n\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n const touchCurrentX = e.targetTouches[0].pageX;\n const touchCurrentY = e.targetTouches[0].pageY;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX)\n );\n }\n\n if (isTouchMoveActivable || (!isScrolling && isSegmentedStrong && segmentedStrongEl)) {\n if (e.cancelable) e.preventDefault();\n }\n\n if (!isScrolling && isSegmentedStrong && segmentedStrongEl) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n const buttonEl = elementFromPoint.closest(\n '.segmented-strong .button:not(.button-active):not(.tab-link-active)',\n );\n if (buttonEl && segmentedStrongEl.contains(buttonEl)) {\n $(buttonEl).trigger('click', 'f7Segmented');\n targetElement = buttonEl;\n }\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n // Keep active state on touchMove (for dialog and actions buttons)\n if (isTouchMoveActivable) {\n const elementFromPoint = document.elementFromPoint(\n e.targetTouches[0].clientX,\n e.targetTouches[0].clientY,\n );\n touchmoveActivableEl = elementFromPoint.closest(touchMoveActivableIos);\n if (\n touchmoveActivableEl &&\n activableElement &&\n activableElement[0] === touchmoveActivableEl\n ) {\n shouldRemoveActive = false;\n } else if (touchmoveActivableEl) {\n setTimeout(() => {\n activableElement = findActivableElement(touchmoveActivableEl);\n addActive();\n });\n }\n }\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState && shouldRemoveActive) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n isScrolling = undefined;\n isSegmentedStrong = false;\n segmentedStrongEl = null;\n isTouchMoveActivable = false;\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (touchmoveActivableEl) {\n $(touchmoveActivableEl).trigger('click', 'f7TouchMoveActivable');\n touchmoveActivableEl = null;\n }\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n const isSegmented = e && e.detail && e.detail === 'f7Segmented';\n // eslint-disable-next-line\n const isTouchMoveActivable = e && e.detail && e.detail === 'f7TouchMoveActivable';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe || isSegmented || isTouchMoveActivable) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n } else if (isTouchMoveActivable) {\n localPreventClick = false;\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n device.ios || device.androidChrome ? 100 : 400,\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n\n const passiveListener = support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n } else {\n document.addEventListener(\n app.touchEvents.start,\n (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n },\n true,\n );\n document.addEventListener(\n app.touchEvents.move,\n (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n },\n false,\n );\n document.addEventListener(\n app.touchEvents.end,\n (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n },\n false,\n );\n }\n\n if (support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (\n params.disableContextMenu &&\n (device.ios ||\n device.android ||\n device.cordova ||\n (window.Capacitor && window.Capacitor.isNative))\n ) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements:\n 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n auroraTouchRipple: false,\n touchRippleElements:\n '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',\n touchRippleInsetElements:\n '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back',\n },\n },\n create() {\n const app = this;\n const support = getSupport();\n extend(app, {\n touchEvents: {\n start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',\n move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',\n end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup',\n },\n });\n },\n on: {\n init: initTouch,\n },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \" + j);\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern)\n throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n // tslint:disable-next-line\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not repeat, but got an array\");\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not be empty\");\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to be \" + typeOfMessage);\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n // tslint:disable-next-line\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n }\n else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n }\n else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n }\n else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict)\n route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n : // tslint:disable-next-line\n endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { getWindow, getDocument } from 'ssr-window';\nimport $ from './dom7.js';\nimport { extend } from './utils.js';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, browserHistory: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, browserHistory: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.browserHistory) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.browserHistoryAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, browserHistory: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, browserHistory: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const window = getWindow();\n const newState = extend({}, History.state || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from '../../shared/dom7.js';\nimport History from '../../shared/history.js';\nimport { getSupport } from '../../shared/get-support.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport { now } from '../../shared/utils.js';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n const support = getSupport();\n const device = getDevice();\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent =\n $currentNavbarEl.hasClass('navbar-transparent') &&\n !$currentNavbarEl.hasClass('navbar-large') &&\n !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent =\n $currentNavbarEl.hasClass('navbar-large-transparent') ||\n ($currentNavbarEl.hasClass('navbar-large') &&\n $currentNavbarEl.hasClass('navbar-transparent'));\n const previousNavIsTransparent =\n $previousNavbarEl.hasClass('navbar-transparent') &&\n !$previousNavbarEl.hasClass('navbar-large') &&\n !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent =\n $previousNavbarEl.hasClass('navbar-large-transparent') ||\n ($previousNavbarEl.hasClass('navbar-large') &&\n $previousNavbarEl.hasClass('navbar-transparent'));\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n const $previousNavElements = $previousNavbarEl.find(\n '.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg',\n );\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if (\n $currentNavbarEl.hasClass('sliding') ||\n $currentNavbarEl.find('.navbar-inner.sliding').length\n ) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (\n $previousNavbarEl.hasClass('sliding') ||\n $previousNavbarEl.find('.navbar-inner.sliding').length\n ) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl\n .find('.left.sliding')\n .find('.back .icon + span')\n .eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n transform: (progress) => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = (progress) => 1 - progress ** 0.33;\n $navEl.find('.back span').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: (progress) =>\n `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${\n 1 + 1 * progress\n })`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = (progress) =>\n `translateX(${\n 100 * progress * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => 1 - progress ** 0.33;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements.each((navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: (progress) => progress ** 3,\n transform: (progress) =>\n `translateX(calc(${\n 1 - progress\n } * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${\n progress - 1\n } * var(--f7-navbar-large-title-height) + ${\n 1 - progress\n } * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = (progress) =>\n `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${\n 1 - progress\n } * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = (progress) =>\n `translateX(${\n (-100 + 100 * progress) * inverter\n }%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = (progress) => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding =\n $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = (progress) => progress ** 3;\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition, reflow } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n if (transition === true || transition === false) {\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n }\n }\n }\n if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {\n // eslint-disable-next-line\n animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;\n }\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (\n !allowViewTouchMove ||\n !swipeBackEnabled ||\n isTouched ||\n (app.swipeout && app.swipeout.el) ||\n !router.allowPageChange\n )\n return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if (\n $(e.target).closest('.page-master, .page-master-detail').length > 0 &&\n params.masterDetailBreakpoint > 0 &&\n app.width >= params.masterDetailBreakpoint\n )\n return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!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 =\n !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) ||\n (pageX < touchesStart.x && !app.rtl) ||\n (pageX > touchesStart.x && app.rtl);\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n\n $currentPageEl = target.closest('.page');\n if (\n $currentPageEl.hasClass('no-swipeback') ||\n target.closest('.no-swipeback, .card-opened').length > 0\n )\n cancel = true;\n $previousPageEl = $el.find('.page-previous:not(.stacked)');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder =\n touchesStart.x <\n $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;\n\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n\n setAnimatableNavElements({ progress: percentage });\n }\n function handleTouchEnd() {\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n const $pages = $([$currentPageEl[0], $previousPageEl[0]]);\n $pages.removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $pages.transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true });\n }\n return;\n }\n const timeDiff = now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10) ||\n (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n $currentPageEl\n .removeClass('page-current')\n .addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl\n .removeClass('page-previous')\n .addClass('page-current')\n .removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $pages.addClass('page-transitioning page-transitioning-swipeback');\n if (device.ios) {\n // eslint-disable-next-line\n $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;\n }\n $pages.transform('');\n\n if (dynamicNavbar) {\n setAnimatableNavElements({\n progress: pageChanged ? 1 : 0,\n transition: true,\n reflow: !!device.ios,\n });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback(\n 'beforeIn',\n $previousPageEl,\n $previousNavbarEl,\n 'previous',\n 'current',\n { route: $previousPageEl[0].f7Page.route, swipeBack: true },\n $currentPageEl[0],\n );\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n $currentPageEl.transitionEnd(() => {\n $pages.removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true, transition: false });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.browserHistory) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {\n route: $currentPageEl[0].f7Page.route,\n swipeBack: true,\n });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {\n route: $previousPageEl[0].f7Page.route,\n swipeBack: true,\n });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {\n $currentPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $currentNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {\n swipeBack: true,\n });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n\n function attachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener =\n app.touchEvents.start === 'touchstart' && support.passiveListener\n ? { passive: true, capture: false }\n : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import { extend } from '../../shared/utils.js';\n\nexport default function redirect(direction, route, options) {\n const router = this;\n const r = route.route.redirect;\n const method = direction === 'forward' ? 'navigate' : 'back';\n if (options.initial && router.params.browserHistory) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[method](redirectUrl, extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof r === 'function') {\n router.allowPageChange = false;\n const redirectUrl = r.call(router, {\n router,\n to: route,\n resolve: redirectResolve,\n reject: redirectReject,\n direction,\n app: router.app,\n });\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[method](redirectUrl, options);\n }\n return router;\n }\n return router[method](r, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject, direction) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(router, {\n router,\n to,\n from,\n resolve() {\n next();\n },\n reject() {\n reject();\n },\n direction,\n app: router.app,\n });\n }\n next();\n}\n\nexport default function processRouteQueue(to, from, resolve, reject, direction) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n direction,\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function appRouterCheck(router, method) {\n if (!router.view) {\n throw new Error(\n `Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`,\n );\n }\n}\n","export default function asyncComponent(router, component, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (component instanceof Promise) {\n resolvePromise(component);\n return;\n }\n const asyncComponentResult = component.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction refreshPage() {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n}\n\nfunction forward(router, el, forwardOptions = {}) {\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n },\n forwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n\n let masterPageEl;\n let otherDetailPageEl;\n let detailsInBetweenRemoved = 0;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route[modalLoadProp]\n ) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter((navbarInView) => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n isDetail = !isMaster && masterPageEl;\n\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n reloadDetail =\n isDetail &&\n options.reloadDetail &&\n app.width >= router.params.masterDetailBreakpoint &&\n masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .removeClass('page-previous page-current page-next')\n .addClass(\n `page-${newPagePosition}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl\n .removeClass('navbar-previous navbar-current navbar-next')\n .addClass(\n `navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked');\n $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n if (reloadDetail) {\n $oldPage = $pagesInView.filter((pageEl) => !pageEl.classList.contains('page-master'));\n if (dynamicNavbar) {\n $oldNavbarEl = $($oldPage.map((pageEl) => app.navbar.getElByPage(pageEl)));\n }\n if ($oldPage.length > 1 && masterPageEl) {\n detailsInBetweenRemoved = $oldPage.length - 1;\n $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', masterPageEl);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));\n }\n }\n } else {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter((pageEl) => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter((navbarEl) => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl && $pagesInView[i] === masterPageEl) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n $pagesInView.eq(i).trigger('page:stack');\n router.emit('pageStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(oldNavbarEl).addClass('stacked');\n }\n } else {\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback(\n 'beforeRemove',\n $pagesInView[i],\n $navbarsInView && $navbarsInView[i],\n 'previous',\n undefined,\n options,\n );\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter(\n (navbarEl) =>\n navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0,\n );\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter((pageEl) => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter(\n (navbarEl) => !navbarEl.classList.contains('navbar-master'),\n );\n }\n }\n\n // Push State\n if (\n router.params.browserHistory &&\n (options.browserHistory || options.replaceState) &&\n !options.reloadPrevious\n ) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History[\n options.reloadCurrent ||\n (reloadDetail && otherDetailPageEl) ||\n options.reloadAll ||\n options.replaceState\n ? 'replace'\n : 'push'\n ](\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n\n if (options.history) {\n if (\n ((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) >\n 0 ||\n options.replaceState\n ) {\n if (reloadDetail && detailsInBetweenRemoved > 0) {\n router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);\n }\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n $oldPageEl.trigger('page:stack');\n router.emit('pageStack', $oldPageEl[0]);\n if (dynamicNavbar) {\n $oldNavbarElEl.addClass('stacked');\n }\n } else {\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback(\n 'beforeRemove',\n $oldPageEl,\n $oldNavbarEl && $oldNavbarEl.eq(index),\n 'previous',\n undefined,\n options,\n );\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n }\n });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback(\n 'init',\n $newPage,\n $newNavbarEl,\n newPagePosition,\n reload ? newPagePosition : 'current',\n options,\n $oldPage,\n );\n\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n let keepOldPage =\n (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if (\n $newPage.hasClass('smart-select-page') ||\n $newPage.hasClass('photo-browser-page') ||\n $newPage.hasClass('autocomplete-page') ||\n $newPage.hasClass('color-picker-page')\n ) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else if (\n !($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')\n ) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate(\n $oldPage,\n $newPage,\n $oldNavbarEl,\n $newNavbarEl,\n 'forward',\n transition,\n () => {\n afterAnimation();\n },\n );\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(router, loadParams = {}, loadOptions = {}, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n !options.reloadCurrent &&\n options.route &&\n options.route.route &&\n options.route.route.parentPath &&\n router.currentRoute.route &&\n router.currentRoute.route.parentPath === options.route.route.parentPath\n ) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams =\n Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach((paramName) => {\n if (\n !(paramName in router.currentRoute.params) ||\n router.currentRoute.params[paramName] !== options.route.params[paramName]\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (\n !sameParams &&\n options.route.route.tab &&\n router.currentRoute.route.tab &&\n router.currentRoute.parentPath === options.route.parentPath\n ) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n\n if (\n options.route &&\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n extend(options.route, { route: { url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return forward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n forward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n forward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n forward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n forward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\n\nfunction navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let path;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n path = navigateParams.path;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name || path) {\n url = router.generateUrl({ path, name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = extend(router.parseRouteUrl(navigateUrl), {\n route: extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(\n `Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`,\n );\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'forward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n\n if (\n options.openIn &&\n (!router.params.ignoreOpenIn || (router.params.ignoreOpenIn && router.history.length > 0))\n ) {\n return router.openIn(router, navigateUrl, options);\n }\n\n options.route = route;\n\n function resolve() {\n let routerLoaded = false;\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options, 'forward');\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n load(router, { el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n load(router, { [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, extend(options, resolveOptions), 'forward');\n }\n });\n if (resolvedAsModal) return;\n load(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'forward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n (router.currentRoute.route === route.route.masterRoute ||\n router.currentRoute.route.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute &&\n (router.currentRoute.route.masterRoute === route.route.masterRoute ||\n router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(\n { path: route.route.masterRoute.path, params: route.params || {} },\n {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n browserHistory: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(\n navigateParams,\n extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n browserHistory: !navigateOptions.initial,\n }),\n );\n },\n },\n },\n );\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'forward',\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, navigate };\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, parseUrlQuery } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\nimport History from '../../shared/history.js';\nimport redirect from './redirect.js';\nimport processRouteQueue from './process-route-queue.js';\nimport appRouterCheck from './app-router-check.js';\nimport asyncComponent from './async-component.js';\n\nfunction backward(router, el, backwardOptions) {\n const device = getDevice();\n const document = getDocument();\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = extend(\n false,\n {\n animate: router.params.animate,\n browserHistory: true,\n replaceState: false,\n },\n backwardOptions,\n );\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster =\n masterDetailEnabled &&\n options.route &&\n options.route.route &&\n (options.route.route.master === true ||\n (typeof options.route.route.master === 'function' &&\n options.route.route.master(app, router)));\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const initialPreload = $oldPage.length === 0 && options.preload;\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || ($oldPage.length === 0 && !options.preload)) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !options.route.route.keepAliveData\n ) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page:not(.stacked)')\n .filter((pageInView) => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail =\n !isMaster &&\n masterPageEl &&\n router.history.indexOf(options.route.url) >\n router.history.indexOf(masterPageEl.f7Page.route.url);\n\n if (\n !isDetail &&\n !isMaster &&\n masterPageEl &&\n masterPageEl.f7Page &&\n options.route.route.masterRoute\n ) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot =\n router.history.indexOf(options.route.url) -\n router.history.indexOf(masterPageEl.f7Page.route.url) ===\n 1;\n }\n\n // New Page\n $newPage\n .addClass(\n `page-${initialPreload ? 'current' : 'previous'}${isMaster ? ' page-master' : ''}${\n isDetail ? ' page-master-detail' : ''\n }${isDetailRoot ? ' page-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl\n .addClass(\n `navbar-${initialPreload ? 'current' : 'previous'}${isMaster ? ' navbar-master' : ''}${\n isDetail ? ' navbar-master-detail' : ''\n }${isDetailRoot ? ' navbar-master-detail-root' : ''}`,\n )\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', { position: initialPreload ? 'current' : 'previous' });\n router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], {\n role: isMaster ? 'master' : 'detail',\n detailRoot: !!isDetailRoot,\n });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if (\n $oldPage.prev('.page-previous:not(.stacked)').length > 0 ||\n $oldPage.prev('.page-previous').length === 0\n ) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n const $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n options,\n );\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if (initialPreload) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n router.$el.append(componentEl);\n });\n } else {\n router.$el.append($newPage);\n }\n }\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n } else if (\n options.route &&\n options.route.route &&\n options.route.route.keepAlive &&\n !$newPage[0].f7PageMounted\n ) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback(\n 'mounted',\n $newPage,\n $newNavbarEl,\n 'previous',\n 'current',\n options,\n $oldPage,\n );\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n preload: true,\n }),\n );\n }\n if (isMaster) {\n $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n if (initialPreload) {\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);\n }\n const $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback(\n 'beforeRemove',\n $pageToRemove,\n $navbarToRemove,\n 'previous',\n undefined,\n );\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (device.ie || device.edge || (device.firefox && !device.ios)) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + options.route.url,\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\n options.route.route.tab,\n extend({}, options, {\n history: false,\n browserHistory: false,\n }),\n );\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.browserHistory) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (\n !transition &&\n router.previousRoute &&\n router.previousRoute.route &&\n router.previousRoute.route.options\n ) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(router, backParams, backOptions, ignorePageChange) {\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, component, componentUrl } = params;\n\n if (\n options.route.url &&\n router.url === options.route.url &&\n !(options.reloadCurrent || options.reloadPrevious) &&\n !router.params.allowDuplicateUrls\n ) {\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return backward(router, pageEl, extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || componentUrl || component) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n backward(router, router.getPageEl(content), options);\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n backward(router, router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n backward(router, router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader({\n routerEl: router.el,\n component,\n componentUrl,\n options,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((pageContent) => {\n backward(router, router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n const device = getDevice();\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(\n navigateUrl,\n extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }),\n );\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n 'popup popover sheet loginScreen actions customModal panel'\n .split(' ')\n .forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal && !navigateOptions.preload) {\n const modalToClose =\n router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n const modalEl = prevOpenedModals[0];\n // check if current router not inside of the modalEl\n if (!router.$el.parents(modalEl).length) {\n previousRoute = modalEl.f7Modal.route;\n }\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenBrowserHistory = device.ie || device.edge || (device.firefox && !device.ios);\n const needHistoryBack =\n router.params.browserHistory && navigateOptions.browserHistory !== false;\n const currentRouteWithoutBrowserHistory =\n router.currentRoute &&\n router.currentRoute.route &&\n router.currentRoute.route.options &&\n router.currentRoute.route.options.browserHistory === false;\n if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el\n .children('.page-current')\n .prevAll('.page-previous:not(.page-master)')\n .eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const classes = [];\n router.$el.children('.page').each((pageEl) => {\n classes.push(pageEl.className);\n });\n\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (\n expectedPreviousPageRoute &&\n $previousMaster[0].f7Page &&\n expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route\n ) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (\n router.params.browserHistory &&\n $previousPage[0].f7Page &&\n router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n extend(navigateOptions, { force: true }),\n );\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n if (navigateOptions.preload && $previousPage.hasClass('stacked')) {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n return router;\n }\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n () => {\n loadBack(\n router,\n { el: $previousPage },\n extend(navigateOptions, {\n route: previousPageRoute,\n }),\n );\n },\n () => {},\n 'backward',\n );\n\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(\n router.history[router.history.length - 3],\n extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n }),\n );\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'backward', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n extend(options, route.route.options, navigateOptions);\n } else {\n extend(options, navigateOptions);\n }\n options.route = route;\n\n let backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each((pageEl) => {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n loadBack(router, { el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n loadBack(router, { el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n 'url content component pageName el componentUrl'.split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n loadBack(router, { [pageLoadProp]: route.route[pageLoadProp] }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n loadBack(router, resolveParams, extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, {\n router,\n to: route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction: 'backward',\n app,\n });\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(\n Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules],\n )\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n 'backward',\n );\n }\n\n // Return Router\n return router;\n}\nexport { back };\n","import { getWindow, getDocument } from 'ssr-window';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport $ from '../../shared/dom7.js';\nimport Framework7Class from '../../shared/class.js';\nimport {\n extend,\n nextFrame,\n parseUrlQuery,\n serializeObject,\n now,\n eventNameToColonCase,\n} from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport SwipeBack from './swipe-back.js';\n\nimport { refreshPage, navigate } from './navigate.js';\nimport { tabLoad, tabRemove } from './tab.js';\nimport { modalLoad, modalRemove } from './modal.js';\nimport { back } from './back.js';\nimport { clearPreviousHistory } from './clear-previous-history.js';\nimport appRouterCheck from './app-router-check.js';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n extend(false, router, {\n app,\n view,\n viewId: view.id,\n id: view.params.routerId,\n params: view.params,\n routes: view.routes,\n history: view.history,\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute = {}) {\n previousRoute = extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n mount() {\n const router = this;\n const view = router.view;\n const document = getDocument();\n\n extend(false, router, {\n tempDom: document.createElement('div'),\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl,\n });\n\n router.emit('local::mount routerMount', router);\n }\n\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (\n isSliding &&\n animateIcon &&\n $el.hasClass('left') &&\n $iconEl.length > 0 &&\n $iconEl.next('span').length\n ) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (\n !(\n $oldNavbarEl.hasClass('navbar-master') &&\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint\n )\n ) {\n $oldNavbarEl\n .children('.navbar-inner')\n .children('.left, .right, .title, .subnavbar')\n .each((navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach((navEls) => {\n navEls.forEach((navEl) => {\n const n = navEl;\n const { isSliding, $el } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach((otherNavEl) => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls, oldNavEls };\n }\n\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [\n $oldPageEl,\n $newPageEl,\n $oldNavbarEl,\n $newNavbarEl,\n direction,\n callback,\n ]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n let newNavEls;\n let oldNavEls;\n\n let fromLarge;\n let toLarge;\n let toDifferent;\n\n let oldIsLarge;\n let newIsLarge;\n\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail =\n router.params.masterDetailBreakpoint > 0 &&\n router.app.width >= router.params.masterDetailBreakpoint &&\n (($oldNavbarEl.hasClass('navbar-master') &&\n $newNavbarEl.hasClass('navbar-master-detail')) ||\n ($oldNavbarEl.hasClass('navbar-master-detail') &&\n $newNavbarEl.hasClass('navbar-master')));\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n toDifferent = (fromLarge && !toLarge) || (toLarge && !fromLarge);\n }\n const navEls = router.animatableNavElements(\n $newNavbarEl,\n $oldNavbarEl,\n toLarge,\n fromLarge,\n direction,\n );\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n // prettier-ignore\n $el[0].style.setProperty(\n 'transform',\n `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n 'important',\n );\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(\n `translate3d(${\n offset * progress\n }px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`,\n );\n } else {\n $el.transform(`translate3d(${offset * progress}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass(\n 'router-navbar-transition-to-large router-navbar-transition-from-large',\n );\n }\n if (\n $newNavbarEl.hasClass('sliding') ||\n $newNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if (\n $oldNavbarEl.hasClass('sliding') ||\n $oldNavbarEl.children('.navbar-inner.sliding').length\n ) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each((tabEl) => {\n $(tabEl)\n .children()\n .each((tabChild) => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.destroy) {\n $el[0].f7Component.destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n\n return router.findElement('.page', router.tempDom);\n }\n\n findElement(stringSelector, container, notStacked) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector =\n '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n const $container = $(container);\n let selector = stringSelector;\n if (notStacked) selector += ':not(.stacked)';\n\n let found = $container\n .find(selector)\n .filter((el) => $(el).parents(modalsSelector).length === 0);\n\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n\n // Try to find not stacked\n if (!notStacked) found = router.findElement(selector, $container, true);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n\n flattenRoutes(routes = this.routes) {\n const router = this;\n let flattenedRoutes = [];\n routes.forEach((route) => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map((tabRoute) => {\n const tRoute = extend({}, route, {\n path: `${route.path}/${tabRoute.path}`.replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute,\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map((detailRoute) => {\n const dRoute = extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map((childRoute) => {\n const cRoute = extend({}, childRoute);\n cRoute.path = `${route.path}/${cRoute.path}`.replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path,\n };\n }\n\n generateUrl(parameters = {}) {\n if (typeof parameters === 'string') {\n return parameters;\n }\n const { name, path, params, query } = parameters;\n if (!name && !path) {\n throw new Error('Framework7: \"name\" or \"path\" parameter is required');\n }\n const router = this;\n const route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);\n\n if (!route) {\n if (name) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n } else {\n throw new Error(`Framework7: route with path \"${path}\" not found`);\n }\n }\n const url = router.constructRouteUrl(route, { params, query });\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, { params, query } = {}) {\n const { path } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(\n `Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`,\n );\n }\n\n if (query) {\n if (typeof query === 'string') url += `?${query}`;\n else if (Object.keys(query).length) url += `?${serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRouteUrl(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRouteUrl;\n flattenedRoutes.forEach((route) => {\n if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {\n if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {\n foundTabRouteUrl = router.constructRouteUrl(route, {\n params: router.currentRoute.params,\n query: router.currentRoute.query,\n });\n } else {\n foundTabRouteUrl = route.path;\n }\n }\n });\n return foundTabRouteUrl;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = path\n .split('/')\n .slice(0, route.parentPath.split('/').length - 1)\n .join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path,\n parentPath,\n route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url = '', options = {}) {\n let compiledUrl = url;\n if (\n typeof compiledUrl === 'string' &&\n compiledUrl.indexOf('{{') >= 0 &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n Object.keys(options.route.params).forEach((paramName) => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const { ignoreCache } = options;\n let url = requestUrl;\n\n let hasQuery = url.indexOf('?') >= 0;\n if (\n params.passRouteQueryToRequest &&\n options &&\n options.route &&\n options.route.query &&\n Object.keys(options.route.query).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n\n if (\n params.passRouteParamsToRequest &&\n options &&\n options.route &&\n options.route.params &&\n Object.keys(options.route.params).length\n ) {\n url += `${hasQuery ? '&' : '?'}${serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (\n params.xhrCache &&\n !ignoreCache &&\n url.indexOf('nocache') < 0 &&\n params.xhrCacheIgnore.indexOf(url) < 0\n ) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhrAbortController = router.app.request.abortController();\n router.app.request({\n abortController: router.xhrAbortController,\n url,\n method: 'GET',\n beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if (\n (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300) ||\n xhr.status === 0\n ) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: xhr.responseText,\n });\n }\n router.emit('routerAjaxSuccess', xhr, options);\n resolve(xhr.responseText);\n } else {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n }\n },\n error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\n });\n });\n }\n\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', { position });\n router.emit('navbarPosition', $el[0], position);\n }\n\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', { position });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';\n } else if (theme === 'aurora') {\n toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';\n }\n $(el).find(toRemove).remove();\n }\n\n getPageData(pageEl, navbarEl, from, to, route = {}, pageFromEl) {\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous'))\n direction = 'forward';\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current'))\n direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom,\n };\n\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options = {}, pageFromEl) {\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const { route } = options;\n const restoreScrollTopOnBack =\n router.params.restoreScrollTopOnBack &&\n !(\n router.params.masterDetailBreakpoint > 0 &&\n $pageEl.hasClass('page-master') &&\n router.app.width >= router.params.masterDetailBreakpoint\n );\n const keepAlive =\n $pageEl[0].f7Page &&\n $pageEl[0].f7Page.route &&\n $pageEl[0].f7Page.route.route &&\n $pageEl[0].f7Page.route.route.keepAlive;\n\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = extend($pageEl[0].f7Page, { from, to, position: from });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n const { on = {}, once = {} } = options.route ? options.route.route : {};\n if (options.on) {\n extend(on, options.on);\n }\n if (options.once) {\n extend(once, options.once);\n }\n\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach((eventName) => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach((eventName) => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach((eventName) => {\n $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (\n restoreScrollTopOnBack &&\n (from === 'previous' || !from) &&\n to === 'current' &&\n router.scrollHistory[page.route.url] &&\n !$pageEl.hasClass('no-restore-scroll')\n ) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (\n restoreScrollTopOnBack &&\n callback === 'beforeOut' &&\n from === 'current' &&\n to === 'previous'\n ) {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 &&\n !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n\n saveHistory() {\n const router = this;\n const window = getWindow();\n router.view.history = router.history;\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage\n ) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n\n restoreHistory() {\n const router = this;\n const window = getWindow();\n if (\n router.params.browserHistory &&\n router.params.browserHistoryStoreHistory &&\n window.localStorage &&\n window.localStorage[`f7router-${router.view.id}-history`]\n ) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const { query, hash, params, url, path } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path,\n });\n }\n\n if (router.params.browserHistory) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\n router.view.id,\n {\n url: newUrl,\n },\n browserHistoryRoot + router.params.browserHistorySeparator + newUrl,\n );\n }\n\n // Save History\n router.saveHistory();\n\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n\n getInitialUrl() {\n const router = this;\n if (router.initialUrl) {\n return {\n initialUrl: router.initialUrl,\n historyRestored: router.historyRestored,\n };\n }\n const { app, view } = router;\n const document = getDocument();\n const window = getWindow();\n\n const location =\n app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined'\n ? new URL(app.params.url)\n : document.location;\n\n let initialUrl = router.params.url;\n let documentUrl = location.href.split(location.origin)[1];\n let historyRestored;\n const { browserHistory, browserHistoryOnLoad, browserHistorySeparator } = router.params;\n let { browserHistoryRoot } = router.params;\n if (\n (window.cordova || (window.Capacitor && window.Capacitor.isNative)) &&\n browserHistory &&\n !browserHistorySeparator &&\n !browserHistoryRoot &&\n location.pathname.indexOf('index.html')\n ) {\n // eslint-disable-next-line\n console.warn(\n 'Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot',\n );\n browserHistoryRoot = location.pathname.split('index.html')[0];\n }\n if (!browserHistory || !browserHistoryOnLoad) {\n if (!initialUrl) {\n initialUrl = documentUrl;\n }\n if (location.search && initialUrl.indexOf('?') < 0) {\n initialUrl += location.search;\n }\n if (location.hash && initialUrl.indexOf('#') < 0) {\n initialUrl += location.hash;\n }\n } else {\n if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {\n documentUrl = documentUrl.split(browserHistoryRoot)[1];\n if (documentUrl === '') documentUrl = '/';\n }\n if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {\n initialUrl = documentUrl.split(browserHistorySeparator)[1];\n } else {\n initialUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initialUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);\n } else if (router.params.url === initialUrl) {\n router.history = [initialUrl];\n } else if (\n History.state &&\n History.state[view.id] &&\n History.state[view.id].url === router.history[router.history.length - 1]\n ) {\n initialUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n\n router.initialUrl = initialUrl;\n router.historyRestored = historyRestored;\n\n return { initialUrl, historyRestored };\n }\n\n init() {\n const router = this;\n const { app, view } = router;\n const document = getDocument();\n\n router.mount();\n\n const { initialUrl, historyRestored } = router.getInitialUrl();\n\n // Init Swipeback\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios') ||\n (view && router.params.mdSwipeBack && app.theme === 'md') ||\n (view && router.params.auroraSwipeBack && app.theme === 'aurora')\n ) {\n SwipeBack(router);\n }\n\n const {\n browserHistory,\n browserHistoryOnLoad,\n browserHistoryAnimateOnLoad,\n browserHistoryInitialMatch,\n } = router.params;\n\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n const initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initialUrl);\n if (!currentRoute) {\n currentRoute = extend(router.parseRouteUrl(initialUrl), {\n route: {\n url: initialUrl,\n path: initialUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.params.stackPages) {\n router.$el.children('.page').each((pageEl) => {\n const $pageEl = $(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar')[0]);\n }\n });\n }\n\n if (\n router.$el.children('.page:not(.stacked)').length === 0 &&\n initialUrl &&\n router.params.loadInitialPage\n ) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n pageAfterIn() {\n if (!historyRestored) return;\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n },\n },\n });\n } else if (router.$el.children('.page:not(.stacked)').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').each((pageEl) => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (\n router.currentRoute &&\n router.currentRoute.route &&\n (router.currentRoute.route.master === true ||\n (typeof router.currentRoute.route.master === 'function' &&\n router.currentRoute.route.master(app, router))) &&\n router.params.masterDetailBreakpoint > 0\n ) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', { role: 'master' });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n if (browserHistoryInitialMatch) {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 1) {\n router.back({ preload: true });\n }\n } else {\n router.navigate(initialUrl, {\n initial: true,\n browserHistory: false,\n history: false,\n animate: browserHistoryAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage =\n router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initialUrl);\n router.saveHistory();\n }\n }\n if (\n initialUrl &&\n browserHistory &&\n browserHistoryOnLoad &&\n (!History.state || !History.state[view.id])\n ) {\n History.initViewState(view.id, {\n url: initialUrl,\n });\n }\n router.emit('local::init routerInit', router);\n }\n\n destroy() {\n let router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach((routerProp) => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n }\n}\n\n// Load\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\n\nexport default Router;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n },\n loadOptions,\n );\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {\n History[router.params.browserHistoryTabs](\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader({\n tabEl: $newTabEl[0],\n component,\n componentUrl,\n options: loadTabOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n 'url content component el componentUrl'.split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, {\n router,\n to: currentRoute,\n from: previousRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n app: router.app,\n });\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import { extend, nextTick } from '../../shared/utils.js';\nimport History from '../../shared/history.js';\nimport asyncComponent from './async-component.js';\n\nfunction modalLoad(modalType, route, loadOptions = {}, direction) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = extend(\n {\n animate: router.params.animate,\n browserHistory: true,\n history: true,\n on: {},\n once: {},\n },\n loadOptions,\n );\n\n const modalParams = extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n const routeCallback = (modal, name) => {\n const { on, once } = options;\n let callback;\n if (name === 'open') {\n callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;\n }\n if (name === 'close') {\n callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;\n }\n if (name === 'closed') {\n callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;\n }\n if (callback) callback(modal);\n };\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n routeCallback(modal, 'open');\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n routeCallback(modal, 'close');\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(\n `${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`,\n modal.el,\n route,\n modal,\n );\n const modalComponent = modal.el.f7Component;\n routeCallback(modal, 'closed');\n if (modalComponent) {\n modalComponent.destroy();\n }\n nextTick(() => {\n if (modalComponent || modalParams.component || modalParams.asyncComponent) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.browserHistory && options.browserHistory) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.browserHistoryRoot || '') +\n router.params.browserHistorySeparator +\n options.route.url,\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history && !options.reloadCurrent) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(\n `${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`,\n route,\n modal,\n );\n router.emit(\n `${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`,\n modal.el,\n route,\n modal,\n );\n }\n\n // Open\n modal.open(options.animate === false || options.animate === true ? options.animate : undefined);\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.mount((componentEl) => {\n modalParams.el = componentEl;\n app.$el.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader({\n rootEl: app.el,\n component,\n componentUrl,\n options: loadModalOptions,\n resolve,\n reject,\n });\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n 'url content component el componentUrl template'.split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, {\n router,\n to: options.route,\n from: router.currentRoute,\n resolve: asyncResolve,\n reject: asyncReject,\n direction,\n app,\n });\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from '../../shared/dom7.js';\nimport appRouterCheck from './app-router-check.js';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el.children('.page').filter((pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel))\n return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n });\n}\n\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n\n clearPreviousPages(router);\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\n\nexport { clearPreviousHistory }; // eslint-disable-line\n","import Router from './router-class.js';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nfunction resizableView(view) {\n const app = view.app;\n const support = getSupport();\n if (view.resizableInitialized) return;\n extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\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\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Router from '../../modules/router/router.js';\nimport Framework7Class from '../../shared/class.js';\nimport resizableView from './resizable-view.js';\n\nclass View extends Framework7Class {\n constructor(app, el, viewParams = {}) {\n super(viewParams, [app]);\n\n const view = this;\n\n const ssr = view.params.routerId;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if (!ssr) {\n const $el = $(el);\n if (!$el.length) {\n let message = \"Framework7: can't create a View instance because \";\n message +=\n typeof el === 'string'\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n }\n\n // Default View params\n view.params = extend({ el }, defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // View Props\n extend(false, view, {\n app,\n name: view.params.name,\n main: view.params.main,\n history: [],\n scrollHistory: {},\n });\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n if (!view.params.init) {\n return view;\n }\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail =\n app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n mount(viewEl) {\n const view = this;\n const app = view.app;\n const el = view.params.el || viewEl;\n const $el = $(el);\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector =\n ($el.attr('id') ? `#${$el.attr('id')}` : '') +\n ($el.attr('class')\n ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}`\n : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n extend(view, {\n $el,\n el: $el[0],\n main: view.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n });\n\n if (view.main) {\n app.views.main = view;\n }\n\n // Save in DOM\n if ($el && $el[0]) {\n $el[0].f7View = view;\n }\n\n view.emit('local::mount viewMount', view);\n }\n\n init(viewEl) {\n const view = this;\n view.mount(viewEl);\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n view.router.init();\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\nexport default View;\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport ViewClass from '../../components/view/view-class.js';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const window = getWindow();\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n\n // Check if link is external\n if (isLink) {\n if (\n $clickedLinkEl.is(app.params.clicks.externalLinks) ||\n // eslint-disable-next-line\n (url && url.indexOf('javascript:') >= 0)\n ) {\n const target = $clickedLinkEl.attr('target');\n if (\n url &&\n window.cordova &&\n window.cordova.InAppBrowser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n } else if (\n url &&\n window.Capacitor &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.Browser &&\n (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.Capacitor.Plugins.Browser.open({ url });\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(\n app,\n matchingClickedElement,\n matchingClickedElement.dataset(),\n e,\n );\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n clickedLinkData.clickedEl = $clickedLinkEl[0];\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent'))\n return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;\n else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);\n else view.router.navigate(url, clickedLinkData);\n }\n }\n\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n },\n },\n};\n","import { merge } from '../../shared/utils.js';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n openIn(router, url, options) {\n const navigateOptions = {\n url,\n route: {\n path: url,\n options: {\n ...options,\n openIn: undefined,\n },\n },\n };\n const params = {\n ...options,\n };\n if (options.openIn === 'popup') {\n params.content = `<div class=\"popup popup-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.popup = params;\n }\n if (options.openIn === 'loginScreen') {\n params.content = `<div class=\"login-screen login-screen-router-open-in\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.loginScreen = params;\n }\n if (options.openIn === 'sheet') {\n params.content = `<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"${url}\"><div class=\"sheet-modal-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.sheet = params;\n }\n if (options.openIn === 'popover') {\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"popover popover-router-open-in\" data-url=\"${url}\"><div class=\"popover-inner\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div></div>`;\n navigateOptions.route.popover = params;\n }\n if (options.openIn.indexOf('panel') >= 0) {\n const parts = options.openIn.split(':');\n const side = parts[1] || 'left';\n const effect = parts[2] || 'cover';\n params.targetEl = options.clickedEl || options.targetEl;\n params.content = `<div class=\"panel panel-router-open-in panel-${side} panel-${effect}\" data-url=\"${url}\"><div class=\"view view-init\" data-links-view=\"${router.view.selector}\" data-url=\"${url}\" data-ignore-open-in=\"true\"></div></div>`;\n navigateOptions.route.panel = params;\n }\n return router.navigate(navigateOptions);\n },\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentFunction) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw err;\n }\n }\n const componentContext = merge({}, context, {\n f7route: options.route,\n f7router: router,\n });\n const componentProps = merge(\n options.route ? options.route.params || {} : {},\n options.props || {},\n options.routeProps || {},\n );\n let componentEl;\n let componentRoot;\n if (options.componentOptions && options.componentOptions.el) {\n componentEl = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentRoot = options.componentOptions.root;\n }\n app.component\n .create(componentFunction, componentProps, {\n context: componentContext,\n el: componentEl,\n root: componentRoot,\n })\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err);\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhrAbortController) {\n router.xhrAbortController.abort();\n router.xhrAbortController = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw err;\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n tabComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el) => {\n resolve(el);\n },\n reject,\n );\n },\n\n pageComponentLoader({ component, componentUrl, options, resolve, reject } = {}) {\n const router = this;\n router.componentLoader(\n component,\n componentUrl,\n options,\n (el, newOptions = {}) => {\n resolve(el, newOptions);\n },\n reject,\n );\n },\n },\n};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","import htm from 'htm';\nimport { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst h = (type, props, ...children) => {\n return {\n type,\n props: props || {},\n children: flattenArray(children.filter((child) => ignoreChildren.indexOf(child) < 0)),\n };\n};\n\nconst $h = htm.bind(h);\n\nexport default $h;\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode.js';\nimport * as is from './is';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map\n","export default {};\n","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport h from './snabbdom/h.js';\nimport customComponents from './custom-components.js';\nimport { isObject, eventNameToColonCase } from '../../shared/utils.js';\n\nconst SELF_CLOSING =\n 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(\n ' ',\n );\nconst PROPS_ATTRS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(\n ' ',\n );\nconst BOOLEAN_PROPS =\n 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(\n ' ',\n );\n\nconst getTagName = (treeNode) => {\n return typeof treeNode.type === 'function'\n ? treeNode.type.name || 'CustomComponent'\n : treeNode.type;\n};\n\nconst toCamelCase = (name) => {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n};\nconst propsFromAttrs = (...args) => {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n};\n\nconst createCustomComponent = ({ f7, treeNode, vnode, data }) => {\n const component =\n typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];\n f7.component\n .create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {\n el: vnode.elm,\n children: treeNode.children,\n })\n .then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n};\nconst updateCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.children = vnode.data.treeNode.children;\n Object.assign(component.props, newProps);\n component.update();\n};\nconst destroyCustomComponent = (vnode) => {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.destroy) component.destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n};\n\nconst isCustomComponent = (treeNodeType) => {\n return (\n typeof treeNodeType === 'function' ||\n (treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType])\n );\n};\n\nfunction getHooks(treeNode, data, f7, initial, isRoot) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n let tagName = getTagName(treeNode);\n if (data && data.attrs && data.attrs.component) {\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n\n const isCustom = isCustomComponent(treeNode.type);\n\n if (isCustom) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ f7, treeNode, vnode, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustom) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...f7.getVnodeHooks('insert', className));\n }\n destroy.push(...f7.getVnodeHooks('destroy', className));\n update.push(...f7.getVnodeHooks('update', className));\n postpatch.push(...f7.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.component) {\n vn.data.component.hook('onUpdated');\n }\n });\n }\n if (\n insert.length === 0 &&\n destroy.length === 0 &&\n update.length === 0 &&\n postpatch.length === 0\n ) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach((f) => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach((f) => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach((f) => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach((f) => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nconst getEventHandler = (eventHandler, { stop, prevent, once } = {}) => {\n let fired = false;\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n eventHandler(...args);\n }\n\n return handler;\n};\n\nconst getData = (treeNode, component, f7, initial, isRoot) => {\n const data = { component, treeNode };\n const tagName = getTagName(treeNode);\n Object.keys(treeNode.props).forEach((attrName) => {\n const attrValue = treeNode.props[attrName];\n if (typeof attrValue === 'undefined') return;\n if (PROPS_ATTRS.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n // eslint-disable-next-line\n attrName = 'readOnly';\n }\n if (attrName === 'routeProps') {\n // eslint-disable-next-line\n attrName = 'f7RouteProps';\n }\n if (tagName === 'option' && attrName === 'value') {\n if (!data.attrs) data.attrs = {};\n data.attrs.value = attrValue;\n }\n if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (\n attrName.indexOf('@') === 0 ||\n (attrName.indexOf('on') === 0 && attrName.length > 2)\n ) {\n // Events\n if (!data.on) data.on = {};\n let eventName =\n attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (typeof attrValue !== 'string') {\n data.style = attrValue;\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n\n const hooks = getHooks(treeNode, data, f7, initial, isRoot);\n\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (BOOLEAN_PROPS.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n\n data.hook = hooks;\n\n return data;\n};\n\nconst getChildren = (treeNode, component, f7, initial) => {\n if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {\n return [];\n }\n const children = [];\n const nodes = treeNode.children;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = treeNodeToVNode(childNode, component, f7, initial, false);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n};\n\nconst getSlots = (treeNode, component, f7, initial) => {\n const slotName = treeNode.props.name || 'default';\n const slotNodes = (component.children || []).filter((childTreeNode) => {\n let childSlotName = 'default';\n if (childTreeNode.props) {\n childSlotName = childTreeNode.props.slot || 'default';\n }\n return childSlotName === slotName;\n });\n if (slotNodes.length === 0) {\n return getChildren(treeNode, component, f7, initial);\n }\n return slotNodes.map((subTreeNode) => treeNodeToVNode(subTreeNode, component, f7, initial));\n};\n\nconst isTreeNode = (treeNode) => {\n return isObject(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;\n};\n\nconst treeNodeToVNode = (treeNode, component, f7, initial, isRoot) => {\n if (!isTreeNode(treeNode)) {\n return String(treeNode);\n }\n if (treeNode.type === 'slot') {\n return getSlots(treeNode, component, f7, initial);\n }\n const data = getData(treeNode, component, f7, initial, isRoot);\n const children = isCustomComponent(treeNode.type)\n ? []\n : getChildren(treeNode, component, f7, initial);\n\n return h(getTagName(treeNode), data, children);\n};\n\nexport default function vdom(tree = {}, component, initial) {\n return treeNodeToVNode(tree, component, component.f7, initial, true);\n}\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode.js';\nimport * as is from './is.js';\nimport htmlDomApi from './htmldomapi.js';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h';\nexport { thunk } from './thunk';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map\n","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from '../../shared/dom7.js';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = vnode && vnode.elm;\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom.js';\nimport attributesModule from './snabbdom/modules/attributes.js';\nimport propsModule from './snabbdom/modules/props.js';\nimport styleModule from './snabbdom/modules/style.js';\nimport eventListenersModule from './eventslisteners.js';\n\nconst patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);\n\nexport default patch;\n","/* eslint no-underscore-dangle: \"off\" */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport $h from './$h.js';\nimport { id as generateId, merge, eventNameToColonCase, deleteProps } from '../../shared/utils.js';\nimport vdom from './vdom.js';\nimport patch from './patch.js';\n\nclass Component {\n constructor(app, component, props = {}, { el, context, children } = {}) {\n const document = getDocument();\n merge(this, {\n f7: app,\n props: props || {},\n context: context || {},\n id: component.id || generateId(),\n children: children || [],\n theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n aurora: app.theme === 'aurora',\n },\n style: component.style,\n __updateQueue: [],\n __eventHandlers: [],\n __onceEventHandlers: [],\n __onBeforeMount: [],\n __onMounted: [],\n __onBeforeUpdate: [],\n __onUpdated: [],\n __onBeforeUnmount: [],\n __onUnmounted: [],\n });\n\n const createComponent = () => {\n return component(this.props, this.getComponentContext(true));\n };\n\n const getRenderFuncion = (componentResult) =>\n new Promise((resolve, reject) => {\n if (typeof componentResult === 'function') {\n resolve(componentResult);\n } else if (componentResult instanceof Promise) {\n componentResult\n .then((render) => {\n resolve(render);\n })\n .catch((err) => {\n reject(err);\n });\n } else {\n reject(\n new Error(\n 'Framework7: Component render function is not a \"function\" type. Didn\\'t you forget to \"return $render\"?',\n ),\n );\n }\n });\n\n return new Promise((resolve, reject) => {\n const componentResult = createComponent();\n getRenderFuncion(componentResult)\n .then((render) => {\n this.renderFunction = render;\n\n const tree = this.render();\n\n if (el) {\n this.vnode = vdom(tree, this, true);\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n this.el = el;\n patch(this.el, this.vnode);\n this.el = this.vnode.elm;\n this.$el = $(this.el);\n\n this.attachEvents();\n this.el.f7Component = this;\n this.mount();\n resolve(this);\n return;\n }\n // Make Dom\n if (tree) {\n this.vnode = vdom(tree, this, true);\n this.el = document.createElement(this.vnode.sel || 'div');\n patch(this.el, this.vnode);\n this.$el = $(this.el);\n }\n if (this.style) {\n this.styleEl = document.createElement('style');\n this.styleEl.innerHTML = this.style;\n }\n\n this.attachEvents();\n\n if (this.el) {\n this.el.f7Component = this;\n }\n\n resolve(this);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n on(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__eventHandlers.push({ eventName, handler });\n }\n\n once(eventName, handler) {\n if (!this.__eventHandlers) return;\n this.__onceEventHandlers.push({ eventName, handler });\n }\n\n getComponentRef() {\n const self = this;\n return (initialValue) => {\n let value = initialValue;\n const obj = {};\n Object.defineProperty(obj, 'value', {\n get() {\n return value;\n },\n set(v) {\n value = v;\n self.update();\n },\n });\n return obj;\n };\n }\n\n getComponentStore() {\n const { state, _gettersPlain, dispatch } = this.f7.store;\n const $store = {\n state,\n dispatch,\n };\n $store.getters = new Proxy(_gettersPlain, {\n get: (target, prop) => {\n const obj = target[prop];\n const callback = (v) => {\n obj.value = v;\n this.update();\n };\n obj.onUpdated(callback);\n return obj;\n },\n });\n\n return $store;\n }\n\n getComponentContext(includeHooks) {\n const ctx = {\n $f7route: this.context.f7route,\n $f7router: this.context.f7router,\n $h,\n $,\n $id: this.id,\n $f7: this.f7,\n $f7ready: this.f7ready.bind(this),\n $theme: this.theme,\n $tick: this.tick.bind(this),\n $update: this.update.bind(this),\n $emit: this.emit.bind(this),\n $store: this.getComponentStore(),\n $ref: this.getComponentRef(),\n $el: {},\n };\n Object.defineProperty(ctx.$el, 'value', {\n get: () => {\n return this.$el;\n },\n });\n if (includeHooks)\n Object.assign(ctx, {\n $on: this.on.bind(this),\n $once: this.once.bind(this),\n $onBeforeMount: (handler) => this.__onBeforeMount.push(handler),\n $onMounted: (handler) => this.__onMounted.push(handler),\n $onBeforeUpdate: (handler) => this.__onBeforeUpdate.push(handler),\n $onUpdated: (handler) => this.__onUpdated.push(handler),\n $onBeforeUnmount: (handler) => this.__onBeforeUnmount.push(handler),\n $onUnmounted: (handler) => this.__onUnmounted.push(handler),\n });\n\n return ctx;\n }\n\n render() {\n return this.renderFunction(this.getComponentContext());\n }\n\n emit(name, data) {\n if (!this.el) return;\n this.$el.trigger(name, data);\n }\n\n attachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n detachEvents() {\n const { $el } = this;\n if (!this.__eventHandlers) return;\n this.__eventHandlers.forEach(({ eventName, handler }) => {\n $el.on(eventNameToColonCase(eventName), handler);\n });\n this.__onceEventHandlers.forEach(({ eventName, handler }) => {\n $el.once(eventNameToColonCase(eventName), handler);\n });\n }\n\n startUpdateQueue() {\n const window = getWindow();\n if (this.__requestAnimationFrameId) return;\n const update = () => {\n this.hook('onBeforeUpdate');\n const tree = this.render();\n\n // Make Dom\n if (tree) {\n const newVNode = vdom(tree, this, false);\n this.vnode = patch(this.vnode, newVNode);\n }\n };\n this.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (this.__updateIsPending) update();\n let resolvers = [...this.__updateQueue];\n this.__updateQueue = [];\n this.__updateIsPending = false;\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n delete this.__requestAnimationFrameId;\n delete this.__updateIsPending;\n resolvers.forEach((resolver) => resolver());\n resolvers = [];\n });\n }\n\n tick(callback) {\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n update(callback) {\n if (this.__destroyed) return new Promise(() => {});\n return new Promise((resolve) => {\n const resolver = () => {\n resolve();\n if (callback) callback();\n };\n this.__updateIsPending = true;\n this.__updateQueue.push(resolver);\n this.startUpdateQueue();\n });\n }\n\n setState(callback) {\n return this.update(callback);\n }\n\n f7ready(callback) {\n if (this.f7.initialized) {\n callback(this.f7);\n return;\n }\n this.f7.once('init', () => {\n callback(this.f7);\n });\n }\n\n mount(mountMethod) {\n this.hook('onBeforeMount', this.$el);\n if (this.styleEl) $('head').append(this.styleEl);\n if (mountMethod) mountMethod(this.el);\n this.hook('onMounted', this.$el);\n }\n\n destroy() {\n if (this.__destroyed) return;\n const window = getWindow();\n this.hook('onBeforeUnmount');\n\n if (this.styleEl) $(this.styleEl).remove();\n\n this.detachEvents();\n this.hook('onUnmounted');\n // Delete component instance\n if (this.el && this.el.f7Component) {\n this.el.f7Component = null;\n delete this.el.f7Component;\n }\n // Patch with empty node\n if (this.vnode) {\n this.vnode = patch(this.vnode, { sel: this.vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(this.__requestAnimationFrameId);\n this.__updateQueue = [];\n this.__eventHandlers = [];\n this.__onceEventHandlers = [];\n this.__onBeforeMount = [];\n this.__onMounted = [];\n this.__onBeforeUpdate = [];\n this.__onUpdated = [];\n this.__onBeforeUnmount = [];\n this.__onUnmounted = [];\n // Delete all props\n deleteProps(this);\n this.__destroyed = true;\n }\n\n hook(name, ...args) {\n if (this.__destroyed) return;\n this[`__${name}`].forEach((handler) => {\n handler(...args);\n });\n }\n}\n\nexport default Component;\n","import Component from './component-class.js';\nimport parseComponent from './parse-component.js';\nimport customComponents from './custom-components.js';\nimport $jsx from './$jsx.js';\n\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nfunction unregisterComponent(tagName) {\n delete customComponents[tagName];\n}\n\nexport { Component, $jsx };\nexport default {\n name: 'component',\n static: {\n Component,\n registerComponent,\n unregisterComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponent,\n unregisterComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(component, props, { root, el, context, children }) {\n return new Component(app, component, props, { root, el, context, children });\n },\n };\n },\n};\n","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { id } from '../../shared/utils.js';\n\nfunction parseComponent(componentString) {\n const window = getWindow();\n const document = getDocument();\n const componentId = id();\n const callbackCreateName = `f7_component_create_callback_${componentId}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n }\n if (componentString.indexOf('<style scoped>') >= 0) {\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n }\n\n // Parse Script\n let scriptContent;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return () => {return $render}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';\n\n // Parse Template\n if (template) {\n scriptContent = scriptContent\n .replace(\n '$render',\n `function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n var $ref = $$ctx.$ref;\n\n return $h\\`${template}\\`\n }\n `,\n )\n .replace(/export default/g, 'return');\n }\n\n // Execute Script\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Style\n if (style) {\n component.style = style;\n }\n\n // Component ID\n component.id = componentId;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../shared/history.js';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { getWindow } from 'ssr-window';\nimport { extend } from '../../shared/utils.js';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n const window = getWindow();\n\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container\n .register(path, scope ? { scope } : {})\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n })\n .catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n const window = getWindow();\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(\n registrations.map(\n (reg) =>\n new Promise((resolve, reject) => {\n reg\n .unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n }),\n ),\n );\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n const window = getWindow();\n extend(app, {\n serviceWorker: {\n container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n const window = getWindow();\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (app.device.cordova || (window.Capacitor && window.Capacitor.isNative)) return;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","/* eslint-disable no-underscore-dangle */\nimport { extend } from '../../shared/utils.js';\n\nfunction createStore(storeParams = {}) {\n const store = {\n __store: true,\n };\n const originalState = { ...(storeParams.state || {}) };\n const actions = { ...(storeParams.actions || {}) };\n const getters = { ...(storeParams.getters || {}) };\n const state = extend({}, originalState);\n\n let propsQueue = [];\n const gettersDependencies = {};\n const gettersCallbacks = {};\n\n Object.keys(getters).forEach((getterKey) => {\n gettersDependencies[getterKey] = [];\n gettersCallbacks[getterKey] = [];\n });\n\n const getGetterValue = (getterKey) => {\n return getters[getterKey]({ state: store.state });\n };\n\n const addGetterDependencies = (getterKey, deps) => {\n if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];\n deps.forEach((dep) => {\n if (gettersDependencies[getterKey].indexOf(dep) < 0) {\n gettersDependencies[getterKey].push(dep);\n }\n });\n };\n\n const addGetterCallback = (getterKey, callback) => {\n if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];\n gettersCallbacks[getterKey].push(callback);\n };\n\n const runGetterCallbacks = (stateKey) => {\n const keys = Object.keys(gettersDependencies).filter((getterKey) => {\n return gettersDependencies[getterKey].indexOf(stateKey) >= 0;\n });\n keys.forEach((getterKey) => {\n if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;\n gettersCallbacks[getterKey].forEach((callback) => {\n callback(getGetterValue(getterKey));\n });\n });\n };\n\n const removeGetterCallback = (callback) => {\n Object.keys(gettersCallbacks).forEach((stateKey) => {\n const callbacks = gettersCallbacks[stateKey];\n\n if (callbacks.indexOf(callback) >= 0) {\n callbacks.splice(callbacks.indexOf(callback), 1);\n }\n });\n };\n\n // eslint-disable-next-line\n store.__removeCallback = (callback) => {\n removeGetterCallback(callback);\n };\n\n const getterValue = (getterKey, addCallback = true) => {\n if (getterKey === 'constructor') return undefined;\n propsQueue = [];\n const value = getGetterValue(getterKey);\n addGetterDependencies(getterKey, propsQueue);\n const onUpdated = (callback) => {\n addGetterCallback(getterKey, callback);\n };\n\n const obj = {\n value,\n onUpdated,\n };\n\n if (!addCallback) {\n return obj;\n }\n\n const callback = (v) => {\n obj.value = v;\n };\n\n obj.__callback = callback;\n addGetterCallback(getterKey, callback);\n // eslint-disable-next-line\n return obj;\n };\n\n store.state = new Proxy(state, {\n set: (target, prop, value) => {\n target[prop] = value;\n runGetterCallbacks(prop);\n return true;\n },\n get: (target, prop) => {\n propsQueue.push(prop);\n return target[prop];\n },\n });\n\n store.getters = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, true);\n },\n });\n\n store._gettersPlain = new Proxy(getters, {\n set: () => false,\n get: (target, prop) => {\n if (!target[prop]) {\n return undefined;\n }\n return getterValue(prop, false);\n },\n });\n\n store.dispatch = (actionName, data) => {\n return new Promise((resolve, reject) => {\n if (!actions[actionName]) {\n reject();\n throw new Error(`Framework7: Store action \"${actionName}\" is not found`);\n }\n const result = actions[actionName]({ state: store.state, dispatch: store.dispatch }, data);\n resolve(result);\n });\n };\n\n return store;\n}\n\nexport default createStore;\n","import createStore from './create-store.js';\n\nexport { createStore };\nexport default {\n name: 'store',\n static: { createStore },\n proto: { createStore },\n};\n","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getDevice } from '../../shared/get-device.js';\n\nconst isCapacitor = () => {\n const window = getWindow();\n return (\n window.Capacitor &&\n window.Capacitor.isNative &&\n window.Capacitor.Plugins &&\n window.Capacitor.Plugins.StatusBar\n );\n};\n\nconst Statusbar = {\n hide() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.hide();\n }\n },\n show() {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n } else {\n pageContent = app.$el\n .children('.view')\n .find('.page:not(.page-previous):not(.page-next):not(.cached)')\n .find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (isCapacitor()) {\n if (color === 'white') {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'DARK' });\n } else {\n window.Capacitor.Plugins.StatusBar.setStyle({ style: 'LIGHT' });\n }\n }\n },\n setBackgroundColor(color) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setBackgroundColor({ color });\n }\n },\n isVisible() {\n const window = getWindow();\n const device = getDevice();\n return new Promise((resolve) => {\n if (device.cordova && window.StatusBar) {\n resolve(window.StatusBar.isVisible);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.getInfo().then((info) => {\n resolve(info.visible);\n });\n }\n resolve(false);\n });\n },\n overlaysWebView(overlays = true) {\n const window = getWindow();\n const device = getDevice();\n if (device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n if (isCapacitor()) {\n window.Capacitor.Plugins.StatusBar.setOverlaysWebView({ overlay: overlays });\n }\n },\n init() {\n const app = this;\n const window = getWindow();\n const device = getDevice();\n const params = app.params.statusbar;\n if (!params.enabled) return;\n const isCordova = device.cordova && window.StatusBar;\n const isCap = isCapacitor();\n\n if (isCordova || isCap) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (device.ios) {\n if (params.iosOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n if (device.android) {\n if (params.androidOverlaysWebView) {\n Statusbar.overlaysWebView(true);\n } else {\n Statusbar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n Statusbar.setTextColor('white');\n } else {\n Statusbar.setTextColor('black');\n }\n }\n }\n if (params.iosBackgroundColor && device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n bindMethods(app, {\n statusbar: Statusbar,\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport View from './view-class.js';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.$el;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n init: true,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { bindMethods } from '../../shared/utils.js';\nimport { getSupport } from '../../shared/get-support.js';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle =\n $innerEl.hasClass('navbar-inner-centered-title') ||\n app.params.navbar[`${app.theme}CenterTitle`];\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked') ||\n $el.parents('.stacked').length > 0 ||\n $el.parents('.tab:not(.tab-active)').length > 0 ||\n $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth =\n navbarWidth -\n parseInt(navbarStyles.paddingLeft, 10) -\n parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el\n .parent()\n .find('.navbar-current')\n .children('.left.sliding')\n .find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;\n if (\n router &&\n router.params.iosAnimateNavbarBackIcon &&\n left.find('.back .icon').length > 0\n ) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset =\n rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl\n ? subnavbar[0].offsetWidth\n : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true, hideOnlyCurrent = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl\n .parents('.view')\n .find('.page')\n .each((el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl\n .eq(0)\n .removeClass('page-with-navbar-large-collapsed')\n .trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const support = getSupport();\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function calcScrollableDistance() {\n $pageEl.find('.page-content').each((pageContentEl) => {\n pageContentEl.f7ScrollableDistance =\n pageContentEl.scrollHeight - pageContentEl.offsetHeight;\n });\n }\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (\n currentScrollTop >= navbarTitleLargeHeight / 2 &&\n currentScrollTop < navbarTitleLargeHeight\n ) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse(pageContentEl) {\n const isHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent =\n $navbarEl.hasClass('navbar-large-transparent') ||\n ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent'));\n previousCollapseProgress = collapseProgress;\n const scrollableDistance = Math.min(\n navbarTitleLargeHeight,\n pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight,\n );\n collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);\n const previousCollapseWasInMiddle =\n previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed) ||\n (collapseProgress === 0 && previousCollapseWasInMiddle) ||\n (collapseProgress === 1 && !navbarCollapsed) ||\n (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl\n .find('.navbar-bg')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden =\n $navbarEl.hasClass('navbar-hidden') ||\n $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl, true, true);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl, true, false, true);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse(scrollContent);\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n calcScrollableDistance();\n if (needCollapse || needTransparent) {\n $pageEl.find('.page-content').each((pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n app.on('resize', calcScrollableDistance);\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n app.off('resize', calcScrollableDistance);\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (\n support.touch &&\n ((needCollapse && snapPageScrollToLargeTitle) ||\n (needTransparent && snapPageScrollToTransparentNavbar))\n ) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n bindMethods(app, {\n navbar: Navbar,\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint':\n function onPanelResize() {\n const app = this;\n $('.navbar').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll ||\n page.$el.find('.hide-navbar-on-scroll').length ||\n page.$el.hasClass('hide-navbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length ||\n page.$el.hasClass('keep-navbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(\n page.el,\n $navbarEl[0],\n needHideOnScrollHandler,\n needCollapseOnScrollHandler,\n needTransparentOnScroll,\n );\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous):not(.stacked)')\n .each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl, clickedData, e) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($(e.target).closest('a, button').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl\n .nextAll('.page-current:not(.stacked)')\n .find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\nimport { nextFrame, bindMethods } from '../../shared/utils.js';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n const $tabbarEl = $(tabbarEl);\n if (app.theme === 'ios' && !$tabbarEl.hasClass('tabbar-highlight')) return;\n\n if (\n $tabbarEl.length === 0 ||\n !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))\n )\n return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n nextFrame(() => {\n $highlightEl.css('width', highlightWidth).transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n bindMethods(app, {\n toolbar: Toolbar,\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll ||\n page.$el.find('.hide-toolbar-on-scroll').length ||\n page.$el.hasClass('hide-toolbar-on-scroll') ||\n page.$el.find('.hide-bars-on-scroll').length ||\n page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length ||\n page.$el.hasClass('keep-toolbar-on-scroll') ||\n page.$el.find('.keep-bars-on-scroll').length ||\n page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.$el.find('.tabbar, .tabbar-labels').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n const $innerSubnavbars = page.$el.find('.subnavbar').filter((subnavbarEl) => {\n return $(subnavbarEl).parents('.page')[0] === page.$el[0];\n });\n if ($innerSubnavbars.length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","import $ from '../../shared/dom7.js';\n\nexport default class TouchRipple {\n constructor(app, $el, x, y) {\n const ripple = this;\n\n if (!$el) return undefined;\n\n const { left, top, width, height } = $el[0].getBoundingClientRect();\n const center = {\n x: x - left,\n y: y - top,\n };\n let diameter = Math.max((height ** 2 + width ** 2) ** 0.5, 48);\n\n let isInset = false;\n const insetElements = app.params.touch.touchRippleInsetElements || '';\n if (insetElements && $el.is(insetElements)) {\n isInset = true;\n }\n if (isInset) {\n diameter = Math.max(Math.min(width, height), 48);\n }\n\n if (!isInset && $el.css('overflow') === 'hidden') {\n const distanceFromCenter =\n ((center.x - width / 2) ** 2 + (center.y - height / 2) ** 2) ** 0.5;\n const scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);\n ripple.rippleTransform = `translate3d(0px, 0px, 0) scale(${scale})`;\n } else {\n // prettier-ignore\n ripple.rippleTransform = `translate3d(${-center.x + width / 2}px, ${-center.y + height / 2}px, 0) scale(1)`;\n }\n if (isInset) {\n $el.addClass('ripple-inset');\n }\n\n ripple.$rippleWaveEl = $(\n `<div class=\"ripple-wave\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${\n diameter / 2\n }px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${\n center.y\n }px; --f7-ripple-transform: ${ripple.rippleTransform}\"></div>`,\n );\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.$rippleWaveEl.animationEnd(() => {\n if (!ripple.$rippleWaveEl) return;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;\n ripple.$rippleWaveEl.addClass('ripple-wave-in');\n if (ripple.shouldBeRemoved) {\n ripple.out();\n }\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n out() {\n const ripple = this;\n const { $rippleWaveEl } = this;\n clearTimeout(ripple.removeTimeout);\n $rippleWaveEl.addClass('ripple-wave-out');\n\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 300);\n\n $rippleWaveEl.animationEnd(() => {\n clearTimeout(ripple.removeTimeout);\n ripple.destroy();\n });\n }\n\n remove() {\n const ripple = this;\n if (ripple.shouldBeRemoved) return;\n ripple.removeTimeout = setTimeout(() => {\n ripple.destroy();\n }, 400);\n ripple.shouldBeRemoved = true;\n if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {\n ripple.out();\n }\n }\n}\n","import TouchRipple from './touch-ripple-class.js';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom7.js';\nimport { extend, deleteProps } from '../../shared/utils.js';\nimport Framework7Class from '../../shared/class.js';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = extend(defaults, params);\n modal.opened = false;\n\n let $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;\n if (!$containerEl.length) $containerEl = app.$el;\n\n modal.$containerEl = $containerEl;\n modal.containerEl = $containerEl[0];\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.remove();\n }\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n if (animateModal === false && $el[0] && type !== 'dialog') {\n $el[0].style.display = 'block';\n }\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (!$modalParentEl.is(modal.$containerEl)) {\n modal.$containerEl.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n if (\n modal.params.backdrop &&\n (modal.params.backdropUnique || modal.forceBackdropUnique) &&\n modal.$backdropEl\n ) {\n modal.$backdropEl.insertBefore($el);\n }\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-out not-animated').addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el\n .prevAll('.popup.modal-in')\n .add(modal.$el.nextAll('.popup.modal-in'))\n .each((popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick &&\n popupInstance.params.backdrop &&\n popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el.animationEnd(() => {\n transitionEnd();\n });\n $el.transitionEnd(() => {\n transitionEnd();\n });\n $el.removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from '../../shared/dom7.js';\nimport { extend } from '../../shared/utils.js';\nimport Modal from './modal-class.js';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = extend(\n {\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n },\n params,\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.$el.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.$el.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class.js';\nimport CustomModal from './custom-modal-class.js';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n queueDialogs: true,\n },\n },\n};\n","import $ from './shared/dom7.js';\n\nimport Framework7 from './components/app/app-class.js';\n\n//IMPORT_HELPERS\n\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 RequestModule from './modules/request/request.js';\nimport TouchModule from './modules/touch/touch.js';\nimport ClicksModule from './modules/clicks/clicks.js';\nimport RouterModule from './modules/router/router.js';\nimport RouterComponentLoaderModule from './modules/router/component-loader.js';\nimport ComponentModule, { Component, $jsx } from './modules/component/component.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';\n\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 Router from './modules/router/router-class.js';\n\n//IMPORT_COMPONENTS\n\n// UMD_ONLY_START\nif (typeof window !== 'undefined') {\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n}\n// UMD_ONLY_END\n\nRouter.use([RouterComponentLoaderModule]);\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule,\n ServiceWorkerModule,\n StoreModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n //INSTALL_COMPONENTS\n]);\n\n//NAMED_EXPORT\nexport default Framework7;\n"]}
|