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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/components/action-sheet.js +1 -561
  2. package/components/alert.js +1 -610
  3. package/components/animation.js +1 -817
  4. package/components/backdrop.js +1 -72
  5. package/components/button-active.js +1 -64
  6. package/components/button.js +1 -303
  7. package/components/buttons.js +1 -56
  8. package/components/capacitor.js +1 -10
  9. package/components/checkbox.js +1 -261
  10. package/components/config.js +1 -192
  11. package/components/content.js +1 -475
  12. package/components/cubic-bezier.js +1 -87
  13. package/components/data.js +1 -1635
  14. package/components/dir.js +1 -15
  15. package/components/focus-visible.js +1 -72
  16. package/components/framework-delegate.js +1 -137
  17. package/components/gesture-controller.js +1 -192
  18. package/components/haptic.js +1 -155
  19. package/components/hardware-back-button.js +1 -112
  20. package/components/header.js +1 -417
  21. package/components/helpers.js +1 -336
  22. package/components/icon.js +1 -456
  23. package/components/index.d.ts +2 -0
  24. package/components/index.js +1 -115
  25. package/components/index2.js +1 -416
  26. package/components/index3.js +1 -452
  27. package/components/index4.js +1 -118
  28. package/components/index5.js +1 -303
  29. package/components/index6.js +1 -29
  30. package/components/index7.js +1 -164
  31. package/components/index8.js +1 -125
  32. package/components/index9.js +1 -4
  33. package/components/input-shims.js +1 -624
  34. package/components/input.utils.js +1 -144
  35. package/components/ion-accordion-group.js +1 -269
  36. package/components/ion-accordion.js +1 -457
  37. package/components/ion-action-sheet.js +1 -6
  38. package/components/ion-alert.js +1 -6
  39. package/components/ion-app.js +1 -128
  40. package/components/ion-avatar.js +1 -41
  41. package/components/ion-back-button.js +1 -131
  42. package/components/ion-backdrop.js +1 -6
  43. package/components/ion-badge.js +1 -47
  44. package/components/ion-breadcrumb.js +1 -137
  45. package/components/ion-breadcrumbs.js +1 -164
  46. package/components/ion-button.js +1 -6
  47. package/components/ion-buttons.js +1 -6
  48. package/components/ion-card-content.js +1 -45
  49. package/components/ion-card-header.js +1 -56
  50. package/components/ion-card-subtitle.js +1 -48
  51. package/components/ion-card-title.js +1 -48
  52. package/components/ion-card.js +1 -107
  53. package/components/ion-checkbox.js +1 -6
  54. package/components/ion-chip.js +1 -66
  55. package/components/ion-col.js +1 -163
  56. package/components/ion-content.js +1 -6
  57. package/components/ion-datetime-button.js +1 -384
  58. package/components/ion-datetime.js +1 -2046
  59. package/components/ion-fab-button.js +1 -151
  60. package/components/ion-fab-list.js +1 -66
  61. package/components/ion-fab.js +1 -101
  62. package/components/ion-footer.js +1 -159
  63. package/components/ion-grid.js +1 -46
  64. package/components/ion-header.js +1 -6
  65. package/components/ion-icon.js +1 -6
  66. package/components/ion-img.js +1 -124
  67. package/components/ion-infinite-scroll-content.js +1 -70
  68. package/components/ion-infinite-scroll.js +1 -236
  69. package/components/ion-input-otp.js +1 -683
  70. package/components/ion-input-password-toggle.js +1 -129
  71. package/components/ion-input.js +1 -617
  72. package/components/ion-item-divider.js +1 -59
  73. package/components/ion-item-group.js +1 -46
  74. package/components/ion-item-option.js +1 -91
  75. package/components/ion-item-options.js +1 -73
  76. package/components/ion-item-sliding.js +1 -458
  77. package/components/ion-item.js +1 -6
  78. package/components/ion-label.js +1 -6
  79. package/components/ion-list-header.js +1 -6
  80. package/components/ion-list.js +1 -6
  81. package/components/ion-loading.js +1 -344
  82. package/components/ion-menu-button.js +1 -110
  83. package/components/ion-menu-toggle.js +1 -64
  84. package/components/ion-menu.js +1 -745
  85. package/components/ion-modal.js +1 -6
  86. package/components/ion-nav-link.js +1 -64
  87. package/components/ion-nav.js +1 -956
  88. package/components/ion-note.js +1 -47
  89. package/components/ion-picker-column-option.js +1 -6
  90. package/components/ion-picker-column.js +1 -6
  91. package/components/ion-picker-legacy-column.js +1 -6
  92. package/components/ion-picker-legacy.js +1 -343
  93. package/components/ion-picker.js +1 -6
  94. package/components/ion-popover.js +1 -6
  95. package/components/ion-progress-bar.js +1 -101
  96. package/components/ion-radio-group.js +1 -6
  97. package/components/ion-radio.js +1 -6
  98. package/components/ion-range.js +1 -853
  99. package/components/ion-refresher-content.js +1 -89
  100. package/components/ion-refresher.js +1 -751
  101. package/components/ion-reorder-group.js +1 -322
  102. package/components/ion-reorder.js +1 -60
  103. package/components/ion-ripple-effect.js +1 -6
  104. package/components/ion-route-redirect.js +1 -45
  105. package/components/ion-route.js +1 -74
  106. package/components/ion-router-link.js +1 -61
  107. package/components/ion-router-outlet.js +1 -227
  108. package/components/ion-router.js +1 -841
  109. package/components/ion-row.js +1 -36
  110. package/components/ion-searchbar.js +1 -530
  111. package/components/ion-segment-button.js +1 -174
  112. package/components/ion-segment-content.js +1 -35
  113. package/components/ion-segment-view.js +1 -148
  114. package/components/ion-segment.js +1 -602
  115. package/components/ion-select-modal.js +1 -6
  116. package/components/ion-select-option.js +1 -46
  117. package/components/ion-select-popover.js +1 -6
  118. package/components/ion-select.js +1 -1037
  119. package/components/ion-skeleton-text.js +1 -65
  120. package/components/ion-spinner.js +1 -6
  121. package/components/ion-split-pane.js +1 -197
  122. package/components/ion-tab-bar.js +1 -115
  123. package/components/ion-tab-button.js +1 -128
  124. package/components/ion-tab.js +1 -91
  125. package/components/ion-tabs.js +1 -205
  126. package/components/ion-text.js +1 -42
  127. package/components/ion-textarea.js +1 -554
  128. package/components/ion-thumbnail.js +1 -36
  129. package/components/ion-title.js +1 -6
  130. package/components/ion-toast.js +1 -941
  131. package/components/ion-toggle.js +1 -361
  132. package/components/ion-toolbar.js +1 -6
  133. package/components/ionic-global.js +1 -144
  134. package/components/ios.transition.js +1 -672
  135. package/components/item.js +1 -302
  136. package/components/keyboard-controller.js +1 -162
  137. package/components/keyboard.js +1 -141
  138. package/components/keyboard2.js +1 -76
  139. package/components/label.js +1 -100
  140. package/components/list-header.js +1 -47
  141. package/components/list.js +1 -68
  142. package/components/lock-controller.js +1 -35
  143. package/components/md.transition.js +1 -51
  144. package/components/menu-toggle-util.js +1 -9
  145. package/components/modal.js +1 -2674
  146. package/components/notch-controller.js +1 -150
  147. package/components/overlays.js +1 -912
  148. package/components/picker-column-option.js +1 -136
  149. package/components/picker-column.js +1 -595
  150. package/components/picker-column2.js +1 -377
  151. package/components/picker.js +1 -498
  152. package/components/popover.js +1 -1502
  153. package/components/radio-group.js +1 -287
  154. package/components/radio.js +1 -229
  155. package/components/refresher.utils.js +1 -193
  156. package/components/ripple-effect.js +1 -109
  157. package/components/select-modal.js +1 -196
  158. package/components/select-popover.js +1 -189
  159. package/components/spinner.js +1 -224
  160. package/components/status-tap.js +1 -36
  161. package/components/swipe-back.js +1 -75
  162. package/components/theme.js +1 -40
  163. package/components/title.js +1 -70
  164. package/components/toolbar.js +1 -89
  165. package/components/validity.js +1 -14
  166. package/components/watch-options.js +1 -44
  167. package/dist/cjs/{animation-Bt3H9L1C.js → animation-Dg4yiuR2.js} +1 -1
  168. package/dist/cjs/app-globals-CLI8xCmk.js +11 -0
  169. package/dist/cjs/{button-active-CMc8cD90.js → button-active-FscMI17-.js} +1 -1
  170. package/dist/cjs/{config-C5fsO43a.js → config-BukYi_pW.js} +1 -1
  171. package/dist/cjs/{data-JwZKaIQB.js → data-BYlBjkMU.js} +1 -1
  172. package/dist/cjs/{framework-delegate-DMJRBuDi.js → framework-delegate-CRgp8o_p.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-VCK4V3mG.js → hardware-back-button-C4rMJ5uI.js} +1 -1
  174. package/dist/cjs/{helpers-DrTqNghc.js → helpers-CxTYJdbT.js} +1 -1
  175. package/dist/cjs/{index-094mMFB-.js → index-C845Ti6K.js} +4 -4
  176. package/dist/cjs/{index-DrMUZJj6.js → index-CFUwM5x_.js} +5 -5
  177. package/dist/cjs/{index-D6Wc6v08.js → index-CqT-2gKy.js} +503 -382
  178. package/dist/cjs/{index-CO6eryBo.js → index-MbaBbWXk.js} +2 -2
  179. package/dist/cjs/{index-C534ULug.js → index-YcSftOMz.js} +2 -2
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-CW0KUFTQ.js → input-shims-DlFhYYTs.js} +3 -3
  182. package/dist/cjs/{input.utils-B_QROI2g.js → input.utils-DmeJ8dmo.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +23 -15
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -15
  185. package/dist/cjs/ion-alert.cjs.entry.js +25 -17
  186. package/dist/cjs/ion-app_8.cjs.entry.js +44 -40
  187. package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -12
  188. package/dist/cjs/ion-back-button.cjs.entry.js +7 -7
  189. package/dist/cjs/ion-backdrop.cjs.entry.js +6 -6
  190. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +20 -14
  191. package/dist/cjs/ion-button_2.cjs.entry.js +36 -18
  192. package/dist/cjs/ion-card_5.cjs.entry.js +23 -23
  193. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -7
  194. package/dist/cjs/ion-chip.cjs.entry.js +6 -6
  195. package/dist/cjs/ion-col_3.cjs.entry.js +8 -8
  196. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -8
  197. package/dist/cjs/ion-datetime_3.cjs.entry.js +67 -39
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +17 -13
  199. package/dist/cjs/ion-img.cjs.entry.js +8 -6
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -13
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +16 -10
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +9 -7
  203. package/dist/cjs/ion-input.cjs.entry.js +21 -13
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +17 -15
  205. package/dist/cjs/ion-item_8.cjs.entry.js +42 -36
  206. package/dist/cjs/ion-loading.cjs.entry.js +18 -14
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +30 -22
  208. package/dist/cjs/ion-modal.cjs.entry.js +55 -40
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +10 -8
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +11 -7
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +21 -15
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +17 -13
  216. package/dist/cjs/ion-range.cjs.entry.js +29 -15
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -14
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -11
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +20 -10
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +22 -12
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +5 -5
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +12 -12
  226. package/dist/cjs/ion-select_3.cjs.entry.js +29 -21
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +15 -9
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +14 -12
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +10 -8
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +18 -12
  233. package/dist/cjs/ion-toast.cjs.entry.js +21 -15
  234. package/dist/cjs/ion-toggle.cjs.entry.js +10 -8
  235. package/dist/cjs/{ionic-global-HMVqOFGO.js → ionic-global-Bc3kJi1Z.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-BOt_uW73.js → ios.transition-trBiC95R.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-Dt968VXB.js → md.transition-CUQECuvD.js} +4 -4
  240. package/dist/cjs/{notch-controller-Bzqhjm4f.js → notch-controller-sD-lTpdc.js} +1 -1
  241. package/dist/cjs/{overlays-B2b-TTbl.js → overlays-C2jiBSNQ.js} +5 -5
  242. package/dist/cjs/{status-tap-g0sWWkXk.js → status-tap-CCJk5VgT.js} +3 -3
  243. package/dist/cjs/{swipe-back-BIayeNOD.js → swipe-back-BGhTQ1CU.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +4 -2
  246. package/dist/collection/components/action-sheet/action-sheet.js +20 -10
  247. package/dist/collection/components/alert/alert.js +24 -12
  248. package/dist/collection/components/back-button/back-button.js +4 -2
  249. package/dist/collection/components/badge/badge.js +2 -1
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +8 -4
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +4 -2
  252. package/dist/collection/components/button/button.js +6 -3
  253. package/dist/collection/components/card/card.js +6 -3
  254. package/dist/collection/components/card-header/card-header.js +2 -1
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -1
  256. package/dist/collection/components/card-title/card-title.js +2 -1
  257. package/dist/collection/components/checkbox/checkbox.js +4 -2
  258. package/dist/collection/components/chip/chip.js +2 -1
  259. package/dist/collection/components/content/content.js +8 -4
  260. package/dist/collection/components/datetime/datetime.js +34 -15
  261. package/dist/collection/components/datetime-button/datetime-button.js +2 -1
  262. package/dist/collection/components/fab-button/fab-button.js +6 -3
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -2
  264. package/dist/collection/components/input/input.js +11 -6
  265. package/dist/collection/components/input-otp/input-otp.js +8 -4
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +4 -2
  267. package/dist/collection/components/item/item.js +6 -3
  268. package/dist/collection/components/item-divider/item-divider.js +2 -1
  269. package/dist/collection/components/item-option/item-option.js +2 -1
  270. package/dist/collection/components/item-options/item-options.js +2 -1
  271. package/dist/collection/components/item-sliding/item-sliding.js +2 -1
  272. package/dist/collection/components/label/label.js +6 -3
  273. package/dist/collection/components/list-header/list-header.js +2 -1
  274. package/dist/collection/components/loading/loading.js +22 -11
  275. package/dist/collection/components/menu/menu.js +10 -5
  276. package/dist/collection/components/menu-button/menu-button.js +2 -1
  277. package/dist/collection/components/modal/gestures/sheet.js +32 -21
  278. package/dist/collection/components/modal/modal.js +35 -20
  279. package/dist/collection/components/nav/nav.js +89 -45
  280. package/dist/collection/components/nav-link/nav-link.js +9 -5
  281. package/dist/collection/components/note/note.js +2 -1
  282. package/dist/collection/components/picker/picker.js +2 -1
  283. package/dist/collection/components/picker-column/picker-column.js +6 -3
  284. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
  285. package/dist/collection/components/picker-legacy/picker.js +24 -12
  286. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
  287. package/dist/collection/components/popover/popover.js +33 -17
  288. package/dist/collection/components/progress-bar/progress-bar.js +2 -1
  289. package/dist/collection/components/radio/radio.js +2 -1
  290. package/dist/collection/components/radio-group/radio-group.js +6 -3
  291. package/dist/collection/components/range/range.js +14 -7
  292. package/dist/collection/components/refresher/refresher.js +73 -5
  293. package/dist/collection/components/refresher-content/refresher-content.js +8 -4
  294. package/dist/collection/components/reorder-group/reorder-group.js +6 -3
  295. package/dist/collection/components/route/route.js +4 -2
  296. package/dist/collection/components/router/router.js +10 -5
  297. package/dist/collection/components/router-link/router-link.js +6 -3
  298. package/dist/collection/components/router-outlet/router-outlet.js +18 -9
  299. package/dist/collection/components/searchbar/searchbar.js +11 -6
  300. package/dist/collection/components/segment/segment.js +10 -5
  301. package/dist/collection/components/segment-button/segment-button.js +4 -2
  302. package/dist/collection/components/segment-view/segment-view.js +2 -1
  303. package/dist/collection/components/select/select.js +10 -5
  304. package/dist/collection/components/select-modal/select-modal.js +2 -1
  305. package/dist/collection/components/select-popover/select-popover.js +2 -1
  306. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
  307. package/dist/collection/components/spinner/spinner.js +4 -2
  308. package/dist/collection/components/tab/tab.js +4 -2
  309. package/dist/collection/components/tab-bar/tab-bar.js +4 -2
  310. package/dist/collection/components/tab-button/tab-button.js +4 -2
  311. package/dist/collection/components/tabs/tabs.js +4 -2
  312. package/dist/collection/components/text/text.js +2 -1
  313. package/dist/collection/components/textarea/textarea.js +6 -3
  314. package/dist/collection/components/title/title.js +4 -2
  315. package/dist/collection/components/toast/toast.js +34 -17
  316. package/dist/collection/components/toggle/toggle.js +4 -2
  317. package/dist/collection/components/toolbar/toolbar.js +2 -1
  318. package/dist/docs.d.ts +37 -0
  319. package/dist/docs.json +835 -381
  320. package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
  321. package/dist/esm/app-globals-DhZjtldk.js +9 -0
  322. package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
  323. package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
  324. package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
  325. package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
  326. package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
  327. package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
  328. package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
  329. package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
  330. package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
  331. package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
  332. package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
  333. package/dist/esm/index.js +12 -12
  334. package/dist/esm/{input-shims-DyOpfTg6.js → input-shims-C1hAaHcP.js} +3 -3
  335. package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
  336. package/dist/esm/ion-accordion_2.entry.js +23 -15
  337. package/dist/esm/ion-action-sheet.entry.js +21 -15
  338. package/dist/esm/ion-alert.entry.js +25 -17
  339. package/dist/esm/ion-app_8.entry.js +44 -40
  340. package/dist/esm/ion-avatar_3.entry.js +12 -12
  341. package/dist/esm/ion-back-button.entry.js +7 -7
  342. package/dist/esm/ion-backdrop.entry.js +6 -6
  343. package/dist/esm/ion-breadcrumb_2.entry.js +20 -14
  344. package/dist/esm/ion-button_2.entry.js +36 -18
  345. package/dist/esm/ion-card_5.entry.js +23 -23
  346. package/dist/esm/ion-checkbox.entry.js +7 -7
  347. package/dist/esm/ion-chip.entry.js +6 -6
  348. package/dist/esm/ion-col_3.entry.js +8 -8
  349. package/dist/esm/ion-datetime-button.entry.js +8 -8
  350. package/dist/esm/ion-datetime_3.entry.js +67 -39
  351. package/dist/esm/ion-fab_3.entry.js +17 -13
  352. package/dist/esm/ion-img.entry.js +8 -6
  353. package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
  354. package/dist/esm/ion-input-otp.entry.js +16 -10
  355. package/dist/esm/ion-input-password-toggle.entry.js +9 -7
  356. package/dist/esm/ion-input.entry.js +21 -13
  357. package/dist/esm/ion-item-option_3.entry.js +17 -15
  358. package/dist/esm/ion-item_8.entry.js +42 -36
  359. package/dist/esm/ion-loading.entry.js +18 -14
  360. package/dist/esm/ion-menu_3.entry.js +30 -22
  361. package/dist/esm/ion-modal.entry.js +55 -40
  362. package/dist/esm/ion-nav_2.entry.js +14 -10
  363. package/dist/esm/ion-picker-column-option.entry.js +10 -8
  364. package/dist/esm/ion-picker-column.entry.js +11 -7
  365. package/dist/esm/ion-picker.entry.js +6 -6
  366. package/dist/esm/ion-popover.entry.js +21 -15
  367. package/dist/esm/ion-progress-bar.entry.js +7 -7
  368. package/dist/esm/ion-radio_2.entry.js +17 -13
  369. package/dist/esm/ion-range.entry.js +29 -15
  370. package/dist/esm/ion-refresher_2.entry.js +45 -14
  371. package/dist/esm/ion-reorder_2.entry.js +13 -11
  372. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  373. package/dist/esm/ion-route_4.entry.js +20 -10
  374. package/dist/esm/ion-searchbar.entry.js +22 -12
  375. package/dist/esm/ion-segment-content.entry.js +3 -3
  376. package/dist/esm/ion-segment-view.entry.js +5 -5
  377. package/dist/esm/ion-segment_2.entry.js +26 -16
  378. package/dist/esm/ion-select-modal.entry.js +12 -12
  379. package/dist/esm/ion-select_3.entry.js +29 -21
  380. package/dist/esm/ion-spinner.entry.js +4 -4
  381. package/dist/esm/ion-split-pane.entry.js +15 -9
  382. package/dist/esm/ion-tab-bar_2.entry.js +14 -12
  383. package/dist/esm/ion-tab_2.entry.js +10 -8
  384. package/dist/esm/ion-text.entry.js +4 -4
  385. package/dist/esm/ion-textarea.entry.js +18 -12
  386. package/dist/esm/ion-toast.entry.js +21 -15
  387. package/dist/esm/ion-toggle.entry.js +10 -8
  388. package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
  389. package/dist/esm/ionic.js +6 -6
  390. package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
  391. package/dist/esm/loader.js +5 -5
  392. package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
  393. package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
  394. package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
  395. package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
  396. package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
  397. package/dist/html.html-data.json +109 -109
  398. package/dist/ionic/index.esm.js +1 -1
  399. package/dist/ionic/ionic.esm.js +1 -1
  400. package/dist/ionic/{p-316c0420.entry.js → p-025d2d32.entry.js} +1 -1
  401. package/dist/ionic/p-02acdef4.entry.js +4 -0
  402. package/dist/ionic/p-04e2c388.entry.js +4 -0
  403. package/dist/ionic/{p-370e4237.entry.js → p-074344b8.entry.js} +1 -1
  404. package/dist/ionic/p-0761b4d3.entry.js +4 -0
  405. package/dist/ionic/p-13ade5c8.entry.js +4 -0
  406. package/dist/ionic/p-1b02923f.entry.js +4 -0
  407. package/dist/ionic/p-1bd477a9.entry.js +4 -0
  408. package/dist/ionic/{p-d2489bf2.entry.js → p-1fa1406c.entry.js} +1 -1
  409. package/dist/ionic/{p-46d74291.entry.js → p-1fd588a7.entry.js} +1 -1
  410. package/dist/ionic/p-239a27a4.entry.js +4 -0
  411. package/dist/ionic/{p-94de5cfa.entry.js → p-277abec1.entry.js} +1 -1
  412. package/dist/ionic/{p-dd1aef77.entry.js → p-28d7852f.entry.js} +1 -1
  413. package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
  414. package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
  415. package/dist/ionic/p-3e143d1d.entry.js +4 -0
  416. package/dist/ionic/p-4431ef7e.entry.js +4 -0
  417. package/dist/ionic/p-463767ce.entry.js +4 -0
  418. package/dist/ionic/p-4f888343.entry.js +4 -0
  419. package/dist/ionic/p-51c11c47.entry.js +4 -0
  420. package/dist/ionic/p-56050077.entry.js +4 -0
  421. package/dist/ionic/p-6a3a5aae.entry.js +4 -0
  422. package/dist/ionic/p-6b97f2a3.entry.js +4 -0
  423. package/dist/ionic/{p-51a60e0f.entry.js → p-7c72d482.entry.js} +1 -1
  424. package/dist/ionic/p-7d20f4f8.entry.js +4 -0
  425. package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
  426. package/dist/ionic/p-91fc7352.entry.js +4 -0
  427. package/dist/ionic/p-93845421.entry.js +4 -0
  428. package/dist/ionic/{p-3a6caca9.entry.js → p-964090ef.entry.js} +1 -1
  429. package/dist/ionic/p-96a2e768.entry.js +4 -0
  430. package/dist/ionic/{p-d126e8d3.entry.js → p-9745651b.entry.js} +1 -1
  431. package/dist/ionic/{p-f9061316.entry.js → p-9802c88e.entry.js} +1 -1
  432. package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
  433. package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
  434. package/dist/ionic/{p-CwgG81ZD.js → p-B8xlpH8p.js} +1 -1
  435. package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
  436. package/dist/ionic/p-BW_TRJm8.js +4 -0
  437. package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
  438. package/dist/ionic/{p-D0dMcSkw.js → p-BvFYtOdE.js} +1 -1
  439. package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
  440. package/dist/ionic/{p-BYEqWnSg.js → p-C0JvVFMv.js} +1 -1
  441. package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
  442. package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
  443. package/dist/ionic/{p-D-eFFUkA.js → p-CmFz1Mjc.js} +1 -1
  444. package/dist/ionic/p-CtA-yJYy.js +4 -0
  445. package/dist/ionic/p-D8HJQ1qq.js +4 -0
  446. package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
  447. package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
  448. package/dist/ionic/{p-DdR6rpbR.js → p-DTPR1Wpn.js} +1 -1
  449. package/dist/ionic/{p-DCv9sLH2.js → p-DjriolRs.js} +1 -1
  450. package/dist/ionic/p-DtVZDHlS.js +4 -0
  451. package/dist/ionic/{p-QHYY4sjU.js → p-GWUGgWx6.js} +1 -1
  452. package/dist/ionic/p-IGIE5vDm.js +5 -0
  453. package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
  454. package/dist/ionic/{p-86f53961.entry.js → p-a287e18e.entry.js} +1 -1
  455. package/dist/ionic/p-a805674e.entry.js +4 -0
  456. package/dist/ionic/p-a81ae2cd.entry.js +4 -0
  457. package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
  458. package/dist/ionic/{p-dbbe606a.entry.js → p-b2d5238b.entry.js} +1 -1
  459. package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
  460. package/dist/ionic/{p-72c38b88.entry.js → p-b4d52b58.entry.js} +1 -1
  461. package/dist/ionic/{p-2a939845.entry.js → p-b67a2114.entry.js} +1 -1
  462. package/dist/ionic/{p-c73627c8.entry.js → p-bced1f3e.entry.js} +1 -1
  463. package/dist/ionic/{p-9a2d390d.entry.js → p-c1c9b2bb.entry.js} +1 -1
  464. package/dist/ionic/{p-f8f22cc0.entry.js → p-c3e65e45.entry.js} +1 -1
  465. package/dist/ionic/p-c76cc21d.entry.js +4 -0
  466. package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
  467. package/dist/ionic/p-cbf245b5.entry.js +4 -0
  468. package/dist/ionic/p-d68b665a.entry.js +4 -0
  469. package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
  470. package/dist/ionic/p-efe86ed9.entry.js +4 -0
  471. package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
  472. package/dist/ionic/{p-DbQ5QkTP.js → p-gbVXD275.js} +1 -1
  473. package/dist/ionic/p-hNN3VvaC.js +4 -0
  474. package/dist/types/components/datetime/datetime.d.ts +9 -0
  475. package/dist/types/components/header/header.utils.d.ts +2 -1
  476. package/dist/types/components/modal/modal-interface.d.ts +5 -1
  477. package/dist/types/components/modal/modal.d.ts +5 -0
  478. package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
  479. package/dist/types/components/refresher/refresher.d.ts +16 -3
  480. package/dist/types/components.d.ts +927 -189
  481. package/dist/types/interface.d.ts +1 -1
  482. package/dist/types/stencil-public-runtime.d.ts +126 -14
  483. package/dist/types/utils/gesture/listener.d.ts +2 -1
  484. package/hydrate/index.d.ts +12 -0
  485. package/hydrate/index.js +5202 -1327
  486. package/hydrate/index.mjs +5201 -1328
  487. package/package.json +2 -2
  488. package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
  489. package/dist/esm/app-globals-BDSf8fOA.js +0 -8
  490. package/dist/ionic/p-012212e4.entry.js +0 -4
  491. package/dist/ionic/p-074839fc.entry.js +0 -4
  492. package/dist/ionic/p-0dfa5a37.entry.js +0 -4
  493. package/dist/ionic/p-0f418a37.entry.js +0 -4
  494. package/dist/ionic/p-11518b31.entry.js +0 -4
  495. package/dist/ionic/p-1838bed5.entry.js +0 -4
  496. package/dist/ionic/p-29721c43.entry.js +0 -4
  497. package/dist/ionic/p-31f7095f.entry.js +0 -4
  498. package/dist/ionic/p-34642fa1.entry.js +0 -4
  499. package/dist/ionic/p-35696017.entry.js +0 -4
  500. package/dist/ionic/p-40c261a3.entry.js +0 -4
  501. package/dist/ionic/p-4e41ea20.entry.js +0 -4
  502. package/dist/ionic/p-6241ce47.entry.js +0 -4
  503. package/dist/ionic/p-639dd543.entry.js +0 -4
  504. package/dist/ionic/p-6444c606.entry.js +0 -4
  505. package/dist/ionic/p-6d070558.entry.js +0 -4
  506. package/dist/ionic/p-7268efa5.entry.js +0 -4
  507. package/dist/ionic/p-7babec72.entry.js +0 -4
  508. package/dist/ionic/p-BKc55Xev.js +0 -4
  509. package/dist/ionic/p-Bmgaetn_.js +0 -4
  510. package/dist/ionic/p-C8IsBmNU.js +0 -5
  511. package/dist/ionic/p-CJxh_yLS.js +0 -4
  512. package/dist/ionic/p-DUt5fQmA.js +0 -4
  513. package/dist/ionic/p-DZRJwG4S.js +0 -4
  514. package/dist/ionic/p-a127bee2.entry.js +0 -4
  515. package/dist/ionic/p-b3d44509.entry.js +0 -4
  516. package/dist/ionic/p-cc45bcbc.entry.js +0 -4
  517. package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
  518. package/dist/ionic/p-d3014190.entry.js +0 -4
  519. package/dist/ionic/p-db82892c.entry.js +0 -4
  520. package/dist/ionic/p-e1d1f3cc.entry.js +0 -4
@@ -1,754 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { proxyCustomElement, HTMLElement, createEvent, writeTask, readTask, h, Host } from '@stencil/core/internal/client';
5
- import { g as getTimeGivenProgression } from './cubic-bezier.js';
6
- import { I as ION_CONTENT_CLASS_SELECTOR, b as ION_CONTENT_ELEMENT_SELECTOR, p as printIonContentErrorMsg, g as getScrollElement } from './index8.js';
7
- import { t as transitionEndAsync, f as clamp, g as getElementRoot, c as componentOnReady, r as raf } from './helpers.js';
8
- import { a as printIonError } from './index4.js';
9
- import { c as hapticImpact, I as ImpactStyle } from './haptic.js';
10
- import { b as getIonMode } from './ionic-global.js';
11
- import { s as shouldUseNativeRefresher, t as translateElement, a as setSpinnerOpacity, h as handleScrollWhileRefreshing, b as handleScrollWhilePulling, c as createSnapBackAnimation, d as createPullingAnimation, g as getRefresherAnimationType } from './refresher.utils.js';
12
-
13
- const refresherIosCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);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{-webkit-transform:rotate(180deg);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{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);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{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, var(--ion-background-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{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}";
14
-
15
- const refresherMdCss = "ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);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{-webkit-transform:rotate(180deg);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{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);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{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #0054e9)}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{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #0054e9);font-size:12px}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:-ms-flexbox;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:-ms-flexbox;display:flex}ion-refresher.refresher-native .refresher-pulling-icon{-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;border-radius:100%;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #ececec));background:var(--ion-color-step-250, var(--ion-background-color-step-250, #ffffff));-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}";
16
-
17
- const Refresher = /*@__PURE__*/ proxyCustomElement(class Refresher extends HTMLElement {
18
- constructor(registerHost) {
19
- super();
20
- if (registerHost !== false) {
21
- this.__registerHost();
22
- }
23
- this.ionRefresh = createEvent(this, "ionRefresh", 7);
24
- this.ionPull = createEvent(this, "ionPull", 7);
25
- this.ionStart = createEvent(this, "ionStart", 7);
26
- this.appliedStyles = false;
27
- this.didStart = false;
28
- this.progress = 0;
29
- this.pointerDown = false;
30
- this.needsCompletion = false;
31
- this.didRefresh = false;
32
- this.contentFullscreen = false;
33
- this.lastVelocityY = 0;
34
- this.animations = [];
35
- this.nativeRefresher = false;
36
- /**
37
- * The current state which the refresher is in. The refresher's states include:
38
- *
39
- * - `inactive` - The refresher is not being pulled down or refreshing and is currently hidden.
40
- * - `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.
41
- * - `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.
42
- * - `ready` - The user has pulled down the refresher far enough that if they let go, it'll begin the `refreshing` state.
43
- * - `refreshing` - The refresher is actively waiting on the async operation to end. Once the refresh handler calls `complete()` it will begin the `completing` state.
44
- * - `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.
45
- */
46
- this.state = 1 /* RefresherState.Inactive */;
47
- /**
48
- * The minimum distance the user must pull down until the
49
- * refresher will go into the `refreshing` state.
50
- * Does not apply when the refresher content uses a spinner,
51
- * enabling the native refresher.
52
- */
53
- this.pullMin = 60;
54
- /**
55
- * The maximum distance of the pull until the refresher
56
- * will automatically go into the `refreshing` state.
57
- * Defaults to the result of `pullMin + 60`.
58
- * Does not apply when the refresher content uses a spinner,
59
- * enabling the native refresher.
60
- */
61
- this.pullMax = this.pullMin + 60;
62
- /**
63
- * Time it takes to close the refresher.
64
- * Does not apply when the refresher content uses a spinner,
65
- * enabling the native refresher.
66
- */
67
- this.closeDuration = '280ms';
68
- /**
69
- * Time it takes the refresher to snap back to the `refreshing` state.
70
- * Does not apply when the refresher content uses a spinner,
71
- * enabling the native refresher.
72
- */
73
- this.snapbackDuration = '280ms';
74
- /**
75
- * How much to multiply the pull speed by. To slow the pull animation down,
76
- * pass a number less than `1`. To speed up the pull, pass a number greater
77
- * than `1`. The default value is `1` which is equal to the speed of the cursor.
78
- * If a negative value is passed in, the factor will be `1` instead.
79
- *
80
- * For example: If the value passed is `1.2` and the content is dragged by
81
- * `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels
82
- * (an increase of 20 percent). If the value passed is `0.8`, the dragged amount
83
- * will be `8` pixels, less than the amount the cursor has moved.
84
- *
85
- * Does not apply when the refresher content uses a spinner,
86
- * enabling the native refresher.
87
- */
88
- this.pullFactor = 1;
89
- /**
90
- * If `true`, the refresher will be hidden.
91
- */
92
- this.disabled = false;
93
- }
94
- disabledChanged() {
95
- if (this.gesture) {
96
- this.gesture.enable(!this.disabled);
97
- }
98
- }
99
- async checkNativeRefresher() {
100
- const useNativeRefresher = await shouldUseNativeRefresher(this.el, getIonMode(this));
101
- if (useNativeRefresher && !this.nativeRefresher) {
102
- const contentEl = this.el.closest('ion-content');
103
- this.setupNativeRefresher(contentEl);
104
- }
105
- else if (!useNativeRefresher) {
106
- this.destroyNativeRefresher();
107
- }
108
- }
109
- destroyNativeRefresher() {
110
- if (this.scrollEl && this.scrollListenerCallback) {
111
- this.scrollEl.removeEventListener('scroll', this.scrollListenerCallback);
112
- this.scrollListenerCallback = undefined;
113
- }
114
- this.nativeRefresher = false;
115
- }
116
- async resetNativeRefresher(el, state) {
117
- this.state = state;
118
- if (getIonMode(this) === 'ios') {
119
- await translateElement(el, undefined, 300);
120
- }
121
- else {
122
- await transitionEndAsync(this.el.querySelector('.refresher-refreshing-icon'), 200);
123
- }
124
- this.didRefresh = false;
125
- this.needsCompletion = false;
126
- this.pointerDown = false;
127
- this.animations.forEach((ani) => ani.destroy());
128
- this.animations = [];
129
- this.progress = 0;
130
- this.state = 1 /* RefresherState.Inactive */;
131
- }
132
- async setupiOSNativeRefresher(pullingSpinner, refreshingSpinner) {
133
- this.elementToTransform = this.scrollEl;
134
- const ticks = pullingSpinner.shadowRoot.querySelectorAll('svg');
135
- let MAX_PULL = this.scrollEl.clientHeight * 0.16;
136
- const NUM_TICKS = ticks.length;
137
- writeTask(() => ticks.forEach((el) => el.style.setProperty('animation', 'none')));
138
- this.scrollListenerCallback = () => {
139
- // If pointer is not on screen or refresher is not active, ignore scroll
140
- if (!this.pointerDown && this.state === 1 /* RefresherState.Inactive */) {
141
- return;
142
- }
143
- readTask(() => {
144
- // PTR should only be active when overflow scrolling at the top
145
- const scrollTop = this.scrollEl.scrollTop;
146
- const refresherHeight = this.el.clientHeight;
147
- if (scrollTop > 0) {
148
- /**
149
- * If refresher is refreshing and user tries to scroll
150
- * progressively fade refresher out/in
151
- */
152
- if (this.state === 8 /* RefresherState.Refreshing */) {
153
- const ratio = clamp(0, scrollTop / (refresherHeight * 0.5), 1);
154
- writeTask(() => setSpinnerOpacity(refreshingSpinner, 1 - ratio));
155
- return;
156
- }
157
- return;
158
- }
159
- if (this.pointerDown) {
160
- if (!this.didStart) {
161
- this.didStart = true;
162
- this.ionStart.emit();
163
- }
164
- // emit "pulling" on every move
165
- if (this.pointerDown) {
166
- this.ionPull.emit();
167
- }
168
- }
169
- /**
170
- * We want to delay the start of this gesture by ~30px
171
- * when initially pulling down so the refresher does not
172
- * overlap with the content. But when letting go of the
173
- * gesture before the refresher completes, we want the
174
- * refresher tick marks to quickly fade out.
175
- */
176
- const offset = this.didStart ? 30 : 0;
177
- const pullAmount = (this.progress = clamp(0, (Math.abs(scrollTop) - offset) / MAX_PULL, 1));
178
- const shouldShowRefreshingSpinner = this.state === 8 /* RefresherState.Refreshing */ || pullAmount === 1;
179
- if (shouldShowRefreshingSpinner) {
180
- if (this.pointerDown) {
181
- handleScrollWhileRefreshing(refreshingSpinner, this.lastVelocityY);
182
- }
183
- if (!this.didRefresh) {
184
- this.beginRefresh();
185
- this.didRefresh = true;
186
- hapticImpact({ style: ImpactStyle.Light });
187
- /**
188
- * Clear focus from any active element to prevent scroll jumps
189
- * when the refresh completes
190
- */
191
- const activeElement = document.activeElement;
192
- if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
193
- activeElement.blur();
194
- }
195
- /**
196
- * Translate the content element otherwise when pointer is removed
197
- * from screen the scroll content will bounce back over the refresher
198
- */
199
- if (!this.pointerDown) {
200
- translateElement(this.elementToTransform, `${refresherHeight}px`);
201
- }
202
- }
203
- }
204
- else {
205
- this.state = 2 /* RefresherState.Pulling */;
206
- handleScrollWhilePulling(ticks, NUM_TICKS, pullAmount);
207
- }
208
- });
209
- };
210
- this.scrollEl.addEventListener('scroll', this.scrollListenerCallback);
211
- this.gesture = (await import('./index3.js')).createGesture({
212
- el: this.scrollEl,
213
- gestureName: 'refresher',
214
- gesturePriority: 31,
215
- direction: 'y',
216
- threshold: 5,
217
- onStart: () => {
218
- this.pointerDown = true;
219
- if (!this.didRefresh) {
220
- translateElement(this.elementToTransform, '0px');
221
- }
222
- /**
223
- * If the content had `display: none` when
224
- * the refresher was initialized, its clientHeight
225
- * will be 0. When the gesture starts, the content
226
- * will be visible, so try to get the correct
227
- * client height again. This is most common when
228
- * using the refresher in an ion-menu.
229
- */
230
- if (MAX_PULL === 0) {
231
- MAX_PULL = this.scrollEl.clientHeight * 0.16;
232
- }
233
- },
234
- onMove: (ev) => {
235
- this.lastVelocityY = ev.velocityY;
236
- },
237
- onEnd: () => {
238
- this.pointerDown = false;
239
- this.didStart = false;
240
- if (this.needsCompletion) {
241
- this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */);
242
- this.needsCompletion = false;
243
- }
244
- else if (this.didRefresh) {
245
- readTask(() => translateElement(this.elementToTransform, `${this.el.clientHeight}px`));
246
- }
247
- },
248
- });
249
- this.disabledChanged();
250
- }
251
- async setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner) {
252
- const circle = getElementRoot(pullingSpinner).querySelector('circle');
253
- const pullingRefresherIcon = this.el.querySelector('ion-refresher-content .refresher-pulling-icon');
254
- const refreshingCircle = getElementRoot(refreshingSpinner).querySelector('circle');
255
- if (circle !== null && refreshingCircle !== null) {
256
- writeTask(() => {
257
- circle.style.setProperty('animation', 'none');
258
- // This lines up the animation on the refreshing spinner with the pulling spinner
259
- refreshingSpinner.style.setProperty('animation-delay', '-655ms');
260
- refreshingCircle.style.setProperty('animation-delay', '-655ms');
261
- });
262
- }
263
- this.gesture = (await import('./index3.js')).createGesture({
264
- el: this.scrollEl,
265
- gestureName: 'refresher',
266
- gesturePriority: 31,
267
- direction: 'y',
268
- threshold: 5,
269
- canStart: () => this.state !== 8 /* RefresherState.Refreshing */ &&
270
- this.state !== 32 /* RefresherState.Completing */ &&
271
- this.scrollEl.scrollTop === 0,
272
- onStart: (ev) => {
273
- this.progress = 0;
274
- ev.data = { animation: undefined, didStart: false, cancelled: false };
275
- },
276
- onMove: (ev) => {
277
- if ((ev.velocityY < 0 && this.progress === 0 && !ev.data.didStart) || ev.data.cancelled) {
278
- ev.data.cancelled = true;
279
- return;
280
- }
281
- if (!ev.data.didStart) {
282
- ev.data.didStart = true;
283
- this.state = 2 /* RefresherState.Pulling */;
284
- // When ion-refresher is being used with a custom scroll target, the overflow styles need to be applied directly instead of via a css variable
285
- const { scrollEl } = this;
286
- const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';
287
- writeTask(() => scrollEl.style.setProperty(overflowProperty, 'hidden'));
288
- const animationType = getRefresherAnimationType(contentEl);
289
- const animation = createPullingAnimation(animationType, pullingRefresherIcon, this.el);
290
- ev.data.animation = animation;
291
- animation.progressStart(false, 0);
292
- this.ionStart.emit();
293
- this.animations.push(animation);
294
- return;
295
- }
296
- // Since we are using an easing curve, slow the gesture tracking down a bit
297
- this.progress = clamp(0, (ev.deltaY / 180) * 0.5, 1);
298
- ev.data.animation.progressStep(this.progress);
299
- this.ionPull.emit();
300
- },
301
- onEnd: (ev) => {
302
- if (!ev.data.didStart) {
303
- return;
304
- }
305
- this.gesture.enable(false);
306
- const { scrollEl } = this;
307
- const overflowProperty = scrollEl.matches(ION_CONTENT_CLASS_SELECTOR) ? 'overflow' : '--overflow';
308
- writeTask(() => scrollEl.style.removeProperty(overflowProperty));
309
- if (this.progress <= 0.4) {
310
- ev.data.animation.progressEnd(0, this.progress, 500).onFinish(() => {
311
- this.animations.forEach((ani) => ani.destroy());
312
- this.animations = [];
313
- this.gesture.enable(true);
314
- this.state = 1 /* RefresherState.Inactive */;
315
- });
316
- return;
317
- }
318
- const progress = getTimeGivenProgression([0, 0], [0, 0], [1, 1], [1, 1], this.progress)[0];
319
- const snapBackAnimation = createSnapBackAnimation(pullingRefresherIcon);
320
- this.animations.push(snapBackAnimation);
321
- writeTask(async () => {
322
- pullingRefresherIcon.style.setProperty('--ion-pulling-refresher-translate', `${progress * 100}px`);
323
- ev.data.animation.progressEnd();
324
- await snapBackAnimation.play();
325
- this.beginRefresh();
326
- ev.data.animation.destroy();
327
- this.gesture.enable(true);
328
- });
329
- },
330
- });
331
- this.disabledChanged();
332
- }
333
- async setupNativeRefresher(contentEl) {
334
- if (this.scrollListenerCallback || !contentEl || this.nativeRefresher || !this.scrollEl) {
335
- return;
336
- }
337
- /**
338
- * If using non-native refresher before make sure
339
- * we clean up any old CSS. This can happen when
340
- * a user manually calls the refresh method in a
341
- * component create callback before the native
342
- * refresher is setup.
343
- */
344
- this.setCss(0, '', false, '');
345
- this.nativeRefresher = true;
346
- const pullingSpinner = this.el.querySelector('ion-refresher-content .refresher-pulling ion-spinner');
347
- const refreshingSpinner = this.el.querySelector('ion-refresher-content .refresher-refreshing ion-spinner');
348
- if (getIonMode(this) === 'ios') {
349
- this.setupiOSNativeRefresher(pullingSpinner, refreshingSpinner);
350
- }
351
- else {
352
- this.setupMDNativeRefresher(contentEl, pullingSpinner, refreshingSpinner);
353
- }
354
- }
355
- componentDidUpdate() {
356
- this.checkNativeRefresher();
357
- }
358
- async connectedCallback() {
359
- if (this.el.getAttribute('slot') !== 'fixed') {
360
- printIonError('[ion-refresher] - Make sure you use: <ion-refresher slot="fixed">');
361
- return;
362
- }
363
- const contentEl = this.el.closest(ION_CONTENT_ELEMENT_SELECTOR);
364
- if (!contentEl) {
365
- printIonContentErrorMsg(this.el);
366
- return;
367
- }
368
- /**
369
- * Waits for the content to be ready before querying the scroll
370
- * or the background content element.
371
- */
372
- componentOnReady(contentEl, async () => {
373
- const customScrollTarget = contentEl.querySelector(ION_CONTENT_CLASS_SELECTOR);
374
- /**
375
- * Query the custom scroll target (if available), first. In refresher implementations,
376
- * the ion-refresher element will always be a direct child of ion-content (slot="fixed"). By
377
- * querying the custom scroll target first and falling back to the ion-content element,
378
- * the correct scroll element will be returned by the implementation.
379
- */
380
- this.scrollEl = await getScrollElement(customScrollTarget !== null && customScrollTarget !== void 0 ? customScrollTarget : contentEl);
381
- /**
382
- * Query the background content element from the host ion-content element directly.
383
- */
384
- this.backgroundContentEl = await contentEl.getBackgroundElement();
385
- /**
386
- * Check if the content element is fullscreen to apply the correct styles
387
- * when the refresher is refreshing. Otherwise, the refresher will be
388
- * hidden because it is positioned behind the background content element.
389
- */
390
- this.contentFullscreen = contentEl.fullscreen;
391
- if (await shouldUseNativeRefresher(this.el, getIonMode(this))) {
392
- this.setupNativeRefresher(contentEl);
393
- }
394
- else {
395
- this.gesture = (await import('./index3.js')).createGesture({
396
- el: contentEl,
397
- gestureName: 'refresher',
398
- gesturePriority: 31,
399
- direction: 'y',
400
- threshold: 20,
401
- passive: false,
402
- canStart: () => this.canStart(),
403
- onStart: () => this.onStart(),
404
- onMove: (ev) => this.onMove(ev),
405
- onEnd: () => this.onEnd(),
406
- });
407
- this.disabledChanged();
408
- }
409
- });
410
- }
411
- disconnectedCallback() {
412
- this.destroyNativeRefresher();
413
- this.scrollEl = undefined;
414
- if (this.gesture) {
415
- this.gesture.destroy();
416
- this.gesture = undefined;
417
- }
418
- }
419
- /**
420
- * Call `complete()` when your async operation has completed.
421
- * For example, the `refreshing` state is while the app is performing
422
- * an asynchronous operation, such as receiving more data from an
423
- * AJAX request. Once the data has been received, you then call this
424
- * method to signify that the refreshing has completed and to close
425
- * the refresher. This method also changes the refresher's state from
426
- * `refreshing` to `completing`.
427
- */
428
- async complete() {
429
- if (this.nativeRefresher) {
430
- this.needsCompletion = true;
431
- // Do not reset scroll el until user removes pointer from screen
432
- if (!this.pointerDown) {
433
- raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 32 /* RefresherState.Completing */)));
434
- }
435
- }
436
- else {
437
- this.close(32 /* RefresherState.Completing */, '120ms');
438
- }
439
- }
440
- /**
441
- * Changes the refresher's state from `refreshing` to `cancelling`.
442
- */
443
- async cancel() {
444
- if (this.nativeRefresher) {
445
- // Do not reset scroll el until user removes pointer from screen
446
- if (!this.pointerDown) {
447
- raf(() => raf(() => this.resetNativeRefresher(this.elementToTransform, 16 /* RefresherState.Cancelling */)));
448
- }
449
- }
450
- else {
451
- this.close(16 /* RefresherState.Cancelling */, '');
452
- }
453
- }
454
- /**
455
- * A number representing how far down the user has pulled.
456
- * The number `0` represents the user hasn't pulled down at all. The
457
- * number `1`, and anything greater than `1`, represents that the user
458
- * has pulled far enough down that when they let go then the refresh will
459
- * happen. If they let go and the number is less than `1`, then the
460
- * refresh will not happen, and the content will return to it's original
461
- * position.
462
- */
463
- getProgress() {
464
- return Promise.resolve(this.progress);
465
- }
466
- canStart() {
467
- if (!this.scrollEl) {
468
- return false;
469
- }
470
- if (this.state !== 1 /* RefresherState.Inactive */) {
471
- return false;
472
- }
473
- // if the scrollTop is greater than zero then it's
474
- // not possible to pull the content down yet
475
- if (this.scrollEl.scrollTop > 0) {
476
- return false;
477
- }
478
- return true;
479
- }
480
- onStart() {
481
- this.progress = 0;
482
- this.state = 1 /* RefresherState.Inactive */;
483
- this.memoizeOverflowStyle();
484
- /**
485
- * If the content is fullscreen, then we need to
486
- * set the offset-top style on the background content
487
- * element to ensure that the refresher is shown.
488
- */
489
- if (this.contentFullscreen && this.backgroundContentEl) {
490
- this.backgroundContentEl.style.setProperty('--offset-top', '0px');
491
- }
492
- }
493
- onMove(detail) {
494
- if (!this.scrollEl) {
495
- return;
496
- }
497
- // this method can get called like a bazillion times per second,
498
- // so it's built to be as efficient as possible, and does its
499
- // best to do any DOM read/writes only when absolutely necessary
500
- // if multi-touch then get out immediately
501
- const ev = detail.event;
502
- if (ev.touches !== undefined && ev.touches.length > 1) {
503
- return;
504
- }
505
- // do nothing if it's actively refreshing
506
- // or it's in the way of closing
507
- // or this was never a startY
508
- if ((this.state & 56 /* RefresherState._BUSY_ */) !== 0) {
509
- return;
510
- }
511
- const pullFactor = Number.isNaN(this.pullFactor) || this.pullFactor < 0 ? 1 : this.pullFactor;
512
- const deltaY = detail.deltaY * pullFactor;
513
- // don't bother if they're scrolling up
514
- // and have not already started dragging
515
- if (deltaY <= 0) {
516
- // the current Y is higher than the starting Y
517
- // so they scrolled up enough to be ignored
518
- this.progress = 0;
519
- this.state = 1 /* RefresherState.Inactive */;
520
- if (this.appliedStyles) {
521
- // reset the styles only if they were applied
522
- this.setCss(0, '', false, '');
523
- return;
524
- }
525
- return;
526
- }
527
- if (this.state === 1 /* RefresherState.Inactive */) {
528
- // this refresh is not already actively pulling down
529
- // get the content's scrollTop
530
- const scrollHostScrollTop = this.scrollEl.scrollTop;
531
- // if the scrollTop is greater than zero then it's
532
- // not possible to pull the content down yet
533
- if (scrollHostScrollTop > 0) {
534
- this.progress = 0;
535
- return;
536
- }
537
- // content scrolled all the way to the top, and dragging down
538
- this.state = 2 /* RefresherState.Pulling */;
539
- }
540
- // prevent native scroll events
541
- if (ev.cancelable) {
542
- ev.preventDefault();
543
- }
544
- // the refresher is actively pulling at this point
545
- // move the scroll element within the content element
546
- this.setCss(deltaY, '0ms', true, '');
547
- if (deltaY === 0) {
548
- // don't continue if there's no delta yet
549
- this.progress = 0;
550
- return;
551
- }
552
- const pullMin = this.pullMin;
553
- // set pull progress
554
- this.progress = deltaY / pullMin;
555
- // emit "start" if it hasn't started yet
556
- if (!this.didStart) {
557
- this.didStart = true;
558
- this.ionStart.emit();
559
- }
560
- // emit "pulling" on every move
561
- this.ionPull.emit();
562
- // do nothing if the delta is less than the pull threshold
563
- if (deltaY < pullMin) {
564
- // ensure it stays in the pulling state, cuz its not ready yet
565
- this.state = 2 /* RefresherState.Pulling */;
566
- return;
567
- }
568
- if (deltaY > this.pullMax) {
569
- // they pulled farther than the max, so kick off the refresh
570
- this.beginRefresh();
571
- return;
572
- }
573
- // pulled farther than the pull min!!
574
- // it is now in the `ready` state!!
575
- // if they let go then it'll refresh, kerpow!!
576
- this.state = 4 /* RefresherState.Ready */;
577
- return;
578
- }
579
- onEnd() {
580
- // only run in a zone when absolutely necessary
581
- if (this.state === 4 /* RefresherState.Ready */) {
582
- // they pulled down far enough, so it's ready to refresh
583
- this.beginRefresh();
584
- }
585
- else if (this.state === 2 /* RefresherState.Pulling */) {
586
- // they were pulling down, but didn't pull down far enough
587
- // set the content back to it's original location
588
- // and close the refresher
589
- // set that the refresh is actively cancelling
590
- this.cancel();
591
- }
592
- else if (this.state === 1 /* RefresherState.Inactive */) {
593
- /**
594
- * The pull to refresh gesture was aborted
595
- * so we should immediately restore any overflow styles
596
- * that have been modified. Do not call this.cancel
597
- * because the styles will only be reset after a timeout.
598
- * If the gesture is aborted then scrolling should be
599
- * available right away.
600
- */
601
- this.restoreOverflowStyle();
602
- }
603
- }
604
- beginRefresh() {
605
- // assumes we're already back in a zone
606
- // they pulled down far enough, so it's ready to refresh
607
- this.state = 8 /* RefresherState.Refreshing */;
608
- // place the content in a hangout position while it thinks
609
- this.setCss(this.pullMin, this.snapbackDuration, true, '');
610
- /**
611
- * Clear focus from any active element to prevent the browser
612
- * from restoring focus and causing scroll jumps after refresh.
613
- * This ensures the view stays at the top after refresh completes.
614
- */
615
- const activeElement = document.activeElement;
616
- if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
617
- activeElement.blur();
618
- }
619
- // emit "refresh" because it was pulled down far enough
620
- // and they let go to begin refreshing
621
- this.ionRefresh.emit({
622
- complete: this.complete.bind(this),
623
- });
624
- }
625
- close(state, delay) {
626
- // create fallback timer incase something goes wrong with transitionEnd event
627
- setTimeout(() => {
628
- var _a;
629
- this.state = 1 /* RefresherState.Inactive */;
630
- this.progress = 0;
631
- this.didStart = false;
632
- /**
633
- * Reset any overflow styles so the
634
- * user can scroll again.
635
- */
636
- this.setCss(0, '0ms', false, '', true);
637
- /**
638
- * Reset the offset-top style on the background content
639
- * when the refresher is no longer refreshing and the
640
- * content is fullscreen.
641
- *
642
- * This ensures that the behavior of background content
643
- * does not change when refreshing is complete.
644
- */
645
- if (this.contentFullscreen && this.backgroundContentEl) {
646
- (_a = this.backgroundContentEl) === null || _a === void 0 ? void 0 : _a.style.removeProperty('--offset-top');
647
- }
648
- }, 600);
649
- // reset the styles on the scroll element
650
- // set that the refresh is actively cancelling/completing
651
- this.state = state;
652
- this.setCss(0, this.closeDuration, true, delay);
653
- }
654
- setCss(y, duration, overflowVisible, delay, shouldRestoreOverflowStyle = false) {
655
- if (this.nativeRefresher) {
656
- return;
657
- }
658
- this.appliedStyles = y > 0;
659
- writeTask(() => {
660
- if (this.scrollEl && this.backgroundContentEl) {
661
- const scrollStyle = this.scrollEl.style;
662
- const backgroundStyle = this.backgroundContentEl.style;
663
- scrollStyle.transform = backgroundStyle.transform = y > 0 ? `translateY(${y}px) translateZ(0px)` : '';
664
- scrollStyle.transitionDuration = backgroundStyle.transitionDuration = duration;
665
- scrollStyle.transitionDelay = backgroundStyle.transitionDelay = delay;
666
- scrollStyle.overflow = overflowVisible ? 'hidden' : '';
667
- }
668
- /**
669
- * Reset the overflow styles only once
670
- * the pull to refresh effect has been closed.
671
- * This ensures that the gesture is done
672
- * and the refresh operation has either
673
- * been aborted or has completed.
674
- */
675
- if (shouldRestoreOverflowStyle) {
676
- this.restoreOverflowStyle();
677
- }
678
- });
679
- }
680
- memoizeOverflowStyle() {
681
- if (this.scrollEl) {
682
- const { overflow, overflowX, overflowY } = this.scrollEl.style;
683
- this.overflowStyles = {
684
- overflow: overflow !== null && overflow !== void 0 ? overflow : '',
685
- overflowX: overflowX !== null && overflowX !== void 0 ? overflowX : '',
686
- overflowY: overflowY !== null && overflowY !== void 0 ? overflowY : '',
687
- };
688
- }
689
- }
690
- restoreOverflowStyle() {
691
- if (this.overflowStyles !== undefined && this.scrollEl !== undefined) {
692
- const { overflow, overflowX, overflowY } = this.overflowStyles;
693
- this.scrollEl.style.overflow = overflow;
694
- this.scrollEl.style.overflowX = overflowX;
695
- this.scrollEl.style.overflowY = overflowY;
696
- this.overflowStyles = undefined;
697
- }
698
- }
699
- render() {
700
- const mode = getIonMode(this);
701
- return (h(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
702
- [mode]: true,
703
- // Used internally for styling
704
- [`refresher-${mode}`]: true,
705
- 'refresher-native': this.nativeRefresher,
706
- 'refresher-active': this.state !== 1 /* RefresherState.Inactive */,
707
- 'refresher-pulling': this.state === 2 /* RefresherState.Pulling */,
708
- 'refresher-ready': this.state === 4 /* RefresherState.Ready */,
709
- 'refresher-refreshing': this.state === 8 /* RefresherState.Refreshing */,
710
- 'refresher-cancelling': this.state === 16 /* RefresherState.Cancelling */,
711
- 'refresher-completing': this.state === 32 /* RefresherState.Completing */,
712
- } }));
713
- }
714
- get el() { return this; }
715
- static get watchers() { return {
716
- "disabled": ["disabledChanged"]
717
- }; }
718
- static get style() { return {
719
- ios: refresherIosCss,
720
- md: refresherMdCss
721
- }; }
722
- }, [288, "ion-refresher", {
723
- "pullMin": [2, "pull-min"],
724
- "pullMax": [2, "pull-max"],
725
- "closeDuration": [1, "close-duration"],
726
- "snapbackDuration": [1, "snapback-duration"],
727
- "pullFactor": [2, "pull-factor"],
728
- "disabled": [4],
729
- "nativeRefresher": [32],
730
- "state": [32],
731
- "complete": [64],
732
- "cancel": [64],
733
- "getProgress": [64]
734
- }, undefined, {
735
- "disabled": ["disabledChanged"]
736
- }]);
737
- function defineCustomElement$1() {
738
- if (typeof customElements === "undefined") {
739
- return;
740
- }
741
- const components = ["ion-refresher"];
742
- components.forEach(tagName => { switch (tagName) {
743
- case "ion-refresher":
744
- if (!customElements.get(tagName)) {
745
- customElements.define(tagName, Refresher);
746
- }
747
- break;
748
- } });
749
- }
750
-
751
- const IonRefresher = Refresher;
752
- const defineCustomElement = defineCustomElement$1;
753
-
754
- export { IonRefresher, defineCustomElement };
4
+ import{proxyCustomElement as e,HTMLElement as r,createEvent as i,writeTask as s,readTask as t,h as n,Host as o,transformTag as h}from"@stencil/core/internal/client";import{g as a}from"./cubic-bezier.js";import{I as f,b as l,p as c,g as p}from"./index8.js";import{t as d,f as g,g as m,c as u,r as b}from"./helpers.js";import{a as v}from"./index4.js";import{c as x,I as w}from"./haptic.js";import{b as k}from"./ionic-global.js";import{s as y,t as S,a as j,h as z,b as E,c as N,d as M,g as P}from"./refresher.utils.js";const R=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.ionRefresh=i(this,"ionRefresh",7),this.ionPull=i(this,"ionPull",7),this.ionStart=i(this,"ionStart",7),this.ionPullStart=i(this,"ionPullStart",7),this.ionPullEnd=i(this,"ionPullEnd",7),this.appliedStyles=!1,this.didStart=!1,this.progress=0,this.pointerDown=!1,this.needsCompletion=!1,this.didRefresh=!1,this.contentFullscreen=!1,this.lastVelocityY=0,this.animations=[],this.nativeRefresher=!1,this.state=1,this.pullMin=60,this.pullMax=this.pullMin+60,this.closeDuration="280ms",this.snapbackDuration="280ms",this.pullFactor=1,this.disabled=!1}disabledChanged(){this.gesture&&this.gesture.enable(!this.disabled)}async checkNativeRefresher(){const e=await y(this.el,k(this));if(e&&!this.nativeRefresher){const e=this.el.closest("ion-content");this.setupNativeRefresher(e)}else e||this.destroyNativeRefresher()}destroyNativeRefresher(){this.scrollEl&&this.scrollListenerCallback&&(this.scrollEl.removeEventListener("scroll",this.scrollListenerCallback),this.scrollListenerCallback=void 0),this.nativeRefresher=!1}async resetNativeRefresher(e,r){this.state=r,"ios"===k(this)?await S(e,void 0,300):await d(this.el.querySelector(".refresher-refreshing-icon"),200),this.didRefresh=!1,this.needsCompletion=!1,this.pointerDown=!1,this.animations.forEach((e=>e.destroy())),this.animations=[],this.progress=0,this.state=1,this.ionPullEnd.emit({reason:32===r?"complete":"cancel"})}async setupiOSNativeRefresher(e,r){this.elementToTransform=this.scrollEl;const i=e.shadowRoot.querySelectorAll("svg");let n=.16*this.scrollEl.clientHeight;const o=i.length;s((()=>i.forEach((e=>e.style.setProperty("animation","none"))))),this.scrollListenerCallback=()=>{(this.pointerDown||1!==this.state)&&t((()=>{const e=this.scrollEl.scrollTop,t=this.el.clientHeight;if(e>0){if(8===this.state){const i=g(0,e/(.5*t),1);return void s((()=>j(r,1-i)))}return}this.pointerDown&&(this.didStart||(this.didStart=!0,this.ionStart.emit(),this.ionPullStart.emit()),this.pointerDown&&this.ionPull.emit());const h=this.didStart?30:0,a=this.progress=g(0,(Math.abs(e)-h)/n,1);if(8===this.state||1===a){if(this.pointerDown&&z(r,this.lastVelocityY),!this.didRefresh){this.beginRefresh(),this.didRefresh=!0,x({style:w.Light});const e=document.activeElement;void 0!==(null==e?void 0:e.blur)&&e.blur(),this.pointerDown||S(this.elementToTransform,t+"px")}}else this.state=2,E(i,o,a)}))},this.scrollEl.addEventListener("scroll",this.scrollListenerCallback),this.gesture=(await import("./index3.js")).createGesture({el:this.scrollEl,gestureName:"refresher",gesturePriority:31,direction:"y",threshold:5,onStart:()=>{this.pointerDown=!0,this.didRefresh||S(this.elementToTransform,"0px"),0===n&&(n=.16*this.scrollEl.clientHeight)},onMove:e=>{this.lastVelocityY=e.velocityY},onEnd:()=>{const e=this.didStart;this.pointerDown=!1,this.didStart=!1,this.needsCompletion?(this.resetNativeRefresher(this.elementToTransform,32),this.needsCompletion=!1):this.didRefresh?t((()=>S(this.elementToTransform,this.el.clientHeight+"px"))):e&&this.ionPullEnd.emit({reason:"cancel"})}}),this.disabledChanged()}async setupMDNativeRefresher(e,r,i){const t=m(r).querySelector("circle"),n=this.el.querySelector("ion-refresher-content .refresher-pulling-icon"),o=m(i).querySelector("circle");null!==t&&null!==o&&s((()=>{t.style.setProperty("animation","none"),i.style.setProperty("animation-delay","-655ms"),o.style.setProperty("animation-delay","-655ms")})),this.gesture=(await import("./index3.js")).createGesture({el:this.scrollEl,gestureName:"refresher",gesturePriority:31,direction:"y",threshold:5,canStart:()=>8!==this.state&&32!==this.state&&0===this.scrollEl.scrollTop,onStart:e=>{this.progress=0,e.data={animation:void 0,didStart:!1,cancelled:!1}},onMove:r=>{if(r.velocityY<0&&0===this.progress&&!r.data.didStart||r.data.cancelled)r.data.cancelled=!0;else{if(!r.data.didStart){r.data.didStart=!0,this.state=2;const{scrollEl:i}=this,t=i.matches(f)?"overflow":"--overflow";s((()=>i.style.setProperty(t,"hidden")));const o=P(e),h=M(o,n,this.el);return r.data.animation=h,h.progressStart(!1,0),this.ionStart.emit(),this.ionPullStart.emit(),void this.animations.push(h)}this.progress=g(0,r.deltaY/180*.5,1),r.data.animation.progressStep(this.progress),this.ionPull.emit()}},onEnd:e=>{if(!e.data.didStart)return;this.gesture.enable(!1);const{scrollEl:r}=this,i=r.matches(f)?"overflow":"--overflow";if(s((()=>r.style.removeProperty(i))),this.progress<=.4)return void e.data.animation.progressEnd(0,this.progress,500).onFinish((()=>{this.animations.forEach((e=>e.destroy())),this.animations=[],this.gesture.enable(!0),this.state=1,this.ionPullEnd.emit({reason:"cancel"})}));const t=a([0,0],[0,0],[1,1],[1,1],this.progress)[0],o=N(n);this.animations.push(o),s((async()=>{n.style.setProperty("--ion-pulling-refresher-translate",100*t+"px"),e.data.animation.progressEnd(),await o.play(),this.beginRefresh(),e.data.animation.destroy(),this.gesture.enable(!0)}))}}),this.disabledChanged()}async setupNativeRefresher(e){if(this.scrollListenerCallback||!e||this.nativeRefresher||!this.scrollEl)return;this.setCss(0,"",!1,""),this.nativeRefresher=!0;const r=this.el.querySelector("ion-refresher-content .refresher-pulling ion-spinner"),i=this.el.querySelector("ion-refresher-content .refresher-refreshing ion-spinner");"ios"===k(this)?this.setupiOSNativeRefresher(r,i):this.setupMDNativeRefresher(e,r,i)}componentDidUpdate(){this.checkNativeRefresher()}async connectedCallback(){if("fixed"!==this.el.getAttribute("slot"))return void v('[ion-refresher] - Make sure you use: <ion-refresher slot="fixed">');const e=this.el.closest(l);e?u(e,(async()=>{const r=e.querySelector(f);this.scrollEl=await p(null!=r?r:e),this.backgroundContentEl=await e.getBackgroundElement(),this.contentFullscreen=e.fullscreen,await y(this.el,k(this))?this.setupNativeRefresher(e):(this.gesture=(await import("./index3.js")).createGesture({el:e,gestureName:"refresher",gesturePriority:31,direction:"y",threshold:20,passive:!1,canStart:()=>this.canStart(),onStart:()=>this.onStart(),onMove:e=>this.onMove(e),onEnd:()=>this.onEnd()}),this.disabledChanged())})):c(this.el)}disconnectedCallback(){this.destroyNativeRefresher(),this.scrollEl=void 0,this.gesture&&(this.gesture.destroy(),this.gesture=void 0)}async complete(){this.nativeRefresher?(this.needsCompletion=!0,this.pointerDown||b((()=>b((()=>this.resetNativeRefresher(this.elementToTransform,32)))))):this.close(32,"120ms")}async cancel(){this.nativeRefresher?this.pointerDown||b((()=>b((()=>this.resetNativeRefresher(this.elementToTransform,16))))):this.close(16,"")}getProgress(){return Promise.resolve(this.progress)}canStart(){return!(!this.scrollEl||1!==this.state||this.scrollEl.scrollTop>0)}onStart(){this.progress=0,this.state=1,this.memoizeOverflowStyle(),this.contentFullscreen&&this.backgroundContentEl&&this.backgroundContentEl.style.setProperty("--offset-top","0px")}onMove(e){if(!this.scrollEl)return;const r=e.event;if(void 0!==r.touches&&r.touches.length>1)return;if(56&this.state)return;const i=e.deltaY*(Number.isNaN(this.pullFactor)||this.pullFactor<0?1:this.pullFactor);if(i<=0)return this.progress=0,this.state=1,this.appliedStyles?void this.setCss(0,"",!1,""):void 0;if(1===this.state){if(this.scrollEl.scrollTop>0)return void(this.progress=0);this.state=2}if(r.cancelable&&r.preventDefault(),this.setCss(i,"0ms",!0,""),0===i)return void(this.progress=0);const s=this.pullMin;this.progress=i/s,this.didStart||(this.didStart=!0,this.ionStart.emit(),this.ionPullStart.emit()),this.ionPull.emit(),i<s?this.state=2:i>this.pullMax?this.beginRefresh():this.state=4}onEnd(){4===this.state?this.beginRefresh():2===this.state?this.cancel():1===this.state&&(this.restoreOverflowStyle(),this.didStart&&(this.didStart=!1,this.ionPullEnd.emit({reason:"cancel"})))}beginRefresh(){this.state=8,this.setCss(this.pullMin,this.snapbackDuration,!0,"");const e=document.activeElement;void 0!==(null==e?void 0:e.blur)&&e.blur(),this.ionRefresh.emit({complete:this.complete.bind(this)})}close(e,r){setTimeout((()=>{var r;this.state=1,this.progress=0,this.didStart=!1,this.setCss(0,"0ms",!1,"",!0),this.contentFullscreen&&this.backgroundContentEl&&(null===(r=this.backgroundContentEl)||void 0===r||r.style.removeProperty("--offset-top")),this.ionPullEnd.emit({reason:32===e?"complete":"cancel"})}),600),this.state=e,this.setCss(0,this.closeDuration,!0,r)}setCss(e,r,i,t,n=!1){this.nativeRefresher||(this.appliedStyles=e>0,s((()=>{if(this.scrollEl&&this.backgroundContentEl){const s=this.scrollEl.style,n=this.backgroundContentEl.style;s.transform=n.transform=e>0?`translateY(${e}px) translateZ(0px)`:"",s.transitionDuration=n.transitionDuration=r,s.transitionDelay=n.transitionDelay=t,s.overflow=i?"hidden":""}n&&this.restoreOverflowStyle()})))}memoizeOverflowStyle(){if(this.scrollEl){const{overflow:e,overflowX:r,overflowY:i}=this.scrollEl.style;this.overflowStyles={overflow:null!=e?e:"",overflowX:null!=r?r:"",overflowY:null!=i?i:""}}}restoreOverflowStyle(){if(void 0!==this.overflowStyles&&void 0!==this.scrollEl){const{overflow:e,overflowX:r,overflowY:i}=this.overflowStyles;this.scrollEl.style.overflow=e,this.scrollEl.style.overflowX=r,this.scrollEl.style.overflowY=i,this.overflowStyles=void 0}}render(){const e=k(this);return n(o,{key:"bed0c2f44c32ecac24b7d8326ac7c7ef1d12c44f",slot:"fixed",class:{[e]:!0,["refresher-"+e]:!0,"refresher-native":this.nativeRefresher,"refresher-active":1!==this.state,"refresher-pulling":2===this.state,"refresher-ready":4===this.state,"refresher-refreshing":8===this.state,"refresher-cancelling":16===this.state,"refresher-completing":32===this.state}})}get el(){return this}static get watchers(){return{disabled:[{disabledChanged:0}]}}static get style(){return{ios:"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);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{-webkit-transform:rotate(180deg);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{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);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{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}.refresher-native .refresher-refreshing ion-spinner{--refreshing-rotation-duration:2s;display:none;-webkit-animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards;animation:var(--refreshing-rotation-duration) ease-out refresher-rotate forwards}.refresher-native .refresher-refreshing{display:none;-webkit-animation:250ms linear refresher-pop forwards;animation:250ms linear refresher-pop forwards}.refresher-native ion-spinner{width:32px;height:32px;color:var(--ion-color-step-450, var(--ion-background-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{-webkit-transform:scale(0) rotate(180deg);transform:scale(0) rotate(180deg);-webkit-transition:300ms;transition:300ms}@-webkit-keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes refresher-pop{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}50%{-webkit-transform:scale(1.2);transform:scale(1.2);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes refresher-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(180deg);transform:rotate(180deg)}}",md:"ion-refresher{top:0;display:none;position:absolute;width:100%;height:60px;pointer-events:none;z-index:-1}ion-refresher{inset-inline-start:0}ion-refresher.refresher-active{display:block}ion-refresher-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.refresher-pulling,.refresher-refreshing{display:none;width:100%}.refresher-pulling-icon,.refresher-refreshing-icon{-webkit-transform-origin:center;transform-origin:center;-webkit-transition:200ms;transition:200ms;font-size:30px;text-align:center}:host-context([dir=rtl]) .refresher-pulling-icon,:host-context([dir=rtl]) .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}[dir=rtl] .refresher-pulling-icon,[dir=rtl] .refresher-refreshing-icon{-webkit-transform-origin:calc(100% - center);transform-origin:calc(100% - center)}@supports selector(:dir(rtl)){.refresher-pulling-icon:dir(rtl),.refresher-refreshing-icon:dir(rtl){-webkit-transform-origin:calc(100% - center);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{-webkit-transform:rotate(180deg);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{-webkit-transform:scale(0);transform:scale(0)}.refresher-completing ion-refresher-content .refresher-refreshing{display:block}.refresher-completing ion-refresher-content .refresher-refreshing-icon{-webkit-transform:scale(0);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{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;width:24px;height:24px;color:var(--ion-color-primary, #0054e9)}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{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;left:0;right:0;bottom:-4px;position:absolute;color:var(--ion-color-primary, #0054e9);font-size:12px}ion-refresher.refresher-native.refresher-pulling ion-refresher-content .refresher-pulling,ion-refresher.refresher-native.refresher-ready ion-refresher-content .refresher-pulling{display:-ms-flexbox;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:-ms-flexbox;display:flex}ion-refresher.refresher-native .refresher-pulling-icon{-webkit-transform:translateY(calc(-100% - 10px));transform:translateY(calc(-100% - 10px))}ion-refresher.refresher-native .refresher-pulling-icon,ion-refresher.refresher-native .refresher-refreshing-icon{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;border-radius:100%;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;display:-ms-flexbox;display:flex;border:1px solid var(--ion-color-step-200, var(--ion-background-color-step-200, #ececec));background:var(--ion-color-step-250, var(--ion-background-color-step-250, #ffffff));-webkit-box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1);box-shadow:0px 1px 6px rgba(0, 0, 0, 0.1)}"}}},[32,"ion-refresher",{pullMin:[2,"pull-min"],pullMax:[2,"pull-max"],closeDuration:[1,"close-duration"],snapbackDuration:[1,"snapback-duration"],pullFactor:[2,"pull-factor"],disabled:[4],nativeRefresher:[32],state:[32],complete:[64],cancel:[64],getProgress:[64]},void 0,{disabled:[{disabledChanged:0}]}]),C=R,Y=function(){"undefined"!=typeof customElements&&["ion-refresher"].forEach((e=>{"ion-refresher"===e&&(customElements.get(h(e))||customElements.define(h(e),R))}))};export{C as IonRefresher,Y as defineCustomElement}