react-native-system-ui 0.0.7 → 1.0.0

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 (366) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +97 -105
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +54 -67
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +25 -23
  7. package/dist/cjs/components/badge/Badge.js +31 -31
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +115 -151
  10. package/dist/cjs/components/button/ButtonGroup.js +8 -42
  11. package/dist/cjs/components/button/tokens.js +1 -8
  12. package/dist/cjs/components/calendar/Calendar.js +212 -223
  13. package/dist/cjs/components/calendar/tokens.js +3 -3
  14. package/dist/cjs/components/cascader/Cascader.js +177 -180
  15. package/dist/cjs/components/cascader/tokens.js +2 -2
  16. package/dist/cjs/components/cascader/useCascaderExtend.js +25 -29
  17. package/dist/cjs/components/cell/Cell.js +70 -83
  18. package/dist/cjs/components/cell/CellGroup.js +16 -29
  19. package/dist/cjs/components/checkbox/Checkbox.js +139 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +4 -35
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +25 -24
  23. package/dist/cjs/components/collapse/Collapse.js +75 -91
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +16 -3
  25. package/dist/cjs/components/config-provider/DirectionContext.js +15 -0
  26. package/dist/cjs/components/config-provider/index.js +7 -0
  27. package/dist/cjs/components/config-provider/locale/en-US.js +32 -0
  28. package/dist/cjs/components/config-provider/locale/zh-CN.js +32 -0
  29. package/dist/cjs/components/config-provider/useDirection.js +16 -0
  30. package/dist/cjs/components/count-down/CountDown.js +20 -15
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +61 -84
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +153 -121
  34. package/dist/cjs/components/dialog/imperative.js +17 -30
  35. package/dist/cjs/components/divider/Divider.js +26 -28
  36. package/dist/cjs/components/empty/Empty.js +35 -39
  37. package/dist/cjs/components/error-boundary/ErrorBoundary.js +73 -0
  38. package/dist/cjs/components/error-boundary/index.js +19 -0
  39. package/dist/cjs/components/field/Field.js +109 -106
  40. package/dist/cjs/components/flex/Flex.js +18 -18
  41. package/dist/cjs/components/flex/FlexItem.js +26 -27
  42. package/dist/cjs/components/form/Form.js +142 -161
  43. package/dist/cjs/components/form/FormItem.js +69 -97
  44. package/dist/cjs/components/form/FormList.js +49 -37
  45. package/dist/cjs/components/form/tokens.js +6 -3
  46. package/dist/cjs/components/form/utils.js +15 -34
  47. package/dist/cjs/components/grid/Grid.js +30 -29
  48. package/dist/cjs/components/grid/GridItem.js +84 -85
  49. package/dist/cjs/components/image/Image.js +55 -59
  50. package/dist/cjs/components/image/tokens.js +2 -2
  51. package/dist/cjs/components/image-preview/ImagePreview.js +124 -112
  52. package/dist/cjs/components/image-preview/imperative.js +4 -13
  53. package/dist/cjs/components/index.js +13 -0
  54. package/dist/cjs/components/input/Input.js +30 -22
  55. package/dist/cjs/components/loading/Loading.js +14 -15
  56. package/dist/cjs/components/nav-bar/NavBar.js +68 -83
  57. package/dist/cjs/components/nav-bar/tokens.js +1 -9
  58. package/dist/cjs/components/notice-bar/NoticeBar.js +74 -77
  59. package/dist/cjs/components/notify/Notify.js +88 -84
  60. package/dist/cjs/components/notify/imperative.js +20 -43
  61. package/dist/cjs/components/notify/tokens.js +1 -11
  62. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +187 -209
  63. package/dist/cjs/components/overlay/Overlay.js +37 -52
  64. package/dist/cjs/components/overlay/tokens.js +5 -3
  65. package/dist/cjs/components/password-input/PasswordInput.js +98 -79
  66. package/dist/cjs/components/picker/Picker.js +440 -421
  67. package/dist/cjs/components/picker/tokens.js +1 -1
  68. package/dist/cjs/components/popup/Popup.js +263 -293
  69. package/dist/cjs/components/portal/Portal.js +12 -29
  70. package/dist/cjs/components/portal/PortalHost.js +151 -234
  71. package/dist/cjs/components/progress/Progress.js +51 -48
  72. package/dist/cjs/components/radio/Radio.js +45 -42
  73. package/dist/cjs/components/radio/RadioGroup.js +8 -40
  74. package/dist/cjs/components/radio/tokens.js +7 -10
  75. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  76. package/dist/cjs/components/search/Search.js +51 -43
  77. package/dist/cjs/components/selector/Selector.js +14 -13
  78. package/dist/cjs/components/share-sheet/ShareSheet.js +160 -161
  79. package/dist/cjs/components/sidebar/Sidebar.js +39 -45
  80. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  81. package/dist/cjs/components/sidebar/SidebarItem.js +13 -16
  82. package/dist/cjs/components/sidebar/tokens.js +1 -3
  83. package/dist/cjs/components/skeleton/Skeleton.js +30 -37
  84. package/dist/cjs/components/skeleton/tokens.js +1 -2
  85. package/dist/cjs/components/slider/Slider.js +156 -135
  86. package/dist/cjs/components/space/Space.js +46 -69
  87. package/dist/cjs/components/stepper/Stepper.js +177 -155
  88. package/dist/cjs/components/swiper/Swiper.js +251 -253
  89. package/dist/cjs/components/swiper/SwiperPagIndicator.js +25 -27
  90. package/dist/cjs/components/swiper/tokens.js +10 -3
  91. package/dist/cjs/components/switch/Switch.js +13 -15
  92. package/dist/cjs/components/tabbar/Tabbar.js +35 -27
  93. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  94. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  95. package/dist/cjs/components/tabs/Tabs.js +286 -313
  96. package/dist/cjs/components/tag/Tag.js +46 -37
  97. package/dist/cjs/components/toast/Toast.js +90 -90
  98. package/dist/cjs/components/toast/imperative.js +16 -41
  99. package/dist/cjs/components/typography/Typography.js +3 -5
  100. package/dist/cjs/components/water-mark/WaterMark.js +31 -29
  101. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  102. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  103. package/dist/cjs/design-system/presets.js +2 -3
  104. package/dist/cjs/design-system/tokens.js +2 -11
  105. package/dist/cjs/hooks/animation/index.js +25 -0
  106. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  107. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  108. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  109. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  110. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  111. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  112. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  113. package/dist/cjs/hooks/index.js +12 -0
  114. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  115. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  116. package/dist/cjs/hooks/useControllableValue.js +10 -21
  117. package/dist/cjs/hooks/useCountDown.js +14 -22
  118. package/dist/cjs/hooks/useHairline.js +17 -29
  119. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  120. package/dist/cjs/index.js +67 -1
  121. package/dist/cjs/platform/animation.js +10 -2
  122. package/dist/cjs/platform/measure.js +18 -36
  123. package/dist/cjs/utils/color.js +21 -35
  124. package/dist/cjs/utils/compare.js +7 -12
  125. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  126. package/dist/cjs/utils/date.js +20 -50
  127. package/dist/cjs/utils/deepMerge.js +16 -26
  128. package/dist/cjs/utils/hairline.js +74 -71
  129. package/dist/cjs/utils/index.js +22 -0
  130. package/dist/cjs/utils/number.js +21 -29
  131. package/dist/cjs/utils/render.js +27 -0
  132. package/dist/cjs/utils/rtl.js +25 -0
  133. package/dist/cjs/utils/string.js +8 -25
  134. package/dist/es/components/action-sheet/ActionSheet.js +99 -107
  135. package/dist/es/components/action-sheet/tokens.js +16 -27
  136. package/dist/es/components/area/Area.js +55 -68
  137. package/dist/es/components/area/tokens.js +6 -3
  138. package/dist/es/components/avatar/Avatar.js +25 -23
  139. package/dist/es/components/avatar/index.js +1 -2
  140. package/dist/es/components/badge/Badge.js +33 -33
  141. package/dist/es/components/badge/tokens.js +6 -8
  142. package/dist/es/components/button/Button.js +116 -152
  143. package/dist/es/components/button/ButtonGroup.js +9 -43
  144. package/dist/es/components/button/tokens.js +2 -3
  145. package/dist/es/components/calendar/Calendar.js +214 -225
  146. package/dist/es/components/calendar/tokens.js +3 -3
  147. package/dist/es/components/cascader/Cascader.js +180 -183
  148. package/dist/es/components/cascader/tokens.js +2 -2
  149. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  150. package/dist/es/components/cell/Cell.js +71 -84
  151. package/dist/es/components/cell/CellGroup.js +16 -28
  152. package/dist/es/components/checkbox/Checkbox.js +140 -133
  153. package/dist/es/components/checkbox/CheckboxGroup.js +5 -36
  154. package/dist/es/components/checkbox/tokens.js +7 -10
  155. package/dist/es/components/circle/Circle.js +25 -23
  156. package/dist/es/components/collapse/Collapse.js +77 -92
  157. package/dist/es/components/config-provider/ConfigProvider.js +10 -3
  158. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  159. package/dist/es/components/config-provider/index.js +1 -0
  160. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  161. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  162. package/dist/es/components/config-provider/useDirection.js +3 -0
  163. package/dist/es/components/count-down/CountDown.js +23 -18
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -84
  165. package/dist/es/components/datetime-picker/tokens.js +14 -3
  166. package/dist/es/components/dialog/Dialog.js +154 -121
  167. package/dist/es/components/dialog/imperative.js +17 -30
  168. package/dist/es/components/divider/Divider.js +28 -29
  169. package/dist/es/components/empty/Empty.js +36 -39
  170. package/dist/es/components/error-boundary/ErrorBoundary.js +61 -0
  171. package/dist/es/components/error-boundary/index.js +1 -0
  172. package/dist/es/components/field/Field.js +109 -106
  173. package/dist/es/components/flex/Flex.js +18 -17
  174. package/dist/es/components/flex/FlexItem.js +27 -27
  175. package/dist/es/components/form/Form.js +143 -162
  176. package/dist/es/components/form/FormItem.js +68 -95
  177. package/dist/es/components/form/FormList.js +49 -37
  178. package/dist/es/components/form/tokens.js +6 -3
  179. package/dist/es/components/form/utils.js +15 -34
  180. package/dist/es/components/grid/Grid.js +30 -28
  181. package/dist/es/components/grid/GridItem.js +84 -84
  182. package/dist/es/components/image/Image.js +58 -62
  183. package/dist/es/components/image/tokens.js +2 -2
  184. package/dist/es/components/image-preview/ImagePreview.js +124 -112
  185. package/dist/es/components/image-preview/imperative.js +4 -13
  186. package/dist/es/components/index.js +3 -1
  187. package/dist/es/components/input/Input.js +31 -23
  188. package/dist/es/components/loading/Loading.js +16 -16
  189. package/dist/es/components/nav-bar/NavBar.js +68 -83
  190. package/dist/es/components/nav-bar/tokens.js +1 -3
  191. package/dist/es/components/notice-bar/NoticeBar.js +74 -76
  192. package/dist/es/components/notify/Notify.js +92 -87
  193. package/dist/es/components/notify/imperative.js +21 -44
  194. package/dist/es/components/notify/tokens.js +1 -5
  195. package/dist/es/components/number-keyboard/NumberKeyboard.js +187 -209
  196. package/dist/es/components/overlay/Overlay.js +36 -51
  197. package/dist/es/components/overlay/tokens.js +5 -3
  198. package/dist/es/components/password-input/PasswordInput.js +98 -79
  199. package/dist/es/components/picker/Picker.js +440 -421
  200. package/dist/es/components/picker/tokens.js +1 -1
  201. package/dist/es/components/popup/Popup.js +263 -292
  202. package/dist/es/components/portal/Portal.js +13 -29
  203. package/dist/es/components/portal/PortalHost.js +152 -234
  204. package/dist/es/components/progress/Progress.js +51 -48
  205. package/dist/es/components/radio/Radio.js +47 -44
  206. package/dist/es/components/radio/RadioGroup.js +10 -41
  207. package/dist/es/components/radio/tokens.js +7 -10
  208. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  209. package/dist/es/components/search/Search.js +52 -44
  210. package/dist/es/components/selector/Selector.js +14 -13
  211. package/dist/es/components/share-sheet/ShareSheet.js +162 -163
  212. package/dist/es/components/sidebar/Sidebar.js +41 -47
  213. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  214. package/dist/es/components/sidebar/SidebarItem.js +13 -15
  215. package/dist/es/components/sidebar/tokens.js +1 -3
  216. package/dist/es/components/skeleton/Skeleton.js +30 -37
  217. package/dist/es/components/skeleton/tokens.js +1 -2
  218. package/dist/es/components/slider/Slider.js +156 -134
  219. package/dist/es/components/space/Space.js +48 -71
  220. package/dist/es/components/stepper/Stepper.js +178 -156
  221. package/dist/es/components/swiper/Swiper.js +252 -254
  222. package/dist/es/components/swiper/SwiperPagIndicator.js +25 -27
  223. package/dist/es/components/swiper/tokens.js +10 -3
  224. package/dist/es/components/switch/Switch.js +13 -15
  225. package/dist/es/components/tabbar/Tabbar.js +36 -28
  226. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  227. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  228. package/dist/es/components/tabs/Tabs.js +286 -313
  229. package/dist/es/components/tag/Tag.js +49 -39
  230. package/dist/es/components/toast/Toast.js +93 -91
  231. package/dist/es/components/toast/imperative.js +16 -41
  232. package/dist/es/components/typography/Typography.js +3 -5
  233. package/dist/es/components/water-mark/WaterMark.js +32 -30
  234. package/dist/es/design-system/ThemeProvider.js +5 -11
  235. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  236. package/dist/es/design-system/presets.js +2 -3
  237. package/dist/es/design-system/tokens.js +1 -9
  238. package/dist/es/hooks/animation/index.js +2 -0
  239. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  240. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  241. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  242. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  243. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  244. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  245. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  246. package/dist/es/hooks/index.js +1 -0
  247. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  248. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  249. package/dist/es/hooks/useControllableValue.js +10 -21
  250. package/dist/es/hooks/useCountDown.js +14 -22
  251. package/dist/es/hooks/useHairline.js +16 -28
  252. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  253. package/dist/es/index.js +8 -1
  254. package/dist/es/platform/animation.js +9 -1
  255. package/dist/es/platform/measure.js +18 -36
  256. package/dist/es/utils/color.js +21 -35
  257. package/dist/es/utils/compare.js +7 -12
  258. package/dist/es/utils/createPlatformShadow.js +28 -39
  259. package/dist/es/utils/date.js +20 -50
  260. package/dist/es/utils/deepMerge.js +16 -26
  261. package/dist/es/utils/hairline.js +73 -65
  262. package/dist/es/utils/index.js +2 -0
  263. package/dist/es/utils/number.js +21 -29
  264. package/dist/es/utils/render.js +7 -0
  265. package/dist/es/utils/rtl.js +17 -0
  266. package/dist/es/utils/string.js +8 -25
  267. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  268. package/dist/types/components/area/Area.d.ts +1 -1
  269. package/dist/types/components/area/tokens.d.ts +4 -0
  270. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  271. package/dist/types/components/avatar/index.d.ts +1 -2
  272. package/dist/types/components/badge/Badge.d.ts +1 -1
  273. package/dist/types/components/button/Button.d.ts +1 -1
  274. package/dist/types/components/button/index.d.ts +1 -1
  275. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  276. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  277. package/dist/types/components/cell/Cell.d.ts +1 -1
  278. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  279. package/dist/types/components/cell/index.d.ts +2 -2
  280. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  281. package/dist/types/components/circle/Circle.d.ts +1 -1
  282. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  283. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  284. package/dist/types/components/config-provider/index.d.ts +2 -1
  285. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  286. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  287. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  288. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  289. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  290. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  291. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  292. package/dist/types/components/divider/Divider.d.ts +1 -1
  293. package/dist/types/components/empty/Empty.d.ts +1 -1
  294. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  295. package/dist/types/components/error-boundary/index.d.ts +2 -0
  296. package/dist/types/components/field/Field.d.ts +1 -1
  297. package/dist/types/components/flex/Flex.d.ts +1 -1
  298. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  299. package/dist/types/components/flex/index.d.ts +2 -2
  300. package/dist/types/components/form/Form.d.ts +1 -1
  301. package/dist/types/components/form/FormItem.d.ts +2 -1
  302. package/dist/types/components/form/index.d.ts +2 -2
  303. package/dist/types/components/form/tokens.d.ts +4 -0
  304. package/dist/types/components/grid/Grid.d.ts +1 -1
  305. package/dist/types/components/grid/GridItem.d.ts +1 -1
  306. package/dist/types/components/grid/index.d.ts +2 -2
  307. package/dist/types/components/image/Image.d.ts +1 -1
  308. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  309. package/dist/types/components/index.d.ts +4 -1
  310. package/dist/types/components/input/Input.d.ts +3 -3
  311. package/dist/types/components/loading/Loading.d.ts +1 -1
  312. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  313. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  314. package/dist/types/components/notify/Notify.d.ts +2 -2
  315. package/dist/types/components/notify/index.d.ts +1 -1
  316. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  317. package/dist/types/components/overlay/tokens.d.ts +3 -0
  318. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  319. package/dist/types/components/picker/Picker.d.ts +5 -5
  320. package/dist/types/components/popup/Popup.d.ts +3 -42
  321. package/dist/types/components/portal/Portal.d.ts +9 -6
  322. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  323. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  324. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  325. package/dist/types/components/search/Search.d.ts +1 -1
  326. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  327. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  328. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  329. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  330. package/dist/types/components/sidebar/index.d.ts +2 -2
  331. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  332. package/dist/types/components/slider/Slider.d.ts +1 -1
  333. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  334. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  335. package/dist/types/components/swiper/index.d.ts +1 -1
  336. package/dist/types/components/swiper/tokens.d.ts +8 -0
  337. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  338. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  339. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  340. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  341. package/dist/types/components/tabs/index.d.ts +1 -1
  342. package/dist/types/components/tag/Tag.d.ts +1 -1
  343. package/dist/types/components/toast/Toast.d.ts +2 -2
  344. package/dist/types/components/toast/index.d.ts +1 -1
  345. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  346. package/dist/types/design-system/tokens.d.ts +0 -1
  347. package/dist/types/hooks/animation/index.d.ts +3 -0
  348. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  349. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  350. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  351. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  352. package/dist/types/hooks/index.d.ts +1 -0
  353. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  354. package/dist/types/hooks/useHairline.d.ts +1 -1
  355. package/dist/types/index.d.ts +5 -0
  356. package/dist/types/platform/animation.d.ts +8 -0
  357. package/dist/types/platform/measure.d.ts +1 -1
  358. package/dist/types/utils/compare.d.ts +1 -1
  359. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  360. package/dist/types/utils/date.d.ts +2 -2
  361. package/dist/types/utils/hairline.d.ts +5 -10
  362. package/dist/types/utils/index.d.ts +2 -0
  363. package/dist/types/utils/number.d.ts +2 -2
  364. package/dist/types/utils/render.d.ts +5 -0
  365. package/dist/types/utils/rtl.d.ts +5 -0
  366. package/package.json +9 -2
@@ -26,13 +26,15 @@ function _reactNativeSystemIcon() {
26
26
  return data;
27
27
  }
28
28
  var _hooks = require("../../hooks");
29
+ var _useLocale = require("../config-provider/useLocale");
30
+ var _useDirection = require("../config-provider/useDirection");
29
31
  var _hairline = require("../../utils/hairline");
30
- var _validate = require("../../utils/validate");
32
+ var _utils = require("../../utils");
31
33
  var _safeAreaView = require("../safe-area-view");
32
34
  var _tokens = require("./tokens");
33
35
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
34
36
  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); }
35
- const NavBarBase = props => {
37
+ const NavBarBaseImpl = props => {
36
38
  const {
37
39
  tokensOverride,
38
40
  title,
@@ -60,6 +62,8 @@ const NavBarBase = props => {
60
62
  style,
61
63
  ...rest
62
64
  } = props;
65
+ const locale = (0, _useLocale.useLocale)();
66
+ const dir = (0, _useDirection.useDirection)();
63
67
  const tokens = (0, _tokens.useNavBarTokens)(tokensOverride);
64
68
  const leftArrow = leftArrowProp ?? tokens.defaults.leftArrow;
65
69
  const fixed = fixedProp ?? tokens.defaults.fixed;
@@ -79,14 +83,12 @@ const NavBarBase = props => {
79
83
  }, [enablePlaceholder]);
80
84
  const resolvedColor = tintColor ?? tokens.colors.text;
81
85
  const sideColor = tintColor ?? tokens.colors.icon;
82
- const leftAccessibilityLabel = (0, _validate.isText)(leftText) ? String(leftText) : '返回';
83
- const rightAccessibilityLabel = (0, _validate.isText)(rightText) ? String(rightText) : '操作';
84
86
  const leftPress = (0, _hooks.useAriaPress)({
85
87
  disabled: !handlePressLeft,
86
88
  onPress: handlePressLeft,
87
89
  extraProps: {
88
90
  accessibilityRole: 'button',
89
- accessibilityLabel: leftAccessibilityLabel
91
+ accessibilityLabel: (0, _utils.isText)(leftText) ? `${leftText}` : locale?.vanNavBar?.back ?? 'Back'
90
92
  }
91
93
  });
92
94
  const rightPress = (0, _hooks.useAriaPress)({
@@ -94,63 +96,40 @@ const NavBarBase = props => {
94
96
  onPress: handlePressRight,
95
97
  extraProps: {
96
98
  accessibilityRole: 'button',
97
- accessibilityLabel: rightAccessibilityLabel
99
+ accessibilityLabel: (0, _utils.isText)(rightText) ? `${rightText}` : locale?.vanNavBar?.action ?? 'Actions'
98
100
  }
99
101
  });
100
- const renderLeft = () => {
101
- const arrowNode = leftArrow === true ? /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().ArrowLeft, {
102
+ const renderSide = side => {
103
+ const isLeft = side === 'left';
104
+ const sideText = isLeft ? leftText : rightText;
105
+ const sideIcon = isLeft ? leftIcon : rightIcon;
106
+ const press = isLeft ? leftPress : rightPress;
107
+ const handler = isLeft ? handlePressLeft : handlePressRight;
108
+ const arrowNode = isLeft ? leftArrow === true ? /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().ArrowLeft, {
102
109
  size: 18,
103
110
  fill: sideColor,
104
- color: sideColor
105
- }) : (0, _validate.isRenderable)(leftArrow) && leftArrow;
106
- const hasAction = !!handlePressLeft || (0, _validate.isRenderable)(arrowNode) || (0, _validate.isRenderable)(leftText) || (0, _validate.isRenderable)(leftIcon);
107
- if (!hasAction) {
108
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
109
- style: tokens.layout.sidePlaceholder
110
- });
111
- }
112
- const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, arrowNode, leftIcon, (0, _validate.isRenderable)(leftText) ? (0, _validate.isText)(leftText) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
113
- numberOfLines: 1,
114
- style: [tokens.layout.sideText, {
115
- color: sideColor
116
- }]
117
- }, leftText) : leftText : null);
118
- if (!handlePressLeft) {
119
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
120
- testID: "rv-navbar-left",
121
- style: [tokens.layout.side, sideStyle]
122
- }, content);
123
- }
124
- return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
125
- hitSlop: {
126
- top: 8,
127
- right: 8,
128
- bottom: 8,
129
- left: 8
130
- },
131
- testID: "rv-navbar-left",
132
- style: [tokens.layout.side, sideStyle]
133
- }, leftPress.interactionProps), content);
134
- };
135
- const renderRight = () => {
136
- const hasAction = !!handlePressRight || (0, _validate.isRenderable)(rightText) || (0, _validate.isRenderable)(rightIcon);
137
- if (!hasAction) {
138
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
139
- style: tokens.layout.sidePlaceholder
140
- });
141
- }
142
- const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, (0, _validate.isRenderable)(rightText) ? (0, _validate.isText)(rightText) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
111
+ color: sideColor,
112
+ style: dir === 'rtl' ? {
113
+ transform: [{
114
+ scaleX: -1
115
+ }]
116
+ } : undefined
117
+ }) : (0, _utils.isRenderable)(leftArrow) && leftArrow : null;
118
+ const hasAction = !!handler || (0, _utils.isRenderable)(arrowNode) || (0, _utils.isRenderable)(sideText) || (0, _utils.isRenderable)(sideIcon);
119
+ if (!hasAction) return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
120
+ style: tokens.layout.sidePlaceholder
121
+ });
122
+ const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, arrowNode, sideIcon, (0, _utils.isRenderable)(sideText) ? (0, _utils.isText)(sideText) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
143
123
  numberOfLines: 1,
144
124
  style: [tokens.layout.sideText, {
145
125
  color: sideColor
146
126
  }]
147
- }, rightText) : rightText : null, rightIcon);
148
- if (!handlePressRight) {
149
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
150
- testID: "rv-navbar-right",
151
- style: [tokens.layout.side, tokens.layout.rightAlign, sideStyle]
152
- }, content);
153
- }
127
+ }, sideText) : sideText : null);
128
+ const sideStyles = [tokens.layout.side, !isLeft && tokens.layout.rightAlign, sideStyle];
129
+ if (!handler) return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
130
+ testID: `rv-navbar-${side}`,
131
+ style: sideStyles
132
+ }, content);
154
133
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
155
134
  hitSlop: {
156
135
  top: 8,
@@ -158,51 +137,57 @@ const NavBarBase = props => {
158
137
  bottom: 8,
159
138
  left: 8
160
139
  },
161
- testID: "rv-navbar-right",
162
- style: [tokens.layout.side, tokens.layout.rightAlign, sideStyle]
163
- }, rightPress.interactionProps), content);
140
+ testID: `rv-navbar-${side}`,
141
+ style: sideStyles
142
+ }, press.interactionProps), content);
164
143
  };
165
- const centerContent = (0, _validate.isRenderable)(children) ? children : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
144
+ const centerContent = (0, _utils.isRenderable)(children) ? children : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
166
145
  style: tokens.layout.titleWrapper
167
- }, (0, _validate.isRenderable)(title) ? (0, _validate.isText)(title) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
168
- style: [tokens.layout.title, {
169
- color: resolvedColor,
170
- fontSize: tokens.typography.titleSize,
171
- fontWeight: tokens.typography.titleWeight
172
- }, titleStyle],
146
+ }, (0, _utils.isRenderable)(title) && (0, _utils.renderTextOrNode)(title, [tokens.layout.title, {
147
+ color: resolvedColor,
148
+ fontSize: tokens.typography.titleSize,
149
+ fontWeight: tokens.typography.titleWeight
150
+ }, titleStyle], {
173
151
  numberOfLines: 1
174
- }, title) : title : null, (0, _validate.isRenderable)(description) ? (0, _validate.isText)(description) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
175
- style: [tokens.layout.description, {
176
- color: tintColor ?? tokens.colors.description,
177
- fontSize: tokens.typography.descriptionSize
178
- }, descriptionStyle],
152
+ }), (0, _utils.isRenderable)(description) && (0, _utils.renderTextOrNode)(description, [tokens.layout.description, {
153
+ color: tintColor ?? tokens.colors.description,
154
+ fontSize: tokens.typography.descriptionSize
155
+ }, descriptionStyle], {
179
156
  numberOfLines: 1
180
- }, description) : description : null);
181
- const bar = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
157
+ }));
158
+ const navbarBar = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
182
159
  style: [tokens.layout.bar, {
183
160
  backgroundColor: background
184
- }, border ? (0, _hairline.createHairlineBorderBottom)(tokens.colors.border) : null],
161
+ }],
185
162
  onLayout: safeAreaInsetTop ? undefined : handleLayout
186
- }, renderLeft(), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
163
+ }, renderSide('left'), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
187
164
  style: tokens.layout.center
188
- }, centerContent), renderRight());
189
- const wrapped = safeAreaInsetTop ? /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
165
+ }, centerContent), renderSide('right'), border && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
166
+ style: (0, _hairline.createHairlineView)({
167
+ position: 'bottom',
168
+ color: tokens.colors.border,
169
+ left: 0,
170
+ right: 0
171
+ })
172
+ }));
173
+ const wrappedBar = safeAreaInsetTop ? /*#__PURE__*/_react().default.createElement(_safeAreaView.SafeAreaView, {
190
174
  onLayout: handleLayout,
191
175
  style: {
192
176
  backgroundColor: background
193
177
  }
194
- }, bar) : bar;
195
- const navContent = /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({}, rest, {
196
- style: [tokens.layout.container, fixed && [tokens.layout.fixed, {
197
- zIndex
198
- }], style]
199
- }), wrapped);
200
- return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, enablePlaceholder ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
178
+ }, navbarBar) : navbarBar;
179
+ return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, enablePlaceholder && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
201
180
  testID: "rv-navbar-placeholder",
202
181
  style: {
203
182
  height
204
183
  }
205
- }) : null, navContent);
184
+ }), /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({}, rest, {
185
+ accessibilityRole: 'navigation',
186
+ style: [tokens.layout.container, fixed && [tokens.layout.fixed, {
187
+ zIndex
188
+ }], style]
189
+ }), wrappedBar));
206
190
  };
191
+ const NavBarBase = /*#__PURE__*/_react().default.memo(NavBarBaseImpl);
207
192
  NavBarBase.displayName = 'NavBar';
208
193
  var _default = exports.default = NavBarBase;
@@ -4,20 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useNavBarTokens = exports.createNavBarTokens = void 0;
7
- function _reactNative() {
8
- const data = require("react-native");
9
- _reactNative = function () {
10
- return data;
11
- };
12
- return data;
13
- }
14
7
  var _designSystem = require("../../design-system");
15
8
  const createNavBarTokens = ({
16
9
  palette,
17
10
  spacing,
18
11
  fontSize
19
12
  }) => {
20
- const fixedPosition = _reactNative().Platform.OS === 'web' ? 'fixed' : 'absolute';
21
13
  return {
22
14
  defaults: {
23
15
  fixed: false,
@@ -69,7 +61,7 @@ const createNavBarTokens = ({
69
61
  includeFontPadding: false
70
62
  },
71
63
  fixed: {
72
- position: fixedPosition,
64
+ position: 'absolute',
73
65
  top: 0,
74
66
  left: 0,
75
67
  right: 0
@@ -26,9 +26,13 @@ function _reactNativeSystemIcon() {
26
26
  return data;
27
27
  }
28
28
  var _hooks = require("../../hooks");
29
+ var _useLocale = require("../config-provider/useLocale");
30
+ var _useDirection = require("../config-provider/useDirection");
29
31
  var _number = require("../../utils/number");
30
32
  var _validate = require("../../utils/validate");
33
+ var _utils = require("../../utils");
31
34
  var _platform = require("../../platform");
35
+ var _animation = require("../../hooks/animation");
32
36
  var _tokens = require("./tokens");
33
37
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
34
38
  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); }
@@ -36,11 +40,9 @@ const AnimatedText = _reactNative().Animated.createAnimatedComponent(_reactNativ
36
40
  const IS_WEB = _reactNative().Platform.OS === 'web';
37
41
  if (IS_WEB) {
38
42
  const globalObj = typeof globalThis !== 'undefined' ? globalThis : window;
39
- if (globalObj.global === undefined) {
40
- globalObj.global = globalObj;
41
- }
43
+ if (globalObj.global === undefined) globalObj.global = globalObj;
42
44
  }
43
- const NoticeBar = props => {
45
+ const NoticeBarImpl = props => {
44
46
  const {
45
47
  text,
46
48
  children,
@@ -65,6 +67,9 @@ const NoticeBar = props => {
65
67
  style,
66
68
  ...rest
67
69
  } = props;
70
+ const locale = (0, _useLocale.useLocale)();
71
+ const layoutDir = (0, _useDirection.useDirection)();
72
+ const reducedMotion = (0, _animation.useReducedMotion)();
68
73
  const tokens = (0, _tokens.useNoticeBarTokens)(tokensOverride);
69
74
  const resolvedColor = color ?? tokens.colors.text;
70
75
  const resolvedBackground = background ?? tokens.colors.background;
@@ -90,7 +95,7 @@ const NoticeBar = props => {
90
95
  if (childArray.length) return childArray;
91
96
  return text !== undefined ? [text] : [];
92
97
  }, [children, isVertical, items, text]);
93
- const hasVerticalLoop = isVertical && verticalItems.length > 1;
98
+ const hasVerticalLoop = !reducedMotion && isVertical && verticalItems.length > 1;
94
99
  const verticalTrackItems = (0, _react().useMemo)(() => hasVerticalLoop ? [...verticalItems, verticalItems[0]] : verticalItems, [hasVerticalLoop, verticalItems]);
95
100
  const verticalTranslateY = (0, _react().useRef)(new (_reactNative().Animated.Value)(0)).current;
96
101
  const [itemHeight, setItemHeight] = (0, _react().useState)(0);
@@ -100,16 +105,20 @@ const NoticeBar = props => {
100
105
  const setContainerWidthSafe = (0, _react().useCallback)(next => {
101
106
  setContainerWidth(prev => Math.abs(prev - next) < 0.5 ? prev : next);
102
107
  }, []);
108
+ const onCloseRef = (0, _react().useRef)(onClose);
109
+ onCloseRef.current = onClose;
110
+ const onReplayRef = (0, _react().useRef)(onReplay);
111
+ onReplayRef.current = onReplay;
103
112
  const handleClose = (0, _react().useCallback)(() => {
104
113
  setVisible(false);
105
- onClose?.();
106
- }, [onClose]);
114
+ onCloseRef.current?.();
115
+ }, []);
107
116
  const closePress = (0, _hooks.useAriaPress)({
108
117
  disabled: mode !== 'closeable' || !visible,
109
118
  onPress: handleClose,
110
119
  extraProps: {
111
120
  accessibilityRole: 'button',
112
- accessibilityLabel: '关闭'
121
+ accessibilityLabel: locale?.vanNoticeBar?.close ?? 'Close'
113
122
  }
114
123
  });
115
124
  const barPress = (0, _hooks.useAriaPress)({
@@ -119,7 +128,7 @@ const NoticeBar = props => {
119
128
  accessibilityRole: 'button'
120
129
  } : undefined
121
130
  });
122
- const rightNode = (0, _react().useMemo)(() => mode === 'closeable' ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
131
+ const rightNode = mode === 'closeable' ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
123
132
  hitSlop: 8
124
133
  }, closePress.interactionProps), /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().Close, {
125
134
  size: 16,
@@ -129,42 +138,36 @@ const NoticeBar = props => {
129
138
  size: 16,
130
139
  fill: resolvedColor,
131
140
  color: resolvedColor
132
- }) : rightIcon || null, [closePress.interactionProps, mode, resolvedColor, rightIcon]);
141
+ }) : rightIcon || null;
133
142
  const hasLeft = (0, _validate.isRenderable)(leftIcon);
134
143
  const hasRight = Boolean(rightNode);
135
144
  const effectiveContainerWidth = Math.max(0, containerWidth - (hasLeft ? tokens.spacing.sidePadding : 0) - (hasRight ? tokens.spacing.sidePadding : 0));
136
- const shouldScroll = !isVertical && !wrapable && (scrollable ?? contentWidth > effectiveContainerWidth);
145
+ const shouldScroll = !reducedMotion && !isVertical && !wrapable && (scrollable ?? contentWidth > effectiveContainerWidth);
137
146
  (0, _react().useEffect)(() => {
138
- if (!visible) {
139
- translateX.stopAnimation();
140
- return;
141
- }
142
- if (isVertical) {
147
+ if (!visible || isVertical) {
143
148
  translateX.stopAnimation();
144
149
  return;
145
150
  }
146
- if (!shouldScroll || contentWidth === 0 || containerWidth === 0) {
147
- translateX.setValue(0);
148
- return;
149
- }
150
- if (resolvedSpeed <= 0 || !Number.isFinite(resolvedSpeed)) {
151
+ if (!shouldScroll || contentWidth === 0 || containerWidth === 0 || resolvedSpeed <= 0 || !Number.isFinite(resolvedSpeed)) {
151
152
  translateX.setValue(0);
152
153
  return;
153
154
  }
154
155
  let cancelled = false;
155
156
  const duration = (contentWidth + containerWidth) / resolvedSpeed * 1000;
157
+ const rtlSign = layoutDir === 'rtl' ? -1 : 1;
156
158
  const run = initial => {
157
- translateX.setValue(initial ? 0 : containerWidth);
159
+ translateX.setValue(initial ? 0 : rtlSign * containerWidth);
158
160
  _reactNative().Animated.sequence([_reactNative().Animated.delay(resolvedDelay * 1000), _reactNative().Animated.timing(translateX, {
159
- toValue: -contentWidth,
161
+ toValue: -rtlSign * contentWidth,
160
162
  duration,
161
163
  easing: _reactNative().Easing.linear,
162
- useNativeDriver: _platform.nativeDriverEnabled
164
+ useNativeDriver: _platform.nativeDriverEnabled,
165
+ isInteraction: false
163
166
  })]).start(({
164
167
  finished
165
168
  }) => {
166
169
  if (finished && !cancelled) {
167
- onReplay?.();
170
+ onReplayRef.current?.();
168
171
  run(false);
169
172
  }
170
173
  });
@@ -174,7 +177,7 @@ const NoticeBar = props => {
174
177
  cancelled = true;
175
178
  translateX.stopAnimation();
176
179
  };
177
- }, [shouldScroll, translateX, visible, resolvedDelay, resolvedSpeed, contentWidth, containerWidth, onReplay, isVertical]);
180
+ }, [shouldScroll, translateX, visible, resolvedDelay, resolvedSpeed, contentWidth, containerWidth, isVertical, layoutDir]);
178
181
  (0, _react().useEffect)(() => {
179
182
  if (!visible) {
180
183
  verticalTranslateY.stopAnimation();
@@ -190,13 +193,15 @@ const NoticeBar = props => {
190
193
  toValue: -itemHeight * i,
191
194
  duration: resolvedVerticalDuration,
192
195
  easing: _reactNative().Easing.linear,
193
- useNativeDriver: _platform.nativeDriverEnabled
196
+ useNativeDriver: _platform.nativeDriverEnabled,
197
+ isInteraction: false
194
198
  }));
195
199
  }
196
200
  steps.push(_reactNative().Animated.timing(verticalTranslateY, {
197
201
  toValue: 0,
198
202
  duration: 0,
199
- useNativeDriver: _platform.nativeDriverEnabled
203
+ useNativeDriver: _platform.nativeDriverEnabled,
204
+ isInteraction: false
200
205
  }));
201
206
  const loopAnimation = _reactNative().Animated.loop(_reactNative().Animated.sequence(steps));
202
207
  loopAnimation.start();
@@ -212,28 +217,22 @@ const NoticeBar = props => {
212
217
  }, []);
213
218
  const verticalContentNode = (0, _react().useMemo)(() => {
214
219
  if (!isVertical || verticalTrackItems.length === 0) return null;
215
- if (!hasVerticalLoop) {
216
- const single = verticalTrackItems[0];
217
- if ((0, _validate.isText)(single)) {
218
- return /*#__PURE__*/_react().default.createElement(_reactNative().Text, _extends({
219
- onLayout: textOnLayout,
220
- style: [styles.text, {
221
- color: resolvedColor,
222
- fontSize: tokens.typography.fontSize
223
- }],
224
- numberOfLines: 1,
225
- ellipsizeMode: "tail"
226
- }, restTextProps), single);
227
- }
228
- return single;
229
- }
220
+ if (!hasVerticalLoop) return (0, _utils.renderTextOrNode)(verticalTrackItems[0], [S.text, {
221
+ color: resolvedColor,
222
+ fontSize: tokens.typography.fontSize
223
+ }], {
224
+ numberOfLines: 1,
225
+ ...restTextProps
226
+ });
230
227
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
231
- style: [styles.verticalViewport, itemHeight ? {
228
+ style: [S.vViewport, itemHeight ? {
232
229
  height: itemHeight
233
230
  } : undefined],
234
231
  pointerEvents: "none"
235
232
  }, /*#__PURE__*/_react().default.createElement(_reactNative().Animated.View, {
236
- style: [styles.verticalTrack, {
233
+ renderToHardwareTextureAndroid: true,
234
+ shouldRasterizeIOS: true,
235
+ style: [S.vTrack, {
237
236
  transform: [{
238
237
  translateY: verticalTranslateY
239
238
  }]
@@ -241,16 +240,14 @@ const NoticeBar = props => {
241
240
  }, verticalTrackItems.map((item, index) => /*#__PURE__*/_react().default.createElement(_reactNative().View, {
242
241
  key: index,
243
242
  onLayout: index === 0 ? handleItemLayout : undefined,
244
- style: styles.verticalItem
245
- }, (0, _validate.isText)(item) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, _extends({
246
- onLayout: textOnLayout,
247
- style: [styles.text, {
248
- color: resolvedColor,
249
- fontSize: tokens.typography.fontSize
250
- }],
243
+ style: S.vItem
244
+ }, (0, _utils.renderTextOrNode)(item, [S.text, {
245
+ color: resolvedColor,
246
+ fontSize: tokens.typography.fontSize
247
+ }], {
251
248
  numberOfLines: 1,
252
- ellipsizeMode: "tail"
253
- }, restTextProps), item) : item))));
249
+ ...restTextProps
250
+ })))));
254
251
  }, [handleItemLayout, hasVerticalLoop, isVertical, itemHeight, resolvedColor, restTextProps, textOnLayout, tokens.typography.fontSize, verticalTrackItems, verticalTranslateY]);
255
252
  const handleContainerLayout = (0, _react().useCallback)(event => {
256
253
  setContainerWidthSafe(event.nativeEvent.layout.width);
@@ -260,11 +257,9 @@ const NoticeBar = props => {
260
257
  textOnLayout?.(event);
261
258
  }, [setContentWidthSafe, textOnLayout]);
262
259
  const handleNodeLayout = (0, _react().useCallback)(event => setContentWidthSafe(event.nativeEvent.layout.width), [setContentWidthSafe]);
263
- if (!visible) {
264
- return null;
265
- }
260
+ if (!visible) return null;
266
261
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
267
- style: [styles.container, {
262
+ style: [S.ctr, {
268
263
  backgroundColor: resolvedBackground,
269
264
  paddingHorizontal: tokens.spacing.paddingHorizontal,
270
265
  paddingVertical: wrapable ? tokens.spacing.wrapPaddingVertical : tokens.spacing.paddingVertical,
@@ -272,13 +267,13 @@ const NoticeBar = props => {
272
267
  borderRadius: tokens.layout.radius
273
268
  }, style],
274
269
  disabled: barPress.states.disabled
275
- }, barPress.interactionProps, rest), hasLeft ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
276
- style: [styles.sideSection, {
270
+ }, barPress.interactionProps, rest), hasLeft && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
271
+ style: [S.side, {
277
272
  minWidth: tokens.layout.sideMinWidth
278
273
  }]
279
- }, leftIcon) : null, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
274
+ }, leftIcon), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
280
275
  onLayout: handleContainerLayout,
281
- style: [styles.content, wrapable && styles.contentWrap, hasLeft && {
276
+ style: [S.content, wrapable && S.contentWrap, hasLeft && {
282
277
  paddingLeft: tokens.spacing.sidePadding
283
278
  }, hasRight && {
284
279
  paddingRight: tokens.spacing.sidePadding
@@ -286,7 +281,7 @@ const NoticeBar = props => {
286
281
  pointerEvents: "none"
287
282
  }, isVertical ? verticalContentNode : shouldScroll ? isTextContent ? /*#__PURE__*/_react().default.createElement(AnimatedText, _extends({
288
283
  onLayout: handleTextLayout,
289
- style: [styles.text, styles.scrollText, {
284
+ style: [S.text, S.scrollText, {
290
285
  color: resolvedColor,
291
286
  fontSize: tokens.typography.fontSize,
292
287
  transform: [{
@@ -298,35 +293,36 @@ const NoticeBar = props => {
298
293
  ellipsizeMode: 'clip'
299
294
  }, restTextProps), content) : /*#__PURE__*/_react().default.createElement(_reactNative().Animated.View, {
300
295
  onLayout: handleNodeLayout,
301
- style: [styles.text, {
296
+ renderToHardwareTextureAndroid: true,
297
+ shouldRasterizeIOS: true,
298
+ style: [S.text, {
302
299
  transform: [{
303
300
  translateX
304
301
  }]
305
302
  }]
306
303
  }, content) : isTextContent ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, _extends({
307
304
  onLayout: handleTextLayout,
308
- style: [styles.text, {
305
+ style: [S.text, {
309
306
  color: resolvedColor,
310
307
  fontSize: tokens.typography.fontSize
311
- }, wrapable && styles.wrapText],
308
+ }, wrapable && S.wrapText],
312
309
  numberOfLines: wrapable ? undefined : 1,
313
310
  ellipsizeMode: wrapable ? 'tail' : 'clip'
314
311
  }, restTextProps), content) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
315
312
  onLayout: handleNodeLayout,
316
- style: [styles.text, wrapable && styles.wrapText]
317
- }, content)), rightNode ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
318
- style: [styles.sideSection, {
313
+ style: [S.text, wrapable && S.wrapText]
314
+ }, content)), rightNode && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
315
+ style: [S.side, {
319
316
  minWidth: tokens.layout.sideMinWidth
320
317
  }]
321
- }, rightNode) : null);
318
+ }, rightNode));
322
319
  };
323
- exports.NoticeBar = NoticeBar;
324
- const styles = _reactNative().StyleSheet.create({
325
- container: {
320
+ const S = _reactNative().StyleSheet.create({
321
+ ctr: {
326
322
  flexDirection: 'row',
327
323
  alignItems: 'center'
328
324
  },
329
- sideSection: {
325
+ side: {
330
326
  alignItems: 'center',
331
327
  justifyContent: 'center'
332
328
  },
@@ -352,17 +348,18 @@ const styles = _reactNative().StyleSheet.create({
352
348
  contentWrap: {
353
349
  flexDirection: 'column'
354
350
  },
355
- verticalViewport: {
351
+ vViewport: {
356
352
  width: '100%',
357
353
  overflow: 'hidden'
358
354
  },
359
- verticalTrack: {
355
+ vTrack: {
360
356
  flexDirection: 'column',
361
357
  width: '100%'
362
358
  },
363
- verticalItem: {
359
+ vItem: {
364
360
  width: '100%',
365
361
  justifyContent: 'center'
366
362
  }
367
363
  });
364
+ const NoticeBar = exports.NoticeBar = /*#__PURE__*/_react().default.memo(NoticeBarImpl);
368
365
  NoticeBar.displayName = 'NoticeBar';