@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
@@ -0,0 +1,826 @@
1
+ import { writeTask, proxyCustomElement, HTMLElement, createEvent, readTask, h, Host } from '@stencil/core/internal/client';
2
+ import { a as isPlatform, g as getIonMode } from './ionic-global.js';
3
+ import { g as getTimeGivenProgression } from './cubic-bezier.js';
4
+ import { I as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, b as ION_CONTENT_CLASS_SELECTOR, g as getScrollElement } from './index5.js';
5
+ import { t as transitionEndAsync, d as componentOnReady, l as clamp, g as getElementRoot, r as raf } from './helpers.js';
6
+ import { h as hapticImpact } from './haptic.js';
7
+ import { c as createAnimation } from './animation.js';
8
+
9
+ /*!
10
+ * (C) Ionic http://ionicframework.com - MIT License
11
+ */
12
+ const getRefresherAnimationType = (contentEl) => {
13
+ const previousSibling = contentEl.previousElementSibling;
14
+ const hasHeader = previousSibling !== null && previousSibling.tagName === 'ION-HEADER';
15
+ return hasHeader ? 'translate' : 'scale';
16
+ };
17
+ const createPullingAnimation = (type, pullingSpinner, refresherEl) => {
18
+ return type === 'scale'
19
+ ? createScaleAnimation(pullingSpinner, refresherEl)
20
+ : createTranslateAnimation(pullingSpinner, refresherEl);
21
+ };
22
+ const createBaseAnimation = (pullingRefresherIcon) => {
23
+ const spinner = pullingRefresherIcon.querySelector('ion-spinner');
24
+ const circle = spinner.shadowRoot.querySelector('circle');
25
+ const spinnerArrowContainer = pullingRefresherIcon.querySelector('.spinner-arrow-container');
26
+ const arrowContainer = pullingRefresherIcon.querySelector('.arrow-container');
27
+ const arrow = arrowContainer ? arrowContainer.querySelector('ion-icon') : null;
28
+ const baseAnimation = createAnimation().duration(1000).easing('ease-out');
29
+ const spinnerArrowContainerAnimation = createAnimation()
30
+ .addElement(spinnerArrowContainer)
31
+ .keyframes([
32
+ { offset: 0, opacity: '0.3' },
33
+ { offset: 0.45, opacity: '0.3' },
34
+ { offset: 0.55, opacity: '1' },
35
+ { offset: 1, opacity: '1' },
36
+ ]);
37
+ const circleInnerAnimation = createAnimation()
38
+ .addElement(circle)
39
+ .keyframes([
40
+ { offset: 0, strokeDasharray: '1px, 200px' },
41
+ { offset: 0.2, strokeDasharray: '1px, 200px' },
42
+ { offset: 0.55, strokeDasharray: '100px, 200px' },
43
+ { offset: 1, strokeDasharray: '100px, 200px' },
44
+ ]);
45
+ const circleOuterAnimation = createAnimation()
46
+ .addElement(spinner)
47
+ .keyframes([
48
+ { offset: 0, transform: 'rotate(-90deg)' },
49
+ { offset: 1, transform: 'rotate(210deg)' },
50
+ ]);
51
+ /**
52
+ * Only add arrow animation if present
53
+ * this allows users to customize the spinners
54
+ * without errors being thrown
55
+ */
56
+ if (arrowContainer && arrow) {
57
+ const arrowContainerAnimation = createAnimation()
58
+ .addElement(arrowContainer)
59
+ .keyframes([
60
+ { offset: 0, transform: 'rotate(0deg)' },
61
+ { offset: 0.3, transform: 'rotate(0deg)' },
62
+ { offset: 0.55, transform: 'rotate(280deg)' },
63
+ { offset: 1, transform: 'rotate(400deg)' },
64
+ ]);
65
+ const arrowAnimation = createAnimation()
66
+ .addElement(arrow)
67
+ .keyframes([
68
+ { offset: 0, transform: 'translateX(2px) scale(0)' },
69
+ { offset: 0.3, transform: 'translateX(2px) scale(0)' },
70
+ { offset: 0.55, transform: 'translateX(-1.5px) scale(1)' },
71
+ { offset: 1, transform: 'translateX(-1.5px) scale(1)' },
72
+ ]);
73
+ baseAnimation.addAnimation([arrowContainerAnimation, arrowAnimation]);
74
+ }
75
+ return baseAnimation.addAnimation([spinnerArrowContainerAnimation, circleInnerAnimation, circleOuterAnimation]);
76
+ };
77
+ const createScaleAnimation = (pullingRefresherIcon, refresherEl) => {
78
+ /**
79
+ * Do not take the height of the refresher icon
80
+ * because at this point the DOM has not updated,
81
+ * so the refresher icon is still hidden with
82
+ * display: none.
83
+ * The `ion-refresher` container height
84
+ * is roughly the amount we need to offset
85
+ * the icon by when pulling down.
86
+ */
87
+ const height = refresherEl.clientHeight;
88
+ const spinnerAnimation = createAnimation()
89
+ .addElement(pullingRefresherIcon)
90
+ .keyframes([
91
+ { offset: 0, transform: `scale(0) translateY(-${height}px)` },
92
+ { offset: 1, transform: 'scale(1) translateY(100px)' },
93
+ ]);
94
+ return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
95
+ };
96
+ const createTranslateAnimation = (pullingRefresherIcon, refresherEl) => {
97
+ /**
98
+ * Do not take the height of the refresher icon
99
+ * because at this point the DOM has not updated,
100
+ * so the refresher icon is still hidden with
101
+ * display: none.
102
+ * The `ion-refresher` container height
103
+ * is roughly the amount we need to offset
104
+ * the icon by when pulling down.
105
+ */
106
+ const height = refresherEl.clientHeight;
107
+ const spinnerAnimation = createAnimation()
108
+ .addElement(pullingRefresherIcon)
109
+ .keyframes([
110
+ { offset: 0, transform: `translateY(-${height}px)` },
111
+ { offset: 1, transform: 'translateY(100px)' },
112
+ ]);
113
+ return createBaseAnimation(pullingRefresherIcon).addAnimation([spinnerAnimation]);
114
+ };
115
+ const createSnapBackAnimation = (pullingRefresherIcon) => {
116
+ return createAnimation()
117
+ .duration(125)
118
+ .addElement(pullingRefresherIcon)
119
+ .fromTo('transform', 'translateY(var(--ion-pulling-refresher-translate, 100px))', 'translateY(0px)');
120
+ };
121
+ // iOS Native Refresher
122
+ // -----------------------------
123
+ const setSpinnerOpacity = (spinner, opacity) => {
124
+ spinner.style.setProperty('opacity', opacity.toString());
125
+ };
126
+ const handleScrollWhilePulling = (ticks, numTicks, pullAmount) => {
127
+ const max = 1;
128
+ writeTask(() => {
129
+ ticks.forEach((el, i) => {
130
+ /**
131
+ * Compute the opacity of each tick
132
+ * mark as a percentage of the pullAmount
133
+ * offset by max / numTicks so
134
+ * the tick marks are shown staggered.
135
+ */
136
+ const min = i * (max / numTicks);
137
+ const range = max - min;
138
+ const start = pullAmount - min;
139
+ const progression = clamp(0, start / range, 1);
140
+ el.style.setProperty('opacity', progression.toString());
141
+ });
142
+ });
143
+ };
144
+ const handleScrollWhileRefreshing = (spinner, lastVelocityY) => {
145
+ writeTask(() => {
146
+ // If user pulls down quickly, the spinner should spin faster
147
+ spinner.style.setProperty('--refreshing-rotation-duration', lastVelocityY >= 1.0 ? '0.5s' : '2s');
148
+ spinner.style.setProperty('opacity', '1');
149
+ });
150
+ };
151
+ const translateElement = (el, value, duration = 200) => {
152
+ if (!el) {
153
+ return Promise.resolve();
154
+ }
155
+ const trans = transitionEndAsync(el, duration);
156
+ writeTask(() => {
157
+ el.style.setProperty('transition', `${duration}ms all ease-out`);
158
+ if (value === undefined) {
159
+ el.style.removeProperty('transform');
160
+ }
161
+ else {
162
+ el.style.setProperty('transform', `translate3d(0px, ${value}, 0px)`);
163
+ }
164
+ });
165
+ return trans;
166
+ };
167
+ // Utils
168
+ // -----------------------------
169
+ const shouldUseNativeRefresher = async (referenceEl, mode) => {
170
+ const refresherContent = referenceEl.querySelector('ion-refresher-content');
171
+ if (!refresherContent) {
172
+ return Promise.resolve(false);
173
+ }
174
+ await new Promise((resolve) => componentOnReady(refresherContent, resolve));
175
+ const pullingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
176
+ const refreshingSpinner = referenceEl.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
177
+ return (pullingSpinner !== null &&
178
+ refreshingSpinner !== null &&
179
+ ((mode === 'ios' && isPlatform('mobile') && referenceEl.style.webkitOverflowScrolling !== undefined) ||
180
+ mode === 'md'));
181
+ };
182
+
183
+ const refresherIosCss = "ion-refresher{left:0;top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}[dir=rtl] ion-refresher,:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:flex;flex-direction:column;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{transform-origin:center;transition:200ms;font-size:30px;text-align:center}[dir=rtl] .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{transform-origin:calc(100% - center)}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-ios .refresher-pulling-icon,.refresher-ios .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-ios .refresher-pulling-text,.refresher-ios .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-lines-ios line,.refresher-ios .refresher-refreshing .spinner-lines-small-ios line,.refresher-ios .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-ios .refresher-refreshing .spinner-bubbles circle,.refresher-ios .refresher-refreshing .spinner-circles circle,.refresher-ios .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native ion-spinner{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, #747577)}.refresher-native.refresher-refreshing .refresher-pulling ion-spinner,.refresher-native.refresher-completing .refresher-pulling ion-spinner{display:none}.refresher-native.refresher-refreshing .refresher-refreshing ion-spinner,.refresher-native.refresher-completing .refresher-refreshing ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-pulling ion-spinner{display:block}.refresher-native.refresher-pulling .refresher-refreshing ion-spinner{display:none}.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing-icon{transform:scale(0) rotate(180deg);transition:300ms}@keyframes refresher-pop{0%{transform:scale(1);animation-timing-function:ease-in}50%{transform:scale(1.2);animation-timing-function:ease-out}100%{transform:scale(1)}}@keyframes refresher-rotate{from{transform:rotate(0deg)}to{transform:rotate(180deg)}}";
184
+
185
+ const refresherMdCss = "ion-refresher{left:0;top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}[dir=rtl] ion-refresher,:host-context([dir=rtl]) ion-refresher{left:unset;right:unset;right:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:flex;flex-direction:column;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{transform-origin:center;transition:200ms;font-size:30px;text-align:center}[dir=rtl] .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{transform-origin:calc(100% - center)}.refresher-pulling-text,.refresher-refreshing-text{font-size:16px;text-align:center}ion-refresher-content .arrow-container{display:none}.refresher-pulling ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling{display:block}.refresher-ready ion-refresher-content .refresher-pulling-icon{transform:rotate(180deg)}.refresher-refreshing ion-refresher-content .refresher-refreshing{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling{display:block}.refresher-cancelling ion-refresher-content .refresher-pulling-icon{transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{transform:scale(0)}.refresher-native .refresher-pulling-text,.refresher-native .refresher-refreshing-text{display:none}.refresher-md .refresher-pulling-icon,.refresher-md .refresher-refreshing-icon{color:var(--ion-text-color, #000)}.refresher-md .refresher-pulling-text,.refresher-md .refresher-refreshing-text{color:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-lines-md line,.refresher-md .refresher-refreshing .spinner-lines-small-md line,.refresher-md .refresher-refreshing .spinner-crescent circle{stroke:var(--ion-text-color, #000)}.refresher-md .refresher-refreshing .spinner-bubbles circle,.refresher-md .refresher-refreshing .spinner-circles circle,.refresher-md .refresher-refreshing .spinner-dots circle{fill:var(--ion-text-color, #000)}ion-refresher.refresher-native{display:block;z-index:1}ion-refresher.refresher-native ion-spinner{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #3880ff)}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native ion-spinner{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}ion-refresher.refresher-native .spinner-arrow-container{display:inherit}ion-refresher.refresher-native .arrow-container{display:block;position:absolute;width:24px;height:24px}ion-refresher.refresher-native .arrow-container ion-icon{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #3880ff);font-size:12px}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native .arrow-container ion-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:flex}ion-refresher.refresher-native.refresher-refreshing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-completing ion-refresher-content .refresher-refreshing,ion-refresher.refresher-native.refresher-cancelling ion-refresher-content .refresher-refreshing{display:flex}ion-refresher.refresher-native .refresher-pulling-icon{transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;border-radius:100%;padding-left:8px;padding-right:8px;padding-top:8px;padding-bottom:8px;display:flex;border:1px solid var(--ion-color-step-200, #ececec);background:var(--ion-color-step-250, #ffffff);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}";
186
+
187
+ const Refresher = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
188
+ constructor() {
189
+ super();
190
+ this.__registerHost();
191
+ this.ionRefresh = createEvent(this, "ionRefresh", 7);
192
+ this.ionPull = createEvent(this, "ionPull", 7);
193
+ this.ionStart = createEvent(this, "ionStart", 7);
194
+ this.appliedStyles = false;
195
+ this.didStart = false;
196
+ this.progress = 0;
197
+ this.pointerDown = false;
198
+ this.needsCompletion = false;
199
+ this.didRefresh = false;
200
+ this.lastVelocityY = 0;
201
+ this.animations = [];
202
+ this.nativeRefresher = false;
203
+ /**
204
+ * The current state which the refresher is in. The refresher's states include:
205
+ *
206
+ * - `inactive` - The refresher is not being pulled down or refreshing and is currently hidden.
207
+ * - `pulling` - The user is actively pulling down the refresher, but has not reached the point yet that if the user lets go, it'll refresh.
208
+ * - `cancelling` - The user pulled down the refresher and let go, but did not pull down far enough to kick off the `refreshing` state. After letting go, the refresher is in the `cancelling` state while it is closing, and will go back to the `inactive` state once closed.
209
+ * - `ready` - The user has pulled down the refresher far enough that if they let go, it'll begin the `refreshing` state.
210
+ * - `refreshing` - The refresher is actively waiting on the async operation to end. Once the refresh handler calls `complete()` it will begin the `completing` state.
211
+ * - `completing` - The `refreshing` state has finished and the refresher is in the way of closing itself. Once closed, the refresher will go back to the `inactive` state.
212
+ */
213
+ this.state = 1 /* RefresherState.Inactive */;
214
+ /**
215
+ * The minimum distance the user must pull down until the
216
+ * refresher will go into the `refreshing` state.
217
+ * Does not apply when the refresher content uses a spinner,
218
+ * enabling the native refresher.
219
+ */
220
+ this.pullMin = 60;
221
+ /**
222
+ * The maximum distance of the pull until the refresher
223
+ * will automatically go into the `refreshing` state.
224
+ * Defaults to the result of `pullMin + 60`.
225
+ * Does not apply when the refresher content uses a spinner,
226
+ * enabling the native refresher.
227
+ */
228
+ this.pullMax = this.pullMin + 60;
229
+ /**
230
+ * Time it takes to close the refresher.
231
+ * Does not apply when the refresher content uses a spinner,
232
+ * enabling the native refresher.
233
+ */
234
+ this.closeDuration = '280ms';
235
+ /**
236
+ * Time it takes the refresher to snap back to the `refreshing` state.
237
+ * Does not apply when the refresher content uses a spinner,
238
+ * enabling the native refresher.
239
+ */
240
+ this.snapbackDuration = '280ms';
241
+ /**
242
+ * How much to multiply the pull speed by. To slow the pull animation down,
243
+ * pass a number less than `1`. To speed up the pull, pass a number greater
244
+ * than `1`. The default value is `1` which is equal to the speed of the cursor.
245
+ * If a negative value is passed in, the factor will be `1` instead.
246
+ *
247
+ * For example: If the value passed is `1.2` and the content is dragged by
248
+ * `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels
249
+ * (an increase of 20 percent). If the value passed is `0.8`, the dragged amount
250
+ * will be `8` pixels, less than the amount the cursor has moved.
251
+ *
252
+ * Does not apply when the refresher content uses a spinner,
253
+ * enabling the native refresher.
254
+ */
255
+ this.pullFactor = 1;
256
+ /**
257
+ * If `true`, the refresher will be hidden.
258
+ */
259
+ this.disabled = false;
260
+ }
261
+ disabledChanged() {
262
+ if (this.gesture) {
263
+ this.gesture.enable(!this.disabled);
264
+ }
265
+ }
266
+ async checkNativeRefresher() {
267
+ const useNativeRefresher = await shouldUseNativeRefresher(this.el, getIonMode(this));
268
+ if (useNativeRefresher && !this.nativeRefresher) {
269
+ const contentEl = this.el.closest('ion-content');
270
+ this.setupNativeRefresher(contentEl);
271
+ }
272
+ else if (!useNativeRefresher) {
273
+ this.destroyNativeRefresher();
274
+ }
275
+ }
276
+ destroyNativeRefresher() {
277
+ if (this.scrollEl && this.scrollListenerCallback) {
278
+ this.scrollEl.removeEventListener('scroll', this.scrollListenerCallback);
279
+ this.scrollListenerCallback = undefined;
280
+ }
281
+ this.nativeRefresher = false;
282
+ }
283
+ async resetNativeRefresher(el, state) {
284
+ this.state = state;
285
+ if (getIonMode(this) === 'ios') {
286
+ await translateElement(el, undefined, 300);
287
+ }
288
+ else {
289
+ await transitionEndAsync(this.el.querySelector('.refresher-refreshing-icon'), 200);
290
+ }
291
+ this.didRefresh = false;
292
+ this.needsCompletion = false;
293
+ this.pointerDown = false;
294
+ this.animations.forEach((ani) => ani.destroy());
295
+ this.animations = [];
296
+ this.progress = 0;
297
+ this.state = 1 /* RefresherState.Inactive */;
298
+ }
299
+ async setupiOSNativeRefresher(pullingSpinner, refreshingSpinner) {
300
+ this.elementToTransform = this.scrollEl;
301
+ const ticks = pullingSpinner.shadowRoot.querySelectorAll('svg');
302
+ let MAX_PULL = this.scrollEl.clientHeight * 0.16;
303
+ const NUM_TICKS = ticks.length;
304
+ writeTask(() => ticks.forEach((el) => el.style.setProperty('animation', 'none')));
305
+ this.scrollListenerCallback = () => {
306
+ // If pointer is not on screen or refresher is not active, ignore scroll
307
+ if (!this.pointerDown && this.state === 1 /* RefresherState.Inactive */) {
308
+ return;
309
+ }
310
+ readTask(() => {
311
+ // PTR should only be active when overflow scrolling at the top
312
+ const scrollTop = this.scrollEl.scrollTop;
313
+ const refresherHeight = this.el.clientHeight;
314
+ if (scrollTop > 0) {
315
+ /**
316
+ * If refresher is refreshing and user tries to scroll
317
+ * progressively fade refresher out/in
318
+ */
319
+ if (this.state === 8 /* RefresherState.Refreshing */) {
320
+ const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);
321
+ writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));
322
+ return;
323
+ }
324
+ return;
325
+ }
326
+ if (this.pointerDown) {
327
+ if (!this.didStart) {
328
+ this.didStart = true;
329
+ this.ionStart.emit();
330
+ }
331
+ // emit "pulling" on every move
332
+ if (this.pointerDown) {
333
+ this.ionPull.emit();
334
+ }
335
+ }
336
+ /**
337
+ * We want to delay the start of this gesture by ~30px
338
+ * when initially pulling down so the refresher does not
339
+ * overlap with the content. But when letting go of the
340
+ * gesture before the refresher completes, we want the
341
+ * refresher tick marks to quickly fade out.
342
+ */
343
+ const offset = this.didStart ? 30 : 0;
344
+ const pullAmount = (this.progress = clamp(0, (Math.abs(scrollTop) - offset) / MAX_PULL, 1));
345
+ const shouldShowRefreshingSpinner = this.state === 8 /* RefresherState.Refreshing */ || pullAmount === 1;
346
+ if (shouldShowRefreshingSpinner) {
347
+ if (this.pointerDown) {
348
+ handleScrollWhileRefreshing(refreshingSpinner, this.lastVelocityY);
349
+ }
350
+ if (!this.didRefresh) {
351
+ this.beginRefresh();
352
+ this.didRefresh = true;
353
+ hapticImpact({ style: 'light' });
354
+ /**
355
+ * Translate the content element otherwise when pointer is removed
356
+ * from screen the scroll content will bounce back over the refresher
357
+ */
358
+ if (!this.pointerDown) {
359
+ translateElement(this.elementToTransform, `${refresherHeight}px`);
360
+ }
361
+ }
362
+ }
363
+ else {
364
+ this.state = 2 /* RefresherState.Pulling */;
365
+ handleScrollWhilePulling(ticks, NUM_TICKS, pullAmount);
366
+ }
367
+ });
368
+ };
369
+ this.scrollEl.addEventListener('scroll', this.scrollListenerCallback);
370
+ this.gesture = (await import('./index9.js')).createGesture({
371
+ el: this.scrollEl,
372
+ gestureName: 'refresher',
373
+ gesturePriority: 31,
374
+ direction: 'y',
375
+ threshold: 5,
376
+ onStart: () => {
377
+ this.pointerDown = true;
378
+ if (!this.didRefresh) {
379
+ translateElement(this.elementToTransform, '0px');
380
+ }
381
+ /**
382
+ * If the content had `display: none` when
383
+ * the refresher was initialized, its clientHeight
384
+ * will be 0. When the gesture starts, the content
385
+ * will be visible, so try to get the correct
386
+ * client height again. This is most common when
387
+ * using the refresher in an ion-menu.
388
+ */
389
+ if (MAX_PULL === 0) {
390
+ MAX_PULL = this.scrollEl.clientHeight * 0.16;
391
+ }
392
+ },
393
+ onMove: (ev) => {
394
+ this.lastVelocityY = ev.velocityY;
395
+ },
396
+ onEnd: () => {
397
+ this.pointerDown = false;
398
+ this.didStart = false;
399
+ if (this.needsCompletion) {
400
+ this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */);
401
+ this.needsCompletion = false;
402
+ }
403
+ else if (this.didRefresh) {
404
+ readTask(() => translateElement(this.elementToTransform, `${this.el.clientHeight}px`));
405
+ }
406
+ },
407
+ });
408
+ this.disabledChanged();
409
+ }
410
+ async setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner) {
411
+ const circle = getElementRoot(pullingSpinner).querySelector('circle');
412
+ const pullingRefresherIcon = this.el.querySelector('ion-refresher-content .refresher-pulling-icon');
413
+ const refreshingCircle = getElementRoot(refreshingSpinner).querySelector('circle');
414
+ if (circle !== null && refreshingCircle !== null) {
415
+ writeTask(() => {
416
+ circle.style.setProperty('animation', 'none');
417
+ // This lines up the animation on the refreshing spinner with the pulling spinner
418
+ refreshingSpinner.style.setProperty('animation-delay', '-655ms');
419
+ refreshingCircle.style.setProperty('animation-delay', '-655ms');
420
+ });
421
+ }
422
+ this.gesture = (await import('./index9.js')).createGesture({
423
+ el: this.scrollEl,
424
+ gestureName: 'refresher',
425
+ gesturePriority: 31,
426
+ direction: 'y',
427
+ threshold: 5,
428
+ canStart: () => this.state !== 8 /* RefresherState.Refreshing */ &&
429
+ this.state !== 32 /* RefresherState.Completing */ &&
430
+ this.scrollEl.scrollTop === 0,
431
+ onStart: (ev) => {
432
+ this.progress = 0;
433
+ ev.data = { animation: undefined, didStart: false, cancelled: false };
434
+ },
435
+ onMove: (ev) => {
436
+ if ((ev.velocityY < 0 && this.progress === 0 && !ev.data.didStart) || ev.data.cancelled) {
437
+ ev.data.cancelled = true;
438
+ return;
439
+ }
440
+ if (!ev.data.didStart) {
441
+ ev.data.didStart = true;
442
+ this.state = 2 /* RefresherState.Pulling */;
443
+ writeTask(() => this.scrollEl.style.setProperty('--overflow', 'hidden'));
444
+ const animationType = getRefresherAnimationType(contentEl);
445
+ const animation = createPullingAnimation(animationType, pullingRefresherIcon, this.el);
446
+ ev.data.animation = animation;
447
+ animation.progressStart(false, 0);
448
+ this.ionStart.emit();
449
+ this.animations.push(animation);
450
+ return;
451
+ }
452
+ // Since we are using an easing curve, slow the gesture tracking down a bit
453
+ this.progress = clamp(0, (ev.deltaY / 180) * 0.5, 1);
454
+ ev.data.animation.progressStep(this.progress);
455
+ this.ionPull.emit();
456
+ },
457
+ onEnd: (ev) => {
458
+ if (!ev.data.didStart) {
459
+ return;
460
+ }
461
+ this.gesture.enable(false);
462
+ writeTask(() => this.scrollEl.style.removeProperty('--overflow'));
463
+ if (this.progress <= 0.4) {
464
+ ev.data.animation.progressEnd(0, this.progress, 500).onFinish(() => {
465
+ this.animations.forEach((ani) => ani.destroy());
466
+ this.animations = [];
467
+ this.gesture.enable(true);
468
+ this.state = 1 /* RefresherState.Inactive */;
469
+ });
470
+ return;
471
+ }
472
+ const progress = getTimeGivenProgression([0, 0], [0, 0], [1, 1], [1, 1], this.progress)[0];
473
+ const snapBackAnimation = createSnapBackAnimation(pullingRefresherIcon);
474
+ this.animations.push(snapBackAnimation);
475
+ writeTask(async () => {
476
+ pullingRefresherIcon.style.setProperty('--ion-pulling-refresher-translate', `${progress * 100}px`);
477
+ ev.data.animation.progressEnd();
478
+ await snapBackAnimation.play();
479
+ this.beginRefresh();
480
+ ev.data.animation.destroy();
481
+ this.gesture.enable(true);
482
+ });
483
+ },
484
+ });
485
+ this.disabledChanged();
486
+ }
487
+ async setupNativeRefresher(contentEl) {
488
+ if (this.scrollListenerCallback || !contentEl || this.nativeRefresher || !this.scrollEl) {
489
+ return;
490
+ }
491
+ /**
492
+ * If using non-native refresher before make sure
493
+ * we clean up any old CSS. This can happen when
494
+ * a user manually calls the refresh method in a
495
+ * component create callback before the native
496
+ * refresher is setup.
497
+ */
498
+ this.setCss(0, '', false, '');
499
+ this.nativeRefresher = true;
500
+ const pullingSpinner = this.el.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
501
+ const refreshingSpinner = this.el.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
502
+ if (getIonMode(this) === 'ios') {
503
+ this.setupiOSNativeRefresher(pullingSpinner, refreshingSpinner);
504
+ }
505
+ else {
506
+ this.setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner);
507
+ }
508
+ }
509
+ componentDidUpdate() {
510
+ this.checkNativeRefresher();
511
+ }
512
+ async connectedCallback() {
513
+ if (this.el.getAttribute('slot') !== 'fixed') {
514
+ console.error('Make sure you use: <ion-refresher slot="fixed">');
515
+ return;
516
+ }
517
+ const contentEl = this.el.closest(ION_CONTENT_ELEMENT_SELECTOR);
518
+ if (!contentEl) {
519
+ printIonContentErrorMsg(this.el);
520
+ return;
521
+ }
522
+ /**
523
+ * Waits for the content to be ready before querying the scroll
524
+ * or the background content element.
525
+ */
526
+ componentOnReady(contentEl, async () => {
527
+ const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);
528
+ /**
529
+ * Query the custom scroll target (if available), first. In refresher implementations,
530
+ * the ion-refresher element will always be a direct child of ion-content (slot="fixed"). By
531
+ * querying the custom scroll target first and falling back to the ion-content element,
532
+ * the correct scroll element will be returned by the implementation.
533
+ */
534
+ this.scrollEl = await getScrollElement(customScrollTarget !== null && customScrollTarget !== void 0 ? customScrollTarget : contentEl);
535
+ /**
536
+ * Query the background content element from the host ion-content element directly.
537
+ */
538
+ this.backgroundContentEl = await contentEl.getBackgroundElement();
539
+ if (await shouldUseNativeRefresher(this.el, getIonMode(this))) {
540
+ this.setupNativeRefresher(contentEl);
541
+ }
542
+ else {
543
+ this.gesture = (await import('./index9.js')).createGesture({
544
+ el: contentEl,
545
+ gestureName: 'refresher',
546
+ gesturePriority: 31,
547
+ direction: 'y',
548
+ threshold: 20,
549
+ passive: false,
550
+ canStart: () => this.canStart(),
551
+ onStart: () => this.onStart(),
552
+ onMove: (ev) => this.onMove(ev),
553
+ onEnd: () => this.onEnd(),
554
+ });
555
+ this.disabledChanged();
556
+ }
557
+ });
558
+ }
559
+ disconnectedCallback() {
560
+ this.destroyNativeRefresher();
561
+ this.scrollEl = undefined;
562
+ if (this.gesture) {
563
+ this.gesture.destroy();
564
+ this.gesture = undefined;
565
+ }
566
+ }
567
+ /**
568
+ * Call `complete()` when your async operation has completed.
569
+ * For example, the `refreshing` state is while the app is performing
570
+ * an asynchronous operation, such as receiving more data from an
571
+ * AJAX request. Once the data has been received, you then call this
572
+ * method to signify that the refreshing has completed and to close
573
+ * the refresher. This method also changes the refresher's state from
574
+ * `refreshing` to `completing`.
575
+ */
576
+ async complete() {
577
+ if (this.nativeRefresher) {
578
+ this.needsCompletion = true;
579
+ // Do not reset scroll el until user removes pointer from screen
580
+ if (!this.pointerDown) {
581
+ raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */)));
582
+ }
583
+ }
584
+ else {
585
+ this.close(32 /* RefresherState.Completing */, '120ms');
586
+ }
587
+ }
588
+ /**
589
+ * Changes the refresher's state from `refreshing` to `cancelling`.
590
+ */
591
+ async cancel() {
592
+ if (this.nativeRefresher) {
593
+ // Do not reset scroll el until user removes pointer from screen
594
+ if (!this.pointerDown) {
595
+ raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 16 /* RefresherState.Cancelling */)));
596
+ }
597
+ }
598
+ else {
599
+ this.close(16 /* RefresherState.Cancelling */, '');
600
+ }
601
+ }
602
+ /**
603
+ * A number representing how far down the user has pulled.
604
+ * The number `0` represents the user hasn't pulled down at all. The
605
+ * number `1`, and anything greater than `1`, represents that the user
606
+ * has pulled far enough down that when they let go then the refresh will
607
+ * happen. If they let go and the number is less than `1`, then the
608
+ * refresh will not happen, and the content will return to it's original
609
+ * position.
610
+ */
611
+ getProgress() {
612
+ return Promise.resolve(this.progress);
613
+ }
614
+ canStart() {
615
+ if (!this.scrollEl) {
616
+ return false;
617
+ }
618
+ if (this.state !== 1 /* RefresherState.Inactive */) {
619
+ return false;
620
+ }
621
+ // if the scrollTop is greater than zero then it's
622
+ // not possible to pull the content down yet
623
+ if (this.scrollEl.scrollTop > 0) {
624
+ return false;
625
+ }
626
+ return true;
627
+ }
628
+ onStart() {
629
+ this.progress = 0;
630
+ this.state = 1 /* RefresherState.Inactive */;
631
+ }
632
+ onMove(detail) {
633
+ if (!this.scrollEl) {
634
+ return;
635
+ }
636
+ // this method can get called like a bazillion times per second,
637
+ // so it's built to be as efficient as possible, and does its
638
+ // best to do any DOM read/writes only when absolutely necessary
639
+ // if multi-touch then get out immediately
640
+ const ev = detail.event;
641
+ if (ev.touches !== undefined && ev.touches.length > 1) {
642
+ return;
643
+ }
644
+ // do nothing if it's actively refreshing
645
+ // or it's in the way of closing
646
+ // or this was never a startY
647
+ if ((this.state & 56 /* RefresherState._BUSY_ */) !== 0) {
648
+ return;
649
+ }
650
+ const pullFactor = Number.isNaN(this.pullFactor) || this.pullFactor < 0 ? 1 : this.pullFactor;
651
+ const deltaY = detail.deltaY * pullFactor;
652
+ // don't bother if they're scrolling up
653
+ // and have not already started dragging
654
+ if (deltaY <= 0) {
655
+ // the current Y is higher than the starting Y
656
+ // so they scrolled up enough to be ignored
657
+ this.progress = 0;
658
+ this.state = 1 /* RefresherState.Inactive */;
659
+ if (this.appliedStyles) {
660
+ // reset the styles only if they were applied
661
+ this.setCss(0, '', false, '');
662
+ return;
663
+ }
664
+ return;
665
+ }
666
+ if (this.state === 1 /* RefresherState.Inactive */) {
667
+ // this refresh is not already actively pulling down
668
+ // get the content's scrollTop
669
+ const scrollHostScrollTop = this.scrollEl.scrollTop;
670
+ // if the scrollTop is greater than zero then it's
671
+ // not possible to pull the content down yet
672
+ if (scrollHostScrollTop > 0) {
673
+ this.progress = 0;
674
+ return;
675
+ }
676
+ // content scrolled all the way to the top, and dragging down
677
+ this.state = 2 /* RefresherState.Pulling */;
678
+ }
679
+ // prevent native scroll events
680
+ if (ev.cancelable) {
681
+ ev.preventDefault();
682
+ }
683
+ // the refresher is actively pulling at this point
684
+ // move the scroll element within the content element
685
+ this.setCss(deltaY, '0ms', true, '');
686
+ if (deltaY === 0) {
687
+ // don't continue if there's no delta yet
688
+ this.progress = 0;
689
+ return;
690
+ }
691
+ const pullMin = this.pullMin;
692
+ // set pull progress
693
+ this.progress = deltaY / pullMin;
694
+ // emit "start" if it hasn't started yet
695
+ if (!this.didStart) {
696
+ this.didStart = true;
697
+ this.ionStart.emit();
698
+ }
699
+ // emit "pulling" on every move
700
+ this.ionPull.emit();
701
+ // do nothing if the delta is less than the pull threshold
702
+ if (deltaY < pullMin) {
703
+ // ensure it stays in the pulling state, cuz its not ready yet
704
+ this.state = 2 /* RefresherState.Pulling */;
705
+ return;
706
+ }
707
+ if (deltaY > this.pullMax) {
708
+ // they pulled farther than the max, so kick off the refresh
709
+ this.beginRefresh();
710
+ return;
711
+ }
712
+ // pulled farther than the pull min!!
713
+ // it is now in the `ready` state!!
714
+ // if they let go then it'll refresh, kerpow!!
715
+ this.state = 4 /* RefresherState.Ready */;
716
+ return;
717
+ }
718
+ onEnd() {
719
+ // only run in a zone when absolutely necessary
720
+ if (this.state === 4 /* RefresherState.Ready */) {
721
+ // they pulled down far enough, so it's ready to refresh
722
+ this.beginRefresh();
723
+ }
724
+ else if (this.state === 2 /* RefresherState.Pulling */) {
725
+ // they were pulling down, but didn't pull down far enough
726
+ // set the content back to it's original location
727
+ // and close the refresher
728
+ // set that the refresh is actively cancelling
729
+ this.cancel();
730
+ }
731
+ }
732
+ beginRefresh() {
733
+ // assumes we're already back in a zone
734
+ // they pulled down far enough, so it's ready to refresh
735
+ this.state = 8 /* RefresherState.Refreshing */;
736
+ // place the content in a hangout position while it thinks
737
+ this.setCss(this.pullMin, this.snapbackDuration, true, '');
738
+ // emit "refresh" because it was pulled down far enough
739
+ // and they let go to begin refreshing
740
+ this.ionRefresh.emit({
741
+ complete: this.complete.bind(this),
742
+ });
743
+ }
744
+ close(state, delay) {
745
+ // create fallback timer incase something goes wrong with transitionEnd event
746
+ setTimeout(() => {
747
+ this.state = 1 /* RefresherState.Inactive */;
748
+ this.progress = 0;
749
+ this.didStart = false;
750
+ this.setCss(0, '0ms', false, '');
751
+ }, 600);
752
+ // reset set the styles on the scroll element
753
+ // set that the refresh is actively cancelling/completing
754
+ this.state = state;
755
+ this.setCss(0, this.closeDuration, true, delay);
756
+ }
757
+ setCss(y, duration, overflowVisible, delay) {
758
+ if (this.nativeRefresher) {
759
+ return;
760
+ }
761
+ this.appliedStyles = y > 0;
762
+ writeTask(() => {
763
+ if (this.scrollEl && this.backgroundContentEl) {
764
+ const scrollStyle = this.scrollEl.style;
765
+ const backgroundStyle = this.backgroundContentEl.style;
766
+ scrollStyle.transform = backgroundStyle.transform = y > 0 ? `translateY(${y}px) translateZ(0px)` : '';
767
+ scrollStyle.transitionDuration = backgroundStyle.transitionDuration = duration;
768
+ scrollStyle.transitionDelay = backgroundStyle.transitionDelay = delay;
769
+ scrollStyle.overflow = overflowVisible ? 'hidden' : '';
770
+ }
771
+ });
772
+ }
773
+ render() {
774
+ const mode = getIonMode(this);
775
+ return (h(Host, { slot: "fixed", class: {
776
+ [mode]: true,
777
+ // Used internally for styling
778
+ [`refresher-${mode}`]: true,
779
+ 'refresher-native': this.nativeRefresher,
780
+ 'refresher-active': this.state !== 1 /* RefresherState.Inactive */,
781
+ 'refresher-pulling': this.state === 2 /* RefresherState.Pulling */,
782
+ 'refresher-ready': this.state === 4 /* RefresherState.Ready */,
783
+ 'refresher-refreshing': this.state === 8 /* RefresherState.Refreshing */,
784
+ 'refresher-cancelling': this.state === 16 /* RefresherState.Cancelling */,
785
+ 'refresher-completing': this.state === 32 /* RefresherState.Completing */,
786
+ } }));
787
+ }
788
+ get el() { return this; }
789
+ static get watchers() { return {
790
+ "disabled": ["disabledChanged"]
791
+ }; }
792
+ static get style() { return {
793
+ ios: refresherIosCss,
794
+ md: refresherMdCss
795
+ }; }
796
+ }, [32, "ion-refresher", {
797
+ "pullMin": [2, "pull-min"],
798
+ "pullMax": [2, "pull-max"],
799
+ "closeDuration": [1, "close-duration"],
800
+ "snapbackDuration": [1, "snapback-duration"],
801
+ "pullFactor": [2, "pull-factor"],
802
+ "disabled": [4],
803
+ "nativeRefresher": [32],
804
+ "state": [32],
805
+ "complete": [64],
806
+ "cancel": [64],
807
+ "getProgress": [64]
808
+ }]);
809
+ function defineCustomElement$1() {
810
+ if (typeof customElements === "undefined") {
811
+ return;
812
+ }
813
+ const components = ["ion-refresher"];
814
+ components.forEach(tagName => { switch (tagName) {
815
+ case "ion-refresher":
816
+ if (!customElements.get(tagName)) {
817
+ customElements.define(tagName, Refresher);
818
+ }
819
+ break;
820
+ } });
821
+ }
822
+
823
+ const IonRefresher = Refresher;
824
+ const defineCustomElement = defineCustomElement$1;
825
+
826
+ export { IonRefresher, defineCustomElement };