react-native-system-ui 0.0.1 → 0.0.3

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 (679) hide show
  1. package/README.md +55 -46
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +55 -33
  3. package/dist/cjs/components/area/Area.js +42 -7
  4. package/dist/cjs/components/area/utils.js +37 -33
  5. package/dist/cjs/components/avatar/Avatar.js +4 -4
  6. package/dist/cjs/components/badge/Badge.js +31 -38
  7. package/dist/cjs/components/badge/tokens.js +1 -1
  8. package/dist/cjs/components/button/Button.js +13 -21
  9. package/dist/cjs/components/button/ButtonGroup.js +5 -5
  10. package/dist/cjs/components/button/tokens.js +2 -2
  11. package/dist/cjs/components/calendar/Calendar.js +39 -31
  12. package/dist/cjs/components/cascader/Cascader.js +135 -58
  13. package/dist/cjs/components/cascader/useCascaderExtend.js +19 -19
  14. package/dist/cjs/components/cell/Cell.js +13 -14
  15. package/dist/cjs/components/cell/CellGroup.js +5 -4
  16. package/dist/cjs/components/checkbox/Checkbox.js +24 -27
  17. package/dist/cjs/components/checkbox/CheckboxGroup.js +10 -9
  18. package/dist/cjs/components/circle/Circle.js +56 -78
  19. package/dist/cjs/components/collapse/Collapse.js +66 -60
  20. package/dist/cjs/components/collapse/tokens.js +1 -1
  21. package/dist/cjs/components/config-provider/ConfigProvider.js +7 -6
  22. package/dist/cjs/components/config-provider/useLocale.js +2 -3
  23. package/dist/cjs/components/count-down/CountDown.js +7 -8
  24. package/dist/cjs/components/datetime-picker/DatetimePicker.js +80 -73
  25. package/dist/cjs/components/dialog/Dialog.js +95 -78
  26. package/dist/cjs/components/dialog/imperative.js +20 -21
  27. package/dist/cjs/components/dialog/index.js +5 -1
  28. package/dist/cjs/components/divider/Divider.js +6 -7
  29. package/dist/cjs/components/dropdown-menu/DropdownItem.js +17 -17
  30. package/dist/cjs/components/dropdown-menu/DropdownMenu.js +79 -57
  31. package/dist/cjs/components/dropdown-menu/DropdownMenuContext.js +3 -3
  32. package/dist/cjs/components/empty/Empty.js +6 -6
  33. package/dist/cjs/components/field/Field.js +57 -148
  34. package/dist/cjs/components/field/tokens.js +87 -12
  35. package/dist/cjs/components/field/utils.js +24 -0
  36. package/dist/cjs/components/flex/FlexItem.js +10 -10
  37. package/dist/cjs/components/form/Form.js +78 -36
  38. package/dist/cjs/components/form/FormItem.js +19 -15
  39. package/dist/cjs/components/form/FormList.js +6 -6
  40. package/dist/cjs/components/form/index.js +2 -3
  41. package/dist/cjs/components/form/utils.js +36 -13
  42. package/dist/cjs/components/grid/Grid.js +7 -7
  43. package/dist/cjs/components/grid/GridItem.js +11 -11
  44. package/dist/cjs/components/grid/tokens.js +1 -1
  45. package/dist/cjs/components/image/Image.js +93 -60
  46. package/dist/cjs/components/image-preview/ImagePreview.js +95 -71
  47. package/dist/cjs/components/image-preview/imperative.js +7 -6
  48. package/dist/cjs/components/index-bar/IndexBar.js +213 -105
  49. package/dist/cjs/components/index.js +498 -0
  50. package/dist/cjs/components/input/Input.js +25 -25
  51. package/dist/cjs/components/list/List.js +29 -22
  52. package/dist/cjs/components/loading/Loading.js +6 -6
  53. package/dist/cjs/components/nav-bar/NavBar.js +7 -6
  54. package/dist/cjs/components/nav-bar/tokens.js +71 -68
  55. package/dist/cjs/components/notice-bar/NoticeBar.js +46 -50
  56. package/dist/cjs/components/notify/Notify.js +19 -15
  57. package/dist/cjs/components/notify/defaults.js +15 -0
  58. package/dist/cjs/components/notify/imperative.js +9 -8
  59. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +191 -138
  60. package/dist/cjs/components/number-keyboard/tokens.js +7 -7
  61. package/dist/cjs/components/overlay/Overlay.js +19 -20
  62. package/dist/cjs/components/overlay/OverlayStackStore.js +4 -4
  63. package/dist/cjs/components/overlay/tokens.js +25 -2
  64. package/dist/cjs/components/overlay/useOverlayStack.js +9 -9
  65. package/dist/cjs/components/pagination/Pagination.js +10 -10
  66. package/dist/cjs/components/password-input/PasswordInput.js +57 -52
  67. package/dist/cjs/components/picker/Picker.js +219 -89
  68. package/dist/cjs/components/picker/WheelPicker.js +313 -135
  69. package/dist/cjs/components/picker/utils.js +14 -10
  70. package/dist/cjs/components/popup/Popup.js +184 -213
  71. package/dist/cjs/components/portal/Portal.js +6 -16
  72. package/dist/cjs/components/portal/PortalHost.js +103 -73
  73. package/dist/cjs/components/progress/Progress.js +114 -115
  74. package/dist/cjs/components/pull-refresh/PullRefresh.js +87 -52
  75. package/dist/cjs/components/radio/Radio.js +49 -53
  76. package/dist/cjs/components/radio/RadioGroup.js +9 -10
  77. package/dist/cjs/components/radio/tokens.js +1 -1
  78. package/dist/cjs/components/rate/Rate.js +77 -68
  79. package/dist/cjs/components/rate/tokens.js +1 -3
  80. package/dist/cjs/components/safe-area-view/SafeAreaView.js +63 -0
  81. package/dist/cjs/components/safe-area-view/index.js +12 -0
  82. package/dist/cjs/components/search/Search.js +23 -25
  83. package/dist/cjs/components/selector/Selector.js +128 -88
  84. package/dist/cjs/components/selector/tokens.js +1 -1
  85. package/dist/cjs/components/share-sheet/ShareSheet.js +73 -65
  86. package/dist/cjs/components/sidebar/Sidebar.js +36 -24
  87. package/dist/cjs/components/sidebar/SidebarContext.js +4 -3
  88. package/dist/cjs/components/sidebar/SidebarItem.js +9 -9
  89. package/dist/cjs/components/sidebar/tokens.js +3 -2
  90. package/dist/cjs/components/skeleton/Skeleton.js +72 -53
  91. package/dist/cjs/components/slider/Slider.js +200 -165
  92. package/dist/cjs/components/slider/utils.js +60 -0
  93. package/dist/cjs/components/space/Space.js +25 -26
  94. package/dist/cjs/components/stepper/Stepper.js +127 -103
  95. package/dist/cjs/components/swiper/Swiper.js +238 -341
  96. package/dist/cjs/components/swiper/SwiperItem.js +3 -3
  97. package/dist/cjs/components/swiper/SwiperPagIndicator.js +10 -8
  98. package/dist/cjs/components/swiper/useSwiperWeb.js +212 -0
  99. package/dist/cjs/components/swiper/utils.js +49 -0
  100. package/dist/cjs/components/switch/Switch.js +43 -39
  101. package/dist/cjs/components/switch/tokens.js +7 -5
  102. package/dist/cjs/components/tabbar/Tabbar.js +25 -30
  103. package/dist/cjs/components/tabbar/TabbarContext.js +4 -3
  104. package/dist/cjs/components/tabbar/TabbarItem.js +11 -10
  105. package/dist/cjs/components/tabs/Tabs.js +171 -228
  106. package/dist/cjs/components/tabs/tokens.js +4 -3
  107. package/dist/cjs/components/tabs/useTabsAnimation.js +74 -0
  108. package/dist/cjs/components/tabs/useTabsScroll.js +129 -0
  109. package/dist/cjs/components/tabs/utils.js +34 -0
  110. package/dist/cjs/components/tag/Tag.js +5 -5
  111. package/dist/cjs/components/tag/tokens.js +2 -2
  112. package/dist/cjs/components/toast/Toast.js +23 -11
  113. package/dist/cjs/components/toast/imperative.js +10 -9
  114. package/dist/cjs/components/types.js +1 -0
  115. package/dist/cjs/components/typography/Typography.js +57 -38
  116. package/dist/cjs/components/typography/tokens.js +3 -3
  117. package/dist/cjs/components/uploader/Uploader.js +42 -93
  118. package/dist/cjs/components/uploader/utils.js +72 -0
  119. package/dist/cjs/components/water-mark/WaterMark.js +18 -18
  120. package/dist/cjs/design-system/ThemeProvider.js +3 -3
  121. package/dist/cjs/design-system/createComponentTokensHook.js +4 -5
  122. package/dist/cjs/design-system/tokens.js +1 -0
  123. package/dist/cjs/design-system/useTheme.js +2 -3
  124. package/dist/cjs/hooks/aria/useAriaListBox.js +24 -9
  125. package/dist/cjs/hooks/aria/useAriaOverlay.js +13 -9
  126. package/dist/cjs/hooks/aria/useAriaPress.js +47 -21
  127. package/dist/cjs/hooks/aria/useAriaToggle.js +6 -6
  128. package/dist/cjs/hooks/gesture/useGestureScroll.js +22 -23
  129. package/dist/cjs/hooks/index.js +12 -0
  130. package/dist/cjs/hooks/useControllableValue.js +10 -9
  131. package/dist/cjs/hooks/useCountDown.js +17 -18
  132. package/dist/cjs/hooks/useHairline.js +3 -3
  133. package/dist/cjs/hooks/usePresenceAnimation.js +5 -6
  134. package/dist/cjs/hooks/useSafeAreaPadding.js +41 -0
  135. package/dist/cjs/index.js +22 -0
  136. package/dist/cjs/platform/index.js +11 -0
  137. package/dist/cjs/platform/measure.js +10 -8
  138. package/dist/cjs/platform/runtime.js +19 -0
  139. package/dist/cjs/utils/deepMerge.js +5 -2
  140. package/dist/cjs/utils/hairline.js +6 -3
  141. package/dist/cjs/utils/index.js +115 -0
  142. package/dist/es/components/action-sheet/ActionSheet.js +43 -22
  143. package/dist/es/components/area/Area.js +41 -7
  144. package/dist/es/components/area/utils.js +37 -33
  145. package/dist/es/components/avatar/Avatar.js +3 -3
  146. package/dist/es/components/badge/Badge.js +27 -34
  147. package/dist/es/components/badge/tokens.js +1 -1
  148. package/dist/es/components/button/Button.js +12 -21
  149. package/dist/es/components/button/ButtonGroup.js +4 -4
  150. package/dist/es/components/button/tokens.js +1 -1
  151. package/dist/es/components/calendar/Calendar.js +38 -31
  152. package/dist/es/components/cascader/Cascader.js +136 -60
  153. package/dist/es/components/cascader/useCascaderExtend.js +17 -16
  154. package/dist/es/components/cell/Cell.js +4 -5
  155. package/dist/es/components/cell/CellGroup.js +3 -2
  156. package/dist/es/components/checkbox/Checkbox.js +22 -25
  157. package/dist/es/components/checkbox/CheckboxGroup.js +9 -8
  158. package/dist/es/components/circle/Circle.js +53 -74
  159. package/dist/es/components/collapse/Collapse.js +61 -55
  160. package/dist/es/components/collapse/tokens.js +1 -1
  161. package/dist/es/components/config-provider/ConfigProvider.js +7 -5
  162. package/dist/es/components/config-provider/useLocale.js +2 -2
  163. package/dist/es/components/count-down/CountDown.js +4 -5
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -55
  165. package/dist/es/components/dialog/Dialog.js +94 -78
  166. package/dist/es/components/dialog/imperative.js +14 -16
  167. package/dist/es/components/dialog/index.js +5 -1
  168. package/dist/es/components/divider/Divider.js +3 -4
  169. package/dist/es/components/dropdown-menu/DropdownItem.js +11 -11
  170. package/dist/es/components/dropdown-menu/DropdownMenu.js +78 -57
  171. package/dist/es/components/dropdown-menu/DropdownMenuContext.js +2 -2
  172. package/dist/es/components/empty/Empty.js +3 -3
  173. package/dist/es/components/field/Field.js +54 -146
  174. package/dist/es/components/field/tokens.js +81 -12
  175. package/dist/es/components/field/utils.js +17 -0
  176. package/dist/es/components/flex/FlexItem.js +3 -3
  177. package/dist/es/components/form/Form.js +77 -35
  178. package/dist/es/components/form/FormItem.js +14 -10
  179. package/dist/es/components/form/FormList.js +5 -5
  180. package/dist/es/components/form/index.js +2 -2
  181. package/dist/es/components/form/utils.js +34 -11
  182. package/dist/es/components/grid/Grid.js +4 -4
  183. package/dist/es/components/grid/GridItem.js +5 -6
  184. package/dist/es/components/grid/tokens.js +1 -1
  185. package/dist/es/components/image/Image.js +88 -55
  186. package/dist/es/components/image-preview/ImagePreview.js +94 -71
  187. package/dist/es/components/image-preview/imperative.js +6 -6
  188. package/dist/es/components/index-bar/IndexBar.js +212 -104
  189. package/dist/es/components/index.js +74 -2
  190. package/dist/es/components/input/Input.js +24 -25
  191. package/dist/es/components/list/List.js +28 -22
  192. package/dist/es/components/loading/Loading.js +5 -5
  193. package/dist/es/components/nav-bar/NavBar.js +6 -5
  194. package/dist/es/components/nav-bar/tokens.js +71 -68
  195. package/dist/es/components/notice-bar/NoticeBar.js +45 -49
  196. package/dist/es/components/notify/Notify.js +19 -15
  197. package/dist/es/components/notify/defaults.js +9 -0
  198. package/dist/es/components/notify/imperative.js +5 -5
  199. package/dist/es/components/number-keyboard/NumberKeyboard.js +191 -139
  200. package/dist/es/components/number-keyboard/tokens.js +7 -7
  201. package/dist/es/components/overlay/Overlay.js +18 -20
  202. package/dist/es/components/overlay/OverlayStackStore.js +2 -2
  203. package/dist/es/components/overlay/tokens.js +25 -2
  204. package/dist/es/components/overlay/useOverlayStack.js +9 -8
  205. package/dist/es/components/pagination/Pagination.js +9 -9
  206. package/dist/es/components/password-input/PasswordInput.js +56 -51
  207. package/dist/es/components/picker/Picker.js +209 -81
  208. package/dist/es/components/picker/WheelPicker.js +304 -126
  209. package/dist/es/components/picker/utils.js +13 -9
  210. package/dist/es/components/popup/Popup.js +184 -214
  211. package/dist/es/components/portal/Portal.js +6 -15
  212. package/dist/es/components/portal/PortalHost.js +103 -73
  213. package/dist/es/components/progress/Progress.js +112 -112
  214. package/dist/es/components/pull-refresh/PullRefresh.js +86 -51
  215. package/dist/es/components/radio/Radio.js +46 -49
  216. package/dist/es/components/radio/RadioGroup.js +8 -9
  217. package/dist/es/components/radio/tokens.js +1 -1
  218. package/dist/es/components/rate/Rate.js +67 -57
  219. package/dist/es/components/rate/tokens.js +1 -3
  220. package/dist/es/components/safe-area-view/SafeAreaView.js +43 -0
  221. package/dist/es/components/safe-area-view/index.js +1 -0
  222. package/dist/es/components/search/Search.js +22 -25
  223. package/dist/es/components/selector/Selector.js +128 -87
  224. package/dist/es/components/selector/tokens.js +1 -1
  225. package/dist/es/components/share-sheet/ShareSheet.js +72 -65
  226. package/dist/es/components/sidebar/Sidebar.js +34 -22
  227. package/dist/es/components/sidebar/SidebarContext.js +2 -1
  228. package/dist/es/components/sidebar/SidebarItem.js +7 -7
  229. package/dist/es/components/sidebar/tokens.js +3 -2
  230. package/dist/es/components/skeleton/Skeleton.js +70 -51
  231. package/dist/es/components/slider/Slider.js +197 -162
  232. package/dist/es/components/slider/utils.js +49 -0
  233. package/dist/es/components/space/Space.js +21 -21
  234. package/dist/es/components/stepper/Stepper.js +105 -81
  235. package/dist/es/components/swiper/Swiper.js +229 -332
  236. package/dist/es/components/swiper/SwiperItem.js +2 -2
  237. package/dist/es/components/swiper/SwiperPagIndicator.js +9 -7
  238. package/dist/es/components/swiper/useSwiperWeb.js +193 -0
  239. package/dist/es/components/swiper/utils.js +37 -0
  240. package/dist/es/components/switch/Switch.js +42 -37
  241. package/dist/es/components/switch/tokens.js +7 -5
  242. package/dist/es/components/tabbar/Tabbar.js +25 -30
  243. package/dist/es/components/tabbar/TabbarContext.js +2 -1
  244. package/dist/es/components/tabbar/TabbarItem.js +11 -10
  245. package/dist/es/components/tabs/Tabs.js +170 -227
  246. package/dist/es/components/tabs/tokens.js +4 -3
  247. package/dist/es/components/tabs/useTabsAnimation.js +55 -0
  248. package/dist/es/components/tabs/useTabsScroll.js +110 -0
  249. package/dist/es/components/tabs/utils.js +19 -0
  250. package/dist/es/components/tag/Tag.js +3 -3
  251. package/dist/es/components/tag/tokens.js +1 -1
  252. package/dist/es/components/toast/Toast.js +22 -11
  253. package/dist/es/components/toast/imperative.js +6 -6
  254. package/dist/es/components/types.js +1 -0
  255. package/dist/es/components/typography/Typography.js +54 -35
  256. package/dist/es/components/typography/tokens.js +3 -3
  257. package/dist/es/components/uploader/Uploader.js +35 -87
  258. package/dist/es/components/uploader/utils.js +60 -0
  259. package/dist/es/components/water-mark/WaterMark.js +13 -13
  260. package/dist/es/design-system/ThemeProvider.js +2 -2
  261. package/dist/es/design-system/createComponentTokensHook.js +2 -2
  262. package/dist/es/design-system/tokens.js +1 -0
  263. package/dist/es/design-system/useTheme.js +2 -2
  264. package/dist/es/hooks/aria/useAriaListBox.js +22 -6
  265. package/dist/es/hooks/aria/useAriaOverlay.js +5 -6
  266. package/dist/es/hooks/aria/useAriaPress.js +35 -21
  267. package/dist/es/hooks/aria/useAriaToggle.js +4 -3
  268. package/dist/es/hooks/gesture/useGestureScroll.js +20 -20
  269. package/dist/es/hooks/index.js +1 -0
  270. package/dist/es/hooks/useControllableValue.js +10 -8
  271. package/dist/es/hooks/useCountDown.js +17 -17
  272. package/dist/es/hooks/useHairline.js +2 -2
  273. package/dist/es/hooks/usePresenceAnimation.js +5 -5
  274. package/dist/es/hooks/useSafeAreaPadding.js +23 -0
  275. package/dist/es/index.js +2 -4
  276. package/dist/es/platform/index.js +1 -0
  277. package/dist/es/platform/measure.js +10 -8
  278. package/dist/es/platform/runtime.js +4 -0
  279. package/dist/es/utils/deepMerge.js +5 -2
  280. package/dist/es/utils/hairline.js +6 -3
  281. package/dist/es/utils/index.js +12 -0
  282. package/dist/types/components/action-sheet/ActionSheet.d.ts +4 -0
  283. package/dist/types/components/action-sheet/index.d.ts +4 -0
  284. package/dist/types/components/action-sheet/tokens.d.ts +4 -0
  285. package/dist/types/components/area/Area.d.ts +4 -0
  286. package/dist/types/components/area/index.d.ts +3 -0
  287. package/dist/types/components/area/utils.d.ts +2 -0
  288. package/dist/types/components/avatar/Avatar.d.ts +5 -0
  289. package/dist/types/components/avatar/index.d.ts +3 -0
  290. package/dist/types/components/avatar/tokens.d.ts +4 -0
  291. package/dist/types/components/badge/Badge.d.ts +4 -0
  292. package/dist/types/components/badge/index.d.ts +3 -0
  293. package/dist/types/components/badge/tokens.d.ts +2 -0
  294. package/dist/types/components/button/Button.d.ts +5 -0
  295. package/dist/types/components/button/ButtonContext.d.ts +16 -0
  296. package/dist/types/components/button/ButtonGroup.d.ts +10 -0
  297. package/dist/types/components/button/index.d.ts +6 -0
  298. package/dist/types/components/button/tokens.d.ts +2 -0
  299. package/dist/types/components/calendar/Calendar.d.ts +4 -0
  300. package/dist/types/components/calendar/index.d.ts +3 -0
  301. package/dist/types/components/calendar/tokens.d.ts +4 -0
  302. package/dist/types/components/cascader/Cascader.d.ts +4 -0
  303. package/dist/types/components/cascader/index.d.ts +4 -0
  304. package/dist/types/components/cascader/tokens.d.ts +4 -0
  305. package/dist/types/components/cascader/useCascaderExtend.d.ts +12 -0
  306. package/dist/types/components/cascader/utils.d.ts +6 -0
  307. package/dist/types/components/cell/Cell.d.ts +4 -0
  308. package/dist/types/components/cell/CellContext.d.ts +7 -0
  309. package/dist/types/components/cell/CellGroup.d.ts +3 -0
  310. package/dist/types/components/cell/index.d.ts +8 -0
  311. package/dist/types/components/cell/tokens.d.ts +4 -0
  312. package/dist/types/components/checkbox/Checkbox.d.ts +5 -0
  313. package/dist/types/components/checkbox/CheckboxContext.d.ts +16 -0
  314. package/dist/types/components/checkbox/CheckboxGroup.d.ts +8 -0
  315. package/dist/types/components/checkbox/index.d.ts +7 -0
  316. package/dist/types/components/checkbox/tokens.d.ts +2 -0
  317. package/dist/types/components/circle/Circle.d.ts +5 -0
  318. package/dist/types/components/circle/index.d.ts +3 -0
  319. package/dist/types/components/circle/tokens.d.ts +4 -0
  320. package/dist/types/components/collapse/Collapse.d.ts +45 -0
  321. package/dist/types/components/collapse/index.d.ts +3 -0
  322. package/dist/types/components/collapse/tokens.d.ts +4 -0
  323. package/dist/types/components/config-provider/ConfigProvider.d.ts +3 -0
  324. package/dist/types/components/config-provider/LocaleContext.d.ts +75 -0
  325. package/dist/types/components/config-provider/index.d.ts +5 -0
  326. package/dist/types/components/config-provider/locale/base.d.ts +74 -0
  327. package/dist/types/components/config-provider/locale/en-US.d.ts +74 -0
  328. package/dist/types/components/config-provider/locale/zh-CN.d.ts +74 -0
  329. package/dist/types/components/config-provider/useLocale.d.ts +74 -0
  330. package/dist/types/components/count-down/CountDown.d.ts +4 -0
  331. package/dist/types/components/count-down/index.d.ts +4 -0
  332. package/dist/types/components/count-down/tokens.d.ts +4 -0
  333. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +4 -0
  334. package/dist/types/components/datetime-picker/index.d.ts +3 -0
  335. package/dist/types/components/dialog/Dialog.d.ts +4 -0
  336. package/dist/types/components/dialog/imperative.d.ts +23 -0
  337. package/dist/types/components/dialog/index.d.ts +5 -0
  338. package/dist/types/components/dialog/tokens.d.ts +46 -0
  339. package/dist/types/components/divider/Divider.d.ts +3 -0
  340. package/dist/types/components/divider/index.d.ts +3 -0
  341. package/dist/types/components/divider/tokens.d.ts +4 -0
  342. package/dist/types/components/dropdown-menu/DropdownItem.d.ts +4 -0
  343. package/dist/types/components/dropdown-menu/DropdownMenu.d.ts +4 -0
  344. package/dist/types/components/dropdown-menu/DropdownMenuContext.d.ts +17 -0
  345. package/dist/types/components/dropdown-menu/index.d.ts +8 -0
  346. package/dist/types/components/dropdown-menu/tokens.d.ts +35 -0
  347. package/dist/types/components/empty/Empty.d.ts +3 -0
  348. package/dist/types/components/empty/index.d.ts +3 -0
  349. package/dist/types/components/empty/tokens.d.ts +4 -0
  350. package/dist/types/components/field/Field.d.ts +4 -0
  351. package/dist/types/components/field/index.d.ts +7 -0
  352. package/dist/types/components/field/tokens.d.ts +131 -0
  353. package/dist/types/components/field/utils.d.ts +4 -0
  354. package/dist/types/components/flex/Flex.d.ts +3 -0
  355. package/dist/types/components/flex/FlexContext.d.ts +8 -0
  356. package/dist/types/components/flex/FlexItem.d.ts +3 -0
  357. package/dist/types/components/flex/index.d.ts +8 -0
  358. package/dist/types/components/flex/tokens.d.ts +2 -0
  359. package/dist/types/components/form/Form.d.ts +6 -0
  360. package/dist/types/components/form/FormContext.d.ts +17 -0
  361. package/dist/types/components/form/FormItem.d.ts +4 -0
  362. package/dist/types/components/form/FormList.d.ts +18 -0
  363. package/dist/types/components/form/index.d.ts +17 -0
  364. package/dist/types/components/form/utils.d.ts +6 -0
  365. package/dist/types/components/grid/Grid.d.ts +3 -0
  366. package/dist/types/components/grid/GridContext.d.ts +17 -0
  367. package/dist/types/components/grid/GridItem.d.ts +3 -0
  368. package/dist/types/components/grid/index.d.ts +5 -0
  369. package/dist/types/components/grid/tokens.d.ts +4 -0
  370. package/dist/types/components/image/Image.d.ts +5 -0
  371. package/dist/types/components/image/index.d.ts +4 -0
  372. package/dist/types/components/image/tokens.d.ts +2 -0
  373. package/dist/types/components/image-preview/ImagePreview.d.ts +4 -0
  374. package/dist/types/components/image-preview/imperative.d.ts +5 -0
  375. package/dist/types/components/image-preview/index.d.ts +6 -0
  376. package/dist/types/components/image-preview/tokens.d.ts +10 -0
  377. package/dist/types/components/index-bar/IndexAnchor.d.ts +4 -0
  378. package/dist/types/components/index-bar/IndexBar.d.ts +4 -0
  379. package/dist/types/components/index-bar/index.d.ts +9 -0
  380. package/dist/types/components/index-bar/tokens.d.ts +22 -0
  381. package/dist/types/components/index.d.ts +138 -0
  382. package/dist/types/components/input/Input.d.ts +8 -0
  383. package/dist/types/components/input/index.d.ts +4 -0
  384. package/dist/types/components/input/tokens.d.ts +2 -0
  385. package/dist/types/components/list/List.d.ts +4 -0
  386. package/dist/types/components/list/index.d.ts +3 -0
  387. package/dist/types/components/list/tokens.d.ts +4 -0
  388. package/dist/types/components/loading/Loading.d.ts +3 -0
  389. package/dist/types/components/loading/index.d.ts +3 -0
  390. package/dist/types/components/loading/tokens.d.ts +4 -0
  391. package/dist/types/components/nav-bar/NavBar.d.ts +4 -0
  392. package/dist/types/components/nav-bar/index.d.ts +4 -0
  393. package/dist/types/components/nav-bar/tokens.d.ts +4 -0
  394. package/dist/types/components/notice-bar/NoticeBar.d.ts +3 -0
  395. package/dist/types/components/notice-bar/index.d.ts +3 -0
  396. package/dist/types/components/notice-bar/tokens.d.ts +23 -0
  397. package/dist/types/components/notify/Notify.d.ts +5 -0
  398. package/dist/types/components/notify/defaults.d.ts +10 -0
  399. package/dist/types/components/notify/imperative.d.ts +22 -0
  400. package/dist/types/components/notify/index.d.ts +15 -0
  401. package/dist/types/components/notify/tokens.d.ts +4 -0
  402. package/dist/types/components/number-keyboard/NumberKeyboard.d.ts +4 -0
  403. package/dist/types/components/number-keyboard/index.d.ts +4 -0
  404. package/dist/types/components/number-keyboard/tokens.d.ts +36 -0
  405. package/dist/types/components/overlay/Overlay.d.ts +4 -0
  406. package/dist/types/components/overlay/OverlayStackStore.d.ts +39 -0
  407. package/dist/types/components/overlay/index.d.ts +6 -0
  408. package/dist/types/components/overlay/tokens.d.ts +4 -0
  409. package/dist/types/components/overlay/useOverlayStack.d.ts +10 -0
  410. package/dist/types/components/pagination/Pagination.d.ts +5 -0
  411. package/dist/types/components/pagination/index.d.ts +5 -0
  412. package/dist/types/components/pagination/tokens.d.ts +2 -0
  413. package/dist/types/components/password-input/PasswordInput.d.ts +39 -0
  414. package/dist/types/components/password-input/index.d.ts +2 -0
  415. package/dist/types/components/picker/Picker.d.ts +16 -0
  416. package/dist/types/components/picker/WheelPicker.d.ts +21 -0
  417. package/dist/types/components/picker/index.d.ts +4 -0
  418. package/dist/types/components/picker/tokens.d.ts +37 -0
  419. package/dist/types/components/picker/utils.d.ts +17 -0
  420. package/dist/types/components/popup/Popup.d.ts +44 -0
  421. package/dist/types/components/popup/index.d.ts +4 -0
  422. package/dist/types/components/popup/tokens.d.ts +46 -0
  423. package/dist/types/components/portal/Portal.d.ts +13 -0
  424. package/dist/types/components/portal/PortalContext.d.ts +7 -0
  425. package/dist/types/components/portal/PortalHost.d.ts +25 -0
  426. package/dist/types/components/portal/index.d.ts +3 -0
  427. package/dist/types/components/progress/Progress.d.ts +4 -0
  428. package/dist/types/components/progress/index.d.ts +3 -0
  429. package/dist/types/components/progress/tokens.d.ts +4 -0
  430. package/dist/types/components/pull-refresh/PullRefresh.d.ts +5 -0
  431. package/dist/types/components/pull-refresh/index.d.ts +4 -0
  432. package/dist/types/components/pull-refresh/tokens.d.ts +10 -0
  433. package/dist/types/components/radio/Radio.d.ts +3 -0
  434. package/dist/types/components/radio/RadioContext.d.ts +13 -0
  435. package/dist/types/components/radio/RadioGroup.d.ts +3 -0
  436. package/dist/types/components/radio/index.d.ts +7 -0
  437. package/dist/types/components/radio/tokens.d.ts +2 -0
  438. package/dist/types/components/rate/Rate.d.ts +4 -0
  439. package/dist/types/components/rate/index.d.ts +4 -0
  440. package/dist/types/components/rate/tokens.d.ts +4 -0
  441. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +10 -0
  442. package/dist/types/components/safe-area-view/index.d.ts +2 -0
  443. package/dist/types/components/search/Search.d.ts +4 -0
  444. package/dist/types/components/search/index.d.ts +4 -0
  445. package/dist/types/components/search/tokens.d.ts +40 -0
  446. package/dist/types/components/selector/Selector.d.ts +7 -0
  447. package/dist/types/components/selector/index.d.ts +4 -0
  448. package/dist/types/components/selector/tokens.d.ts +2 -0
  449. package/dist/types/components/share-sheet/ShareSheet.d.ts +4 -0
  450. package/dist/types/components/share-sheet/index.d.ts +4 -0
  451. package/dist/types/components/share-sheet/tokens.d.ts +26 -0
  452. package/dist/types/components/sidebar/Sidebar.d.ts +4 -0
  453. package/dist/types/components/sidebar/SidebarContext.d.ts +7 -0
  454. package/dist/types/components/sidebar/SidebarItem.d.ts +4 -0
  455. package/dist/types/components/sidebar/index.d.ts +8 -0
  456. package/dist/types/components/sidebar/tokens.d.ts +4 -0
  457. package/dist/types/components/skeleton/Skeleton.d.ts +5 -0
  458. package/dist/types/components/skeleton/index.d.ts +5 -0
  459. package/dist/types/components/skeleton/tokens.d.ts +2 -0
  460. package/dist/types/components/slider/Slider.d.ts +4 -0
  461. package/dist/types/components/slider/index.d.ts +3 -0
  462. package/dist/types/components/slider/tokens.d.ts +28 -0
  463. package/dist/types/components/slider/utils.d.ts +42 -0
  464. package/dist/types/components/space/Space.d.ts +3 -0
  465. package/dist/types/components/space/index.d.ts +3 -0
  466. package/dist/types/components/space/tokens.d.ts +3 -0
  467. package/dist/types/components/stepper/Stepper.d.ts +4 -0
  468. package/dist/types/components/stepper/index.d.ts +4 -0
  469. package/dist/types/components/stepper/tokens.d.ts +43 -0
  470. package/dist/types/components/swiper/Swiper.d.ts +7 -0
  471. package/dist/types/components/swiper/SwiperItem.d.ts +5 -0
  472. package/dist/types/components/swiper/SwiperPagIndicator.d.ts +36 -0
  473. package/dist/types/components/swiper/index.d.ts +14 -0
  474. package/dist/types/components/swiper/useSwiperWeb.d.ts +41 -0
  475. package/dist/types/components/swiper/utils.d.ts +17 -0
  476. package/dist/types/components/switch/Switch.d.ts +7 -0
  477. package/dist/types/components/switch/index.d.ts +4 -0
  478. package/dist/types/components/switch/tokens.d.ts +2 -0
  479. package/dist/types/components/tabbar/Tabbar.d.ts +4 -0
  480. package/dist/types/components/tabbar/TabbarContext.d.ts +13 -0
  481. package/dist/types/components/tabbar/TabbarItem.d.ts +4 -0
  482. package/dist/types/components/tabbar/index.d.ts +9 -0
  483. package/dist/types/components/tabbar/tokens.d.ts +28 -0
  484. package/dist/types/components/tabs/TabPane.d.ts +4 -0
  485. package/dist/types/components/tabs/Tabs.d.ts +4 -0
  486. package/dist/types/components/tabs/index.d.ts +8 -0
  487. package/dist/types/components/tabs/tokens.d.ts +87 -0
  488. package/dist/types/components/tabs/useTabsAnimation.d.ts +30 -0
  489. package/dist/types/components/tabs/useTabsScroll.d.ts +23 -0
  490. package/dist/types/components/tabs/utils.d.ts +5 -0
  491. package/dist/types/components/tag/Tag.d.ts +3 -0
  492. package/dist/types/components/tag/index.d.ts +3 -0
  493. package/dist/types/components/tag/tokens.d.ts +4 -0
  494. package/dist/types/components/toast/Toast.d.ts +36 -0
  495. package/dist/types/components/toast/imperative.d.ts +22 -0
  496. package/dist/types/components/toast/index.d.ts +15 -0
  497. package/dist/types/components/toast/tokens.d.ts +24 -0
  498. package/dist/types/components/types.d.ts +59 -0
  499. package/dist/types/components/typography/Typography.d.ts +11 -0
  500. package/dist/types/components/typography/index.d.ts +3 -0
  501. package/dist/types/components/typography/tokens.d.ts +2 -0
  502. package/dist/types/components/uploader/Uploader.d.ts +4 -0
  503. package/dist/types/components/uploader/index.d.ts +5 -0
  504. package/dist/types/components/uploader/tokens.d.ts +17 -0
  505. package/dist/types/components/uploader/utils.d.ts +11 -0
  506. package/dist/types/components/water-mark/WaterMark.d.ts +4 -0
  507. package/dist/types/components/water-mark/index.d.ts +5 -0
  508. package/dist/types/components/water-mark/tokens.d.ts +2 -0
  509. package/dist/types/design-system/ThemeContext.d.ts +14 -0
  510. package/dist/types/design-system/ThemeProvider.d.ts +14 -0
  511. package/dist/types/design-system/createComponentTokensHook.d.ts +4 -0
  512. package/dist/types/design-system/index.d.ts +10 -0
  513. package/dist/types/design-system/mergeTokensOverride.d.ts +2 -0
  514. package/dist/types/design-system/presets.d.ts +8 -0
  515. package/dist/types/design-system/tokens.d.ts +74 -0
  516. package/dist/types/design-system/useTheme.d.ts +1 -0
  517. package/dist/types/hooks/aria/index.d.ts +4 -0
  518. package/dist/types/hooks/aria/useAriaListBox.d.ts +20 -0
  519. package/dist/types/hooks/aria/useAriaOverlay.d.ts +24 -0
  520. package/dist/types/hooks/aria/useAriaPress.d.ts +39 -0
  521. package/dist/types/hooks/aria/useAriaToggle.d.ts +15 -0
  522. package/dist/types/hooks/gesture/index.d.ts +1 -0
  523. package/dist/types/hooks/gesture/useGestureScroll.d.ts +32 -0
  524. package/dist/types/hooks/index.d.ts +8 -0
  525. package/dist/types/hooks/useControllableValue.d.ts +9 -0
  526. package/dist/types/hooks/useCountDown.d.ts +23 -0
  527. package/dist/types/hooks/useHairline.d.ts +31 -0
  528. package/dist/types/hooks/usePresenceAnimation.d.ts +15 -0
  529. package/dist/types/hooks/useSafeAreaPadding.d.ts +13 -0
  530. package/dist/types/index.d.ts +4 -0
  531. package/dist/types/platform/animation.d.ts +1 -0
  532. package/dist/types/platform/history.d.ts +1 -0
  533. package/dist/types/platform/index.d.ts +5 -0
  534. package/dist/types/platform/measure.d.ts +7 -0
  535. package/dist/types/platform/runtime.d.ts +3 -0
  536. package/dist/types/platform/scrollLock.d.ts +2 -0
  537. package/dist/types/types.d.ts +4 -0
  538. package/dist/types/utils/array.d.ts +1 -0
  539. package/dist/types/utils/color.d.ts +5 -0
  540. package/dist/types/utils/createPlatformShadow.d.ts +11 -0
  541. package/dist/types/utils/date.d.ts +13 -0
  542. package/dist/types/utils/deepMerge.d.ts +3 -0
  543. package/dist/types/utils/hairline.d.ts +20 -0
  544. package/dist/types/utils/index.d.ts +10 -0
  545. package/dist/types/utils/number.d.ts +11 -0
  546. package/dist/types/utils/promise.d.ts +1 -0
  547. package/dist/types/utils/string.d.ts +3 -0
  548. package/dist/types/utils/validate.d.ts +14 -0
  549. package/package.json +411 -14
  550. package/dist/cjs/components/action-sheet/types.d.ts +0 -96
  551. package/dist/cjs/components/area/types.d.ts +0 -27
  552. package/dist/cjs/components/avatar/types.d.ts +0 -64
  553. package/dist/cjs/components/badge/types.d.ts +0 -61
  554. package/dist/cjs/components/button/types.d.ts +0 -145
  555. package/dist/cjs/components/calendar/types.d.ts +0 -115
  556. package/dist/cjs/components/cascader/types.d.ts +0 -159
  557. package/dist/cjs/components/cell/types.d.ts +0 -117
  558. package/dist/cjs/components/checkbox/types.d.ts +0 -108
  559. package/dist/cjs/components/circle/types.d.ts +0 -94
  560. package/dist/cjs/components/collapse/types.d.ts +0 -47
  561. package/dist/cjs/components/config-provider/locale/types.d.ts +0 -3
  562. package/dist/cjs/components/config-provider/types.d.ts +0 -10
  563. package/dist/cjs/components/count-down/types.d.ts +0 -33
  564. package/dist/cjs/components/datetime-picker/types.d.ts +0 -46
  565. package/dist/cjs/components/dialog/types.d.ts +0 -83
  566. package/dist/cjs/components/divider/types.d.ts +0 -50
  567. package/dist/cjs/components/dropdown-menu/types.d.ts +0 -89
  568. package/dist/cjs/components/empty/types.d.ts +0 -48
  569. package/dist/cjs/components/field/types.d.ts +0 -112
  570. package/dist/cjs/components/flex/types.d.ts +0 -42
  571. package/dist/cjs/components/form/types.d.ts +0 -80
  572. package/dist/cjs/components/grid/types.d.ts +0 -82
  573. package/dist/cjs/components/image/types.d.ts +0 -56
  574. package/dist/cjs/components/image-preview/types.d.ts +0 -67
  575. package/dist/cjs/components/index-bar/types.d.ts +0 -43
  576. package/dist/cjs/components/input/types.d.ts +0 -49
  577. package/dist/cjs/components/list/types.d.ts +0 -48
  578. package/dist/cjs/components/loading/types.d.ts +0 -53
  579. package/dist/cjs/components/nav-bar/types.d.ts +0 -69
  580. package/dist/cjs/components/notice-bar/types.d.ts +0 -29
  581. package/dist/cjs/components/notify/types.d.ts +0 -63
  582. package/dist/cjs/components/number-keyboard/types.d.ts +0 -40
  583. package/dist/cjs/components/pagination/types.d.ts +0 -75
  584. package/dist/cjs/components/password-input/types.d.ts +0 -65
  585. package/dist/cjs/components/picker/core.js +0 -41
  586. package/dist/cjs/components/picker/styles.js +0 -75
  587. package/dist/cjs/components/picker/types.d.ts +0 -70
  588. package/dist/cjs/components/picker/usePickerValue.js +0 -74
  589. package/dist/cjs/components/progress/types.d.ts +0 -53
  590. package/dist/cjs/components/pull-refresh/types.d.ts +0 -29
  591. package/dist/cjs/components/radio/types.d.ts +0 -96
  592. package/dist/cjs/components/rate/types.d.ts +0 -54
  593. package/dist/cjs/components/search/types.d.ts +0 -84
  594. package/dist/cjs/components/selector/types.d.ts +0 -80
  595. package/dist/cjs/components/share-sheet/types.d.ts +0 -30
  596. package/dist/cjs/components/sidebar/types.d.ts +0 -66
  597. package/dist/cjs/components/skeleton/types.d.ts +0 -46
  598. package/dist/cjs/components/slider/types.d.ts +0 -39
  599. package/dist/cjs/components/space/types.d.ts +0 -47
  600. package/dist/cjs/components/stepper/types.d.ts +0 -58
  601. package/dist/cjs/components/swipe-cell/SwipeCell.js +0 -399
  602. package/dist/cjs/components/swipe-cell/index.js +0 -9
  603. package/dist/cjs/components/swiper/types.d.ts +0 -83
  604. package/dist/cjs/components/switch/types.d.ts +0 -71
  605. package/dist/cjs/components/tabbar/types.d.ts +0 -51
  606. package/dist/cjs/components/tabs/types.d.ts +0 -71
  607. package/dist/cjs/components/tag/types.d.ts +0 -67
  608. package/dist/cjs/components/theme.d.ts +0 -113
  609. package/dist/cjs/components/typography/types.d.ts +0 -77
  610. package/dist/cjs/components/uploader/types.d.ts +0 -90
  611. package/dist/cjs/components/water-mark/types.d.ts +0 -60
  612. package/dist/cjs/index.d.ts +0 -16
  613. package/dist/client-CDqbgn-w.mjs +0 -31965
  614. package/dist/es/components/action-sheet/types.d.ts +0 -96
  615. package/dist/es/components/area/types.d.ts +0 -27
  616. package/dist/es/components/avatar/types.d.ts +0 -64
  617. package/dist/es/components/badge/types.d.ts +0 -61
  618. package/dist/es/components/button/types.d.ts +0 -145
  619. package/dist/es/components/calendar/types.d.ts +0 -115
  620. package/dist/es/components/cascader/types.d.ts +0 -159
  621. package/dist/es/components/cell/types.d.ts +0 -117
  622. package/dist/es/components/checkbox/types.d.ts +0 -108
  623. package/dist/es/components/circle/types.d.ts +0 -94
  624. package/dist/es/components/collapse/types.d.ts +0 -47
  625. package/dist/es/components/config-provider/locale/types.d.ts +0 -3
  626. package/dist/es/components/config-provider/types.d.ts +0 -10
  627. package/dist/es/components/count-down/types.d.ts +0 -33
  628. package/dist/es/components/datetime-picker/types.d.ts +0 -46
  629. package/dist/es/components/dialog/types.d.ts +0 -83
  630. package/dist/es/components/divider/types.d.ts +0 -50
  631. package/dist/es/components/dropdown-menu/types.d.ts +0 -89
  632. package/dist/es/components/empty/types.d.ts +0 -48
  633. package/dist/es/components/field/types.d.ts +0 -112
  634. package/dist/es/components/flex/types.d.ts +0 -42
  635. package/dist/es/components/form/types.d.ts +0 -80
  636. package/dist/es/components/grid/types.d.ts +0 -82
  637. package/dist/es/components/image/types.d.ts +0 -56
  638. package/dist/es/components/image-preview/types.d.ts +0 -67
  639. package/dist/es/components/index-bar/types.d.ts +0 -43
  640. package/dist/es/components/input/types.d.ts +0 -49
  641. package/dist/es/components/list/types.d.ts +0 -48
  642. package/dist/es/components/loading/types.d.ts +0 -53
  643. package/dist/es/components/nav-bar/types.d.ts +0 -69
  644. package/dist/es/components/notice-bar/types.d.ts +0 -29
  645. package/dist/es/components/notify/types.d.ts +0 -63
  646. package/dist/es/components/number-keyboard/types.d.ts +0 -40
  647. package/dist/es/components/pagination/types.d.ts +0 -75
  648. package/dist/es/components/password-input/types.d.ts +0 -65
  649. package/dist/es/components/picker/core.js +0 -31
  650. package/dist/es/components/picker/styles.js +0 -63
  651. package/dist/es/components/picker/types.d.ts +0 -70
  652. package/dist/es/components/picker/usePickerValue.js +0 -60
  653. package/dist/es/components/progress/types.d.ts +0 -53
  654. package/dist/es/components/pull-refresh/types.d.ts +0 -29
  655. package/dist/es/components/radio/types.d.ts +0 -96
  656. package/dist/es/components/rate/types.d.ts +0 -54
  657. package/dist/es/components/search/types.d.ts +0 -84
  658. package/dist/es/components/selector/types.d.ts +0 -80
  659. package/dist/es/components/share-sheet/types.d.ts +0 -30
  660. package/dist/es/components/sidebar/types.d.ts +0 -66
  661. package/dist/es/components/skeleton/types.d.ts +0 -46
  662. package/dist/es/components/slider/types.d.ts +0 -39
  663. package/dist/es/components/space/types.d.ts +0 -47
  664. package/dist/es/components/stepper/types.d.ts +0 -58
  665. package/dist/es/components/swipe-cell/SwipeCell.js +0 -380
  666. package/dist/es/components/swipe-cell/index.js +0 -2
  667. package/dist/es/components/swiper/types.d.ts +0 -83
  668. package/dist/es/components/switch/types.d.ts +0 -71
  669. package/dist/es/components/tabbar/types.d.ts +0 -51
  670. package/dist/es/components/tabs/types.d.ts +0 -71
  671. package/dist/es/components/tag/types.d.ts +0 -67
  672. package/dist/es/components/theme.d.ts +0 -113
  673. package/dist/es/components/typography/types.d.ts +0 -77
  674. package/dist/es/components/uploader/types.d.ts +0 -90
  675. package/dist/es/components/water-mark/types.d.ts +0 -60
  676. package/dist/es/index.d.ts +0 -16
  677. package/dist/react-native-system-ui.es.mjs +0 -1194
  678. package/dist/react-native-system-ui.js +0 -33977
  679. package/dist/react-native-system-ui.min.js +0 -1
@@ -2,59 +2,16 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
2
2
  import { useSlider, useSliderThumb } from '@react-native-aria/slider';
3
3
  import { isRTL } from '@react-native-aria/utils';
4
4
  import { useSliderState } from '@react-stately/slider';
5
- import React from 'react';
5
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
6
  import { Platform, Pressable, StyleSheet, View } from 'react-native';
7
7
  import { useSliderTokens } from './tokens';
8
- import { clamp, parseNumber } from '../../utils/number';
9
- import { isFiniteNumber, isFunction } from '../../utils/validate';
10
- const clampValue = (value, min, max) => {
11
- if (!isFiniteNumber(value)) {
12
- return min;
13
- }
14
- return clamp(value, min, max);
15
- };
16
- const isSameLayout = (a, b) => a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;
17
- const normalizeValue = (value, range, min, max) => {
18
- if (range) {
19
- const raw = Array.isArray(value) ? value : isFiniteNumber(value) ? [min, value] : [min, min];
20
- const first = clampValue(raw[0], min, max);
21
- const second = clampValue(raw[1] ?? raw[0], min, max);
22
- return first <= second ? [first, second] : [second, first];
23
- }
24
- const single = Array.isArray(value) ? value[0] : value;
25
- return [clampValue(single, min, max)];
26
- };
27
- const toSliderValue = (values, range, fallback) => {
28
- if (range) {
29
- const start = values[0] ?? fallback;
30
- const end = values[1] ?? start;
31
- return [start, end];
32
- }
33
- return values[0] ?? fallback;
34
- };
35
- const createAccessibilityProps = inputProps => {
36
- if (!inputProps) return {};
37
- const {
38
- role,
39
- ['aria-value']: ariaValue,
40
- accessibilityActions,
41
- onAccessibilityAction,
42
- disabled
43
- } = inputProps;
44
- return {
45
- accessible: true,
46
- accessibilityRole: role ?? 'adjustable',
47
- accessibilityValue: ariaValue,
48
- accessibilityActions,
49
- onAccessibilityAction,
50
- accessibilityState: {
51
- disabled
52
- }
53
- };
54
- };
55
- const defaultNumberFormatter = typeof Intl !== 'undefined' && isFunction(Intl.NumberFormat) ? new Intl.NumberFormat() : {
56
- format: val => String(val)
57
- };
8
+ import { parseNumber } from '../../utils/number';
9
+ import { isFunction, isFiniteNumber } from '../../utils/validate';
10
+ import { useAriaPress } from '../../hooks';
11
+ import { isSameLayout, normalizeValue, toSliderValue, createAccessibilityProps, defaultNumberFormatter } from './utils';
12
+ const START_KEYS = ['onResponderGrant', 'onPanResponderGrant'];
13
+ const MOVE_KEYS = ['onResponderMove', 'onPanResponderMove'];
14
+ const END_KEYS = ['onResponderRelease', 'onResponderTerminate', 'onPanResponderRelease', 'onPanResponderTerminate'];
58
15
  const ThumbNode = /*#__PURE__*/React.memo(({
59
16
  index,
60
17
  orientation,
@@ -73,7 +30,7 @@ const ThumbNode = /*#__PURE__*/React.memo(({
73
30
  webGestureStyle,
74
31
  enhanceHandlers
75
32
  }) => {
76
- const inputRef = React.useRef(null);
33
+ const inputRef = useRef(null);
77
34
  const {
78
35
  thumbProps,
79
36
  inputProps
@@ -84,38 +41,46 @@ const ThumbNode = /*#__PURE__*/React.memo(({
84
41
  isDisabled,
85
42
  orientation
86
43
  }, state, ariaReverse);
87
- const handlers = enhanceHandlers(thumbProps, index) ?? thumbProps ?? {};
88
- const axisKey = orientation === 'vertical' ? 'top' : 'left';
89
- const crossAxisKey = orientation === 'vertical' ? 'left' : 'top';
90
- const translate = -size / 2;
91
- const thumbStyle = {
92
- width: size,
93
- height: size,
94
- borderRadius: size / 2,
95
- borderColor: activeColor,
96
- [axisKey]: `${visualPercent}%`,
97
- [crossAxisKey]: '50%',
98
- transform: [{
99
- translateX: translate
100
- }, {
101
- translateY: translate
102
- }],
103
- ...(content ? null : {
104
- backgroundColor: thumbBackgroundColor,
105
- elevation: thumbElevation
106
- })
107
- };
44
+ const rawThumbViewProps = thumbProps;
45
+ const handlers = enhanceHandlers(rawThumbViewProps, index) ?? rawThumbViewProps ?? {};
46
+ const translate = useMemo(() => -size / 2, [size]);
47
+ const thumbStyle = useMemo(() => {
48
+ const next = {
49
+ width: size,
50
+ height: size,
51
+ borderRadius: size / 2,
52
+ borderColor: activeColor,
53
+ transform: [{
54
+ translateX: translate
55
+ }, {
56
+ translateY: translate
57
+ }]
58
+ };
59
+ if (orientation === 'vertical') {
60
+ next.top = `${visualPercent}%`;
61
+ next.left = '50%';
62
+ } else {
63
+ next.left = `${visualPercent}%`;
64
+ next.top = '50%';
65
+ }
66
+ if (!content) {
67
+ next.backgroundColor = thumbBackgroundColor;
68
+ next.elevation = thumbElevation;
69
+ }
70
+ return next;
71
+ }, [activeColor, content, orientation, size, thumbBackgroundColor, thumbElevation, translate, visualPercent]);
72
+ const indicatorStyle = useMemo(() => ({
73
+ width: indicatorSize,
74
+ height: indicatorSize,
75
+ borderRadius: indicatorSize / 2,
76
+ backgroundColor: indicatorColor
77
+ }), [indicatorColor, indicatorSize]);
108
78
  const accessibilityProps = createAccessibilityProps(inputProps);
109
79
  return /*#__PURE__*/React.createElement(View, _extends({}, handlers, accessibilityProps, {
110
80
  pointerEvents: isDisabled ? 'none' : 'auto',
111
81
  style: [content ? styles.thumbWrapper : styles.thumb, webGestureStyle, thumbStyle]
112
82
  }), content ?? /*#__PURE__*/React.createElement(View, {
113
- style: {
114
- width: indicatorSize,
115
- height: indicatorSize,
116
- borderRadius: indicatorSize / 2,
117
- backgroundColor: indicatorColor
118
- }
83
+ style: indicatorStyle
119
84
  }));
120
85
  });
121
86
  ThumbNode.displayName = 'ThumbNode';
@@ -154,7 +119,8 @@ export const Slider = props => {
154
119
  } = props;
155
120
  const tokens = useSliderTokens(tokensOverride);
156
121
  const orientation = vertical ? 'vertical' : 'horizontal';
157
- const trackRef = React.useRef(null);
122
+ const trackRef = useRef(null);
123
+ const measureRafRef = useRef(null);
158
124
  const resolvedMin = parseNumber(min, 0);
159
125
  const resolvedMax = parseNumber(max, 100);
160
126
  const resolvedStepRaw = parseNumber(step, 1);
@@ -165,10 +131,16 @@ export const Slider = props => {
165
131
  const resolvedActiveColor = activeColor ?? tokens.colors.active;
166
132
  const resolvedInactiveColor = inactiveColor ?? tokens.colors.inactive;
167
133
  const scope = Math.max(resolvedMax - resolvedMin, 0.00001);
168
- const normalized = React.useMemo(() => normalizeValue(valueProp, range, resolvedMin, resolvedMax), [valueProp, range, resolvedMin, resolvedMax]);
134
+ const normalized = useMemo(() => normalizeValue(valueProp, range, resolvedMin, resolvedMax), [valueProp, range, resolvedMin, resolvedMax]);
169
135
  const isControlled = valueProp !== undefined;
170
- const formatOutput = values => toSliderValue(values, range, resolvedMin);
171
- const state = useSliderState({
136
+ const formatOutput = useCallback(values => toSliderValue(values, range, resolvedMin), [range, resolvedMin]);
137
+ const handleStateChange = useCallback(values => {
138
+ onChange?.(formatOutput(values));
139
+ }, [formatOutput, onChange]);
140
+ const handleStateChangeEnd = useCallback(values => {
141
+ onChangeAfter?.(formatOutput(values));
142
+ }, [formatOutput, onChangeAfter]);
143
+ const sliderStateOptions = useMemo(() => ({
172
144
  minValue: resolvedMin,
173
145
  maxValue: resolvedMax,
174
146
  step: resolvedStep,
@@ -177,16 +149,17 @@ export const Slider = props => {
177
149
  orientation,
178
150
  value: isControlled ? normalized : undefined,
179
151
  defaultValue: !isControlled ? normalized : undefined,
180
- onChange: values => onChange?.(formatOutput(values)),
181
- onChangeEnd: values => onChangeAfter?.(formatOutput(values))
182
- });
183
- const [trackLayout, setTrackLayout] = React.useState({
152
+ onChange: handleStateChange,
153
+ onChangeEnd: handleStateChangeEnd
154
+ }), [ariaDisabled, handleStateChange, handleStateChangeEnd, isControlled, normalized, orientation, resolvedMax, resolvedMin, resolvedStep]);
155
+ const state = useSliderState(sliderStateOptions);
156
+ const [trackLayout, setTrackLayout] = useState({
184
157
  width: 0,
185
158
  height: 0,
186
159
  x: 0,
187
160
  y: 0
188
161
  });
189
- const handleTrackLayout = event => {
162
+ const handleTrackLayout = useCallback(event => {
190
163
  const {
191
164
  layout
192
165
  } = event.nativeEvent;
@@ -198,9 +171,11 @@ export const Slider = props => {
198
171
  };
199
172
  setTrackLayout(prev => isSameLayout(prev, next) ? prev : next);
200
173
  if (Platform.OS !== 'web' || typeof requestAnimationFrame === 'undefined') return;
201
- requestAnimationFrame(() => {
174
+ if (measureRafRef.current != null) return;
175
+ measureRafRef.current = requestAnimationFrame(() => {
176
+ measureRafRef.current = null;
202
177
  const node = trackRef.current;
203
- if (!node || !isFunction(node.measureInWindow)) return;
178
+ if (!node?.measureInWindow) return;
204
179
  node.measureInWindow((x, y, width, height) => {
205
180
  const measured = {
206
181
  width: Math.max(width, 1),
@@ -211,7 +186,15 @@ export const Slider = props => {
211
186
  setTrackLayout(prev => isSameLayout(prev, measured) ? prev : measured);
212
187
  });
213
188
  });
214
- };
189
+ }, []);
190
+ useEffect(() => {
191
+ return () => {
192
+ if (measureRafRef.current != null && typeof cancelAnimationFrame === 'function') {
193
+ cancelAnimationFrame(measureRafRef.current);
194
+ }
195
+ measureRafRef.current = null;
196
+ };
197
+ }, []);
215
198
  const reverseX = orientation === 'horizontal' ? reverse || isRTL() : reverse;
216
199
  const ariaReverse = orientation === 'horizontal' ? reverseX : reverse;
217
200
  const {
@@ -221,19 +204,21 @@ export const Slider = props => {
221
204
  isDisabled: ariaDisabled,
222
205
  'aria-label': ariaLabel ?? 'Slider'
223
206
  }, state, trackLayout, ariaReverse);
207
+ const trackPressableProps = trackProps;
224
208
  const {
225
209
  style: trackAriaStyle,
226
210
  onLayout: trackAriaOnLayout,
227
211
  ...restTrackProps
228
- } = trackProps;
229
- const handleTrackPress = event => {
212
+ } = trackPressableProps;
213
+ const handleTrackPress = useCallback(event => {
230
214
  if (ariaDisabled) return;
231
215
  if (!state.values.every((_, i) => !state.isThumbDragging(i))) return;
232
- const nativeEvent = event?.nativeEvent;
233
- const locationX = nativeEvent?.locationX;
234
- const locationY = nativeEvent?.locationY;
235
- const pageX = nativeEvent?.pageX;
236
- const pageY = nativeEvent?.pageY;
216
+ const {
217
+ locationX,
218
+ locationY,
219
+ pageX,
220
+ pageY
221
+ } = event.nativeEvent;
237
222
  const localX = isFiniteNumber(locationX) ? locationX : isFiniteNumber(pageX) ? pageX - (trackLayout.x ?? 0) : 0;
238
223
  const localY = isFiniteNumber(locationY) ? locationY : isFiniteNumber(pageY) ? pageY - (trackLayout.y ?? 0) : 0;
239
224
  const size = orientation === 'vertical' ? trackLayout.height : trackLayout.width;
@@ -244,45 +229,74 @@ export const Slider = props => {
244
229
  const closestThumb = state.values.reduce((best, v, i) => Math.abs(v - value) < Math.abs(state.values[best] - value) ? i : best, 0);
245
230
  if (closestThumb >= 0 && state.isThumbEditable(closestThumb)) {
246
231
  ;
247
- event?.preventDefault?.();
232
+ event.preventDefault?.();
248
233
  state.setFocusedThumb(closestThumb);
249
234
  state.setThumbDragging(closestThumb, true);
250
235
  state.setThumbValue(closestThumb, value);
251
236
  state.setThumbDragging(closestThumb, false);
252
237
  }
253
- };
238
+ }, [ariaDisabled, orientation, reverse, reverseX, state, trackLayout.height, trackLayout.width, trackLayout.x, trackLayout.y]);
239
+ const {
240
+ interactionProps: trackInteractionProps
241
+ } = useAriaPress({
242
+ disabled: ariaDisabled,
243
+ onPress: handleTrackPress,
244
+ extraProps: restTrackProps
245
+ });
254
246
  const currentValue = formatOutput(state.values);
255
- const currentValueRef = React.useRef(currentValue);
247
+ const currentValueRef = useRef(currentValue);
256
248
  currentValueRef.current = currentValue;
257
- const dragStartedRef = React.useRef([]);
258
- const dragStartValueRef = React.useRef([]);
259
- const moveRafIdRef = React.useRef([]);
260
- const movePendingArgsRef = React.useRef([]);
261
- const enhanceHandlers = React.useCallback((handlers, index) => {
249
+ const dragStartedRef = useRef([]);
250
+ const dragStartValueRef = useRef([]);
251
+ const moveRafIdRef = useRef([]);
252
+ const movePendingArgsRef = useRef([]);
253
+ const enhancedHandlersCacheRef = useRef(new WeakMap());
254
+ useEffect(() => {
255
+ enhancedHandlersCacheRef.current = new WeakMap();
256
+ }, [onDragStart, onDragEnd]);
257
+ useEffect(() => {
258
+ return () => {
259
+ const cancel = typeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : undefined;
260
+ if (!cancel) return;
261
+ for (const id of moveRafIdRef.current) {
262
+ if (id != null) cancel(id);
263
+ }
264
+ moveRafIdRef.current = [];
265
+ movePendingArgsRef.current = [];
266
+ };
267
+ }, []);
268
+ const enhanceHandlers = useCallback((handlers, index) => {
262
269
  if (!handlers) return handlers;
263
270
  if (!onDragStart && !onDragEnd) {
264
271
  return handlers;
265
272
  }
266
- const startKeys = ['onResponderGrant', 'onPanResponderGrant'];
267
- const moveKeys = ['onResponderMove', 'onPanResponderMove'];
268
- const endKeys = ['onResponderRelease', 'onResponderTerminate', 'onPanResponderRelease', 'onPanResponderTerminate'];
269
- const hasAny = startKeys.some(k => isFunction(handlers[k])) || moveKeys.some(k => isFunction(handlers[k])) || endKeys.some(k => isFunction(handlers[k]));
273
+ const cached = enhancedHandlersCacheRef.current.get(handlers);
274
+ const found = cached?.get(index);
275
+ if (found) return found;
276
+ const hasAny = START_KEYS.some(k => isFunction(handlers[k])) || MOVE_KEYS.some(k => isFunction(handlers[k])) || END_KEYS.some(k => isFunction(handlers[k]));
270
277
  if (!hasAny) return handlers;
271
278
  const wrapped = {
272
279
  ...handlers
273
280
  };
274
- for (const key of moveKeys) {
281
+ const raf = typeof requestAnimationFrame === 'function' ? requestAnimationFrame : undefined;
282
+ const caf = typeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : undefined;
283
+ for (const key of MOVE_KEYS) {
275
284
  const original = wrapped[key];
276
285
  if (!isFunction(original)) continue;
286
+ const originalFn = original;
277
287
  wrapped[key] = (...args) => {
288
+ if (!raf) {
289
+ originalFn(...args);
290
+ return;
291
+ }
278
292
  movePendingArgsRef.current[index] = args;
279
293
  if (moveRafIdRef.current[index] != null) return;
280
- moveRafIdRef.current[index] = requestAnimationFrame(() => {
294
+ moveRafIdRef.current[index] = raf(() => {
281
295
  moveRafIdRef.current[index] = null;
282
296
  const pending = movePendingArgsRef.current[index];
283
297
  if (!pending) return;
284
298
  movePendingArgsRef.current[index] = null;
285
- original(...pending);
299
+ originalFn(...pending);
286
300
  });
287
301
  };
288
302
  }
@@ -290,7 +304,10 @@ export const Slider = props => {
290
304
  if (!callback) return;
291
305
  const original = wrapped[key];
292
306
  wrapped[key] = (...args) => {
293
- original?.(...args);
307
+ if (isFunction(original)) {
308
+ ;
309
+ original(...args);
310
+ }
294
311
  callback(args[0]);
295
312
  };
296
313
  };
@@ -299,16 +316,19 @@ export const Slider = props => {
299
316
  const original = wrapped[key];
300
317
  wrapped[key] = (...args) => {
301
318
  callback(args[0]);
302
- original?.(...args);
319
+ if (isFunction(original)) {
320
+ ;
321
+ original(...args);
322
+ }
303
323
  };
304
324
  };
305
- for (const key of startKeys) {
325
+ for (const key of START_KEYS) {
306
326
  wrapAfter(key, () => {
307
327
  dragStartedRef.current[index] = false;
308
328
  dragStartValueRef.current[index] = currentValueRef.current;
309
329
  });
310
330
  }
311
- for (const key of moveKeys) {
331
+ for (const key of MOVE_KEYS) {
312
332
  wrapBefore(key, event => {
313
333
  if (!dragStartedRef.current[index]) {
314
334
  dragStartedRef.current[index] = true;
@@ -323,86 +343,101 @@ export const Slider = props => {
323
343
  onDragEnd?.(event, currentValueRef.current);
324
344
  }
325
345
  const rafId = moveRafIdRef.current[index];
326
- if (rafId != null) {
327
- cancelAnimationFrame(rafId);
346
+ if (rafId != null && caf) {
347
+ caf(rafId);
328
348
  moveRafIdRef.current[index] = null;
329
349
  }
330
350
  movePendingArgsRef.current[index] = null;
331
351
  };
332
- for (const key of endKeys) {
352
+ for (const key of END_KEYS) {
333
353
  wrapAfter(key, emitEnd);
334
354
  }
355
+ const map = cached ?? new Map();
356
+ map.set(index, wrapped);
357
+ if (!cached) {
358
+ enhancedHandlersCacheRef.current.set(handlers, map);
359
+ }
335
360
  return wrapped;
336
361
  }, [onDragStart, onDragEnd]);
337
362
  const values = state.values;
338
- const thumbPercents = values.map(value => ((value ?? resolvedMin) - resolvedMin) / scope * 100);
339
- const thumbVisualPercents = thumbPercents.map(percent => orientation === 'vertical' ? reverse ? percent : 100 - percent : reverseX ? 100 - percent : percent);
340
- const first = thumbVisualPercents[0] ?? 0;
341
- const second = thumbVisualPercents[1] ?? first;
342
- const activeRange = range && thumbVisualPercents.length > 1 ? {
343
- offset: Math.min(first, second),
344
- size: Math.max(first, second) - Math.min(first, second)
345
- } : (orientation === 'horizontal' ? !reverseX : reverse) ? {
346
- offset: 0,
347
- size: first
348
- } : {
349
- offset: first,
350
- size: 100 - first
351
- };
352
- const activeTrackStyle = {
353
- ...(orientation === 'vertical' ? {
354
- left: 0,
355
- width: '100%'
363
+ const thumbPercents = useMemo(() => values.map(value => ((value ?? resolvedMin) - resolvedMin) / scope * 100), [resolvedMin, scope, values]);
364
+ const thumbVisualPercents = useMemo(() => thumbPercents.map(percent => orientation === 'vertical' ? reverse ? percent : 100 - percent : reverseX ? 100 - percent : percent), [orientation, reverse, reverseX, thumbPercents]);
365
+ const activeRange = useMemo(() => {
366
+ const first = thumbVisualPercents[0] ?? 0;
367
+ const second = thumbVisualPercents[1] ?? first;
368
+ return range && thumbVisualPercents.length > 1 ? {
369
+ offset: Math.min(first, second),
370
+ size: Math.max(first, second) - Math.min(first, second)
371
+ } : (orientation === 'horizontal' ? !reverseX : reverse) ? {
372
+ offset: 0,
373
+ size: first
356
374
  } : {
357
- top: 0,
358
- height: '100%'
359
- }),
360
- [orientation === 'vertical' ? 'height' : 'width']: `${Math.max(activeRange.size, 0)}%`,
361
- [orientation === 'vertical' ? 'top' : 'left']: `${Math.max(activeRange.offset, 0)}%`,
362
- backgroundColor: resolvedActiveColor,
363
- borderRadius: tokens.track.radius
364
- };
365
- const trackBaseStyle = orientation === 'vertical' ? [styles.trackVertical, {
375
+ offset: first,
376
+ size: 100 - first
377
+ };
378
+ }, [orientation, range, reverse, reverseX, thumbVisualPercents]);
379
+ const activeTrackStyle = useMemo(() => {
380
+ const next = {
381
+ backgroundColor: resolvedActiveColor,
382
+ borderRadius: tokens.track.radius
383
+ };
384
+ if (orientation === 'vertical') {
385
+ next.left = 0;
386
+ next.width = '100%';
387
+ next.height = `${Math.max(activeRange.size, 0)}%`;
388
+ next.top = `${Math.max(activeRange.offset, 0)}%`;
389
+ } else {
390
+ next.top = 0;
391
+ next.height = '100%';
392
+ next.width = `${Math.max(activeRange.size, 0)}%`;
393
+ next.left = `${Math.max(activeRange.offset, 0)}%`;
394
+ }
395
+ return next;
396
+ }, [activeRange.offset, activeRange.size, orientation, resolvedActiveColor, tokens.track.radius]);
397
+ const trackBaseStyle = useMemo(() => orientation === 'vertical' ? [styles.trackVertical, {
366
398
  width: resolvedTrackHeight,
367
399
  backgroundColor: resolvedInactiveColor,
368
400
  alignSelf: 'center'
369
401
  }] : [styles.trackHorizontal, {
370
402
  height: resolvedTrackHeight,
371
403
  backgroundColor: resolvedInactiveColor
372
- }];
404
+ }], [orientation, resolvedInactiveColor, resolvedTrackHeight]);
373
405
  const isButtonFunction = isFunction(button);
374
406
  const sharedThumb = isButtonFunction ? button({
375
407
  value: currentValue
376
408
  }) : button ?? thumb;
377
409
  const leftThumbContent = leftButton ?? leftThumb ?? sharedThumb;
378
410
  const rightThumbContent = rightButton ?? rightThumb ?? sharedThumb;
379
- const resolveThumbContent = (index, total) => total > 1 ? index === 0 ? leftThumbContent : rightThumbContent : sharedThumb;
380
- const webGestureStyle = Platform.OS === 'web' ? {
411
+ const resolveThumbContent = useCallback((index, total) => total > 1 ? index === 0 ? leftThumbContent : rightThumbContent : sharedThumb, [leftThumbContent, rightThumbContent, sharedThumb]);
412
+ const webGestureStyle = useMemo(() => Platform.OS === 'web' ? {
381
413
  touchAction: orientation === 'horizontal' ? 'pan-y' : 'none',
382
414
  userSelect: 'none'
383
- } : undefined;
415
+ } : undefined, [orientation]);
416
+ const baseTrackPressableStyle = useMemo(() => [styles.trackPressable, orientation === 'vertical' ? styles.trackPressableVertical : null, webGestureStyle], [orientation, webGestureStyle]);
417
+ const trackPressableStyleFn = useCallback(pressableState => [baseTrackPressableStyle, trackAriaStyle(pressableState)], [baseTrackPressableStyle, trackAriaStyle]);
418
+ const trackPressableStyle = useMemo(() => trackAriaStyle && isFunction(trackAriaStyle) ? trackPressableStyleFn : [baseTrackPressableStyle, trackAriaStyle], [baseTrackPressableStyle, trackAriaStyle, trackPressableStyleFn]);
419
+ const containerStyles = useMemo(() => [styles.container, {
420
+ paddingVertical: tokens.spacing.containerPaddingVertical
421
+ }, orientation === 'vertical' && [styles.verticalContainer, {
422
+ minHeight: tokens.layout.verticalMinHeight,
423
+ width: tokens.layout.verticalWidth
424
+ }], disabled && {
425
+ opacity: tokens.states.disabledOpacity
426
+ }, style], [disabled, orientation, style, tokens.layout.verticalMinHeight, tokens.layout.verticalWidth, tokens.spacing.containerPaddingVertical, tokens.states.disabledOpacity]);
384
427
  return /*#__PURE__*/React.createElement(View, _extends({
385
- style: [styles.container, {
386
- paddingVertical: tokens.spacing.containerPaddingVertical
387
- }, orientation === 'vertical' && [styles.verticalContainer, {
388
- minHeight: tokens.layout.verticalMinHeight,
389
- width: tokens.layout.verticalWidth
390
- }], disabled && {
391
- opacity: tokens.states.disabledOpacity
392
- }, style],
428
+ style: containerStyles,
393
429
  onLayout: containerOnLayout
394
430
  }, rest), /*#__PURE__*/React.createElement(View, {
395
431
  style: [styles.trackWrapper, orientation === 'vertical' && styles.trackWrapperVertical]
396
432
  }, /*#__PURE__*/React.createElement(Pressable, _extends({
397
433
  ref: trackRef
398
- }, restTrackProps, {
399
- onPress: handleTrackPress,
434
+ }, trackInteractionProps, {
400
435
  disabled: ariaDisabled,
401
436
  onLayout: event => {
402
437
  handleTrackLayout(event);
403
438
  trackAriaOnLayout?.(event);
404
439
  },
405
- style: [styles.trackPressable, orientation === 'vertical' && styles.trackPressableVertical, webGestureStyle, trackAriaStyle]
440
+ style: trackPressableStyle
406
441
  }), /*#__PURE__*/React.createElement(View, {
407
442
  style: [styles.trackBase, {
408
443
  borderRadius: tokens.track.radius
@@ -0,0 +1,49 @@
1
+ import { clamp, isFiniteNumber, isFunction } from '../../utils';
2
+ export const clampValue = (value, min, max) => {
3
+ if (!isFiniteNumber(value)) {
4
+ return min;
5
+ }
6
+ return clamp(value, min, max);
7
+ };
8
+ export const isSameLayout = (a, b) => a.width === b.width && a.height === b.height && a.x === b.x && a.y === b.y;
9
+ export const normalizeValue = (value, range, min, max) => {
10
+ if (range) {
11
+ const raw = Array.isArray(value) ? value : isFiniteNumber(value) ? [min, value] : [min, min];
12
+ const first = clampValue(raw[0], min, max);
13
+ const second = clampValue(raw[1] ?? raw[0], min, max);
14
+ return first <= second ? [first, second] : [second, first];
15
+ }
16
+ const single = Array.isArray(value) ? value[0] : value;
17
+ return [clampValue(single, min, max)];
18
+ };
19
+ export const toSliderValue = (values, range, fallback) => {
20
+ if (range) {
21
+ const start = values[0] ?? fallback;
22
+ const end = values[1] ?? start;
23
+ return [start, end];
24
+ }
25
+ return values[0] ?? fallback;
26
+ };
27
+ export const createAccessibilityProps = inputProps => {
28
+ if (!inputProps) return {};
29
+ const {
30
+ role,
31
+ ['aria-value']: ariaValue,
32
+ accessibilityActions,
33
+ onAccessibilityAction,
34
+ disabled
35
+ } = inputProps;
36
+ return {
37
+ accessible: true,
38
+ accessibilityRole: role ?? 'adjustable',
39
+ accessibilityValue: ariaValue,
40
+ accessibilityActions,
41
+ onAccessibilityAction,
42
+ accessibilityState: {
43
+ disabled
44
+ }
45
+ };
46
+ };
47
+ export const defaultNumberFormatter = typeof Intl !== 'undefined' && isFunction(Intl.NumberFormat) ? new Intl.NumberFormat() : {
48
+ format: val => String(val)
49
+ };