@pod-os/elements 0.7.1-92705ee.0 → 0.7.1-a71f01c.0

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 (634) hide show
  1. package/dist/cjs/{animation-5840e4df.js → animation-9bea118f.js} +115 -84
  2. package/dist/cjs/{app-globals-1aedd05c.js → app-globals-6352043e.js} +1 -1
  3. package/dist/cjs/{cubic-bezier-dcb7bfef.js → cubic-bezier-0b702a31.js} +13 -12
  4. package/dist/cjs/data-0c9489d7.js +1510 -0
  5. package/dist/cjs/dir-011f46ea.js +20 -0
  6. package/dist/cjs/elements.cjs.js +5 -5
  7. package/dist/cjs/focus-visible-2624ec15.js +76 -0
  8. package/dist/cjs/framework-delegate-437c0645.js +119 -0
  9. package/dist/cjs/{gesture-controller-fbbe9a65.js → gesture-controller-00a6b02f.js} +6 -2
  10. package/dist/cjs/{haptic-09e73337.js → haptic-7358cb0b.js} +37 -8
  11. package/dist/cjs/{hardware-back-button-01027575.js → hardware-back-button-25372ec7.js} +11 -8
  12. package/dist/cjs/{helpers-398ced09.js → helpers-cb08f5ae.js} +115 -15
  13. package/dist/cjs/{index-2067b305.js → index-1b07c737.js} +35 -24
  14. package/dist/cjs/{index-68ae43d2.js → index-2dc3637c.js} +34 -28
  15. package/dist/cjs/index-57b9fa9e.js +30 -0
  16. package/dist/cjs/{index-d01d9183.js → index-643851c6.js} +34 -19
  17. package/dist/cjs/index-731691ca.js +48 -0
  18. package/dist/cjs/{index-6bbae9b1.js → index-7d56774d.js} +12 -8
  19. package/dist/cjs/index-9fca5d6f.js +140 -0
  20. package/dist/cjs/index-b2a479e4.js +38 -0
  21. package/dist/cjs/{index-b4a9ece2.js → index-eaa0d16e.js} +7 -0
  22. package/dist/cjs/{tap-click-f24cb477.js → index-ed2ce04f.js} +37 -19
  23. package/dist/cjs/{input-shims-e959d9e2.js → input-shims-427999f7.js} +89 -38
  24. package/dist/cjs/ion-accordion-group.cjs.entry.js +205 -0
  25. package/dist/cjs/ion-accordion.cjs.entry.js +336 -0
  26. package/dist/cjs/ion-action-sheet_3.cjs.entry.js +865 -0
  27. package/dist/cjs/{ion-app_45.cjs.entry.js → ion-app_46.cjs.entry.js} +1906 -1492
  28. package/dist/cjs/ion-avatar.cjs.entry.js +2 -2
  29. package/dist/cjs/ion-back-button.cjs.entry.js +12 -11
  30. package/dist/cjs/ion-backdrop.cjs.entry.js +4 -4
  31. package/dist/cjs/ion-breadcrumb.cjs.entry.js +101 -0
  32. package/dist/cjs/ion-breadcrumbs.cjs.entry.js +137 -0
  33. package/dist/cjs/ion-buttons_3.cjs.entry.js +799 -0
  34. package/dist/cjs/ion-card-subtitle.cjs.entry.js +4 -4
  35. package/dist/cjs/{ion-list-header_3.cjs.entry.js → ion-checkbox_4.cjs.entry.js} +124 -23
  36. package/dist/cjs/ion-chip.cjs.entry.js +5 -10
  37. package/dist/cjs/ion-datetime-button.cjs.entry.js +346 -0
  38. package/dist/cjs/ion-datetime.cjs.entry.js +1548 -856
  39. package/dist/cjs/ion-fab-button.cjs.entry.js +26 -9
  40. package/dist/cjs/ion-fab-list.cjs.entry.js +4 -4
  41. package/dist/cjs/ion-fab.cjs.entry.js +15 -13
  42. package/dist/cjs/ion-img.cjs.entry.js +28 -4
  43. package/dist/cjs/ion-infinite-scroll-content.cjs.entry.js +5 -5
  44. package/dist/cjs/ion-infinite-scroll.cjs.entry.js +13 -13
  45. package/dist/cjs/ion-input.cjs.entry.js +57 -23
  46. package/dist/cjs/ion-item-option.cjs.entry.js +8 -8
  47. package/dist/cjs/ion-item-options.cjs.entry.js +5 -5
  48. package/dist/cjs/ion-item-sliding.cjs.entry.js +59 -63
  49. package/dist/cjs/ion-loading.cjs.entry.js +38 -37
  50. package/dist/cjs/ion-menu-button.cjs.entry.js +14 -12
  51. package/dist/cjs/ion-menu-toggle.cjs.entry.js +8 -7
  52. package/dist/cjs/ion-menu.cjs.entry.js +71 -57
  53. package/dist/cjs/ion-modal.cjs.entry.js +1386 -156
  54. package/dist/cjs/ion-nav-link.cjs.entry.js +5 -2
  55. package/dist/cjs/ion-nav.cjs.entry.js +177 -171
  56. package/dist/cjs/ion-picker-column.cjs.entry.js +25 -27
  57. package/dist/cjs/ion-picker.cjs.entry.js +22 -17
  58. package/dist/cjs/ion-popover.cjs.entry.js +1208 -182
  59. package/dist/cjs/ion-range.cjs.entry.js +137 -57
  60. package/dist/cjs/ion-refresher-content.cjs.entry.js +7 -12
  61. package/dist/cjs/ion-refresher.cjs.entry.js +150 -148
  62. package/dist/cjs/ion-reorder-group.cjs.entry.js +42 -35
  63. package/dist/cjs/ion-reorder.cjs.entry.js +5 -4
  64. package/dist/cjs/ion-route-redirect.cjs.entry.js +1 -1
  65. package/dist/cjs/ion-route.cjs.entry.js +1 -1
  66. package/dist/cjs/ion-router-link.cjs.entry.js +5 -5
  67. package/dist/cjs/ion-router-outlet.cjs.entry.js +24 -20
  68. package/dist/cjs/ion-router.cjs.entry.js +291 -194
  69. package/dist/cjs/ion-segment-button.cjs.entry.js +10 -17
  70. package/dist/cjs/ion-segment.cjs.entry.js +127 -26
  71. package/dist/cjs/ion-select-option.cjs.entry.js +3 -3
  72. package/dist/cjs/ion-select.cjs.entry.js +113 -78
  73. package/dist/cjs/ion-slide.cjs.entry.js +3 -3
  74. package/dist/cjs/ion-slides.cjs.entry.js +26 -27
  75. package/dist/cjs/ion-spinner.cjs.entry.js +10 -9
  76. package/dist/cjs/ion-split-pane.cjs.entry.js +16 -12
  77. package/dist/cjs/ion-tab-bar.cjs.entry.js +16 -23
  78. package/dist/cjs/ion-tab-button.cjs.entry.js +6 -6
  79. package/dist/cjs/ion-tab.cjs.entry.js +4 -4
  80. package/dist/cjs/ion-tabs.cjs.entry.js +4 -5
  81. package/dist/cjs/ion-text.cjs.entry.js +3 -3
  82. package/dist/cjs/ion-textarea.cjs.entry.js +31 -29
  83. package/dist/cjs/ion-thumbnail.cjs.entry.js +2 -2
  84. package/dist/cjs/ion-toast.cjs.entry.js +50 -60
  85. package/dist/cjs/ion-toggle.cjs.entry.js +41 -22
  86. package/dist/cjs/ion-virtual-scroll.cjs.entry.js +39 -31
  87. package/dist/cjs/{ionic-global-56e10eb5.js → ionic-global-f2d95fd3.js} +112 -93
  88. package/dist/cjs/{ios.transition-32e4623d.js → ios.transition-0f31ec9a.js} +78 -53
  89. package/dist/cjs/{keyboard-9e8103e4.js → keyboard-79afcba2.js} +6 -3
  90. package/dist/cjs/keyboard-controller-a934d106.js +42 -0
  91. package/dist/cjs/loader.cjs.js +5 -5
  92. package/dist/cjs/{md.transition-169c54f0.js → md.transition-d2a33a23.js} +15 -17
  93. package/dist/cjs/{menu-toggle-util-087678e0.js → menu-toggle-util-0a43ff7c.js} +5 -2
  94. package/dist/cjs/{overlays-49fe9ba7.js → overlays-f7d24abf.js} +190 -72
  95. package/dist/cjs/spinner-configs-cd0abbeb.js +147 -0
  96. package/dist/cjs/{status-tap-ada894ff.js → status-tap-beaa3a71.js} +10 -5
  97. package/dist/cjs/{swipe-back-c4a778df.js → swipe-back-666ea8e6.js} +34 -15
  98. package/dist/cjs/{theme-2259d0f5.js → theme-fc63803b.js} +9 -5
  99. package/dist/collection/collection-manifest.json +10 -4
  100. package/dist/collection/components/pos-rich-link/pos-rich-link.js +1 -1
  101. package/dist/components/ResourceAware.js +5 -0
  102. package/dist/components/action-sheet.js +309 -0
  103. package/dist/{esm/ion-alert.entry.js → components/alert.js} +150 -105
  104. package/dist/{esm/animation-fe6ed422.js → components/animation.js} +115 -84
  105. package/dist/components/app.js +112 -0
  106. package/dist/components/backdrop.js +82 -0
  107. package/dist/components/badge.js +42 -0
  108. package/dist/{esm/button-active-fd9d6d91.js → components/button-active.js} +9 -6
  109. package/dist/components/button.js +207 -0
  110. package/dist/{esm/ion-buttons.entry.js → components/buttons.js} +28 -12
  111. package/dist/components/card-content.js +40 -0
  112. package/dist/components/card-header.js +51 -0
  113. package/dist/components/card-title.js +43 -0
  114. package/dist/components/card.js +102 -0
  115. package/dist/{esm/ion-checkbox.entry.js → components/checkbox.js} +42 -24
  116. package/dist/components/col.js +161 -0
  117. package/dist/components/content.js +356 -0
  118. package/dist/{esm/cubic-bezier-108b8579.js → components/cubic-bezier.js} +13 -12
  119. package/dist/components/data.js +1463 -0
  120. package/dist/components/dir.js +18 -0
  121. package/dist/components/focus-visible.js +74 -0
  122. package/dist/components/footer.js +149 -0
  123. package/dist/components/framework-delegate.js +115 -0
  124. package/dist/{esm/gesture-controller-8f35af24.js → components/gesture-controller.js} +6 -2
  125. package/dist/components/grid.js +41 -0
  126. package/dist/{esm/haptic-c424e670.js → components/haptic.js} +38 -9
  127. package/dist/{esm/hardware-back-button-bb4c578a.js → components/hardware-back-button.js} +11 -8
  128. package/dist/components/header.js +360 -0
  129. package/dist/{esm/helpers-44e3bd9f.js → components/helpers.js} +113 -16
  130. package/dist/components/icon.js +367 -0
  131. package/dist/components/index.d.ts +41 -0
  132. package/dist/components/index.js +123 -0
  133. package/dist/components/index10.js +28 -0
  134. package/dist/{esm/tap-click-a7e55ef5.js → components/index11.js} +37 -19
  135. package/dist/components/index2.js +25 -0
  136. package/dist/{esm/index-8d682224.js → components/index3.js} +12 -8
  137. package/dist/components/index4.js +34 -0
  138. package/dist/components/index5.js +128 -0
  139. package/dist/{esm/index-97199683.js → components/index6.js} +34 -28
  140. package/dist/{esm/index-8a463a85.js → components/index7.js} +35 -24
  141. package/dist/{custom-elements/index.js → components/index8.js} +1049 -20945
  142. package/dist/{esm/index-3a1bd803.js → components/index9.js} +35 -20
  143. package/dist/{custom-elements → components}/input-shims.js +88 -38
  144. package/dist/components/ion-accordion-group.js +228 -0
  145. package/dist/components/ion-accordion.js +365 -0
  146. package/dist/components/ion-action-sheet.js +6 -0
  147. package/dist/components/ion-alert.js +6 -0
  148. package/dist/components/ion-app.js +6 -0
  149. package/dist/components/ion-avatar.js +39 -0
  150. package/dist/components/ion-back-button.js +128 -0
  151. package/dist/components/ion-backdrop.js +6 -0
  152. package/dist/components/ion-badge.js +6 -0
  153. package/dist/components/ion-breadcrumb.js +135 -0
  154. package/dist/components/ion-breadcrumbs.js +158 -0
  155. package/dist/components/ion-button.js +6 -0
  156. package/dist/components/ion-buttons.js +6 -0
  157. package/dist/components/ion-card-content.js +6 -0
  158. package/dist/components/ion-card-header.js +6 -0
  159. package/dist/components/ion-card-subtitle.js +46 -0
  160. package/dist/components/ion-card-title.js +6 -0
  161. package/dist/components/ion-card.js +6 -0
  162. package/dist/components/ion-checkbox.js +6 -0
  163. package/dist/components/ion-chip.js +59 -0
  164. package/dist/components/ion-col.js +6 -0
  165. package/dist/components/ion-content.js +6 -0
  166. package/dist/components/ion-datetime-button.js +375 -0
  167. package/dist/components/ion-datetime.js +1802 -0
  168. package/dist/components/ion-fab-button.js +149 -0
  169. package/dist/components/ion-fab-list.js +62 -0
  170. package/dist/components/ion-fab.js +97 -0
  171. package/dist/components/ion-footer.js +6 -0
  172. package/dist/components/ion-grid.js +6 -0
  173. package/dist/components/ion-header.js +6 -0
  174. package/dist/components/ion-icon.js +6 -0
  175. package/dist/components/ion-img.js +120 -0
  176. package/dist/components/ion-infinite-scroll-content.js +59 -0
  177. package/dist/components/ion-infinite-scroll.js +223 -0
  178. package/dist/components/ion-input.js +352 -0
  179. package/dist/components/ion-item-divider.js +6 -0
  180. package/dist/components/ion-item-group.js +6 -0
  181. package/dist/components/ion-item-option.js +89 -0
  182. package/dist/components/ion-item-options.js +63 -0
  183. package/dist/components/ion-item-sliding.js +419 -0
  184. package/dist/components/ion-item.js +6 -0
  185. package/dist/components/ion-label.js +6 -0
  186. package/dist/components/ion-list-header.js +6 -0
  187. package/dist/components/ion-list.js +6 -0
  188. package/dist/components/ion-loading.js +256 -0
  189. package/dist/components/ion-menu-button.js +107 -0
  190. package/dist/components/ion-menu-toggle.js +62 -0
  191. package/dist/components/ion-menu.js +611 -0
  192. package/dist/components/ion-modal.js +1765 -0
  193. package/dist/components/ion-nav-link.js +65 -0
  194. package/dist/components/ion-nav.js +905 -0
  195. package/dist/components/ion-note.js +6 -0
  196. package/dist/components/ion-picker-column-internal.js +6 -0
  197. package/dist/components/ion-picker-column.js +6 -0
  198. package/dist/components/ion-picker-internal.js +6 -0
  199. package/dist/components/ion-picker.js +263 -0
  200. package/dist/components/ion-popover.js +6 -0
  201. package/dist/components/ion-progress-bar.js +6 -0
  202. package/dist/components/ion-radio-group.js +6 -0
  203. package/dist/components/ion-radio.js +6 -0
  204. package/dist/components/ion-range.js +550 -0
  205. package/dist/components/ion-refresher-content.js +64 -0
  206. package/dist/components/ion-refresher.js +826 -0
  207. package/dist/components/ion-reorder-group.js +303 -0
  208. package/dist/components/ion-reorder.js +58 -0
  209. package/dist/components/ion-ripple-effect.js +6 -0
  210. package/dist/components/ion-route-redirect.js +40 -0
  211. package/dist/components/ion-route.js +68 -0
  212. package/dist/components/ion-router-link.js +59 -0
  213. package/dist/components/ion-router-outlet.js +223 -0
  214. package/dist/components/ion-router.js +852 -0
  215. package/dist/components/ion-row.js +6 -0
  216. package/dist/components/ion-searchbar.js +6 -0
  217. package/dist/components/ion-segment-button.js +128 -0
  218. package/dist/components/ion-segment.js +463 -0
  219. package/dist/components/ion-select-option.js +44 -0
  220. package/dist/components/ion-select-popover.js +6 -0
  221. package/dist/components/ion-select.js +596 -0
  222. package/dist/components/ion-skeleton-text.js +6 -0
  223. package/dist/components/ion-slide.js +38 -0
  224. package/dist/components/ion-slides.js +423 -0
  225. package/dist/components/ion-spinner.js +6 -0
  226. package/dist/components/ion-split-pane.js +179 -0
  227. package/dist/components/ion-tab-bar.js +86 -0
  228. package/dist/components/ion-tab-button.js +132 -0
  229. package/dist/components/ion-tab.js +86 -0
  230. package/dist/components/ion-tabs.js +176 -0
  231. package/dist/components/ion-text.js +40 -0
  232. package/dist/components/ion-textarea.js +287 -0
  233. package/dist/components/ion-thumbnail.js +34 -0
  234. package/dist/components/ion-title.js +6 -0
  235. package/dist/components/ion-toast.js +317 -0
  236. package/dist/components/ion-toggle.js +207 -0
  237. package/dist/components/ion-toolbar.js +6 -0
  238. package/dist/components/ion-virtual-scroll.js +588 -0
  239. package/dist/components/ionic-global.js +226 -0
  240. package/dist/{custom-elements → components}/ios.transition.js +75 -50
  241. package/dist/components/item-divider.js +54 -0
  242. package/dist/components/item-group.js +41 -0
  243. package/dist/components/item.js +323 -0
  244. package/dist/components/keyboard-controller.js +40 -0
  245. package/dist/{custom-elements → components}/keyboard.js +6 -3
  246. package/dist/components/label.js +95 -0
  247. package/dist/components/list-header.js +45 -0
  248. package/dist/components/list.js +66 -0
  249. package/dist/{custom-elements → components}/md.transition.js +12 -14
  250. package/dist/{esm/menu-toggle-util-562dfc9c.js → components/menu-toggle-util.js} +5 -2
  251. package/dist/components/note.js +42 -0
  252. package/dist/{esm/overlays-fc9a0625.js → components/overlays.js} +188 -72
  253. package/dist/components/picker-column-internal.js +315 -0
  254. package/dist/components/picker-column.js +343 -0
  255. package/dist/components/picker-internal.js +486 -0
  256. package/dist/components/popover.js +1440 -0
  257. package/dist/components/pos-app-browser.d.ts +11 -0
  258. package/dist/components/pos-app-browser.js +299 -0
  259. package/dist/components/pos-app-generic.d.ts +11 -0
  260. package/dist/components/pos-app-generic.js +6 -0
  261. package/dist/components/pos-app-generic2.js +194 -0
  262. package/dist/components/pos-app-image-viewer.d.ts +11 -0
  263. package/dist/components/pos-app-image-viewer.js +6 -0
  264. package/dist/components/pos-app-image-viewer2.js +162 -0
  265. package/dist/components/pos-app-rdf-document.d.ts +11 -0
  266. package/dist/components/pos-app-rdf-document.js +6 -0
  267. package/dist/components/pos-app-rdf-document2.js +170 -0
  268. package/dist/components/pos-app.d.ts +11 -0
  269. package/dist/components/pos-app.js +6 -0
  270. package/dist/components/pos-app2.js +53 -0
  271. package/dist/components/pos-description.d.ts +11 -0
  272. package/dist/components/pos-description.js +6 -0
  273. package/dist/components/pos-description2.js +38 -0
  274. package/dist/components/pos-image.d.ts +11 -0
  275. package/dist/components/pos-image.js +6 -0
  276. package/dist/components/pos-image2.js +117 -0
  277. package/dist/components/pos-label.d.ts +11 -0
  278. package/dist/components/pos-label.js +6 -0
  279. package/dist/components/pos-label2.js +38 -0
  280. package/dist/components/pos-literals.d.ts +11 -0
  281. package/dist/components/pos-literals.js +6 -0
  282. package/dist/components/pos-literals2.js +87 -0
  283. package/dist/components/pos-login.d.ts +11 -0
  284. package/dist/components/pos-login.js +6 -0
  285. package/dist/components/pos-login2.js +120 -0
  286. package/dist/components/pos-navigation-bar.d.ts +11 -0
  287. package/dist/components/pos-navigation-bar.js +6 -0
  288. package/dist/components/pos-navigation-bar2.js +52 -0
  289. package/dist/components/pos-picture.d.ts +11 -0
  290. package/dist/components/pos-picture.js +6 -0
  291. package/dist/components/pos-picture2.js +62 -0
  292. package/dist/components/pos-relations.d.ts +11 -0
  293. package/dist/components/pos-relations.js +6 -0
  294. package/dist/components/pos-relations2.js +135 -0
  295. package/dist/components/pos-resource.d.ts +11 -0
  296. package/dist/components/pos-resource.js +6 -0
  297. package/dist/components/pos-resource2.js +126 -0
  298. package/dist/components/pos-reverse-relations.d.ts +11 -0
  299. package/dist/components/pos-reverse-relations.js +6 -0
  300. package/dist/components/pos-reverse-relations2.js +135 -0
  301. package/dist/components/pos-rich-link.d.ts +11 -0
  302. package/dist/components/pos-rich-link.js +6 -0
  303. package/dist/components/pos-rich-link2.js +106 -0
  304. package/dist/components/pos-router.d.ts +11 -0
  305. package/dist/components/pos-router.js +6 -0
  306. package/dist/components/pos-router2.js +813 -0
  307. package/dist/components/pos-subjects.d.ts +11 -0
  308. package/dist/components/pos-subjects.js +6 -0
  309. package/dist/components/pos-subjects2.js +125 -0
  310. package/dist/components/pos-type-badges.d.ts +11 -0
  311. package/dist/components/pos-type-badges.js +6 -0
  312. package/dist/components/pos-type-badges2.js +69 -0
  313. package/dist/components/pos-type-router.d.ts +11 -0
  314. package/dist/components/pos-type-router.js +6 -0
  315. package/dist/components/pos-type-router2.js +241 -0
  316. package/dist/components/progress-bar.js +91 -0
  317. package/dist/components/radio-group.js +139 -0
  318. package/dist/components/radio.js +135 -0
  319. package/dist/components/ripple-effect.js +107 -0
  320. package/dist/components/row.js +31 -0
  321. package/dist/components/searchbar.js +412 -0
  322. package/dist/components/select-popover.js +174 -0
  323. package/dist/components/session.js +202 -0
  324. package/dist/components/skeleton-text.js +46 -0
  325. package/dist/components/spinner.js +224 -0
  326. package/dist/{custom-elements → components}/status-tap.js +8 -4
  327. package/dist/{custom-elements → components}/swipe-back.js +33 -13
  328. package/dist/{custom-elements → components}/swiper.bundle.js +0 -0
  329. package/dist/{esm/theme-d21826a7.js → components/theme.js} +9 -5
  330. package/dist/components/title.js +66 -0
  331. package/dist/components/toolbar.js +87 -0
  332. package/dist/elements/elements.css +1 -1
  333. package/dist/elements/elements.esm.js +1 -1
  334. package/dist/elements/p-00f19b1d.js +4 -0
  335. package/dist/elements/p-0587332d.entry.js +1 -0
  336. package/dist/elements/p-07f54139.entry.js +7 -0
  337. package/dist/elements/{p-cfc0e54d.js → p-0991c811.js} +3 -0
  338. package/dist/elements/p-0a69a563.entry.js +1 -0
  339. package/dist/elements/p-0d284fe0.entry.js +1 -0
  340. package/dist/elements/p-116437b0.entry.js +13 -0
  341. package/dist/elements/p-12880671.entry.js +1 -0
  342. package/dist/elements/p-14ccd586.entry.js +1 -0
  343. package/dist/elements/{p-83d45051.entry.js → p-14df6ac0.entry.js} +1 -1
  344. package/dist/elements/{p-e860be6a.entry.js → p-17079f06.entry.js} +1 -1
  345. package/dist/elements/p-19e4a688.js +4 -0
  346. package/dist/elements/p-1afc4eb4.js +4 -0
  347. package/dist/elements/p-1beaf6bf.js +4 -0
  348. package/dist/elements/p-1d1c6a6f.entry.js +1 -0
  349. package/dist/elements/{p-31d30e42.entry.js → p-1d98f84b.entry.js} +1 -1
  350. package/dist/elements/p-1e617706.entry.js +7 -0
  351. package/dist/elements/p-278ca4c9.js +4 -0
  352. package/dist/elements/p-27f5629c.entry.js +1 -0
  353. package/dist/elements/p-29c0f03f.js +4 -0
  354. package/dist/elements/p-2a629468.entry.js +4 -0
  355. package/dist/elements/p-2da59aca.js +4 -0
  356. package/dist/elements/p-3152143f.js +4 -0
  357. package/dist/elements/p-343ff720.entry.js +7 -0
  358. package/dist/elements/p-36d4c9a8.js +4 -0
  359. package/dist/elements/p-3a30dfb2.entry.js +1 -0
  360. package/dist/elements/p-3c013bf1.entry.js +1 -0
  361. package/dist/elements/{p-74ba1e42.entry.js → p-3c318da5.entry.js} +1 -1
  362. package/dist/elements/p-3cee3222.entry.js +1 -0
  363. package/dist/elements/p-3d0f59af.entry.js +7 -0
  364. package/dist/elements/p-41cb5688.entry.js +1 -0
  365. package/dist/elements/p-480b3c4f.entry.js +1 -0
  366. package/dist/elements/p-4e9d8f18.entry.js +1 -0
  367. package/dist/elements/p-53e23176.js +2 -0
  368. package/dist/elements/p-548524f3.js +4 -0
  369. package/dist/elements/p-5739fa41.entry.js +1 -0
  370. package/dist/elements/p-5808c505.js +1 -0
  371. package/dist/elements/p-58a8cc2a.js +4 -0
  372. package/dist/elements/p-6035415e.entry.js +1 -0
  373. package/dist/elements/p-60eeae90.js +4 -0
  374. package/dist/elements/p-667550a9.entry.js +14 -0
  375. package/dist/elements/p-67777478.entry.js +1 -0
  376. package/dist/elements/p-6ab826e1.entry.js +1 -0
  377. package/dist/elements/p-6f5a2827.entry.js +1 -0
  378. package/dist/elements/p-7916ecc5.entry.js +1 -0
  379. package/dist/elements/p-79f06b80.entry.js +1 -0
  380. package/dist/elements/p-7d0def79.js +5 -0
  381. package/dist/elements/p-8112afea.js +4 -0
  382. package/dist/elements/p-83678d7d.entry.js +4 -0
  383. package/dist/elements/p-87e45c94.entry.js +1 -0
  384. package/dist/elements/p-8f80768f.entry.js +4 -0
  385. package/dist/elements/p-8fe0433b.js +4 -0
  386. package/dist/elements/{p-4cb27b48.entry.js → p-9147d82b.entry.js} +1 -1
  387. package/dist/elements/p-96aeb07a.entry.js +1 -0
  388. package/dist/elements/p-97abb434.entry.js +1 -0
  389. package/dist/elements/p-98497a4b.entry.js +1 -0
  390. package/dist/elements/p-9c719139.js +4 -0
  391. package/dist/elements/p-9ca37332.js +4 -0
  392. package/dist/elements/{p-37de7110.js → p-9d48def2.js} +3 -0
  393. package/dist/elements/p-a805f2f9.entry.js +1 -0
  394. package/dist/elements/p-a86a5bfa.entry.js +1 -0
  395. package/dist/elements/{p-9c1dbe52.entry.js → p-ac34eab7.entry.js} +1 -1
  396. package/dist/elements/p-ad366eab.entry.js +4 -0
  397. package/dist/elements/p-aef3a931.js +7 -0
  398. package/dist/elements/p-b0537eb3.entry.js +1 -0
  399. package/dist/elements/p-b41e66f0.entry.js +1 -0
  400. package/dist/elements/p-b47e7091.entry.js +1 -0
  401. package/dist/elements/p-b840320e.js +4 -0
  402. package/dist/elements/p-b934ac5d.entry.js +1 -0
  403. package/dist/elements/p-bc63f4b6.entry.js +1 -0
  404. package/dist/elements/p-bd12806f.entry.js +1 -0
  405. package/dist/elements/p-bf90022d.entry.js +4 -0
  406. package/dist/elements/p-c16d38d5.js +4 -0
  407. package/dist/elements/p-c84205a3.js +4 -0
  408. package/dist/elements/{p-06675ac7.entry.js → p-cbe318f8.entry.js} +1 -1
  409. package/dist/elements/p-cfed7395.js +4 -0
  410. package/dist/elements/p-d3e75c94.entry.js +1 -0
  411. package/dist/elements/p-d8e7ebf4.entry.js +7 -0
  412. package/dist/elements/p-d9880221.entry.js +4 -0
  413. package/dist/elements/p-da5db8fb.entry.js +1 -0
  414. package/dist/elements/{p-91fe653f.js → p-dcc6b03c.js} +3 -0
  415. package/dist/elements/{p-305e246c.entry.js → p-dd846020.entry.js} +1 -1
  416. package/dist/elements/p-dffd8689.js +4 -0
  417. package/dist/elements/p-e3bcb6e8.entry.js +1 -0
  418. package/dist/elements/p-e495a095.js +4 -0
  419. package/dist/elements/p-e59d9789.entry.js +1 -0
  420. package/dist/elements/p-e5fc7d42.entry.js +1 -0
  421. package/dist/elements/{p-aaa8393e.entry.js → p-eb137e9d.entry.js} +1 -1
  422. package/dist/elements/p-f4e54a17.js +7 -0
  423. package/dist/elements/p-f67d0717.entry.js +1 -0
  424. package/dist/elements/p-f7f4c640.js +1 -0
  425. package/dist/elements/p-f851b91a.js +4 -0
  426. package/dist/elements/p-fb27ee76.entry.js +1 -0
  427. package/dist/elements/p-fbddca35.entry.js +1 -0
  428. package/dist/elements/p-fdac5f3a.js +4 -0
  429. package/dist/elements/p-feb0cea8.entry.js +4 -0
  430. package/dist/esm/animation-801a007a.js +986 -0
  431. package/dist/esm/{app-globals-27d92837.js → app-globals-05a3abfb.js} +1 -1
  432. package/dist/esm/cubic-bezier-538b6253.js +90 -0
  433. package/dist/esm/data-62c81c24.js +1463 -0
  434. package/dist/esm/dir-defb16c6.js +18 -0
  435. package/dist/esm/elements.js +5 -5
  436. package/dist/esm/focus-visible-78d55799.js +74 -0
  437. package/dist/esm/framework-delegate-7e2b767b.js +115 -0
  438. package/dist/esm/gesture-controller-c466ff14.js +195 -0
  439. package/dist/esm/haptic-e7d5ef4d.js +135 -0
  440. package/dist/esm/hardware-back-button-242191a7.js +71 -0
  441. package/dist/esm/helpers-aeff219b.js +410 -0
  442. package/dist/esm/index-0dbaca1a.js +28 -0
  443. package/dist/esm/index-1f3d8582.js +34 -0
  444. package/dist/esm/index-2be9a18b.js +312 -0
  445. package/dist/esm/index-51e4a829.js +137 -0
  446. package/dist/esm/index-6048aed6.js +224 -0
  447. package/dist/esm/index-65ecd543.js +25 -0
  448. package/dist/{custom-elements/tap-click.js → esm/index-b212db1c.js} +37 -19
  449. package/dist/esm/{index-e4deec27.js → index-cb938ffb.js} +7 -1
  450. package/dist/esm/index-d39eb62b.js +463 -0
  451. package/dist/esm/index-ebf7f059.js +128 -0
  452. package/dist/esm/{input-shims-3b48722f.js → input-shims-8a389148.js} +89 -38
  453. package/dist/esm/ion-accordion-group.entry.js +201 -0
  454. package/dist/esm/ion-accordion.entry.js +332 -0
  455. package/dist/esm/ion-action-sheet_3.entry.js +859 -0
  456. package/dist/esm/{ion-app_45.entry.js → ion-app_46.entry.js} +1906 -1493
  457. package/dist/esm/ion-avatar.entry.js +2 -2
  458. package/dist/esm/ion-back-button.entry.js +12 -11
  459. package/dist/esm/ion-backdrop.entry.js +4 -4
  460. package/dist/esm/ion-breadcrumb.entry.js +97 -0
  461. package/dist/esm/ion-breadcrumbs.entry.js +133 -0
  462. package/dist/esm/ion-buttons_3.entry.js +793 -0
  463. package/dist/esm/ion-card-subtitle.entry.js +4 -4
  464. package/dist/esm/{ion-list-header_3.entry.js → ion-checkbox_4.entry.js} +124 -24
  465. package/dist/esm/ion-chip.entry.js +5 -10
  466. package/dist/esm/ion-datetime-button.entry.js +342 -0
  467. package/dist/esm/ion-datetime.entry.js +1548 -856
  468. package/dist/esm/ion-fab-button.entry.js +26 -9
  469. package/dist/esm/ion-fab-list.entry.js +4 -4
  470. package/dist/esm/ion-fab.entry.js +15 -13
  471. package/dist/esm/ion-img.entry.js +28 -4
  472. package/dist/esm/ion-infinite-scroll-content.entry.js +5 -5
  473. package/dist/esm/ion-infinite-scroll.entry.js +13 -13
  474. package/dist/esm/ion-input.entry.js +57 -23
  475. package/dist/esm/ion-item-option.entry.js +8 -8
  476. package/dist/esm/ion-item-options.entry.js +5 -5
  477. package/dist/esm/ion-item-sliding.entry.js +59 -63
  478. package/dist/esm/ion-loading.entry.js +38 -37
  479. package/dist/esm/ion-menu-button.entry.js +14 -12
  480. package/dist/esm/ion-menu-toggle.entry.js +8 -7
  481. package/dist/esm/ion-menu.entry.js +71 -57
  482. package/dist/esm/ion-modal.entry.js +1377 -147
  483. package/dist/esm/ion-nav-link.entry.js +5 -2
  484. package/dist/esm/ion-nav.entry.js +177 -171
  485. package/dist/esm/ion-picker-column.entry.js +25 -27
  486. package/dist/esm/ion-picker.entry.js +22 -17
  487. package/dist/esm/ion-popover.entry.js +1208 -182
  488. package/dist/esm/ion-range.entry.js +137 -57
  489. package/dist/esm/ion-refresher-content.entry.js +7 -12
  490. package/dist/esm/ion-refresher.entry.js +149 -147
  491. package/dist/esm/ion-reorder-group.entry.js +42 -35
  492. package/dist/esm/ion-reorder.entry.js +5 -4
  493. package/dist/esm/ion-route-redirect.entry.js +1 -1
  494. package/dist/esm/ion-route.entry.js +1 -1
  495. package/dist/esm/ion-router-link.entry.js +5 -5
  496. package/dist/esm/ion-router-outlet.entry.js +24 -20
  497. package/dist/esm/ion-router.entry.js +291 -194
  498. package/dist/esm/ion-segment-button.entry.js +10 -17
  499. package/dist/esm/ion-segment.entry.js +127 -26
  500. package/dist/esm/ion-select-option.entry.js +3 -3
  501. package/dist/esm/ion-select.entry.js +113 -78
  502. package/dist/esm/ion-slide.entry.js +3 -3
  503. package/dist/esm/ion-slides.entry.js +26 -27
  504. package/dist/esm/ion-spinner.entry.js +10 -9
  505. package/dist/esm/ion-split-pane.entry.js +16 -12
  506. package/dist/esm/ion-tab-bar.entry.js +16 -23
  507. package/dist/esm/ion-tab-button.entry.js +6 -6
  508. package/dist/esm/ion-tab.entry.js +4 -4
  509. package/dist/esm/ion-tabs.entry.js +4 -5
  510. package/dist/esm/ion-text.entry.js +3 -3
  511. package/dist/esm/ion-textarea.entry.js +31 -29
  512. package/dist/esm/ion-thumbnail.entry.js +2 -2
  513. package/dist/esm/ion-toast.entry.js +50 -60
  514. package/dist/esm/ion-toggle.entry.js +41 -22
  515. package/dist/esm/ion-virtual-scroll.entry.js +39 -31
  516. package/dist/esm/{ionic-global-2e28f7c7.js → ionic-global-6cd57191.js} +112 -93
  517. package/dist/esm/{ios.transition-a783e3cd.js → ios.transition-bbd952f2.js} +78 -53
  518. package/dist/esm/{keyboard-e6abcb80.js → keyboard-413afe04.js} +6 -3
  519. package/dist/esm/keyboard-controller-33693bc2.js +40 -0
  520. package/dist/esm/loader.js +5 -5
  521. package/dist/esm/{md.transition-5a4a8c82.js → md.transition-5170a6d3.js} +15 -17
  522. package/dist/esm/menu-toggle-util-82bf888a.js +12 -0
  523. package/dist/esm/overlays-bd4abb68.js +502 -0
  524. package/dist/esm/spinner-configs-cbcd1f62.js +145 -0
  525. package/dist/esm/{status-tap-69e62ad6.js → status-tap-ad757b8a.js} +10 -5
  526. package/dist/esm/swipe-back-7ef22876.js +69 -0
  527. package/dist/esm/theme-7cf2cab0.js +43 -0
  528. package/dist/types/components.d.ts +0 -13
  529. package/package.json +7 -8
  530. package/dist/cjs/button-active-c14dab31.js +0 -66
  531. package/dist/cjs/focus-visible-16c98640.js +0 -45
  532. package/dist/cjs/framework-delegate-c45292a3.js +0 -37
  533. package/dist/cjs/ion-action-sheet.cjs.entry.js +0 -265
  534. package/dist/cjs/ion-alert.cjs.entry.js +0 -456
  535. package/dist/cjs/ion-buttons.cjs.entry.js +0 -42
  536. package/dist/cjs/ion-checkbox.cjs.entry.js +0 -117
  537. package/dist/cjs/ion-note.cjs.entry.js +0 -29
  538. package/dist/cjs/ion-select-popover.cjs.entry.js +0 -35
  539. package/dist/cjs/spinner-configs-fb16b986.js +0 -112
  540. package/dist/cjs/test-component.cjs.entry.js +0 -13
  541. package/dist/collection/test/TestComponent.js +0 -3
  542. package/dist/collection/test/mockPodOS.js +0 -35
  543. package/dist/collection/test/renderFunctionalComponent.js +0 -8
  544. package/dist/custom-elements/focus-visible.js +0 -43
  545. package/dist/custom-elements/index.d.ts +0 -165
  546. package/dist/elements/p-03bda390.js +0 -1
  547. package/dist/elements/p-0be044f1.entry.js +0 -1
  548. package/dist/elements/p-119c7c6c.entry.js +0 -1
  549. package/dist/elements/p-14c7c3ea.entry.js +0 -1
  550. package/dist/elements/p-1d4a2c61.js +0 -1
  551. package/dist/elements/p-1d894ac4.entry.js +0 -1
  552. package/dist/elements/p-1dafa1ce.entry.js +0 -1
  553. package/dist/elements/p-23b89ccb.entry.js +0 -1
  554. package/dist/elements/p-2c03b9ab.entry.js +0 -1
  555. package/dist/elements/p-346985f2.js +0 -1
  556. package/dist/elements/p-360f1c62.entry.js +0 -1
  557. package/dist/elements/p-373e1f25.entry.js +0 -1
  558. package/dist/elements/p-40547acb.entry.js +0 -1
  559. package/dist/elements/p-40b68014.entry.js +0 -1
  560. package/dist/elements/p-42e4f702.entry.js +0 -1
  561. package/dist/elements/p-489807e5.js +0 -1
  562. package/dist/elements/p-4ad72d54.entry.js +0 -1
  563. package/dist/elements/p-4cca7b5e.entry.js +0 -1
  564. package/dist/elements/p-4f24d306.js +0 -1
  565. package/dist/elements/p-519d6a53.entry.js +0 -1
  566. package/dist/elements/p-536e8e52.entry.js +0 -1
  567. package/dist/elements/p-599bb53f.entry.js +0 -1
  568. package/dist/elements/p-5eb7a546.js +0 -1
  569. package/dist/elements/p-60df2bed.entry.js +0 -1
  570. package/dist/elements/p-65133e33.js +0 -1
  571. package/dist/elements/p-6693fce8.js +0 -1
  572. package/dist/elements/p-689bdcc1.entry.js +0 -1
  573. package/dist/elements/p-70713b3d.entry.js +0 -1
  574. package/dist/elements/p-707d5d76.js +0 -1
  575. package/dist/elements/p-7212b7f2.js +0 -1
  576. package/dist/elements/p-73992898.entry.js +0 -1
  577. package/dist/elements/p-792c1e0f.entry.js +0 -1
  578. package/dist/elements/p-7e5300af.js +0 -2
  579. package/dist/elements/p-8068987c.entry.js +0 -1
  580. package/dist/elements/p-83accf46.entry.js +0 -1
  581. package/dist/elements/p-86635d06.entry.js +0 -1
  582. package/dist/elements/p-874c2b44.js +0 -1
  583. package/dist/elements/p-89c12ce8.entry.js +0 -1
  584. package/dist/elements/p-8bcba3f7.entry.js +0 -1
  585. package/dist/elements/p-8c759f51.entry.js +0 -1
  586. package/dist/elements/p-8f945e6b.entry.js +0 -1
  587. package/dist/elements/p-9300ab6a.js +0 -1
  588. package/dist/elements/p-93cacd51.entry.js +0 -1
  589. package/dist/elements/p-9408d0b4.entry.js +0 -1
  590. package/dist/elements/p-98c79eda.js +0 -1
  591. package/dist/elements/p-99f8abed.js +0 -1
  592. package/dist/elements/p-9ca7e079.js +0 -1
  593. package/dist/elements/p-a4648b74.entry.js +0 -1
  594. package/dist/elements/p-aab0f63c.js +0 -1
  595. package/dist/elements/p-ad4e2295.entry.js +0 -1
  596. package/dist/elements/p-afb8f7d5.entry.js +0 -1
  597. package/dist/elements/p-b055ec44.js +0 -1
  598. package/dist/elements/p-b078d63b.entry.js +0 -1
  599. package/dist/elements/p-b3460325.entry.js +0 -1
  600. package/dist/elements/p-b5406b58.entry.js +0 -1
  601. package/dist/elements/p-b5ef0c91.entry.js +0 -1
  602. package/dist/elements/p-b6ba623e.entry.js +0 -1
  603. package/dist/elements/p-b9926d8b.entry.js +0 -1
  604. package/dist/elements/p-bfd4cfcd.entry.js +0 -1
  605. package/dist/elements/p-c08dd7d0.entry.js +0 -1
  606. package/dist/elements/p-c0db9c51.entry.js +0 -1
  607. package/dist/elements/p-c1e7fbfb.js +0 -1
  608. package/dist/elements/p-ca69d6c9.js +0 -1
  609. package/dist/elements/p-cc4cb1ac.entry.js +0 -1
  610. package/dist/elements/p-cf8a7031.entry.js +0 -1
  611. package/dist/elements/p-cff82b6f.js +0 -1
  612. package/dist/elements/p-d01009b8.entry.js +0 -67
  613. package/dist/elements/p-d6d1e65f.entry.js +0 -1
  614. package/dist/elements/p-d9462b66.entry.js +0 -1
  615. package/dist/elements/p-e2e0fee9.entry.js +0 -1
  616. package/dist/elements/p-e642b266.entry.js +0 -1
  617. package/dist/elements/p-e953934f.entry.js +0 -1
  618. package/dist/elements/p-f0474f46.js +0 -1
  619. package/dist/elements/p-f10a94f6.entry.js +0 -1
  620. package/dist/elements/p-f2426182.entry.js +0 -1
  621. package/dist/elements/p-f327fd21.js +0 -1
  622. package/dist/elements/p-f84987ee.js +0 -1
  623. package/dist/elements/p-f8a3367d.entry.js +0 -1
  624. package/dist/esm/focus-visible-edb28f19.js +0 -43
  625. package/dist/esm/framework-delegate-9cd8048f.js +0 -34
  626. package/dist/esm/ion-action-sheet.entry.js +0 -261
  627. package/dist/esm/ion-note.entry.js +0 -25
  628. package/dist/esm/ion-select-popover.entry.js +0 -31
  629. package/dist/esm/spinner-configs-aaf2a1a9.js +0 -110
  630. package/dist/esm/swipe-back-d84cfc8a.js +0 -50
  631. package/dist/esm/test-component.entry.js +0 -9
  632. package/dist/types/test/TestComponent.d.ts +0 -2
  633. package/dist/types/test/mockPodOS.d.ts +0 -11
  634. package/dist/types/test/renderFunctionalComponent.d.ts +0 -1
@@ -2,13 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-b4a9ece2.js');
6
- const ionicGlobal = require('./ionic-global-56e10eb5.js');
7
- const cubicBezier = require('./cubic-bezier-dcb7bfef.js');
8
- const helpers = require('./helpers-398ced09.js');
9
- const index$1 = require('./index-2067b305.js');
10
- const frameworkDelegate = require('./framework-delegate-c45292a3.js');
5
+ const index = require('./index-eaa0d16e.js');
6
+ const ionicGlobal = require('./ionic-global-f2d95fd3.js');
7
+ const cubicBezier = require('./cubic-bezier-0b702a31.js');
8
+ const helpers = require('./helpers-cb08f5ae.js');
9
+ const index$1 = require('./index-1b07c737.js');
10
+ const frameworkDelegate = require('./framework-delegate-437c0645.js');
11
11
 
12
+ /*!
13
+ * (C) Ionic http://ionicframework.com - MIT License
14
+ */
12
15
  const VIEW_STATE_NEW = 1;
13
16
  const VIEW_STATE_ATTACHED = 2;
14
17
  const VIEW_STATE_DESTROYED = 3;
@@ -50,28 +53,7 @@ const matches = (view, id, params) => {
50
53
  if (view.component !== id) {
51
54
  return false;
52
55
  }
53
- const currentParams = view.params;
54
- if (currentParams === params) {
55
- return true;
56
- }
57
- if (!currentParams && !params) {
58
- return true;
59
- }
60
- if (!currentParams || !params) {
61
- return false;
62
- }
63
- const keysA = Object.keys(currentParams);
64
- const keysB = Object.keys(params);
65
- if (keysA.length !== keysB.length) {
66
- return false;
67
- }
68
- // Test for A's keys different from B.
69
- for (const key of keysA) {
70
- if (currentParams[key] !== params[key]) {
71
- return false;
72
- }
73
- }
74
- return true;
56
+ return helpers.shallowEqualStringMap(view.params, params);
75
57
  };
76
58
  const convertToView = (page, params) => {
77
59
  if (!page) {
@@ -83,22 +65,17 @@ const convertToView = (page, params) => {
83
65
  return new ViewController(page, params);
84
66
  };
85
67
  const convertToViews = (pages) => {
86
- return pages.map(page => {
68
+ return pages
69
+ .map((page) => {
87
70
  if (page instanceof ViewController) {
88
71
  return page;
89
72
  }
90
73
  if ('component' in page) {
91
- /**
92
- * TODO Ionic 6:
93
- * Consider switching to just using `undefined` here
94
- * as well as on the public interfaces and on
95
- * `NavComponentWithProps`. Previously `pages` was
96
- * of type `any[]` so TypeScript did not catch this.
97
- */
98
- return convertToView(page.component, (page.componentProps === null) ? undefined : page.componentProps);
74
+ return convertToView(page.component, page.componentProps === null ? undefined : page.componentProps);
99
75
  }
100
76
  return convertToView(page, undefined);
101
- }).filter(v => v !== null);
77
+ })
78
+ .filter((v) => v !== null);
102
79
  };
103
80
 
104
81
  const navCss = ":host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;overflow:hidden;z-index:0}";
@@ -133,9 +110,7 @@ const Nav = class {
133
110
  }
134
111
  }
135
112
  componentWillLoad() {
136
- this.useRouter =
137
- !!document.querySelector('ion-router') &&
138
- !this.el.closest('[no-router]');
113
+ this.useRouter = document.querySelector('ion-router') !== null && this.el.closest('[no-router]') === null;
139
114
  if (this.swipeGesture === undefined) {
140
115
  const mode = ionicGlobal.getIonMode(this);
141
116
  this.swipeGesture = ionicGlobal.config.getBoolean('swipeBackEnabled', mode === 'ios');
@@ -144,20 +119,24 @@ const Nav = class {
144
119
  }
145
120
  async componentDidLoad() {
146
121
  this.rootChanged();
147
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-c4a778df.js'); })).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
122
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-666ea8e6.js'); })).createSwipeBackGesture(this.el, this.canStart.bind(this), this.onStart.bind(this), this.onMove.bind(this), this.onEnd.bind(this));
148
123
  this.swipeGestureChanged();
149
124
  }
125
+ connectedCallback() {
126
+ this.destroyed = false;
127
+ }
150
128
  disconnectedCallback() {
151
129
  for (const view of this.views) {
152
130
  index$1.lifecycle(view.element, index$1.LIFECYCLE_WILL_UNLOAD);
153
131
  view._destroy();
154
132
  }
133
+ // Release swipe back gesture and transition.
155
134
  if (this.gesture) {
156
135
  this.gesture.destroy();
157
136
  this.gesture = undefined;
158
137
  }
159
- // release swipe back gesture and transition
160
- this.transInstr.length = this.views.length = 0;
138
+ this.transInstr.length = 0;
139
+ this.views.length = 0;
161
140
  this.destroyed = true;
162
141
  }
163
142
  /**
@@ -171,11 +150,7 @@ const Nav = class {
171
150
  * @param done The transition complete function.
172
151
  */
173
152
  push(component, componentProps, opts, done) {
174
- return this.queueTrns({
175
- insertStart: -1,
176
- insertViews: [{ component, componentProps }],
177
- opts
178
- }, done);
153
+ return this.insert(-1, component, componentProps, opts, done);
179
154
  }
180
155
  /**
181
156
  * Inserts a component into the navigation stack at the specified index.
@@ -188,11 +163,7 @@ const Nav = class {
188
163
  * @param done The transition complete function.
189
164
  */
190
165
  insert(insertIndex, component, componentProps, opts, done) {
191
- return this.queueTrns({
192
- insertStart: insertIndex,
193
- insertViews: [{ component, componentProps }],
194
- opts
195
- }, done);
166
+ return this.insertPages(insertIndex, [{ component, componentProps }], opts, done);
196
167
  }
197
168
  /**
198
169
  * Inserts an array of components into the navigation stack at the specified index.
@@ -208,7 +179,7 @@ const Nav = class {
208
179
  return this.queueTrns({
209
180
  insertStart: insertIndex,
210
181
  insertViews: insertComponents,
211
- opts
182
+ opts,
212
183
  }, done);
213
184
  }
214
185
  /**
@@ -219,11 +190,7 @@ const Nav = class {
219
190
  * @param done The transition complete function.
220
191
  */
221
192
  pop(opts, done) {
222
- return this.queueTrns({
223
- removeStart: -1,
224
- removeCount: 1,
225
- opts
226
- }, done);
193
+ return this.removeIndex(-1, 1, opts, done);
227
194
  }
228
195
  /**
229
196
  * Pop to a specific index in the navigation stack.
@@ -233,19 +200,19 @@ const Nav = class {
233
200
  * @param done The transition complete function.
234
201
  */
235
202
  popTo(indexOrViewCtrl, opts, done) {
236
- const tiConfig = {
203
+ const ti = {
237
204
  removeStart: -1,
238
205
  removeCount: -1,
239
- opts
206
+ opts,
240
207
  };
241
208
  if (typeof indexOrViewCtrl === 'object' && indexOrViewCtrl.component) {
242
- tiConfig.removeView = indexOrViewCtrl;
243
- tiConfig.removeStart = 1;
209
+ ti.removeView = indexOrViewCtrl;
210
+ ti.removeStart = 1;
244
211
  }
245
212
  else if (typeof indexOrViewCtrl === 'number') {
246
- tiConfig.removeStart = indexOrViewCtrl + 1;
213
+ ti.removeStart = indexOrViewCtrl + 1;
247
214
  }
248
- return this.queueTrns(tiConfig, done);
215
+ return this.queueTrns(ti, done);
249
216
  }
250
217
  /**
251
218
  * Navigate back to the root of the stack, no matter how far back that is.
@@ -254,11 +221,7 @@ const Nav = class {
254
221
  * @param done The transition complete function.
255
222
  */
256
223
  popToRoot(opts, done) {
257
- return this.queueTrns({
258
- removeStart: 1,
259
- removeCount: -1,
260
- opts
261
- }, done);
224
+ return this.removeIndex(1, -1, opts, done);
262
225
  }
263
226
  /**
264
227
  * Removes a component from the navigation stack at the specified index.
@@ -272,7 +235,7 @@ const Nav = class {
272
235
  return this.queueTrns({
273
236
  removeStart: startIndex,
274
237
  removeCount,
275
- opts
238
+ opts,
276
239
  }, done);
277
240
  }
278
241
  /**
@@ -297,9 +260,7 @@ const Nav = class {
297
260
  * @param done The transition complete function.
298
261
  */
299
262
  setPages(views, opts, done) {
300
- if (opts == null) {
301
- opts = {};
302
- }
263
+ opts !== null && opts !== void 0 ? opts : (opts = {});
303
264
  // if animation wasn't set to true then default it to NOT animate
304
265
  if (opts.animated !== true) {
305
266
  opts.animated = false;
@@ -309,42 +270,53 @@ const Nav = class {
309
270
  insertViews: views,
310
271
  removeStart: 0,
311
272
  removeCount: -1,
312
- opts
273
+ opts,
313
274
  }, done);
314
275
  }
315
- /** @internal */
276
+ /**
277
+ * Called by the router to update the view.
278
+ *
279
+ * @param id The component tag.
280
+ * @param params The component params.
281
+ * @param direction A direction hint.
282
+ * @param animation an AnimationBuilder.
283
+ *
284
+ * @return the status.
285
+ * @internal
286
+ */
316
287
  setRouteId(id, params, direction, animation) {
317
288
  const active = this.getActiveSync();
318
289
  if (matches(active, id, params)) {
319
290
  return Promise.resolve({
320
291
  changed: false,
321
- element: active.element
292
+ element: active.element,
322
293
  });
323
294
  }
324
295
  let resolve;
325
- const promise = new Promise(r => (resolve = r));
296
+ const promise = new Promise((r) => (resolve = r));
326
297
  let finish;
327
298
  const commonOpts = {
328
299
  updateURL: false,
329
- viewIsReady: enteringEl => {
300
+ viewIsReady: (enteringEl) => {
330
301
  let mark;
331
- const p = new Promise(r => (mark = r));
302
+ const p = new Promise((r) => (mark = r));
332
303
  resolve({
333
304
  changed: true,
334
305
  element: enteringEl,
335
306
  markVisible: async () => {
336
307
  mark();
337
308
  await finish;
338
- }
309
+ },
339
310
  });
340
311
  return p;
341
- }
312
+ },
342
313
  };
343
314
  if (direction === 'root') {
344
315
  finish = this.setRoot(id, params, commonOpts);
345
316
  }
346
317
  else {
347
- const viewController = this.views.find(v => matches(v, id, params));
318
+ // Look for a view matching the target in the view stack.
319
+ const viewController = this.views.find((v) => matches(v, id, params));
348
320
  if (viewController) {
349
321
  finish = this.popTo(viewController, Object.assign(Object.assign({}, commonOpts), { direction: 'back', animationBuilder: animation }));
350
322
  }
@@ -357,46 +329,51 @@ const Nav = class {
357
329
  }
358
330
  return promise;
359
331
  }
360
- /** @internal */
332
+ /**
333
+ * Called by <ion-router> to retrieve the current component.
334
+ *
335
+ * @internal
336
+ */
361
337
  async getRouteId() {
362
338
  const active = this.getActiveSync();
363
- return active
364
- ? {
339
+ if (active) {
340
+ return {
365
341
  id: active.element.tagName,
366
342
  params: active.params,
367
- element: active.element
368
- }
369
- : undefined;
343
+ element: active.element,
344
+ };
345
+ }
346
+ return undefined;
370
347
  }
371
348
  /**
372
349
  * Get the active view.
373
350
  */
374
- getActive() {
375
- return Promise.resolve(this.getActiveSync());
351
+ async getActive() {
352
+ return this.getActiveSync();
376
353
  }
377
354
  /**
378
355
  * Get the view at the specified index.
379
356
  *
380
357
  * @param index The index of the view.
381
358
  */
382
- getByIndex(index) {
383
- return Promise.resolve(this.views[index]);
359
+ async getByIndex(index) {
360
+ return this.views[index];
384
361
  }
385
362
  /**
386
363
  * Returns `true` if the current view can go back.
387
364
  *
388
365
  * @param view The view to check.
389
366
  */
390
- canGoBack(view) {
391
- return Promise.resolve(this.canGoBackSync(view));
367
+ async canGoBack(view) {
368
+ return this.canGoBackSync(view);
392
369
  }
393
370
  /**
394
371
  * Get the previous view.
395
372
  *
396
373
  * @param view The view to get.
397
374
  */
398
- getPrevious(view) {
399
- return Promise.resolve(this.getPreviousSync(view));
375
+ async getPrevious(view) {
376
+ return this.getPreviousSync(view);
400
377
  }
401
378
  getLength() {
402
379
  return this.views.length;
@@ -415,19 +392,15 @@ const Nav = class {
415
392
  const index = views.indexOf(view);
416
393
  return index > 0 ? views[index - 1] : undefined;
417
394
  }
418
- // _queueTrns() adds a navigation stack change to the queue and schedules it to run:
419
- // 1. _nextTrns(): consumes the next transition in the queue
420
- // 2. _viewInit(): initializes enteringView if required
421
- // 3. _viewTest(): ensures canLeave/canEnter Returns `true`, so the operation can continue
422
- // 4. _postViewInit(): add/remove the views from the navigation stack
423
- // 5. _transitionInit(): initializes the visual transition if required and schedules it to run
424
- // 6. _viewAttachToDOM(): attaches the enteringView to the DOM
425
- // 7. _transitionStart(): called once the transition actually starts, it initializes the Animation underneath.
426
- // 8. _transitionFinish(): called once the transition finishes
427
- // 9. _cleanup(): syncs the navigation internal state with the DOM. For example it removes the pages from the DOM or hides/show them.
395
+ /**
396
+ * Adds a navigation stack change to the queue and schedules it to run.
397
+ *
398
+ * @returns Whether the transition succeeds.
399
+ */
428
400
  async queueTrns(ti, done) {
429
- if (this.isTransitioning && ti.opts != null && ti.opts.skipIfBusy) {
430
- return Promise.resolve(false);
401
+ var _a, _b;
402
+ if (this.isTransitioning && ((_a = ti.opts) === null || _a === void 0 ? void 0 : _a.skipIfBusy)) {
403
+ return false;
431
404
  }
432
405
  const promise = new Promise((resolve, reject) => {
433
406
  ti.resolve = resolve;
@@ -445,16 +418,16 @@ const Nav = class {
445
418
  if (router) {
446
419
  const canTransition = await router.canTransition();
447
420
  if (canTransition === false) {
448
- return Promise.resolve(false);
421
+ return false;
449
422
  }
450
- else if (typeof canTransition === 'string') {
423
+ if (typeof canTransition === 'string') {
451
424
  router.push(canTransition, ti.opts.direction || 'back');
452
- return Promise.resolve(false);
425
+ return false;
453
426
  }
454
427
  }
455
428
  }
456
429
  // Normalize empty
457
- if (ti.insertViews && ti.insertViews.length === 0) {
430
+ if (((_b = ti.insertViews) === null || _b === void 0 ? void 0 : _b.length) === 0) {
458
431
  ti.insertViews = undefined;
459
432
  }
460
433
  // Enqueue transition instruction
@@ -500,14 +473,18 @@ const Nav = class {
500
473
  ti.resolve(false);
501
474
  }
502
475
  }
476
+ /**
477
+ * Consumes the next transition in the queue.
478
+ *
479
+ * @returns whether the transition is executed.
480
+ */
503
481
  nextTrns() {
504
482
  // this is the framework's bread 'n butta function
505
483
  // only one transition is allowed at any given time
506
484
  if (this.isTransitioning) {
507
485
  return false;
508
486
  }
509
- // there is no transition happening right now
510
- // get the next instruction
487
+ // there is no transition happening right now, executes the next instructions.
511
488
  const ti = this.transInstr.shift();
512
489
  if (!ti) {
513
490
  return false;
@@ -515,6 +492,7 @@ const Nav = class {
515
492
  this.runTransition(ti);
516
493
  return true;
517
494
  }
495
+ /** Executes all the transition instruction from the queue. */
518
496
  async runTransition(ti) {
519
497
  try {
520
498
  // set that this nav is actively transitioning
@@ -531,8 +509,7 @@ const Nav = class {
531
509
  }
532
510
  this.postViewInit(enteringView, leavingView, ti);
533
511
  // Needs transition?
534
- const requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) &&
535
- enteringView !== leavingView;
512
+ const requiresTransition = (ti.enteringRequiresTransition || ti.leavingRequiresTransition) && enteringView !== leavingView;
536
513
  if (requiresTransition && ti.opts && leavingView) {
537
514
  const isBackDirection = ti.opts.direction === 'back';
538
515
  /**
@@ -540,20 +517,24 @@ const Nav = class {
540
517
  * unless otherwise specified by the developer.
541
518
  */
542
519
  if (isBackDirection) {
543
- ti.opts.animationBuilder = ti.opts.animationBuilder || (enteringView && enteringView.animationBuilder);
520
+ ti.opts.animationBuilder = ti.opts.animationBuilder || (enteringView === null || enteringView === void 0 ? void 0 : enteringView.animationBuilder);
544
521
  }
545
522
  leavingView.animationBuilder = ti.opts.animationBuilder;
546
523
  }
547
- const result = requiresTransition
548
- ? await this.transition(enteringView, leavingView, ti)
549
- : {
550
- // transition is not required, so we are already done!
551
- // they're inserting/removing the views somewhere in the middle or
552
- // beginning, so visually nothing needs to animate/transition
553
- // resolve immediately because there's no animation that's happening
524
+ let result;
525
+ if (requiresTransition) {
526
+ result = await this.transition(enteringView, leavingView, ti);
527
+ }
528
+ else {
529
+ // transition is not required, so we are already done!
530
+ // they're inserting/removing the views somewhere in the middle or
531
+ // beginning, so visually nothing needs to animate/transition
532
+ // resolve immediately because there's no animation that's happening
533
+ result = {
554
534
  hasCompleted: true,
555
- requiresTransition: false
535
+ requiresTransition: false,
556
536
  };
537
+ }
557
538
  this.success(result, ti);
558
539
  this.ionNavDidChange.emit();
559
540
  }
@@ -564,11 +545,11 @@ const Nav = class {
564
545
  this.nextTrns();
565
546
  }
566
547
  prepareTI(ti) {
548
+ var _a, _b;
549
+ var _c;
567
550
  const viewsLength = this.views.length;
568
- ti.opts = ti.opts || {};
569
- if (ti.opts.delegate === undefined) {
570
- ti.opts.delegate = this.delegate;
571
- }
551
+ (_a = ti.opts) !== null && _a !== void 0 ? _a : (ti.opts = {});
552
+ (_b = (_c = ti.opts).delegate) !== null && _b !== void 0 ? _b : (_c.delegate = this.delegate);
572
553
  if (ti.removeView !== undefined) {
573
554
  helpers.assert(ti.removeStart !== undefined, 'removeView needs removeStart');
574
555
  helpers.assert(ti.removeCount !== undefined, 'removeView needs removeCount');
@@ -585,8 +566,7 @@ const Nav = class {
585
566
  if (ti.removeCount < 0) {
586
567
  ti.removeCount = viewsLength - ti.removeStart;
587
568
  }
588
- ti.leavingRequiresTransition =
589
- ti.removeCount > 0 && ti.removeStart + ti.removeCount === viewsLength;
569
+ ti.leavingRequiresTransition = ti.removeCount > 0 && ti.removeStart + ti.removeCount === viewsLength;
590
570
  }
591
571
  if (ti.insertViews) {
592
572
  // allow -1 to be passed in to auto push it on the end
@@ -618,13 +598,21 @@ const Nav = class {
618
598
  }
619
599
  ti.insertViews = viewControllers;
620
600
  }
601
+ /**
602
+ * Returns the view that will be entered considering the transition instructions.
603
+ *
604
+ * @param ti The instructions.
605
+ * @param leavingView The view being left or undefined if none.
606
+ *
607
+ * @returns The view that will be entered, undefined if none.
608
+ */
621
609
  getEnteringView(ti, leavingView) {
610
+ // The last inserted view will be entered when view are inserted.
622
611
  const insertViews = ti.insertViews;
623
612
  if (insertViews !== undefined) {
624
- // grab the very last view of the views to be inserted
625
- // and initialize it as the new entering view
626
613
  return insertViews[insertViews.length - 1];
627
614
  }
615
+ // When views are deleted, we will enter the last view that is not removed and not the view being left.
628
616
  const removeStart = ti.removeStart;
629
617
  if (removeStart !== undefined) {
630
618
  const views = this.views;
@@ -638,39 +626,45 @@ const Nav = class {
638
626
  }
639
627
  return undefined;
640
628
  }
629
+ /**
630
+ * Adds and Removes the views from the navigation stack.
631
+ *
632
+ * @param enteringView The view being entered.
633
+ * @param leavingView The view being left.
634
+ * @param ti The instructions.
635
+ */
641
636
  postViewInit(enteringView, leavingView, ti) {
637
+ var _a, _b, _c;
642
638
  helpers.assert(leavingView || enteringView, 'Both leavingView and enteringView are null');
643
639
  helpers.assert(ti.resolve, 'resolve must be valid');
644
640
  helpers.assert(ti.reject, 'reject must be valid');
641
+ // Compute the views to remove.
645
642
  const opts = ti.opts;
646
- const insertViews = ti.insertViews;
647
- const removeStart = ti.removeStart;
648
- const removeCount = ti.removeCount;
643
+ const { insertViews, removeStart, removeCount } = ti;
644
+ /** Records the view to destroy */
649
645
  let destroyQueue;
650
646
  // there are views to remove
651
647
  if (removeStart !== undefined && removeCount !== undefined) {
652
648
  helpers.assert(removeStart >= 0, 'removeStart can not be negative');
653
649
  helpers.assert(removeCount >= 0, 'removeCount can not be negative');
654
650
  destroyQueue = [];
655
- for (let i = 0; i < removeCount; i++) {
656
- const view = this.views[i + removeStart];
657
- if (view && view !== enteringView && view !== leavingView) {
651
+ for (let i = removeStart; i < removeStart + removeCount; i++) {
652
+ const view = this.views[i];
653
+ if (view !== undefined && view !== enteringView && view !== leavingView) {
658
654
  destroyQueue.push(view);
659
655
  }
660
656
  }
661
657
  // default the direction to "back"
662
- opts.direction = opts.direction || 'back';
658
+ (_a = opts.direction) !== null && _a !== void 0 ? _a : (opts.direction = 'back');
663
659
  }
664
- const finalBalance = this.views.length +
665
- (insertViews !== undefined ? insertViews.length : 0) -
666
- (removeCount !== undefined ? removeCount : 0);
667
- helpers.assert(finalBalance >= 0, 'final balance can not be negative');
668
- if (finalBalance === 0) {
660
+ 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);
661
+ helpers.assert(finalNumViews >= 0, 'final balance can not be negative');
662
+ if (finalNumViews === 0) {
669
663
  console.warn(`You can't remove all the pages in the navigation stack. nav.pop() is probably called too many times.`, this, this.el);
670
664
  throw new Error('navigation stack needs at least one root page');
671
665
  }
672
666
  // At this point the transition can not be rejected, any throw should be an error
673
- // there are views to insert
667
+ // Insert the new views in the stack.
674
668
  if (insertViews) {
675
669
  // add the views to the
676
670
  let insertIndex = ti.insertStart;
@@ -680,7 +674,7 @@ const Nav = class {
680
674
  }
681
675
  if (ti.enteringRequiresTransition) {
682
676
  // default to forward if not already set
683
- opts.direction = opts.direction || 'forward';
677
+ (_c = opts.direction) !== null && _c !== void 0 ? _c : (opts.direction = 'forward');
684
678
  }
685
679
  }
686
680
  // if the views to be removed are in the beginning or middle
@@ -704,9 +698,7 @@ const Nav = class {
704
698
  // we should animate (duration > 0) if the pushed page is not the first one (startup)
705
699
  // or if it is a portal (modal, actionsheet, etc.)
706
700
  const opts = ti.opts;
707
- const progressCallback = opts.progressAnimation
708
- ? (ani) => this.sbAni = ani
709
- : undefined;
701
+ const progressCallback = opts.progressAnimation ? (ani) => (this.sbAni = ani) : undefined;
710
702
  const mode = ionicGlobal.getIonMode(this);
711
703
  const enteringEl = enteringView.element;
712
704
  const leavingEl = leavingView && leavingView.element;
@@ -716,36 +708,53 @@ const Nav = class {
716
708
  return this.transitionFinish(hasCompleted, enteringView, leavingView, opts);
717
709
  }
718
710
  transitionFinish(hasCompleted, enteringView, leavingView, opts) {
719
- const cleanupView = hasCompleted ? enteringView : leavingView;
720
- if (cleanupView) {
721
- this.cleanup(cleanupView);
711
+ /**
712
+ * If the transition did not complete, the leavingView will still be the active
713
+ * view on the stack. Otherwise unmount all the views after the enteringView.
714
+ */
715
+ const activeView = hasCompleted ? enteringView : leavingView;
716
+ if (activeView) {
717
+ this.unmountInactiveViews(activeView);
722
718
  }
723
719
  return {
724
720
  hasCompleted,
725
721
  requiresTransition: true,
726
722
  enteringView,
727
723
  leavingView,
728
- direction: opts.direction
724
+ direction: opts.direction,
729
725
  };
730
726
  }
727
+ /**
728
+ * Inserts a view at the specified index.
729
+ *
730
+ * When the view already is in the stack it will be moved to the new position.
731
+ *
732
+ * @param view The view to insert.
733
+ * @param index The index where to insert the view.
734
+ */
731
735
  insertViewAt(view, index) {
732
736
  const views = this.views;
733
737
  const existingIndex = views.indexOf(view);
734
738
  if (existingIndex > -1) {
735
- // this view is already in the stack!!
736
- // move it to its new location
737
739
  helpers.assert(view.nav === this, 'view is not part of the nav');
738
- views.splice(index, 0, views.splice(existingIndex, 1)[0]);
740
+ // The view already in the stack, removes it.
741
+ views.splice(existingIndex, 1);
742
+ // and add it back at the requested index.
743
+ views.splice(index, 0, view);
739
744
  }
740
745
  else {
741
746
  helpers.assert(!view.nav, 'nav is used');
742
747
  // this is a new view to add to the stack
743
748
  // create the new entering view
744
749
  view.nav = this;
745
- // insert the entering view into the correct index in the stack
746
750
  views.splice(index, 0, view);
747
751
  }
748
752
  }
753
+ /**
754
+ * Removes a view from the stack.
755
+ *
756
+ * @param view The view to remove.
757
+ */
749
758
  removeView(view) {
750
759
  helpers.assert(view.state === VIEW_STATE_ATTACHED || view.state === VIEW_STATE_DESTROYED, 'view state should be loaded or destroyed');
751
760
  const views = this.views;
@@ -760,9 +769,13 @@ const Nav = class {
760
769
  this.removeView(view);
761
770
  }
762
771
  /**
772
+ * Unmounts all inactive views after the specified active view.
773
+ *
763
774
  * DOM WRITE
775
+ *
776
+ * @param activeView The view that is actively visible in the stack. Used to calculate which views to unmount.
764
777
  */
765
- cleanup(activeView) {
778
+ unmountInactiveViews(activeView) {
766
779
  // ok, cleanup time!! Destroy all of the views that are
767
780
  // INACTIVE and come after the active view
768
781
  // only do this if the views exist, though
@@ -805,14 +818,7 @@ const Nav = class {
805
818
  this.canGoBackSync());
806
819
  }
807
820
  onStart() {
808
- this.queueTrns({
809
- removeStart: -1,
810
- removeCount: 1,
811
- opts: {
812
- direction: 'back',
813
- progressAnimation: true
814
- }
815
- }, undefined);
821
+ this.pop({ direction: 'back', progressAnimation: true });
816
822
  }
817
823
  onMove(stepValue) {
818
824
  if (this.sbAni) {
@@ -826,7 +832,7 @@ const Nav = class {
826
832
  this.animationEnabled = true;
827
833
  }, { oneTimeCallback: true });
828
834
  // Account for rounding errors in JS
829
- let newStepValue = (shouldComplete) ? -0.001 : 0.001;
835
+ let newStepValue = shouldComplete ? -0.001 : 0.001;
830
836
  /**
831
837
  * Animation will be reversed here, so need to
832
838
  * reverse the easing curve as well
@@ -846,7 +852,7 @@ const Nav = class {
846
852
  }
847
853
  }
848
854
  render() {
849
- return (index.h("slot", null));
855
+ return index.h("slot", null);
850
856
  }
851
857
  get el() { return index.getElement(this); }
852
858
  static get watchers() { return {