framework7 7.0.8 → 8.0.0-beta.1

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.
Files changed (579) hide show
  1. package/components/accordion/accordion.js +2 -16
  2. package/components/accordion/accordion.less +0 -3
  3. package/components/actions/actions-class.js +13 -58
  4. package/components/actions/actions-ios.less +42 -0
  5. package/components/actions/actions-md.less +12 -0
  6. package/components/actions/actions-rtl.css +1 -1
  7. package/components/actions/actions-vars.less +17 -42
  8. package/components/actions/actions.css +1 -1
  9. package/components/actions/actions.d.ts +2 -2
  10. package/components/actions/actions.js +0 -4
  11. package/components/actions/actions.lazy.js +1 -1
  12. package/components/actions/actions.less +5 -35
  13. package/components/app/app-class.d.ts +14 -12
  14. package/components/app/app-class.js +93 -75
  15. package/components/app/app-ios.less +0 -2
  16. package/components/app/app-md.less +0 -2
  17. package/components/app/app-vars.less +13 -96
  18. package/components/app/app.less +1 -4
  19. package/components/app/load-module.js +17 -36
  20. package/components/area-chart/area-chart-class.js +8 -64
  21. package/components/area-chart/area-chart.js +0 -3
  22. package/components/area-chart/area-chart.less +0 -3
  23. package/components/autocomplete/autocomplete-class.js +30 -175
  24. package/components/autocomplete/autocomplete-ios.less +0 -8
  25. package/components/autocomplete/autocomplete-rtl.css +1 -1
  26. package/components/autocomplete/autocomplete-vars.less +8 -22
  27. package/components/autocomplete/autocomplete.css +1 -1
  28. package/components/autocomplete/autocomplete.d.ts +1 -3
  29. package/components/autocomplete/autocomplete.js +1 -6
  30. package/components/autocomplete/autocomplete.lazy.js +1 -1
  31. package/components/autocomplete/autocomplete.less +6 -18
  32. package/components/badge/badge-vars.less +3 -6
  33. package/components/badge/badge.less +1 -3
  34. package/components/block/block-vars.less +25 -52
  35. package/components/block/block.less +37 -12
  36. package/components/breadcrumbs/breadcrumbs-rtl.css +1 -1
  37. package/components/breadcrumbs/breadcrumbs-vars.less +31 -15
  38. package/components/breadcrumbs/breadcrumbs.css +1 -1
  39. package/components/breadcrumbs/breadcrumbs.js +0 -2
  40. package/components/breadcrumbs/breadcrumbs.less +4 -10
  41. package/components/button/button-vars.less +42 -43
  42. package/components/button/button.less +24 -26
  43. package/components/calendar/calendar-class.js +81 -401
  44. package/components/calendar/calendar-rtl.css +1 -1
  45. package/components/calendar/calendar-vars.less +32 -46
  46. package/components/calendar/calendar.css +1 -1
  47. package/components/calendar/calendar.js +6 -4
  48. package/components/calendar/calendar.lazy.js +1 -1
  49. package/components/calendar/calendar.less +10 -21
  50. package/components/card/card-rtl.css +1 -1
  51. package/components/card/card-vars.less +41 -44
  52. package/components/card/card.css +1 -1
  53. package/components/card/card.js +0 -108
  54. package/components/card/card.less +18 -24
  55. package/components/checkbox/checkbox-rtl.css +1 -1
  56. package/components/checkbox/checkbox-vars.less +0 -8
  57. package/components/checkbox/checkbox.css +1 -1
  58. package/components/checkbox/checkbox.less +10 -3
  59. package/components/chip/chip-ios.less +3 -0
  60. package/components/chip/chip-md.less +4 -3
  61. package/components/chip/chip-rtl.css +1 -1
  62. package/components/chip/chip-vars.less +17 -20
  63. package/components/chip/chip.css +1 -1
  64. package/components/chip/chip.less +16 -21
  65. package/components/color-picker/color-picker-class.js +27 -158
  66. package/components/color-picker/color-picker-rtl.css +1 -1
  67. package/components/color-picker/color-picker.css +1 -1
  68. package/components/color-picker/color-picker.js +0 -4
  69. package/components/color-picker/color-picker.lazy.js +1 -1
  70. package/components/color-picker/color-picker.less +18 -8
  71. package/components/color-picker/modules/alpha-slider.js +0 -12
  72. package/components/color-picker/modules/brightness-slider.js +0 -8
  73. package/components/color-picker/modules/current-color.js +0 -2
  74. package/components/color-picker/modules/hex.js +0 -12
  75. package/components/color-picker/modules/hs-spectrum.js +0 -20
  76. package/components/color-picker/modules/hsb-sliders.js +0 -18
  77. package/components/color-picker/modules/hue-slider.js +0 -7
  78. package/components/color-picker/modules/initial-current-colors.js +0 -7
  79. package/components/color-picker/modules/palette.js +2 -10
  80. package/components/color-picker/modules/rgb-bars.js +0 -17
  81. package/components/color-picker/modules/rgb-sliders.js +0 -17
  82. package/components/color-picker/modules/sb-spectrum.js +0 -20
  83. package/components/color-picker/modules/wheel.js +0 -28
  84. package/components/contacts-list/contacts-list-md.less +4 -3
  85. package/components/contacts-list/contacts-list-rtl.css +1 -1
  86. package/components/contacts-list/contacts-list-vars.less +3 -15
  87. package/components/contacts-list/contacts-list.css +1 -1
  88. package/components/contacts-list/contacts-list.less +0 -3
  89. package/components/data-table/data-table-class.js +10 -32
  90. package/components/data-table/data-table-rtl.css +1 -1
  91. package/components/data-table/data-table-vars.less +6 -39
  92. package/components/data-table/data-table.css +1 -1
  93. package/components/data-table/data-table.js +0 -8
  94. package/components/data-table/data-table.less +0 -3
  95. package/components/dialog/dialog-class.js +7 -41
  96. package/components/dialog/dialog-ios.less +0 -3
  97. package/components/dialog/dialog-md.less +9 -9
  98. package/components/dialog/dialog-rtl.css +1 -1
  99. package/components/dialog/dialog-vars.less +25 -70
  100. package/components/dialog/dialog.css +1 -1
  101. package/components/dialog/dialog.d.ts +2 -2
  102. package/components/dialog/dialog.js +12 -48
  103. package/components/dialog/dialog.lazy.js +1 -1
  104. package/components/dialog/dialog.less +8 -4
  105. package/components/fab/fab-rtl.css +1 -1
  106. package/components/fab/fab-vars.less +20 -14
  107. package/components/fab/fab.css +1 -1
  108. package/components/fab/fab.js +0 -21
  109. package/components/fab/fab.less +50 -53
  110. package/components/form/form.d.ts +4 -4
  111. package/components/form/form.js +58 -94
  112. package/components/form/form.lazy.js +1 -1
  113. package/components/form/form.less +0 -3
  114. package/components/gauge/gauge-class.js +4 -20
  115. package/components/gauge/gauge.js +0 -9
  116. package/components/gauge/gauge.less +0 -3
  117. package/components/grid/grid-rtl.css +1 -1
  118. package/components/grid/grid-vars.less +0 -7
  119. package/components/grid/grid.css +1 -1
  120. package/components/grid/grid.d.ts +2 -8
  121. package/components/grid/grid.js +1 -225
  122. package/components/grid/grid.lazy.js +1 -1
  123. package/components/grid/grid.less +54 -184
  124. package/components/icon/icon.less +0 -3
  125. package/components/infinite-scroll/infinite-scroll-rtl.css +1 -1
  126. package/components/infinite-scroll/infinite-scroll.css +1 -1
  127. package/components/infinite-scroll/infinite-scroll.js +0 -16
  128. package/components/infinite-scroll/infinite-scroll.less +0 -3
  129. package/components/input/input-ios.less +49 -41
  130. package/components/input/input-md.less +87 -19
  131. package/components/input/input-rtl.css +1 -1
  132. package/components/input/input-vars.less +26 -60
  133. package/components/input/input.css +1 -1
  134. package/components/input/input.js +8 -67
  135. package/components/input/input.less +67 -153
  136. package/components/link/link-vars.less +0 -5
  137. package/components/link/link.less +3 -3
  138. package/components/list/list-md.less +0 -7
  139. package/components/list/list-vars.less +59 -108
  140. package/components/list/list.less +122 -90
  141. package/components/list-index/list-index-class.js +12 -69
  142. package/components/list-index/list-index-rtl.css +1 -1
  143. package/components/list-index/list-index-vars.less +0 -7
  144. package/components/list-index/list-index.css +1 -1
  145. package/components/list-index/list-index.d.ts +1 -3
  146. package/components/list-index/list-index.js +0 -8
  147. package/components/list-index/list-index.lazy.js +1 -1
  148. package/components/list-index/list-index.less +4 -7
  149. package/components/login-screen/login-screen-class.js +4 -9
  150. package/components/login-screen/login-screen-rtl.css +1 -1
  151. package/components/login-screen/login-screen-vars.less +13 -12
  152. package/components/login-screen/login-screen.css +1 -1
  153. package/components/login-screen/login-screen.js +0 -4
  154. package/components/login-screen/login-screen.less +2 -8
  155. package/components/messagebar/messagebar-class.js +18 -79
  156. package/components/messagebar/messagebar-ios.less +36 -0
  157. package/components/messagebar/messagebar-md.less +96 -16
  158. package/components/messagebar/messagebar-rtl.css +1 -1
  159. package/components/messagebar/messagebar-vars.less +27 -50
  160. package/components/messagebar/messagebar.css +1 -1
  161. package/components/messagebar/messagebar.js +0 -8
  162. package/components/messagebar/messagebar.less +11 -42
  163. package/components/messages/messages-class.js +17 -110
  164. package/components/messages/messages-ios.less +9 -0
  165. package/components/messages/messages-md.less +63 -28
  166. package/components/messages/messages-rtl.css +1 -1
  167. package/components/messages/messages-vars.less +43 -50
  168. package/components/messages/messages.css +1 -1
  169. package/components/messages/messages.js +0 -8
  170. package/components/messages/messages.lazy.js +1 -1
  171. package/components/messages/messages.less +0 -11
  172. package/components/modal/custom-modal-class.js +4 -14
  173. package/components/modal/modal-class.js +19 -55
  174. package/components/modal/modal.js +0 -3
  175. package/components/navbar/navbar-ios.less +3 -39
  176. package/components/navbar/navbar-md.less +12 -0
  177. package/components/navbar/navbar-vars.less +20 -49
  178. package/components/navbar/navbar.d.ts +0 -2
  179. package/components/navbar/navbar.js +37 -166
  180. package/components/navbar/navbar.less +4 -26
  181. package/components/notification/notification-class.js +4 -39
  182. package/components/notification/notification-md.less +18 -8
  183. package/components/notification/notification-rtl.css +1 -1
  184. package/components/notification/notification-vars.less +15 -54
  185. package/components/notification/notification.css +1 -1
  186. package/components/notification/notification.js +0 -2
  187. package/components/notification/notification.lazy.js +1 -1
  188. package/components/notification/notification.less +0 -3
  189. package/components/page/page-md.less +40 -10
  190. package/components/page/page-transitions/circle.less +15 -9
  191. package/components/page/page-transitions/fade.less +17 -11
  192. package/components/page/page-transitions/flip.less +9 -4
  193. package/components/page/page-vars.less +3 -19
  194. package/components/page/page.less +2 -10
  195. package/components/panel/panel-class.js +23 -127
  196. package/components/panel/panel-md.less +9 -0
  197. package/components/panel/panel-rtl.css +1 -1
  198. package/components/panel/panel-vars.less +7 -21
  199. package/components/panel/panel.css +1 -1
  200. package/components/panel/panel.d.ts +2 -2
  201. package/components/panel/panel.js +0 -34
  202. package/components/panel/panel.lazy.js +1 -1
  203. package/components/panel/panel.less +56 -48
  204. package/components/panel/resizable-panel.js +2 -32
  205. package/components/panel/swipe-panel.js +16 -71
  206. package/components/photo-browser/photo-browser-class.js +41 -171
  207. package/components/photo-browser/photo-browser-rtl.css +1 -1
  208. package/components/photo-browser/photo-browser-vars.less +0 -3
  209. package/components/photo-browser/photo-browser.css +1 -1
  210. package/components/photo-browser/photo-browser.d.ts +2 -4
  211. package/components/photo-browser/photo-browser.js +1 -6
  212. package/components/photo-browser/photo-browser.lazy.js +1 -1
  213. package/components/photo-browser/photo-browser.less +0 -4
  214. package/components/picker/picker-class.js +26 -133
  215. package/components/picker/picker-column.js +11 -31
  216. package/components/picker/picker-ios.less +10 -0
  217. package/components/picker/picker-md.less +6 -0
  218. package/components/picker/picker-rtl.css +1 -1
  219. package/components/picker/picker-vars.less +9 -25
  220. package/components/picker/picker.css +1 -1
  221. package/components/picker/picker.js +0 -4
  222. package/components/picker/picker.lazy.js +1 -1
  223. package/components/picker/picker.less +0 -11
  224. package/components/pie-chart/pie-chart-class.js +8 -31
  225. package/components/pie-chart/pie-chart.js +0 -3
  226. package/components/pie-chart/pie-chart.less +0 -3
  227. package/components/popover/popover-class.js +72 -126
  228. package/components/popover/popover-ios.less +0 -50
  229. package/components/popover/popover-rtl.css +1 -1
  230. package/components/popover/popover-vars.less +6 -23
  231. package/components/popover/popover.css +1 -1
  232. package/components/popover/popover.d.ts +2 -0
  233. package/components/popover/popover.js +1 -12
  234. package/components/popover/popover.lazy.js +1 -1
  235. package/components/popover/popover.less +62 -5
  236. package/components/popup/popup-class.js +12 -78
  237. package/components/popup/popup-rtl.css +1 -1
  238. package/components/popup/popup-vars.less +7 -9
  239. package/components/popup/popup.css +1 -1
  240. package/components/popup/popup.js +0 -4
  241. package/components/popup/popup.lazy.js +1 -1
  242. package/components/popup/popup.less +4 -4
  243. package/components/preloader/preloader-ios.less +3 -1
  244. package/components/preloader/preloader-md.less +5 -1
  245. package/components/preloader/preloader-rtl.css +1 -1
  246. package/components/preloader/preloader-vars.less +0 -6
  247. package/components/preloader/preloader.css +1 -1
  248. package/components/preloader/preloader.js +8 -25
  249. package/components/preloader/preloader.lazy.js +1 -1
  250. package/components/preloader/preloader.less +6 -3
  251. package/components/progressbar/progressbar-rtl.css +1 -1
  252. package/components/progressbar/progressbar-vars.less +2 -12
  253. package/components/progressbar/progressbar.css +1 -1
  254. package/components/progressbar/progressbar.js +2 -31
  255. package/components/progressbar/progressbar.less +0 -3
  256. package/components/pull-to-refresh/pull-to-refresh-class.js +15 -107
  257. package/components/pull-to-refresh/pull-to-refresh-md.less +2 -1
  258. package/components/pull-to-refresh/pull-to-refresh-rtl.css +1 -1
  259. package/components/pull-to-refresh/pull-to-refresh-vars.less +0 -4
  260. package/components/pull-to-refresh/pull-to-refresh.css +1 -1
  261. package/components/pull-to-refresh/pull-to-refresh.js +0 -8
  262. package/components/pull-to-refresh/pull-to-refresh.lazy.js +1 -1
  263. package/components/pull-to-refresh/pull-to-refresh.less +0 -3
  264. package/components/radio/radio-rtl.css +1 -1
  265. package/components/radio/radio-vars.less +0 -7
  266. package/components/radio/radio.css +1 -1
  267. package/components/radio/radio.less +12 -5
  268. package/components/range/range-class.js +27 -112
  269. package/components/range/range-rtl.css +1 -1
  270. package/components/range/range-vars.less +10 -32
  271. package/components/range/range.css +1 -1
  272. package/components/range/range.js +0 -12
  273. package/components/range/range.less +0 -3
  274. package/components/searchbar/remove-diacritics.js +0 -4
  275. package/components/searchbar/searchbar-class.js +17 -138
  276. package/components/searchbar/searchbar-md.less +41 -16
  277. package/components/searchbar/searchbar-rtl.css +1 -1
  278. package/components/searchbar/searchbar-vars.less +25 -76
  279. package/components/searchbar/searchbar.css +1 -1
  280. package/components/searchbar/searchbar.d.ts +2 -2
  281. package/components/searchbar/searchbar.js +0 -15
  282. package/components/searchbar/searchbar.lazy.js +1 -1
  283. package/components/searchbar/searchbar.less +14 -28
  284. package/components/sheet/sheet-class.js +15 -110
  285. package/components/sheet/sheet-rtl.css +1 -1
  286. package/components/sheet/sheet-vars.less +17 -6
  287. package/components/sheet/sheet.css +1 -1
  288. package/components/sheet/sheet.js +0 -9
  289. package/components/sheet/sheet.lazy.js +1 -1
  290. package/components/sheet/sheet.less +10 -3
  291. package/components/skeleton/skeleton.less +1 -4
  292. package/components/smart-select/smart-select-class.js +36 -173
  293. package/components/smart-select/smart-select.d.ts +1 -3
  294. package/components/smart-select/smart-select.js +1 -14
  295. package/components/smart-select/smart-select.lazy.js +1 -1
  296. package/components/smart-select/smart-select.less +0 -3
  297. package/components/sortable/sortable-rtl.css +1 -1
  298. package/components/sortable/sortable-vars.less +8 -8
  299. package/components/sortable/sortable.css +1 -1
  300. package/components/sortable/sortable.js +0 -44
  301. package/components/sortable/sortable.less +0 -3
  302. package/components/statusbar/statusbar.js +0 -36
  303. package/components/statusbar/statusbar.less +0 -3
  304. package/components/stepper/stepper-class.js +10 -83
  305. package/components/stepper/stepper-rtl.css +1 -1
  306. package/components/stepper/stepper-vars.less +12 -24
  307. package/components/stepper/stepper.css +1 -1
  308. package/components/stepper/stepper.js +0 -12
  309. package/components/stepper/stepper.less +12 -23
  310. package/components/subnavbar/subnavbar-vars.less +3 -18
  311. package/components/subnavbar/subnavbar.js +0 -3
  312. package/components/subnavbar/subnavbar.less +1 -11
  313. package/components/swipeout/swipeout-rtl.css +1 -1
  314. package/components/swipeout/swipeout-vars.less +7 -6
  315. package/components/swipeout/swipeout.css +1 -1
  316. package/components/swipeout/swipeout.js +2 -99
  317. package/components/swipeout/swipeout.less +2 -7
  318. package/components/swiper/swiper-rtl.css +1 -1
  319. package/components/swiper/swiper.css +1 -1
  320. package/components/swiper/swiper.js +9 -30
  321. package/components/swiper/swiper.lazy.js +1 -1
  322. package/components/swiper/swiper.less +1 -16
  323. package/components/tabs/tabs-rtl.css +1 -1
  324. package/components/tabs/tabs.css +1 -1
  325. package/components/tabs/tabs.js +23 -60
  326. package/components/tabs/tabs.lazy.js +1 -1
  327. package/components/tabs/tabs.less +1 -3
  328. package/components/text-editor/text-editor-class.js +16 -102
  329. package/components/text-editor/text-editor-rtl.css +1 -1
  330. package/components/text-editor/text-editor-vars.less +12 -16
  331. package/components/text-editor/text-editor.css +1 -1
  332. package/components/text-editor/text-editor.js +0 -8
  333. package/components/text-editor/text-editor.lazy.js +1 -1
  334. package/components/text-editor/text-editor.less +0 -6
  335. package/components/timeline/timeline-rtl.css +1 -1
  336. package/components/timeline/timeline-vars.less +13 -47
  337. package/components/timeline/timeline.css +1 -1
  338. package/components/timeline/timeline.less +2 -9
  339. package/components/toast/toast-class.js +2 -16
  340. package/components/toast/toast-rtl.css +1 -1
  341. package/components/toast/toast-vars.less +5 -9
  342. package/components/toast/toast.css +1 -1
  343. package/components/toast/toast.js +0 -3
  344. package/components/toast/toast.less +0 -3
  345. package/components/toggle/toggle-class.js +6 -30
  346. package/components/toggle/toggle-ios.less +5 -1
  347. package/components/toggle/toggle-md.less +27 -11
  348. package/components/toggle/toggle-rtl.css +1 -1
  349. package/components/toggle/toggle-vars.less +19 -21
  350. package/components/toggle/toggle.css +1 -1
  351. package/components/toggle/toggle.js +0 -8
  352. package/components/toggle/toggle.less +0 -4
  353. package/components/toolbar/toolbar-ios.less +2 -2
  354. package/components/toolbar/toolbar-md.less +28 -4
  355. package/components/toolbar/toolbar-vars.less +17 -52
  356. package/components/toolbar/toolbar.js +5 -43
  357. package/components/toolbar/toolbar.less +27 -45
  358. package/components/tooltip/tooltip-class.js +10 -64
  359. package/components/tooltip/tooltip-rtl.css +1 -1
  360. package/components/tooltip/tooltip-vars.less +12 -3
  361. package/components/tooltip/tooltip.css +1 -1
  362. package/components/tooltip/tooltip.js +0 -15
  363. package/components/tooltip/tooltip.less +0 -3
  364. package/components/touch-ripple/touch-ripple-class.js +0 -13
  365. package/components/touch-ripple/touch-ripple.js +0 -4
  366. package/components/touch-ripple/touch-ripple.less +1 -5
  367. package/components/treeview/treeview-rtl.css +1 -1
  368. package/components/treeview/treeview-vars.less +0 -3
  369. package/components/treeview/treeview.css +1 -1
  370. package/components/treeview/treeview.js +2 -11
  371. package/components/treeview/treeview.lazy.js +1 -1
  372. package/components/treeview/treeview.less +0 -3
  373. package/components/typography/typography-rtl.css +1 -1
  374. package/components/typography/typography.css +1 -1
  375. package/components/typography/typography.less +25 -3
  376. package/components/view/resizable-view.js +2 -24
  377. package/components/view/view-class.js +28 -53
  378. package/components/view/view.d.ts +0 -14
  379. package/components/view/view.js +8 -32
  380. package/components/view/view.less +1 -4
  381. package/components/virtual-list/virtual-list-class.js +58 -146
  382. package/components/virtual-list/virtual-list.d.ts +1 -1
  383. package/components/virtual-list/virtual-list.js +0 -2
  384. package/components/virtual-list/virtual-list.lazy.js +1 -1
  385. package/components/virtual-list/virtual-list.less +0 -3
  386. package/framework7-bundle-rtl.css +3593 -5977
  387. package/framework7-bundle-rtl.min.css +3 -3
  388. package/framework7-bundle.css +3591 -5978
  389. package/framework7-bundle.esm.js +4 -10
  390. package/framework7-bundle.js +6063 -12044
  391. package/framework7-bundle.js.map +1 -1
  392. package/framework7-bundle.less +2 -27
  393. package/framework7-bundle.min.css +3 -3
  394. package/framework7-bundle.min.js +3 -3
  395. package/framework7-bundle.min.js.map +1 -1
  396. package/framework7-lite-bundle.esm.js +4 -10
  397. package/framework7-lite.esm.js +4 -6
  398. package/framework7-lite.js +31 -0
  399. package/framework7-rtl.css +803 -1591
  400. package/framework7-rtl.min.css +3 -3
  401. package/framework7-types.d.ts +1 -32
  402. package/framework7.css +803 -1594
  403. package/framework7.d.ts +1 -32
  404. package/framework7.esm.js +4 -6
  405. package/framework7.js +1770 -3407
  406. package/framework7.js.map +1 -1
  407. package/framework7.less +2 -23
  408. package/framework7.min.css +3 -3
  409. package/framework7.min.js +3 -3
  410. package/framework7.min.js.map +1 -1
  411. package/less/mixins.less +7 -88
  412. package/less/plugin.js +15 -0
  413. package/modules/clicks/clicks.js +10 -22
  414. package/modules/component/$h.js +0 -3
  415. package/modules/component/$jsx.js +0 -5
  416. package/modules/component/component-class.js +13 -66
  417. package/modules/component/component.d.ts +1 -2
  418. package/modules/component/component.js +0 -8
  419. package/modules/component/eventslisteners.js +12 -20
  420. package/modules/component/parse-component.js +18 -20
  421. package/modules/component/snabbdom/h.js +3 -12
  422. package/modules/component/snabbdom/helpers/attachto.js +9 -14
  423. package/modules/component/snabbdom/htmldomapi.js +0 -16
  424. package/modules/component/snabbdom/modules/attributes.js +7 -11
  425. package/modules/component/snabbdom/modules/class.js +4 -8
  426. package/modules/component/snabbdom/modules/dataset.js +3 -7
  427. package/modules/component/snabbdom/modules/eventlisteners.js +16 -22
  428. package/modules/component/snabbdom/modules/hero.js +4 -44
  429. package/modules/component/snabbdom/modules/props.js +5 -9
  430. package/modules/component/snabbdom/modules/style.js +13 -30
  431. package/modules/component/snabbdom/snabbdom.bundle.js +0 -6
  432. package/modules/component/snabbdom/snabbdom.js +13 -72
  433. package/modules/component/snabbdom/thunk.js +3 -11
  434. package/modules/component/snabbdom/tovnode.js +1 -6
  435. package/modules/component/vdom.js +4 -62
  436. package/modules/demo-module.js +0 -8
  437. package/modules/device/device.js +6 -11
  438. package/modules/history/history.js +0 -1
  439. package/modules/resize/resize.js +8 -11
  440. package/modules/router/async-component.js +0 -3
  441. package/modules/router/back.js +86 -275
  442. package/modules/router/clear-previous-history.js +5 -18
  443. package/modules/router/component-loader.js +4 -25
  444. package/modules/router/modal.js +16 -43
  445. package/modules/router/navigate.js +80 -249
  446. package/modules/router/process-route-queue.js +0 -12
  447. package/modules/router/redirect.js +0 -8
  448. package/modules/router/router-class.js +92 -315
  449. package/modules/router/router.d.ts +3 -5
  450. package/modules/router/router.js +0 -3
  451. package/modules/router/swipe-back.js +35 -139
  452. package/modules/router/tab.js +14 -43
  453. package/modules/service-worker/service-worker.js +0 -11
  454. package/modules/store/create-store.js +10 -29
  455. package/modules/touch/touch.d.ts +2 -4
  456. package/modules/touch/touch.js +13 -108
  457. package/package.json +4 -18
  458. package/shared/$jsx.js +0 -6
  459. package/shared/class.js +18 -43
  460. package/shared/constructor-methods.js +0 -11
  461. package/shared/events-class.js +0 -17
  462. package/shared/get-device.js +18 -34
  463. package/shared/get-support.js +2 -8
  464. package/shared/history.js +2 -30
  465. package/shared/material-color-utils.js +728 -0
  466. package/shared/material-colors.js +75 -0
  467. package/shared/modal-methods.js +0 -18
  468. package/shared/utils.d.ts +0 -4
  469. package/shared/utils.js +191 -71
  470. package/components/accordion/accordion-aurora.less +0 -2
  471. package/components/actions/actions-aurora.less +0 -9
  472. package/components/app/app-aurora.less +0 -10
  473. package/components/appbar/appbar-aurora.less +0 -2
  474. package/components/appbar/appbar-ios.less +0 -2
  475. package/components/appbar/appbar-md.less +0 -2
  476. package/components/appbar/appbar-rtl.css +0 -1
  477. package/components/appbar/appbar-vars.less +0 -28
  478. package/components/appbar/appbar.css +0 -1
  479. package/components/appbar/appbar.d.ts +0 -14
  480. package/components/appbar/appbar.js +0 -3
  481. package/components/appbar/appbar.lazy.js +0 -1
  482. package/components/appbar/appbar.less +0 -106
  483. package/components/area-chart/area-chart-aurora.less +0 -2
  484. package/components/autocomplete/autocomplete-aurora.less +0 -17
  485. package/components/badge/badge-aurora.less +0 -2
  486. package/components/block/block-aurora.less +0 -2
  487. package/components/breadcrumbs/breadcrumbs-aurora.less +0 -2
  488. package/components/button/button-aurora.less +0 -25
  489. package/components/calendar/calendar-aurora.less +0 -2
  490. package/components/card/card-aurora.less +0 -2
  491. package/components/checkbox/checkbox-aurora.less +0 -39
  492. package/components/chip/chip-aurora.less +0 -14
  493. package/components/color-picker/color-picker-aurora.less +0 -2
  494. package/components/contacts-list/contacts-list-aurora.less +0 -2
  495. package/components/data-table/data-table-aurora.less +0 -64
  496. package/components/dialog/dialog-aurora.less +0 -112
  497. package/components/elevation/elevation-aurora.less +0 -2
  498. package/components/elevation/elevation-ios.less +0 -2
  499. package/components/elevation/elevation-md.less +0 -2
  500. package/components/elevation/elevation-rtl.css +0 -1
  501. package/components/elevation/elevation-vars.less +0 -51
  502. package/components/elevation/elevation.css +0 -1
  503. package/components/elevation/elevation.d.ts +0 -14
  504. package/components/elevation/elevation.js +0 -3
  505. package/components/elevation/elevation.lazy.js +0 -1
  506. package/components/elevation/elevation.less +0 -54
  507. package/components/fab/fab-aurora.less +0 -2
  508. package/components/form/form-aurora.less +0 -0
  509. package/components/gauge/gauge-aurora.less +0 -2
  510. package/components/grid/grid-aurora.less +0 -2
  511. package/components/icon/icon-aurora.less +0 -49
  512. package/components/infinite-scroll/infinite-scroll-aurora.less +0 -6
  513. package/components/input/input-aurora.less +0 -120
  514. package/components/lazy/lazy-aurora.less +0 -2
  515. package/components/lazy/lazy-ios.less +0 -2
  516. package/components/lazy/lazy-md.less +0 -2
  517. package/components/lazy/lazy-rtl.css +0 -1
  518. package/components/lazy/lazy.css +0 -1
  519. package/components/lazy/lazy.d.ts +0 -57
  520. package/components/lazy/lazy.js +0 -283
  521. package/components/lazy/lazy.lazy.js +0 -1
  522. package/components/lazy/lazy.less +0 -23
  523. package/components/link/link-aurora.less +0 -15
  524. package/components/list/list-aurora.less +0 -25
  525. package/components/list-index/list-index-aurora.less +0 -21
  526. package/components/login-screen/login-screen-aurora.less +0 -2
  527. package/components/menu/menu-aurora.less +0 -8
  528. package/components/menu/menu-ios.less +0 -2
  529. package/components/menu/menu-md.less +0 -2
  530. package/components/menu/menu-rtl.css +0 -1
  531. package/components/menu/menu-vars.less +0 -27
  532. package/components/menu/menu.css +0 -1
  533. package/components/menu/menu.d.ts +0 -32
  534. package/components/menu/menu.js +0 -87
  535. package/components/menu/menu.lazy.js +0 -1
  536. package/components/menu/menu.less +0 -232
  537. package/components/messagebar/messagebar-aurora.less +0 -53
  538. package/components/messages/messages-aurora.less +0 -137
  539. package/components/navbar/navbar-aurora.less +0 -70
  540. package/components/notification/notification-aurora.less +0 -59
  541. package/components/page/page-aurora.less +0 -49
  542. package/components/panel/panel-aurora.less +0 -2
  543. package/components/photo-browser/photo-browser-aurora.less +0 -2
  544. package/components/picker/picker-aurora.less +0 -2
  545. package/components/pie-chart/pie-chart-aurora.less +0 -2
  546. package/components/popover/popover-aurora.less +0 -56
  547. package/components/popup/popup-aurora.less +0 -2
  548. package/components/preloader/preloader-aurora.less +0 -53
  549. package/components/progressbar/progressbar-aurora.less +0 -72
  550. package/components/pull-to-refresh/pull-to-refresh-aurora.less +0 -122
  551. package/components/radio/radio-aurora.less +0 -86
  552. package/components/range/range-aurora.less +0 -9
  553. package/components/searchbar/searchbar-aurora.less +0 -86
  554. package/components/sheet/sheet-aurora.less +0 -2
  555. package/components/skeleton/skeleton-aurora.less +0 -2
  556. package/components/smart-select/smart-select-aurora.less +0 -2
  557. package/components/sortable/sortable-aurora.less +0 -7
  558. package/components/statusbar/statusbar-aurora.less +0 -2
  559. package/components/stepper/stepper-aurora.less +0 -32
  560. package/components/subnavbar/subnavbar-aurora.less +0 -51
  561. package/components/swipeout/swipeout-aurora.less +0 -2
  562. package/components/swiper/swiper-aurora.less +0 -2
  563. package/components/tabs/tabs-aurora.less +0 -2
  564. package/components/text-editor/text-editor-aurora.less +0 -9
  565. package/components/timeline/timeline-aurora.less +0 -7
  566. package/components/toast/toast-aurora.less +0 -64
  567. package/components/toggle/toggle-aurora.less +0 -26
  568. package/components/toolbar/toolbar-aurora.less +0 -43
  569. package/components/tooltip/tooltip-aurora.less +0 -2
  570. package/components/touch-ripple/touch-ripple-aurora.less +0 -2
  571. package/components/treeview/treeview-aurora.less +0 -31
  572. package/components/typography/typography-aurora.less +0 -2
  573. package/components/view/view-aurora.less +0 -2
  574. package/components/virtual-list/virtual-list-aurora.less +0 -2
  575. package/modules/request/request.d.ts +0 -15
  576. package/modules/request/request.js +0 -11
  577. package/postinstall.js +0 -3
  578. package/shared/request.d.ts +0 -115
  579. package/shared/request.js +0 -512
@@ -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/$jsx.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/$jsx.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/component/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","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","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","startTime","time","elementsDone","propsDone","began","render","easeProgress","getTime","begin","max","min","element","animateInstance","fireCallBack","e","off","newChild","k","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","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","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","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","urlToParse","param","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","support","deviceCalculated","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","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","installModule","Class","static","install","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","_ref","media","darkMode","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","initialized","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","$jsx","tag","attrsString","childrenContent","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","request","scriptContent","callbackId","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","postDataInstances","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","findRippleElement","rippleElements","rippleParent","rippleTouchMove","rippleTouchEnd","handleMouseUp","isSegmentedStrong","segmentedStrongEl","touchMoveActivableIos","isTouchMoveActivable","touchmoveActivableEl","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","passive","passiveListenerCapture","activeListener","activeListenerCapture","appClick","handleClick","isOverswipe","isSegmented","localPreventClick","stopImmediatePropagation","stopPropagation","preventDefault","handleTouchStart","targetTouches","touches","pageX","pageY","handleTouchMove","distance","shouldRemoveActive","touchCurrentX","touchCurrentY","elementFromPoint","buttonEl","clientX","clientY","handleTouchEnd","handleMouseDown","$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","tokensToFunction","reFlags","flags","encode","_b","validate","token","optional","repeat","segment","typeOfMessage","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","includes","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","swipeBackEnabled","swipeout","masterDetailBreakpoint","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","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","$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","onTabLoaded","tabEventTarget","unloadTabContent","tabRemove","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","initRouterOnTabShow","ClicksModule","clicks","externalLinks","handleClicks","$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","_temp2","_temp3","u","p","Map","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","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","getSlots","slotName","slotNodes","childTreeNode","childSlotName","slot","subTreeNode","attrValue","prevent","eventNamePart","eventNameIndex","fired","getEventHandler","prepatch","getData","vdom","tree","htmlDomApi","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","node","setTextContent","getTextContent","isElement","isText","isUndef","isDef","emptyNode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","oldAttrs","cur","setAttributeNS","attributesModule","updateAttrs","oldProps","propsModule","updateProps","raf","setNextFrame","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","updateStyle","rm","amount","applied","ev","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","childElm","listeners","parent_1","insertedVnodeQueue","hashIdx","dotIdx","dot","createElm","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","createRmCb","patchVnode","oldCh","newCh","oldStartIdx","oldKeyToIdx","idxInOld","elmToMove","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","sameVnode","addVnodes","updateChildren","pre","isVnode","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","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","parseComponent","componentString","componentId","callbackCreateName","template","item","scripts","registerComponent","unregisterComponent","flatChildren","ComponentModule","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","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","handleLargeNavbarCollapse","isLargeTransparent","scrollableDistance","previousCollapseWasInMiddle","isHidden","inSearchbarExpanded","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","clickedData","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","$activeLink","highlightWidth","highlightTranslate","activeIndex","toolbar","initToolbarOnScroll","$toolbarEl","toolbarHidden","f7ScrollToolbarHandler","Toolbar$1","tabbar","Subnavbar","subnavbarEl","TouchRipple","ripple","center","diameter","isInset","insetElements","rippleTransform","distanceFromCenter","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"],"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';\nimport $jsx from '../../shared/$jsx.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.$jsx = $jsx;\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","/* eslint-disable prefer-rest-params */\nconst $jsx = (tag, props, ...args) => {\n const attrs = props || {};\n const children = args || [];\n\n const attrsString = Object.keys(attrs)\n .map((attr) => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n })\n .filter((attr) => !!attr)\n .join(' ');\n\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children\n .filter((c) => !!c)\n .map((c) => (Array.isArray(c) ? c.join('') : c))\n .join('');\n return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\n\nexport default $jsx;\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 const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\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 if (\n view.params.initRouterOnTabShow &&\n view.$el.hasClass('tab') &&\n !view.$el.hasClass('tab-active')\n ) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n\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.js';\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.js';\nexport { thunk } from './thunk.js';\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","import { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst $jsx = (type, props, ...children) => {\n const flatChildren = flattenArray(\n (children || []).filter((child) => ignoreChildren.indexOf(child) < 0),\n );\n if (type === 'Fragment') {\n return flatChildren;\n }\n return {\n type,\n props: props || {},\n children: flatChildren,\n };\n};\n\nexport default $jsx;\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';\nimport $jsx from './$jsx.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\nComponent.$jsx = $jsx;\n\nexport default Component;\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 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 parseComponent,\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 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 initRouterOnTabShow: false,\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"]}
1
+ {"version":3,"file":"framework7.min.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","_len14","arguments","args","_key14","trigger","on","click","focus","focusin","focusout","keyup","keydown","keypress","submit","change","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","touchstart","touchend","touchmove","resize","scroll","dom","j","_len10","els","_key10","toAdd","_len","classes","_key","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","undefined","tempDiv","firstChild","appendChild","parent","append","attrs","getAttribute","attrName","is","closest","parents","eq","dom7ElementDataStorage","dataKey","dataset","attributes","attr","string","toLowerCase","match","group","toUpperCase","remove","apply","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","handleEvent","_len7","_key7","eventName","onceHandler","_len8","eventArgs","_key8","includeMargins","styles","offsetHeight","offsetWidth","prepend","previousElementSibling","prevEls","prev","propName","removeAttribute","_len2","_key2","_len13","_key13","scrollTo","_len11","_key11","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollHeight","scrollWidth","_len12","_key12","nextAll","prevAll","text","_len3","_key3","toggle","transform","transitionDuration","_len9","_key9","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","multiple","values","selectedOptions","options","selected","val","innerWidth","methods","methodName","signum","num","lerp","start","amount","sanitizeDegreesDouble","degrees","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","delinearized","redFromArgb","argb","greenFromArgb","blueFromArgb","lstarFromArgb","t","pow","labF","linearized","xyzFromArgb","yFromLstar","lstar","ft","ft3","labInvf","rgbComponent","normalized","input","round","ViewingConditions","n","aw","nbb","ncb","nc","rgbD","fl","fLRoot","z","static","whitePoint","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","d","exp","k4","k4F","cbrt","sqrt","rgbAFactors","rgbA","DEFAULT","make","Cam16","hue","chroma","q","m","s","jstar","astar","bstar","distance","other","dJ","dA","dB","dEPrime","fromIntInViewingConditions","viewingConditions","redL","greenL","blueL","x","y","rC","gC","bC","rD","gD","bD","rAF","abs","gAF","bAF","rA","gA","bA","b","u","p2","atanDegrees","atan2","hueRadians","ac","huePrime","alpha","mstar","log","sin","h","fromJchInViewingConditions","fromUcsInViewingConditions","toInt","viewed","hRad","eHue","p1","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","linearR","linearG","linearB","argbFromXyz","HctSolver","angle","component","af","scaledDiscount","SCALED_DISCOUNT_FROM_LINRGB","chromaticAdaptation","sanitizeRadians","source","mid","coordinate","axis","intercept","lerpPoint","kR","Y_FROM_LINRGB","kG","kB","coordA","coordB","g","r","isBounded","targetHue","right","leftHue","rightHue","initialized","uncut","nthVertex","midHue","hueOf","areInCyclicOrder","floor","ceil","segment","bisectToSegment","lPlane","rPlane","criticalPlaneBelow","trueDelinearized","criticalPlaneAbove","mPlane","midPlaneCoordinate","CRITICAL_PLANES","setCoordinate","midpoint","adapted","adaptedAbs","base","tInnerCoeff","iterationRound","jNormalized","inverseChromaticAdaptation","LINRGB_FROM_SCALED_DISCOUNT","fnj","hueDegrees","argbFromLstar","exactAnswer","findResultByJ","bisectToLimit","fromInt","solveToInt","Hct","cam","internalHue","internalChroma","internalTone","tone","newHue","setInternalState","newChroma","newTone","Blend","designColor","sourceColor","fromHct","toHct","differenceDegrees$1","rotationDegrees","outputHue","from","to","ucs","cam16Ucs","ucsCam","fromCam","toCam","fromJ","fromA","fromB","fromUcs","TonalPalette","cache","Map","hct","fromHueAndChroma","CorePalette","isContent","a1","a2","a3","n1","n2","error","Scheme","primary","onPrimary","primaryContainer","onPrimaryContainer","secondary","onSecondary","secondaryContainer","onSecondaryContainer","tertiary","onTertiary","tertiaryContainer","onTertiaryContainer","onError","errorContainer","onErrorContainer","background","onBackground","surface","onSurface","surfaceVariant","onSurfaceVariant","outline","outlineVariant","shadow","scrim","inverseSurface","inverseOnSurface","inversePrimary","lightFromCorePalette","of","darkFromCorePalette","contentOf","core","toJSON","hexFromArgb","outParts","toString","part","entries","join","argbFromHex","hex","isThree","isSix","isEight","Error","parseIntHex","slice","repeat","parseInt","themeFromSourceColor","customColors","palette","schemes","light","dark","palettes","neutral","neutralVariant","color","blend","harmonize","tones","onColor","colorContainer","onColorContainer","customColor","toRGBA","l","rgba","String","p","materialColors","hexColor","theme","char","shouldSkip","v","includes","uniqueNum","mask","random","mdPreloaderContent","iosPreloaderContent","eventNameToColonCase","hasColon","deleteProps","object","nextTick","delay","nextFrame","now","parseUrlQuery","url","query","param","urlToParse","paramsPart","decodeURIComponent","serializeObject","resultArray","newParents","varName","parentParts","encodeURIComponent","varValue","toPush","o","merge","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","deep","colorHexToRgb","result","exec","colorRgbToHex","colorRgbToHsl","colorHslToRgb","hp","rgb1","Number","isNaN","getShadeTintColors","rgb","hsl","hslShade","hslTint","shade","tint","colorThemeCSSProperties","shadeTintIos","shadeTintMdLight","shadeTintMdDark","ios","md","bindMethods","instance","subKey","bind","flattenArray","arg","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","HSL","HSB","colors","stringifyObject","colorVars","colorName","restVars","colorValue","rest","whiteColorVars","blackColorVars","lightString","darkString","support","deviceCalculated","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","passiveListener","supportsPassive","opts","intersectionObserver","calcSupport","getDevice","overrides","reset","_temp","platform","ua","device","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","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","Class","install","installModule","ConstructorMethods","parameters","defaultSelector","Constructor","domProp","app","addMethods","$el","destroy","fetchedModules","Framework7","passedParams","w","defaults","version","language","routes","lazyModulesPath","initOnDeviceReady","init","darkMode","iosTranslucentBars","iosTranslucentModals","componentUrl","pink","yellow","orange","purple","deeppurple","lightblue","teal","lime","deeporange","white","black","online","onLine","store","f7","initStore","setColorTheme","setColors","colorsStyleEl","head","utils","colorThemeCSSStyles","mount","rootEl","$rootEl","rtl","DARK","LIGHT","mq","colorSchemeListener","_ref","media","__store","createStore","enableAutoDarkMode","addListener","disableAutoDarkMode","removeListener","setDarkMode","mode","initAppComponent","router","componentLoader","componentOptions","$elComponent","f7Component","addClass","removeClass","loadModule","loadModules","getVnodeHooks","hook","Events","$jsx","tag","attrsString","childrenContent","ModalMethods","open","targetEl","$targetPage","modalEl","$modalEl","f7Modal","close","$parentEl","$targetEl","moduleToLoad","Promise","resolve","reject","modulePath","moduleObj","moduleFunc","matchNamePattern","scriptLoad","resolveScript","rejectScript","fetch","then","scriptContent","callbackLoadName","scriptEl","catch","err","styleLoad","resolveStyle","styleContent","styleEl","all","DeviceModule","metaStatusbar","content","SupportModule","UtilsModule","ResizeModule","getSize","offset","orientationchange","TouchModule","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","touchRippleElements","touchRippleInsetElements","touchEvents","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","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","shouldRemoveActive","type","touchCurrentX","touchCurrentY","buttonEl","elementFromPoint","clientX","clientY","$activableEl","which","isNative","parse","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","RegExp","optional","test","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","strict","_c","_d","endsWith","route","_i","tokens_1","mod","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","groupsRegex","execResult","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","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","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","abort","xhrRequest","pageContent","backward","backwardOptions","masterPageRemoved","initialPreload","currentIsMaster","backIndex","masterRoute","force","$pageToRemove","$navbarToRemove","insertPage","$previousPages","pageToRemove","loadBack","backParams","backOptions","Router","isAppRouter","routerId","scrollHistory","iosDynamicNavbar","initialPages","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","$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","xhr","requestUrl","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","fetchRes","AbortController","signal","responseText","status","ariaHidden","toRemove","getPageData","pageFromEl","$pageEl","pageFrom","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","$pageContent","pageContentEl","f7PageInitialized","browserHistoryStoreHistory","localStorage","JSON","stringify","restoreHistory","clearHistory","updateCurrentUrl","newUrl","getInitialUrl","initialUrl","historyRestored","URL","documentUrl","browserHistoryOnLoad","console","warn","iosSwipeBack","mdSwipeBack","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","async","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","panel","clearPreviousPages","RouterModule","templates","resizableView","resizableInitialized","resizable","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","newV","$pageMasterEl","newWidth","handleResize","View","viewParams","message","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","initMasterDetail","masterDetailResizable","viewEl","initRouterOnTabShow","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","_temp2","_temp3","ignoreChildren","$h","sel","elm","array","primitive","addNS","ns","childData","customComponents","SELF_CLOSING","PROPS_ATTRS","BOOLEAN_PROPS","getTagName","treeNode","toCamelCase","word","propsFromAttrs","isCustomComponent","treeNodeType","getHooks","isRoot","hooks","insert","update","postpatch","isFakeElement","tagName","isCustom","__component__","createCustomComponent","destroyCustomComponent","oldVnode","newProps","updateCustomComponent","class","vn","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","isText","isUndef","isDef","emptyNode","vnode1","vnode2","createKeyToOldIdx","beginIdx","endIdx","ch","oldAttrs","cur","setAttributeNS","attributesModule","updateAttrs","oldProps","propsModule","updateProps","raf","setNextFrame","oldStyle","oldHasDel","removeProperty","delayed","name2","styleModule","updateStyle","rm","applied","ev","invokeHandler","updateEvents","oldOn","oldListener","oldElm","patch","domApi","cbs","api","emptyNodeAt","childElm","listeners","parent_1","insertedVnodeQueue","hashIdx","dotIdx","dot","createElm","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","i_1","createRmCb","patchVnode","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","sameVnode","addVnodes","updateChildren","pre","isVnode","post","Component","generateId","__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","_ref2","detachEvents","_ref3","_ref4","startUpdateQueue","__requestAnimationFrameId","newVNode","__updateIsPending","resolvers","resolver","__destroyed","setState","mountMethod","parseComponent","componentString","componentId","callbackCreateName","template","item","scripts","registerComponent","unregisterComponent","flatChildren","ComponentModule","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","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","iosPageLoadDelay","mdPageLoadDelay","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","Navbar","size","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","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","$bgEl","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","Navbar$1","scrollTopOnTitleClick","mdCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","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"],"sources":["../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../src/core/shared/dom7.js","../../src/core/shared/material-color-utils.js","../../src/core/shared/material-colors.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/$jsx.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/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/$jsx.js","../../src/core/modules/component/component-class.js","../../src/core/modules/component/parse-component.js","../../src/core/modules/component/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"],"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","/* eslint-disable */\nfunction signum(num) {\n return num < 0 ? -1 : 0 === num ? 0 : 1;\n}\n\nfunction lerp(start, stop, amount) {\n return (1 - amount) * start + amount * stop;\n}\n\nfunction clampInt(min, max, input) {\n return input < min ? min : input > max ? max : input;\n}\n\nfunction sanitizeDegreesDouble(degrees) {\n return (degrees %= 360) < 0 && (degrees += 360), degrees;\n}\n\nfunction rotationDirection(from, to) {\n return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;\n}\n\nfunction differenceDegrees(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nfunction matrixMultiply(row, matrix) {\n return [ row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2] ];\n}\n\nconst SRGB_TO_XYZ = [ [ .41233895, .35762064, .18051042 ], [ .2126, .7152, .0722 ], [ .01932141, .11916382, .95034478 ] ], XYZ_TO_SRGB = [ [ 3.2413774792388685, -1.5376652402851851, -.49885366846268053 ], [ -.9691452513005321, 1.8758853451067872, .04156585616912061 ], [ .05562093689691305, -.20395524564742123, 1.0571799111220335 ] ], WHITE_POINT_D65 = [ 95.047, 100, 108.883 ];\n\nfunction argbFromRgb(red, green, blue) {\n return (255 << 24 | (255 & red) << 16 | (255 & green) << 8 | 255 & blue) >>> 0;\n}\n\nfunction argbFromLinrgb(linrgb) {\n return argbFromRgb(delinearized(linrgb[0]), delinearized(linrgb[1]), delinearized(linrgb[2]));\n}\n\nfunction redFromArgb(argb) {\n return argb >> 16 & 255;\n}\n\nfunction greenFromArgb(argb) {\n return argb >> 8 & 255;\n}\n\nfunction blueFromArgb(argb) {\n return 255 & argb;\n}\n\nfunction argbFromXyz(x, y, z) {\n const matrix = XYZ_TO_SRGB, linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z, linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z, linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n return argbFromRgb(delinearized(linearR), delinearized(linearG), delinearized(linearB));\n}\n\nfunction xyzFromArgb(argb) {\n return matrixMultiply([ linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb)) ], SRGB_TO_XYZ);\n}\n\nfunction argbFromLstar(lstar) {\n const component = delinearized(yFromLstar(lstar));\n return argbFromRgb(component, component, component);\n}\n\nfunction lstarFromArgb(argb) {\n return 116 * labF(xyzFromArgb(argb)[1] / 100) - 16;\n}\n\nfunction yFromLstar(lstar) {\n return 100 * labInvf((lstar + 16) / 116);\n}\n\nfunction linearized(rgbComponent) {\n const normalized = rgbComponent / 255;\n return normalized <= .040449936 ? normalized / 12.92 * 100 : 100 * Math.pow((normalized + .055) / 1.055, 2.4);\n}\n\nfunction delinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, \n clampInt(0, 255, Math.round(255 * delinearized));\n}\n\nfunction whitePointD65() {\n return WHITE_POINT_D65;\n}\n\nfunction labF(t) {\n return t > 216 / 24389 ? Math.pow(t, 1 / 3) : (903.2962962962963 * t + 16) / 116;\n}\n\nfunction labInvf(ft) {\n const ft3 = ft * ft * ft;\n return ft3 > 216 / 24389 ? ft3 : (116 * ft - 16) / 903.2962962962963;\n}\n\nclass ViewingConditions {\n constructor(n, aw, nbb, ncb, c, nc, rgbD, fl, fLRoot, z) {\n this.n = n, this.aw = aw, this.nbb = nbb, this.ncb = ncb, this.c = c, this.nc = nc, \n this.rgbD = rgbD, this.fl = fl, this.fLRoot = fLRoot, this.z = z;\n }\n static make(whitePoint = whitePointD65(), adaptingLuminance = 200 / Math.PI * yFromLstar(50) / 100, backgroundLstar = 50, surround = 2, discountingIlluminant = !1) {\n const xyz = whitePoint, rW = .401288 * xyz[0] + .650173 * xyz[1] + -.051461 * xyz[2], gW = -.250268 * xyz[0] + 1.204414 * xyz[1] + .045854 * xyz[2], bW = -.002079 * xyz[0] + .048952 * xyz[1] + .953127 * xyz[2], f = .8 + surround / 10, c = f >= .9 ? lerp(.59, .69, 10 * (f - .9)) : lerp(.525, .59, 10 * (f - .8));\n let d = discountingIlluminant ? 1 : f * (1 - 1 / 3.6 * Math.exp((-adaptingLuminance - 42) / 92));\n d = d > 1 ? 1 : d < 0 ? 0 : d;\n const nc = f, rgbD = [ d * (100 / rW) + 1 - d, d * (100 / gW) + 1 - d, d * (100 / bW) + 1 - d ], k = 1 / (5 * adaptingLuminance + 1), k4 = k * k * k * k, k4F = 1 - k4, fl = k4 * adaptingLuminance + .1 * k4F * k4F * Math.cbrt(5 * adaptingLuminance), n = yFromLstar(backgroundLstar) / whitePoint[1], z = 1.48 + Math.sqrt(n), nbb = .725 / Math.pow(n, .2), ncb = nbb, rgbAFactors = [ Math.pow(fl * rgbD[0] * rW / 100, .42), Math.pow(fl * rgbD[1] * gW / 100, .42), Math.pow(fl * rgbD[2] * bW / 100, .42) ], rgbA = [ 400 * rgbAFactors[0] / (rgbAFactors[0] + 27.13), 400 * rgbAFactors[1] / (rgbAFactors[1] + 27.13), 400 * rgbAFactors[2] / (rgbAFactors[2] + 27.13) ];\n return new ViewingConditions(n, (2 * rgbA[0] + rgbA[1] + .05 * rgbA[2]) * nbb, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, .25), z);\n }\n}\n\nViewingConditions.DEFAULT = ViewingConditions.make();\n\nclass Cam16 {\n constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {\n this.hue = hue, this.chroma = chroma, this.j = j, this.q = q, this.m = m, this.s = s, \n this.jstar = jstar, this.astar = astar, this.bstar = bstar;\n }\n distance(other) {\n const dJ = this.jstar - other.jstar, dA = this.astar - other.astar, dB = this.bstar - other.bstar, dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n return 1.41 * Math.pow(dEPrime, .63);\n }\n static fromInt(argb) {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n static fromIntInViewingConditions(argb, viewingConditions) {\n const green = (65280 & argb) >> 8, blue = 255 & argb, redL = linearized((16711680 & argb) >> 16), greenL = linearized(green), blueL = linearized(blue), x = .41233895 * redL + .35762064 * greenL + .18051042 * blueL, y = .2126 * redL + .7152 * greenL + .0722 * blueL, z = .01932141 * redL + .11916382 * greenL + .95034478 * blueL, rC = .401288 * x + .650173 * y - .051461 * z, gC = -.250268 * x + 1.204414 * y + .045854 * z, bC = -.002079 * x + .048952 * y + .953127 * z, rD = viewingConditions.rgbD[0] * rC, gD = viewingConditions.rgbD[1] * gC, bD = viewingConditions.rgbD[2] * bC, rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100, .42), gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100, .42), bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100, .42), rA = 400 * signum(rD) * rAF / (rAF + 27.13), gA = 400 * signum(gD) * gAF / (gAF + 27.13), bA = 400 * signum(bD) * bAF / (bAF + 27.13), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9, u = (20 * rA + 20 * gA + 21 * bA) / 20, p2 = (40 * rA + 20 * gA + bA) / 20, atanDegrees = 180 * Math.atan2(b, a) / Math.PI, hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees, hueRadians = hue * Math.PI / 180, ac = p2 * viewingConditions.nbb, j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z), q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, huePrime = hue < 20.14 ? hue + 360 : hue, t = 5e4 / 13 * (.25 * (Math.cos(huePrime * Math.PI / 180 + 2) + 3.8)) * viewingConditions.nc * viewingConditions.ncb * Math.sqrt(a * a + b * b) / (u + .305), alpha = Math.pow(t, .9) * Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), c = alpha * Math.sqrt(j / 100), m = c * viewingConditions.fLRoot, s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), jstar = (1 + 100 * .007) * j / (1 + .007 * j), mstar = 1 / .0228 * Math.log(1 + .0228 * m), astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromJch(j, c, h) {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n static fromJchInViewingConditions(j, c, h, viewingConditions) {\n const q = 4 / viewingConditions.c * Math.sqrt(j / 100) * (viewingConditions.aw + 4) * viewingConditions.fLRoot, m = c * viewingConditions.fLRoot, alpha = c / Math.sqrt(j / 100), s = 50 * Math.sqrt(alpha * viewingConditions.c / (viewingConditions.aw + 4)), hueRadians = h * Math.PI / 180, jstar = (1 + 100 * .007) * j / (1 + .007 * j), mstar = 1 / .0228 * Math.log(1 + .0228 * m), astar = mstar * Math.cos(hueRadians), bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n static fromUcs(jstar, astar, bstar) {\n return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n static fromUcsInViewingConditions(jstar, astar, bstar, viewingConditions) {\n const a = astar, b = bstar, m = Math.sqrt(a * a + b * b), c = (Math.exp(.0228 * m) - 1) / .0228 / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180 / Math.PI);\n h < 0 && (h += 360);\n const j = jstar / (1 - .007 * (jstar - 100));\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n toInt() {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n viewed(viewingConditions) {\n const alpha = 0 === this.chroma || 0 === this.j ? 0 : this.chroma / Math.sqrt(this.j / 100), t = Math.pow(alpha / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), 1 / .9), hRad = this.hue * Math.PI / 180, eHue = .25 * (Math.cos(hRad + 2) + 3.8), ac = viewingConditions.aw * Math.pow(this.j / 100, 1 / viewingConditions.c / viewingConditions.z), p1 = eHue * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, p2 = ac / viewingConditions.nbb, hSin = Math.sin(hRad), hCos = Math.cos(hRad), gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400 - Math.abs(rA))), rC = signum(rA) * (100 / viewingConditions.fl) * Math.pow(rCBase, 1 / .42), gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400 - Math.abs(gA))), gC = signum(gA) * (100 / viewingConditions.fl) * Math.pow(gCBase, 1 / .42), bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400 - Math.abs(bA))), bC = signum(bA) * (100 / viewingConditions.fl) * Math.pow(bCBase, 1 / .42), rF = rC / viewingConditions.rgbD[0], gF = gC / viewingConditions.rgbD[1], bF = bC / viewingConditions.rgbD[2];\n return argbFromXyz(1.86206786 * rF - 1.01125463 * gF + .14918677 * bF, .38752654 * rF + .62144744 * gF - .00897398 * bF, -.0158415 * rF - .03412294 * gF + 1.04996444 * bF);\n }\n}\n\nclass HctSolver {\n static sanitizeRadians(angle) {\n return (angle + 8 * Math.PI) % (2 * Math.PI);\n }\n static trueDelinearized(rgbComponent) {\n const normalized = rgbComponent / 100;\n let delinearized = 0;\n return delinearized = normalized <= .0031308 ? 12.92 * normalized : 1.055 * Math.pow(normalized, 1 / 2.4) - .055, \n 255 * delinearized;\n }\n static chromaticAdaptation(component) {\n const af = Math.pow(Math.abs(component), .42);\n return 400 * signum(component) * af / (af + 27.13);\n }\n static hueOf(linrgb) {\n const scaledDiscount = matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB), rA = HctSolver.chromaticAdaptation(scaledDiscount[0]), gA = HctSolver.chromaticAdaptation(scaledDiscount[1]), bA = HctSolver.chromaticAdaptation(scaledDiscount[2]), a = (11 * rA + -12 * gA + bA) / 11, b = (rA + gA - 2 * bA) / 9;\n return Math.atan2(b, a);\n }\n static areInCyclicOrder(a, b, c) {\n return HctSolver.sanitizeRadians(b - a) < HctSolver.sanitizeRadians(c - a);\n }\n static intercept(source, mid, target) {\n return (mid - source) / (target - source);\n }\n static lerpPoint(source, t, target) {\n return [ source[0] + (target[0] - source[0]) * t, source[1] + (target[1] - source[1]) * t, source[2] + (target[2] - source[2]) * t ];\n }\n static setCoordinate(source, coordinate, target, axis) {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n static isBounded(x) {\n return 0 <= x && x <= 100;\n }\n static nthVertex(y, n) {\n const kR = HctSolver.Y_FROM_LINRGB[0], kG = HctSolver.Y_FROM_LINRGB[1], kB = HctSolver.Y_FROM_LINRGB[2], coordA = n % 4 <= 1 ? 0 : 100, coordB = n % 2 == 0 ? 0 : 100;\n if (n < 4) {\n const g = coordA, b = coordB, r = (y - g * kG - b * kB) / kR;\n return HctSolver.isBounded(r) ? [ r, g, b ] : [ -1, -1, -1 ];\n }\n if (n < 8) {\n const b = coordA, r = coordB, g = (y - r * kR - b * kB) / kG;\n return HctSolver.isBounded(g) ? [ r, g, b ] : [ -1, -1, -1 ];\n }\n {\n const r = coordA, g = coordB, b = (y - r * kR - g * kG) / kB;\n return HctSolver.isBounded(b) ? [ r, g, b ] : [ -1, -1, -1 ];\n }\n }\n static bisectToSegment(y, targetHue) {\n let left = [ -1, -1, -1 ], right = left, leftHue = 0, rightHue = 0, initialized = !1, uncut = !0;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) continue;\n const midHue = HctSolver.hueOf(mid);\n initialized ? (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) && (uncut = !1, \n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rightHue = midHue) : (left = mid, \n leftHue = midHue)) : (left = mid, right = mid, leftHue = midHue, rightHue = midHue, \n initialized = !0);\n }\n return [ left, right ];\n }\n static midpoint(a, b) {\n return [ (a[0] + b[0]) / 2, (a[1] + b[1]) / 2, (a[2] + b[2]) / 2 ];\n }\n static criticalPlaneBelow(x) {\n return Math.floor(x - .5);\n }\n static criticalPlaneAbove(x) {\n return Math.ceil(x - .5);\n }\n static bisectToLimit(y, targetHue) {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0], leftHue = HctSolver.hueOf(left), right = segment[1];\n for (let axis = 0; axis < 3; axis++) if (left[axis] !== right[axis]) {\n let lPlane = -1, rPlane = 255;\n left[axis] < right[axis] ? (lPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(left[axis])), \n rPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(right[axis]))) : (lPlane = HctSolver.criticalPlaneAbove(HctSolver.trueDelinearized(left[axis])), \n rPlane = HctSolver.criticalPlaneBelow(HctSolver.trueDelinearized(right[axis])));\n for (let i = 0; i < 8 && !(Math.abs(rPlane - lPlane) <= 1); i++) {\n const mPlane = Math.floor((lPlane + rPlane) / 2), midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane], mid = HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis), midHue = HctSolver.hueOf(mid);\n HctSolver.areInCyclicOrder(leftHue, targetHue, midHue) ? (right = mid, rPlane = mPlane) : (left = mid, \n leftHue = midHue, lPlane = mPlane);\n }\n }\n return HctSolver.midpoint(left, right);\n }\n static inverseChromaticAdaptation(adapted) {\n const adaptedAbs = Math.abs(adapted), base = Math.max(0, 27.13 * adaptedAbs / (400 - adaptedAbs));\n return signum(adapted) * Math.pow(base, 1 / .42);\n }\n static findResultByJ(hueRadians, chroma, y) {\n let j = 11 * Math.sqrt(y);\n const viewingConditions = ViewingConditions.DEFAULT, tInnerCoeff = 1 / Math.pow(1.64 - Math.pow(.29, viewingConditions.n), .73), p1 = .25 * (Math.cos(hueRadians + 2) + 3.8) * (5e4 / 13) * viewingConditions.nc * viewingConditions.ncb, hSin = Math.sin(hueRadians), hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n const jNormalized = j / 100, alpha = 0 === chroma || 0 === j ? 0 : chroma / Math.sqrt(jNormalized), t = Math.pow(alpha * tInnerCoeff, 1 / .9), p2 = viewingConditions.aw * Math.pow(jNormalized, 1 / viewingConditions.c / viewingConditions.z) / viewingConditions.nbb, gamma = 23 * (p2 + .305) * t / (23 * p1 + 11 * t * hCos + 108 * t * hSin), a = gamma * hCos, b = gamma * hSin, rA = (460 * p2 + 451 * a + 288 * b) / 1403, gA = (460 * p2 - 891 * a - 261 * b) / 1403, bA = (460 * p2 - 220 * a - 6300 * b) / 1403, linrgb = matrixMultiply([ HctSolver.inverseChromaticAdaptation(rA), HctSolver.inverseChromaticAdaptation(gA), HctSolver.inverseChromaticAdaptation(bA) ], HctSolver.LINRGB_FROM_SCALED_DISCOUNT);\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) return 0;\n const kR = HctSolver.Y_FROM_LINRGB[0], kG = HctSolver.Y_FROM_LINRGB[1], kB = HctSolver.Y_FROM_LINRGB[2], fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) return 0;\n if (4 === iterationRound || Math.abs(fnj - y) < .002) return linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01 ? 0 : argbFromLinrgb(linrgb);\n j -= (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n static solveToInt(hueDegrees, chroma, lstar) {\n if (chroma < 1e-4 || lstar < 1e-4 || lstar > 99.9999) return argbFromLstar(lstar);\n const hueRadians = (hueDegrees = sanitizeDegreesDouble(hueDegrees)) / 180 * Math.PI, y = yFromLstar(lstar), exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (0 !== exactAnswer) return exactAnswer;\n return argbFromLinrgb(HctSolver.bisectToLimit(y, hueRadians));\n }\n static solveToCam(hueDegrees, chroma, lstar) {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\n\nHctSolver.SCALED_DISCOUNT_FROM_LINRGB = [ [ .001200833568784504, .002389694492170889, .0002795742885861124 ], [ .0005891086651375999, .0029785502573438758, .0003270666104008398 ], [ .00010146692491640572, .0005364214359186694, .0032979401770712076 ] ], \nHctSolver.LINRGB_FROM_SCALED_DISCOUNT = [ [ 1373.2198709594231, -1100.4251190754821, -7.278681089101213 ], [ -271.815969077903, 559.6580465940733, -32.46047482791194 ], [ 1.9622899599665666, -57.173814538844006, 308.7233197812385 ] ], \nHctSolver.Y_FROM_LINRGB = [ .2126, .7152, .0722 ], HctSolver.CRITICAL_PLANES = [ .015176349177441876, .045529047532325624, .07588174588720938, .10623444424209313, .13658714259697685, .16693984095186062, .19729253930674434, .2276452376616281, .2579979360165119, .28835063437139563, .3188300904430532, .350925934958123, .3848314933096426, .42057480301049466, .458183274052838, .4976837250274023, .5391024159806381, .5824650784040898, .6277969426914107, .6751227633498623, .7244668422128921, .775853049866786, .829304845476233, .8848452951698498, .942497089126609, 1.0022825574869039, 1.0642236851973577, 1.1283421258858297, 1.1946592148522128, 1.2631959812511864, 1.3339731595349034, 1.407011200216447, 1.4823302800086415, 1.5599503113873272, 1.6398909516233677, 1.7221716113234105, 1.8068114625156377, 1.8938294463134073, 1.9832442801866852, 2.075074464868551, 2.1693382909216234, 2.2660538449872063, 2.36523901573795, 2.4669114995532007, 2.5710888059345764, 2.6777882626779785, 2.7870270208169257, 2.898822059350997, 3.0131901897720907, 3.1301480604002863, 3.2497121605402226, 3.3718988244681087, 3.4967242352587946, 3.624204428461639, 3.754355295633311, 3.887192587735158, 4.022731918402185, 4.160988767090289, 4.301978482107941, 4.445716283538092, 4.592217266055746, 4.741496401646282, 4.893568542229298, 5.048448422192488, 5.20615066083972, 5.3666897647573375, 5.5300801301023865, 5.696336044816294, 5.865471690767354, 6.037501145825082, 6.212438385869475, 6.390297286737924, 6.571091626112461, 6.7548350853498045, 6.941541251256611, 7.131223617812143, 7.323895587840543, 7.5195704746346665, 7.7182615035334345, 7.919981813454504, 8.124744458384042, 8.332562408825165, 8.543448553206703, 8.757415699253682, 8.974476575321063, 9.194643831691977, 9.417930041841839, 9.644347703669503, 9.873909240696694, 10.106627003236781, 10.342513269534024, 10.58158024687427, 10.8238400726681, 11.069304815507364, 11.317986476196008, 11.569896988756009, 11.825048221409341, 12.083451977536606, 12.345119996613247, 12.610063955123938, 12.878295467455942, 13.149826086772048, 13.42466730586372, 13.702830557985108, 13.984327217668513, 14.269168601521828, 14.55736596900856, 14.848930523210871, 15.143873411576273, 15.44220572664832, 15.743938506781891, 16.04908273684337, 16.35764934889634, 16.66964922287304, 16.985093187232053, 17.30399201960269, 17.62635644741625, 17.95219714852476, 18.281524751807332, 18.614349837764564, 18.95068293910138, 19.290534541298456, 19.633915083172692, 19.98083495742689, 20.331304511189067, 20.685334046541502, 21.042933821039977, 21.404114048223256, 21.76888489811322, 22.137256497705877, 22.50923893145328, 22.884842241736916, 23.264076429332462, 23.6469514538663, 24.033477234264016, 24.42366364919083, 24.817520537484558, 25.21505769858089, 25.61628489293138, 26.021211842414342, 26.429848230738664, 26.842203703840827, 27.258287870275353, 27.678110301598522, 28.10168053274597, 28.529008062403893, 28.96010235337422, 29.39497283293396, 29.83362889318845, 30.276079891419332, 30.722335150426627, 31.172403958865512, 31.62629557157785, 32.08401920991837, 32.54558406207592, 33.010999283389665, 33.4802739966603, 33.953417292456834, 34.430438229418264, 34.911345834551085, 35.39614910352207, 35.88485700094671, 36.37747846067349, 36.87402238606382, 37.37449765026789, 37.87891309649659, 38.38727753828926, 38.89959975977785, 39.41588851594697, 39.93615253289054, 40.460400508064545, 40.98864111053629, 41.520882981230194, 42.05713473317016, 42.597404951718396, 43.141702194811224, 43.6900349931913, 44.24241185063697, 44.798841244188324, 45.35933162437017, 45.92389141541209, 46.49252901546552, 47.065252796817916, 47.64207110610409, 48.22299226451468, 48.808024568002054, 49.3971762874833, 49.9904556690408, 50.587870934119984, 51.189430279724725, 51.79514187861014, 52.40501387947288, 53.0190544071392, 53.637271562750364, 54.259673423945976, 54.88626804504493, 55.517063457223934, 56.15206766869424, 56.79128866487574, 57.43473440856916, 58.08241284012621, 58.734331877617365, 59.39049941699807, 60.05092333227251, 60.715611475655585, 61.38457167773311, 62.057811747619894, 62.7353394731159, 63.417162620860914, 64.10328893648692, 64.79372614476921, 65.48848194977529, 66.18756403501224, 66.89098006357258, 67.59873767827808, 68.31084450182222, 69.02730813691093, 69.74813616640164, 70.47333615344107, 71.20291564160104, 71.93688215501312, 72.67524319850172, 73.41800625771542, 74.16517879925733, 74.9167682708136, 75.67278210128072, 76.43322770089146, 77.1981124613393, 77.96744375590167, 78.74122893956174, 79.51947534912904, 80.30219030335869, 81.08938110306934, 81.88105503125999, 82.67721935322541, 83.4778813166706, 84.28304815182372, 85.09272707154808, 85.90692527145302, 86.72564993000343, 87.54890820862819, 88.3767072518277, 89.2090541872801, 90.04595612594655, 90.88742016217518, 91.73345337380438, 92.58406282226491, 93.43925555268066, 94.29903859396902, 95.16341895893969, 96.03240364439274, 96.9059996312159, 97.78421388448044, 98.6670533535366, 99.55452497210776 ];\n\nclass Hct {\n constructor(argb) {\n this.argb = argb;\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), \n this.argb = argb;\n }\n static from(hue, chroma, tone) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n static fromInt(argb) {\n return new Hct(argb);\n }\n toInt() {\n return this.argb;\n }\n get hue() {\n return this.internalHue;\n }\n set hue(newHue) {\n this.setInternalState(HctSolver.solveToInt(newHue, this.internalChroma, this.internalTone));\n }\n get chroma() {\n return this.internalChroma;\n }\n set chroma(newChroma) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, newChroma, this.internalTone));\n }\n get tone() {\n return this.internalTone;\n }\n set tone(newTone) {\n this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));\n }\n setInternalState(argb) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue, this.internalChroma = cam.chroma, this.internalTone = lstarFromArgb(argb), \n this.argb = argb;\n }\n}\n\nclass Blend {\n static harmonize(designColor, sourceColor) {\n const fromHct = Hct.fromInt(designColor), toHct = Hct.fromInt(sourceColor), differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue), rotationDegrees = Math.min(.5 * differenceDegrees$1, 15), outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));\n return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();\n }\n static hctHue(from, to, amount) {\n const ucs = Blend.cam16Ucs(from, to, amount), ucsCam = Cam16.fromInt(ucs), fromCam = Cam16.fromInt(from);\n return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();\n }\n static cam16Ucs(from, to, amount) {\n const fromCam = Cam16.fromInt(from), toCam = Cam16.fromInt(to), fromJ = fromCam.jstar, fromA = fromCam.astar, fromB = fromCam.bstar, jstar = fromJ + (toCam.jstar - fromJ) * amount, astar = fromA + (toCam.astar - fromA) * amount, bstar = fromB + (toCam.bstar - fromB) * amount;\n return Cam16.fromUcs(jstar, astar, bstar).toInt();\n }\n}\n\nclass TonalPalette {\n constructor(hue, chroma) {\n this.hue = hue, this.chroma = chroma, this.cache = new Map;\n }\n static fromInt(argb) {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHueAndChroma(hct.hue, hct.chroma);\n }\n static fromHueAndChroma(hue, chroma) {\n return new TonalPalette(hue, chroma);\n }\n tone(tone) {\n let argb = this.cache.get(tone);\n return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), \n this.cache.set(tone, argb)), argb;\n }\n}\n\nclass CorePalette {\n constructor(argb, isContent) {\n const hct = Hct.fromInt(argb), hue = hct.hue, chroma = hct.chroma;\n isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), \n this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), \n this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), \n this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), \n this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), \n this.error = TonalPalette.fromHueAndChroma(25, 84);\n }\n static of(argb) {\n return new CorePalette(argb, !1);\n }\n static contentOf(argb) {\n return new CorePalette(argb, !0);\n }\n}\n\nclass Scheme {\n constructor(props) {\n this.props = props;\n }\n get primary() {\n return this.props.primary;\n }\n get onPrimary() {\n return this.props.onPrimary;\n }\n get primaryContainer() {\n return this.props.primaryContainer;\n }\n get onPrimaryContainer() {\n return this.props.onPrimaryContainer;\n }\n get secondary() {\n return this.props.secondary;\n }\n get onSecondary() {\n return this.props.onSecondary;\n }\n get secondaryContainer() {\n return this.props.secondaryContainer;\n }\n get onSecondaryContainer() {\n return this.props.onSecondaryContainer;\n }\n get tertiary() {\n return this.props.tertiary;\n }\n get onTertiary() {\n return this.props.onTertiary;\n }\n get tertiaryContainer() {\n return this.props.tertiaryContainer;\n }\n get onTertiaryContainer() {\n return this.props.onTertiaryContainer;\n }\n get error() {\n return this.props.error;\n }\n get onError() {\n return this.props.onError;\n }\n get errorContainer() {\n return this.props.errorContainer;\n }\n get onErrorContainer() {\n return this.props.onErrorContainer;\n }\n get background() {\n return this.props.background;\n }\n get onBackground() {\n return this.props.onBackground;\n }\n get surface() {\n return this.props.surface;\n }\n get onSurface() {\n return this.props.onSurface;\n }\n get surfaceVariant() {\n return this.props.surfaceVariant;\n }\n get onSurfaceVariant() {\n return this.props.onSurfaceVariant;\n }\n get outline() {\n return this.props.outline;\n }\n get outlineVariant() {\n return this.props.outlineVariant;\n }\n get shadow() {\n return this.props.shadow;\n }\n get scrim() {\n return this.props.scrim;\n }\n get inverseSurface() {\n return this.props.inverseSurface;\n }\n get inverseOnSurface() {\n return this.props.inverseOnSurface;\n }\n get inversePrimary() {\n return this.props.inversePrimary;\n }\n static light(argb) {\n return Scheme.lightFromCorePalette(CorePalette.of(argb));\n }\n static dark(argb) {\n return Scheme.darkFromCorePalette(CorePalette.of(argb));\n }\n static lightContent(argb) {\n return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));\n }\n static darkContent(argb) {\n return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));\n }\n static lightFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(40),\n onPrimary: core.a1.tone(100),\n primaryContainer: core.a1.tone(90),\n onPrimaryContainer: core.a1.tone(10),\n secondary: core.a2.tone(40),\n onSecondary: core.a2.tone(100),\n secondaryContainer: core.a2.tone(90),\n onSecondaryContainer: core.a2.tone(10),\n tertiary: core.a3.tone(40),\n onTertiary: core.a3.tone(100),\n tertiaryContainer: core.a3.tone(90),\n onTertiaryContainer: core.a3.tone(10),\n error: core.error.tone(40),\n onError: core.error.tone(100),\n errorContainer: core.error.tone(90),\n onErrorContainer: core.error.tone(10),\n background: core.n1.tone(99),\n onBackground: core.n1.tone(10),\n surface: core.n1.tone(99),\n onSurface: core.n1.tone(10),\n surfaceVariant: core.n2.tone(90),\n onSurfaceVariant: core.n2.tone(30),\n outline: core.n2.tone(50),\n outlineVariant: core.n2.tone(80),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(20),\n inverseOnSurface: core.n1.tone(95),\n inversePrimary: core.a1.tone(80)\n });\n }\n static darkFromCorePalette(core) {\n return new Scheme({\n primary: core.a1.tone(80),\n onPrimary: core.a1.tone(20),\n primaryContainer: core.a1.tone(30),\n onPrimaryContainer: core.a1.tone(90),\n secondary: core.a2.tone(80),\n onSecondary: core.a2.tone(20),\n secondaryContainer: core.a2.tone(30),\n onSecondaryContainer: core.a2.tone(90),\n tertiary: core.a3.tone(80),\n onTertiary: core.a3.tone(20),\n tertiaryContainer: core.a3.tone(30),\n onTertiaryContainer: core.a3.tone(90),\n error: core.error.tone(80),\n onError: core.error.tone(20),\n errorContainer: core.error.tone(30),\n onErrorContainer: core.error.tone(80),\n background: core.n1.tone(10),\n onBackground: core.n1.tone(90),\n surface: core.n1.tone(10),\n onSurface: core.n1.tone(90),\n surfaceVariant: core.n2.tone(30),\n onSurfaceVariant: core.n2.tone(80),\n outline: core.n2.tone(60),\n outlineVariant: core.n2.tone(30),\n shadow: core.n1.tone(0),\n scrim: core.n1.tone(0),\n inverseSurface: core.n1.tone(90),\n inverseOnSurface: core.n1.tone(20),\n inversePrimary: core.a1.tone(40)\n });\n }\n toJSON() {\n return Object.assign({}, this.props);\n }\n}\n\nconst hexFromArgb = argb => {\n const r = redFromArgb(argb), g = greenFromArgb(argb), b = blueFromArgb(argb), outParts = [ r.toString(16), g.toString(16), b.toString(16) ];\n for (const [i, part] of outParts.entries()) 1 === part.length && (outParts[i] = \"0\" + part);\n return \"#\" + outParts.join(\"\");\n}, argbFromHex = hex => {\n const isThree = 3 === (hex = hex.replace(\"#\", \"\")).length, isSix = 6 === hex.length, isEight = 8 === hex.length;\n if (!isThree && !isSix && !isEight) throw new Error(\"unexpected hex \" + hex);\n let r = 0, g = 0, b = 0;\n return isThree ? (r = parseIntHex(hex.slice(0, 1).repeat(2)), g = parseIntHex(hex.slice(1, 2).repeat(2)), \n b = parseIntHex(hex.slice(2, 3).repeat(2))) : isSix ? (r = parseIntHex(hex.slice(0, 2)), \n g = parseIntHex(hex.slice(2, 4)), b = parseIntHex(hex.slice(4, 6))) : isEight && (r = parseIntHex(hex.slice(2, 4)), \n g = parseIntHex(hex.slice(4, 6)), b = parseIntHex(hex.slice(6, 8))), (255 << 24 | (255 & r) << 16 | (255 & g) << 8 | 255 & b) >>> 0;\n};\n\nfunction parseIntHex(value) {\n return parseInt(value, 16);\n}\n\nfunction themeFromSourceColor(source, customColors = []) {\n const palette = CorePalette.of(source);\n return {\n source: source,\n schemes: {\n light: Scheme.light(source),\n dark: Scheme.dark(source)\n },\n palettes: {\n primary: palette.a1,\n secondary: palette.a2,\n tertiary: palette.a3,\n neutral: palette.n1,\n neutralVariant: palette.n2,\n error: palette.error\n },\n customColors: customColors.map((c => customColor(source, c)))\n };\n}\n\nfunction customColor(source, color) {\n let value = color.value;\n const from = value, to = source;\n color.blend && (value = Blend.harmonize(from, to));\n const tones = CorePalette.of(value).a1;\n return {\n color: color,\n value: value,\n light: {\n color: tones.tone(40),\n onColor: tones.tone(100),\n colorContainer: tones.tone(90),\n onColorContainer: tones.tone(10)\n },\n dark: {\n color: tones.tone(80),\n onColor: tones.tone(20),\n colorContainer: tones.tone(30),\n onColorContainer: tones.tone(90)\n }\n };\n}\n\nexport { argbFromHex, hexFromArgb, themeFromSourceColor };","// eslint-disable-next-line\nimport { argbFromHex, hexFromArgb, themeFromSourceColor } from './material-color-utils.js';\n\n/* eslint-disable */\n// prettier-ignore\nfunction toRGBA(d) {\n const r = Math.round;\n const l = d.length;\n\tconst rgba = {};\n\tif (d.slice(0, 3).toLowerCase() === 'rgb') {\n\t\td = d.replace(' ', '').split(',');\n\t\trgba[0] = parseInt(d[0].slice(d[3].toLowerCase() === 'a' ? 5 : 4), 10);\n\t\trgba[1] = parseInt(d[1], 10);\n\t\trgba[2] = parseInt(d[2], 10);\n\t\trgba[3] = d[3] ? parseFloat(d[3]) : -1;\n\t} else {\n\t\tif (l < 6) d = parseInt(String(d[1]) + d[1] + d[2] + d[2] + d[3] + d[3] + (l > 4 ? String(d[4]) + d[4] : ''), 16);\n\t\telse d = parseInt(d.slice(1), 16);\n\t\trgba[0] = (d >> 16) & 255;\n\t\trgba[1] = (d >> 8) & 255;\n\t\trgba[2] = d & 255;\n\t\trgba[3] = l === 9 || l === 5 ? r((((d >> 24) & 255) / 255) * 10000) / 10000 : -1;\n\t}\n\treturn rgba;\n}\n\n// prettier-ignore\nfunction blend(from, to, p = 0.5) {\n const r = Math.round;\n from = from.trim();\n\tto = to.trim();\n\tconst b = p < 0;\n\tp = b ? p * -1 : p;\n\tconst f = toRGBA(from);\n\tconst t = toRGBA(to);\n\tif (to[0] === 'r') {\n\t\treturn 'rgb' + (to[3] === 'a' ? 'a(' : '(') +\n\t\t\tr(((t[0] - f[0]) * p) + f[0]) + ',' +\n\t\t\tr(((t[1] - f[1]) * p) + f[1]) + ',' +\n\t\t\tr(((t[2] - f[2]) * p) + f[2]) + (\n\t\t\t\tf[3] < 0 && t[3] < 0 ? '' : ',' + (\n\t\t\t\t\tf[3] > -1 && t[3] > -1\n\t\t\t\t\t\t? r((((t[3] - f[3]) * p) + f[3]) * 10000) / 10000\n\t\t\t\t\t\t: t[3] < 0 ? f[3] : t[3]\n\t\t\t\t)\n\t\t\t) + ')';\n\t}\n\n\treturn '#' + (0x100000000 + ((\n\t\tf[3] > -1 && t[3] > -1\n\t\t\t? r((((t[3] - f[3]) * p) + f[3]) * 255)\n\t\t\t: t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255\n\t\t) * 0x1000000) +\n\t\t(r(((t[0] - f[0]) * p) + f[0]) * 0x10000) +\n\t\t(r(((t[1] - f[1]) * p) + f[1]) * 0x100) +\n\t\tr(((t[2] - f[2]) * p) + f[2])\n\t).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n}\n/* eslint-enable */\n\nexport const materialColors = (hexColor = '') => {\n const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));\n [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {\n theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(\n blend(\n hexFromArgb(theme.schemes.light.props.surface),\n hexFromArgb(theme.schemes.light.props.primary),\n amount,\n ),\n );\n theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(\n blend(\n hexFromArgb(theme.schemes.dark.props.surface),\n hexFromArgb(theme.schemes.dark.props.primary),\n amount,\n ),\n );\n });\n\n const name = (n) => {\n return n\n .split('')\n .map((char) =>\n char.toUpperCase() === char && char !== '-' && char !== '7'\n ? `-${char.toLowerCase()}`\n : char,\n )\n .join('');\n };\n\n const shouldSkip = (prop) => {\n const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];\n return skip.filter((v) => prop.toLowerCase().includes(v)).length > 0;\n };\n\n const light = {};\n const dark = {};\n Object.keys(theme.schemes.light.props).forEach((prop) => {\n if (shouldSkip(prop)) return;\n light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);\n });\n Object.keys(theme.schemes.dark.props).forEach((prop) => {\n if (shouldSkip(prop)) return;\n dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);\n });\n\n return { light, dark };\n};\n","import { getWindow } from 'ssr-window';\nimport { materialColors } from './material-colors.js';\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 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}\n\nconst getShadeTintColors = (rgb) => {\n const hsl = colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];\n const hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];\n const shade = colorRgbToHex(...colorHslToRgb(...hslShade));\n const tint = colorRgbToHex(...colorHslToRgb(...hslTint));\n return { shade, tint };\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 { light, dark } = materialColors(hex);\n const shadeTintIos = getShadeTintColors(rgb);\n const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));\n const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));\n Object.keys(light).forEach((key) => {\n if (key.includes('surface-')) {\n light[`${key}-rgb`] = colorHexToRgb(light[key]);\n }\n });\n Object.keys(dark).forEach((key) => {\n if (key.includes('surface-')) {\n dark[`${key}-rgb`] = colorHexToRgb(dark[key]);\n }\n });\n return {\n ios: {\n '--f7-theme-color': 'var(--f7-ios-primary)',\n '--f7-theme-color-rgb': 'var(--f7-ios-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-ios-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-ios-primary-tint)',\n },\n md: {\n '--f7-theme-color': 'var(--f7-md-primary)',\n '--f7-theme-color-rgb': 'var(--f7-md-primary-rgb)',\n '--f7-theme-color-shade': 'var(--f7-md-primary-shade)',\n '--f7-theme-color-tint': 'var(--f7-md-primary-tint)',\n },\n light: {\n '--f7-ios-primary': hex,\n '--f7-ios-primary-shade': shadeTintIos.shade,\n '--f7-ios-primary-tint': shadeTintIos.tint,\n '--f7-ios-primary-rgb': rgb.join(', '),\n '--f7-md-primary-shade': shadeTintMdLight.shade,\n '--f7-md-primary-tint': shadeTintMdLight.tint,\n '--f7-md-primary-rgb': colorHexToRgb(light['--f7-md-primary']).join(', '),\n ...light,\n },\n dark: {\n '--f7-md-primary-shade': shadeTintMdDark.shade,\n '--f7-md-primary-tint': shadeTintMdDark.tint,\n '--f7-md-primary-rgb': colorHexToRgb(dark['--f7-md-primary']).join(', '),\n ...dark,\n },\n };\n}\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\nexport function colorThemeCSSStyles(colors = {}) {\n const stringifyObject = (obj) => {\n let res = '';\n Object.keys(obj).forEach((key) => {\n res += `${key}:${obj[key]};`;\n });\n return res;\n };\n const colorVars = colorThemeCSSProperties(colors.primary);\n\n const primary = [\n `:root{`,\n stringifyObject(colorVars.light),\n `--swiper-theme-color:var(--f7-theme-color);`,\n ...Object.keys(colors).map((colorName) => `--f7-color-${colorName}: ${colors[colorName]};`),\n `}`,\n `.dark{`,\n stringifyObject(colorVars.dark),\n `}`,\n `.ios{`,\n stringifyObject(colorVars.ios),\n '}',\n `.md{`,\n stringifyObject(colorVars.md),\n '}',\n ].join('');\n\n const restVars = {};\n\n Object.keys(colors).forEach((colorName) => {\n const colorValue = colors[colorName];\n restVars[colorName] = colorThemeCSSProperties(colorValue);\n });\n\n // rest\n let rest = '';\n\n Object.keys(colors).forEach((colorName) => {\n const { light, dark, ios, md } = restVars[colorName];\n const whiteColorVars = `\n --f7-ios-primary: #ffffff;\n --f7-ios-primary-shade: #ebebeb;\n --f7-ios-primary-tint: #ffffff;\n --f7-ios-primary-rgb: 255, 255, 255;\n --f7-md-primary-shade: #eee;\n --f7-md-primary-tint: #fff;\n --f7-md-primary-rgb: 255, 255, 255;\n --f7-md-primary: #fff;\n --f7-md-on-primary: #000;\n --f7-md-primary-container: #fff;\n --f7-md-on-primary-container: #000;\n --f7-md-secondary: #fff;\n --f7-md-on-secondary: #000;\n --f7-md-secondary-container: #555;\n --f7-md-on-secondary-container: #fff;\n --f7-md-surface: #fff;\n --f7-md-on-surface: #000;\n --f7-md-surface-variant: #333;\n --f7-md-on-surface-variant: #fff;\n --f7-md-outline: #fff;\n --f7-md-outline-variant: #fff;\n --f7-md-inverse-surface: #000;\n --f7-md-inverse-on-surface: #fff;\n --f7-md-inverse-primary: #000;\n --f7-md-surface-1: #f8f8f8;\n --f7-md-surface-2: #f1f1f1;\n --f7-md-surface-3: #e7e7e7;\n --f7-md-surface-4: #e1e1e1;\n --f7-md-surface-5: #d7d7d7;\n --f7-md-surface-variant-rgb: 51, 51, 51;\n --f7-md-on-surface-variant-rgb: 255, 255, 255;\n --f7-md-surface-1-rgb: 248, 248, 248;\n --f7-md-surface-2-rgb: 241, 241, 241;\n --f7-md-surface-3-rgb: 231, 231, 231;\n --f7-md-surface-4-rgb: 225, 225, 225;\n --f7-md-surface-5-rgb: 215, 215, 215;\n `;\n const blackColorVars = `\n --f7-ios-primary: #000;\n --f7-ios-primary-shade: #000;\n --f7-ios-primary-tint: #232323;\n --f7-ios-primary-rgb: 0, 0, 0;\n --f7-md-primary-shade: #000;\n --f7-md-primary-tint: #232323;\n --f7-md-primary-rgb: 0, 0, 0;\n --f7-md-primary: #000;\n --f7-md-on-primary: #fff;\n --f7-md-primary-container: #000;\n --f7-md-on-primary-container: #fff;\n --f7-md-secondary: #000;\n --f7-md-on-secondary: #fff;\n --f7-md-secondary-container: #aaa;\n --f7-md-on-secondary-container: #000;\n --f7-md-surface: #000;\n --f7-md-on-surface: #fff;\n --f7-md-surface-variant: #ccc;\n --f7-md-on-surface-variant: #000;\n --f7-md-outline: #000;\n --f7-md-outline-variant: #000;\n --f7-md-inverse-surface: #fff;\n --f7-md-inverse-on-surface: #000;\n --f7-md-inverse-primary: #fff;\n --f7-md-surface-1: #070707;\n --f7-md-surface-2: #161616;\n --f7-md-surface-3: #232323;\n --f7-md-surface-4: #303030;\n --f7-md-surface-5: #373737;\n --f7-md-surface-variant-rgb: 204, 204, 204;\n --f7-md-on-surface-variant-rgb: 0, 0, 0;\n --f7-md-surface-1-rgb: 7, 7, 7;\n --f7-md-surface-2-rgb: 22, 22, 22;\n --f7-md-surface-3-rgb: 35, 35, 35;\n --f7-md-surface-4-rgb: 48, 48, 48;\n --f7-md-surface-5-rgb: 55, 55, 55;\n `;\n /* eslint-disable */\n const lightString =\n colorName === 'white'\n ? whiteColorVars\n : colorName === 'black'\n ? blackColorVars\n : stringifyObject(light);\n const darkString =\n colorName === 'white'\n ? whiteColorVars\n : colorName === 'black'\n ? blackColorVars\n : stringifyObject(dark);\n /* eslint-enable */\n rest += [\n `.color-${colorName} {`,\n lightString,\n `--swiper-theme-color: var(--f7-theme-color);`,\n `}`,\n `.color-${colorName}.dark, .color-${colorName} .dark, .dark .color-${colorName} {`,\n darkString,\n `--swiper-theme-color: var(--f7-theme-color);`,\n `}`,\n `.ios .color-${colorName}, .ios.color-${colorName} {`,\n stringifyObject(ios),\n `}`,\n `.md .color-${colorName}, .md.color-${colorName} {`,\n stringifyObject(md),\n `}`,\n\n // text color\n `.text-color-${colorName} {`,\n `--f7-theme-color-text-color: ${colors[colorName]};`,\n `}`,\n\n // bg color\n `.bg-color-${colorName} {`,\n `--f7-theme-color-bg-color: ${colors[colorName]};`,\n `}`,\n\n // border color\n `.border-color-${colorName} {`,\n `--f7-theme-color-border-color: ${colors[colorName]};`,\n `}`,\n\n // ripple color\n `.ripple-color-${colorName} {`,\n `--f7-theme-color-ripple-color: rgba(${light['--f7-ios-primary-rgb']}, 0.3);`,\n `}`,\n ].join('');\n });\n\n return `${primary}${rest}`;\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 fetch(modulePath)\n .then((res) => res.text())\n .then((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 .catch((err) => {\n rejectScript(err);\n });\n });\n const styleLoad = new Promise((resolveStyle) => {\n fetch(\n modulePath\n .replace('.lazy.js', app.rtl ? '.rtl.css' : '.css')\n .replace('.js', app.rtl ? '.rtl.css' : '.css'),\n )\n .then((res) => res.text())\n .then((styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n })\n .catch(() => {\n resolveStyle();\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';\nimport $jsx from '../../shared/$jsx.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 darkMode: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n userAgent: null,\n url: null,\n colors: {\n primary: '#007aff',\n red: '#ff3b30',\n green: '#4cd964',\n blue: '#2196f3',\n pink: '#ff2d55',\n yellow: '#ffcc00',\n orange: '#ff9500',\n purple: '#9c27b0',\n deeppurple: '#673ab7',\n lightblue: '#5ac8fa',\n teal: '#009688',\n lime: '#cddc39',\n deeporange: '#ff6b22',\n white: '#ffffff',\n black: '#000000',\n },\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = extend(defaults, params);\n\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 return 'md';\n }\n return app.params.theme;\n })(),\n\n // Initially passed parameters\n passedParams,\n online: w.navigator.onLine,\n colors: app.params.colors,\n darkMode: app.params.darkMode,\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 setColorTheme(color) {\n if (!color) return;\n const app = this;\n app.colors.primary = color;\n app.setColors();\n }\n\n setColors() {\n const app = this;\n const document = getDocument();\n if (!app.colorsStyleEl) {\n app.colorsStyleEl = document.createElement('style');\n document.head.appendChild(app.colorsStyleEl);\n }\n\n app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);\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 setDarkMode(mode) {\n const app = this;\n if (mode === 'auto') {\n app.enableAutoDarkMode();\n } else {\n app.disableAutoDarkMode();\n $('html')[mode ? 'addClass' : 'removeClass']('dark');\n app.darkMode = mode;\n }\n }\n\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.setColors();\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 app.setDarkMode(app.params.darkMode);\n\n // Watch for online/offline state\n const window = getWindow();\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.$el.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md').addClass(app.theme);\n\n // iOS Translucent\n 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.$jsx = $jsx;\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","/* eslint-disable prefer-rest-params */\nconst $jsx = (tag, props, ...args) => {\n const attrs = props || {};\n const children = args || [];\n\n const attrsString = Object.keys(attrs)\n .map((attr) => {\n if (attr[0] === '_') {\n if (attrs[attr]) return attr.replace('_', '');\n return '';\n }\n return `${attr}=\"${attrs[attr]}\"`;\n })\n .filter((attr) => !!attr)\n .join(' ');\n\n if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {\n return `<${tag} ${attrsString} />`.trim();\n }\n const childrenContent = children\n .filter((c) => !!c)\n .map((c) => (Array.isArray(c) ? c.join('') : c))\n .join('');\n return `<${tag} ${attrsString}>${childrenContent}</${tag}>`.trim();\n};\n\nexport default $jsx;\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 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 touchRippleElements:\n '.ripple, .link, .item-link, .list label.item-content, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .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 const document = getDocument();\n /* eslint-disable no-param-reassign */\n if (url.substr(-3) === '#!/') {\n url = url.replace('#!/', '');\n if (url === '') {\n url = document.location.href;\n if (url.includes('#!/')) {\n url = document.location.href.split('#!/')[0];\n }\n }\n }\n /* eslint-enable no-param-reassign */\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n const window = getWindow();\n if (url.substr(-3) === '#!/') {\n // eslint-disable-next-line\n url = url.replace('#!/', '');\n }\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = extend({}, History.previousState || {}, {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n const window = getWindow();\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n const window = getWindow();\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: {},\n blockPopstate: true,\n init(app) {\n const window = getWindow();\n const document = getDocument();\n History.state = window.history.state;\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\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');\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');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous');\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\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 $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.children('.page').filter((pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar')\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 .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 $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\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 $oldPage = $viewEl\n .children('.page')\n .filter((pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar')\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 // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n } else if (options.reloadAll) {\n $oldPage.each((pageEl, index) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback(\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 } else if (options.reloadPrevious) {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(\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 (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\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')\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 .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 .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 ($oldPage.prev('.page-previous').length >= 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n const $pageToRemove = $oldPage.prev('.page-previous');\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove.length > 0) {\n router.pageCallback(\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 // 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(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(device.ie || device.edge || (device.firefox && !device.ios))) {\n if (router.params.browserHistory && options.browserHistory) {\n if (options.replaceState) {\n const browserHistoryRoot = router.params.browserHistoryRoot || '';\n History.replace(\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\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 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\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 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 // eslint-disable-next-line\n (direction === 'forward' ? $newPageEl : ios ? $oldPageEl : $newPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n nextFrame(() => {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n if (toDifferent) {\n // eslint-disable-next-line\n router.el._clientLeft = router.el.clientLeft;\n }\n animateNavbars(1);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n\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) {\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 const selector = stringSelector;\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 found = router.findElement(selector, $container);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n\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 = new AbortController();\n let fetchRes;\n fetch(url, { signal: router.xhrAbortController.signal, method: 'GET' })\n .then((res) => {\n fetchRes = res;\n return res.text();\n })\n .then((responseText) => {\n const { status } = fetchRes;\n router.emit('routerAjaxComplete', fetchRes);\n if (\n (status !== 'error' && status !== 'timeout' && status >= 200 && status < 300) ||\n status === 0\n ) {\n if (params.xhrCache && responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: now(),\n content: responseText,\n });\n }\n router.emit('routerAjaxSuccess', fetchRes, options);\n resolve(responseText);\n } else {\n router.emit('routerAjaxError', fetchRes, options);\n reject(fetchRes);\n }\n })\n .catch((err) => {\n reject(err);\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, .if-md, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .if-ios, .if-not-md, .not-md';\n }\n $(el).find(toRemove).remove();\n }\n\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 ) {\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.$el.children('.page').length === 0 && initialUrl && router.params.loadInitialPage) {\n // No pages presented in DOM, reload new page\n router.navigate(initialUrl, {\n initial: true,\n reloadCurrent: true,\n browserHistory: false,\n animate: false,\n once: {\n modalOpen() {\n if (!historyRestored) return;\n const preloadPreviousPage =\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').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page').each((pageEl) => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (\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 // 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\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 if (\n view.params.initRouterOnTabShow &&\n view.$el.hasClass('tab') &&\n !view.$el.hasClass('tab-active')\n ) {\n view.$el.once('tab:show', () => {\n view.router.init();\n });\n } else {\n view.router.init();\n }\n\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.js';\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.js';\nexport { thunk } from './thunk.js';\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","import { flattenArray } from '../../shared/utils.js';\n\nconst ignoreChildren = [false, null, '', undefined];\n\nconst $jsx = (type, props, ...children) => {\n const flatChildren = flattenArray(\n (children || []).filter((child) => ignoreChildren.indexOf(child) < 0),\n );\n if (type === 'Fragment') {\n return flatChildren;\n }\n return {\n type,\n props: props || {},\n children: flatChildren,\n };\n};\n\nexport default $jsx;\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';\nimport $jsx from './$jsx.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 },\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\nComponent.$jsx = $jsx;\n\nexport default Component;\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 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 parseComponent,\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 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 initRouterOnTabShow: false,\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n // Push State\n browserHistory: false,\n browserHistoryRoot: undefined,\n browserHistoryAnimate: true,\n browserHistoryAnimateOnLoad: false,\n browserHistorySeparator: '#!',\n browserHistoryOnLoad: true,\n browserHistoryInitialMatch: false,\n browserHistoryStoreHistory: true,\n browserHistoryTabs: 'replace',\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n extend(app, {\n views: extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\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.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 = 88;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else {\n // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 88;\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 const $bgEl = $navbarEl.find('.navbar-bg');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\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 $navbarEl.find('.title-large-text').css('opacity', '');\n if (isLargeTransparent) {\n $bgEl.css('opacity', '');\n }\n $bgEl.css('transform', '');\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', -0.5 + collapseProgress * 1.5);\n $navbarEl\n .find('.title-large-text, .subnavbar')\n .css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\n );\n $navbarEl.find('.title-large-text').css('opacity', 1 - collapseProgress * 2);\n\n if (isLargeTransparent) {\n $bgEl.css('opacity', collapseProgress);\n }\n $bgEl.css(\n 'transform',\n `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`,\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 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)').each((navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl)\n .find('.navbar:not(.navbar-previous)')\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').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\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-icons'))\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-icons');\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-icons');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-icons').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\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-icons').each((tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\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, force) {\n const modal = this;\n const document = getDocument();\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\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 if (!force) 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 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 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"],"mappings":"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"}