@ionic/core 8.7.18 → 8.7.19-dev.11772655618.1af0949f

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 (587) hide show
  1. package/components/index.d.ts +2 -0
  2. package/components/index.js +1 -114
  3. package/components/ion-accordion-group.js +1 -268
  4. package/components/ion-accordion.js +1 -456
  5. package/components/ion-action-sheet.js +1 -6
  6. package/components/ion-alert.js +1 -6
  7. package/components/ion-app.js +1 -132
  8. package/components/ion-avatar.js +1 -41
  9. package/components/ion-back-button.js +1 -130
  10. package/components/ion-backdrop.js +1 -6
  11. package/components/ion-badge.js +1 -47
  12. package/components/ion-breadcrumb.js +1 -137
  13. package/components/ion-breadcrumbs.js +1 -164
  14. package/components/ion-button.js +1 -6
  15. package/components/ion-buttons.js +1 -6
  16. package/components/ion-card-content.js +1 -45
  17. package/components/ion-card-header.js +1 -56
  18. package/components/ion-card-subtitle.js +1 -48
  19. package/components/ion-card-title.js +1 -48
  20. package/components/ion-card.js +1 -107
  21. package/components/ion-checkbox.js +1 -6
  22. package/components/ion-chip.js +1 -66
  23. package/components/ion-col.js +1 -163
  24. package/components/ion-content.js +1 -6
  25. package/components/ion-datetime-button.js +1 -383
  26. package/components/ion-datetime.js +1 -2047
  27. package/components/ion-fab-button.js +1 -151
  28. package/components/ion-fab-list.js +1 -73
  29. package/components/ion-fab.js +1 -101
  30. package/components/ion-footer.js +1 -179
  31. package/components/ion-grid.js +1 -46
  32. package/components/ion-header.js +1 -6
  33. package/components/ion-icon.js +1 -6
  34. package/components/ion-img.js +1 -133
  35. package/components/ion-infinite-scroll-content.js +1 -69
  36. package/components/ion-infinite-scroll.js +1 -236
  37. package/components/ion-input-otp.js +1 -682
  38. package/components/ion-input-password-toggle.js +1 -128
  39. package/components/ion-input.js +1 -646
  40. package/components/ion-item-divider.js +1 -59
  41. package/components/ion-item-group.js +1 -46
  42. package/components/ion-item-option.js +1 -91
  43. package/components/ion-item-options.js +1 -73
  44. package/components/ion-item-sliding.js +1 -457
  45. package/components/ion-item.js +1 -6
  46. package/components/ion-label.js +1 -6
  47. package/components/ion-list-header.js +1 -6
  48. package/components/ion-list.js +1 -6
  49. package/components/ion-loading.js +1 -343
  50. package/components/ion-menu-button.js +1 -109
  51. package/components/ion-menu-toggle.js +1 -64
  52. package/components/ion-menu.js +1 -741
  53. package/components/ion-modal.js +1 -6
  54. package/components/ion-nav-link.js +1 -64
  55. package/components/ion-nav.js +1 -951
  56. package/components/ion-note.js +1 -47
  57. package/components/ion-picker-column-option.js +1 -6
  58. package/components/ion-picker-column.js +1 -6
  59. package/components/ion-picker-legacy-column.js +1 -6
  60. package/components/ion-picker-legacy.js +1 -342
  61. package/components/ion-picker.js +1 -6
  62. package/components/ion-popover.js +1 -6
  63. package/components/ion-progress-bar.js +1 -100
  64. package/components/ion-radio-group.js +1 -6
  65. package/components/ion-radio.js +1 -6
  66. package/components/ion-range.js +1 -844
  67. package/components/ion-refresher-content.js +1 -88
  68. package/components/ion-refresher.js +1 -750
  69. package/components/ion-reorder-group.js +1 -322
  70. package/components/ion-reorder.js +1 -60
  71. package/components/ion-ripple-effect.js +1 -6
  72. package/components/ion-route-redirect.js +1 -45
  73. package/components/ion-route.js +1 -74
  74. package/components/ion-router-link.js +1 -61
  75. package/components/ion-router-outlet.js +1 -226
  76. package/components/ion-router.js +1 -840
  77. package/components/ion-row.js +1 -36
  78. package/components/ion-searchbar.js +1 -540
  79. package/components/ion-segment-button.js +1 -173
  80. package/components/ion-segment-content.js +1 -35
  81. package/components/ion-segment-view.js +1 -142
  82. package/components/ion-segment.js +1 -602
  83. package/components/ion-select-modal.js +1 -6
  84. package/components/ion-select-option.js +1 -46
  85. package/components/ion-select-popover.js +1 -6
  86. package/components/ion-select.js +1 -1035
  87. package/components/ion-skeleton-text.js +1 -64
  88. package/components/ion-spinner.js +1 -6
  89. package/components/ion-split-pane.js +1 -190
  90. package/components/ion-tab-bar.js +1 -135
  91. package/components/ion-tab-button.js +1 -127
  92. package/components/ion-tab.js +1 -82
  93. package/components/ion-tabs.js +1 -204
  94. package/components/ion-text.js +1 -42
  95. package/components/ion-textarea.js +1 -554
  96. package/components/ion-thumbnail.js +1 -36
  97. package/components/ion-title.js +1 -6
  98. package/components/ion-toast.js +1 -938
  99. package/components/ion-toggle.js +1 -360
  100. package/components/ion-toolbar.js +1 -6
  101. package/components/p-1KVKSLu5.js +4 -0
  102. package/{dist/ionic/p-DUt5fQmA.js → components/p-9VcRUwdB.js} +1 -1
  103. package/components/p-ApmKVjaE.js +4 -0
  104. package/components/p-B-hirT0v.js +1 -35
  105. package/components/p-B6FQ0cKR.js +4 -0
  106. package/components/p-B6HaBl3o.js +4 -0
  107. package/components/p-B8b1Ukl9.js +4 -0
  108. package/components/p-BFxT89Wl.js +4 -0
  109. package/components/p-BJoMtgfR.js +4 -0
  110. package/components/p-BNAG-aVv.js +4 -0
  111. package/{dist/ionic/p-D-eFFUkA.js → components/p-BR3tZJmu.js} +1 -1
  112. package/{dist/ionic/p-D0dMcSkw.js → components/p-BS1TtEiJ.js} +1 -1
  113. package/components/p-BSB38Tek.js +4 -0
  114. package/components/p-BTEOs1at.js +1 -192
  115. package/components/p-BTeL5HCK.js +4 -0
  116. package/{dist/ionic/p-DbQ5QkTP.js → components/p-BUbsoBOV.js} +1 -1
  117. package/components/p-BVnB3eEn.js +4 -0
  118. package/components/p-BYDc3hSE.js +4 -0
  119. package/components/p-BagjAGC0.js +4 -0
  120. package/components/p-BegtE7nr.js +4 -0
  121. package/components/p-BgwEQWW6.js +4 -0
  122. package/components/p-Bk2zuNWT.js +4 -0
  123. package/components/p-BmVRXR1y.js +1 -72
  124. package/components/p-Bum_LjMh.js +4 -0
  125. package/components/p-BxwWvu-b.js +4 -0
  126. package/components/p-C4jPsTQa.js +4 -0
  127. package/components/p-C53feagD.js +1 -15
  128. package/{dist/ionic/p-CwgG81ZD.js → components/p-C59ryAuS.js} +1 -1
  129. package/components/p-C7AoMl7c.js +4 -0
  130. package/components/p-CBzELu-H.js +4 -0
  131. package/components/p-CDfQnFrd.js +4 -0
  132. package/components/p-CH0NYjKq.js +4 -0
  133. package/components/p-CIGNaXM1.js +1 -10
  134. package/components/p-CO7fmmxt.js +1 -29
  135. package/components/p-CU1SSH8_.js +4 -0
  136. package/components/p-CVF7ukTk.js +4 -0
  137. package/components/p-CgfaEEem.js +4 -0
  138. package/components/p-CgqKJg96.js +4 -0
  139. package/components/p-Cl0B-RWe.js +1 -452
  140. package/components/p-CneGxKsZ.js +4 -0
  141. package/components/p-CoA-aqGF.js +4 -0
  142. package/{dist/ionic/p-DdR6rpbR.js → components/p-Cq8cQ0NL.js} +1 -1
  143. package/components/p-Csw8xuz4.js +4 -0
  144. package/components/p-CtWGkNnJ.js +1 -162
  145. package/components/p-Cwv-vmkN.js +4 -0
  146. package/{dist/ionic/p-BYEqWnSg.js → components/p-Cy5XSfIk.js} +1 -1
  147. package/components/p-Cyxa_4PV.js +4 -0
  148. package/components/p-Cz5nLPGT.js +4 -0
  149. package/components/p-D13Eaw-8.js +1 -76
  150. package/components/p-D6NJwNJN.js +4 -0
  151. package/components/p-D6Ynv7Xh.js +1 -141
  152. package/components/p-DHsZWn1l.js +4 -0
  153. package/components/p-DJMZehmW.js +4 -0
  154. package/components/p-DJztqcrH.js +1 -14
  155. package/components/p-DYdpXONG.js +4 -0
  156. package/components/p-DgbT0exM.js +4 -0
  157. package/components/p-DiVJyqlX.js +1 -40
  158. package/components/p-Dtdm8lKC.js +1 -44
  159. package/components/p-YLXPWgVj.js +4 -0
  160. package/components/p-ZjP4CjeZ.js +1 -4
  161. package/{dist/ionic/p-DCv9sLH2.js → components/p-ak_d-z48.js} +1 -1
  162. package/components/p-cyNmxje6.js +1 -155
  163. package/components/p-fpbh6w3f.js +4 -0
  164. package/components/p-hHmYLOfE.js +1 -87
  165. package/components/p-kvaDs24J.js +4 -0
  166. package/components/p-vEbVo2hO.js +4 -0
  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-CuMghsQ-.js → input-shims-Dl5cnc_e.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 +48 -43
  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 +75 -46
  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 +19 -17
  205. package/dist/cjs/ion-item_8.cjs.entry.js +48 -42
  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 +237 -59
  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 +205 -57
  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 +13 -8
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +26 -16
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +17 -13
  226. package/dist/cjs/ion-select_3.cjs.entry.js +33 -24
  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 +20 -14
  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 +12 -7
  260. package/dist/collection/components/datetime/datetime.js +43 -22
  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 +10 -5
  268. package/dist/collection/components/item-divider/item-divider.js +7 -3
  269. package/dist/collection/components/item-option/item-option.js +6 -3
  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 +6 -3
  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 +120 -12
  278. package/dist/collection/components/modal/gestures/swipe-to-close.js +54 -1
  279. package/dist/collection/components/modal/modal.js +127 -45
  280. package/dist/collection/components/nav/nav.js +89 -45
  281. package/dist/collection/components/nav-link/nav-link.js +9 -5
  282. package/dist/collection/components/note/note.js +2 -1
  283. package/dist/collection/components/picker/picker.js +2 -1
  284. package/dist/collection/components/picker-column/picker-column.js +6 -3
  285. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -1
  286. package/dist/collection/components/picker-legacy/picker.js +24 -12
  287. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -2
  288. package/dist/collection/components/popover/popover.js +33 -17
  289. package/dist/collection/components/progress-bar/progress-bar.js +2 -1
  290. package/dist/collection/components/radio/radio.js +2 -1
  291. package/dist/collection/components/radio-group/radio-group.js +6 -3
  292. package/dist/collection/components/range/range.js +214 -53
  293. package/dist/collection/components/refresher/refresher.js +73 -5
  294. package/dist/collection/components/refresher-content/refresher-content.js +8 -4
  295. package/dist/collection/components/reorder-group/reorder-group.js +6 -3
  296. package/dist/collection/components/route/route.js +4 -2
  297. package/dist/collection/components/router/router.js +10 -5
  298. package/dist/collection/components/router-link/router-link.js +6 -3
  299. package/dist/collection/components/router-outlet/router-outlet.js +18 -9
  300. package/dist/collection/components/searchbar/searchbar.js +11 -6
  301. package/dist/collection/components/segment/segment.js +10 -5
  302. package/dist/collection/components/segment-button/segment-button.js +4 -2
  303. package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
  304. package/dist/collection/components/segment-view/segment-view.js +30 -4
  305. package/dist/collection/components/segment-view/segment-view.md.css +2 -1
  306. package/dist/collection/components/select/select.js +17 -8
  307. package/dist/collection/components/select-modal/select-modal.js +27 -2
  308. package/dist/collection/components/select-popover/select-popover.js +2 -1
  309. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -1
  310. package/dist/collection/components/spinner/spinner.js +4 -2
  311. package/dist/collection/components/tab/tab.js +4 -2
  312. package/dist/collection/components/tab-bar/tab-bar.js +4 -2
  313. package/dist/collection/components/tab-button/tab-button.js +4 -2
  314. package/dist/collection/components/tabs/tabs.js +4 -2
  315. package/dist/collection/components/text/text.js +2 -1
  316. package/dist/collection/components/textarea/textarea.js +10 -7
  317. package/dist/collection/components/title/title.js +4 -2
  318. package/dist/collection/components/toast/toast.js +34 -17
  319. package/dist/collection/components/toggle/toggle.js +4 -2
  320. package/dist/collection/components/toolbar/toolbar.js +2 -1
  321. package/dist/docs.d.ts +37 -0
  322. package/dist/docs.json +1186 -389
  323. package/dist/esm/{animation-Dt8bGnA-.js → animation-CnGMT4ji.js} +1 -1
  324. package/dist/esm/app-globals-DhZjtldk.js +9 -0
  325. package/dist/esm/{button-active-L570Swow.js → button-active-BBx21brx.js} +1 -1
  326. package/dist/esm/{config-mCdtaoPe.js → config-TO1rZH52.js} +1 -1
  327. package/dist/esm/{data-DCORV9FH.js → data-B9iGR5YO.js} +1 -1
  328. package/dist/esm/{framework-delegate-BYawdMXj.js → framework-delegate-CyxE1S_P.js} +1 -1
  329. package/dist/esm/{hardware-back-button-CPLxO-Ev.js → hardware-back-button-CTe4XmL7.js} +1 -1
  330. package/dist/esm/{helpers-DEn3pfjm.js → helpers-Tl8jw6S2.js} +1 -1
  331. package/dist/esm/{index-r2D9DEro.js → index-B-hkiOUh.js} +4 -4
  332. package/dist/esm/{index-CvDIirVx.js → index-B2KwgBLx.js} +5 -5
  333. package/dist/esm/{index-ceb5RaMT.js → index-BtUdxPjv.js} +2 -2
  334. package/dist/esm/{index-C8IsBmNU.js → index-IGIE5vDm.js} +503 -382
  335. package/dist/esm/{index-Bs3kT4bc.js → index-hW6eNZ3o.js} +2 -2
  336. package/dist/esm/index.js +12 -12
  337. package/dist/esm/{input-shims-D6H3ZaWt.js → input-shims-AaDhOpKN.js} +3 -3
  338. package/dist/esm/{input.utils-DrvTa8gz.js → input.utils-Bxa_DQ7-.js} +2 -2
  339. package/dist/esm/ion-accordion_2.entry.js +23 -15
  340. package/dist/esm/ion-action-sheet.entry.js +21 -15
  341. package/dist/esm/ion-alert.entry.js +25 -17
  342. package/dist/esm/ion-app_8.entry.js +48 -43
  343. package/dist/esm/ion-avatar_3.entry.js +12 -12
  344. package/dist/esm/ion-back-button.entry.js +7 -7
  345. package/dist/esm/ion-backdrop.entry.js +6 -6
  346. package/dist/esm/ion-breadcrumb_2.entry.js +20 -14
  347. package/dist/esm/ion-button_2.entry.js +36 -18
  348. package/dist/esm/ion-card_5.entry.js +23 -23
  349. package/dist/esm/ion-checkbox.entry.js +7 -7
  350. package/dist/esm/ion-chip.entry.js +6 -6
  351. package/dist/esm/ion-col_3.entry.js +8 -8
  352. package/dist/esm/ion-datetime-button.entry.js +8 -8
  353. package/dist/esm/ion-datetime_3.entry.js +75 -46
  354. package/dist/esm/ion-fab_3.entry.js +17 -13
  355. package/dist/esm/ion-img.entry.js +8 -6
  356. package/dist/esm/ion-infinite-scroll_2.entry.js +17 -13
  357. package/dist/esm/ion-input-otp.entry.js +16 -10
  358. package/dist/esm/ion-input-password-toggle.entry.js +9 -7
  359. package/dist/esm/ion-input.entry.js +21 -13
  360. package/dist/esm/ion-item-option_3.entry.js +19 -17
  361. package/dist/esm/ion-item_8.entry.js +48 -42
  362. package/dist/esm/ion-loading.entry.js +18 -14
  363. package/dist/esm/ion-menu_3.entry.js +30 -22
  364. package/dist/esm/ion-modal.entry.js +237 -59
  365. package/dist/esm/ion-nav_2.entry.js +14 -10
  366. package/dist/esm/ion-picker-column-option.entry.js +10 -8
  367. package/dist/esm/ion-picker-column.entry.js +11 -7
  368. package/dist/esm/ion-picker.entry.js +6 -6
  369. package/dist/esm/ion-popover.entry.js +21 -15
  370. package/dist/esm/ion-progress-bar.entry.js +7 -7
  371. package/dist/esm/ion-radio_2.entry.js +17 -13
  372. package/dist/esm/ion-range.entry.js +205 -57
  373. package/dist/esm/ion-refresher_2.entry.js +45 -14
  374. package/dist/esm/ion-reorder_2.entry.js +13 -11
  375. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  376. package/dist/esm/ion-route_4.entry.js +20 -10
  377. package/dist/esm/ion-searchbar.entry.js +22 -12
  378. package/dist/esm/ion-segment-content.entry.js +3 -3
  379. package/dist/esm/ion-segment-view.entry.js +13 -8
  380. package/dist/esm/ion-segment_2.entry.js +26 -16
  381. package/dist/esm/ion-select-modal.entry.js +17 -13
  382. package/dist/esm/ion-select_3.entry.js +33 -24
  383. package/dist/esm/ion-spinner.entry.js +4 -4
  384. package/dist/esm/ion-split-pane.entry.js +15 -9
  385. package/dist/esm/ion-tab-bar_2.entry.js +14 -12
  386. package/dist/esm/ion-tab_2.entry.js +10 -8
  387. package/dist/esm/ion-text.entry.js +4 -4
  388. package/dist/esm/ion-textarea.entry.js +20 -14
  389. package/dist/esm/ion-toast.entry.js +21 -15
  390. package/dist/esm/ion-toggle.entry.js +10 -8
  391. package/dist/esm/{ionic-global-CDrldh-5.js → ionic-global-DfbeLwcV.js} +1 -1
  392. package/dist/esm/ionic.js +6 -6
  393. package/dist/esm/{ios.transition-BDzw0_Hm.js → ios.transition--aMF-pDH.js} +4 -4
  394. package/dist/esm/loader.js +5 -5
  395. package/dist/esm/{md.transition-BzDYi3qq.js → md.transition-BEVbfm8j.js} +4 -4
  396. package/dist/esm/{notch-controller-BwelN_JM.js → notch-controller-DAcvKU57.js} +1 -1
  397. package/dist/esm/{overlays-D5YkFThA.js → overlays-F8GHPo-e.js} +5 -5
  398. package/dist/esm/{status-tap-5DQ7Fc4V.js → status-tap-BfJqFSLF.js} +3 -3
  399. package/dist/esm/{swipe-back-BKw2CAHc.js → swipe-back-BZBFwTQV.js} +2 -2
  400. package/dist/html.html-data.json +117 -109
  401. package/dist/ionic/index.esm.js +1 -1
  402. package/dist/ionic/ionic.esm.js +1 -1
  403. package/dist/ionic/p-031b76f7.entry.js +4 -0
  404. package/dist/ionic/p-045a6a42.entry.js +4 -0
  405. package/dist/ionic/p-07506134.entry.js +4 -0
  406. package/dist/ionic/p-084c25b2.entry.js +4 -0
  407. package/dist/ionic/p-0d8b5c38.entry.js +4 -0
  408. package/dist/ionic/p-16813ce7.entry.js +4 -0
  409. package/dist/ionic/p-16b65553.entry.js +4 -0
  410. package/dist/ionic/p-1b02923f.entry.js +4 -0
  411. package/dist/ionic/{p-5c8f7253.entry.js → p-1b169fb6.entry.js} +1 -1
  412. package/dist/ionic/{p-915b3e3d.entry.js → p-23fac490.entry.js} +1 -1
  413. package/dist/ionic/{p-b8551510.entry.js → p-294f4bb5.entry.js} +1 -1
  414. package/dist/ionic/p-2a68388b.entry.js +4 -0
  415. package/dist/ionic/p-2f5a8140.entry.js +4 -0
  416. package/dist/ionic/{p-49d06882.entry.js → p-301c43f8.entry.js} +1 -1
  417. package/dist/ionic/{p-79bd78f9.entry.js → p-370a60ee.entry.js} +1 -1
  418. package/dist/ionic/p-3e143d1d.entry.js +4 -0
  419. package/dist/ionic/p-4819b469.entry.js +4 -0
  420. package/dist/ionic/p-4dd5e8e0.entry.js +4 -0
  421. package/dist/ionic/p-51c11c47.entry.js +4 -0
  422. package/dist/ionic/p-53f750a5.entry.js +4 -0
  423. package/dist/ionic/{p-7cad388a.entry.js → p-6af16209.entry.js} +1 -1
  424. package/dist/ionic/{p-7f98e710.entry.js → p-6b701daa.entry.js} +1 -1
  425. package/dist/ionic/p-6b97f2a3.entry.js +4 -0
  426. package/dist/ionic/p-71e322f7.entry.js +4 -0
  427. package/dist/ionic/p-7620be24.entry.js +4 -0
  428. package/dist/ionic/p-771b27a5.entry.js +4 -0
  429. package/dist/ionic/{p-906bb44d.entry.js → p-7ca71c83.entry.js} +1 -1
  430. package/dist/ionic/{p-11aa58d6.entry.js → p-80cac7a2.entry.js} +1 -1
  431. package/dist/ionic/p-96a2e768.entry.js +4 -0
  432. package/dist/ionic/{p-582824c5.entry.js → p-9833cf63.entry.js} +1 -1
  433. package/dist/ionic/p-9cbc6f1f.entry.js +4 -0
  434. package/dist/ionic/p-9cdbabbb.entry.js +4 -0
  435. package/dist/ionic/p-9eac4eb1.entry.js +4 -0
  436. package/dist/ionic/{p-675b1a31.entry.js → p-9fae83d8.entry.js} +1 -1
  437. package/dist/ionic/p-B8xlpH8p.js +4 -0
  438. package/dist/ionic/{p-C7hRNDhM.js → p-BAt5H1ac.js} +1 -1
  439. package/dist/ionic/p-BW_TRJm8.js +4 -0
  440. package/dist/ionic/{p-DDb5r57F.js → p-Bum7H1fw.js} +1 -1
  441. package/dist/ionic/p-BvFYtOdE.js +4 -0
  442. package/dist/ionic/{p-Dc45iWE4.js → p-BxIcPWoV.js} +1 -1
  443. package/dist/ionic/p-C0JvVFMv.js +4 -0
  444. package/dist/ionic/{p-CTfR9YZG.js → p-CGmVTdWh.js} +1 -1
  445. package/dist/ionic/{p-BOVrCkpJ.js → p-CYbRmDdy.js} +1 -1
  446. package/dist/ionic/{p-MUoJJJwd.js → p-CYvM5g3q.js} +1 -1
  447. package/dist/ionic/p-CmFz1Mjc.js +4 -0
  448. package/dist/ionic/p-CtA-yJYy.js +4 -0
  449. package/dist/ionic/p-D8HJQ1qq.js +4 -0
  450. package/dist/ionic/{p-B0q1YL7N.js → p-DB_iPQC-.js} +1 -1
  451. package/dist/ionic/{p-DNcfiJwE.js → p-DLbbmF9h.js} +1 -1
  452. package/dist/ionic/p-DTPR1Wpn.js +4 -0
  453. package/dist/ionic/p-DjriolRs.js +4 -0
  454. package/dist/ionic/p-DtVZDHlS.js +4 -0
  455. package/dist/ionic/p-IGIE5vDm.js +5 -0
  456. package/dist/ionic/{p-BFvmZNyx.js → p-NFFyoJ4Q.js} +1 -1
  457. package/dist/ionic/p-a805674e.entry.js +4 -0
  458. package/dist/ionic/{p-da7d04cc.entry.js → p-a84f2d21.entry.js} +1 -1
  459. package/dist/ionic/p-aa47f46e.entry.js +4 -0
  460. package/dist/ionic/{p-2668188b.entry.js → p-b325a113.entry.js} +1 -1
  461. package/dist/ionic/{p-d1f54e28.entry.js → p-b440381f.entry.js} +1 -1
  462. package/dist/ionic/p-b6e0ff03.entry.js +4 -0
  463. package/dist/ionic/{p-6f37536a.entry.js → p-bcaa827e.entry.js} +1 -1
  464. package/dist/ionic/{p-fb0271ae.entry.js → p-c3cce9d8.entry.js} +1 -1
  465. package/dist/ionic/{p-b0a7585c.entry.js → p-ca31010f.entry.js} +1 -1
  466. package/dist/ionic/p-d4e8b473.entry.js +4 -0
  467. package/dist/ionic/{p-9575b654.entry.js → p-e663bc5a.entry.js} +1 -1
  468. package/dist/ionic/p-e6c5f060.entry.js +4 -0
  469. package/dist/ionic/{p-652318c3.entry.js → p-e6cedcd7.entry.js} +1 -1
  470. package/dist/ionic/{p-fbb00634.entry.js → p-e863ffe8.entry.js} +1 -1
  471. package/dist/ionic/{p-0ca0fe9c.entry.js → p-f2deaceb.entry.js} +1 -1
  472. package/dist/ionic/{p-ac4eb91d.entry.js → p-f5dfb9a3.entry.js} +1 -1
  473. package/dist/ionic/{p-bce86e56.entry.js → p-f8186550.entry.js} +1 -1
  474. package/dist/ionic/p-fdbc90d4.entry.js +4 -0
  475. package/dist/ionic/p-gbVXD275.js +4 -0
  476. package/dist/ionic/p-hNN3VvaC.js +4 -0
  477. package/dist/types/components/datetime/datetime.d.ts +10 -0
  478. package/dist/types/components/header/header.utils.d.ts +2 -1
  479. package/dist/types/components/item/item.d.ts +2 -0
  480. package/dist/types/components/item-divider/item-divider.d.ts +3 -0
  481. package/dist/types/components/item-option/item-option.d.ts +2 -0
  482. package/dist/types/components/list-header/list-header.d.ts +2 -0
  483. package/dist/types/components/modal/gestures/sheet.d.ts +2 -2
  484. package/dist/types/components/modal/gestures/swipe-to-close.d.ts +2 -2
  485. package/dist/types/components/modal/modal-interface.d.ts +25 -0
  486. package/dist/types/components/modal/modal.d.ts +22 -1
  487. package/dist/types/components/range/range-interface.d.ts +1 -0
  488. package/dist/types/components/range/range.d.ts +44 -4
  489. package/dist/types/components/refresher/refresher-interface.d.ts +7 -0
  490. package/dist/types/components/refresher/refresher.d.ts +16 -3
  491. package/dist/types/components/segment-view/segment-view.d.ts +4 -0
  492. package/dist/types/components/select/select.d.ts +3 -0
  493. package/dist/types/components/select-modal/select-modal.d.ts +4 -0
  494. package/dist/types/components.d.ts +964 -191
  495. package/dist/types/interface.d.ts +2 -2
  496. package/dist/types/stencil-public-runtime.d.ts +126 -14
  497. package/dist/types/utils/gesture/listener.d.ts +2 -1
  498. package/hydrate/index.d.ts +12 -0
  499. package/hydrate/index.js +5632 -1421
  500. package/hydrate/index.mjs +5631 -1422
  501. package/package.json +2 -2
  502. package/components/p-B25GjpND.js +0 -71
  503. package/components/p-BANeLH_G.js +0 -290
  504. package/components/p-BBFQmhcD.js +0 -59
  505. package/components/p-BC-awmYt.js +0 -306
  506. package/components/p-BHbOsu99.js +0 -501
  507. package/components/p-BTlwXR9e.js +0 -73
  508. package/components/p-BcazQttQ.js +0 -612
  509. package/components/p-BdGshsIJ.js +0 -226
  510. package/components/p-BfS7vSpC.js +0 -147
  511. package/components/p-BhRFCLuX.js +0 -675
  512. package/components/p-Bhnhnzjz.js +0 -75
  513. package/components/p-BmcqD0EN.js +0 -153
  514. package/components/p-Boi6hecl.js +0 -115
  515. package/components/p-Bt_moUyl.js +0 -232
  516. package/components/p-Bxl5etF4.js +0 -146
  517. package/components/p-ByjmWt3s.js +0 -139
  518. package/components/p-C04oPyjT.js +0 -54
  519. package/components/p-C6dkQWq2.js +0 -1626
  520. package/components/p-CFZWrvIQ.js +0 -194
  521. package/components/p-CIJwkzL6.js +0 -195
  522. package/components/p-CL12ApCQ.js +0 -820
  523. package/components/p-CXJR56Oq.js +0 -564
  524. package/components/p-Cdm3dKWf.js +0 -108
  525. package/components/p-CslsoGzv.js +0 -192
  526. package/components/p-Cyd00tgZ.js +0 -167
  527. package/components/p-CzAJ3ArC.js +0 -380
  528. package/components/p-CzW34QBh.js +0 -12
  529. package/components/p-D0zXRwcr.js +0 -196
  530. package/components/p-D5hF6rwn.js +0 -339
  531. package/components/p-D8eD2iBA.js +0 -67
  532. package/components/p-DGOrLIyS.js +0 -481
  533. package/components/p-DK2Bn1Mc.js +0 -305
  534. package/components/p-DKRQWlK2.js +0 -598
  535. package/components/p-DNDUsygf.js +0 -128
  536. package/components/p-DTWZF6wg.js +0 -418
  537. package/components/p-DWoUQeZ3.js +0 -3012
  538. package/components/p-DX0w75a9.js +0 -420
  539. package/components/p-Dt8zaCLQ.js +0 -92
  540. package/components/p-DyFBFrV7.js +0 -264
  541. package/components/p-DyHPCMyn.js +0 -39
  542. package/components/p-LgLeKTkH.js +0 -112
  543. package/components/p-NhiRFRn9.js +0 -50
  544. package/components/p-OuiHmXO5.js +0 -646
  545. package/components/p-Wro9IPHE.js +0 -459
  546. package/components/p-aIWC4ZEV.js +0 -305
  547. package/components/p-c-XJ9XhZ.js +0 -915
  548. package/components/p-fVuFT3Wd.js +0 -78
  549. package/components/p-iyo0Toaz.js +0 -2822
  550. package/components/p-l_lso3Zl.js +0 -140
  551. package/components/p-mQp4lwQD.js +0 -1638
  552. package/dist/cjs/app-globals-Ciccnk9_.js +0 -10
  553. package/dist/esm/app-globals-BDSf8fOA.js +0 -8
  554. package/dist/ionic/p-11518b31.entry.js +0 -4
  555. package/dist/ionic/p-221a3d8c.entry.js +0 -4
  556. package/dist/ionic/p-2ac254dc.entry.js +0 -4
  557. package/dist/ionic/p-2bd1ea35.entry.js +0 -4
  558. package/dist/ionic/p-30333874.entry.js +0 -4
  559. package/dist/ionic/p-31db96da.entry.js +0 -4
  560. package/dist/ionic/p-34642fa1.entry.js +0 -4
  561. package/dist/ionic/p-35696017.entry.js +0 -4
  562. package/dist/ionic/p-363d1209.entry.js +0 -4
  563. package/dist/ionic/p-46a38cfd.entry.js +0 -4
  564. package/dist/ionic/p-4eec1a5e.entry.js +0 -4
  565. package/dist/ionic/p-530fcd71.entry.js +0 -4
  566. package/dist/ionic/p-5d6fb6e3.entry.js +0 -4
  567. package/dist/ionic/p-66fbe052.entry.js +0 -4
  568. package/dist/ionic/p-7babec72.entry.js +0 -4
  569. package/dist/ionic/p-82d5bb3d.entry.js +0 -4
  570. package/dist/ionic/p-97eb0812.entry.js +0 -4
  571. package/dist/ionic/p-9b6d46f2.entry.js +0 -4
  572. package/dist/ionic/p-BKc55Xev.js +0 -4
  573. package/dist/ionic/p-Bmgaetn_.js +0 -4
  574. package/dist/ionic/p-C8IsBmNU.js +0 -5
  575. package/dist/ionic/p-CJxh_yLS.js +0 -4
  576. package/dist/ionic/p-DZRJwG4S.js +0 -4
  577. package/dist/ionic/p-a4a9f5ae.entry.js +0 -4
  578. package/dist/ionic/p-b0ebf9f8.entry.js +0 -4
  579. package/dist/ionic/p-be263062.entry.js +0 -4
  580. package/dist/ionic/p-c175d792.entry.js +0 -4
  581. package/dist/ionic/p-cc2a9936.entry.js +0 -4
  582. package/dist/ionic/p-cc45bcbc.entry.js +0 -4
  583. package/dist/ionic/p-d0a2a1ab.entry.js +0 -4
  584. package/dist/ionic/p-e4c57008.entry.js +0 -4
  585. package/dist/ionic/p-e5d6d0f0.entry.js +0 -4
  586. package/dist/ionic/p-f1dfee25.entry.js +0 -4
  587. package/dist/ionic/p-f9f7b9db.entry.js +0 -4
@@ -1,847 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { p as proxyCustomElement, H, e as createEvent, f as printIonWarning, h, d as Host } from './p-DWoUQeZ3.js';
5
- import { a as findClosestIonContent, d as disableContentScrollY, r as resetContentScrollY } from './p-DNDUsygf.js';
6
- import { o as isSafeNumber, f as clamp, l as debounceEvent, i as inheritAriaAttributes, e as renderHiddenInput } from './p-D5hF6rwn.js';
7
- import { i as isRTL } from './p-C53feagD.js';
8
- import { h as hostContext, c as createColorClasses } from './p-DiVJyqlX.js';
9
- import { b as getIonMode } from './p-Bxl5etF4.js';
10
-
11
- function getDecimalPlaces(n) {
12
- if (!isSafeNumber(n))
13
- return 0;
14
- if (n % 1 === 0)
15
- return 0;
16
- return n.toString().split('.')[1].length;
17
- }
18
- /**
19
- * Fixes floating point rounding errors in a result by rounding
20
- * to the same specificity, or number of decimal places (*not*
21
- * significant figures) as provided reference numbers. If multiple
22
- * references are provided, the highest number of decimal places
23
- * between them will be used.
24
- *
25
- * The main use case is when numbers x and y are added to produce n,
26
- * but x and y are floats, so n may have rounding errors (such as
27
- * 3.1000000004 instead of 3.1). As long as only addition/subtraction
28
- * occurs between x and y, the specificity of the result will never
29
- * increase, so x and y should be passed in as the references.
30
- *
31
- * If multiplication, division, or other operations were used to
32
- * calculate n, the rounded result may have less specificity than
33
- * desired. For example, 1 / 3 = 0.33333(...), but
34
- * roundToMaxDecimalPlaces((1 / 3), 1, 3) will return 0, since both
35
- * 1 and 3 are whole numbers.
36
- *
37
- * Note that extremely precise reference numbers may lead to rounding
38
- * errors not being trimmed, due to the error result having the same or
39
- * fewer decimal places as the reference(s). This is acceptable as we
40
- * would not be able to tell the difference between a rounding error
41
- * and correct value in this case, but it does mean there is an implicit
42
- * precision limit. If precision that high is needed, it is recommended
43
- * to use a third party data type designed to handle floating point
44
- * errors instead.
45
- *
46
- * @param n The number to round.
47
- * @param references Number(s) used to calculate n, or that should otherwise
48
- * be used as a reference for the desired specificity.
49
- */
50
- function roundToMaxDecimalPlaces(n, ...references) {
51
- if (!isSafeNumber(n))
52
- return 0;
53
- const maxPlaces = Math.max(...references.map((r) => getDecimalPlaces(r)));
54
- return Number(n.toFixed(maxPlaces));
55
- }
56
-
57
- const rangeIosCss = ":host{--knob-handle-size:calc(var(--knob-size) * 2);display:-ms-flexbox;display:flex;position:relative;-ms-flex:3;flex:3;-ms-flex-align:center;align-items:center;font-family:var(--ion-font-family, inherit);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.range-disabled){pointer-events:none}::slotted(ion-label){-ms-flex:initial;flex:initial}::slotted(ion-icon[slot]){font-size:24px}.range-slider{position:relative;-ms-flex:1;flex:1;width:100%;height:var(--height);contain:size layout style;cursor:-webkit-grab;cursor:grab;-ms-touch-action:pan-y;touch-action:pan-y}:host(.range-pressed) .range-slider{cursor:-webkit-grabbing;cursor:grabbing}.range-pin{position:absolute;background:var(--ion-color-base);color:var(--ion-color-contrast);text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.range-knob-handle{top:calc((var(--height) - var(--knob-handle-size)) / 2);-webkit-margin-start:calc(0px - var(--knob-handle-size) / 2);margin-inline-start:calc(0px - var(--knob-handle-size) / 2);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-pack:center;justify-content:center;width:var(--knob-handle-size);height:var(--knob-handle-size);text-align:center}.range-knob-handle{inset-inline-start:0}:host-context([dir=rtl]) .range-knob-handle{left:unset}[dir=rtl] .range-knob-handle{left:unset}@supports selector(:dir(rtl)){.range-knob-handle:dir(rtl){left:unset}}.range-knob-handle:active,.range-knob-handle:focus{outline:none}.range-bar-container{border-radius:var(--bar-border-radius);top:calc((var(--height) - var(--bar-height)) / 2);position:absolute;width:100%;height:var(--bar-height)}.range-bar-container{inset-inline-start:0}:host-context([dir=rtl]) .range-bar-container{left:unset}[dir=rtl] .range-bar-container{left:unset}@supports selector(:dir(rtl)){.range-bar-container:dir(rtl){left:unset}}.range-bar{border-radius:var(--bar-border-radius);position:absolute;width:100%;height:var(--bar-height);background:var(--bar-background);pointer-events:none}.range-knob{border-radius:var(--knob-border-radius);top:calc(50% - var(--knob-size) / 2);position:absolute;width:var(--knob-size);height:var(--knob-size);background:var(--knob-background);-webkit-box-shadow:var(--knob-box-shadow);box-shadow:var(--knob-box-shadow);z-index:2;pointer-events:none}.range-knob{inset-inline-start:calc(50% - var(--knob-size) / 2)}:host-context([dir=rtl]) .range-knob{left:unset}[dir=rtl] .range-knob{left:unset}@supports selector(:dir(rtl)){.range-knob:dir(rtl){left:unset}}:host(.range-pressed) .range-bar-active{will-change:left, right}:host(.in-item){width:100%}:host([slot=start]),:host([slot=end]){width:auto}:host(.in-item) ::slotted(ion-label){-ms-flex-item-align:center;align-self:center}.range-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;height:inherit}::slotted([slot=label]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}:host(.range-label-placement-start) .range-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.range-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-end) .range-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.range-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.range-label-placement-stacked) .range-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch}:host(.range-label-placement-stacked) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top;-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host-context([dir=rtl]):host(.range-label-placement-stacked) .label-text-wrapper,:host-context([dir=rtl]).range-label-placement-stacked .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.in-item.range-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.range-label-placement-stacked) .native-wrapper{margin-bottom:0px}:host{--knob-border-radius:50%;--knob-background:#ffffff;--knob-box-shadow:0px 0.5px 4px rgba(0, 0, 0, 0.12), 0px 6px 13px rgba(0, 0, 0, 0.12);--knob-size:26px;--bar-height:4px;--bar-background:var(--ion-color-step-900, var(--ion-background-color-step-900, #e6e6e6));--bar-background-active:var(--ion-color-primary, #0054e9);--bar-border-radius:2px;--height:42px}:host(.range-item-start-adjustment){-webkit-padding-start:24px;padding-inline-start:24px}:host(.range-item-end-adjustment){-webkit-padding-end:24px;padding-inline-end:24px}:host(.ion-color) .range-bar-active,:host(.ion-color) .range-tick-active{background:var(--ion-color-base)}::slotted([slot=start]){-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}::slotted([slot=end]){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-has-pin:not(.range-label-placement-stacked)){padding-top:calc(8px + 0.75rem)}:host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper{margin-bottom:calc(8px + 0.75rem)}.range-bar-active{bottom:0;width:auto;background:var(--bar-background-active)}.range-bar-active.has-ticks{border-radius:0;-webkit-margin-start:-2px;margin-inline-start:-2px;-webkit-margin-end:-2px;margin-inline-end:-2px}.range-tick{-webkit-margin-start:-2px;margin-inline-start:-2px;border-radius:0;position:absolute;top:17px;width:4px;height:8px;background:var(--ion-color-step-900, var(--ion-background-color-step-900, #e6e6e6));pointer-events:none}.range-tick-active{background:var(--bar-background-active)}.range-pin{-webkit-transform:translate3d(0, 100%, 0) scale(0.01);transform:translate3d(0, 100%, 0) scale(0.01);-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;min-width:28px;-webkit-transition:-webkit-transform 120ms ease;transition:-webkit-transform 120ms ease;transition:transform 120ms ease;transition:transform 120ms ease, -webkit-transform 120ms ease;background:transparent;color:var(--ion-text-color, #000);font-size:0.75rem;text-align:center}.range-knob-pressed .range-pin,.range-knob-handle.ion-focused .range-pin{-webkit-transform:translate3d(0, calc(-100% + 11px), 0) scale(1);transform:translate3d(0, calc(-100% + 11px), 0) scale(1)}:host(.range-disabled){opacity:0.3}";
58
-
59
- const rangeMdCss = ":host{--knob-handle-size:calc(var(--knob-size) * 2);display:-ms-flexbox;display:flex;position:relative;-ms-flex:3;flex:3;-ms-flex-align:center;align-items:center;font-family:var(--ion-font-family, inherit);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.range-disabled){pointer-events:none}::slotted(ion-label){-ms-flex:initial;flex:initial}::slotted(ion-icon[slot]){font-size:24px}.range-slider{position:relative;-ms-flex:1;flex:1;width:100%;height:var(--height);contain:size layout style;cursor:-webkit-grab;cursor:grab;-ms-touch-action:pan-y;touch-action:pan-y}:host(.range-pressed) .range-slider{cursor:-webkit-grabbing;cursor:grabbing}.range-pin{position:absolute;background:var(--ion-color-base);color:var(--ion-color-contrast);text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.range-knob-handle{top:calc((var(--height) - var(--knob-handle-size)) / 2);-webkit-margin-start:calc(0px - var(--knob-handle-size) / 2);margin-inline-start:calc(0px - var(--knob-handle-size) / 2);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-pack:center;justify-content:center;width:var(--knob-handle-size);height:var(--knob-handle-size);text-align:center}.range-knob-handle{inset-inline-start:0}:host-context([dir=rtl]) .range-knob-handle{left:unset}[dir=rtl] .range-knob-handle{left:unset}@supports selector(:dir(rtl)){.range-knob-handle:dir(rtl){left:unset}}.range-knob-handle:active,.range-knob-handle:focus{outline:none}.range-bar-container{border-radius:var(--bar-border-radius);top:calc((var(--height) - var(--bar-height)) / 2);position:absolute;width:100%;height:var(--bar-height)}.range-bar-container{inset-inline-start:0}:host-context([dir=rtl]) .range-bar-container{left:unset}[dir=rtl] .range-bar-container{left:unset}@supports selector(:dir(rtl)){.range-bar-container:dir(rtl){left:unset}}.range-bar{border-radius:var(--bar-border-radius);position:absolute;width:100%;height:var(--bar-height);background:var(--bar-background);pointer-events:none}.range-knob{border-radius:var(--knob-border-radius);top:calc(50% - var(--knob-size) / 2);position:absolute;width:var(--knob-size);height:var(--knob-size);background:var(--knob-background);-webkit-box-shadow:var(--knob-box-shadow);box-shadow:var(--knob-box-shadow);z-index:2;pointer-events:none}.range-knob{inset-inline-start:calc(50% - var(--knob-size) / 2)}:host-context([dir=rtl]) .range-knob{left:unset}[dir=rtl] .range-knob{left:unset}@supports selector(:dir(rtl)){.range-knob:dir(rtl){left:unset}}:host(.range-pressed) .range-bar-active{will-change:left, right}:host(.in-item){width:100%}:host([slot=start]),:host([slot=end]){width:auto}:host(.in-item) ::slotted(ion-label){-ms-flex-item-align:center;align-self:center}.range-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;height:inherit}::slotted([slot=label]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}:host(.range-label-placement-start) .range-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.range-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-end) .range-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.range-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.range-label-placement-stacked) .range-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch}:host(.range-label-placement-stacked) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top;-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host-context([dir=rtl]):host(.range-label-placement-stacked) .label-text-wrapper,:host-context([dir=rtl]).range-label-placement-stacked .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.in-item.range-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.range-label-placement-stacked) .native-wrapper{margin-bottom:0px}:host{--knob-border-radius:50%;--knob-background:var(--bar-background-active);--knob-box-shadow:none;--knob-size:18px;--bar-height:2px;--bar-background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.26);--bar-background-active:var(--ion-color-primary, #0054e9);--bar-border-radius:0;--height:42px;--pin-background:var(--ion-color-primary, #0054e9);--pin-color:var(--ion-color-primary-contrast, #fff)}::slotted(:not(ion-icon)[slot=start]),::slotted(:not(ion-icon)[slot=end]),.native-wrapper{font-size:0.75rem}:host(.range-item-start-adjustment){-webkit-padding-start:18px;padding-inline-start:18px}:host(.range-item-end-adjustment){-webkit-padding-end:18px;padding-inline-end:18px}:host(.ion-color) .range-bar{background:rgba(var(--ion-color-base-rgb), 0.26)}:host(.ion-color) .range-bar-active,:host(.ion-color) .range-knob,:host(.ion-color) .range-knob::before,:host(.ion-color) .range-pin,:host(.ion-color) .range-pin::before,:host(.ion-color) .range-tick{background:var(--ion-color-base);color:var(--ion-color-contrast)}::slotted([slot=start]){-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:14px;margin-inline-end:14px;margin-top:0;margin-bottom:0}::slotted([slot=end]){-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-has-pin:not(.range-label-placement-stacked)){padding-top:1.75rem}:host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper{margin-bottom:1.75rem}.range-bar-active{bottom:0;width:auto;background:var(--bar-background-active)}.range-knob{-webkit-transform:scale(0.67);transform:scale(0.67);-webkit-transition-duration:120ms;transition-duration:120ms;-webkit-transition-property:background-color, border, -webkit-transform;transition-property:background-color, border, -webkit-transform;transition-property:transform, background-color, border;transition-property:transform, background-color, border, -webkit-transform;-webkit-transition-timing-function:ease;transition-timing-function:ease;z-index:2}.range-knob::before{border-radius:50%;position:absolute;width:var(--knob-size);height:var(--knob-size);-webkit-transform:scale(1);transform:scale(1);-webkit-transition:0.267s cubic-bezier(0, 0, 0.58, 1);transition:0.267s cubic-bezier(0, 0, 0.58, 1);background:var(--knob-background);content:\"\";opacity:0.13;pointer-events:none}.range-knob::before{inset-inline-start:0}.range-tick{position:absolute;top:calc((var(--height) - var(--bar-height)) / 2);width:var(--bar-height);height:var(--bar-height);background:var(--bar-background-active);z-index:1;pointer-events:none}.range-tick-active{background:transparent}.range-pin{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:8px;border-radius:50%;-webkit-transform:translate3d(0, 0, 0) scale(0.01);transform:translate3d(0, 0, 0) scale(0.01);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:1.75rem;height:1.75rem;-webkit-transition:background 120ms ease, -webkit-transform 120ms ease;transition:background 120ms ease, -webkit-transform 120ms ease;transition:transform 120ms ease, background 120ms ease;transition:transform 120ms ease, background 120ms ease, -webkit-transform 120ms ease;background:var(--pin-background);color:var(--pin-color)}.range-pin::before{bottom:-1px;-webkit-margin-start:-13px;margin-inline-start:-13px;border-radius:50% 50% 50% 0;position:absolute;width:26px;height:26px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transition:background 120ms ease;transition:background 120ms ease;background:var(--pin-background);content:\"\";z-index:-1}.range-pin::before{inset-inline-start:50%}:host-context([dir=rtl]) .range-pin::before{left:unset}[dir=rtl] .range-pin::before{left:unset}@supports selector(:dir(rtl)){.range-pin::before:dir(rtl){left:unset}}.range-knob-pressed .range-pin,.range-knob-handle.ion-focused .range-pin{-webkit-transform:translate3d(0, calc(-100% + 4px), 0) scale(1);transform:translate3d(0, calc(-100% + 4px), 0) scale(1)}@media (any-hover: hover){.range-knob-handle:hover .range-knob:before{-webkit-transform:scale(2);transform:scale(2);opacity:0.13}}.range-knob-handle.ion-activated .range-knob:before,.range-knob-handle.ion-focused .range-knob:before,.range-knob-handle.range-knob-pressed .range-knob:before{-webkit-transform:scale(2);transform:scale(2)}.range-knob-handle.ion-focused .range-knob::before{opacity:0.13}.range-knob-handle.ion-activated .range-knob::before,.range-knob-handle.range-knob-pressed .range-knob::before{opacity:0.25}:host(:not(.range-has-pin)) .range-knob-pressed .range-knob,:host(:not(.range-has-pin)) .range-knob-handle.ion-focused .range-knob{-webkit-transform:scale(1);transform:scale(1)}:host(.range-disabled) .range-bar-active,:host(.range-disabled) .range-bar,:host(.range-disabled) .range-tick{background-color:var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf))}:host(.range-disabled) .range-knob{-webkit-transform:scale(0.55);transform:scale(0.55);outline:5px solid #fff;background-color:var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf))}:host(.range-disabled) .label-text-wrapper,:host(.range-disabled) ::slotted([slot=start]),:host(.range-disabled) ::slotted([slot=end]){opacity:0.38}";
60
-
61
- const Range = /*@__PURE__*/ proxyCustomElement(class Range extends H {
62
- constructor(registerHost) {
63
- super();
64
- if (registerHost !== false) {
65
- this.__registerHost();
66
- }
67
- this.__attachShadow();
68
- this.ionChange = createEvent(this, "ionChange", 7);
69
- this.ionInput = createEvent(this, "ionInput", 7);
70
- this.ionFocus = createEvent(this, "ionFocus", 7);
71
- this.ionBlur = createEvent(this, "ionBlur", 7);
72
- this.ionKnobMoveStart = createEvent(this, "ionKnobMoveStart", 7);
73
- this.ionKnobMoveEnd = createEvent(this, "ionKnobMoveEnd", 7);
74
- this.rangeId = `ion-r-${rangeIds++}`;
75
- this.didLoad = false;
76
- this.noUpdate = false;
77
- this.hasFocus = false;
78
- this.inheritedAttributes = {};
79
- this.contentEl = null;
80
- this.initialContentScrollY = true;
81
- this.ratioA = 0;
82
- this.ratioB = 0;
83
- /**
84
- * The name of the control, which is submitted with the form data.
85
- */
86
- this.name = this.rangeId;
87
- /**
88
- * Show two knobs.
89
- */
90
- this.dualKnobs = false;
91
- /**
92
- * Minimum integer value of the range.
93
- */
94
- this.min = 0;
95
- /**
96
- * Maximum integer value of the range.
97
- */
98
- this.max = 100;
99
- /**
100
- * If `true`, a pin with integer value is shown when the knob
101
- * is pressed.
102
- */
103
- this.pin = false;
104
- /**
105
- * A callback used to format the pin text.
106
- * By default the pin text is set to `Math.round(value)`.
107
- *
108
- * See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this
109
- * if you need to access `this` from within the callback.
110
- */
111
- this.pinFormatter = (value) => Math.round(value);
112
- /**
113
- * If `true`, the knob snaps to tick marks evenly spaced based
114
- * on the step property value.
115
- */
116
- this.snaps = false;
117
- /**
118
- * Specifies the value granularity.
119
- */
120
- this.step = 1;
121
- /**
122
- * If `true`, tick marks are displayed based on the step value.
123
- * Only applies when `snaps` is `true`.
124
- */
125
- this.ticks = true;
126
- /**
127
- * If `true`, the user cannot interact with the range.
128
- */
129
- this.disabled = false;
130
- /**
131
- * the value of the range.
132
- */
133
- this.value = 0;
134
- /**
135
- * Compares two RangeValue inputs to determine if they are different.
136
- *
137
- * @param newVal - The new value.
138
- * @param oldVal - The old value.
139
- * @returns `true` if the values are different, `false` otherwise.
140
- */
141
- this.compareValues = (newVal, oldVal) => {
142
- if (typeof newVal === 'object' && typeof oldVal === 'object') {
143
- return newVal.lower !== oldVal.lower || newVal.upper !== oldVal.upper;
144
- }
145
- return newVal !== oldVal;
146
- };
147
- this.clampBounds = (value) => {
148
- return clamp(this.min, value, this.max);
149
- };
150
- this.ensureValueInBounds = (value) => {
151
- if (this.dualKnobs) {
152
- return {
153
- lower: this.clampBounds(value.lower),
154
- upper: this.clampBounds(value.upper),
155
- };
156
- }
157
- else {
158
- return this.clampBounds(value);
159
- }
160
- };
161
- /**
162
- * Where to place the label relative to the range.
163
- * `"start"`: The label will appear to the left of the range in LTR and to the right in RTL.
164
- * `"end"`: The label will appear to the right of the range in LTR and to the left in RTL.
165
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
166
- * `"stacked"`: The label will appear above the range regardless of the direction.
167
- */
168
- this.labelPlacement = 'start';
169
- this.setupGesture = async () => {
170
- const rangeSlider = this.rangeSlider;
171
- if (rangeSlider) {
172
- this.gesture = (await import('./p-Cl0B-RWe.js')).createGesture({
173
- el: rangeSlider,
174
- gestureName: 'range',
175
- gesturePriority: 100,
176
- /**
177
- * Provide a threshold since the drag movement
178
- * might be a user scrolling the view.
179
- * If this is true, then the range
180
- * should not move.
181
- */
182
- threshold: 10,
183
- onStart: () => this.onStart(),
184
- onMove: (ev) => this.onMove(ev),
185
- onEnd: (ev) => this.onEnd(ev),
186
- });
187
- this.gesture.enable(!this.disabled);
188
- }
189
- };
190
- this.handleKeyboard = (knob, isIncrease) => {
191
- const { ensureValueInBounds } = this;
192
- let step = this.step;
193
- step = step > 0 ? step : 1;
194
- step = step / (this.max - this.min);
195
- if (!isIncrease) {
196
- step *= -1;
197
- }
198
- if (knob === 'A') {
199
- this.ratioA = clamp(0, this.ratioA + step, 1);
200
- }
201
- else {
202
- this.ratioB = clamp(0, this.ratioB + step, 1);
203
- }
204
- this.ionKnobMoveStart.emit({ value: ensureValueInBounds(this.value) });
205
- this.updateValue();
206
- this.emitValueChange();
207
- this.ionKnobMoveEnd.emit({ value: ensureValueInBounds(this.value) });
208
- };
209
- this.onBlur = () => {
210
- if (this.hasFocus) {
211
- this.hasFocus = false;
212
- this.ionBlur.emit();
213
- }
214
- };
215
- this.onFocus = () => {
216
- if (!this.hasFocus) {
217
- this.hasFocus = true;
218
- this.ionFocus.emit();
219
- }
220
- };
221
- this.onKnobFocus = (knob) => {
222
- if (!this.hasFocus) {
223
- this.hasFocus = true;
224
- this.ionFocus.emit();
225
- }
226
- // Manually manage ion-focused class for dual knobs
227
- if (this.dualKnobs && this.el.shadowRoot) {
228
- const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
229
- const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
230
- // Remove ion-focused from both knobs first
231
- knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
232
- knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
233
- // Add ion-focused only to the focused knob
234
- const focusedKnobEl = knob === 'A' ? knobA : knobB;
235
- focusedKnobEl === null || focusedKnobEl === void 0 ? void 0 : focusedKnobEl.classList.add('ion-focused');
236
- }
237
- };
238
- this.onKnobBlur = () => {
239
- // Check if focus is moving to another knob within the same range
240
- // by delaying the reset to allow the new focus to register
241
- setTimeout(() => {
242
- var _a;
243
- const activeElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement;
244
- const isStillFocusedOnKnob = activeElement && activeElement.classList.contains('range-knob-handle');
245
- if (!isStillFocusedOnKnob) {
246
- if (this.hasFocus) {
247
- this.hasFocus = false;
248
- this.ionBlur.emit();
249
- }
250
- // Remove ion-focused from both knobs when focus leaves the range
251
- if (this.dualKnobs && this.el.shadowRoot) {
252
- const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
253
- const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
254
- knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
255
- knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
256
- }
257
- }
258
- }, 0);
259
- };
260
- }
261
- debounceChanged() {
262
- const { ionInput, debounce, originalIonInput } = this;
263
- /**
264
- * If debounce is undefined, we have to manually revert the ionInput emitter in case
265
- * debounce used to be set to a number. Otherwise, the event would stay debounced.
266
- */
267
- this.ionInput = debounce === undefined ? originalIonInput !== null && originalIonInput !== void 0 ? originalIonInput : ionInput : debounceEvent(ionInput, debounce);
268
- }
269
- minChanged(newValue) {
270
- if (!isSafeNumber(newValue)) {
271
- this.min = 0;
272
- }
273
- if (!this.noUpdate) {
274
- this.updateRatio();
275
- }
276
- }
277
- maxChanged(newValue) {
278
- if (!isSafeNumber(newValue)) {
279
- this.max = 100;
280
- }
281
- if (!this.noUpdate) {
282
- this.updateRatio();
283
- }
284
- }
285
- stepChanged(newValue) {
286
- if (!isSafeNumber(newValue)) {
287
- this.step = 1;
288
- }
289
- }
290
- activeBarStartChanged() {
291
- const { activeBarStart } = this;
292
- if (activeBarStart !== undefined) {
293
- if (activeBarStart > this.max) {
294
- printIonWarning(`[ion-range] - The value of activeBarStart (${activeBarStart}) is greater than the max (${this.max}). Valid values are greater than or equal to the min value and less than or equal to the max value.`, this.el);
295
- this.activeBarStart = this.max;
296
- }
297
- else if (activeBarStart < this.min) {
298
- printIonWarning(`[ion-range] - The value of activeBarStart (${activeBarStart}) is less than the min (${this.min}). Valid values are greater than or equal to the min value and less than or equal to the max value.`, this.el);
299
- this.activeBarStart = this.min;
300
- }
301
- }
302
- }
303
- disabledChanged() {
304
- if (this.gesture) {
305
- this.gesture.enable(!this.disabled);
306
- }
307
- }
308
- valueChanged(newValue, oldValue) {
309
- const valuesChanged = this.compareValues(newValue, oldValue);
310
- if (valuesChanged) {
311
- this.ionInput.emit({ value: this.value });
312
- }
313
- if (!this.noUpdate) {
314
- this.updateRatio();
315
- }
316
- }
317
- componentWillLoad() {
318
- /**
319
- * If user has custom ID set then we should
320
- * not assign the default incrementing ID.
321
- */
322
- if (this.el.hasAttribute('id')) {
323
- this.rangeId = this.el.getAttribute('id');
324
- }
325
- this.inheritedAttributes = inheritAriaAttributes(this.el);
326
- // If min, max, or step are not safe, set them to 0, 100, and 1, respectively.
327
- // Each watch does this, but not before the initial load.
328
- this.min = isSafeNumber(this.min) ? this.min : 0;
329
- this.max = isSafeNumber(this.max) ? this.max : 100;
330
- this.step = isSafeNumber(this.step) ? this.step : 1;
331
- }
332
- componentDidLoad() {
333
- this.originalIonInput = this.ionInput;
334
- this.setupGesture();
335
- this.updateRatio();
336
- this.didLoad = true;
337
- }
338
- connectedCallback() {
339
- var _a;
340
- this.updateRatio();
341
- this.debounceChanged();
342
- this.disabledChanged();
343
- this.activeBarStartChanged();
344
- /**
345
- * If we have not yet rendered
346
- * ion-range, then rangeSlider is not defined.
347
- * But if we are moving ion-range via appendChild,
348
- * then rangeSlider will be defined.
349
- */
350
- if (this.didLoad) {
351
- this.setupGesture();
352
- }
353
- const ionContent = findClosestIonContent(this.el);
354
- this.contentEl = (_a = ionContent === null || ionContent === void 0 ? void 0 : ionContent.querySelector('.ion-content-scroll-host')) !== null && _a !== void 0 ? _a : ionContent;
355
- }
356
- disconnectedCallback() {
357
- if (this.gesture) {
358
- this.gesture.destroy();
359
- this.gesture = undefined;
360
- }
361
- }
362
- getValue() {
363
- var _a;
364
- const value = (_a = this.value) !== null && _a !== void 0 ? _a : 0;
365
- if (this.dualKnobs) {
366
- if (typeof value === 'object') {
367
- return value;
368
- }
369
- return {
370
- lower: 0,
371
- upper: value,
372
- };
373
- }
374
- else {
375
- if (typeof value === 'object') {
376
- return value.upper;
377
- }
378
- return value;
379
- }
380
- }
381
- /**
382
- * Emits an `ionChange` event.
383
- *
384
- * This API should be called for user committed changes.
385
- * This API should not be used for external value changes.
386
- */
387
- emitValueChange() {
388
- this.value = this.ensureValueInBounds(this.value);
389
- this.ionChange.emit({ value: this.value });
390
- }
391
- /**
392
- * The value should be updated on touch end or
393
- * when the component is being dragged.
394
- * This follows the native behavior of mobile devices.
395
- *
396
- * For example: When the user lifts their finger from the
397
- * screen after tapping the bar or dragging the bar or knob.
398
- */
399
- onStart() {
400
- this.ionKnobMoveStart.emit({ value: this.ensureValueInBounds(this.value) });
401
- }
402
- /**
403
- * The value should be updated while dragging the
404
- * bar or knob.
405
- *
406
- * While the user is dragging, the view
407
- * should not scroll. This is to prevent the user from
408
- * feeling disoriented while dragging.
409
- *
410
- * The user can scroll on the view if the knob or
411
- * bar is not being dragged.
412
- *
413
- * @param detail The details of the gesture event.
414
- */
415
- onMove(detail) {
416
- const { contentEl, pressedKnob } = this;
417
- const currentX = detail.currentX;
418
- /**
419
- * Since the user is dragging on the bar or knob, the view should not scroll.
420
- *
421
- * This only needs to be done once.
422
- */
423
- if (contentEl && this.pressedKnob === undefined) {
424
- this.initialContentScrollY = disableContentScrollY(contentEl);
425
- }
426
- /**
427
- * The `pressedKnob` can be undefined if the user just
428
- * started dragging the knob.
429
- *
430
- * This is necessary to determine which knob the user is dragging,
431
- * especially when it's a dual knob.
432
- * Plus, it determines when to apply certain styles.
433
- *
434
- * This only needs to be done once since the knob won't change
435
- * while the user is dragging.
436
- */
437
- if (pressedKnob === undefined) {
438
- this.setPressedKnob(currentX);
439
- }
440
- this.update(currentX);
441
- }
442
- /**
443
- * The value should be updated on touch end:
444
- * - When the user lifts their finger from the screen after
445
- * tapping the bar.
446
- *
447
- * @param detail The details of the gesture or mouse event.
448
- */
449
- onEnd(detail) {
450
- var _a;
451
- const { contentEl, initialContentScrollY } = this;
452
- const currentX = (_a = detail.currentX) !== null && _a !== void 0 ? _a : detail.clientX;
453
- /**
454
- * The `pressedKnob` can be undefined if the user never
455
- * dragged the knob. They just tapped on the bar.
456
- *
457
- * This is necessary to determine which knob the user is changing,
458
- * especially when it's a dual knob.
459
- * Plus, it determines when to apply certain styles.
460
- */
461
- if (this.pressedKnob === undefined) {
462
- this.setPressedKnob(currentX);
463
- }
464
- /**
465
- * The user is no longer dragging the bar or
466
- * knob (if they were dragging it).
467
- *
468
- * The user can now scroll on the view in the next gesture event.
469
- */
470
- if (contentEl && this.pressedKnob !== undefined) {
471
- resetContentScrollY(contentEl, initialContentScrollY);
472
- }
473
- // update the active knob's position
474
- this.update(currentX);
475
- /**
476
- * Reset the pressed knob to undefined since the user
477
- * may start dragging a different knob in the next gesture event.
478
- */
479
- this.pressedKnob = undefined;
480
- this.emitValueChange();
481
- this.ionKnobMoveEnd.emit({ value: this.ensureValueInBounds(this.value) });
482
- }
483
- update(currentX) {
484
- // figure out where the pointer is currently at
485
- // update the knob being interacted with
486
- const rect = this.rect;
487
- let ratio = clamp(0, (currentX - rect.left) / rect.width, 1);
488
- if (isRTL(this.el)) {
489
- ratio = 1 - ratio;
490
- }
491
- if (this.snaps) {
492
- // snaps the ratio to the current value
493
- ratio = valueToRatio(ratioToValue(ratio, this.min, this.max, this.step), this.min, this.max);
494
- }
495
- // update which knob is pressed
496
- if (this.pressedKnob === 'A') {
497
- this.ratioA = ratio;
498
- }
499
- else {
500
- this.ratioB = ratio;
501
- }
502
- // Update input value
503
- this.updateValue();
504
- }
505
- setPressedKnob(currentX) {
506
- const rect = (this.rect = this.rangeSlider.getBoundingClientRect());
507
- // figure out which knob they started closer to
508
- let ratio = clamp(0, (currentX - rect.left) / rect.width, 1);
509
- if (isRTL(this.el)) {
510
- ratio = 1 - ratio;
511
- }
512
- this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B';
513
- this.setFocus(this.pressedKnob);
514
- }
515
- get valA() {
516
- return ratioToValue(this.ratioA, this.min, this.max, this.step);
517
- }
518
- get valB() {
519
- return ratioToValue(this.ratioB, this.min, this.max, this.step);
520
- }
521
- get ratioLower() {
522
- if (this.dualKnobs) {
523
- return Math.min(this.ratioA, this.ratioB);
524
- }
525
- const { activeBarStart } = this;
526
- if (activeBarStart == null) {
527
- return 0;
528
- }
529
- return valueToRatio(activeBarStart, this.min, this.max);
530
- }
531
- get ratioUpper() {
532
- if (this.dualKnobs) {
533
- return Math.max(this.ratioA, this.ratioB);
534
- }
535
- return this.ratioA;
536
- }
537
- updateRatio() {
538
- const value = this.getValue();
539
- const { min, max } = this;
540
- if (this.dualKnobs) {
541
- this.ratioA = valueToRatio(value.lower, min, max);
542
- this.ratioB = valueToRatio(value.upper, min, max);
543
- }
544
- else {
545
- this.ratioA = valueToRatio(value, min, max);
546
- }
547
- }
548
- updateValue() {
549
- this.noUpdate = true;
550
- const { valA, valB } = this;
551
- this.value = !this.dualKnobs
552
- ? valA
553
- : {
554
- lower: Math.min(valA, valB),
555
- upper: Math.max(valA, valB),
556
- };
557
- this.noUpdate = false;
558
- }
559
- setFocus(knob) {
560
- if (this.el.shadowRoot) {
561
- const knobEl = this.el.shadowRoot.querySelector(knob === 'A' ? '.range-knob-a' : '.range-knob-b');
562
- if (knobEl) {
563
- knobEl.focus();
564
- }
565
- }
566
- }
567
- /**
568
- * Returns true if content was passed to the "start" slot
569
- */
570
- get hasStartSlotContent() {
571
- return this.el.querySelector('[slot="start"]') !== null;
572
- }
573
- /**
574
- * Returns true if content was passed to the "end" slot
575
- */
576
- get hasEndSlotContent() {
577
- return this.el.querySelector('[slot="end"]') !== null;
578
- }
579
- get hasLabel() {
580
- return this.label !== undefined || this.el.querySelector('[slot="label"]') !== null;
581
- }
582
- renderRangeSlider() {
583
- var _a;
584
- const { min, max, step, handleKeyboard, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
585
- let barStart = `${ratioLower * 100}%`;
586
- let barEnd = `${100 - ratioUpper * 100}%`;
587
- const rtl = isRTL(this.el);
588
- const start = rtl ? 'right' : 'left';
589
- const end = rtl ? 'left' : 'right';
590
- const tickStyle = (tick) => {
591
- return {
592
- [start]: tick[start],
593
- };
594
- };
595
- if (this.dualKnobs === false) {
596
- /**
597
- * When the value is less than the activeBarStart or the min value,
598
- * the knob will display at the start of the active bar.
599
- */
600
- if (this.valA < ((_a = this.activeBarStart) !== null && _a !== void 0 ? _a : this.min)) {
601
- /**
602
- * Sets the bar positions relative to the upper and lower limits.
603
- * Converts the ratio values into percentages, used as offsets for left/right styles.
604
- *
605
- * The ratioUpper refers to the knob position on the bar.
606
- * The ratioLower refers to the end position of the active bar (the value).
607
- */
608
- barStart = `${ratioUpper * 100}%`;
609
- barEnd = `${100 - ratioLower * 100}%`;
610
- }
611
- else {
612
- /**
613
- * Otherwise, the knob will display at the end of the active bar.
614
- *
615
- * The ratioLower refers to the start position of the active bar (the value).
616
- * The ratioUpper refers to the knob position on the bar.
617
- */
618
- barStart = `${ratioLower * 100}%`;
619
- barEnd = `${100 - ratioUpper * 100}%`;
620
- }
621
- }
622
- const barStyle = {
623
- [start]: barStart,
624
- [end]: barEnd,
625
- };
626
- const ticks = [];
627
- if (this.snaps && this.ticks) {
628
- for (let value = min; value <= max; value += step) {
629
- const ratio = valueToRatio(value, min, max);
630
- const ratioMin = Math.min(ratioLower, ratioUpper);
631
- const ratioMax = Math.max(ratioLower, ratioUpper);
632
- const tick = {
633
- ratio,
634
- /**
635
- * Sets the tick mark as active when the tick is between the min bounds and the knob.
636
- * When using activeBarStart, the tick mark will be active between the knob and activeBarStart.
637
- */
638
- active: ratio >= ratioMin && ratio <= ratioMax,
639
- };
640
- tick[start] = `${ratio * 100}%`;
641
- ticks.push(tick);
642
- }
643
- }
644
- return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl),
645
- /**
646
- * Since the gesture has a threshold, the value
647
- * won't change until the user has dragged past
648
- * the threshold. This is to prevent the range
649
- * from moving when the user is scrolling.
650
- *
651
- * This results in the value not being updated
652
- * and the event emitters not being triggered
653
- * if the user taps on the range. This is why
654
- * we need to listen for the "pointerUp" event.
655
- */
656
- onPointerUp: (ev) => {
657
- /**
658
- * If the user drags the knob on the web
659
- * version (does not occur on mobile),
660
- * the "pointerUp" event will be triggered
661
- * along with the gesture's events.
662
- * This leads to duplicate events.
663
- *
664
- * By checking if the pressedKnob is undefined,
665
- * we can determine if the "pointerUp" event was
666
- * triggered by a tap or a drag. If it was
667
- * dragged, the pressedKnob will be defined.
668
- */
669
- if (this.pressedKnob === undefined) {
670
- this.onStart();
671
- this.onEnd(ev);
672
- }
673
- } }, ticks.map((tick) => (h("div", { style: tickStyle(tick), role: "presentation", class: {
674
- 'range-tick': true,
675
- 'range-tick-active': tick.active,
676
- }, part: tick.active ? 'tick-active' : 'tick' }))), h("div", { class: "range-bar-container" }, h("div", { class: "range-bar", role: "presentation", part: "bar" }), h("div", { class: {
677
- 'range-bar': true,
678
- 'range-bar-active': true,
679
- 'has-ticks': ticks.length > 0,
680
- }, role: "presentation", style: barStyle, part: "bar-active" })), renderKnob(rtl, {
681
- knob: 'A',
682
- pressed: pressedKnob === 'A',
683
- value: this.valA,
684
- ratio: this.ratioA,
685
- pin,
686
- pinFormatter,
687
- disabled,
688
- handleKeyboard,
689
- min,
690
- max,
691
- inheritedAttributes,
692
- onKnobFocus: this.onKnobFocus,
693
- onKnobBlur: this.onKnobBlur,
694
- }), this.dualKnobs &&
695
- renderKnob(rtl, {
696
- knob: 'B',
697
- pressed: pressedKnob === 'B',
698
- value: this.valB,
699
- ratio: this.ratioB,
700
- pin,
701
- pinFormatter,
702
- disabled,
703
- handleKeyboard,
704
- min,
705
- max,
706
- inheritedAttributes,
707
- onKnobFocus: this.onKnobFocus,
708
- onKnobBlur: this.onKnobBlur,
709
- })));
710
- }
711
- render() {
712
- const { disabled, el, hasLabel, rangeId, pin, pressedKnob, labelPlacement, label } = this;
713
- const inItem = hostContext('ion-item', el);
714
- /**
715
- * If there is no start content then the knob at
716
- * the min value will be cut off by the item margin.
717
- */
718
- const hasStartContent = (hasLabel && (labelPlacement === 'start' || labelPlacement === 'fixed')) || this.hasStartSlotContent;
719
- const needsStartAdjustment = inItem && !hasStartContent;
720
- /**
721
- * If there is no end content then the knob at
722
- * the max value will be cut off by the item margin.
723
- */
724
- const hasEndContent = (hasLabel && labelPlacement === 'end') || this.hasEndSlotContent;
725
- const needsEndAdjustment = inItem && !hasEndContent;
726
- const mode = getIonMode(this);
727
- renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
728
- return (h(Host, { key: 'affcac4709096a48a5b4c1864b209b6352f6b078', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
729
- [mode]: true,
730
- 'in-item': inItem,
731
- 'range-disabled': disabled,
732
- 'range-pressed': pressedKnob !== undefined,
733
- 'range-has-pin': pin,
734
- [`range-label-placement-${labelPlacement}`]: true,
735
- 'range-item-start-adjustment': needsStartAdjustment,
736
- 'range-item-end-adjustment': needsEndAdjustment,
737
- }) }, h("label", { key: 'c7cf95fa831d10b17c137995d0a9e0cf84006a76', class: "range-wrapper", id: "range-label" }, h("div", { key: '5b8479c7939ae0f94a042c3aafd64316e4577d30', class: {
738
- 'label-text-wrapper': true,
739
- 'label-text-wrapper-hidden': !hasLabel,
740
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '3c275d822b29a8008e044722e8b6bdabd3ecfad7', class: "native-wrapper" }, h("slot", { key: '03c849d0aa708914984ad57ca292bc5fc66ecad5', name: "start" }), this.renderRangeSlider(), h("slot", { key: '10ca7b8152cac00b45d8fa98ad91410f59fd176a', name: "end" })))));
741
- }
742
- get el() { return this; }
743
- static get watchers() { return {
744
- "debounce": ["debounceChanged"],
745
- "min": ["minChanged"],
746
- "max": ["maxChanged"],
747
- "step": ["stepChanged"],
748
- "activeBarStart": ["activeBarStartChanged"],
749
- "disabled": ["disabledChanged"],
750
- "value": ["valueChanged"]
751
- }; }
752
- static get style() { return {
753
- ios: rangeIosCss,
754
- md: rangeMdCss
755
- }; }
756
- }, [289, "ion-range", {
757
- "color": [513],
758
- "debounce": [2],
759
- "name": [1],
760
- "label": [1],
761
- "dualKnobs": [4, "dual-knobs"],
762
- "min": [2],
763
- "max": [2],
764
- "pin": [4],
765
- "pinFormatter": [16],
766
- "snaps": [4],
767
- "step": [2],
768
- "ticks": [4],
769
- "activeBarStart": [1026, "active-bar-start"],
770
- "disabled": [4],
771
- "value": [1026],
772
- "labelPlacement": [1, "label-placement"],
773
- "ratioA": [32],
774
- "ratioB": [32],
775
- "pressedKnob": [32]
776
- }, undefined, {
777
- "debounce": ["debounceChanged"],
778
- "min": ["minChanged"],
779
- "max": ["maxChanged"],
780
- "step": ["stepChanged"],
781
- "activeBarStart": ["activeBarStartChanged"],
782
- "disabled": ["disabledChanged"],
783
- "value": ["valueChanged"]
784
- }]);
785
- const renderKnob = (rtl, { knob, value, ratio, min, max, disabled, pressed, pin, handleKeyboard, pinFormatter, inheritedAttributes, onKnobFocus, onKnobBlur, }) => {
786
- const start = rtl ? 'right' : 'left';
787
- const knobStyle = () => {
788
- const style = {};
789
- style[start] = `${ratio * 100}%`;
790
- return style;
791
- };
792
- // The aria label should be preferred over visible text if both are specified
793
- const ariaLabel = inheritedAttributes['aria-label'];
794
- return (h("div", { onKeyDown: (ev) => {
795
- const key = ev.key;
796
- if (key === 'ArrowLeft' || key === 'ArrowDown') {
797
- handleKeyboard(knob, false);
798
- ev.preventDefault();
799
- ev.stopPropagation();
800
- }
801
- else if (key === 'ArrowRight' || key === 'ArrowUp') {
802
- handleKeyboard(knob, true);
803
- ev.preventDefault();
804
- ev.stopPropagation();
805
- }
806
- }, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur, class: {
807
- 'range-knob-handle': true,
808
- 'range-knob-a': knob === 'A',
809
- 'range-knob-b': knob === 'B',
810
- 'range-knob-pressed': pressed,
811
- 'range-knob-min': value === min,
812
- 'range-knob-max': value === max,
813
- 'ion-activatable': true,
814
- 'ion-focusable': true,
815
- }, style: knobStyle(), role: "slider", tabindex: disabled ? -1 : 0, "aria-label": ariaLabel !== undefined ? ariaLabel : null, "aria-labelledby": ariaLabel === undefined ? 'range-label' : null, "aria-valuemin": min, "aria-valuemax": max, "aria-disabled": disabled ? 'true' : null, "aria-valuenow": value }, pin && (h("div", { class: "range-pin", role: "presentation", part: "pin" }, pinFormatter(value))), h("div", { class: "range-knob", role: "presentation", part: "knob" })));
816
- };
817
- const ratioToValue = (ratio, min, max, step) => {
818
- let value = (max - min) * ratio;
819
- if (step > 0) {
820
- // round to nearest multiple of step, then add min
821
- value = Math.round(value / step) * step + min;
822
- }
823
- const clampedValue = clamp(min, value, max);
824
- return roundToMaxDecimalPlaces(clampedValue, min, max, step);
825
- };
826
- const valueToRatio = (value, min, max) => {
827
- return clamp(0, (value - min) / (max - min), 1);
828
- };
829
- let rangeIds = 0;
830
- function defineCustomElement$1() {
831
- if (typeof customElements === "undefined") {
832
- return;
833
- }
834
- const components = ["ion-range"];
835
- components.forEach(tagName => { switch (tagName) {
836
- case "ion-range":
837
- if (!customElements.get(tagName)) {
838
- customElements.define(tagName, Range);
839
- }
840
- break;
841
- } });
842
- }
843
-
844
- const IonRange = Range;
845
- const defineCustomElement = defineCustomElement$1;
846
-
847
- export { IonRange, defineCustomElement };
4
+ import{p as e,H as t,e as a,f as n,h as r,d as i,t as o}from"./p-BJoMtgfR.js";import{a as s,d as l,r as d}from"./p-C59ryAuS.js";import{o as h,f as b,l as c,i as g,e as p}from"./p-DgbT0exM.js";import{i as m}from"./p-C53feagD.js";import{h as u,c as k}from"./p-DiVJyqlX.js";import{b as f}from"./p-CDfQnFrd.js";const x=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.ionChange=a(this,"ionChange",7),this.ionInput=a(this,"ionInput",7),this.ionFocus=a(this,"ionFocus",7),this.ionBlur=a(this,"ionBlur",7),this.ionKnobMoveStart=a(this,"ionKnobMoveStart",7),this.ionKnobMoveEnd=a(this,"ionKnobMoveEnd",7),this.rangeId="ion-r-"+B++,this.didLoad=!1,this.noUpdate=!1,this.hasFocus=!1,this.inheritedAttributes={},this.contentEl=null,this.initialContentScrollY=!0,this.focusFromPointer=!1,this.ratioA=0,this.ratioB=0,this.name=this.rangeId,this.dualKnobs=!1,this.min=0,this.max=100,this.pin=!1,this.pinFormatter=e=>Math.round(e),this.snaps=!1,this.step=1,this.ticks=!0,this.disabled=!1,this.value=0,this.compareValues=(e,t)=>"object"==typeof e&&"object"==typeof t?e.lower!==t.lower||e.upper!==t.upper:e!==t,this.clampBounds=e=>b(this.min,e,this.max),this.ensureValueInBounds=e=>this.dualKnobs?{lower:this.clampBounds(e.lower),upper:this.clampBounds(e.upper)}:this.clampBounds(e),this.labelPlacement="start",this.setupGesture=async()=>{const e=this.rangeSlider;e&&(this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:e,gestureName:"range",gesturePriority:100,threshold:10,onStart:()=>this.onStart(),onMove:e=>this.onMove(e),onEnd:e=>this.onEnd(e)}),this.gesture.enable(!this.disabled))},this.setupActivatedObserver=()=>{const e=this.el.shadowRoot.querySelector(".range-knob-handle-a"),t=this.el.shadowRoot.querySelector(".range-knob-handle-b"),a=()=>{this.activatedKnob=(null==e?void 0:e.classList.contains("ion-activated"))?"A":(null==t?void 0:t.classList.contains("ion-activated"))?"B":void 0};"undefined"!=typeof MutationObserver&&(this.activatedObserver=new MutationObserver(a),this.activatedObserver.observe(this.el.shadowRoot,{attributes:!0,attributeFilter:["class"],subtree:!0})),a()},this.handleKeyboard=(e,t)=>{const{ensureValueInBounds:a}=this;let n=this.step;n=n>0?n:1,n/=this.max-this.min,t||(n*=-1),"A"===e?this.ratioA=b(0,this.ratioA+n,1):this.ratioB=b(0,this.ratioB+n,1),this.ionKnobMoveStart.emit({value:a(this.value)}),this.updateValue(),this.emitValueChange(),this.ionKnobMoveEnd.emit({value:a(this.value)})},this.onBlur=()=>{this.hasFocus&&(this.hasFocus=!1,this.focusedKnob=void 0,this.ionBlur.emit())},this.onFocus=()=>{this.hasFocus||(this.hasFocus=!0,this.ionFocus.emit())},this.onKnobFocus=e=>{this.focusFromPointer?(this.focusFromPointer=!1,this.focusedKnob=void 0):this.focusedKnob=e,this.hasFocus||(this.hasFocus=!0,this.ionFocus.emit())},this.onKnobBlur=()=>{setTimeout((()=>{var e;const t=null===(e=this.el.shadowRoot)||void 0===e?void 0:e.activeElement;t&&t.classList.contains("range-knob-handle")||this.hasFocus&&(this.hasFocus=!1,this.focusedKnob=void 0,this.ionBlur.emit())}),0)},this.onKnobMouseEnter=e=>{this.hoveredKnob=e},this.onKnobMouseLeave=()=>{this.hoveredKnob=void 0}}debounceChanged(){const{ionInput:e,debounce:t,originalIonInput:a}=this;this.ionInput=void 0===t?null!=a?a:e:c(e,t)}minChanged(e){h(e)||(this.min=0),this.noUpdate||this.updateRatio()}maxChanged(e){h(e)||(this.max=100),this.noUpdate||this.updateRatio()}stepChanged(e){h(e)||(this.step=1)}activeBarStartChanged(){const{activeBarStart:e}=this;void 0!==e&&(e>this.max?(n(`[ion-range] - The value of activeBarStart (${e}) is greater than the max (${this.max}). Valid values are greater than or equal to the min value and less than or equal to the max value.`,this.el),this.activeBarStart=this.max):e<this.min&&(n(`[ion-range] - The value of activeBarStart (${e}) is less than the min (${this.min}). Valid values are greater than or equal to the min value and less than or equal to the max value.`,this.el),this.activeBarStart=this.min))}disabledChanged(){this.gesture&&this.gesture.enable(!this.disabled)}valueChanged(e,t){this.compareValues(e,t)&&this.ionInput.emit({value:this.value}),this.noUpdate||this.updateRatio()}componentWillLoad(){this.el.hasAttribute("id")&&(this.rangeId=this.el.getAttribute("id")),this.inheritedAttributes=g(this.el),this.min=h(this.min)?this.min:0,this.max=h(this.max)?this.max:100,this.step=h(this.step)?this.step:1}componentDidLoad(){this.originalIonInput=this.ionInput,this.setupGesture(),this.updateRatio(),this.setupActivatedObserver(),this.didLoad=!0}connectedCallback(){var e;this.updateRatio(),this.debounceChanged(),this.disabledChanged(),this.activeBarStartChanged(),this.didLoad&&(this.setupGesture(),this.setupActivatedObserver());const t=s(this.el);this.contentEl=null!==(e=null==t?void 0:t.querySelector(".ion-content-scroll-host"))&&void 0!==e?e:t}disconnectedCallback(){this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.activatedObserver&&(this.activatedObserver.disconnect(),this.activatedObserver=void 0)}getValue(){var e;const t=null!==(e=this.value)&&void 0!==e?e:0;return this.dualKnobs?"object"==typeof t?t:{lower:0,upper:t}:"object"==typeof t?t.upper:t}emitValueChange(){this.value=this.ensureValueInBounds(this.value),this.ionChange.emit({value:this.value})}onStart(){this.ionKnobMoveStart.emit({value:this.ensureValueInBounds(this.value)})}onMove(e){const{contentEl:t,pressedKnob:a}=this,n=e.currentX;t&&void 0===this.pressedKnob&&(this.initialContentScrollY=l(t)),void 0===a&&this.setPressedKnob(n),this.update(n)}onEnd(e){var t;const{contentEl:a,initialContentScrollY:n}=this,r=null!==(t=e.currentX)&&void 0!==t?t:e.clientX;void 0===this.pressedKnob&&this.setPressedKnob(r),a&&void 0!==this.pressedKnob&&d(a,n),this.update(r),this.pressedKnob=void 0,this.emitValueChange(),this.ionKnobMoveEnd.emit({value:this.ensureValueInBounds(this.value)})}update(e){const t=this.rect;let a=b(0,(e-t.left)/t.width,1);m(this.el)&&(a=1-a),this.snaps&&(a=z(y(a,this.min,this.max,this.step),this.min,this.max)),"A"===this.pressedKnob?this.ratioA=a:this.ratioB=a,this.updateValue()}setPressedKnob(e){const t=this.rect=this.rangeSlider.getBoundingClientRect();let a=b(0,(e-t.left)/t.width,1);m(this.el)&&(a=1-a),this.pressedKnob=!this.dualKnobs||Math.abs(this.ratioA-a)<Math.abs(this.ratioB-a)?"A":"B"}get valA(){return y(this.ratioA,this.min,this.max,this.step)}get valB(){return y(this.ratioB,this.min,this.max,this.step)}get ratioLower(){if(this.dualKnobs)return Math.min(this.ratioA,this.ratioB);const{activeBarStart:e}=this;return null==e?0:z(e,this.min,this.max)}get ratioUpper(){return this.dualKnobs?Math.max(this.ratioA,this.ratioB):this.ratioA}updateRatio(){const e=this.getValue(),{min:t,max:a}=this;if(this.dualKnobs){const n=z(e.lower,t,a),r=z(e.upper,t,a);Math.abs(this.ratioA-n)+Math.abs(this.ratioB-r)<=Math.abs(this.ratioA-r)+Math.abs(this.ratioB-n)?(this.ratioA=n,this.ratioB=r):(this.ratioA=r,this.ratioB=n)}else this.ratioA=z(e,t,a)}updateValue(){this.noUpdate=!0;const{valA:e,valB:t}=this;this.value=this.dualKnobs?{lower:Math.min(e,t),upper:Math.max(e,t)}:e,this.noUpdate=!1}get hasStartSlotContent(){return null!==this.el.querySelector('[slot="start"]')}get hasEndSlotContent(){return null!==this.el.querySelector('[slot="end"]')}get hasLabel(){return void 0!==this.label||null!==this.el.querySelector('[slot="label"]')}renderRangeSlider(){var e;const{min:t,max:a,step:n,handleKeyboard:i,activatedKnob:o,focusedKnob:s,hoveredKnob:l,pressedKnob:d,disabled:h,pin:b,ratioLower:c,ratioUpper:g,pinFormatter:p,inheritedAttributes:u}=this;let k=100*c+"%",f=100-100*g+"%";const x=m(this.el),y=x?"right":"left",B=x?"left":"right",K=e=>({[y]:e[y]});!1===this.dualKnobs&&(this.valA<(null!==(e=this.activeBarStart)&&void 0!==e?e:this.min)?(k=100*g+"%",f=100-100*c+"%"):(k=100*c+"%",f=100-100*g+"%"));const C={[y]:k,[B]:f},M=[];if(this.snaps&&this.ticks)for(let e=t;e<=a;e+=n){const n=z(e,t,a),r={ratio:n,active:n>=Math.min(c,g)&&n<=Math.max(c,g)};r[y]=100*n+"%",M.push(r)}return r("div",{class:"range-slider",ref:e=>this.rangeSlider=e,onPointerDown:()=>{this.focusFromPointer=!0},onPointerUp:e=>{this.focusFromPointer=!1,void 0===this.pressedKnob&&(this.onStart(),this.onEnd(e))}},M.map((e=>r("div",{style:K(e),role:"presentation",class:{"range-tick":!0,"range-tick-active":e.active},part:e.active?"tick-active":"tick"}))),r("div",{class:"range-bar-container"},r("div",{class:"range-bar",role:"presentation",part:"bar"}),r("div",{class:{"range-bar":!0,"range-bar-active":!0,"has-ticks":M.length>0},role:"presentation",style:C,part:"bar-active"})),v(x,{knob:"A",position:w("A",this.ratioA,this.ratioB,this.dualKnobs),dualKnobs:this.dualKnobs,activated:"A"===o,focused:"A"===s,hovered:"A"===l,pressed:"A"===d,value:this.valA,ratio:this.ratioA,pin:b,pinFormatter:p,disabled:h,handleKeyboard:i,min:t,max:a,inheritedAttributes:u,onKnobFocus:this.onKnobFocus,onKnobBlur:this.onKnobBlur,onKnobMouseEnter:this.onKnobMouseEnter,onKnobMouseLeave:this.onKnobMouseLeave}),this.dualKnobs&&v(x,{knob:"B",position:w("B",this.ratioA,this.ratioB,this.dualKnobs),dualKnobs:this.dualKnobs,activated:"B"===o,focused:"B"===s,hovered:"B"===l,pressed:"B"===d,value:this.valB,ratio:this.ratioB,pin:b,pinFormatter:p,disabled:h,handleKeyboard:i,min:t,max:a,inheritedAttributes:u,onKnobFocus:this.onKnobFocus,onKnobBlur:this.onKnobBlur,onKnobMouseEnter:this.onKnobMouseEnter,onKnobMouseLeave:this.onKnobMouseLeave}))}render(){const{disabled:e,el:t,hasLabel:a,rangeId:n,pin:o,pressedKnob:s,labelPlacement:l,label:d,dualKnobs:h,min:b,max:c}=this,g=u("ion-item",t),m=g&&!(a&&("start"===l||"fixed"===l)||this.hasStartSlotContent),x=g&&!(a&&"end"===l||this.hasEndSlotContent),v=f(this),y=h?null==s?void 0:s.toLowerCase():void 0,z=h&&s?w(s,this.ratioA,this.ratioB,h):void 0,B=h?this.valA===b||this.valB===b:this.valA===b,K=h?this.valA===c||this.valB===c:this.valA===c;return p(!0,t,this.name,JSON.stringify(this.getValue()),e),r(i,{key:"f8063d1234fb113fe55a7902845dd4b4da8b1edb",onFocusin:this.onFocus,onFocusout:this.onBlur,id:n,class:k(this.color,{[v]:!0,"in-item":g,"range-disabled":e,"range-dual-knobs":h,"range-pressed":void 0!==s,["range-pressed-"+y]:void 0!==s&&void 0!==y,["range-pressed-"+z]:void 0!==s&&void 0!==z,"range-has-pin":o,["range-label-placement-"+l]:!0,"range-item-start-adjustment":m,"range-item-end-adjustment":x,"range-value-min":B,"range-value-max":K})},r("label",{key:"beead65ab01e3b18e4be59c0ee8ac6ebf32aad7c",class:"range-wrapper",id:"range-label"},r("div",{key:"03633c689d9d2e4c50a2131bcd560329df49e314",class:{"label-text-wrapper":!0,"label-text-wrapper-hidden":!a},part:"label"},void 0!==d?r("div",{class:"label-text"},d):r("slot",{name:"label"})),r("div",{key:"c066804263ab6ae7393f8dcc51184b7198844ffa",class:"native-wrapper"},r("slot",{key:"7e8ea224d72b3e965dd948bee7e45c1a096b6899",name:"start"}),this.renderRangeSlider(),r("slot",{key:"21f242f6f60ff3adce6a2d90b2d4dac1ceaf6624",name:"end"}))))}get el(){return this}static get watchers(){return{debounce:[{debounceChanged:0}],min:[{minChanged:0}],max:[{maxChanged:0}],step:[{stepChanged:0}],activeBarStart:[{activeBarStartChanged:0}],disabled:[{disabledChanged:0}],value:[{valueChanged:0}]}}static get style(){return{ios:":host{--knob-handle-size:calc(var(--knob-size) * 2);display:-ms-flexbox;display:flex;position:relative;-ms-flex:3;flex:3;-ms-flex-align:center;align-items:center;font-family:var(--ion-font-family, inherit);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.range-disabled){pointer-events:none}::slotted(ion-label){-ms-flex:initial;flex:initial}::slotted(ion-icon[slot]){font-size:24px}.range-slider{position:relative;-ms-flex:1;flex:1;width:100%;height:var(--height);contain:size layout style;cursor:-webkit-grab;cursor:grab;-ms-touch-action:pan-y;touch-action:pan-y}:host(.range-pressed) .range-slider{cursor:-webkit-grabbing;cursor:grabbing}.range-pin{position:absolute;background:var(--ion-color-base);color:var(--ion-color-contrast);text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.range-knob-handle{top:calc((var(--height) - var(--knob-handle-size)) / 2);-webkit-margin-start:calc(0px - var(--knob-handle-size) / 2);margin-inline-start:calc(0px - var(--knob-handle-size) / 2);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-pack:center;justify-content:center;width:var(--knob-handle-size);height:var(--knob-handle-size);text-align:center}.range-knob-handle{inset-inline-start:0}:host-context([dir=rtl]) .range-knob-handle{left:unset}[dir=rtl] .range-knob-handle{left:unset}@supports selector(:dir(rtl)){.range-knob-handle:dir(rtl){left:unset}}.range-knob-handle:active,.range-knob-handle:focus{outline:none}.range-bar-container{border-radius:var(--bar-border-radius);top:calc((var(--height) - var(--bar-height)) / 2);position:absolute;width:100%;height:var(--bar-height)}.range-bar-container{inset-inline-start:0}:host-context([dir=rtl]) .range-bar-container{left:unset}[dir=rtl] .range-bar-container{left:unset}@supports selector(:dir(rtl)){.range-bar-container:dir(rtl){left:unset}}.range-bar{border-radius:var(--bar-border-radius);position:absolute;width:100%;height:var(--bar-height);background:var(--bar-background);pointer-events:none}.range-knob{border-radius:var(--knob-border-radius);top:calc(50% - var(--knob-size) / 2);position:absolute;width:var(--knob-size);height:var(--knob-size);background:var(--knob-background);-webkit-box-shadow:var(--knob-box-shadow);box-shadow:var(--knob-box-shadow);z-index:2;pointer-events:none}.range-knob{inset-inline-start:calc(50% - var(--knob-size) / 2)}:host-context([dir=rtl]) .range-knob{left:unset}[dir=rtl] .range-knob{left:unset}@supports selector(:dir(rtl)){.range-knob:dir(rtl){left:unset}}:host(.range-pressed) .range-bar-active{will-change:left, right}:host(.in-item){width:100%}:host([slot=start]),:host([slot=end]){width:auto}:host(.in-item) ::slotted(ion-label){-ms-flex-item-align:center;align-self:center}.range-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;height:inherit}::slotted([slot=label]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}:host(.range-label-placement-start) .range-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.range-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-end) .range-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.range-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.range-label-placement-stacked) .range-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch}:host(.range-label-placement-stacked) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top;-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host-context([dir=rtl]):host(.range-label-placement-stacked) .label-text-wrapper,:host-context([dir=rtl]).range-label-placement-stacked .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.in-item.range-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.range-label-placement-stacked) .native-wrapper{margin-bottom:0px}:host{--knob-border-radius:50%;--knob-background:#ffffff;--knob-box-shadow:0px 0.5px 4px rgba(0, 0, 0, 0.12), 0px 6px 13px rgba(0, 0, 0, 0.12);--knob-size:26px;--bar-height:4px;--bar-background:var(--ion-color-step-900, var(--ion-background-color-step-900, #e6e6e6));--bar-background-active:var(--ion-color-primary, #0054e9);--bar-border-radius:2px;--height:42px}:host(.range-item-start-adjustment){-webkit-padding-start:24px;padding-inline-start:24px}:host(.range-item-end-adjustment){-webkit-padding-end:24px;padding-inline-end:24px}:host(.ion-color) .range-bar-active,:host(.ion-color) .range-tick-active{background:var(--ion-color-base)}::slotted([slot=start]){-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}::slotted([slot=end]){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-has-pin:not(.range-label-placement-stacked)){padding-top:calc(8px + 0.75rem)}:host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper{margin-bottom:calc(8px + 0.75rem)}.range-bar-active{bottom:0;width:auto;background:var(--bar-background-active)}.range-bar-active.has-ticks{border-radius:0;-webkit-margin-start:-2px;margin-inline-start:-2px;-webkit-margin-end:-2px;margin-inline-end:-2px}.range-tick{-webkit-margin-start:-2px;margin-inline-start:-2px;border-radius:0;position:absolute;top:17px;width:4px;height:8px;background:var(--ion-color-step-900, var(--ion-background-color-step-900, #e6e6e6));pointer-events:none}.range-tick-active{background:var(--bar-background-active)}.range-pin{-webkit-transform:translate3d(0, 100%, 0) scale(0.01);transform:translate3d(0, 100%, 0) scale(0.01);-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;min-width:28px;-webkit-transition:-webkit-transform 120ms ease;transition:-webkit-transform 120ms ease;transition:transform 120ms ease;transition:transform 120ms ease, -webkit-transform 120ms ease;background:transparent;color:var(--ion-text-color, #000);font-size:0.75rem;text-align:center}.range-knob-pressed .range-pin,.range-knob-handle.ion-focused .range-pin{-webkit-transform:translate3d(0, calc(-100% + 11px), 0) scale(1);transform:translate3d(0, calc(-100% + 11px), 0) scale(1)}:host(.range-disabled){opacity:0.3}",md:':host{--knob-handle-size:calc(var(--knob-size) * 2);display:-ms-flexbox;display:flex;position:relative;-ms-flex:3;flex:3;-ms-flex-align:center;align-items:center;font-family:var(--ion-font-family, inherit);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.range-disabled){pointer-events:none}::slotted(ion-label){-ms-flex:initial;flex:initial}::slotted(ion-icon[slot]){font-size:24px}.range-slider{position:relative;-ms-flex:1;flex:1;width:100%;height:var(--height);contain:size layout style;cursor:-webkit-grab;cursor:grab;-ms-touch-action:pan-y;touch-action:pan-y}:host(.range-pressed) .range-slider{cursor:-webkit-grabbing;cursor:grabbing}.range-pin{position:absolute;background:var(--ion-color-base);color:var(--ion-color-contrast);text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}.range-knob-handle{top:calc((var(--height) - var(--knob-handle-size)) / 2);-webkit-margin-start:calc(0px - var(--knob-handle-size) / 2);margin-inline-start:calc(0px - var(--knob-handle-size) / 2);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-pack:center;justify-content:center;width:var(--knob-handle-size);height:var(--knob-handle-size);text-align:center}.range-knob-handle{inset-inline-start:0}:host-context([dir=rtl]) .range-knob-handle{left:unset}[dir=rtl] .range-knob-handle{left:unset}@supports selector(:dir(rtl)){.range-knob-handle:dir(rtl){left:unset}}.range-knob-handle:active,.range-knob-handle:focus{outline:none}.range-bar-container{border-radius:var(--bar-border-radius);top:calc((var(--height) - var(--bar-height)) / 2);position:absolute;width:100%;height:var(--bar-height)}.range-bar-container{inset-inline-start:0}:host-context([dir=rtl]) .range-bar-container{left:unset}[dir=rtl] .range-bar-container{left:unset}@supports selector(:dir(rtl)){.range-bar-container:dir(rtl){left:unset}}.range-bar{border-radius:var(--bar-border-radius);position:absolute;width:100%;height:var(--bar-height);background:var(--bar-background);pointer-events:none}.range-knob{border-radius:var(--knob-border-radius);top:calc(50% - var(--knob-size) / 2);position:absolute;width:var(--knob-size);height:var(--knob-size);background:var(--knob-background);-webkit-box-shadow:var(--knob-box-shadow);box-shadow:var(--knob-box-shadow);z-index:2;pointer-events:none}.range-knob{inset-inline-start:calc(50% - var(--knob-size) / 2)}:host-context([dir=rtl]) .range-knob{left:unset}[dir=rtl] .range-knob{left:unset}@supports selector(:dir(rtl)){.range-knob:dir(rtl){left:unset}}:host(.range-pressed) .range-bar-active{will-change:left, right}:host(.in-item){width:100%}:host([slot=start]),:host([slot=end]){width:auto}:host(.in-item) ::slotted(ion-label){-ms-flex-item-align:center;align-self:center}.range-wrapper{display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;height:inherit}::slotted([slot=label]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}:host(.range-label-placement-start) .range-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.range-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-end) .range-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.range-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.range-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.range-label-placement-stacked) .range-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch}:host(.range-label-placement-stacked) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top;-webkit-transform:scale(0.75);transform:scale(0.75);margin-left:0;margin-right:0;margin-bottom:16px;max-width:calc(100% / 0.75)}:host-context([dir=rtl]):host(.range-label-placement-stacked) .label-text-wrapper,:host-context([dir=rtl]).range-label-placement-stacked .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){:host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}}:host(.in-item.range-label-placement-stacked) .label-text-wrapper{margin-top:10px;margin-bottom:16px}:host(.in-item.range-label-placement-stacked) .native-wrapper{margin-bottom:0px}:host{--knob-border-radius:50%;--knob-background:var(--bar-background-active);--knob-box-shadow:none;--knob-size:18px;--bar-height:2px;--bar-background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.26);--bar-background-active:var(--ion-color-primary, #0054e9);--bar-border-radius:0;--height:42px;--pin-background:var(--ion-color-primary, #0054e9);--pin-color:var(--ion-color-primary-contrast, #fff)}::slotted(:not(ion-icon)[slot=start]),::slotted(:not(ion-icon)[slot=end]),.native-wrapper{font-size:0.75rem}:host(.range-item-start-adjustment){-webkit-padding-start:18px;padding-inline-start:18px}:host(.range-item-end-adjustment){-webkit-padding-end:18px;padding-inline-end:18px}:host(.ion-color) .range-bar{background:rgba(var(--ion-color-base-rgb), 0.26)}:host(.ion-color) .range-bar-active,:host(.ion-color) .range-knob,:host(.ion-color) .range-knob::before,:host(.ion-color) .range-pin,:host(.ion-color) .range-pin::before,:host(.ion-color) .range-tick{background:var(--ion-color-base);color:var(--ion-color-contrast)}::slotted([slot=start]){-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:14px;margin-inline-end:14px;margin-top:0;margin-bottom:0}::slotted([slot=end]){-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.range-has-pin:not(.range-label-placement-stacked)){padding-top:1.75rem}:host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper{margin-bottom:1.75rem}.range-bar-active{bottom:0;width:auto;background:var(--bar-background-active)}.range-knob{-webkit-transform:scale(0.67);transform:scale(0.67);-webkit-transition-duration:120ms;transition-duration:120ms;-webkit-transition-property:background-color, border, -webkit-transform;transition-property:background-color, border, -webkit-transform;transition-property:transform, background-color, border;transition-property:transform, background-color, border, -webkit-transform;-webkit-transition-timing-function:ease;transition-timing-function:ease;z-index:2}.range-knob::before{border-radius:50%;position:absolute;width:var(--knob-size);height:var(--knob-size);-webkit-transform:scale(1);transform:scale(1);-webkit-transition:0.267s cubic-bezier(0, 0, 0.58, 1);transition:0.267s cubic-bezier(0, 0, 0.58, 1);background:var(--knob-background);content:"";opacity:0.13;pointer-events:none}.range-knob::before{inset-inline-start:0}.range-tick{position:absolute;top:calc((var(--height) - var(--bar-height)) / 2);width:var(--bar-height);height:var(--bar-height);background:var(--bar-background-active);z-index:1;pointer-events:none}.range-tick-active{background:transparent}.range-pin{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:8px;border-radius:50%;-webkit-transform:translate3d(0, 0, 0) scale(0.01);transform:translate3d(0, 0, 0) scale(0.01);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:1.75rem;height:1.75rem;-webkit-transition:background 120ms ease, -webkit-transform 120ms ease;transition:background 120ms ease, -webkit-transform 120ms ease;transition:transform 120ms ease, background 120ms ease;transition:transform 120ms ease, background 120ms ease, -webkit-transform 120ms ease;background:var(--pin-background);color:var(--pin-color)}.range-pin::before{bottom:-1px;-webkit-margin-start:-13px;margin-inline-start:-13px;border-radius:50% 50% 50% 0;position:absolute;width:26px;height:26px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transition:background 120ms ease;transition:background 120ms ease;background:var(--pin-background);content:"";z-index:-1}.range-pin::before{inset-inline-start:50%}:host-context([dir=rtl]) .range-pin::before{left:unset}[dir=rtl] .range-pin::before{left:unset}@supports selector(:dir(rtl)){.range-pin::before:dir(rtl){left:unset}}.range-knob-pressed .range-pin,.range-knob-handle.ion-focused .range-pin{-webkit-transform:translate3d(0, calc(-100% + 4px), 0) scale(1);transform:translate3d(0, calc(-100% + 4px), 0) scale(1)}@media (any-hover: hover){.range-knob-handle:hover .range-knob:before{-webkit-transform:scale(2);transform:scale(2);opacity:0.13}}.range-knob-handle.ion-activated .range-knob:before,.range-knob-handle.ion-focused .range-knob:before,.range-knob-handle.range-knob-pressed .range-knob:before{-webkit-transform:scale(2);transform:scale(2)}.range-knob-handle.ion-focused .range-knob::before{opacity:0.13}.range-knob-handle.ion-activated .range-knob::before,.range-knob-handle.range-knob-pressed .range-knob::before{opacity:0.25}:host(:not(.range-has-pin)) .range-knob-pressed .range-knob,:host(:not(.range-has-pin)) .range-knob-handle.ion-focused .range-knob{-webkit-transform:scale(1);transform:scale(1)}:host(.range-disabled) .range-bar-active,:host(.range-disabled) .range-bar,:host(.range-disabled) .range-tick{background-color:var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf))}:host(.range-disabled) .range-knob{-webkit-transform:scale(0.55);transform:scale(0.55);outline:5px solid #fff;background-color:var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf))}:host(.range-disabled) .label-text-wrapper,:host(.range-disabled) ::slotted([slot=start]),:host(.range-disabled) ::slotted([slot=end]){opacity:0.38}'}}},[289,"ion-range",{color:[513],debounce:[2],name:[1],label:[1],dualKnobs:[4,"dual-knobs"],min:[2],max:[2],pin:[4],pinFormatter:[16],snaps:[4],step:[2],ticks:[4],activeBarStart:[1026,"active-bar-start"],disabled:[4],value:[1026],labelPlacement:[1,"label-placement"],ratioA:[32],ratioB:[32],activatedKnob:[32],focusedKnob:[32],hoveredKnob:[32],pressedKnob:[32]},void 0,{debounce:[{debounceChanged:0}],min:[{minChanged:0}],max:[{maxChanged:0}],step:[{stepChanged:0}],activeBarStart:[{activeBarStartChanged:0}],disabled:[{disabledChanged:0}],value:[{valueChanged:0}]}]),v=(e,{knob:t,position:a,dualKnobs:n,value:i,ratio:o,min:s,max:l,disabled:d,activated:h,focused:b,hovered:c,pressed:g,pin:p,handleKeyboard:m,pinFormatter:u,inheritedAttributes:k,onKnobFocus:f,onKnobBlur:x,onKnobMouseEnter:v,onKnobMouseLeave:w})=>{const y=e?"right":"left",z=k["aria-label"];return r("div",{onKeyDown:e=>{const a=e.key;"ArrowLeft"===a||"ArrowDown"===a?(m(t,!1),e.preventDefault(),e.stopPropagation()):"ArrowRight"!==a&&"ArrowUp"!==a||(m(t,!0),e.preventDefault(),e.stopPropagation())},onFocus:()=>f(t),onBlur:x,onMouseEnter:()=>v(t),onMouseLeave:w,class:{"range-knob-handle":!0,"range-knob-handle-a":"A"===t,"range-knob-handle-b":"B"===t,"range-knob-pressed":g,"range-knob-min":i===s,"range-knob-max":i===l,"ion-activatable":!0,"ion-focusable":!0,"ion-focused":b},part:["knob-handle",n&&"A"===t&&"knob-handle-a",n&&"B"===t&&"knob-handle-b",n&&"lower"===a&&"knob-handle-lower",n&&"upper"===a&&"knob-handle-upper",g&&"pressed",b&&"focused",c&&"hover",h&&"activated"].filter(Boolean).join(" "),style:(()=>{const e={};return e[y]=100*o+"%",e})(),role:"slider",tabindex:d?-1:0,"aria-label":void 0!==z?z:null,"aria-labelledby":void 0===z?"range-label":null,"aria-valuemin":s,"aria-valuemax":l,"aria-disabled":d?"true":null,"aria-valuenow":i},p&&r("div",{class:"range-pin",role:"presentation",part:["pin",n&&"A"===t&&"pin-a",n&&"B"===t&&"pin-b",n&&"lower"===a&&"pin-lower",n&&"upper"===a&&"pin-upper",g&&"pressed",b&&"focused",c&&"hover",h&&"activated"].filter(Boolean).join(" ")},u(i)),r("div",{class:"range-knob",role:"presentation",part:["knob",n&&"A"===t&&"knob-a",n&&"B"===t&&"knob-b",n&&"lower"===a&&"knob-lower",n&&"upper"===a&&"knob-upper",g&&"pressed",b&&"focused",c&&"hover",h&&"activated"].filter(Boolean).join(" ")}))},w=(e,t,a,n)=>n?t===a?"A"===e?"lower":"upper":"A"===e?t<a?"lower":"upper":a<t?"lower":"upper":"lower",y=(e,t,a,n)=>{let r=(a-t)*e;return n>0&&(r=Math.round(r/n)*n+t),function(e,...t){if(!h(e))return 0;const a=Math.max(...t.map((e=>function(e){return h(e)?e%1==0?0:(""+e).split(".")[1].length:0}(e))));return Number(e.toFixed(a))}(b(t,r,a),t,a,n)},z=(e,t,a)=>b(0,(e-t)/(a-t),1);let B=0;const K=x,C=function(){"undefined"!=typeof customElements&&["ion-range"].forEach((e=>{"ion-range"===e&&(customElements.get(o(e))||customElements.define(o(e),x))}))};export{K as IonRange,C as defineCustomElement}