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
@@ -24,14 +24,14 @@ var _GridContext = require("./GridContext");
24
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
25
25
  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); }
26
26
  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); }
27
- const GridItem = props => {
28
- const context = (0, _react().useContext)(_GridContext.GridContext);
29
- if (!context) throw new Error('GridItem must be used within Grid');
27
+ const GridItemImpl = p => {
28
+ const ctx = (0, _react().useContext)(_GridContext.GridContext);
29
+ if (!ctx) throw new Error('GridItem must be used within Grid');
30
30
  const {
31
31
  gridItemIndex = 0,
32
32
  text,
33
33
  icon,
34
- iconColor: iconColorProp,
34
+ iconColor: icp,
35
35
  badge,
36
36
  dot,
37
37
  contentStyle,
@@ -40,113 +40,112 @@ const GridItem = props => {
40
40
  style,
41
41
  onPress,
42
42
  ...rest
43
- } = props;
43
+ } = p;
44
44
  const {
45
- tokens,
46
- columnNum,
47
- gutter,
48
- border,
49
- center,
50
- square,
51
- direction,
52
- reverse,
53
- clickable,
54
- iconSize,
55
- iconColor,
45
+ tokens: t,
46
+ columnNum: cn,
47
+ gutter: g,
48
+ border: b,
49
+ center: c,
50
+ square: sq,
51
+ direction: d,
52
+ reverse: r,
53
+ clickable: cl,
54
+ iconSize: is,
55
+ iconColor: ic,
56
56
  count
57
- } = context;
58
- const widthPercent = (0, _react().useMemo)(() => `${100 / columnNum}%`, [columnNum]);
59
- const isLastColumn = (0, _react().useMemo)(() => (gridItemIndex + 1) % columnNum === 0, [columnNum, gridItemIndex]);
60
- const rowIndex = (0, _react().useMemo)(() => Math.floor(gridItemIndex / columnNum), [columnNum, gridItemIndex]);
61
- const lastRowIndex = (0, _react().useMemo)(() => Math.floor((count - 1) / columnNum), [columnNum, count]);
62
- const contentWrapperStyle = (0, _react().useMemo)(() => [tokens.layout.itemContentBase, direction === 'horizontal' ? tokens.layout.itemHorizontal : tokens.layout.itemVertical, center && tokens.layout.itemCenter, reverse ? direction === 'horizontal' ? tokens.layout.itemReverseRow : tokens.layout.itemReverseColumn : null, square ? tokens.layout.itemContentSquare : null, {
63
- paddingHorizontal: tokens.spacing.paddingHorizontal,
64
- paddingVertical: tokens.spacing.paddingVertical,
65
- backgroundColor: tokens.colors.background
66
- }, contentStyle], [center, contentStyle, direction, reverse, square, tokens.colors.background, tokens.layout.itemContentBase, tokens.layout.itemContentSquare, tokens.layout.itemHorizontal, tokens.layout.itemReverseColumn, tokens.layout.itemReverseRow, tokens.layout.itemVertical, tokens.layout.itemCenter, tokens.spacing.paddingHorizontal, tokens.spacing.paddingVertical]);
67
- const hasText = (0, _utils.isRenderable)(text);
68
- const resolvedIconColor = (0, _react().useMemo)(() => iconColorProp ?? iconColor ?? tokens.colors.text, [iconColor, iconColorProp, tokens.colors.text]);
69
- const innerContent = (0, _react().useMemo)(() => {
57
+ } = ctx;
58
+ const wp = `${100 / cn}%`;
59
+ const ilc = (gridItemIndex + 1) % cn === 0;
60
+ const ri = Math.floor(gridItemIndex / cn);
61
+ const lri = Math.floor((count - 1) / cn);
62
+ const cws = [t.layout.itemContentBase, d === 'horizontal' ? t.layout.itemHorizontal : t.layout.itemVertical, c && t.layout.itemCenter, r ? d === 'horizontal' ? t.layout.itemReverseRow : t.layout.itemReverseColumn : null, sq ? t.layout.itemContentSquare : null, {
63
+ paddingHorizontal: t.spacing.paddingHorizontal,
64
+ paddingVertical: t.spacing.paddingVertical,
65
+ backgroundColor: t.colors.background
66
+ }, contentStyle];
67
+ const ht = (0, _utils.isRenderable)(text);
68
+ const ric = icp ?? ic ?? t.colors.text;
69
+ const icn = (0, _react().useMemo)(() => {
70
70
  if (children) return children;
71
- let iconElement = null;
71
+ let ie = null;
72
72
  if (icon || badge || dot) {
73
73
  const {
74
- style: badgeWrapperStyle,
75
- ...badgeRest
74
+ style: bws,
75
+ ...br
76
76
  } = badge ?? {};
77
- const marginKey = direction === 'vertical' ? reverse ? 'marginTop' : 'marginBottom' : reverse ? 'marginLeft' : 'marginRight';
78
- const iconWrapperStyle = [tokens.layout.iconWrapper, hasText && {
79
- [marginKey]: tokens.spacing.iconGap
77
+ const mk = d === 'vertical' ? r ? 'marginTop' : 'marginBottom' : r ? 'marginLeft' : 'marginRight';
78
+ const iws = [t.layout.iconWrapper, ht && {
79
+ [mk]: t.spacing.iconGap
80
80
  }];
81
- const iconNode = (0, _utils.isFunction)(icon) ? icon(iconSize, resolvedIconColor) : icon;
82
- const content = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
83
- style: iconWrapperStyle
84
- }, iconNode);
85
- iconElement = badge || dot ? /*#__PURE__*/_react().default.createElement(_badge.default, _extends({
81
+ const ino = (0, _utils.isFunction)(icon) ? icon(is, ric) : icon;
82
+ const cnt = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
83
+ style: iws
84
+ }, ino);
85
+ ie = badge || dot ? /*#__PURE__*/_react().default.createElement(_badge.default, _extends({
86
86
  dot: dot
87
- }, badgeRest, {
88
- style: center ? [badgeWrapperStyle, {
87
+ }, br, {
88
+ style: c ? [bws, {
89
89
  alignSelf: 'center'
90
- }] : badgeWrapperStyle
91
- }), content) : content;
90
+ }] : bws
91
+ }), cnt) : cnt;
92
92
  }
93
- const textElement = hasText && ((0, _utils.isText)(text) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
94
- style: [tokens.layout.text, {
95
- color: tokens.colors.text,
96
- fontSize: tokens.typography.fontSize,
97
- lineHeight: tokens.typography.lineHeight,
98
- fontFamily: tokens.typography.fontFamily,
99
- fontWeight: tokens.typography.fontWeight
93
+ const te = ht && ((0, _utils.isText)(text) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
94
+ style: [t.layout.text, {
95
+ color: t.colors.text,
96
+ fontSize: t.typography.fontSize,
97
+ lineHeight: t.typography.lineHeight,
98
+ fontFamily: t.typography.fontFamily,
99
+ fontWeight: t.typography.fontWeight
100
100
  }, textStyle],
101
- numberOfLines: tokens.defaults.textNumberOfLines
101
+ numberOfLines: t.defaults.textNumberOfLines
102
102
  }, text) : text);
103
- return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, iconElement, textElement);
104
- }, [badge, center, children, direction, dot, hasText, icon, iconSize, resolvedIconColor, reverse, text, textStyle, tokens.colors.text, tokens.defaults.textNumberOfLines, tokens.layout.iconWrapper, tokens.layout.text, tokens.spacing.iconGap, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.fontWeight, tokens.typography.lineHeight]);
105
- const rightBorder = (0, _react().useMemo)(() => border && !gutter && !isLastColumn ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
106
- style: [tokens.layout.itemBorderRight, (0, _utils.createHairlineView)({
103
+ return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, ie, te);
104
+ }, [badge, c, children, d, dot, ht, icon, is, ric, r, text, textStyle, t.colors.text, t.defaults.textNumberOfLines, t.layout.iconWrapper, t.layout.text, t.spacing.iconGap, t.typography.fontFamily, t.typography.fontSize, t.typography.fontWeight, t.typography.lineHeight]);
105
+ const rb = b && !g && !ilc ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
106
+ style: [t.layout.itemBorderRight, (0, _utils.createHairlineView)({
107
107
  position: 'right',
108
- color: tokens.colors.border,
108
+ color: t.colors.border,
109
109
  top: 0,
110
110
  bottom: 0,
111
111
  right: 0
112
112
  })]
113
- }) : null, [border, gutter, isLastColumn, tokens.colors.border, tokens.layout.itemBorderRight]);
114
- const bottomBorder = (0, _react().useMemo)(() => border && !gutter && rowIndex < lastRowIndex ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
115
- style: [tokens.layout.itemBorderBottom, (0, _utils.createHairlineView)({
113
+ }) : null;
114
+ const bb = b && !g && ri < lri ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
115
+ style: [t.layout.itemBorderBottom, (0, _utils.createHairlineView)({
116
116
  position: 'bottom',
117
- color: tokens.colors.border,
117
+ color: t.colors.border,
118
118
  left: 0,
119
119
  right: 0,
120
120
  bottom: 0
121
121
  })]
122
- }) : null, [border, gutter, lastRowIndex, rowIndex, tokens.colors.border, tokens.layout.itemBorderBottom]);
123
- const content = (0, _react().useMemo)(() => /*#__PURE__*/_react().default.createElement(_reactNative().View, {
124
- style: contentWrapperStyle
125
- }, innerContent, rightBorder, bottomBorder), [bottomBorder, contentWrapperStyle, innerContent, rightBorder]);
126
- const baseItemStyle = (0, _react().useMemo)(() => ({
127
- width: _reactNative().Platform.OS === 'web' ? undefined : widthPercent,
122
+ }) : null;
123
+ const cnt = /*#__PURE__*/_react().default.createElement(_reactNative().View, {
124
+ style: cws
125
+ }, icn, rb, bb);
126
+ const bis = {
127
+ width: _reactNative().Platform.OS === 'web' ? undefined : wp,
128
128
  flexGrow: 0,
129
129
  flexShrink: 0,
130
- paddingRight: _reactNative().Platform.OS === 'web' ? undefined : gutter ? gutter : undefined,
131
- marginTop: _reactNative().Platform.OS === 'web' ? undefined : gutter && rowIndex > 0 ? gutter : undefined
132
- }), [gutter, rowIndex, widthPercent]);
133
- const isInteractive = clickable || (0, _utils.isFunction)(onPress);
134
- if (isInteractive) {
135
- return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
136
- style: pressableState => [baseItemStyle, typeof style === 'function' ? style(pressableState) : style, {
137
- opacity: pressableState.pressed ? tokens.defaults.pressedOpacity : 1
138
- }],
139
- android_ripple: {
140
- color: tokens.colors.active
141
- },
142
- onPress: onPress
143
- }, rest), content);
144
- }
130
+ paddingRight: _reactNative().Platform.OS === 'web' ? undefined : g ? g : undefined,
131
+ marginTop: _reactNative().Platform.OS === 'web' ? undefined : g && ri > 0 ? g : undefined
132
+ };
133
+ const ii = cl || (0, _utils.isFunction)(onPress);
134
+ if (ii) return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
135
+ accessibilityRole: "button",
136
+ style: ps => [bis, typeof style === 'function' ? style(ps) : style, {
137
+ opacity: ps.pressed ? t.defaults.pressedOpacity : 1
138
+ }],
139
+ android_ripple: {
140
+ color: t.colors.active
141
+ },
142
+ onPress: onPress
143
+ }, rest), cnt);
145
144
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({
146
- style: [baseItemStyle, typeof style === 'function' ? style({
145
+ style: [bis, typeof style === 'function' ? style({
147
146
  pressed: false
148
147
  }) : style]
149
- }, rest), content);
148
+ }, rest), cnt);
150
149
  };
151
- exports.GridItem = GridItem;
150
+ const GridItem = exports.GridItem = /*#__PURE__*/_react().default.memo(GridItemImpl);
152
151
  GridItem.displayName = 'GridItem';
@@ -26,6 +26,8 @@ function _reactNativeSvg() {
26
26
  return data;
27
27
  }
28
28
  var _utils = require("../../utils");
29
+ var _validate = require("../../utils/validate");
30
+ var _useLocale = require("../config-provider/useLocale");
29
31
  var _tokens = require("./tokens");
30
32
  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); }
31
33
  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); }
@@ -55,11 +57,7 @@ const splitImageStyle = style => {
55
57
  for (const key of Object.keys(flattenedRecord)) {
56
58
  const value = flattenedRecord[key];
57
59
  if (value === undefined) continue;
58
- if (isLayoutStyleKey(key)) {
59
- container[key] = value;
60
- } else {
61
- image[key] = value;
62
- }
60
+ if (isLayoutStyleKey(key)) container[key] = value;else image[key] = value;
63
61
  }
64
62
  return {
65
63
  container: Object.keys(container).length ? container : undefined,
@@ -75,23 +73,23 @@ const PRESERVE_ASPECT_RATIO_MAP = {
75
73
  center: 'xMidYMid meet'
76
74
  };
77
75
  const resolvePreserveAspectRatio = fit => PRESERVE_ASPECT_RATIO_MAP[fit] || 'xMidYMid slice';
76
+ const WEB_IMAGE_STYLE = _reactNative().Platform.OS === 'web' ? {
77
+ height: 'revert-layer',
78
+ width: 'revert-layer'
79
+ } : undefined;
78
80
  const resolveSourceUri = source => {
79
81
  if (!source) return undefined;
80
82
  if (typeof source === 'number') return undefined;
81
83
  if (Array.isArray(source)) {
82
84
  for (const item of source) {
83
- if (item && typeof item === 'object' && 'uri' in item && typeof item.uri === 'string') {
84
- return item.uri;
85
- }
85
+ if (item && typeof item === 'object' && 'uri' in item && typeof item.uri === 'string') return item.uri;
86
86
  }
87
87
  return undefined;
88
88
  }
89
- if (typeof source === 'object' && 'uri' in source && typeof source.uri === 'string') {
90
- return source.uri;
91
- }
89
+ if (typeof source === 'object' && 'uri' in source && typeof source.uri === 'string') return source.uri;
92
90
  return undefined;
93
91
  };
94
- const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
92
+ const ImageImpl = (props, ref) => {
95
93
  const {
96
94
  src,
97
95
  source,
@@ -121,15 +119,16 @@ const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
121
119
  onError,
122
120
  ...rest
123
121
  } = props;
122
+ const locale = (0, _useLocale.useLocale)();
124
123
  const tokens = (0, _tokens.useImageTokens)(tokensOverride);
125
124
  const fit = fitProp ?? tokens.defaults.fit;
126
125
  const showLoading = showLoadingProp ?? tokens.defaults.showLoading;
127
126
  const showError = showErrorProp ?? tokens.defaults.showError;
128
- const loadingText = loadingTextProp !== undefined ? loadingTextProp : tokens.defaults.loadingText;
129
- const errorText = errorTextProp !== undefined ? errorTextProp : tokens.defaults.errorText;
127
+ const loadingText = loadingTextProp !== undefined ? loadingTextProp : locale?.vanImage?.loading ?? tokens.defaults.loadingText;
128
+ const errorText = errorTextProp !== undefined ? errorTextProp : locale?.vanImage?.error ?? tokens.defaults.errorText;
130
129
  const {
131
130
  container: containerLayoutStyle,
132
- image: imageStyleWithoutLayout
131
+ image: imageStyleWithLayout
133
132
  } = (0, _react().useMemo)(() => splitImageStyle(style), [style]);
134
133
  const actualSource = (0, _react().useMemo)(() => source ? source : src ? {
135
134
  uri: src
@@ -145,57 +144,57 @@ const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
145
144
  return 'none';
146
145
  }, [source, src]);
147
146
  const resolvedAccessibilityLabel = alt ?? accessibilityLabel ?? ariaLabel;
148
- const [status, setStatus] = (0, _react().useState)(() => actualSource ? 'loading' : 'idle');
147
+ const [state, setState] = (0, _react().useState)(() => actualSource ? 'loading' : 'idle');
149
148
  (0, _react().useEffect)(() => {
150
- setStatus(actualSource ? 'loading' : 'idle');
149
+ setState(actualSource ? 'loading' : 'idle');
151
150
  }, [sourceKey]);
151
+ const onLoadRef = (0, _react().useRef)(onLoad);
152
+ onLoadRef.current = onLoad;
153
+ const onErrorRef = (0, _react().useRef)(onError);
154
+ onErrorRef.current = onError;
152
155
  const handleLoad = (0, _react().useCallback)(event => {
153
- setStatus('loaded');
154
- onLoad?.(event);
155
- }, [onLoad]);
156
+ setState('loaded');
157
+ onLoadRef.current?.(event);
158
+ }, []);
156
159
  const handleError = (0, _react().useCallback)(event => {
157
- setStatus('error');
158
- onError?.(event);
159
- }, [onError]);
160
+ setState('error');
161
+ onErrorRef.current?.(event);
162
+ }, []);
160
163
  const handleSvgLoad = (0, _react().useCallback)(() => {
161
164
  handleLoad({
162
165
  nativeEvent: {}
163
166
  });
164
167
  }, [handleLoad]);
165
- const handleSvgError = (0, _react().useCallback)(error => {
168
+ const handleSvgError = (0, _react().useCallback)(err => {
166
169
  handleError({
167
170
  nativeEvent: {
168
- error
171
+ error: err
169
172
  }
170
173
  });
171
174
  }, [handleError]);
172
175
  const uri = (0, _react().useMemo)(() => resolveSourceUri(actualSource), [actualSource]);
173
- const normalizedUri = (0, _react().useMemo)(() => (0, _utils.isString)(uri) ? uri.toLowerCase() : undefined, [uri]);
174
- const isSvg = (0, _react().useMemo)(() => !!normalizedUri && (normalizedUri.endsWith('.svg') || normalizedUri.includes('.svg?') || normalizedUri.includes('/svg?')), [normalizedUri]);
175
- const resolvedLoadingSize = (0, _react().useMemo)(() => (0, _utils.isNumber)(loadingSize) ? loadingSize : tokens.defaults.loadingIndicatorBaseSize, [loadingSize, tokens.defaults.loadingIndicatorBaseSize]);
176
- const resolvedErrorIconSize = (0, _react().useMemo)(() => iconSizeProp ?? tokens.defaults.iconSize, [iconSizeProp, tokens.defaults.iconSize]);
177
- const containerRole = onPress ? 'button' : undefined;
176
+ const normalizedUri = (0, _utils.isString)(uri) ? uri.toLowerCase() : undefined;
177
+ const isSvg = !!normalizedUri && (normalizedUri.endsWith('.svg') || normalizedUri.includes('.svg?') || normalizedUri.includes('/svg?'));
178
+ const resolvedLoadingSize = (0, _utils.isNumber)(loadingSize) ? loadingSize : tokens.defaults.loadingIndicatorBaseSize;
179
+ const resolvedErrorIconSize = iconSizeProp ?? tokens.defaults.iconSize;
180
+ const clickableRole = onPress ? 'button' : undefined;
178
181
  const pressableProps = onPress ? {
179
182
  onPress
180
183
  } : null;
181
184
  const renderLabel = (node, color, marginTop) => {
182
- if (node == null || node === false) return null;
183
- if ((0, _utils.isText)(node)) {
184
- return /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
185
- style: [tokens.layout.label, {
186
- color
187
- }, marginTop ? {
188
- marginTop
189
- } : undefined]
190
- }, node);
191
- }
192
- return marginTop ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
185
+ if (!(0, _validate.isRenderable)(node)) return null;
186
+ const textNode = (0, _utils.renderTextOrNode)(node, [tokens.layout.label, {
187
+ color: color
188
+ }, marginTop ? {
189
+ marginTop: marginTop
190
+ } : undefined].filter(Boolean));
191
+ return marginTop && !(0, _validate.isText)(node) ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
193
192
  style: {
194
- marginTop
193
+ marginTop: marginTop
195
194
  }
196
- }, node) : node;
195
+ }, textNode) : textNode;
197
196
  };
198
- const containerStyles = (0, _react().useMemo)(() => [tokens.layout.container, {
197
+ const computedContainerStyle = (0, _react().useMemo)(() => [tokens.layout.container, {
199
198
  width: width,
200
199
  height: height,
201
200
  backgroundColor: tokens.colors.background
@@ -205,10 +204,6 @@ const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
205
204
  borderRadius: radius
206
205
  } : undefined, containerStyle, containerLayoutStyle], [containerLayoutStyle, containerStyle, height, radius, round, tokens.colors.background, tokens.defaults.roundRadius, tokens.layout.container, width]);
207
206
  const imageAccessibilityLabel = !onPress ? resolvedAccessibilityLabel : undefined;
208
- const webImageStyle = _reactNative().Platform.OS === 'web' ? {
209
- height: 'revert-layer',
210
- width: 'revert-layer'
211
- } : undefined;
212
207
  const imageNode = actualSource ? isSvg && _reactNative().Platform.OS !== 'web' && uri ? /*#__PURE__*/_react().default.createElement(_reactNativeSvg().SvgUri, _extends({
213
208
  width: "100%",
214
209
  height: "100%",
@@ -217,7 +212,7 @@ const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
217
212
  accessible: !onPress,
218
213
  accessibilityLabel: imageAccessibilityLabel
219
214
  }, rest, {
220
- style: [tokens.layout.absoluteFill, imageStyleWithoutLayout],
215
+ style: [tokens.layout.absoluteFill, imageStyleWithLayout],
221
216
  onLoad: handleSvgLoad,
222
217
  onError: handleSvgError
223
218
  })) : /*#__PURE__*/_react().default.createElement(_reactNative().Image, _extends({
@@ -226,12 +221,12 @@ const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
226
221
  accessibilityLabel: imageAccessibilityLabel
227
222
  }, rest, {
228
223
  source: actualSource,
229
- style: [tokens.layout.absoluteFill, imageStyleWithoutLayout, webImageStyle],
224
+ style: [tokens.layout.absoluteFill, imageStyleWithLayout, WEB_IMAGE_STYLE],
230
225
  resizeMode: resolveFitMode(fit),
231
226
  onLoad: handleLoad,
232
227
  onError: handleError
233
228
  })) : null;
234
- const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, status === 'loading' && showLoading ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
229
+ const content = /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, state === 'loading' && showLoading && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
235
230
  style: tokens.layout.overlay,
236
231
  pointerEvents: "none",
237
232
  testID: "rv-image-loading"
@@ -243,24 +238,25 @@ const Image = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
243
238
  scale: resolvedLoadingSize / tokens.defaults.loadingIndicatorBaseSize
244
239
  }]
245
240
  }
246
- }), renderLabel(loadingText, tokens.colors.text, tokens.defaults.loadingLabelMarginTop)) : null, imageNode, status === 'error' && showError ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
241
+ }), renderLabel(loadingText, tokens.colors.text, tokens.defaults.loadingLabelMarginTop)), imageNode, state === 'error' && showError && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
247
242
  style: tokens.layout.overlay,
248
243
  pointerEvents: "none",
249
244
  testID: "rv-image-error"
250
- }, errorIcon ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
245
+ }, errorIcon && /*#__PURE__*/_react().default.createElement(_reactNative().View, {
251
246
  style: [tokens.layout.iconContainer, {
252
247
  width: resolvedErrorIconSize,
253
248
  height: resolvedErrorIconSize
254
249
  }]
255
- }, errorIcon) : null, fallback !== undefined && fallback !== null && fallback !== false ? renderLabel(fallback, tokens.colors.error) : renderLabel(errorText, tokens.colors.error)) : null, children);
250
+ }, errorIcon), (0, _validate.isRenderable)(fallback) ? renderLabel(fallback, tokens.colors.error) : renderLabel(errorText, tokens.colors.error)), children);
256
251
  return pressableProps ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({}, pressableProps, {
257
- accessibilityRole: containerRole,
252
+ accessibilityRole: clickableRole,
258
253
  accessibilityLabel: resolvedAccessibilityLabel,
259
- style: containerStyles
254
+ style: computedContainerStyle
260
255
  }), content) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
261
256
  accessibilityLabel: resolvedAccessibilityLabel,
262
- style: containerStyles
257
+ style: computedContainerStyle
263
258
  }, content);
264
- });
265
- Image.displayName = 'Image';
259
+ };
260
+ const ImageForwardRef = /*#__PURE__*/_react().default.forwardRef(ImageImpl);
261
+ const Image = /*#__PURE__*/_react().default.memo(ImageForwardRef);
266
262
  var _default = exports.default = Image;
@@ -17,8 +17,8 @@ const createTokens = foundations => {
17
17
  fit: 'cover',
18
18
  showLoading: true,
19
19
  showError: true,
20
- loadingText: '加载中…',
21
- errorText: '加载失败',
20
+ loadingText: 'Loading...',
21
+ errorText: 'Failed to load',
22
22
  iconSize: 20,
23
23
  loadingIndicatorBaseSize: 20,
24
24
  loadingLabelMarginTop: spacing.xs,