@ionic/core 8.7.19-dev.11772655618.1af0949f → 8.7.19-dev.11773072221.15efeed0

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 +0 -2
  2. package/components/index.js +114 -1
  3. package/components/ion-accordion-group.js +268 -1
  4. package/components/ion-accordion.js +456 -1
  5. package/components/ion-action-sheet.js +6 -1
  6. package/components/ion-alert.js +6 -1
  7. package/components/ion-app.js +132 -1
  8. package/components/ion-avatar.js +41 -1
  9. package/components/ion-back-button.js +130 -1
  10. package/components/ion-backdrop.js +6 -1
  11. package/components/ion-badge.js +47 -1
  12. package/components/ion-breadcrumb.js +137 -1
  13. package/components/ion-breadcrumbs.js +164 -1
  14. package/components/ion-button.js +6 -1
  15. package/components/ion-buttons.js +6 -1
  16. package/components/ion-card-content.js +45 -1
  17. package/components/ion-card-header.js +56 -1
  18. package/components/ion-card-subtitle.js +48 -1
  19. package/components/ion-card-title.js +48 -1
  20. package/components/ion-card.js +107 -1
  21. package/components/ion-checkbox.js +6 -1
  22. package/components/ion-chip.js +66 -1
  23. package/components/ion-col.js +163 -1
  24. package/components/ion-content.js +6 -1
  25. package/components/ion-datetime-button.js +383 -1
  26. package/components/ion-datetime.js +2047 -1
  27. package/components/ion-fab-button.js +151 -1
  28. package/components/ion-fab-list.js +73 -1
  29. package/components/ion-fab.js +101 -1
  30. package/components/ion-footer.js +179 -1
  31. package/components/ion-grid.js +46 -1
  32. package/components/ion-header.js +6 -1
  33. package/components/ion-icon.js +6 -1
  34. package/components/ion-img.js +133 -1
  35. package/components/ion-infinite-scroll-content.js +69 -1
  36. package/components/ion-infinite-scroll.js +236 -1
  37. package/components/ion-input-otp.js +682 -1
  38. package/components/ion-input-password-toggle.js +128 -1
  39. package/components/ion-input.js +646 -1
  40. package/components/ion-item-divider.js +59 -1
  41. package/components/ion-item-group.js +46 -1
  42. package/components/ion-item-option.js +91 -1
  43. package/components/ion-item-options.js +73 -1
  44. package/components/ion-item-sliding.js +457 -1
  45. package/components/ion-item.js +6 -1
  46. package/components/ion-label.js +6 -1
  47. package/components/ion-list-header.js +6 -1
  48. package/components/ion-list.js +6 -1
  49. package/components/ion-loading.js +343 -1
  50. package/components/ion-menu-button.js +109 -1
  51. package/components/ion-menu-toggle.js +64 -1
  52. package/components/ion-menu.js +741 -1
  53. package/components/ion-modal.js +6 -1
  54. package/components/ion-nav-link.js +64 -1
  55. package/components/ion-nav.js +951 -1
  56. package/components/ion-note.js +47 -1
  57. package/components/ion-picker-column-option.js +6 -1
  58. package/components/ion-picker-column.js +6 -1
  59. package/components/ion-picker-legacy-column.js +6 -1
  60. package/components/ion-picker-legacy.js +342 -1
  61. package/components/ion-picker.js +6 -1
  62. package/components/ion-popover.js +6 -1
  63. package/components/ion-progress-bar.js +100 -1
  64. package/components/ion-radio-group.js +6 -1
  65. package/components/ion-radio.js +6 -1
  66. package/components/ion-range.js +844 -1
  67. package/components/ion-refresher-content.js +88 -1
  68. package/components/ion-refresher.js +750 -1
  69. package/components/ion-reorder-group.js +322 -1
  70. package/components/ion-reorder.js +60 -1
  71. package/components/ion-ripple-effect.js +6 -1
  72. package/components/ion-route-redirect.js +45 -1
  73. package/components/ion-route.js +74 -1
  74. package/components/ion-router-link.js +61 -1
  75. package/components/ion-router-outlet.js +226 -1
  76. package/components/ion-router.js +840 -1
  77. package/components/ion-row.js +36 -1
  78. package/components/ion-searchbar.js +540 -1
  79. package/components/ion-segment-button.js +173 -1
  80. package/components/ion-segment-content.js +35 -1
  81. package/components/ion-segment-view.js +142 -1
  82. package/components/ion-segment.js +602 -1
  83. package/components/ion-select-modal.js +6 -1
  84. package/components/ion-select-option.js +46 -1
  85. package/components/ion-select-popover.js +6 -1
  86. package/components/ion-select.js +1035 -1
  87. package/components/ion-skeleton-text.js +64 -1
  88. package/components/ion-spinner.js +6 -1
  89. package/components/ion-split-pane.js +190 -1
  90. package/components/ion-tab-bar.js +135 -1
  91. package/components/ion-tab-button.js +127 -1
  92. package/components/ion-tab.js +82 -1
  93. package/components/ion-tabs.js +204 -1
  94. package/components/ion-text.js +42 -1
  95. package/components/ion-textarea.js +554 -1
  96. package/components/ion-thumbnail.js +36 -1
  97. package/components/ion-title.js +6 -1
  98. package/components/ion-toast.js +938 -1
  99. package/components/ion-toggle.js +360 -1
  100. package/components/ion-toolbar.js +6 -1
  101. package/components/p-B-hirT0v.js +35 -1
  102. package/components/p-B25GjpND.js +71 -0
  103. package/components/p-BANeLH_G.js +290 -0
  104. package/components/p-BBFQmhcD.js +59 -0
  105. package/components/p-BC-awmYt.js +306 -0
  106. package/components/p-BHbOsu99.js +501 -0
  107. package/components/p-BTEOs1at.js +192 -1
  108. package/components/p-BTlwXR9e.js +73 -0
  109. package/components/p-BcazQttQ.js +612 -0
  110. package/components/p-BdGshsIJ.js +226 -0
  111. package/components/p-BfS7vSpC.js +147 -0
  112. package/components/p-BhRFCLuX.js +675 -0
  113. package/components/p-Bhnhnzjz.js +75 -0
  114. package/components/p-BmVRXR1y.js +72 -1
  115. package/components/p-BmcqD0EN.js +153 -0
  116. package/components/p-Boi6hecl.js +115 -0
  117. package/components/p-Bt_moUyl.js +232 -0
  118. package/components/p-Bxl5etF4.js +146 -0
  119. package/components/p-ByjmWt3s.js +139 -0
  120. package/components/p-C04oPyjT.js +54 -0
  121. package/components/p-C53feagD.js +15 -1
  122. package/components/p-C6dkQWq2.js +1626 -0
  123. package/components/p-CFZWrvIQ.js +194 -0
  124. package/components/p-CIGNaXM1.js +10 -1
  125. package/{dist/esm/config-TO1rZH52.js → components/p-CIJwkzL6.js} +1 -1
  126. package/components/p-CL12ApCQ.js +820 -0
  127. package/components/p-CO7fmmxt.js +29 -1
  128. package/components/p-CXJR56Oq.js +564 -0
  129. package/components/p-Cdm3dKWf.js +108 -0
  130. package/components/p-Cl0B-RWe.js +452 -1
  131. package/components/p-CslsoGzv.js +192 -0
  132. package/components/p-CtWGkNnJ.js +162 -1
  133. package/components/p-Cyd00tgZ.js +167 -0
  134. package/components/p-CzAJ3ArC.js +380 -0
  135. package/components/p-CzW34QBh.js +12 -0
  136. package/components/p-D0zXRwcr.js +196 -0
  137. package/components/p-D13Eaw-8.js +76 -1
  138. package/components/p-D5hF6rwn.js +339 -0
  139. package/components/p-D6Ynv7Xh.js +141 -1
  140. package/components/p-D8eD2iBA.js +67 -0
  141. package/components/p-DGOrLIyS.js +481 -0
  142. package/components/p-DJztqcrH.js +14 -1
  143. package/components/p-DK2Bn1Mc.js +305 -0
  144. package/components/p-DKRQWlK2.js +598 -0
  145. package/components/p-DNDUsygf.js +128 -0
  146. package/components/p-DTWZF6wg.js +418 -0
  147. package/components/p-DWoUQeZ3.js +3012 -0
  148. package/components/p-DX0w75a9.js +420 -0
  149. package/components/p-DiVJyqlX.js +40 -1
  150. package/components/p-Dt8zaCLQ.js +92 -0
  151. package/components/p-Dtdm8lKC.js +44 -1
  152. package/components/p-DyFBFrV7.js +264 -0
  153. package/components/p-DyHPCMyn.js +39 -0
  154. package/components/p-LgLeKTkH.js +112 -0
  155. package/components/p-NhiRFRn9.js +50 -0
  156. package/components/p-OuiHmXO5.js +646 -0
  157. package/components/p-Wro9IPHE.js +459 -0
  158. package/components/p-ZjP4CjeZ.js +4 -1
  159. package/components/p-aIWC4ZEV.js +305 -0
  160. package/components/p-c-XJ9XhZ.js +915 -0
  161. package/components/p-cyNmxje6.js +155 -1
  162. package/components/p-fVuFT3Wd.js +78 -0
  163. package/components/p-hHmYLOfE.js +87 -1
  164. package/components/p-iyo0Toaz.js +2822 -0
  165. package/{dist/esm/framework-delegate-CyxE1S_P.js → components/p-l_lso3Zl.js} +1 -1
  166. package/components/p-mQp4lwQD.js +1638 -0
  167. package/dist/cjs/{animation-Dg4yiuR2.js → animation-Bt3H9L1C.js} +1 -1
  168. package/dist/cjs/app-globals-Ciccnk9_.js +10 -0
  169. package/dist/cjs/{button-active-FscMI17-.js → button-active-CMc8cD90.js} +1 -1
  170. package/dist/cjs/{config-BukYi_pW.js → config-C5fsO43a.js} +1 -1
  171. package/dist/cjs/{data-BYlBjkMU.js → data-JwZKaIQB.js} +1 -1
  172. package/dist/cjs/{framework-delegate-CRgp8o_p.js → framework-delegate-DMJRBuDi.js} +1 -1
  173. package/dist/cjs/{hardware-back-button-C4rMJ5uI.js → hardware-back-button-VCK4V3mG.js} +1 -1
  174. package/dist/cjs/{helpers-CxTYJdbT.js → helpers-DrTqNghc.js} +1 -1
  175. package/dist/cjs/{index-C845Ti6K.js → index-094mMFB-.js} +4 -4
  176. package/dist/cjs/{index-YcSftOMz.js → index-C534ULug.js} +2 -2
  177. package/dist/cjs/{index-MbaBbWXk.js → index-CO6eryBo.js} +2 -2
  178. package/dist/cjs/{index-CqT-2gKy.js → index-D6Wc6v08.js} +382 -503
  179. package/dist/cjs/{index-CFUwM5x_.js → index-DrMUZJj6.js} +5 -5
  180. package/dist/cjs/index.cjs.js +12 -12
  181. package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-CuMghsQ-.js} +3 -3
  182. package/dist/cjs/{input.utils-DmeJ8dmo.js → input.utils-B_QROI2g.js} +2 -2
  183. package/dist/cjs/ion-accordion_2.cjs.entry.js +15 -23
  184. package/dist/cjs/ion-action-sheet.cjs.entry.js +15 -21
  185. package/dist/cjs/ion-alert.cjs.entry.js +17 -25
  186. package/dist/cjs/ion-app_8.cjs.entry.js +43 -48
  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 +14 -20
  191. package/dist/cjs/ion-button_2.cjs.entry.js +18 -36
  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 +46 -75
  198. package/dist/cjs/ion-fab_3.cjs.entry.js +13 -17
  199. package/dist/cjs/ion-img.cjs.entry.js +6 -8
  200. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +13 -17
  201. package/dist/cjs/ion-input-otp.cjs.entry.js +10 -16
  202. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +7 -9
  203. package/dist/cjs/ion-input.cjs.entry.js +13 -21
  204. package/dist/cjs/ion-item-option_3.cjs.entry.js +17 -19
  205. package/dist/cjs/ion-item_8.cjs.entry.js +42 -48
  206. package/dist/cjs/ion-loading.cjs.entry.js +14 -18
  207. package/dist/cjs/ion-menu_3.cjs.entry.js +22 -30
  208. package/dist/cjs/ion-modal.cjs.entry.js +59 -237
  209. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -14
  210. package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -10
  211. package/dist/cjs/ion-picker-column.cjs.entry.js +7 -11
  212. package/dist/cjs/ion-picker.cjs.entry.js +6 -6
  213. package/dist/cjs/ion-popover.cjs.entry.js +15 -21
  214. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -7
  215. package/dist/cjs/ion-radio_2.cjs.entry.js +13 -17
  216. package/dist/cjs/ion-range.cjs.entry.js +57 -205
  217. package/dist/cjs/ion-refresher_2.cjs.entry.js +14 -45
  218. package/dist/cjs/ion-reorder_2.cjs.entry.js +11 -13
  219. package/dist/cjs/ion-ripple-effect.cjs.entry.js +4 -4
  220. package/dist/cjs/ion-route_4.cjs.entry.js +10 -20
  221. package/dist/cjs/ion-searchbar.cjs.entry.js +12 -22
  222. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  223. package/dist/cjs/ion-segment-view.cjs.entry.js +8 -13
  224. package/dist/cjs/ion-segment_2.cjs.entry.js +16 -26
  225. package/dist/cjs/ion-select-modal.cjs.entry.js +13 -17
  226. package/dist/cjs/ion-select_3.cjs.entry.js +24 -33
  227. package/dist/cjs/ion-spinner.cjs.entry.js +4 -4
  228. package/dist/cjs/ion-split-pane.cjs.entry.js +9 -15
  229. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +12 -14
  230. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -10
  231. package/dist/cjs/ion-text.cjs.entry.js +4 -4
  232. package/dist/cjs/ion-textarea.cjs.entry.js +14 -20
  233. package/dist/cjs/ion-toast.cjs.entry.js +15 -21
  234. package/dist/cjs/ion-toggle.cjs.entry.js +8 -10
  235. package/dist/cjs/{ionic-global-Bc3kJi1Z.js → ionic-global-HMVqOFGO.js} +1 -1
  236. package/dist/cjs/ionic.cjs.js +5 -5
  237. package/dist/cjs/{ios.transition-trBiC95R.js → ios.transition-BOt_uW73.js} +4 -4
  238. package/dist/cjs/loader.cjs.js +4 -4
  239. package/dist/cjs/{md.transition-CUQECuvD.js → md.transition-Dt968VXB.js} +4 -4
  240. package/dist/cjs/{notch-controller-sD-lTpdc.js → notch-controller-Bzqhjm4f.js} +1 -1
  241. package/dist/cjs/{overlays-C2jiBSNQ.js → overlays-B2b-TTbl.js} +5 -5
  242. package/dist/cjs/{status-tap-CCJk5VgT.js → status-tap-g0sWWkXk.js} +3 -3
  243. package/dist/cjs/{swipe-back-BGhTQ1CU.js → swipe-back-BIayeNOD.js} +2 -2
  244. package/dist/collection/collection-manifest.json +2 -2
  245. package/dist/collection/components/accordion-group/accordion-group.js +2 -4
  246. package/dist/collection/components/action-sheet/action-sheet.js +10 -20
  247. package/dist/collection/components/alert/alert.js +12 -24
  248. package/dist/collection/components/back-button/back-button.js +2 -4
  249. package/dist/collection/components/badge/badge.js +1 -2
  250. package/dist/collection/components/breadcrumb/breadcrumb.js +4 -8
  251. package/dist/collection/components/breadcrumbs/breadcrumbs.js +2 -4
  252. package/dist/collection/components/button/button.js +3 -6
  253. package/dist/collection/components/card/card.js +3 -6
  254. package/dist/collection/components/card-header/card-header.js +1 -2
  255. package/dist/collection/components/card-subtitle/card-subtitle.js +1 -2
  256. package/dist/collection/components/card-title/card-title.js +1 -2
  257. package/dist/collection/components/checkbox/checkbox.js +2 -4
  258. package/dist/collection/components/chip/chip.js +1 -2
  259. package/dist/collection/components/content/content.js +7 -12
  260. package/dist/collection/components/datetime/datetime.js +22 -43
  261. package/dist/collection/components/datetime-button/datetime-button.js +1 -2
  262. package/dist/collection/components/fab-button/fab-button.js +3 -6
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -4
  264. package/dist/collection/components/input/input.js +6 -11
  265. package/dist/collection/components/input-otp/input-otp.js +4 -8
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +2 -4
  267. package/dist/collection/components/item/item.js +5 -10
  268. package/dist/collection/components/item-divider/item-divider.js +3 -7
  269. package/dist/collection/components/item-option/item-option.js +3 -6
  270. package/dist/collection/components/item-options/item-options.js +1 -2
  271. package/dist/collection/components/item-sliding/item-sliding.js +1 -2
  272. package/dist/collection/components/label/label.js +3 -6
  273. package/dist/collection/components/list-header/list-header.js +3 -6
  274. package/dist/collection/components/loading/loading.js +11 -22
  275. package/dist/collection/components/menu/menu.js +5 -10
  276. package/dist/collection/components/menu-button/menu-button.js +1 -2
  277. package/dist/collection/components/modal/gestures/sheet.js +12 -120
  278. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -54
  279. package/dist/collection/components/modal/modal.js +45 -127
  280. package/dist/collection/components/nav/nav.js +45 -89
  281. package/dist/collection/components/nav-link/nav-link.js +5 -9
  282. package/dist/collection/components/note/note.js +1 -2
  283. package/dist/collection/components/picker/picker.js +1 -2
  284. package/dist/collection/components/picker-column/picker-column.js +3 -6
  285. package/dist/collection/components/picker-column-option/picker-column-option.js +1 -2
  286. package/dist/collection/components/picker-legacy/picker.js +12 -24
  287. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -4
  288. package/dist/collection/components/popover/popover.js +17 -33
  289. package/dist/collection/components/progress-bar/progress-bar.js +1 -2
  290. package/dist/collection/components/radio/radio.js +1 -2
  291. package/dist/collection/components/radio-group/radio-group.js +3 -6
  292. package/dist/collection/components/range/range.js +53 -214
  293. package/dist/collection/components/refresher/refresher.js +5 -73
  294. package/dist/collection/components/refresher-content/refresher-content.js +4 -8
  295. package/dist/collection/components/reorder-group/reorder-group.js +3 -6
  296. package/dist/collection/components/route/route.js +2 -4
  297. package/dist/collection/components/router/router.js +5 -10
  298. package/dist/collection/components/router-link/router-link.js +3 -6
  299. package/dist/collection/components/router-outlet/router-outlet.js +9 -18
  300. package/dist/collection/components/searchbar/searchbar.js +6 -11
  301. package/dist/collection/components/segment/segment.js +5 -10
  302. package/dist/collection/components/segment-button/segment-button.js +2 -4
  303. package/dist/collection/components/segment-view/segment-view.ios.css +1 -2
  304. package/dist/collection/components/segment-view/segment-view.js +4 -30
  305. package/dist/collection/components/segment-view/segment-view.md.css +1 -2
  306. package/dist/collection/components/select/select.js +8 -17
  307. package/dist/collection/components/select-modal/select-modal.js +2 -27
  308. package/dist/collection/components/select-popover/select-popover.js +1 -2
  309. package/dist/collection/components/skeleton-text/skeleton-text.js +1 -2
  310. package/dist/collection/components/spinner/spinner.js +2 -4
  311. package/dist/collection/components/tab/tab.js +2 -4
  312. package/dist/collection/components/tab-bar/tab-bar.js +2 -4
  313. package/dist/collection/components/tab-button/tab-button.js +2 -4
  314. package/dist/collection/components/tabs/tabs.js +2 -4
  315. package/dist/collection/components/text/text.js +1 -2
  316. package/dist/collection/components/textarea/textarea.js +7 -10
  317. package/dist/collection/components/title/title.js +2 -4
  318. package/dist/collection/components/toast/toast.js +17 -34
  319. package/dist/collection/components/toggle/toggle.js +2 -4
  320. package/dist/collection/components/toolbar/toolbar.js +1 -2
  321. package/dist/docs.d.ts +0 -37
  322. package/dist/docs.json +389 -1186
  323. package/dist/esm/{animation-CnGMT4ji.js → animation-Dt8bGnA-.js} +1 -1
  324. package/dist/esm/app-globals-BDSf8fOA.js +8 -0
  325. package/dist/esm/{button-active-BBx21brx.js → button-active-L570Swow.js} +1 -1
  326. package/dist/esm/config-mCdtaoPe.js +195 -0
  327. package/dist/esm/{data-B9iGR5YO.js → data-DCORV9FH.js} +1 -1
  328. package/dist/esm/framework-delegate-BYawdMXj.js +140 -0
  329. package/dist/esm/{hardware-back-button-CTe4XmL7.js → hardware-back-button-CPLxO-Ev.js} +1 -1
  330. package/dist/esm/{helpers-Tl8jw6S2.js → helpers-DEn3pfjm.js} +1 -1
  331. package/dist/esm/{index-hW6eNZ3o.js → index-Bs3kT4bc.js} +2 -2
  332. package/dist/esm/{index-IGIE5vDm.js → index-C8IsBmNU.js} +382 -503
  333. package/dist/esm/{index-B2KwgBLx.js → index-CvDIirVx.js} +5 -5
  334. package/dist/esm/{index-BtUdxPjv.js → index-ceb5RaMT.js} +2 -2
  335. package/dist/esm/{index-B-hkiOUh.js → index-r2D9DEro.js} +4 -4
  336. package/dist/esm/index.js +12 -12
  337. package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-D6H3ZaWt.js} +3 -3
  338. package/dist/esm/{input.utils-Bxa_DQ7-.js → input.utils-DrvTa8gz.js} +2 -2
  339. package/dist/esm/ion-accordion_2.entry.js +15 -23
  340. package/dist/esm/ion-action-sheet.entry.js +15 -21
  341. package/dist/esm/ion-alert.entry.js +17 -25
  342. package/dist/esm/ion-app_8.entry.js +43 -48
  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 +14 -20
  347. package/dist/esm/ion-button_2.entry.js +18 -36
  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 +46 -75
  354. package/dist/esm/ion-fab_3.entry.js +13 -17
  355. package/dist/esm/ion-img.entry.js +6 -8
  356. package/dist/esm/ion-infinite-scroll_2.entry.js +13 -17
  357. package/dist/esm/ion-input-otp.entry.js +10 -16
  358. package/dist/esm/ion-input-password-toggle.entry.js +7 -9
  359. package/dist/esm/ion-input.entry.js +13 -21
  360. package/dist/esm/ion-item-option_3.entry.js +17 -19
  361. package/dist/esm/ion-item_8.entry.js +42 -48
  362. package/dist/esm/ion-loading.entry.js +14 -18
  363. package/dist/esm/ion-menu_3.entry.js +22 -30
  364. package/dist/esm/ion-modal.entry.js +59 -237
  365. package/dist/esm/ion-nav_2.entry.js +10 -14
  366. package/dist/esm/ion-picker-column-option.entry.js +8 -10
  367. package/dist/esm/ion-picker-column.entry.js +7 -11
  368. package/dist/esm/ion-picker.entry.js +6 -6
  369. package/dist/esm/ion-popover.entry.js +15 -21
  370. package/dist/esm/ion-progress-bar.entry.js +7 -7
  371. package/dist/esm/ion-radio_2.entry.js +13 -17
  372. package/dist/esm/ion-range.entry.js +57 -205
  373. package/dist/esm/ion-refresher_2.entry.js +14 -45
  374. package/dist/esm/ion-reorder_2.entry.js +11 -13
  375. package/dist/esm/ion-ripple-effect.entry.js +4 -4
  376. package/dist/esm/ion-route_4.entry.js +10 -20
  377. package/dist/esm/ion-searchbar.entry.js +12 -22
  378. package/dist/esm/ion-segment-content.entry.js +3 -3
  379. package/dist/esm/ion-segment-view.entry.js +8 -13
  380. package/dist/esm/ion-segment_2.entry.js +16 -26
  381. package/dist/esm/ion-select-modal.entry.js +13 -17
  382. package/dist/esm/ion-select_3.entry.js +24 -33
  383. package/dist/esm/ion-spinner.entry.js +4 -4
  384. package/dist/esm/ion-split-pane.entry.js +9 -15
  385. package/dist/esm/ion-tab-bar_2.entry.js +12 -14
  386. package/dist/esm/ion-tab_2.entry.js +8 -10
  387. package/dist/esm/ion-text.entry.js +4 -4
  388. package/dist/esm/ion-textarea.entry.js +14 -20
  389. package/dist/esm/ion-toast.entry.js +15 -21
  390. package/dist/esm/ion-toggle.entry.js +8 -10
  391. package/dist/esm/{ionic-global-DfbeLwcV.js → ionic-global-CDrldh-5.js} +1 -1
  392. package/dist/esm/ionic.js +6 -6
  393. package/dist/esm/{ios.transition--aMF-pDH.js → ios.transition-BDzw0_Hm.js} +4 -4
  394. package/dist/esm/loader.js +5 -5
  395. package/dist/esm/{md.transition-BEVbfm8j.js → md.transition-BzDYi3qq.js} +4 -4
  396. package/dist/esm/{notch-controller-DAcvKU57.js → notch-controller-BwelN_JM.js} +1 -1
  397. package/dist/esm/{overlays-F8GHPo-e.js → overlays-D5YkFThA.js} +5 -5
  398. package/dist/esm/{status-tap-BfJqFSLF.js → status-tap-5DQ7Fc4V.js} +3 -3
  399. package/dist/esm/{swipe-back-BZBFwTQV.js → swipe-back-BKw2CAHc.js} +2 -2
  400. package/dist/html.html-data.json +109 -117
  401. package/dist/ionic/index.esm.js +1 -1
  402. package/dist/ionic/ionic.esm.js +1 -1
  403. package/dist/ionic/{p-f2deaceb.entry.js → p-0ca0fe9c.entry.js} +1 -1
  404. package/dist/ionic/p-11518b31.entry.js +4 -0
  405. package/dist/ionic/{p-80cac7a2.entry.js → p-11aa58d6.entry.js} +1 -1
  406. package/dist/ionic/p-221a3d8c.entry.js +4 -0
  407. package/dist/ionic/{p-b325a113.entry.js → p-2668188b.entry.js} +1 -1
  408. package/dist/ionic/p-2ac254dc.entry.js +4 -0
  409. package/dist/ionic/p-2bd1ea35.entry.js +4 -0
  410. package/dist/ionic/p-30333874.entry.js +4 -0
  411. package/dist/ionic/p-31db96da.entry.js +4 -0
  412. package/dist/ionic/p-34642fa1.entry.js +4 -0
  413. package/dist/ionic/p-35696017.entry.js +4 -0
  414. package/dist/ionic/p-363d1209.entry.js +4 -0
  415. package/dist/ionic/p-46a38cfd.entry.js +4 -0
  416. package/dist/ionic/{p-301c43f8.entry.js → p-49d06882.entry.js} +1 -1
  417. package/dist/ionic/p-4eec1a5e.entry.js +4 -0
  418. package/dist/ionic/p-530fcd71.entry.js +4 -0
  419. package/dist/ionic/{p-9833cf63.entry.js → p-582824c5.entry.js} +1 -1
  420. package/dist/ionic/{p-1b169fb6.entry.js → p-5c8f7253.entry.js} +1 -1
  421. package/dist/ionic/p-5d6fb6e3.entry.js +4 -0
  422. package/dist/ionic/{p-e6cedcd7.entry.js → p-652318c3.entry.js} +1 -1
  423. package/dist/ionic/p-66fbe052.entry.js +4 -0
  424. package/dist/ionic/{p-9fae83d8.entry.js → p-675b1a31.entry.js} +1 -1
  425. package/dist/ionic/{p-bcaa827e.entry.js → p-6f37536a.entry.js} +1 -1
  426. package/dist/ionic/{p-370a60ee.entry.js → p-79bd78f9.entry.js} +1 -1
  427. package/dist/ionic/p-7babec72.entry.js +4 -0
  428. package/dist/ionic/{p-6af16209.entry.js → p-7cad388a.entry.js} +1 -1
  429. package/dist/ionic/{p-6b701daa.entry.js → p-7f98e710.entry.js} +1 -1
  430. package/dist/ionic/p-82d5bb3d.entry.js +4 -0
  431. package/dist/ionic/{p-7ca71c83.entry.js → p-906bb44d.entry.js} +1 -1
  432. package/dist/ionic/{p-23fac490.entry.js → p-915b3e3d.entry.js} +1 -1
  433. package/dist/ionic/{p-e663bc5a.entry.js → p-9575b654.entry.js} +1 -1
  434. package/dist/ionic/p-97eb0812.entry.js +4 -0
  435. package/dist/ionic/p-9b6d46f2.entry.js +4 -0
  436. package/dist/ionic/{p-DB_iPQC-.js → p-B0q1YL7N.js} +1 -1
  437. package/dist/ionic/{p-NFFyoJ4Q.js → p-BFvmZNyx.js} +1 -1
  438. package/dist/ionic/p-BKc55Xev.js +4 -0
  439. package/dist/ionic/{p-CYbRmDdy.js → p-BOVrCkpJ.js} +1 -1
  440. package/{components/p-Cy5XSfIk.js → dist/ionic/p-BYEqWnSg.js} +1 -1
  441. package/dist/ionic/p-Bmgaetn_.js +4 -0
  442. package/dist/ionic/{p-BAt5H1ac.js → p-C7hRNDhM.js} +1 -1
  443. package/dist/ionic/p-C8IsBmNU.js +5 -0
  444. package/dist/ionic/p-CJxh_yLS.js +4 -0
  445. package/dist/ionic/{p-CGmVTdWh.js → p-CTfR9YZG.js} +1 -1
  446. package/{components/p-C59ryAuS.js → dist/ionic/p-CwgG81ZD.js} +1 -1
  447. package/{components/p-BR3tZJmu.js → dist/ionic/p-D-eFFUkA.js} +1 -1
  448. package/{components/p-BS1TtEiJ.js → dist/ionic/p-D0dMcSkw.js} +1 -1
  449. package/dist/ionic/{p-DjriolRs.js → p-DCv9sLH2.js} +1 -1
  450. package/dist/ionic/{p-Bum7H1fw.js → p-DDb5r57F.js} +1 -1
  451. package/dist/ionic/{p-DLbbmF9h.js → p-DNcfiJwE.js} +1 -1
  452. package/{components/p-9VcRUwdB.js → dist/ionic/p-DUt5fQmA.js} +1 -1
  453. package/dist/ionic/p-DZRJwG4S.js +4 -0
  454. package/{components/p-BUbsoBOV.js → dist/ionic/p-DbQ5QkTP.js} +1 -1
  455. package/dist/ionic/{p-BxIcPWoV.js → p-Dc45iWE4.js} +1 -1
  456. package/{components/p-Cq8cQ0NL.js → dist/ionic/p-DdR6rpbR.js} +1 -1
  457. package/dist/ionic/{p-CYvM5g3q.js → p-MUoJJJwd.js} +1 -1
  458. package/dist/ionic/p-a4a9f5ae.entry.js +4 -0
  459. package/dist/ionic/{p-f5dfb9a3.entry.js → p-ac4eb91d.entry.js} +1 -1
  460. package/dist/ionic/{p-ca31010f.entry.js → p-b0a7585c.entry.js} +1 -1
  461. package/dist/ionic/p-b0ebf9f8.entry.js +4 -0
  462. package/dist/ionic/{p-294f4bb5.entry.js → p-b8551510.entry.js} +1 -1
  463. package/dist/ionic/{p-f8186550.entry.js → p-bce86e56.entry.js} +1 -1
  464. package/dist/ionic/p-be263062.entry.js +4 -0
  465. package/dist/ionic/p-c175d792.entry.js +4 -0
  466. package/dist/ionic/p-cc2a9936.entry.js +4 -0
  467. package/dist/ionic/p-cc45bcbc.entry.js +4 -0
  468. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  469. package/dist/ionic/{p-b440381f.entry.js → p-d1f54e28.entry.js} +1 -1
  470. package/dist/ionic/{p-a84f2d21.entry.js → p-da7d04cc.entry.js} +1 -1
  471. package/dist/ionic/p-e4c57008.entry.js +4 -0
  472. package/dist/ionic/p-e5d6d0f0.entry.js +4 -0
  473. package/dist/ionic/p-f1dfee25.entry.js +4 -0
  474. package/dist/ionic/p-f9f7b9db.entry.js +4 -0
  475. package/dist/ionic/{p-c3cce9d8.entry.js → p-fb0271ae.entry.js} +1 -1
  476. package/dist/ionic/{p-e863ffe8.entry.js → p-fbb00634.entry.js} +1 -1
  477. package/dist/types/components/datetime/datetime.d.ts +0 -10
  478. package/dist/types/components/header/header.utils.d.ts +1 -2
  479. package/dist/types/components/item/item.d.ts +0 -2
  480. package/dist/types/components/item-divider/item-divider.d.ts +0 -3
  481. package/dist/types/components/item-option/item-option.d.ts +0 -2
  482. package/dist/types/components/list-header/list-header.d.ts +0 -2
  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 +0 -25
  486. package/dist/types/components/modal/modal.d.ts +1 -22
  487. package/dist/types/components/range/range-interface.d.ts +0 -1
  488. package/dist/types/components/range/range.d.ts +4 -44
  489. package/dist/types/components/refresher/refresher-interface.d.ts +0 -7
  490. package/dist/types/components/refresher/refresher.d.ts +3 -16
  491. package/dist/types/components/segment-view/segment-view.d.ts +0 -4
  492. package/dist/types/components/select/select.d.ts +0 -3
  493. package/dist/types/components/select-modal/select-modal.d.ts +0 -4
  494. package/dist/types/components.d.ts +191 -964
  495. package/dist/types/interface.d.ts +2 -2
  496. package/dist/types/stencil-public-runtime.d.ts +14 -126
  497. package/dist/types/utils/gesture/listener.d.ts +1 -2
  498. package/hydrate/index.d.ts +0 -12
  499. package/hydrate/index.js +1421 -5632
  500. package/hydrate/index.mjs +1422 -5631
  501. package/package.json +2 -2
  502. package/components/p-1KVKSLu5.js +0 -4
  503. package/components/p-ApmKVjaE.js +0 -4
  504. package/components/p-B6FQ0cKR.js +0 -4
  505. package/components/p-B6HaBl3o.js +0 -4
  506. package/components/p-B8b1Ukl9.js +0 -4
  507. package/components/p-BFxT89Wl.js +0 -4
  508. package/components/p-BJoMtgfR.js +0 -4
  509. package/components/p-BNAG-aVv.js +0 -4
  510. package/components/p-BSB38Tek.js +0 -4
  511. package/components/p-BTeL5HCK.js +0 -4
  512. package/components/p-BVnB3eEn.js +0 -4
  513. package/components/p-BYDc3hSE.js +0 -4
  514. package/components/p-BagjAGC0.js +0 -4
  515. package/components/p-BegtE7nr.js +0 -4
  516. package/components/p-BgwEQWW6.js +0 -4
  517. package/components/p-Bk2zuNWT.js +0 -4
  518. package/components/p-Bum_LjMh.js +0 -4
  519. package/components/p-BxwWvu-b.js +0 -4
  520. package/components/p-C4jPsTQa.js +0 -4
  521. package/components/p-C7AoMl7c.js +0 -4
  522. package/components/p-CBzELu-H.js +0 -4
  523. package/components/p-CDfQnFrd.js +0 -4
  524. package/components/p-CH0NYjKq.js +0 -4
  525. package/components/p-CU1SSH8_.js +0 -4
  526. package/components/p-CVF7ukTk.js +0 -4
  527. package/components/p-CgfaEEem.js +0 -4
  528. package/components/p-CgqKJg96.js +0 -4
  529. package/components/p-CneGxKsZ.js +0 -4
  530. package/components/p-CoA-aqGF.js +0 -4
  531. package/components/p-Csw8xuz4.js +0 -4
  532. package/components/p-Cwv-vmkN.js +0 -4
  533. package/components/p-Cyxa_4PV.js +0 -4
  534. package/components/p-Cz5nLPGT.js +0 -4
  535. package/components/p-D6NJwNJN.js +0 -4
  536. package/components/p-DHsZWn1l.js +0 -4
  537. package/components/p-DJMZehmW.js +0 -4
  538. package/components/p-DYdpXONG.js +0 -4
  539. package/components/p-DgbT0exM.js +0 -4
  540. package/components/p-YLXPWgVj.js +0 -4
  541. package/components/p-ak_d-z48.js +0 -4
  542. package/components/p-fpbh6w3f.js +0 -4
  543. package/components/p-kvaDs24J.js +0 -4
  544. package/components/p-vEbVo2hO.js +0 -4
  545. package/dist/cjs/app-globals-CLI8xCmk.js +0 -11
  546. package/dist/esm/app-globals-DhZjtldk.js +0 -9
  547. package/dist/ionic/p-031b76f7.entry.js +0 -4
  548. package/dist/ionic/p-045a6a42.entry.js +0 -4
  549. package/dist/ionic/p-07506134.entry.js +0 -4
  550. package/dist/ionic/p-084c25b2.entry.js +0 -4
  551. package/dist/ionic/p-0d8b5c38.entry.js +0 -4
  552. package/dist/ionic/p-16813ce7.entry.js +0 -4
  553. package/dist/ionic/p-16b65553.entry.js +0 -4
  554. package/dist/ionic/p-1b02923f.entry.js +0 -4
  555. package/dist/ionic/p-2a68388b.entry.js +0 -4
  556. package/dist/ionic/p-2f5a8140.entry.js +0 -4
  557. package/dist/ionic/p-3e143d1d.entry.js +0 -4
  558. package/dist/ionic/p-4819b469.entry.js +0 -4
  559. package/dist/ionic/p-4dd5e8e0.entry.js +0 -4
  560. package/dist/ionic/p-51c11c47.entry.js +0 -4
  561. package/dist/ionic/p-53f750a5.entry.js +0 -4
  562. package/dist/ionic/p-6b97f2a3.entry.js +0 -4
  563. package/dist/ionic/p-71e322f7.entry.js +0 -4
  564. package/dist/ionic/p-7620be24.entry.js +0 -4
  565. package/dist/ionic/p-771b27a5.entry.js +0 -4
  566. package/dist/ionic/p-96a2e768.entry.js +0 -4
  567. package/dist/ionic/p-9cbc6f1f.entry.js +0 -4
  568. package/dist/ionic/p-9cdbabbb.entry.js +0 -4
  569. package/dist/ionic/p-9eac4eb1.entry.js +0 -4
  570. package/dist/ionic/p-B8xlpH8p.js +0 -4
  571. package/dist/ionic/p-BW_TRJm8.js +0 -4
  572. package/dist/ionic/p-BvFYtOdE.js +0 -4
  573. package/dist/ionic/p-C0JvVFMv.js +0 -4
  574. package/dist/ionic/p-CmFz1Mjc.js +0 -4
  575. package/dist/ionic/p-CtA-yJYy.js +0 -4
  576. package/dist/ionic/p-D8HJQ1qq.js +0 -4
  577. package/dist/ionic/p-DTPR1Wpn.js +0 -4
  578. package/dist/ionic/p-DtVZDHlS.js +0 -4
  579. package/dist/ionic/p-IGIE5vDm.js +0 -5
  580. package/dist/ionic/p-a805674e.entry.js +0 -4
  581. package/dist/ionic/p-aa47f46e.entry.js +0 -4
  582. package/dist/ionic/p-b6e0ff03.entry.js +0 -4
  583. package/dist/ionic/p-d4e8b473.entry.js +0 -4
  584. package/dist/ionic/p-e6c5f060.entry.js +0 -4
  585. package/dist/ionic/p-fdbc90d4.entry.js +0 -4
  586. package/dist/ionic/p-gbVXD275.js +0 -4
  587. package/dist/ionic/p-hNN3VvaC.js +0 -4
@@ -1,4 +1,847 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
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}
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 };