react-native-system-ui 0.0.5 → 0.0.7

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 (372) hide show
  1. package/README.md +12 -4
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +28 -22
  3. package/dist/cjs/components/area/Area.js +72 -6
  4. package/dist/cjs/components/area/tokens.js +11 -0
  5. package/dist/cjs/components/avatar/Avatar.js +42 -10
  6. package/dist/cjs/components/badge/Badge.js +10 -10
  7. package/dist/cjs/components/badge/tokens.js +4 -0
  8. package/dist/cjs/components/button/Button.js +16 -65
  9. package/dist/cjs/components/button/ButtonContext.js +7 -10
  10. package/dist/cjs/components/button/ButtonGroup.js +13 -15
  11. package/dist/cjs/components/button/tokens.js +1 -5
  12. package/dist/cjs/components/calendar/Calendar.js +23 -12
  13. package/dist/cjs/components/cascader/Cascader.js +18 -13
  14. package/dist/cjs/components/cell/Cell.js +3 -3
  15. package/dist/cjs/components/cell/CellGroup.js +26 -21
  16. package/dist/cjs/components/checkbox/Checkbox.js +5 -4
  17. package/dist/cjs/components/checkbox/CheckboxContext.js +7 -10
  18. package/dist/cjs/components/checkbox/CheckboxGroup.js +24 -21
  19. package/dist/cjs/components/circle/Circle.js +6 -6
  20. package/dist/cjs/components/collapse/Collapse.js +10 -10
  21. package/dist/cjs/components/config-provider/locale/en-US.js +66 -4
  22. package/dist/cjs/components/config-provider/locale/zh-CN.js +74 -2
  23. package/dist/cjs/components/config-provider/tokens.js +11 -0
  24. package/dist/cjs/components/count-down/CountDown.js +6 -6
  25. package/dist/cjs/components/datetime-picker/DatetimePicker.js +6 -6
  26. package/dist/cjs/components/datetime-picker/tokens.js +11 -0
  27. package/dist/cjs/components/dialog/Dialog.js +39 -34
  28. package/dist/cjs/components/dialog/tokens.js +1 -4
  29. package/dist/cjs/components/divider/Divider.js +36 -1
  30. package/dist/cjs/components/field/Field.js +303 -201
  31. package/dist/cjs/components/flex/Flex.js +7 -3
  32. package/dist/cjs/components/flex/FlexContext.js +7 -14
  33. package/dist/cjs/components/form/Form.js +112 -122
  34. package/dist/cjs/components/form/FormContext.js +7 -10
  35. package/dist/cjs/components/form/FormItem.js +30 -4
  36. package/dist/cjs/components/form/FormList.js +16 -3
  37. package/dist/cjs/components/form/tokens.js +11 -0
  38. package/dist/cjs/components/form/utils.js +2 -1
  39. package/dist/cjs/components/grid/Grid.js +45 -31
  40. package/dist/cjs/components/grid/GridContext.js +7 -10
  41. package/dist/cjs/components/grid/GridItem.js +22 -22
  42. package/dist/cjs/components/image/Image.js +17 -13
  43. package/dist/cjs/components/image-preview/ImagePreview.js +43 -41
  44. package/dist/cjs/components/index.js +43 -141
  45. package/dist/cjs/components/input/Input.js +19 -5
  46. package/dist/cjs/components/loading/Loading.js +10 -139
  47. package/dist/cjs/components/loading/tokens.js +0 -24
  48. package/dist/cjs/components/notice-bar/NoticeBar.js +45 -41
  49. package/dist/cjs/components/notify/Notify.js +63 -22
  50. package/dist/cjs/components/notify/imperative.js +2 -2
  51. package/dist/cjs/components/notify/tokens.js +11 -1
  52. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +6 -6
  53. package/dist/cjs/components/overlay/Overlay.js +70 -77
  54. package/dist/cjs/components/overlay/index.js +13 -27
  55. package/dist/cjs/components/overlay/tokens.js +4 -31
  56. package/dist/cjs/components/password-input/PasswordInput.js +2 -41
  57. package/dist/cjs/components/password-input/tokens.js +53 -0
  58. package/dist/cjs/components/picker/Picker.js +618 -38
  59. package/dist/cjs/components/popup/Popup.js +60 -47
  60. package/dist/cjs/components/portal/Portal.js +39 -31
  61. package/dist/cjs/components/portal/PortalHost.js +258 -213
  62. package/dist/cjs/components/portal/tokens.js +11 -0
  63. package/dist/cjs/components/progress/Progress.js +77 -36
  64. package/dist/cjs/components/progress/index.js +6 -0
  65. package/dist/cjs/components/radio/Radio.js +35 -12
  66. package/dist/cjs/components/radio/RadioContext.js +7 -10
  67. package/dist/cjs/components/radio/RadioGroup.js +23 -20
  68. package/dist/cjs/components/safe-area-view/tokens.js +11 -0
  69. package/dist/cjs/components/search/Search.js +16 -16
  70. package/dist/cjs/components/selector/Selector.js +6 -6
  71. package/dist/cjs/components/share-sheet/ShareSheet.js +50 -46
  72. package/dist/cjs/components/sidebar/Sidebar.js +27 -22
  73. package/dist/cjs/components/sidebar/SidebarItem.js +27 -22
  74. package/dist/cjs/components/skeleton/Skeleton.js +34 -21
  75. package/dist/cjs/components/slider/Slider.js +135 -78
  76. package/dist/cjs/components/stepper/Stepper.js +12 -10
  77. package/dist/cjs/components/swiper/Swiper.js +247 -710
  78. package/dist/cjs/components/swiper/SwiperItem.js +5 -33
  79. package/dist/cjs/components/swiper/tokens.js +11 -0
  80. package/dist/cjs/components/switch/Switch.js +46 -98
  81. package/dist/cjs/components/switch/tokens.js +1 -55
  82. package/dist/cjs/components/tabbar/Tabbar.js +26 -22
  83. package/dist/cjs/components/tabbar/TabbarItem.js +23 -22
  84. package/dist/cjs/components/tabbar/tokens.js +0 -2
  85. package/dist/cjs/components/tabs/Tabs.js +268 -94
  86. package/dist/cjs/components/tabs/index.js +4 -5
  87. package/dist/cjs/components/toast/Toast.js +72 -27
  88. package/dist/cjs/components/toast/imperative.js +2 -2
  89. package/dist/cjs/hooks/gesture/useGestureScroll.js +1 -2
  90. package/dist/cjs/hooks/index.js +12 -12
  91. package/dist/cjs/hooks/overlay/index.js +27 -0
  92. package/dist/cjs/hooks/useHairline.js +0 -4
  93. package/dist/cjs/platform/scrollLock.js +1 -1
  94. package/dist/cjs/utils/compare.js +26 -0
  95. package/dist/cjs/utils/index.js +11 -0
  96. package/dist/es/components/action-sheet/ActionSheet.js +29 -23
  97. package/dist/es/components/area/Area.js +73 -7
  98. package/dist/es/components/area/tokens.js +5 -0
  99. package/dist/es/components/avatar/Avatar.js +42 -10
  100. package/dist/es/components/badge/Badge.js +11 -11
  101. package/dist/es/components/badge/tokens.js +4 -0
  102. package/dist/es/components/button/Button.js +17 -65
  103. package/dist/es/components/button/ButtonContext.js +1 -2
  104. package/dist/es/components/button/ButtonGroup.js +10 -12
  105. package/dist/es/components/button/tokens.js +1 -5
  106. package/dist/es/components/calendar/Calendar.js +24 -13
  107. package/dist/es/components/cascader/Cascader.js +16 -11
  108. package/dist/es/components/cell/Cell.js +4 -4
  109. package/dist/es/components/cell/CellGroup.js +25 -20
  110. package/dist/es/components/checkbox/Checkbox.js +5 -4
  111. package/dist/es/components/checkbox/CheckboxContext.js +1 -2
  112. package/dist/es/components/checkbox/CheckboxGroup.js +24 -21
  113. package/dist/es/components/circle/Circle.js +7 -7
  114. package/dist/es/components/collapse/Collapse.js +11 -11
  115. package/dist/es/components/config-provider/locale/en-US.js +66 -4
  116. package/dist/es/components/config-provider/locale/zh-CN.js +74 -2
  117. package/dist/es/components/config-provider/tokens.js +5 -0
  118. package/dist/es/components/count-down/CountDown.js +7 -7
  119. package/dist/es/components/datetime-picker/DatetimePicker.js +7 -7
  120. package/dist/es/components/datetime-picker/tokens.js +5 -0
  121. package/dist/es/components/dialog/Dialog.js +40 -35
  122. package/dist/es/components/dialog/tokens.js +1 -4
  123. package/dist/es/components/divider/Divider.js +36 -1
  124. package/dist/es/components/field/Field.js +304 -202
  125. package/dist/es/components/flex/Flex.js +5 -1
  126. package/dist/es/components/flex/FlexContext.js +1 -6
  127. package/dist/es/components/form/Form.js +89 -99
  128. package/dist/es/components/form/FormContext.js +1 -2
  129. package/dist/es/components/form/FormItem.js +32 -6
  130. package/dist/es/components/form/FormList.js +18 -5
  131. package/dist/es/components/form/tokens.js +5 -0
  132. package/dist/es/components/form/utils.js +1 -0
  133. package/dist/es/components/grid/Grid.js +43 -29
  134. package/dist/es/components/grid/GridContext.js +1 -2
  135. package/dist/es/components/grid/GridItem.js +24 -24
  136. package/dist/es/components/image/Image.js +18 -14
  137. package/dist/es/components/image-preview/ImagePreview.js +44 -42
  138. package/dist/es/components/index.js +2 -17
  139. package/dist/es/components/input/Input.js +20 -6
  140. package/dist/es/components/loading/Loading.js +10 -139
  141. package/dist/es/components/loading/tokens.js +0 -24
  142. package/dist/es/components/notice-bar/NoticeBar.js +46 -42
  143. package/dist/es/components/notify/Notify.js +63 -22
  144. package/dist/es/components/notify/imperative.js +2 -2
  145. package/dist/es/components/notify/tokens.js +5 -1
  146. package/dist/es/components/number-keyboard/NumberKeyboard.js +7 -7
  147. package/dist/es/components/overlay/Overlay.js +58 -75
  148. package/dist/es/components/overlay/index.js +3 -4
  149. package/dist/es/components/overlay/tokens.js +3 -29
  150. package/dist/es/components/password-input/PasswordInput.js +1 -40
  151. package/dist/es/components/password-input/tokens.js +41 -0
  152. package/dist/es/components/picker/Picker.js +610 -34
  153. package/dist/es/components/popup/Popup.js +62 -49
  154. package/dist/es/components/portal/Portal.js +37 -31
  155. package/dist/es/components/portal/PortalHost.js +257 -211
  156. package/dist/es/components/portal/tokens.js +5 -0
  157. package/dist/es/components/progress/Progress.js +76 -36
  158. package/dist/es/components/progress/index.js +2 -1
  159. package/dist/es/components/radio/Radio.js +37 -14
  160. package/dist/es/components/radio/RadioContext.js +1 -2
  161. package/dist/es/components/radio/RadioGroup.js +23 -20
  162. package/dist/es/components/safe-area-view/tokens.js +5 -0
  163. package/dist/es/components/search/Search.js +17 -17
  164. package/dist/es/components/selector/Selector.js +7 -7
  165. package/dist/es/components/share-sheet/ShareSheet.js +51 -47
  166. package/dist/es/components/sidebar/Sidebar.js +26 -21
  167. package/dist/es/components/sidebar/SidebarItem.js +26 -22
  168. package/dist/es/components/skeleton/Skeleton.js +35 -22
  169. package/dist/es/components/slider/Slider.js +132 -75
  170. package/dist/es/components/stepper/Stepper.js +13 -11
  171. package/dist/es/components/swiper/Swiper.js +248 -711
  172. package/dist/es/components/swiper/SwiperItem.js +1 -21
  173. package/dist/es/components/swiper/tokens.js +5 -0
  174. package/dist/es/components/switch/Switch.js +49 -101
  175. package/dist/es/components/switch/tokens.js +1 -49
  176. package/dist/es/components/tabbar/Tabbar.js +27 -23
  177. package/dist/es/components/tabbar/TabbarItem.js +22 -22
  178. package/dist/es/components/tabbar/tokens.js +0 -2
  179. package/dist/es/components/tabs/Tabs.js +264 -90
  180. package/dist/es/components/tabs/index.js +1 -2
  181. package/dist/es/components/toast/Toast.js +72 -28
  182. package/dist/es/components/toast/imperative.js +2 -2
  183. package/dist/es/hooks/gesture/useGestureScroll.js +1 -2
  184. package/dist/es/hooks/index.js +1 -1
  185. package/dist/es/hooks/overlay/index.js +3 -0
  186. package/dist/es/hooks/useHairline.js +0 -4
  187. package/dist/es/platform/scrollLock.js +1 -1
  188. package/dist/es/utils/compare.js +18 -0
  189. package/dist/es/utils/index.js +1 -1
  190. package/dist/types/components/area/tokens.d.ts +3 -0
  191. package/dist/types/components/avatar/Avatar.d.ts +4 -2
  192. package/dist/types/components/button/ButtonContext.d.ts +2 -16
  193. package/dist/types/components/button/ButtonGroup.d.ts +14 -1
  194. package/dist/types/components/button/index.d.ts +1 -1
  195. package/dist/types/components/checkbox/CheckboxContext.d.ts +2 -16
  196. package/dist/types/components/checkbox/CheckboxGroup.d.ts +15 -1
  197. package/dist/types/components/collapse/Collapse.d.ts +0 -1
  198. package/dist/types/components/config-provider/LocaleContext.d.ts +2 -74
  199. package/dist/types/components/config-provider/tokens.d.ts +3 -0
  200. package/dist/types/components/config-provider/useLocale.d.ts +1 -74
  201. package/dist/types/components/datetime-picker/tokens.d.ts +3 -0
  202. package/dist/types/components/flex/Flex.d.ts +6 -0
  203. package/dist/types/components/flex/FlexContext.d.ts +2 -8
  204. package/dist/types/components/form/Form.d.ts +15 -1
  205. package/dist/types/components/form/FormContext.d.ts +2 -17
  206. package/dist/types/components/form/tokens.d.ts +3 -0
  207. package/dist/types/components/form/utils.d.ts +1 -0
  208. package/dist/types/components/grid/Grid.d.ts +16 -1
  209. package/dist/types/components/grid/GridContext.d.ts +2 -17
  210. package/dist/types/components/index.d.ts +3 -33
  211. package/dist/types/components/loading/index.d.ts +1 -1
  212. package/dist/types/components/notify/Notify.d.ts +1 -0
  213. package/dist/types/components/overlay/Overlay.d.ts +6 -1
  214. package/dist/types/components/overlay/index.d.ts +2 -3
  215. package/dist/types/components/overlay/tokens.d.ts +2 -3
  216. package/dist/types/components/password-input/PasswordInput.d.ts +0 -39
  217. package/dist/types/components/password-input/tokens.d.ts +40 -0
  218. package/dist/types/components/picker/Picker.d.ts +18 -2
  219. package/dist/types/components/picker/index.d.ts +1 -1
  220. package/dist/types/components/portal/Portal.d.ts +4 -6
  221. package/dist/types/components/portal/PortalHost.d.ts +1 -15
  222. package/dist/types/components/portal/tokens.d.ts +3 -0
  223. package/dist/types/components/progress/Progress.d.ts +4 -0
  224. package/dist/types/components/progress/index.d.ts +2 -1
  225. package/dist/types/components/radio/RadioContext.d.ts +2 -13
  226. package/dist/types/components/radio/RadioGroup.d.ts +12 -1
  227. package/dist/types/components/safe-area-view/tokens.d.ts +3 -0
  228. package/dist/types/components/swiper/Swiper.d.ts +4 -2
  229. package/dist/types/components/swiper/SwiperItem.d.ts +1 -5
  230. package/dist/types/components/swiper/tokens.d.ts +3 -0
  231. package/dist/types/components/tabs/Tabs.d.ts +8 -4
  232. package/dist/types/components/tabs/index.d.ts +3 -1
  233. package/dist/types/components/toast/Toast.d.ts +1 -4
  234. package/dist/types/hooks/aria/useAriaListBox.d.ts +0 -6
  235. package/dist/types/hooks/aria/useAriaOverlay.d.ts +0 -10
  236. package/dist/types/hooks/aria/useAriaPress.d.ts +0 -20
  237. package/dist/types/hooks/aria/useAriaToggle.d.ts +0 -3
  238. package/dist/types/hooks/index.d.ts +1 -1
  239. package/dist/types/hooks/overlay/index.d.ts +2 -0
  240. package/dist/types/hooks/useHairline.d.ts +0 -21
  241. package/dist/types/utils/compare.d.ts +2 -0
  242. package/dist/types/utils/index.d.ts +1 -0
  243. package/package.json +10 -48
  244. package/dist/cjs/components/area/utils.js +0 -74
  245. package/dist/cjs/components/cascader/utils.js +0 -20
  246. package/dist/cjs/components/config-provider/locale/base.js +0 -80
  247. package/dist/cjs/components/dropdown-menu/DropdownItem.js +0 -288
  248. package/dist/cjs/components/dropdown-menu/DropdownMenu.js +0 -340
  249. package/dist/cjs/components/dropdown-menu/DropdownMenuContext.js +0 -21
  250. package/dist/cjs/components/dropdown-menu/index.js +0 -25
  251. package/dist/cjs/components/dropdown-menu/tokens.js +0 -67
  252. package/dist/cjs/components/field/utils.js +0 -24
  253. package/dist/cjs/components/index-bar/IndexAnchor.js +0 -74
  254. package/dist/cjs/components/index-bar/IndexBar.js +0 -436
  255. package/dist/cjs/components/index-bar/index.js +0 -25
  256. package/dist/cjs/components/index-bar/tokens.js +0 -45
  257. package/dist/cjs/components/list/List.js +0 -165
  258. package/dist/cjs/components/list/index.js +0 -9
  259. package/dist/cjs/components/list/tokens.js +0 -39
  260. package/dist/cjs/components/notify/defaults.js +0 -15
  261. package/dist/cjs/components/pagination/Pagination.js +0 -160
  262. package/dist/cjs/components/pagination/index.js +0 -22
  263. package/dist/cjs/components/pagination/tokens.js +0 -103
  264. package/dist/cjs/components/picker/WheelPicker.js +0 -492
  265. package/dist/cjs/components/picker/utils.js +0 -138
  266. package/dist/cjs/components/pull-refresh/PullRefresh.js +0 -378
  267. package/dist/cjs/components/pull-refresh/index.js +0 -16
  268. package/dist/cjs/components/pull-refresh/tokens.js +0 -22
  269. package/dist/cjs/components/rate/Rate.js +0 -269
  270. package/dist/cjs/components/rate/index.js +0 -15
  271. package/dist/cjs/components/rate/tokens.js +0 -60
  272. package/dist/cjs/components/slider/utils.js +0 -60
  273. package/dist/cjs/components/swiper/useSwiperWeb.js +0 -209
  274. package/dist/cjs/components/swiper/utils.js +0 -49
  275. package/dist/cjs/components/tabs/TabPane.js +0 -9
  276. package/dist/cjs/components/tabs/useTabsAnimation.js +0 -74
  277. package/dist/cjs/components/tabs/useTabsScroll.js +0 -133
  278. package/dist/cjs/components/tabs/utils.js +0 -34
  279. package/dist/cjs/components/types.js +0 -1
  280. package/dist/cjs/components/uploader/Uploader.js +0 -557
  281. package/dist/cjs/components/uploader/index.js +0 -22
  282. package/dist/cjs/components/uploader/tokens.js +0 -58
  283. package/dist/cjs/components/uploader/utils.js +0 -72
  284. package/dist/cjs/hooks/usePresenceAnimation.js +0 -70
  285. package/dist/es/components/area/utils.js +0 -67
  286. package/dist/es/components/cascader/utils.js +0 -13
  287. package/dist/es/components/config-provider/locale/base.js +0 -74
  288. package/dist/es/components/dropdown-menu/DropdownItem.js +0 -269
  289. package/dist/es/components/dropdown-menu/DropdownMenu.js +0 -320
  290. package/dist/es/components/dropdown-menu/DropdownMenuContext.js +0 -7
  291. package/dist/es/components/dropdown-menu/index.js +0 -7
  292. package/dist/es/components/dropdown-menu/tokens.js +0 -61
  293. package/dist/es/components/field/utils.js +0 -17
  294. package/dist/es/components/index-bar/IndexAnchor.js +0 -55
  295. package/dist/es/components/index-bar/IndexBar.js +0 -417
  296. package/dist/es/components/index-bar/index.js +0 -7
  297. package/dist/es/components/index-bar/tokens.js +0 -39
  298. package/dist/es/components/list/List.js +0 -145
  299. package/dist/es/components/list/index.js +0 -2
  300. package/dist/es/components/list/tokens.js +0 -32
  301. package/dist/es/components/notify/defaults.js +0 -9
  302. package/dist/es/components/pagination/Pagination.js +0 -141
  303. package/dist/es/components/pagination/index.js +0 -4
  304. package/dist/es/components/pagination/tokens.js +0 -91
  305. package/dist/es/components/picker/WheelPicker.js +0 -473
  306. package/dist/es/components/picker/utils.js +0 -127
  307. package/dist/es/components/pull-refresh/PullRefresh.js +0 -359
  308. package/dist/es/components/pull-refresh/index.js +0 -3
  309. package/dist/es/components/pull-refresh/tokens.js +0 -16
  310. package/dist/es/components/rate/Rate.js +0 -250
  311. package/dist/es/components/rate/index.js +0 -3
  312. package/dist/es/components/rate/tokens.js +0 -53
  313. package/dist/es/components/slider/utils.js +0 -49
  314. package/dist/es/components/swiper/useSwiperWeb.js +0 -190
  315. package/dist/es/components/swiper/utils.js +0 -37
  316. package/dist/es/components/tabs/TabPane.js +0 -3
  317. package/dist/es/components/tabs/useTabsAnimation.js +0 -55
  318. package/dist/es/components/tabs/useTabsScroll.js +0 -114
  319. package/dist/es/components/tabs/utils.js +0 -19
  320. package/dist/es/components/types.js +0 -1
  321. package/dist/es/components/uploader/Uploader.js +0 -537
  322. package/dist/es/components/uploader/index.js +0 -4
  323. package/dist/es/components/uploader/tokens.js +0 -52
  324. package/dist/es/components/uploader/utils.js +0 -60
  325. package/dist/es/hooks/usePresenceAnimation.js +0 -51
  326. package/dist/types/components/area/utils.d.ts +0 -2
  327. package/dist/types/components/cascader/utils.d.ts +0 -6
  328. package/dist/types/components/config-provider/locale/base.d.ts +0 -74
  329. package/dist/types/components/dropdown-menu/DropdownItem.d.ts +0 -4
  330. package/dist/types/components/dropdown-menu/DropdownMenu.d.ts +0 -4
  331. package/dist/types/components/dropdown-menu/DropdownMenuContext.d.ts +0 -17
  332. package/dist/types/components/dropdown-menu/index.d.ts +0 -8
  333. package/dist/types/components/dropdown-menu/tokens.d.ts +0 -52
  334. package/dist/types/components/field/utils.d.ts +0 -4
  335. package/dist/types/components/index-bar/IndexAnchor.d.ts +0 -4
  336. package/dist/types/components/index-bar/IndexBar.d.ts +0 -4
  337. package/dist/types/components/index-bar/index.d.ts +0 -9
  338. package/dist/types/components/index-bar/tokens.d.ts +0 -31
  339. package/dist/types/components/list/List.d.ts +0 -4
  340. package/dist/types/components/list/index.d.ts +0 -3
  341. package/dist/types/components/list/tokens.d.ts +0 -4
  342. package/dist/types/components/notify/defaults.d.ts +0 -10
  343. package/dist/types/components/pagination/Pagination.d.ts +0 -5
  344. package/dist/types/components/pagination/index.d.ts +0 -5
  345. package/dist/types/components/pagination/tokens.d.ts +0 -2
  346. package/dist/types/components/picker/WheelPicker.d.ts +0 -21
  347. package/dist/types/components/picker/utils.d.ts +0 -17
  348. package/dist/types/components/pull-refresh/PullRefresh.d.ts +0 -5
  349. package/dist/types/components/pull-refresh/index.d.ts +0 -4
  350. package/dist/types/components/pull-refresh/tokens.d.ts +0 -10
  351. package/dist/types/components/rate/Rate.d.ts +0 -4
  352. package/dist/types/components/rate/index.d.ts +0 -4
  353. package/dist/types/components/rate/tokens.d.ts +0 -4
  354. package/dist/types/components/slider/utils.d.ts +0 -42
  355. package/dist/types/components/swiper/useSwiperWeb.d.ts +0 -41
  356. package/dist/types/components/swiper/utils.d.ts +0 -17
  357. package/dist/types/components/tabs/TabPane.d.ts +0 -4
  358. package/dist/types/components/tabs/useTabsAnimation.d.ts +0 -30
  359. package/dist/types/components/tabs/useTabsScroll.d.ts +0 -23
  360. package/dist/types/components/tabs/utils.d.ts +0 -5
  361. package/dist/types/components/types.d.ts +0 -59
  362. package/dist/types/components/uploader/Uploader.d.ts +0 -4
  363. package/dist/types/components/uploader/index.d.ts +0 -5
  364. package/dist/types/components/uploader/tokens.d.ts +0 -42
  365. package/dist/types/components/uploader/utils.d.ts +0 -11
  366. package/dist/types/hooks/usePresenceAnimation.d.ts +0 -20
  367. /package/dist/cjs/{components → hooks}/overlay/OverlayStackStore.js +0 -0
  368. /package/dist/cjs/{components → hooks}/overlay/useOverlayStack.js +0 -0
  369. /package/dist/es/{components → hooks}/overlay/OverlayStackStore.js +0 -0
  370. /package/dist/es/{components → hooks}/overlay/useOverlayStack.js +0 -0
  371. /package/dist/types/{components → hooks}/overlay/OverlayStackStore.d.ts +0 -0
  372. /package/dist/types/{components → hooks}/overlay/useOverlayStack.d.ts +0 -0
@@ -1,359 +0,0 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useEffect, useRef, useState } from 'react';
3
- import { Animated, PanResponder, Platform, RefreshControl, ScrollView, StyleSheet, Text, View } from 'react-native';
4
- import { nativeDriverEnabled } from '../../platform';
5
- import { parseNumberLike } from '../../utils/number';
6
- import { isFunction, isNumber, isText, isUndefined } from '../../utils/validate';
7
- import { useLocale } from '../config-provider/useLocale';
8
- import { usePullRefreshTokens } from './tokens';
9
- const DEFAULT_SUCCESS_DURATION = 500;
10
- const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
11
- const {
12
- children,
13
- onRefresh,
14
- onRefreshEnd,
15
- refreshing,
16
- defaultRefreshing,
17
- tokensOverride,
18
- pullingText,
19
- loosingText,
20
- loadingText,
21
- successText = '刷新成功',
22
- successDuration,
23
- animationDuration,
24
- headHeight,
25
- pullDistance,
26
- disabled = false,
27
- style,
28
- ...scrollProps
29
- } = props;
30
- const isWeb = Platform.OS === 'web';
31
- const locale = useLocale();
32
- const tokens = usePullRefreshTokens(tokensOverride);
33
- const {
34
- colors,
35
- sizing
36
- } = tokens;
37
- const translateY = useRef(new Animated.Value(0)).current;
38
- const headHeightNumber = Math.max(0, parseNumberLike(headHeight, sizing.headHeight) ?? sizing.headHeight);
39
- const pullDistanceNumber = Math.max(0, parseNumberLike(pullDistance, headHeightNumber) ?? headHeightNumber);
40
- const successDurationMs = Math.max(0, parseNumberLike(successDuration, DEFAULT_SUCCESS_DURATION) ?? DEFAULT_SUCCESS_DURATION);
41
- const animationDurationMs = Math.max(0, parseNumberLike(animationDuration, 300) ?? 300);
42
- const isControlled = !isUndefined(refreshing);
43
- const [innerRefreshing, setInnerRefreshing] = useState(!!defaultRefreshing);
44
- const mergedRefreshing = isControlled ? !!refreshing : innerRefreshing;
45
- const scrollTopRef = useRef(0);
46
- const draggingRef = useRef(false);
47
- const webDragRafRef = useRef(null);
48
- const webDragPendingRef = useRef(null);
49
- const webStateUpdateAtRef = useRef(0);
50
- const webStateUpdateValueRef = useRef(0);
51
- const [distance, setDistance] = useState(0);
52
- const [showSuccess, setShowSuccess] = useState(false);
53
- const timerRef = useRef(null);
54
- const refreshEndTimerRef = useRef(null);
55
- const mergedRefreshingRef = useRef(mergedRefreshing);
56
- const refreshTriggeredRef = useRef(false);
57
- const refreshSucceededRef = useRef(false);
58
- const normalizeDistance = useCallback(nextDistance => Math.max(0, Math.round(nextDistance)), []);
59
- const updateDistanceState = useCallback(normalized => {
60
- setDistance(prev => Math.abs(prev - normalized) < 1 ? prev : normalized);
61
- }, []);
62
- const applyWebTranslate = useCallback((normalized, animate = false) => {
63
- translateY.stopAnimation();
64
- if (animate && animationDurationMs > 0) {
65
- Animated.timing(translateY, {
66
- toValue: normalized,
67
- duration: animationDurationMs,
68
- useNativeDriver: false
69
- }).start();
70
- } else {
71
- translateY.setValue(normalized);
72
- }
73
- }, [animationDurationMs, translateY]);
74
- const setDistanceValue = useCallback((nextDistance, animate = false) => {
75
- const normalized = normalizeDistance(nextDistance);
76
- if (isWeb) {
77
- applyWebTranslate(normalized, animate);
78
- }
79
- updateDistanceState(normalized);
80
- return normalized;
81
- }, [applyWebTranslate, isWeb, normalizeDistance, updateDistanceState]);
82
- const flushWebDrag = useCallback(() => {
83
- const pending = webDragPendingRef.current;
84
- if (pending == null) return;
85
- webDragPendingRef.current = null;
86
- const normalized = normalizeDistance(pending);
87
- if (isWeb) {
88
- applyWebTranslate(normalized);
89
- }
90
- const now = Date.now();
91
- if (now - webStateUpdateAtRef.current >= 32 || Math.abs(normalized - webStateUpdateValueRef.current) >= 4) {
92
- webStateUpdateAtRef.current = now;
93
- webStateUpdateValueRef.current = normalized;
94
- updateDistanceState(normalized);
95
- }
96
- }, [applyWebTranslate, isWeb, normalizeDistance, updateDistanceState]);
97
- const cancelWebDrag = useCallback(() => {
98
- if (webDragRafRef.current != null && typeof cancelAnimationFrame === 'function') {
99
- cancelAnimationFrame(webDragRafRef.current);
100
- }
101
- webDragRafRef.current = null;
102
- webDragPendingRef.current = null;
103
- }, []);
104
- const scheduleWebDrag = useCallback(nextDistance => {
105
- if (!isWeb || typeof requestAnimationFrame !== 'function') {
106
- setDistanceValue(nextDistance);
107
- return;
108
- }
109
- webDragPendingRef.current = nextDistance;
110
- if (webDragRafRef.current != null) return;
111
- webDragRafRef.current = requestAnimationFrame(() => {
112
- webDragRafRef.current = null;
113
- flushWebDrag();
114
- });
115
- }, [flushWebDrag, isWeb, setDistanceValue]);
116
- useEffect(() => {
117
- return () => {
118
- if (timerRef.current) {
119
- clearTimeout(timerRef.current);
120
- }
121
- if (refreshEndTimerRef.current) {
122
- clearTimeout(refreshEndTimerRef.current);
123
- }
124
- cancelWebDrag();
125
- };
126
- }, [cancelWebDrag]);
127
- const setRefreshing = useCallback(value => {
128
- if (!isControlled) setInnerRefreshing(value);
129
- }, [isControlled]);
130
- useEffect(() => {
131
- mergedRefreshingRef.current = mergedRefreshing;
132
- }, [mergedRefreshing]);
133
- const resolveStatusText = useCallback((text, fallback) => {
134
- const resolved = isUndefined(text) ? fallback : text;
135
- return isFunction(resolved) ? resolved({
136
- distance
137
- }) : resolved;
138
- }, [distance]);
139
- const triggerSuccess = useCallback(() => {
140
- if (successText === null || successText === undefined || successText === false) return;
141
- if (successDurationMs <= 0) return;
142
- setShowSuccess(true);
143
- if (timerRef.current) {
144
- clearTimeout(timerRef.current);
145
- }
146
- timerRef.current = setTimeout(() => {
147
- setShowSuccess(false);
148
- }, successDurationMs);
149
- }, [successDurationMs, successText]);
150
- const handleRefresh = useCallback(async () => {
151
- if (disabled || mergedRefreshing) return;
152
- if (!isFunction(onRefresh)) return;
153
- setShowSuccess(false);
154
- refreshTriggeredRef.current = true;
155
- refreshSucceededRef.current = false;
156
- setRefreshing(true);
157
- try {
158
- await onRefresh();
159
- refreshSucceededRef.current = true;
160
- } finally {
161
- setRefreshing(false);
162
- if (isFunction(onRefreshEnd)) {
163
- if (refreshEndTimerRef.current) {
164
- clearTimeout(refreshEndTimerRef.current);
165
- }
166
- refreshEndTimerRef.current = setTimeout(onRefreshEnd, 0);
167
- }
168
- if (refreshTriggeredRef.current && refreshSucceededRef.current && !mergedRefreshingRef.current) {
169
- triggerSuccess();
170
- refreshTriggeredRef.current = false;
171
- refreshSucceededRef.current = false;
172
- }
173
- }
174
- }, [disabled, mergedRefreshing, onRefresh, onRefreshEnd, setRefreshing, triggerSuccess]);
175
- useEffect(() => {
176
- if (!isWeb) return;
177
- if (draggingRef.current) return;
178
- if (disabled) {
179
- setDistanceValue(0, true);
180
- return;
181
- }
182
- if (mergedRefreshing || showSuccess) {
183
- setDistanceValue(headHeightNumber, true);
184
- return;
185
- }
186
- setDistanceValue(0, true);
187
- }, [disabled, headHeightNumber, isWeb, mergedRefreshing, setDistanceValue, showSuccess]);
188
- useEffect(() => {
189
- if (isWeb) return;
190
- if (!mergedRefreshing && !showSuccess) return;
191
- setDistanceValue(0);
192
- }, [isWeb, mergedRefreshing, setDistanceValue, showSuccess]);
193
- useEffect(() => {
194
- if (!refreshTriggeredRef.current) return;
195
- if (mergedRefreshing) return;
196
- if (!refreshSucceededRef.current) {
197
- refreshTriggeredRef.current = false;
198
- refreshSucceededRef.current = false;
199
- return;
200
- }
201
- if (showSuccess) {
202
- refreshTriggeredRef.current = false;
203
- refreshSucceededRef.current = false;
204
- return;
205
- }
206
- triggerSuccess();
207
- refreshTriggeredRef.current = false;
208
- refreshSucceededRef.current = false;
209
- }, [mergedRefreshing, showSuccess, triggerSuccess]);
210
- const status = mergedRefreshing ? 'loading' : showSuccess ? 'success' : disabled || distance === 0 ? 'normal' : distance < pullDistanceNumber ? 'pulling' : 'loosing';
211
- const opacity = useRef(new Animated.Value(status === 'normal' ? 0 : 1)).current;
212
- useEffect(() => {
213
- const toValue = status === 'normal' ? 0 : 1;
214
- opacity.stopAnimation();
215
- if (animationDurationMs <= 0) {
216
- opacity.setValue(toValue);
217
- return;
218
- }
219
- Animated.timing(opacity, {
220
- toValue,
221
- duration: animationDurationMs,
222
- useNativeDriver: nativeDriverEnabled
223
- }).start();
224
- }, [animationDurationMs, opacity, status]);
225
- const statusNode = (() => {
226
- switch (status) {
227
- case 'pulling':
228
- return resolveStatusText(pullingText, locale.vanPullRefresh.pulling);
229
- case 'loosing':
230
- return resolveStatusText(loosingText, locale.vanPullRefresh.loosing);
231
- case 'loading':
232
- return resolveStatusText(loadingText, locale.vanPullRefresh.loading);
233
- case 'success':
234
- return resolveStatusText(successText, '刷新成功');
235
- default:
236
- return null;
237
- }
238
- })();
239
- const shouldReserveHead = (status === 'loading' || status === 'success') && distance === 0;
240
- const flattenedContainerStyle = StyleSheet.flatten(scrollProps.contentContainerStyle);
241
- const basePaddingTop = isNumber(flattenedContainerStyle?.paddingTop) ? flattenedContainerStyle.paddingTop : 0;
242
- const contentContainerStyle = shouldReserveHead ? [scrollProps.contentContainerStyle, {
243
- paddingTop: basePaddingTop + headHeightNumber
244
- }] : scrollProps.contentContainerStyle;
245
- const onScrollProp = scrollProps.onScroll;
246
- const handleScroll = useCallback(event => {
247
- onScrollProp?.(event);
248
- const offset = event.nativeEvent.contentOffset?.y ?? 0;
249
- if (isWeb) {
250
- scrollTopRef.current = Math.max(0, offset);
251
- return;
252
- }
253
- if (disabled) return;
254
- if (!isFunction(onRefresh) || mergedRefreshing || showSuccess) {
255
- setDistanceValue(0);
256
- return;
257
- }
258
- setDistanceValue(offset < 0 ? -offset : 0);
259
- }, [disabled, isWeb, mergedRefreshing, onRefresh, onScrollProp, setDistanceValue, showSuccess]);
260
- const panResponder = (() => {
261
- if (!isWeb || !isFunction(onRefresh)) return null;
262
- const easeDistance = raw => {
263
- const pullDistance = pullDistanceNumber;
264
- let eased = raw;
265
- if (eased > pullDistance) {
266
- eased = eased < pullDistance * 2 ? pullDistance + (eased - pullDistance) / 2 : pullDistance * 1.5 + (eased - pullDistance * 2) / 4;
267
- }
268
- return Math.round(eased);
269
- };
270
- return PanResponder.create({
271
- onMoveShouldSetPanResponder: (_event, gestureState) => {
272
- if (disabled) return false;
273
- if (mergedRefreshingRef.current) return false;
274
- if (showSuccess) return false;
275
- if (scrollTopRef.current > 0) return false;
276
- const {
277
- dx,
278
- dy
279
- } = gestureState;
280
- if (dy <= 0) return false;
281
- if (Math.abs(dy) <= Math.abs(dx)) return false;
282
- return true;
283
- },
284
- onPanResponderGrant: () => {
285
- draggingRef.current = true;
286
- },
287
- onPanResponderMove: (event, gestureState) => {
288
- if (disabled) return;
289
- if (mergedRefreshingRef.current) return;
290
- if (showSuccess) return;
291
- if (scrollTopRef.current > 0) return;
292
- const raw = Math.max(0, gestureState.dy ?? 0);
293
- scheduleWebDrag(easeDistance(raw));
294
- event.preventDefault?.();
295
- },
296
- onPanResponderRelease: async (_event, gestureState) => {
297
- draggingRef.current = false;
298
- cancelWebDrag();
299
- if (disabled) return;
300
- if (mergedRefreshingRef.current) return;
301
- if (showSuccess) return;
302
- const nextDistance = easeDistance(Math.max(0, gestureState.dy));
303
- const shouldRefresh = nextDistance >= pullDistanceNumber;
304
- if (shouldRefresh) {
305
- setDistanceValue(headHeightNumber, true);
306
- await handleRefresh();
307
- return;
308
- }
309
- setDistanceValue(0, true);
310
- },
311
- onPanResponderTerminate: () => {
312
- draggingRef.current = false;
313
- cancelWebDrag();
314
- setDistanceValue(0, true);
315
- }
316
- });
317
- })();
318
- return /*#__PURE__*/React.createElement(ScrollView, _extends({}, scrollProps, {
319
- ref: ref,
320
- style: style,
321
- contentContainerStyle: contentContainerStyle,
322
- refreshControl: /*#__PURE__*/React.createElement(RefreshControl, {
323
- refreshing: !!mergedRefreshing,
324
- onRefresh: handleRefresh,
325
- enabled: !disabled && isFunction(onRefresh)
326
- }),
327
- onScroll: handleScroll,
328
- scrollEventThrottle: 16
329
- }), /*#__PURE__*/React.createElement(Animated.View, _extends({}, panResponder ? panResponder.panHandlers : {}, {
330
- style: isWeb ? {
331
- transform: [{
332
- translateY
333
- }]
334
- } : undefined
335
- }), /*#__PURE__*/React.createElement(View, {
336
- pointerEvents: "none",
337
- style: [styles.head, {
338
- height: headHeightNumber,
339
- marginTop: -headHeightNumber
340
- }]
341
- }, /*#__PURE__*/React.createElement(Animated.View, {
342
- style: {
343
- opacity
344
- }
345
- }, isText(statusNode) ? /*#__PURE__*/React.createElement(Text, {
346
- style: {
347
- color: status === 'success' ? colors.success : colors.text
348
- }
349
- }, statusNode) : statusNode)), children));
350
- });
351
- PullRefresh.displayName = 'PullRefresh';
352
- const styles = StyleSheet.create({
353
- head: {
354
- alignItems: 'center',
355
- justifyContent: 'flex-end',
356
- paddingBottom: 8
357
- }
358
- });
359
- export default PullRefresh;
@@ -1,3 +0,0 @@
1
- import PullRefresh from './PullRefresh';
2
- export { usePullRefreshTokens } from './tokens';
3
- export default PullRefresh;
@@ -1,16 +0,0 @@
1
- import { createComponentTokensHook } from '../../design-system';
2
- const createTokens = foundations => {
3
- const {
4
- palette
5
- } = foundations;
6
- return {
7
- colors: {
8
- text: palette.default[600],
9
- success: palette.success?.[500] ?? '#4caf50'
10
- },
11
- sizing: {
12
- headHeight: 50
13
- }
14
- };
15
- };
16
- export const usePullRefreshTokens = createComponentTokensHook('pullRefresh', createTokens);
@@ -1,250 +0,0 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useRef } from 'react';
3
- import { Pressable, StyleSheet, Text, View } from 'react-native';
4
- import { useRateTokens } from './tokens';
5
- import { useControllableValue } from '../../hooks';
6
- import { clamp, parseNumber, isFiniteNumber } from '../../utils';
7
- const DEFAULT_CHARACTER = '★';
8
- export const Rate = /*#__PURE__*/React.memo(props => {
9
- const {
10
- tokensOverride,
11
- count: countProp,
12
- allowHalf: allowHalfProp,
13
- size: sizeProp,
14
- gutter: gutterProp,
15
- color,
16
- voidColor,
17
- disabledColor,
18
- icon,
19
- voidIcon,
20
- character,
21
- disabled: disabledProp,
22
- readOnly: readOnlyProp,
23
- touchable: touchableProp,
24
- onIconPress,
25
- iconStyle,
26
- itemStyle,
27
- style,
28
- ...rest
29
- } = props;
30
- const tokens = useRateTokens(tokensOverride);
31
- const count = countProp ?? tokens.defaults.count;
32
- const allowHalf = allowHalfProp ?? tokens.defaults.allowHalf;
33
- const size = sizeProp ?? tokens.defaults.size;
34
- const gutter = gutterProp ?? tokens.defaults.gutter;
35
- const disabled = disabledProp ?? tokens.defaults.disabled;
36
- const readOnly = readOnlyProp ?? tokens.defaults.readOnly;
37
- const touchable = touchableProp ?? tokens.defaults.touchable;
38
- const resolvedCount = Math.max(1, Math.floor(parseNumber(count, tokens.defaults.count)));
39
- const resolvedSize = Math.max(0, parseNumber(size, tokens.defaults.size));
40
- const resolvedGutter = Math.max(0, parseNumber(gutter, tokens.defaults.gutter));
41
- const [rawValue, triggerChange] = useControllableValue(props, {
42
- defaultValue: 0
43
- });
44
- const normalizedValue = clamp(Number(rawValue ?? 0), 0, resolvedCount);
45
- const displayValue = allowHalf ? readOnly ? normalizedValue : Math.floor(normalizedValue * 2) / 2 : Math.floor(normalizedValue);
46
- const interactive = !disabled && !readOnly;
47
- const minScore = allowHalf ? 0.5 : 1;
48
- const activeTint = disabled ? disabledColor ?? tokens.colors.disabled : color ?? tokens.colors.active;
49
- const voidTint = disabled ? disabledColor ?? tokens.colors.disabled : voidColor ?? tokens.colors.inactive;
50
- const requestValueChange = nextScore => {
51
- if (nextScore === normalizedValue) return false;
52
- triggerChange(nextScore);
53
- return true;
54
- };
55
- const evaluatePress = (index, event) => {
56
- if (!interactive) return;
57
- const baseScore = index + 1;
58
- let nextScore = baseScore;
59
- if (allowHalf && event) {
60
- const nativeEvent = event.nativeEvent;
61
- let x;
62
- let width;
63
- const locationX = nativeEvent.locationX;
64
- if (isFiniteNumber(locationX)) {
65
- x = locationX;
66
- } else {
67
- const clientX = nativeEvent.clientX;
68
- if (isFiniteNumber(clientX)) {
69
- const rect = event.currentTarget?.getBoundingClientRect?.();
70
- if (rect) {
71
- x = clientX - rect.left;
72
- width = rect.width;
73
- }
74
- } else {
75
- const offsetX = nativeEvent.offsetX;
76
- if (isFiniteNumber(offsetX)) x = offsetX;
77
- }
78
- }
79
- const threshold = (width ?? resolvedSize) / 2;
80
- if (x !== undefined && x <= threshold) {
81
- nextScore = baseScore - 0.5;
82
- }
83
- }
84
- nextScore = clamp(nextScore, minScore, resolvedCount);
85
- if (requestValueChange(nextScore)) onIconPress?.(nextScore);
86
- };
87
- const valueFromLocationX = locationX => {
88
- const stride = resolvedSize + resolvedGutter;
89
- if (stride <= 0) return minScore;
90
- const maxX = resolvedSize * resolvedCount + resolvedGutter * (resolvedCount - 1);
91
- const x = clamp(locationX, 0, maxX);
92
- const index = clamp(Math.floor(x / stride), 0, resolvedCount - 1);
93
- const within = x - index * stride;
94
- let nextScore = index + 1;
95
- if (allowHalf) {
96
- const withinIcon = Math.min(within, resolvedSize);
97
- if (withinIcon <= resolvedSize / 2) {
98
- nextScore -= 0.5;
99
- }
100
- }
101
- return clamp(nextScore, minScore, resolvedCount);
102
- };
103
- const lastMoveValueRef = useRef(null);
104
- const gestureStartRef = useRef(null);
105
- const gestureDirectionRef = useRef('');
106
- const onStartShouldSetResponderCapture = event => {
107
- if (!interactive || !touchable) return false;
108
- gestureStartRef.current = {
109
- pageX: event.nativeEvent.pageX,
110
- pageY: event.nativeEvent.pageY
111
- };
112
- gestureDirectionRef.current = '';
113
- lastMoveValueRef.current = null;
114
- return false;
115
- };
116
- const onMoveShouldSetResponderCapture = event => {
117
- if (!interactive || !touchable) return false;
118
- const start = gestureStartRef.current;
119
- if (!start) {
120
- gestureStartRef.current = {
121
- pageX: event.nativeEvent.pageX,
122
- pageY: event.nativeEvent.pageY
123
- };
124
- return false;
125
- }
126
- const offsetX = Math.abs(event.nativeEvent.pageX - start.pageX);
127
- const offsetY = Math.abs(event.nativeEvent.pageY - start.pageY);
128
- if (offsetX > offsetY && offsetX > 10) {
129
- gestureDirectionRef.current = 'horizontal';
130
- return true;
131
- }
132
- if (offsetY > offsetX && offsetY > 10) {
133
- gestureDirectionRef.current = 'vertical';
134
- }
135
- return false;
136
- };
137
- const handleResponderMove = event => {
138
- if (!interactive || !touchable) return;
139
- if (gestureDirectionRef.current !== 'horizontal') return;
140
- event.preventDefault?.();
141
- const nextScore = valueFromLocationX(event.nativeEvent.locationX);
142
- if (lastMoveValueRef.current === nextScore) return;
143
- lastMoveValueRef.current = nextScore;
144
- if (requestValueChange(nextScore)) onIconPress?.(nextScore);
145
- };
146
- const handleResponderEnd = () => {
147
- lastMoveValueRef.current = null;
148
- gestureStartRef.current = null;
149
- gestureDirectionRef.current = '';
150
- };
151
- const renderIconNode = (renderValue, tintColor) => {
152
- if (/*#__PURE__*/React.isValidElement(renderValue)) {
153
- const element = renderValue;
154
- const defaultStyle = {
155
- color: tintColor,
156
- fontSize: resolvedSize,
157
- lineHeight: resolvedSize,
158
- textAlign: 'center',
159
- includeFontPadding: false
160
- };
161
- const layoutStyle = {
162
- width: resolvedSize,
163
- height: resolvedSize,
164
- flexShrink: 0
165
- };
166
- return /*#__PURE__*/React.cloneElement(element, {
167
- style: StyleSheet.flatten([defaultStyle, element.props.style, iconStyle, layoutStyle])
168
- });
169
- }
170
- return /*#__PURE__*/React.createElement(Text, {
171
- style: [tokens.layout.character, iconStyle, {
172
- color: tintColor,
173
- fontSize: resolvedSize,
174
- lineHeight: resolvedSize,
175
- width: resolvedSize,
176
- height: resolvedSize,
177
- textAlign: 'center'
178
- }]
179
- }, renderValue ?? DEFAULT_CHARACTER);
180
- };
181
- const resolvedActiveIcon = icon ?? character ?? DEFAULT_CHARACTER;
182
- const resolvedVoidIcon = voidIcon ?? character ?? DEFAULT_CHARACTER;
183
- const renderItem = index => {
184
- const score = index + 1;
185
- const fill = clamp(displayValue - index, 0, 1);
186
- const marginRight = index === resolvedCount - 1 ? 0 : resolvedGutter;
187
- const isFull = fill === 1;
188
- const activeIconWrapperStyle = {
189
- width: fill * resolvedSize,
190
- height: isFull ? resolvedSize : resolvedSize * 1.5,
191
- top: isFull ? 0 : -resolvedSize * 0.25,
192
- overflow: isFull ? 'visible' : 'hidden'
193
- };
194
- const activeIconInnerStyle = {
195
- width: resolvedSize,
196
- height: resolvedSize,
197
- marginTop: isFull ? 0 : resolvedSize * 0.25,
198
- justifyContent: 'center',
199
- alignItems: 'center',
200
- overflow: 'visible'
201
- };
202
- const iconContent = /*#__PURE__*/React.createElement(View, {
203
- style: [tokens.layout.iconBox, {
204
- width: resolvedSize,
205
- height: resolvedSize
206
- }]
207
- }, fill < 1 ? renderIconNode(resolvedVoidIcon, voidTint) : null, fill > 0 ? /*#__PURE__*/React.createElement(View, {
208
- pointerEvents: "none",
209
- style: [tokens.layout.fill, activeIconWrapperStyle]
210
- }, /*#__PURE__*/React.createElement(View, {
211
- style: activeIconInnerStyle
212
- }, renderIconNode(resolvedActiveIcon, activeTint))) : null);
213
- if (!interactive) {
214
- return /*#__PURE__*/React.createElement(View, {
215
- key: score,
216
- style: [tokens.layout.item, {
217
- marginRight
218
- }, itemStyle],
219
- accessibilityRole: "image",
220
- accessibilityLabel: `评分 ${score}`
221
- }, iconContent);
222
- }
223
- return /*#__PURE__*/React.createElement(Pressable, {
224
- key: score,
225
- accessibilityRole: "button",
226
- accessibilityLabel: `评${allowHalf ? '半' : ''}分 ${score}`,
227
- onPress: event => evaluatePress(index, event),
228
- style: ({
229
- pressed
230
- }) => [tokens.layout.item, {
231
- marginRight
232
- }, itemStyle, pressed && {
233
- opacity: tokens.states.pressedOpacity
234
- }]
235
- }, iconContent);
236
- };
237
- const items = [];
238
- for (let i = 0; i < resolvedCount; i++) items.push(renderItem(i));
239
- return /*#__PURE__*/React.createElement(View, _extends({}, rest, {
240
- style: [tokens.layout.container, style],
241
- accessibilityRole: "radiogroup",
242
- onStartShouldSetResponderCapture: onStartShouldSetResponderCapture,
243
- onMoveShouldSetResponderCapture: onMoveShouldSetResponderCapture,
244
- onResponderMove: handleResponderMove,
245
- onResponderRelease: handleResponderEnd,
246
- onResponderTerminate: handleResponderEnd
247
- }), items);
248
- });
249
- Rate.displayName = 'Rate';
250
- export default Rate;
@@ -1,3 +0,0 @@
1
- import Rate from './Rate';
2
- export default Rate;
3
- export { Rate };
@@ -1,53 +0,0 @@
1
- import { createComponentTokensHook } from '../../design-system';
2
- export const createRateTokens = foundations => {
3
- const {
4
- palette,
5
- spacing,
6
- fontSize
7
- } = foundations;
8
- return {
9
- defaults: {
10
- count: 5,
11
- allowHalf: false,
12
- size: fontSize.lg,
13
- gutter: spacing.xs,
14
- touchable: true,
15
- disabled: false,
16
- readOnly: false
17
- },
18
- layout: {
19
- container: {
20
- flexDirection: 'row',
21
- alignItems: 'center'
22
- },
23
- item: {
24
- justifyContent: 'center',
25
- alignItems: 'center'
26
- },
27
- iconBox: {
28
- position: 'relative',
29
- justifyContent: 'center',
30
- alignItems: 'center',
31
- flexShrink: 0
32
- },
33
- character: {
34
- includeFontPadding: false
35
- },
36
- fill: {
37
- position: 'absolute',
38
- left: 0,
39
- top: 0,
40
- overflow: 'hidden'
41
- }
42
- },
43
- colors: {
44
- active: palette.warning[500] ?? '#fa8c16',
45
- inactive: palette.default[200],
46
- disabled: palette.default[400]
47
- },
48
- states: {
49
- pressedOpacity: 0.75
50
- }
51
- };
52
- };
53
- export const useRateTokens = createComponentTokensHook('rate', createRateTokens);