@ionic/core 8.7.17-dev.11772118942.181221d4 → 8.7.17-dev.11772568074.1d7a4aea

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 (520) hide show
  1. package/components/action-sheet.js +1 -561
  2. package/components/alert.js +1 -610
  3. package/components/animation.js +1 -817
  4. package/components/backdrop.js +1 -72
  5. package/components/button-active.js +1 -64
  6. package/components/button.js +1 -303
  7. package/components/buttons.js +1 -56
  8. package/components/capacitor.js +1 -10
  9. package/components/checkbox.js +1 -261
  10. package/components/config.js +1 -192
  11. package/components/content.js +1 -475
  12. package/components/cubic-bezier.js +1 -87
  13. package/components/data.js +1 -1635
  14. package/components/dir.js +1 -15
  15. package/components/focus-visible.js +1 -72
  16. package/components/framework-delegate.js +1 -137
  17. package/components/gesture-controller.js +1 -192
  18. package/components/haptic.js +1 -155
  19. package/components/hardware-back-button.js +1 -112
  20. package/components/header.js +1 -417
  21. package/components/helpers.js +1 -336
  22. package/components/icon.js +1 -456
  23. package/components/index.d.ts +2 -0
  24. package/components/index.js +1 -115
  25. package/components/index2.js +1 -416
  26. package/components/index3.js +1 -452
  27. package/components/index4.js +1 -118
  28. package/components/index5.js +1 -303
  29. package/components/index6.js +1 -29
  30. package/components/index7.js +1 -164
  31. package/components/index8.js +1 -125
  32. package/components/index9.js +1 -4
  33. package/components/input-shims.js +1 -624
  34. package/components/input.utils.js +1 -144
  35. package/components/ion-accordion-group.js +1 -269
  36. package/components/ion-accordion.js +1 -457
  37. package/components/ion-action-sheet.js +1 -6
  38. package/components/ion-alert.js +1 -6
  39. package/components/ion-app.js +1 -128
  40. package/components/ion-avatar.js +1 -41
  41. package/components/ion-back-button.js +1 -131
  42. package/components/ion-backdrop.js +1 -6
  43. package/components/ion-badge.js +1 -47
  44. package/components/ion-breadcrumb.js +1 -137
  45. package/components/ion-breadcrumbs.js +1 -164
  46. package/components/ion-button.js +1 -6
  47. package/components/ion-buttons.js +1 -6
  48. package/components/ion-card-content.js +1 -45
  49. package/components/ion-card-header.js +1 -56
  50. package/components/ion-card-subtitle.js +1 -48
  51. package/components/ion-card-title.js +1 -48
  52. package/components/ion-card.js +1 -107
  53. package/components/ion-checkbox.js +1 -6
  54. package/components/ion-chip.js +1 -66
  55. package/components/ion-col.js +1 -163
  56. package/components/ion-content.js +1 -6
  57. package/components/ion-datetime-button.js +1 -384
  58. package/components/ion-datetime.js +1 -2046
  59. package/components/ion-fab-button.js +1 -151
  60. package/components/ion-fab-list.js +1 -66
  61. package/components/ion-fab.js +1 -101
  62. package/components/ion-footer.js +1 -159
  63. package/components/ion-grid.js +1 -46
  64. package/components/ion-header.js +1 -6
  65. package/components/ion-icon.js +1 -6
  66. package/components/ion-img.js +1 -124
  67. package/components/ion-infinite-scroll-content.js +1 -70
  68. package/components/ion-infinite-scroll.js +1 -236
  69. package/components/ion-input-otp.js +1 -683
  70. package/components/ion-input-password-toggle.js +1 -129
  71. package/components/ion-input.js +1 -617
  72. package/components/ion-item-divider.js +1 -59
  73. package/components/ion-item-group.js +1 -46
  74. package/components/ion-item-option.js +1 -91
  75. package/components/ion-item-options.js +1 -73
  76. package/components/ion-item-sliding.js +1 -458
  77. package/components/ion-item.js +1 -6
  78. package/components/ion-label.js +1 -6
  79. package/components/ion-list-header.js +1 -6
  80. package/components/ion-list.js +1 -6
  81. package/components/ion-loading.js +1 -344
  82. package/components/ion-menu-button.js +1 -110
  83. package/components/ion-menu-toggle.js +1 -64
  84. package/components/ion-menu.js +1 -745
  85. package/components/ion-modal.js +1 -6
  86. package/components/ion-nav-link.js +1 -64
  87. package/components/ion-nav.js +1 -956
  88. package/components/ion-note.js +1 -47
  89. package/components/ion-picker-column-option.js +1 -6
  90. package/components/ion-picker-column.js +1 -6
  91. package/components/ion-picker-legacy-column.js +1 -6
  92. package/components/ion-picker-legacy.js +1 -343
  93. package/components/ion-picker.js +1 -6
  94. package/components/ion-popover.js +1 -6
  95. package/components/ion-progress-bar.js +1 -101
  96. package/components/ion-radio-group.js +1 -6
  97. package/components/ion-radio.js +1 -6
  98. package/components/ion-range.js +1 -853
  99. package/components/ion-refresher-content.js +1 -89
  100. package/components/ion-refresher.js +1 -751
  101. package/components/ion-reorder-group.js +1 -322
  102. package/components/ion-reorder.js +1 -60
  103. package/components/ion-ripple-effect.js +1 -6
  104. package/components/ion-route-redirect.js +1 -45
  105. package/components/ion-route.js +1 -74
  106. package/components/ion-router-link.js +1 -61
  107. package/components/ion-router-outlet.js +1 -227
  108. package/components/ion-router.js +1 -841
  109. package/components/ion-row.js +1 -36
  110. package/components/ion-searchbar.js +1 -530
  111. package/components/ion-segment-button.js +1 -174
  112. package/components/ion-segment-content.js +1 -35
  113. package/components/ion-segment-view.js +1 -148
  114. package/components/ion-segment.js +1 -602
  115. package/components/ion-select-modal.js +1 -6
  116. package/components/ion-select-option.js +1 -46
  117. package/components/ion-select-popover.js +1 -6
  118. package/components/ion-select.js +1 -1037
  119. package/components/ion-skeleton-text.js +1 -65
  120. package/components/ion-spinner.js +1 -6
  121. package/components/ion-split-pane.js +1 -197
  122. package/components/ion-tab-bar.js +1 -115
  123. package/components/ion-tab-button.js +1 -128
  124. package/components/ion-tab.js +1 -91
  125. package/components/ion-tabs.js +1 -205
  126. package/components/ion-text.js +1 -42
  127. package/components/ion-textarea.js +1 -554
  128. package/components/ion-thumbnail.js +1 -36
  129. package/components/ion-title.js +1 -6
  130. package/components/ion-toast.js +1 -941
  131. package/components/ion-toggle.js +1 -361
  132. package/components/ion-toolbar.js +1 -6
  133. package/components/ionic-global.js +1 -144
  134. package/components/ios.transition.js +1 -672
  135. package/components/item.js +1 -302
  136. package/components/keyboard-controller.js +1 -162
  137. package/components/keyboard.js +1 -141
  138. package/components/keyboard2.js +1 -76
  139. package/components/label.js +1 -100
  140. package/components/list-header.js +1 -47
  141. package/components/list.js +1 -68
  142. package/components/lock-controller.js +1 -35
  143. package/components/md.transition.js +1 -51
  144. package/components/menu-toggle-util.js +1 -9
  145. package/components/modal.js +1 -2674
  146. package/components/notch-controller.js +1 -150
  147. package/components/overlays.js +1 -912
  148. package/components/picker-column-option.js +1 -136
  149. package/components/picker-column.js +1 -595
  150. package/components/picker-column2.js +1 -377
  151. package/components/picker.js +1 -498
  152. package/components/popover.js +1 -1502
  153. package/components/radio-group.js +1 -287
  154. package/components/radio.js +1 -229
  155. package/components/refresher.utils.js +1 -193
  156. package/components/ripple-effect.js +1 -109
  157. package/components/select-modal.js +1 -196
  158. package/components/select-popover.js +1 -189
  159. package/components/spinner.js +1 -224
  160. package/components/status-tap.js +1 -36
  161. package/components/swipe-back.js +1 -75
  162. package/components/theme.js +1 -40
  163. package/components/title.js +1 -70
  164. package/components/toolbar.js +1 -89
  165. package/components/validity.js +1 -14
  166. package/components/watch-options.js +1 -44
  167. package/dist/cjs/{animation-Bt3H9L1C.js → animation-Dg4yiuR2.js} +1 -1
  168. package/dist/cjs/app-globals-CLI8xCmk.js +11 -0
  169. package/dist/cjs/{button-active-CMc8cD90.js → button-active-FscMI17-.js} +1 -1
  170. package/dist/cjs/{config-C5fsO43a.js → config-BukYi_pW.js} +1 -1
  171. package/dist/cjs/{data-JwZKaIQB.js → data-BYlBjkMU.js} +1 -1
  172. package/dist/cjs/{framework-delegate-DMJRBuDi.js → framework-delegate-CRgp8o_p.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-VCK4V3mG.js → hardware-back-button-C4rMJ5uI.js} +1 -1
  174. package/dist/cjs/{helpers-DrTqNghc.js → helpers-CxTYJdbT.js} +1 -1
  175. package/dist/cjs/{index-094mMFB-.js → index-C845Ti6K.js} +4 -4
  176. package/dist/cjs/{index-DrMUZJj6.js → index-CFUwM5x_.js} +5 -5
  177. package/dist/cjs/{index-D6Wc6v08.js → index-CqT-2gKy.js} +503 -382
  178. package/dist/cjs/{index-CO6eryBo.js → index-MbaBbWXk.js} +2 -2
  179. package/dist/cjs/{index-C534ULug.js → index-YcSftOMz.js} +2 -2
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-CW0KUFTQ.js → input-shims-DlFhYYTs.js} +3 -3
  182. package/dist/cjs/{input.utils-B_QROI2g.js → input.utils-DmeJ8dmo.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +23 -15
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -15
  185. package/dist/cjs/ion-alert.cjs.entry.js +25 -17
  186. package/dist/cjs/ion-app_8.cjs.entry.js +44 -40
  187. package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
  188. package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
  189. package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
  190. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -14
  191. package/dist/cjs/ion-button_2.cjs.entry.js +36 -18
  192. package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
  193. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
  194. package/dist/cjs/ion-chip.cjs.entry.js +6 -6
  195. package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
  196. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
  197. package/dist/cjs/ion-datetime_3.cjs.entry.js +67 -39
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
  199. package/dist/cjs/ion-img.cjs.entry.js +8 -6
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -13
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +16 -10
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -7
  203. package/dist/cjs/ion-input.cjs.entry.js +21 -13
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +17 -15
  205. package/dist/cjs/ion-item_8.cjs.entry.js +42 -36
  206. package/dist/cjs/ion-loading.cjs.entry.js +18 -14
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +30 -22
  208. package/dist/cjs/ion-modal.cjs.entry.js +55 -40
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -8
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +11 -7
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +21 -15
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +17 -13
  216. package/dist/cjs/ion-range.cjs.entry.js +29 -15
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -14
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -11
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +20 -10
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +22 -12
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -5
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +12 -12
  226. package/dist/cjs/ion-select_3.cjs.entry.js +29 -21
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +15 -9
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +14 -12
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +18 -12
  233. package/dist/cjs/ion-toast.cjs.entry.js +21 -15
  234. package/dist/cjs/ion-toggle.cjs.entry.js +10 -8
  235. package/dist/cjs/{ionic-global-HMVqOFGO.js → ionic-global-Bc3kJi1Z.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-BOt_uW73.js → ios.transition-trBiC95R.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-Dt968VXB.js → md.transition-CUQECuvD.js} +4 -4
  240. package/dist/cjs/{notch-controller-Bzqhjm4f.js → notch-controller-sD-lTpdc.js} +1 -1
  241. package/dist/cjs/{overlays-B2b-TTbl.js → overlays-C2jiBSNQ.js} +5 -5
  242. package/dist/cjs/{status-tap-g0sWWkXk.js → status-tap-CCJk5VgT.js} +3 -3
  243. package/dist/cjs/{swipe-back-BIayeNOD.js → swipe-back-BGhTQ1CU.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +4 -2
  246. package/dist/collection/components/action-sheet/action-sheet.js +20 -10
  247. package/dist/collection/components/alert/alert.js +24 -12
  248. package/dist/collection/components/back-button/back-button.js +4 -2
  249. package/dist/collection/components/badge/badge.js +2 -1
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +8 -4
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +4 -2
  252. package/dist/collection/components/button/button.js +6 -3
  253. package/dist/collection/components/card/card.js +6 -3
  254. package/dist/collection/components/card-header/card-header.js +2 -1
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -1
  256. package/dist/collection/components/card-title/card-title.js +2 -1
  257. package/dist/collection/components/checkbox/checkbox.js +4 -2
  258. package/dist/collection/components/chip/chip.js +2 -1
  259. package/dist/collection/components/content/content.js +8 -4
  260. package/dist/collection/components/datetime/datetime.js +34 -15
  261. package/dist/collection/components/datetime-button/datetime-button.js +2 -1
  262. package/dist/collection/components/fab-button/fab-button.js +6 -3
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -2
  264. package/dist/collection/components/input/input.js +11 -6
  265. package/dist/collection/components/input-otp/input-otp.js +8 -4
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +4 -2
  267. package/dist/collection/components/item/item.js +6 -3
  268. package/dist/collection/components/item-divider/item-divider.js +2 -1
  269. package/dist/collection/components/item-option/item-option.js +2 -1
  270. package/dist/collection/components/item-options/item-options.js +2 -1
  271. package/dist/collection/components/item-sliding/item-sliding.js +2 -1
  272. package/dist/collection/components/label/label.js +6 -3
  273. package/dist/collection/components/list-header/list-header.js +2 -1
  274. package/dist/collection/components/loading/loading.js +22 -11
  275. package/dist/collection/components/menu/menu.js +10 -5
  276. package/dist/collection/components/menu-button/menu-button.js +2 -1
  277. package/dist/collection/components/modal/gestures/sheet.js +32 -21
  278. package/dist/collection/components/modal/modal.js +35 -20
  279. package/dist/collection/components/nav/nav.js +89 -45
  280. package/dist/collection/components/nav-link/nav-link.js +9 -5
  281. package/dist/collection/components/note/note.js +2 -1
  282. package/dist/collection/components/picker/picker.js +2 -1
  283. package/dist/collection/components/picker-column/picker-column.js +6 -3
  284. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
  285. package/dist/collection/components/picker-legacy/picker.js +24 -12
  286. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
  287. package/dist/collection/components/popover/popover.js +33 -17
  288. package/dist/collection/components/progress-bar/progress-bar.js +2 -1
  289. package/dist/collection/components/radio/radio.js +2 -1
  290. package/dist/collection/components/radio-group/radio-group.js +6 -3
  291. package/dist/collection/components/range/range.js +14 -7
  292. package/dist/collection/components/refresher/refresher.js +73 -5
  293. package/dist/collection/components/refresher-content/refresher-content.js +8 -4
  294. package/dist/collection/components/reorder-group/reorder-group.js +6 -3
  295. package/dist/collection/components/route/route.js +4 -2
  296. package/dist/collection/components/router/router.js +10 -5
  297. package/dist/collection/components/router-link/router-link.js +6 -3
  298. package/dist/collection/components/router-outlet/router-outlet.js +18 -9
  299. package/dist/collection/components/searchbar/searchbar.js +11 -6
  300. package/dist/collection/components/segment/segment.js +10 -5
  301. package/dist/collection/components/segment-button/segment-button.js +4 -2
  302. package/dist/collection/components/segment-view/segment-view.js +2 -1
  303. package/dist/collection/components/select/select.js +10 -5
  304. package/dist/collection/components/select-modal/select-modal.js +2 -1
  305. package/dist/collection/components/select-popover/select-popover.js +2 -1
  306. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
  307. package/dist/collection/components/spinner/spinner.js +4 -2
  308. package/dist/collection/components/tab/tab.js +4 -2
  309. package/dist/collection/components/tab-bar/tab-bar.js +4 -2
  310. package/dist/collection/components/tab-button/tab-button.js +4 -2
  311. package/dist/collection/components/tabs/tabs.js +4 -2
  312. package/dist/collection/components/text/text.js +2 -1
  313. package/dist/collection/components/textarea/textarea.js +6 -3
  314. package/dist/collection/components/title/title.js +4 -2
  315. package/dist/collection/components/toast/toast.js +34 -17
  316. package/dist/collection/components/toggle/toggle.js +4 -2
  317. package/dist/collection/components/toolbar/toolbar.js +2 -1
  318. package/dist/docs.d.ts +37 -0
  319. package/dist/docs.json +835 -381
  320. package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
  321. package/dist/esm/app-globals-DhZjtldk.js +9 -0
  322. package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
  323. package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
  324. package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
  325. package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
  326. package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
  327. package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
  328. package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
  329. package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
  330. package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
  331. package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
  332. package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
  333. package/dist/esm/index.js +12 -12
  334. package/dist/esm/{input-shims-DyOpfTg6.js → input-shims-C1hAaHcP.js} +3 -3
  335. package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
  336. package/dist/esm/ion-accordion_2.entry.js +23 -15
  337. package/dist/esm/ion-action-sheet.entry.js +21 -15
  338. package/dist/esm/ion-alert.entry.js +25 -17
  339. package/dist/esm/ion-app_8.entry.js +44 -40
  340. package/dist/esm/ion-avatar_3.entry.js +12 -12
  341. package/dist/esm/ion-back-button.entry.js +7 -7
  342. package/dist/esm/ion-backdrop.entry.js +6 -6
  343. package/dist/esm/ion-breadcrumb_2.entry.js +20 -14
  344. package/dist/esm/ion-button_2.entry.js +36 -18
  345. package/dist/esm/ion-card_5.entry.js +23 -23
  346. package/dist/esm/ion-checkbox.entry.js +7 -7
  347. package/dist/esm/ion-chip.entry.js +6 -6
  348. package/dist/esm/ion-col_3.entry.js +8 -8
  349. package/dist/esm/ion-datetime-button.entry.js +8 -8
  350. package/dist/esm/ion-datetime_3.entry.js +67 -39
  351. package/dist/esm/ion-fab_3.entry.js +17 -13
  352. package/dist/esm/ion-img.entry.js +8 -6
  353. package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
  354. package/dist/esm/ion-input-otp.entry.js +16 -10
  355. package/dist/esm/ion-input-password-toggle.entry.js +9 -7
  356. package/dist/esm/ion-input.entry.js +21 -13
  357. package/dist/esm/ion-item-option_3.entry.js +17 -15
  358. package/dist/esm/ion-item_8.entry.js +42 -36
  359. package/dist/esm/ion-loading.entry.js +18 -14
  360. package/dist/esm/ion-menu_3.entry.js +30 -22
  361. package/dist/esm/ion-modal.entry.js +55 -40
  362. package/dist/esm/ion-nav_2.entry.js +14 -10
  363. package/dist/esm/ion-picker-column-option.entry.js +10 -8
  364. package/dist/esm/ion-picker-column.entry.js +11 -7
  365. package/dist/esm/ion-picker.entry.js +6 -6
  366. package/dist/esm/ion-popover.entry.js +21 -15
  367. package/dist/esm/ion-progress-bar.entry.js +7 -7
  368. package/dist/esm/ion-radio_2.entry.js +17 -13
  369. package/dist/esm/ion-range.entry.js +29 -15
  370. package/dist/esm/ion-refresher_2.entry.js +45 -14
  371. package/dist/esm/ion-reorder_2.entry.js +13 -11
  372. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  373. package/dist/esm/ion-route_4.entry.js +20 -10
  374. package/dist/esm/ion-searchbar.entry.js +22 -12
  375. package/dist/esm/ion-segment-content.entry.js +3 -3
  376. package/dist/esm/ion-segment-view.entry.js +5 -5
  377. package/dist/esm/ion-segment_2.entry.js +26 -16
  378. package/dist/esm/ion-select-modal.entry.js +12 -12
  379. package/dist/esm/ion-select_3.entry.js +29 -21
  380. package/dist/esm/ion-spinner.entry.js +4 -4
  381. package/dist/esm/ion-split-pane.entry.js +15 -9
  382. package/dist/esm/ion-tab-bar_2.entry.js +14 -12
  383. package/dist/esm/ion-tab_2.entry.js +10 -8
  384. package/dist/esm/ion-text.entry.js +4 -4
  385. package/dist/esm/ion-textarea.entry.js +18 -12
  386. package/dist/esm/ion-toast.entry.js +21 -15
  387. package/dist/esm/ion-toggle.entry.js +10 -8
  388. package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
  389. package/dist/esm/ionic.js +6 -6
  390. package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
  391. package/dist/esm/loader.js +5 -5
  392. package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
  393. package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
  394. package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
  395. package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
  396. package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
  397. package/dist/html.html-data.json +109 -109
  398. package/dist/ionic/index.esm.js +1 -1
  399. package/dist/ionic/ionic.esm.js +1 -1
  400. package/dist/ionic/{p-316c0420.entry.js → p-025d2d32.entry.js} +1 -1
  401. package/dist/ionic/p-02acdef4.entry.js +4 -0
  402. package/dist/ionic/p-04e2c388.entry.js +4 -0
  403. package/dist/ionic/{p-370e4237.entry.js → p-074344b8.entry.js} +1 -1
  404. package/dist/ionic/p-0761b4d3.entry.js +4 -0
  405. package/dist/ionic/p-13ade5c8.entry.js +4 -0
  406. package/dist/ionic/p-1b02923f.entry.js +4 -0
  407. package/dist/ionic/p-1bd477a9.entry.js +4 -0
  408. package/dist/ionic/{p-d2489bf2.entry.js → p-1fa1406c.entry.js} +1 -1
  409. package/dist/ionic/{p-46d74291.entry.js → p-1fd588a7.entry.js} +1 -1
  410. package/dist/ionic/p-239a27a4.entry.js +4 -0
  411. package/dist/ionic/{p-94de5cfa.entry.js → p-277abec1.entry.js} +1 -1
  412. package/dist/ionic/{p-dd1aef77.entry.js → p-28d7852f.entry.js} +1 -1
  413. package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
  414. package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
  415. package/dist/ionic/p-3e143d1d.entry.js +4 -0
  416. package/dist/ionic/p-4431ef7e.entry.js +4 -0
  417. package/dist/ionic/p-463767ce.entry.js +4 -0
  418. package/dist/ionic/p-4f888343.entry.js +4 -0
  419. package/dist/ionic/p-51c11c47.entry.js +4 -0
  420. package/dist/ionic/p-56050077.entry.js +4 -0
  421. package/dist/ionic/p-6a3a5aae.entry.js +4 -0
  422. package/dist/ionic/p-6b97f2a3.entry.js +4 -0
  423. package/dist/ionic/{p-51a60e0f.entry.js → p-7c72d482.entry.js} +1 -1
  424. package/dist/ionic/p-7d20f4f8.entry.js +4 -0
  425. package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
  426. package/dist/ionic/p-91fc7352.entry.js +4 -0
  427. package/dist/ionic/p-93845421.entry.js +4 -0
  428. package/dist/ionic/{p-3a6caca9.entry.js → p-964090ef.entry.js} +1 -1
  429. package/dist/ionic/p-96a2e768.entry.js +4 -0
  430. package/dist/ionic/{p-d126e8d3.entry.js → p-9745651b.entry.js} +1 -1
  431. package/dist/ionic/{p-f9061316.entry.js → p-9802c88e.entry.js} +1 -1
  432. package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
  433. package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
  434. package/dist/ionic/{p-CwgG81ZD.js → p-B8xlpH8p.js} +1 -1
  435. package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
  436. package/dist/ionic/p-BW_TRJm8.js +4 -0
  437. package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
  438. package/dist/ionic/{p-D0dMcSkw.js → p-BvFYtOdE.js} +1 -1
  439. package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
  440. package/dist/ionic/{p-BYEqWnSg.js → p-C0JvVFMv.js} +1 -1
  441. package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
  442. package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
  443. package/dist/ionic/{p-D-eFFUkA.js → p-CmFz1Mjc.js} +1 -1
  444. package/dist/ionic/p-CtA-yJYy.js +4 -0
  445. package/dist/ionic/p-D8HJQ1qq.js +4 -0
  446. package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
  447. package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
  448. package/dist/ionic/{p-DdR6rpbR.js → p-DTPR1Wpn.js} +1 -1
  449. package/dist/ionic/{p-DCv9sLH2.js → p-DjriolRs.js} +1 -1
  450. package/dist/ionic/p-DtVZDHlS.js +4 -0
  451. package/dist/ionic/{p-QHYY4sjU.js → p-GWUGgWx6.js} +1 -1
  452. package/dist/ionic/p-IGIE5vDm.js +5 -0
  453. package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
  454. package/dist/ionic/{p-86f53961.entry.js → p-a287e18e.entry.js} +1 -1
  455. package/dist/ionic/p-a805674e.entry.js +4 -0
  456. package/dist/ionic/p-a81ae2cd.entry.js +4 -0
  457. package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
  458. package/dist/ionic/{p-dbbe606a.entry.js → p-b2d5238b.entry.js} +1 -1
  459. package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
  460. package/dist/ionic/{p-72c38b88.entry.js → p-b4d52b58.entry.js} +1 -1
  461. package/dist/ionic/{p-2a939845.entry.js → p-b67a2114.entry.js} +1 -1
  462. package/dist/ionic/{p-c73627c8.entry.js → p-bced1f3e.entry.js} +1 -1
  463. package/dist/ionic/{p-9a2d390d.entry.js → p-c1c9b2bb.entry.js} +1 -1
  464. package/dist/ionic/{p-f8f22cc0.entry.js → p-c3e65e45.entry.js} +1 -1
  465. package/dist/ionic/p-c76cc21d.entry.js +4 -0
  466. package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
  467. package/dist/ionic/p-cbf245b5.entry.js +4 -0
  468. package/dist/ionic/p-d68b665a.entry.js +4 -0
  469. package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
  470. package/dist/ionic/p-efe86ed9.entry.js +4 -0
  471. package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
  472. package/dist/ionic/{p-DbQ5QkTP.js → p-gbVXD275.js} +1 -1
  473. package/dist/ionic/p-hNN3VvaC.js +4 -0
  474. package/dist/types/components/datetime/datetime.d.ts +9 -0
  475. package/dist/types/components/header/header.utils.d.ts +2 -1
  476. package/dist/types/components/modal/modal-interface.d.ts +5 -1
  477. package/dist/types/components/modal/modal.d.ts +5 -0
  478. package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
  479. package/dist/types/components/refresher/refresher.d.ts +16 -3
  480. package/dist/types/components.d.ts +927 -189
  481. package/dist/types/interface.d.ts +1 -1
  482. package/dist/types/stencil-public-runtime.d.ts +126 -14
  483. package/dist/types/utils/gesture/listener.d.ts +2 -1
  484. package/hydrate/index.d.ts +12 -0
  485. package/hydrate/index.js +5202 -1327
  486. package/hydrate/index.mjs +5201 -1328
  487. package/package.json +2 -2
  488. package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
  489. package/dist/esm/app-globals-BDSf8fOA.js +0 -8
  490. package/dist/ionic/p-012212e4.entry.js +0 -4
  491. package/dist/ionic/p-074839fc.entry.js +0 -4
  492. package/dist/ionic/p-0dfa5a37.entry.js +0 -4
  493. package/dist/ionic/p-0f418a37.entry.js +0 -4
  494. package/dist/ionic/p-11518b31.entry.js +0 -4
  495. package/dist/ionic/p-1838bed5.entry.js +0 -4
  496. package/dist/ionic/p-29721c43.entry.js +0 -4
  497. package/dist/ionic/p-31f7095f.entry.js +0 -4
  498. package/dist/ionic/p-34642fa1.entry.js +0 -4
  499. package/dist/ionic/p-35696017.entry.js +0 -4
  500. package/dist/ionic/p-40c261a3.entry.js +0 -4
  501. package/dist/ionic/p-4e41ea20.entry.js +0 -4
  502. package/dist/ionic/p-6241ce47.entry.js +0 -4
  503. package/dist/ionic/p-639dd543.entry.js +0 -4
  504. package/dist/ionic/p-6444c606.entry.js +0 -4
  505. package/dist/ionic/p-6d070558.entry.js +0 -4
  506. package/dist/ionic/p-7268efa5.entry.js +0 -4
  507. package/dist/ionic/p-7babec72.entry.js +0 -4
  508. package/dist/ionic/p-BKc55Xev.js +0 -4
  509. package/dist/ionic/p-Bmgaetn_.js +0 -4
  510. package/dist/ionic/p-C8IsBmNU.js +0 -5
  511. package/dist/ionic/p-CJxh_yLS.js +0 -4
  512. package/dist/ionic/p-DUt5fQmA.js +0 -4
  513. package/dist/ionic/p-DZRJwG4S.js +0 -4
  514. package/dist/ionic/p-a127bee2.entry.js +0 -4
  515. package/dist/ionic/p-b3d44509.entry.js +0 -4
  516. package/dist/ionic/p-cc45bcbc.entry.js +0 -4
  517. package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
  518. package/dist/ionic/p-d3014190.entry.js +0 -4
  519. package/dist/ionic/p-db82892c.entry.js +0 -4
  520. package/dist/ionic/p-e1d1f3cc.entry.js +0 -4
@@ -1,959 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { proxyCustomElement, HTMLElement, createEvent, h, Build } from '@stencil/core/internal/client';
5
- import { g as getTimeGivenProgression } from './cubic-bezier.js';
6
- import { s as shallowEqualStringMap, n as assert } from './helpers.js';
7
- import { p as printIonWarning, c as config } from './index4.js';
8
- import { l as lifecycle, t as transition, s as setPageHidden, d as LIFECYCLE_WILL_UNLOAD, b as LIFECYCLE_WILL_LEAVE, c as LIFECYCLE_DID_LEAVE } from './index2.js';
9
- import { b as getIonMode } from './ionic-global.js';
10
- import { a as attachComponent } from './framework-delegate.js';
11
-
12
- const VIEW_STATE_NEW = 1;
13
- const VIEW_STATE_ATTACHED = 2;
14
- const VIEW_STATE_DESTROYED = 3;
15
- // TODO(FW-2832): types
16
- class ViewController {
17
- constructor(component, params) {
18
- this.component = component;
19
- this.params = params;
20
- this.state = VIEW_STATE_NEW;
21
- }
22
- async init(container) {
23
- this.state = VIEW_STATE_ATTACHED;
24
- if (!this.element) {
25
- const component = this.component;
26
- this.element = await attachComponent(this.delegate, container, component, ['ion-page', 'ion-page-invisible'], this.params);
27
- }
28
- }
29
- /**
30
- * DOM WRITE
31
- */
32
- _destroy() {
33
- assert(this.state !== VIEW_STATE_DESTROYED, 'view state must be ATTACHED');
34
- const element = this.element;
35
- if (element) {
36
- if (this.delegate) {
37
- this.delegate.removeViewFromDom(element.parentElement, element);
38
- }
39
- else {
40
- element.remove();
41
- }
42
- }
43
- this.nav = undefined;
44
- this.state = VIEW_STATE_DESTROYED;
45
- }
46
- }
47
- const matches = (view, id, params) => {
48
- if (!view) {
49
- return false;
50
- }
51
- if (view.component !== id) {
52
- return false;
53
- }
54
- return shallowEqualStringMap(view.params, params);
55
- };
56
- const convertToView = (page, params) => {
57
- if (!page) {
58
- return null;
59
- }
60
- if (page instanceof ViewController) {
61
- return page;
62
- }
63
- return new ViewController(page, params);
64
- };
65
- const convertToViews = (pages) => {
66
- return pages
67
- .map((page) => {
68
- if (page instanceof ViewController) {
69
- return page;
70
- }
71
- if ('component' in page) {
72
- return convertToView(page.component, page.componentProps === null ? undefined : page.componentProps);
73
- }
74
- return convertToView(page, undefined);
75
- })
76
- .filter((v) => v !== null);
77
- };
78
-
79
- const navCss = ":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}";
80
-
81
- const Nav = /*@__PURE__*/ proxyCustomElement(class Nav extends HTMLElement {
82
- constructor(registerHost) {
83
- super();
84
- if (registerHost !== false) {
85
- this.__registerHost();
86
- }
87
- this.__attachShadow();
88
- this.ionNavWillLoad = createEvent(this, "ionNavWillLoad", 7);
89
- this.ionNavWillChange = createEvent(this, "ionNavWillChange", 3);
90
- this.ionNavDidChange = createEvent(this, "ionNavDidChange", 3);
91
- this.transInstr = [];
92
- this.gestureOrAnimationInProgress = false;
93
- this.useRouter = false;
94
- this.isTransitioning = false;
95
- this.destroyed = false;
96
- this.views = [];
97
- this.didLoad = false;
98
- /**
99
- * If `true`, the nav should animate the transition of components.
100
- */
101
- this.animated = true;
102
- }
103
- swipeGestureChanged() {
104
- if (this.gesture) {
105
- this.gesture.enable(this.swipeGesture === true);
106
- }
107
- }
108
- rootChanged() {
109
- const isDev = Build.isDev;
110
- if (this.root === undefined) {
111
- return;
112
- }
113
- if (this.didLoad === false) {
114
- /**
115
- * If the component has not loaded yet, we can skip setting up the root component.
116
- * It will be called when `componentDidLoad` fires.
117
- */
118
- return;
119
- }
120
- if (!this.useRouter) {
121
- if (this.root !== undefined) {
122
- this.setRoot(this.root, this.rootParams);
123
- }
124
- }
125
- else if (isDev) {
126
- printIonWarning('[ion-nav] - A root attribute is not supported when using ion-router.', this.el);
127
- }
128
- }
129
- componentWillLoad() {
130
- this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;
131
- if (this.swipeGesture === undefined) {
132
- const mode = getIonMode(this);
133
- this.swipeGesture = config.getBoolean('swipeBackEnabled', mode === 'ios');
134
- }
135
- this.ionNavWillLoad.emit();
136
- }
137
- async componentDidLoad() {
138
- // We want to set this flag before any watch callbacks are manually called
139
- this.didLoad = true;
140
- this.rootChanged();
141
- this.gesture = (await import('./swipe-back.js')).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
142
- this.swipeGestureChanged();
143
- }
144
- connectedCallback() {
145
- this.destroyed = false;
146
- }
147
- disconnectedCallback() {
148
- for (const view of this.views) {
149
- lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);
150
- view._destroy();
151
- }
152
- // Release swipe back gesture and transition.
153
- if (this.gesture) {
154
- this.gesture.destroy();
155
- this.gesture = undefined;
156
- }
157
- this.transInstr.length = 0;
158
- this.views.length = 0;
159
- this.destroyed = true;
160
- }
161
- /**
162
- * Push a new component onto the current navigation stack. Pass any additional
163
- * information along as an object. This additional information is accessible
164
- * through NavParams.
165
- *
166
- * @param component The component to push onto the navigation stack.
167
- * @param componentProps Any properties of the component.
168
- * @param opts The navigation options.
169
- * @param done The transition complete function.
170
- */
171
- push(component, componentProps, opts, done) {
172
- return this.insert(-1, component, componentProps, opts, done);
173
- }
174
- /**
175
- * Inserts a component into the navigation stack at the specified index.
176
- * This is useful to add a component at any point in the navigation stack.
177
- *
178
- * @param insertIndex The index to insert the component at in the stack.
179
- * @param component The component to insert into the navigation stack.
180
- * @param componentProps Any properties of the component.
181
- * @param opts The navigation options.
182
- * @param done The transition complete function.
183
- */
184
- insert(insertIndex, component, componentProps, opts, done) {
185
- return this.insertPages(insertIndex, [{ component, componentProps }], opts, done);
186
- }
187
- /**
188
- * Inserts an array of components into the navigation stack at the specified index.
189
- * The last component in the array will become instantiated as a view, and animate
190
- * in to become the active view.
191
- *
192
- * @param insertIndex The index to insert the components at in the stack.
193
- * @param insertComponents The components to insert into the navigation stack.
194
- * @param opts The navigation options.
195
- * @param done The transition complete function.
196
- */
197
- insertPages(insertIndex, insertComponents, opts, done) {
198
- return this.queueTrns({
199
- insertStart: insertIndex,
200
- insertViews: insertComponents,
201
- opts,
202
- }, done);
203
- }
204
- /**
205
- * Pop a component off of the navigation stack. Navigates back from the current
206
- * component.
207
- *
208
- * @param opts The navigation options.
209
- * @param done The transition complete function.
210
- */
211
- pop(opts, done) {
212
- return this.removeIndex(-1, 1, opts, done);
213
- }
214
- /**
215
- * Pop to a specific index in the navigation stack.
216
- *
217
- * @param indexOrViewCtrl The index or view controller to pop to.
218
- * @param opts The navigation options.
219
- * @param done The transition complete function.
220
- */
221
- popTo(indexOrViewCtrl, opts, done) {
222
- const ti = {
223
- removeStart: -1,
224
- removeCount: -1,
225
- opts,
226
- };
227
- if (typeof indexOrViewCtrl === 'object' && indexOrViewCtrl.component) {
228
- ti.removeView = indexOrViewCtrl;
229
- ti.removeStart = 1;
230
- }
231
- else if (typeof indexOrViewCtrl === 'number') {
232
- ti.removeStart = indexOrViewCtrl + 1;
233
- }
234
- return this.queueTrns(ti, done);
235
- }
236
- /**
237
- * Navigate back to the root of the stack, no matter how far back that is.
238
- *
239
- * @param opts The navigation options.
240
- * @param done The transition complete function.
241
- */
242
- popToRoot(opts, done) {
243
- return this.removeIndex(1, -1, opts, done);
244
- }
245
- /**
246
- * Removes a component from the navigation stack at the specified index.
247
- *
248
- * @param startIndex The number to begin removal at.
249
- * @param removeCount The number of components to remove.
250
- * @param opts The navigation options.
251
- * @param done The transition complete function.
252
- */
253
- removeIndex(startIndex, removeCount = 1, opts, done) {
254
- return this.queueTrns({
255
- removeStart: startIndex,
256
- removeCount,
257
- opts,
258
- }, done);
259
- }
260
- /**
261
- * Set the root for the current navigation stack to a component.
262
- *
263
- * @param component The component to set as the root of the navigation stack.
264
- * @param componentProps Any properties of the component.
265
- * @param opts The navigation options.
266
- * @param done The transition complete function.
267
- */
268
- setRoot(component, componentProps, opts, done) {
269
- return this.setPages([{ component, componentProps }], opts, done);
270
- }
271
- /**
272
- * Set the views of the current navigation stack and navigate to the last view.
273
- * By default animations are disabled, but they can be enabled by passing options
274
- * to the navigation controller. Navigation parameters can also be passed to the
275
- * individual pages in the array.
276
- *
277
- * @param views The list of views to set as the navigation stack.
278
- * @param opts The navigation options.
279
- * @param done The transition complete function.
280
- */
281
- setPages(views, opts, done) {
282
- opts !== null && opts !== void 0 ? opts : (opts = {});
283
- // if animation wasn't set to true then default it to NOT animate
284
- if (opts.animated !== true) {
285
- opts.animated = false;
286
- }
287
- return this.queueTrns({
288
- insertStart: 0,
289
- insertViews: views,
290
- removeStart: 0,
291
- removeCount: -1,
292
- opts,
293
- }, done);
294
- }
295
- /**
296
- * Called by the router to update the view.
297
- *
298
- * @param id The component tag.
299
- * @param params The component params.
300
- * @param direction A direction hint.
301
- * @param animation an AnimationBuilder.
302
- *
303
- * @return the status.
304
- * @internal
305
- */
306
- setRouteId(id, params, direction, animation) {
307
- const active = this.getActiveSync();
308
- if (matches(active, id, params)) {
309
- return Promise.resolve({
310
- changed: false,
311
- element: active.element,
312
- });
313
- }
314
- let resolve;
315
- const promise = new Promise((r) => (resolve = r));
316
- let finish;
317
- const commonOpts = {
318
- updateURL: false,
319
- viewIsReady: (enteringEl) => {
320
- let mark;
321
- const p = new Promise((r) => (mark = r));
322
- resolve({
323
- changed: true,
324
- element: enteringEl,
325
- markVisible: async () => {
326
- mark();
327
- await finish;
328
- },
329
- });
330
- return p;
331
- },
332
- };
333
- if (direction === 'root') {
334
- finish = this.setRoot(id, params, commonOpts);
335
- }
336
- else {
337
- // Look for a view matching the target in the view stack.
338
- const viewController = this.views.find((v) => matches(v, id, params));
339
- if (viewController) {
340
- finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animationBuilder: animation }));
341
- }
342
- else if (direction === 'forward') {
343
- finish = this.push(id, params, Object.assign(Object.assign({}, commonOpts), { animationBuilder: animation }));
344
- }
345
- else if (direction === 'back') {
346
- finish = this.setRoot(id, params, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animated: true, animationBuilder: animation }));
347
- }
348
- }
349
- return promise;
350
- }
351
- /**
352
- * Called by <ion-router> to retrieve the current component.
353
- *
354
- * @internal
355
- */
356
- async getRouteId() {
357
- const active = this.getActiveSync();
358
- if (active) {
359
- return {
360
- id: active.element.tagName,
361
- params: active.params,
362
- element: active.element,
363
- };
364
- }
365
- return undefined;
366
- }
367
- /**
368
- * Get the active view.
369
- */
370
- async getActive() {
371
- return this.getActiveSync();
372
- }
373
- /**
374
- * Get the view at the specified index.
375
- *
376
- * @param index The index of the view.
377
- */
378
- async getByIndex(index) {
379
- return this.views[index];
380
- }
381
- /**
382
- * Returns `true` if the current view can go back.
383
- *
384
- * @param view The view to check.
385
- */
386
- async canGoBack(view) {
387
- return this.canGoBackSync(view);
388
- }
389
- /**
390
- * Get the previous view.
391
- *
392
- * @param view The view to get.
393
- */
394
- async getPrevious(view) {
395
- return this.getPreviousSync(view);
396
- }
397
- /**
398
- * Returns the number of views in the stack.
399
- */
400
- async getLength() {
401
- return Promise.resolve(this.views.length);
402
- }
403
- getActiveSync() {
404
- return this.views[this.views.length - 1];
405
- }
406
- canGoBackSync(view = this.getActiveSync()) {
407
- return !!(view && this.getPreviousSync(view));
408
- }
409
- getPreviousSync(view = this.getActiveSync()) {
410
- if (!view) {
411
- return undefined;
412
- }
413
- const views = this.views;
414
- const index = views.indexOf(view);
415
- return index > 0 ? views[index - 1] : undefined;
416
- }
417
- /**
418
- * Adds a navigation stack change to the queue and schedules it to run.
419
- *
420
- * @returns Whether the transition succeeds.
421
- */
422
- async queueTrns(ti, done) {
423
- var _a, _b;
424
- if (this.isTransitioning && ((_a = ti.opts) === null || _a === void 0 ? void 0 : _a.skipIfBusy)) {
425
- return false;
426
- }
427
- const promise = new Promise((resolve, reject) => {
428
- ti.resolve = resolve;
429
- ti.reject = reject;
430
- });
431
- ti.done = done;
432
- /**
433
- * If using router, check to see if navigation hooks
434
- * will allow us to perform this transition. This
435
- * is required in order for hooks to work with
436
- * the ion-back-button or swipe to go back.
437
- */
438
- if (ti.opts && ti.opts.updateURL !== false && this.useRouter) {
439
- const router = document.querySelector('ion-router');
440
- if (router) {
441
- const canTransition = await router.canTransition();
442
- if (canTransition === false) {
443
- return false;
444
- }
445
- if (typeof canTransition === 'string') {
446
- router.push(canTransition, ti.opts.direction || 'back');
447
- return false;
448
- }
449
- }
450
- }
451
- // Normalize empty
452
- if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.length) === 0) {
453
- ti.insertViews = undefined;
454
- }
455
- // Enqueue transition instruction
456
- this.transInstr.push(ti);
457
- // if there isn't a transition already happening
458
- // then this will kick off this transition
459
- this.nextTrns();
460
- return promise;
461
- }
462
- success(result, ti) {
463
- if (this.destroyed) {
464
- this.fireError('nav controller was destroyed', ti);
465
- return;
466
- }
467
- if (ti.done) {
468
- ti.done(result.hasCompleted, result.requiresTransition, result.enteringView, result.leavingView, result.direction);
469
- }
470
- ti.resolve(result.hasCompleted);
471
- if (ti.opts.updateURL !== false && this.useRouter) {
472
- const router = document.querySelector('ion-router');
473
- if (router) {
474
- const direction = result.direction === 'back' ? 'back' : 'forward';
475
- router.navChanged(direction);
476
- }
477
- }
478
- }
479
- failed(rejectReason, ti) {
480
- if (this.destroyed) {
481
- this.fireError('nav controller was destroyed', ti);
482
- return;
483
- }
484
- this.transInstr.length = 0;
485
- this.fireError(rejectReason, ti);
486
- }
487
- fireError(rejectReason, ti) {
488
- if (ti.done) {
489
- ti.done(false, false, rejectReason);
490
- }
491
- if (ti.reject && !this.destroyed) {
492
- ti.reject(rejectReason);
493
- }
494
- else {
495
- ti.resolve(false);
496
- }
497
- }
498
- /**
499
- * Consumes the next transition in the queue.
500
- *
501
- * @returns whether the transition is executed.
502
- */
503
- nextTrns() {
504
- // this is the framework's bread 'n butta function
505
- // only one transition is allowed at any given time
506
- if (this.isTransitioning) {
507
- return false;
508
- }
509
- // there is no transition happening right now, executes the next instructions.
510
- const ti = this.transInstr.shift();
511
- if (!ti) {
512
- return false;
513
- }
514
- this.runTransition(ti);
515
- return true;
516
- }
517
- /** Executes all the transition instruction from the queue. */
518
- async runTransition(ti) {
519
- try {
520
- // set that this nav is actively transitioning
521
- this.ionNavWillChange.emit();
522
- this.isTransitioning = true;
523
- this.prepareTI(ti);
524
- const leavingView = this.getActiveSync();
525
- const enteringView = this.getEnteringView(ti, leavingView);
526
- if (!leavingView && !enteringView) {
527
- throw new Error('no views in the stack to be removed');
528
- }
529
- if (enteringView && enteringView.state === VIEW_STATE_NEW) {
530
- await enteringView.init(this.el);
531
- }
532
- this.postViewInit(enteringView, leavingView, ti);
533
- // Needs transition?
534
- const requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) && enteringView !== leavingView;
535
- if (requiresTransition && ti.opts && leavingView) {
536
- const isBackDirection = ti.opts.direction === 'back';
537
- /**
538
- * If heading back, use the entering page's animation
539
- * unless otherwise specified by the developer.
540
- */
541
- if (isBackDirection) {
542
- ti.opts.animationBuilder = ti.opts.animationBuilder || (enteringView === null || enteringView === void 0 ? void 0 : enteringView.animationBuilder);
543
- }
544
- leavingView.animationBuilder = ti.opts.animationBuilder;
545
- }
546
- let result;
547
- if (requiresTransition) {
548
- result = await this.transition(enteringView, leavingView, ti);
549
- }
550
- else {
551
- // transition is not required, so we are already done!
552
- // they're inserting/removing the views somewhere in the middle or
553
- // beginning, so visually nothing needs to animate/transition
554
- // resolve immediately because there's no animation that's happening
555
- result = {
556
- hasCompleted: true,
557
- requiresTransition: false,
558
- };
559
- }
560
- this.success(result, ti);
561
- this.ionNavDidChange.emit();
562
- }
563
- catch (rejectReason) {
564
- this.failed(rejectReason, ti);
565
- }
566
- this.isTransitioning = false;
567
- this.nextTrns();
568
- }
569
- prepareTI(ti) {
570
- var _a, _b;
571
- var _c;
572
- const viewsLength = this.views.length;
573
- (_a = ti.opts) !== null && _a !== void 0 ? _a : (ti.opts = {});
574
- (_b = (_c = ti.opts).delegate) !== null && _b !== void 0 ? _b : (_c.delegate = this.delegate);
575
- if (ti.removeView !== undefined) {
576
- assert(ti.removeStart !== undefined, 'removeView needs removeStart');
577
- assert(ti.removeCount !== undefined, 'removeView needs removeCount');
578
- const index = this.views.indexOf(ti.removeView);
579
- if (index < 0) {
580
- throw new Error('removeView was not found');
581
- }
582
- ti.removeStart += index;
583
- }
584
- if (ti.removeStart !== undefined) {
585
- if (ti.removeStart < 0) {
586
- ti.removeStart = viewsLength - 1;
587
- }
588
- if (ti.removeCount < 0) {
589
- ti.removeCount = viewsLength - ti.removeStart;
590
- }
591
- ti.leavingRequiresTransition = ti.removeCount > 0 && ti.removeStart + ti.removeCount === viewsLength;
592
- }
593
- if (ti.insertViews) {
594
- // allow -1 to be passed in to auto push it on the end
595
- // and clean up the index if it's larger then the size of the stack
596
- if (ti.insertStart < 0 || ti.insertStart > viewsLength) {
597
- ti.insertStart = viewsLength;
598
- }
599
- ti.enteringRequiresTransition = ti.insertStart === viewsLength;
600
- }
601
- const insertViews = ti.insertViews;
602
- if (!insertViews) {
603
- return;
604
- }
605
- assert(insertViews.length > 0, 'length can not be zero');
606
- const viewControllers = convertToViews(insertViews);
607
- if (viewControllers.length === 0) {
608
- throw new Error('invalid views to insert');
609
- }
610
- // Check all the inserted view are correct
611
- for (const view of viewControllers) {
612
- view.delegate = ti.opts.delegate;
613
- const nav = view.nav;
614
- if (nav && nav !== this) {
615
- throw new Error('inserted view was already inserted');
616
- }
617
- if (view.state === VIEW_STATE_DESTROYED) {
618
- throw new Error('inserted view was already destroyed');
619
- }
620
- }
621
- ti.insertViews = viewControllers;
622
- }
623
- /**
624
- * Returns the view that will be entered considering the transition instructions.
625
- *
626
- * @param ti The instructions.
627
- * @param leavingView The view being left or undefined if none.
628
- *
629
- * @returns The view that will be entered, undefined if none.
630
- */
631
- getEnteringView(ti, leavingView) {
632
- // The last inserted view will be entered when view are inserted.
633
- const insertViews = ti.insertViews;
634
- if (insertViews !== undefined) {
635
- return insertViews[insertViews.length - 1];
636
- }
637
- // When views are deleted, we will enter the last view that is not removed and not the view being left.
638
- const removeStart = ti.removeStart;
639
- if (removeStart !== undefined) {
640
- const views = this.views;
641
- const removeEnd = removeStart + ti.removeCount;
642
- for (let i = views.length - 1; i >= 0; i--) {
643
- const view = views[i];
644
- if ((i < removeStart || i >= removeEnd) && view !== leavingView) {
645
- return view;
646
- }
647
- }
648
- }
649
- return undefined;
650
- }
651
- /**
652
- * Adds and Removes the views from the navigation stack.
653
- *
654
- * @param enteringView The view being entered.
655
- * @param leavingView The view being left.
656
- * @param ti The instructions.
657
- */
658
- postViewInit(enteringView, leavingView, ti) {
659
- var _a, _b, _c;
660
- assert(leavingView || enteringView, 'Both leavingView and enteringView are null');
661
- assert(ti.resolve, 'resolve must be valid');
662
- assert(ti.reject, 'reject must be valid');
663
- // Compute the views to remove.
664
- const opts = ti.opts;
665
- const { insertViews, removeStart, removeCount } = ti;
666
- /** Records the view to destroy */
667
- let destroyQueue;
668
- // there are views to remove
669
- if (removeStart !== undefined && removeCount !== undefined) {
670
- assert(removeStart >= 0, 'removeStart can not be negative');
671
- assert(removeCount >= 0, 'removeCount can not be negative');
672
- destroyQueue = [];
673
- for (let i = removeStart; i < removeStart + removeCount; i++) {
674
- const view = this.views[i];
675
- if (view !== undefined && view !== enteringView && view !== leavingView) {
676
- destroyQueue.push(view);
677
- }
678
- }
679
- // default the direction to "back"
680
- (_a = opts.direction) !== null && _a !== void 0 ? _a : (opts.direction = 'back');
681
- }
682
- const finalNumViews = this.views.length + ((_b = insertViews === null || insertViews === void 0 ? void 0 : insertViews.length) !== null && _b !== void 0 ? _b : 0) - (removeCount !== null && removeCount !== void 0 ? removeCount : 0);
683
- assert(finalNumViews >= 0, 'final balance can not be negative');
684
- if (finalNumViews === 0) {
685
- printIonWarning(`[ion-nav] - You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.`, this, this.el);
686
- throw new Error('navigation stack needs at least one root page');
687
- }
688
- // At this point the transition can not be rejected, any throw should be an error
689
- // Insert the new views in the stack.
690
- if (insertViews) {
691
- // add the views to the
692
- let insertIndex = ti.insertStart;
693
- for (const view of insertViews) {
694
- this.insertViewAt(view, insertIndex);
695
- insertIndex++;
696
- }
697
- if (ti.enteringRequiresTransition) {
698
- // default to forward if not already set
699
- (_c = opts.direction) !== null && _c !== void 0 ? _c : (opts.direction = 'forward');
700
- }
701
- }
702
- // if the views to be removed are in the beginning or middle
703
- // and there is not a view that needs to visually transition out
704
- // then just destroy them and don't transition anything
705
- // batch all of lifecycles together
706
- // let's make sure, callbacks are zoned
707
- if (destroyQueue && destroyQueue.length > 0) {
708
- for (const view of destroyQueue) {
709
- lifecycle(view.element, LIFECYCLE_WILL_LEAVE);
710
- lifecycle(view.element, LIFECYCLE_DID_LEAVE);
711
- lifecycle(view.element, LIFECYCLE_WILL_UNLOAD);
712
- }
713
- // once all lifecycle events has been delivered, we can safely detroy the views
714
- for (const view of destroyQueue) {
715
- this.destroyView(view);
716
- }
717
- }
718
- }
719
- async transition(enteringView, leavingView, ti) {
720
- // we should animate (duration > 0) if the pushed page is not the first one (startup)
721
- // or if it is a portal (modal, actionsheet, etc.)
722
- const opts = ti.opts;
723
- const progressCallback = opts.progressAnimation
724
- ? (ani) => {
725
- /**
726
- * Because this progress callback is called asynchronously
727
- * it is possible for the gesture to start and end before
728
- * the animation is ever set. In that scenario, we should
729
- * immediately call progressEnd so that the transition promise
730
- * resolves and the gesture does not get locked up.
731
- */
732
- if (ani !== undefined && !this.gestureOrAnimationInProgress) {
733
- this.gestureOrAnimationInProgress = true;
734
- ani.onFinish(() => {
735
- this.gestureOrAnimationInProgress = false;
736
- }, { oneTimeCallback: true });
737
- /**
738
- * Playing animation to beginning
739
- * with a duration of 0 prevents
740
- * any flickering when the animation
741
- * is later cleaned up.
742
- */
743
- ani.progressEnd(0, 0, 0);
744
- }
745
- else {
746
- this.sbAni = ani;
747
- }
748
- }
749
- : undefined;
750
- const mode = getIonMode(this);
751
- const enteringEl = enteringView.element;
752
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
753
- const leavingEl = leavingView && leavingView.element;
754
- const animationOpts = Object.assign(Object.assign({ mode, showGoBack: this.canGoBackSync(enteringView), baseEl: this.el, progressCallback, animated: this.animated && config.getBoolean('animated', true), enteringEl,
755
- leavingEl }, opts), { animationBuilder: opts.animationBuilder || this.animation || config.get('navAnimation') });
756
- const { hasCompleted } = await transition(animationOpts);
757
- return this.transitionFinish(hasCompleted, enteringView, leavingView, opts);
758
- }
759
- transitionFinish(hasCompleted, enteringView, leavingView, opts) {
760
- /**
761
- * If the transition did not complete, the leavingView will still be the active
762
- * view on the stack. Otherwise unmount all the views after the enteringView.
763
- */
764
- const activeView = hasCompleted ? enteringView : leavingView;
765
- if (activeView) {
766
- this.unmountInactiveViews(activeView);
767
- }
768
- return {
769
- hasCompleted,
770
- requiresTransition: true,
771
- enteringView,
772
- leavingView,
773
- direction: opts.direction,
774
- };
775
- }
776
- /**
777
- * Inserts a view at the specified index.
778
- *
779
- * When the view already is in the stack it will be moved to the new position.
780
- *
781
- * @param view The view to insert.
782
- * @param index The index where to insert the view.
783
- */
784
- insertViewAt(view, index) {
785
- const views = this.views;
786
- const existingIndex = views.indexOf(view);
787
- if (existingIndex > -1) {
788
- assert(view.nav === this, 'view is not part of the nav');
789
- // The view already in the stack, removes it.
790
- views.splice(existingIndex, 1);
791
- // and add it back at the requested index.
792
- views.splice(index, 0, view);
793
- }
794
- else {
795
- assert(!view.nav, 'nav is used');
796
- // this is a new view to add to the stack
797
- // create the new entering view
798
- view.nav = this;
799
- views.splice(index, 0, view);
800
- }
801
- }
802
- /**
803
- * Removes a view from the stack.
804
- *
805
- * @param view The view to remove.
806
- */
807
- removeView(view) {
808
- assert(view.state === VIEW_STATE_ATTACHED || view.state === VIEW_STATE_DESTROYED, 'view state should be loaded or destroyed');
809
- const views = this.views;
810
- const index = views.indexOf(view);
811
- assert(index > -1, 'view must be part of the stack');
812
- if (index >= 0) {
813
- views.splice(index, 1);
814
- }
815
- }
816
- destroyView(view) {
817
- view._destroy();
818
- this.removeView(view);
819
- }
820
- /**
821
- * Unmounts all inactive views after the specified active view.
822
- *
823
- * DOM WRITE
824
- *
825
- * @param activeView The view that is actively visible in the stack. Used to calculate which views to unmount.
826
- */
827
- unmountInactiveViews(activeView) {
828
- // ok, cleanup time!! Destroy all of the views that are
829
- // INACTIVE and come after the active view
830
- // only do this if the views exist, though
831
- if (this.destroyed) {
832
- return;
833
- }
834
- const views = this.views;
835
- const activeViewIndex = views.indexOf(activeView);
836
- for (let i = views.length - 1; i >= 0; i--) {
837
- const view = views[i];
838
- /**
839
- * When inserting multiple views via insertPages
840
- * the last page will be transitioned to, but the
841
- * others will not be. As a result, a DOM element
842
- * will only be created for the last page inserted.
843
- * As a result, it is possible to have views in the
844
- * stack that do not have `view.element` yet.
845
- */
846
- const element = view.element;
847
- if (element) {
848
- if (i > activeViewIndex) {
849
- // this view comes after the active view
850
- // let's unload it
851
- lifecycle(element, LIFECYCLE_WILL_UNLOAD);
852
- this.destroyView(view);
853
- }
854
- else if (i < activeViewIndex) {
855
- // this view comes before the active view
856
- // and it is not a portal then ensure it is hidden
857
- setPageHidden(element, true);
858
- }
859
- }
860
- }
861
- }
862
- canStart() {
863
- return (!this.gestureOrAnimationInProgress &&
864
- !!this.swipeGesture &&
865
- !this.isTransitioning &&
866
- this.transInstr.length === 0 &&
867
- this.canGoBackSync());
868
- }
869
- onStart() {
870
- this.gestureOrAnimationInProgress = true;
871
- this.pop({ direction: 'back', progressAnimation: true });
872
- }
873
- onMove(stepValue) {
874
- if (this.sbAni) {
875
- this.sbAni.progressStep(stepValue);
876
- }
877
- }
878
- onEnd(shouldComplete, stepValue, dur) {
879
- if (this.sbAni) {
880
- this.sbAni.onFinish(() => {
881
- this.gestureOrAnimationInProgress = false;
882
- }, { oneTimeCallback: true });
883
- // Account for rounding errors in JS
884
- let newStepValue = shouldComplete ? -1e-3 : 0.001;
885
- /**
886
- * Animation will be reversed here, so need to
887
- * reverse the easing curve as well
888
- *
889
- * Additionally, we need to account for the time relative
890
- * to the new easing curve, as `stepValue` is going to be given
891
- * in terms of a linear curve.
892
- */
893
- if (!shouldComplete) {
894
- this.sbAni.easing('cubic-bezier(1, 0, 0.68, 0.28)');
895
- newStepValue += getTimeGivenProgression([0, 0], [1, 0], [0.68, 0.28], [1, 1], stepValue)[0];
896
- }
897
- else {
898
- newStepValue += getTimeGivenProgression([0, 0], [0.32, 0.72], [0, 1], [1, 1], stepValue)[0];
899
- }
900
- this.sbAni.progressEnd(shouldComplete ? 1 : 0, newStepValue, dur);
901
- }
902
- else {
903
- this.gestureOrAnimationInProgress = false;
904
- }
905
- }
906
- render() {
907
- return h("slot", { key: '8067c9835d255daec61f33dba200fd3a6ff839a0' });
908
- }
909
- get el() { return this; }
910
- static get watchers() { return {
911
- "swipeGesture": ["swipeGestureChanged"],
912
- "root": ["rootChanged"]
913
- }; }
914
- static get style() { return navCss; }
915
- }, [257, "ion-nav", {
916
- "delegate": [16],
917
- "swipeGesture": [1028, "swipe-gesture"],
918
- "animated": [4],
919
- "animation": [16],
920
- "rootParams": [16],
921
- "root": [1],
922
- "push": [64],
923
- "insert": [64],
924
- "insertPages": [64],
925
- "pop": [64],
926
- "popTo": [64],
927
- "popToRoot": [64],
928
- "removeIndex": [64],
929
- "setRoot": [64],
930
- "setPages": [64],
931
- "setRouteId": [64],
932
- "getRouteId": [64],
933
- "getActive": [64],
934
- "getByIndex": [64],
935
- "canGoBack": [64],
936
- "getPrevious": [64],
937
- "getLength": [64]
938
- }, undefined, {
939
- "swipeGesture": ["swipeGestureChanged"],
940
- "root": ["rootChanged"]
941
- }]);
942
- function defineCustomElement$1() {
943
- if (typeof customElements === "undefined") {
944
- return;
945
- }
946
- const components = ["ion-nav"];
947
- components.forEach(tagName => { switch (tagName) {
948
- case "ion-nav":
949
- if (!customElements.get(tagName)) {
950
- customElements.define(tagName, Nav);
951
- }
952
- break;
953
- } });
954
- }
955
-
956
- const IonNav = Nav;
957
- const defineCustomElement = defineCustomElement$1;
958
-
959
- export { IonNav, defineCustomElement };
4
+ import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as s,transformTag as o,Build as n}from"@stencil/core/internal/client";import{g as r}from"./cubic-bezier.js";import{s as a,n as h}from"./helpers.js";import{p as c,c as d}from"./index4.js";import{l,t as u,s as v,d as m,b as p,c as f}from"./index2.js";import{b as w}from"./ionic-global.js";import{a as g}from"./framework-delegate.js";class b{constructor(t,i){this.component=t,this.params=i,this.state=1}async init(t){if(this.state=2,!this.element){const i=this.component;this.element=await g(this.delegate,t,i,["ion-page","ion-page-invisible"],this.params)}}_destroy(){h(3!==this.state,"view state must be ATTACHED");const t=this.element;t&&(this.delegate?this.delegate.removeViewFromDom(t.parentElement,t):t.remove()),this.nav=void 0,this.state=3}}const y=(t,i,e)=>!!t&&t.component===i&&a(t.params,e),k=(t,i)=>t?t instanceof b?t:new b(t,i):null,C=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.ionNavWillLoad=e(this,"ionNavWillLoad",7),this.ionNavWillChange=e(this,"ionNavWillChange",3),this.ionNavDidChange=e(this,"ionNavDidChange",3),this.transInstr=[],this.gestureOrAnimationInProgress=!1,this.useRouter=!1,this.isTransitioning=!1,this.destroyed=!1,this.views=[],this.didLoad=!1,this.animated=!0}swipeGestureChanged(){this.gesture&&this.gesture.enable(!0===this.swipeGesture)}rootChanged(){void 0!==this.root&&!1!==this.didLoad&&(this.useRouter?n.isDev&&c("[ion-nav] - A root attribute is not supported when using ion-router.",this.el):void 0!==this.root&&this.setRoot(this.root,this.rootParams))}componentWillLoad(){if(this.useRouter=null!==document.querySelector("ion-router")&&null===this.el.closest("[no-router]"),void 0===this.swipeGesture){const t=w(this);this.swipeGesture=d.getBoolean("swipeBackEnabled","ios"===t)}this.ionNavWillLoad.emit()}async componentDidLoad(){this.didLoad=!0,this.rootChanged(),this.gesture=(await import("./swipe-back.js")).createSwipeBackGesture(this.el,this.canStart.bind(this),this.onStart.bind(this),this.onMove.bind(this),this.onEnd.bind(this)),this.swipeGestureChanged()}connectedCallback(){this.destroyed=!1}disconnectedCallback(){for(const t of this.views)l(t.element,m),t._destroy();this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.transInstr.length=0,this.views.length=0,this.destroyed=!0}push(t,i,e,s){return this.insert(-1,t,i,e,s)}insert(t,i,e,s,o){return this.insertPages(t,[{component:i,componentProps:e}],s,o)}insertPages(t,i,e,s){return this.queueTrns({insertStart:t,insertViews:i,opts:e},s)}pop(t,i){return this.removeIndex(-1,1,t,i)}popTo(t,i,e){const s={removeStart:-1,removeCount:-1,opts:i};return"object"==typeof t&&t.component?(s.removeView=t,s.removeStart=1):"number"==typeof t&&(s.removeStart=t+1),this.queueTrns(s,e)}popToRoot(t,i){return this.removeIndex(1,-1,t,i)}removeIndex(t,i=1,e,s){return this.queueTrns({removeStart:t,removeCount:i,opts:e},s)}setRoot(t,i,e,s){return this.setPages([{component:t,componentProps:i}],e,s)}setPages(t,i,e){return null!=i||(i={}),!0!==i.animated&&(i.animated=!1),this.queueTrns({insertStart:0,insertViews:t,removeStart:0,removeCount:-1,opts:i},e)}setRouteId(t,i,e,s){const o=this.getActiveSync();if(y(o,t,i))return Promise.resolve({changed:!1,element:o.element});let n;const r=new Promise((t=>n=t));let a;const h={updateURL:!1,viewIsReady:t=>{let i;const e=new Promise((t=>i=t));return n({changed:!0,element:t,markVisible:async()=>{i(),await a}}),e}};if("root"===e)a=this.setRoot(t,i,h);else{const o=this.views.find((e=>y(e,t,i)));o?a=this.popTo(o,Object.assign(Object.assign({},h),{direction:"back",animationBuilder:s})):"forward"===e?a=this.push(t,i,Object.assign(Object.assign({},h),{animationBuilder:s})):"back"===e&&(a=this.setRoot(t,i,Object.assign(Object.assign({},h),{direction:"back",animated:!0,animationBuilder:s})))}return r}async getRouteId(){const t=this.getActiveSync();if(t)return{id:t.element.tagName,params:t.params,element:t.element}}async getActive(){return this.getActiveSync()}async getByIndex(t){return this.views[t]}async canGoBack(t){return this.canGoBackSync(t)}async getPrevious(t){return this.getPreviousSync(t)}async getLength(){return Promise.resolve(this.views.length)}getActiveSync(){return this.views[this.views.length-1]}canGoBackSync(t=this.getActiveSync()){return!(!t||!this.getPreviousSync(t))}getPreviousSync(t=this.getActiveSync()){if(!t)return;const i=this.views,e=i.indexOf(t);return e>0?i[e-1]:void 0}async queueTrns(t,i){var e,s;if(this.isTransitioning&&(null===(e=t.opts)||void 0===e?void 0:e.skipIfBusy))return!1;const o=new Promise(((i,e)=>{t.resolve=i,t.reject=e}));if(t.done=i,t.opts&&!1!==t.opts.updateURL&&this.useRouter){const i=document.querySelector("ion-router");if(i){const e=await i.canTransition();if(!1===e)return!1;if("string"==typeof e)return i.push(e,t.opts.direction||"back"),!1}}return 0===(null===(s=t.insertViews)||void 0===s?void 0:s.length)&&(t.insertViews=void 0),this.transInstr.push(t),this.nextTrns(),o}success(t,i){if(this.destroyed)this.fireError("nav controller was destroyed",i);else if(i.done&&i.done(t.hasCompleted,t.requiresTransition,t.enteringView,t.leavingView,t.direction),i.resolve(t.hasCompleted),!1!==i.opts.updateURL&&this.useRouter){const i=document.querySelector("ion-router");i&&i.navChanged("back"===t.direction?"back":"forward")}}failed(t,i){this.destroyed?this.fireError("nav controller was destroyed",i):(this.transInstr.length=0,this.fireError(t,i))}fireError(t,i){i.done&&i.done(!1,!1,t),i.reject&&!this.destroyed?i.reject(t):i.resolve(!1)}nextTrns(){if(this.isTransitioning)return!1;const t=this.transInstr.shift();return!!t&&(this.runTransition(t),!0)}async runTransition(t){try{this.ionNavWillChange.emit(),this.isTransitioning=!0,this.prepareTI(t);const i=this.getActiveSync(),e=this.getEnteringView(t,i);if(!i&&!e)throw Error("no views in the stack to be removed");e&&1===e.state&&await e.init(this.el),this.postViewInit(e,i,t);const s=(t.enteringRequiresTransition||t.leavingRequiresTransition)&&e!==i;let o;s&&t.opts&&i&&("back"===t.opts.direction&&(t.opts.animationBuilder=t.opts.animationBuilder||(null==e?void 0:e.animationBuilder)),i.animationBuilder=t.opts.animationBuilder),o=s?await this.transition(e,i,t):{hasCompleted:!0,requiresTransition:!1},this.success(o,t),this.ionNavDidChange.emit()}catch(i){this.failed(i,t)}this.isTransitioning=!1,this.nextTrns()}prepareTI(t){var i,e,s;const o=this.views.length;if(null!==(i=t.opts)&&void 0!==i||(t.opts={}),null!==(e=(s=t.opts).delegate)&&void 0!==e||(s.delegate=this.delegate),void 0!==t.removeView){h(void 0!==t.removeStart,"removeView needs removeStart"),h(void 0!==t.removeCount,"removeView needs removeCount");const i=this.views.indexOf(t.removeView);if(i<0)throw Error("removeView was not found");t.removeStart+=i}void 0!==t.removeStart&&(t.removeStart<0&&(t.removeStart=o-1),t.removeCount<0&&(t.removeCount=o-t.removeStart),t.leavingRequiresTransition=t.removeCount>0&&t.removeStart+t.removeCount===o),t.insertViews&&((t.insertStart<0||t.insertStart>o)&&(t.insertStart=o),t.enteringRequiresTransition=t.insertStart===o);const n=t.insertViews;if(!n)return;h(n.length>0,"length can not be zero");const r=(t=>t.map((t=>t instanceof b?t:"component"in t?k(t.component,null===t.componentProps?void 0:t.componentProps):k(t,void 0))).filter((t=>null!==t)))(n);if(0===r.length)throw Error("invalid views to insert");for(const i of r){i.delegate=t.opts.delegate;const e=i.nav;if(e&&e!==this)throw Error("inserted view was already inserted");if(3===i.state)throw Error("inserted view was already destroyed")}t.insertViews=r}getEnteringView(t,i){const e=t.insertViews;if(void 0!==e)return e[e.length-1];const s=t.removeStart;if(void 0!==s){const e=this.views,o=s+t.removeCount;for(let t=e.length-1;t>=0;t--){const n=e[t];if((t<s||t>=o)&&n!==i)return n}}}postViewInit(t,i,e){var s,o,n;h(i||t,"Both leavingView and enteringView are null"),h(e.resolve,"resolve must be valid"),h(e.reject,"reject must be valid");const r=e.opts,{insertViews:a,removeStart:d,removeCount:u}=e;let v;if(void 0!==d&&void 0!==u){h(d>=0,"removeStart can not be negative"),h(u>=0,"removeCount can not be negative"),v=[];for(let e=d;e<d+u;e++){const s=this.views[e];void 0!==s&&s!==t&&s!==i&&v.push(s)}null!==(s=r.direction)&&void 0!==s||(r.direction="back")}const w=this.views.length+(null!==(o=null==a?void 0:a.length)&&void 0!==o?o:0)-(null!=u?u:0);if(h(w>=0,"final balance can not be negative"),0===w)throw c("[ion-nav] - You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.",this,this.el),Error("navigation stack needs at least one root page");if(a){let t=e.insertStart;for(const i of a)this.insertViewAt(i,t),t++;e.enteringRequiresTransition&&(null!==(n=r.direction)&&void 0!==n||(r.direction="forward"))}if(v&&v.length>0){for(const t of v)l(t.element,p),l(t.element,f),l(t.element,m);for(const t of v)this.destroyView(t)}}async transition(t,i,e){const s=e.opts,o=s.progressAnimation?t=>{void 0===t||this.gestureOrAnimationInProgress?this.sbAni=t:(this.gestureOrAnimationInProgress=!0,t.onFinish((()=>{this.gestureOrAnimationInProgress=!1}),{oneTimeCallback:!0}),t.progressEnd(0,0,0))}:void 0,n=w(this),r=t.element,a=i&&i.element,h=Object.assign(Object.assign({mode:n,showGoBack:this.canGoBackSync(t),baseEl:this.el,progressCallback:o,animated:this.animated&&d.getBoolean("animated",!0),enteringEl:r,leavingEl:a},s),{animationBuilder:s.animationBuilder||this.animation||d.get("navAnimation")}),{hasCompleted:c}=await u(h);return this.transitionFinish(c,t,i,s)}transitionFinish(t,i,e,s){const o=t?i:e;return o&&this.unmountInactiveViews(o),{hasCompleted:t,requiresTransition:!0,enteringView:i,leavingView:e,direction:s.direction}}insertViewAt(t,i){const e=this.views,s=e.indexOf(t);s>-1?(h(t.nav===this,"view is not part of the nav"),e.splice(s,1),e.splice(i,0,t)):(h(!t.nav,"nav is used"),t.nav=this,e.splice(i,0,t))}removeView(t){h(2===t.state||3===t.state,"view state should be loaded or destroyed");const i=this.views,e=i.indexOf(t);h(e>-1,"view must be part of the stack"),e>=0&&i.splice(e,1)}destroyView(t){t._destroy(),this.removeView(t)}unmountInactiveViews(t){if(this.destroyed)return;const i=this.views,e=i.indexOf(t);for(let t=i.length-1;t>=0;t--){const s=i[t],o=s.element;o&&(t>e?(l(o,m),this.destroyView(s)):t<e&&v(o,!0))}}canStart(){return!this.gestureOrAnimationInProgress&&!!this.swipeGesture&&!this.isTransitioning&&0===this.transInstr.length&&this.canGoBackSync()}onStart(){this.gestureOrAnimationInProgress=!0,this.pop({direction:"back",progressAnimation:!0})}onMove(t){this.sbAni&&this.sbAni.progressStep(t)}onEnd(t,i,e){if(this.sbAni){this.sbAni.onFinish((()=>{this.gestureOrAnimationInProgress=!1}),{oneTimeCallback:!0});let s=t?-.001:.001;t?s+=r([0,0],[.32,.72],[0,1],[1,1],i)[0]:(this.sbAni.easing("cubic-bezier(1, 0, 0.68, 0.28)"),s+=r([0,0],[1,0],[.68,.28],[1,1],i)[0]),this.sbAni.progressEnd(t?1:0,s,e)}else this.gestureOrAnimationInProgress=!1}render(){return s("slot",{key:"8067c9835d255daec61f33dba200fd3a6ff839a0"})}get el(){return this}static get watchers(){return{swipeGesture:[{swipeGestureChanged:0}],root:[{rootChanged:0}]}}static get style(){return":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}"}},[257,"ion-nav",{delegate:[16],swipeGesture:[1028,"swipe-gesture"],animated:[4],animation:[16],rootParams:[16],root:[1],push:[64],insert:[64],insertPages:[64],pop:[64],popTo:[64],popToRoot:[64],removeIndex:[64],setRoot:[64],setPages:[64],setRouteId:[64],getRouteId:[64],getActive:[64],getByIndex:[64],canGoBack:[64],getPrevious:[64],getLength:[64]},void 0,{swipeGesture:[{swipeGestureChanged:0}],root:[{rootChanged:0}]}]),j=C,E=function(){"undefined"!=typeof customElements&&["ion-nav"].forEach((t=>{"ion-nav"===t&&(customElements.get(o(t))||customElements.define(o(t),C))}))};export{j as IonNav,E as defineCustomElement}