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
@@ -74,17 +74,17 @@ const FieldClearButton = ({
74
74
  onPress
75
75
  }) => {
76
76
  if (!show) return null;
77
- const webMouseDownProps = _reactNative().Platform.OS === 'web' ? {
78
- onMouseDown: event => {
79
- event.preventDefault?.();
80
- event.stopPropagation?.();
77
+ const webMDProps = _reactNative().Platform.OS === 'web' ? {
78
+ onMouseDown: e => {
79
+ e.preventDefault?.();
80
+ e.stopPropagation?.();
81
81
  }
82
82
  } : undefined;
83
83
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, _extends({
84
84
  style: [tokens.layout.clearIcon, {
85
85
  paddingHorizontal: tokens.spacing.rightIconGap
86
86
  }]
87
- }, webMouseDownProps, {
87
+ }, webMDProps, {
88
88
  onPressIn: onPressIn,
89
89
  onPressOut: onPressOut,
90
90
  onPress: onPress,
@@ -120,7 +120,7 @@ const FieldInput = ({
120
120
  editable,
121
121
  restInputProps
122
122
  }) => {
123
- const inputStyles = [isTextarea ? tokens.layout.textarea : tokens.layout.input, {
123
+ const inputStyleArray = [isTextarea ? tokens.layout.textarea : tokens.layout.input, {
124
124
  color: disabled ? tokens.colors.disabled : error ? tokens.colors.error : tokens.colors.input,
125
125
  fontSize: tokens.typography.inputSize,
126
126
  textAlign: finalTextAlign,
@@ -134,7 +134,7 @@ const FieldInput = ({
134
134
  }, inputStyle];
135
135
  return /*#__PURE__*/_react().default.createElement(_reactNative().TextInput, _extends({
136
136
  ref: inputRef,
137
- style: inputStyles,
137
+ style: inputStyleArray,
138
138
  value: value,
139
139
  onChangeText: onChangeText,
140
140
  onFocus: onFocus,
@@ -170,7 +170,7 @@ const FieldControlRow = ({
170
170
  }]
171
171
  }, controlNode, clearNode), rightIconNode, suffixNode);
172
172
  };
173
- const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
173
+ const FieldImpl = (props, ref) => {
174
174
  const {
175
175
  tokensOverride,
176
176
  label,
@@ -242,7 +242,7 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
242
242
  const clearTrigger = clearTriggerProp ?? tokens.defaults.clearTrigger;
243
243
  const rows = rowsProp ?? tokens.defaults.rows;
244
244
  const formatTrigger = formatTriggerProp ?? tokens.defaults.formatTrigger;
245
- const mergedTitleStyle = (0, _react().useMemo)(() => [{
245
+ const titleS = [{
246
246
  width: labelWidth,
247
247
  minWidth: labelWidth,
248
248
  maxWidth: labelWidth,
@@ -250,39 +250,51 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
250
250
  marginRight: tokens.spacing.labelGap,
251
251
  flexShrink: 0,
252
252
  flexGrow: 0
253
- }, titleStyle], [labelWidth, titleStyle, tokens.spacing.labelGap]);
254
- const resolvedSuffix = (0, _react().useMemo)(() => suffixProp ?? button, [button, suffixProp]);
255
- const resolvedDescription = (0, _react().useMemo)(() => intro ?? description, [description, intro]);
256
- const resolvedPlaceholderColor = (0, _react().useMemo)(() => placeholderTextColor ?? (disabled ? tokens.colors.disabled : tokens.colors.placeholder), [disabled, placeholderTextColor, tokens.colors.disabled, tokens.colors.placeholder]);
253
+ }, titleStyle];
254
+ const suffix = suffixProp ?? button;
255
+ const descriptionText = intro ?? description;
256
+ const placeholderColor = placeholderTextColor ?? (disabled ? tokens.colors.disabled : tokens.colors.placeholder);
257
257
  const isTextarea = type === 'textarea';
258
258
  const isControlled = valueProp !== undefined;
259
259
  const [internalValue, setInternalValue] = (0, _react().useState)(defaultValue);
260
260
  const value = isControlled ? valueProp ?? '' : internalValue;
261
261
  const [focused, setFocused] = (0, _react().useState)(false);
262
262
  const [pressingClear, setPressingClear] = (0, _react().useState)(false);
263
- const clearJustHandledRef = (0, _react().useRef)(false);
263
+ const clearHandledRef = (0, _react().useRef)(false);
264
264
  const inputRef = (0, _react().useRef)(null);
265
265
  const introId = (0, _react().useId)();
266
266
  const errorId = (0, _react().useId)();
267
267
  const describedBy = (0, _react().useMemo)(() => {
268
- const ids = [(0, _validate.isRenderable)(errorMessage) ? errorId : null, (0, _validate.isRenderable)(resolvedDescription) ? introId : null].filter(Boolean);
268
+ const ids = [(0, _validate.isRenderable)(errorMessage) ? errorId : null, (0, _validate.isRenderable)(descriptionText) ? introId : null].filter(Boolean);
269
269
  return ids.length ? ids : undefined;
270
- }, [errorId, errorMessage, introId, resolvedDescription]);
270
+ }, [errorId, errorMessage, introId, descriptionText]);
271
271
  const lineHeight = tokens.defaults.textareaLineHeight;
272
- const autoSizeConfig = (0, _react().useMemo)(() => autoSize && (0, _validate.isObject)(autoSize) ? autoSize : undefined, [autoSize]);
273
- const minRows = (0, _react().useMemo)(() => !isTextarea ? 1 : autoSizeConfig && (0, _validate.isDef)(autoSizeConfig.minRows) ? Math.max(1, autoSizeConfig.minRows) : Math.max(1, rows), [autoSizeConfig, isTextarea, rows]);
274
- const maxRows = (0, _react().useMemo)(() => !isTextarea ? undefined : autoSizeConfig && (0, _validate.isDef)(autoSizeConfig.maxRows) ? Math.max(1, autoSizeConfig.maxRows) : undefined, [autoSizeConfig, isTextarea]);
272
+ const autoSizeConfig = autoSize && (0, _validate.isObject)(autoSize) ? autoSize : undefined;
273
+ const minRows = !isTextarea ? 1 : autoSizeConfig && (0, _validate.isDef)(autoSizeConfig.minRows) ? Math.max(1, autoSizeConfig.minRows) : Math.max(1, rows);
274
+ const maxRows = !isTextarea ? undefined : autoSizeConfig && (0, _validate.isDef)(autoSizeConfig.maxRows) ? Math.max(1, autoSizeConfig.maxRows) : undefined;
275
275
  const minHeight = (0, _react().useMemo)(() => isTextarea ? Math.max(tokens.sizes.textareaMinHeight, minRows * lineHeight) : undefined, [isTextarea, lineHeight, minRows, tokens.sizes.textareaMinHeight]);
276
276
  const maxHeight = (0, _react().useMemo)(() => isTextarea && maxRows ? Math.max(tokens.sizes.textareaMinHeight, maxRows * lineHeight) : undefined, [isTextarea, lineHeight, maxRows, tokens.sizes.textareaMinHeight]);
277
277
  const [textareaHeight, setTextareaHeight] = (0, _react().useState)(minHeight);
278
+ const onChangeTextRef = (0, _react().useRef)(onChangeText);
279
+ onChangeTextRef.current = onChangeText;
280
+ const onOverlimitRef = (0, _react().useRef)(onOverlimit);
281
+ onOverlimitRef.current = onOverlimit;
282
+ const onFocusRef = (0, _react().useRef)(onFocus);
283
+ onFocusRef.current = onFocus;
284
+ const onBlurRef = (0, _react().useRef)(onBlur);
285
+ onBlurRef.current = onBlur;
286
+ const onPressInRef = (0, _react().useRef)(onPressIn);
287
+ onPressInRef.current = onPressIn;
288
+ const onClickInputRef = (0, _react().useRef)(onClickInput);
289
+ onClickInputRef.current = onClickInput;
290
+ const onClearRef = (0, _react().useRef)(onClear);
291
+ onClearRef.current = onClear;
278
292
  const formatValue = (0, _react().useCallback)((inputValue, trigger = 'onChange') => formatter && trigger === formatTrigger ? formatter(inputValue) : inputValue, [formatTrigger, formatter]);
279
- const updateValue = (0, _react().useCallback)((next, trigger = 'onChange') => {
280
- const formatted = formatValue(next, trigger);
281
- if (!isControlled) {
282
- setInternalValue(formatted);
283
- }
284
- onChangeText?.(formatted);
285
- }, [formatValue, isControlled, onChangeText]);
293
+ const updateValue = (0, _react().useCallback)((newValue, trigger = 'onChange') => {
294
+ const formatted = formatValue(newValue, trigger);
295
+ if (!isControlled) setInternalValue(formatted);
296
+ onChangeTextRef.current?.(formatted);
297
+ }, [formatValue, isControlled]);
286
298
  (0, _react().useImperativeHandle)(ref, () => ({
287
299
  focus: () => inputRef.current?.focus(),
288
300
  blur: () => inputRef.current?.blur(),
@@ -291,75 +303,68 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
291
303
  return inputRef.current;
292
304
  }
293
305
  }));
294
- const finalTextAlign = controlAlign !== 'left' ? controlAlign : inputAlign;
306
+ const textAlign = controlAlign !== 'left' ? controlAlign : inputAlign;
295
307
  const showClear = clearable && !readOnly && (value ?? '') !== '' && (clearTrigger === 'always' || clearTrigger === 'focus' && (focused || pressingClear));
296
308
  const handleChangeText = (0, _react().useCallback)(text => {
297
- let next = text ?? '';
309
+ let newValue = text ?? '';
298
310
  if (type === 'number' || type === 'digit') {
299
- const allowDot = type === 'number';
300
- next = (0, _string.formatNumberInput)(next, allowDot, allowDot);
311
+ const allowDecimal = type === 'number';
312
+ newValue = (0, _string.formatNumberInput)(newValue, allowDecimal, allowDecimal);
301
313
  }
302
- if ((0, _validate.isFiniteNumber)(maxLength) && maxLength >= 0 && next.length > maxLength) {
303
- onOverlimit?.(next);
304
- next = next.slice(0, maxLength);
314
+ ;
315
+ if ((0, _validate.isFiniteNumber)(maxLength) && maxLength >= 0 && newValue.length > maxLength) {
316
+ onOverlimitRef.current?.(newValue);
317
+ newValue = newValue.slice(0, maxLength);
305
318
  }
306
- updateValue(next, 'onChange');
307
- }, [maxLength, onOverlimit, type, updateValue]);
308
- const handleFocus = (0, _react().useCallback)(event => {
319
+ ;
320
+ updateValue(newValue, 'onChange');
321
+ }, [maxLength, type, updateValue]);
322
+ const handleFocus = (0, _react().useCallback)(e => {
309
323
  setFocused(true);
310
- onFocus?.(event);
311
- if (readOnly) {
312
- inputRef.current?.blur();
313
- }
314
- }, [onFocus, readOnly]);
315
- const handleBlur = (0, _react().useCallback)(event => {
316
- if (_reactNative().Platform.OS !== 'web' && clearJustHandledRef.current) {
317
- clearJustHandledRef.current = false;
324
+ onFocusRef.current?.(e);
325
+ if (readOnly) inputRef.current?.blur();
326
+ }, [readOnly]);
327
+ const handleBlur = (0, _react().useCallback)(e => {
328
+ if (_reactNative().Platform.OS !== 'web' && clearHandledRef.current) {
329
+ clearHandledRef.current = false;
318
330
  setFocused(false);
319
- onBlur?.(event);
331
+ onBlurRef.current?.(e);
320
332
  return;
321
333
  }
334
+ ;
322
335
  updateValue(value ?? '', 'onBlur');
323
336
  setFocused(false);
324
- onBlur?.(event);
325
- }, [onBlur, updateValue, value]);
326
- const handlePressIn = (0, _react().useCallback)(event => {
327
- onPressIn?.(event);
328
- onClickInput?.();
329
- }, [onClickInput, onPressIn]);
330
- const handleContentSizeChange = (0, _react().useCallback)(event => {
337
+ onBlurRef.current?.(e);
338
+ }, [updateValue, value]);
339
+ const handlePressIn = (0, _react().useCallback)(e => {
340
+ onPressInRef.current?.(e);
341
+ onClickInputRef.current?.();
342
+ }, []);
343
+ const handleContentSizeChange = (0, _react().useCallback)(e => {
331
344
  if (!isTextarea) return;
332
- const contentHeight = event.nativeEvent.contentSize?.height ?? 0;
345
+ const contentHeight = e.nativeEvent.contentSize?.height ?? 0;
333
346
  if (!contentHeight) return;
334
347
  let nextHeight = contentHeight;
335
348
  if (autoSize) {
336
349
  nextHeight = Math.max(minHeight ?? contentHeight, contentHeight);
337
- if (maxHeight) {
338
- nextHeight = Math.min(nextHeight, maxHeight);
339
- }
340
- } else if (minHeight) {
341
- nextHeight = Math.max(minHeight, contentHeight);
342
- }
350
+ if (maxHeight) nextHeight = Math.min(nextHeight, maxHeight);
351
+ } else if (minHeight) nextHeight = Math.max(minHeight, contentHeight);
343
352
  setTextareaHeight(nextHeight);
344
353
  }, [autoSize, isTextarea, maxHeight, minHeight]);
345
354
  const handleClear = (0, _react().useCallback)(() => {
346
- if (_reactNative().Platform.OS !== 'web') {
347
- clearJustHandledRef.current = true;
348
- }
355
+ if (_reactNative().Platform.OS !== 'web') clearHandledRef.current = true;
349
356
  updateValue('');
350
357
  inputRef.current?.clear?.();
351
358
  inputRef.current?.focus?.();
352
- onClear?.();
353
- }, [onClear, updateValue]);
359
+ onClearRef.current?.();
360
+ }, [updateValue]);
354
361
  const handleClearPressIn = (0, _react().useCallback)(() => {
355
362
  setPressingClear(true);
356
- if (_reactNative().Platform.OS !== 'web') {
357
- handleClear();
358
- }
363
+ if (_reactNative().Platform.OS !== 'web') handleClear();
359
364
  }, [handleClear]);
360
365
  const handleClearPressOut = (0, _react().useCallback)(() => {
361
366
  setPressingClear(false);
362
- clearJustHandledRef.current = false;
367
+ clearHandledRef.current = false;
363
368
  }, []);
364
369
  const controlNode = (0, _validate.isRenderable)(children) ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
365
370
  style: [tokens.layout.children, {
@@ -371,7 +376,7 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
371
376
  isTextarea: isTextarea,
372
377
  disabled: disabled,
373
378
  error: error,
374
- finalTextAlign: finalTextAlign,
379
+ finalTextAlign: textAlign,
375
380
  lineHeight: lineHeight,
376
381
  textareaHeight: textareaHeight,
377
382
  minHeight: minHeight,
@@ -383,27 +388,25 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
383
388
  onPressIn: handlePressIn,
384
389
  rows: rows,
385
390
  keyboardType: restInputProps.keyboardType ?? mapKeyboardType(type),
386
- placeholderTextColor: resolvedPlaceholderColor,
391
+ placeholderTextColor: placeholderColor,
387
392
  onContentSizeChange: handleContentSizeChange,
388
393
  describedBy: describedBy,
389
394
  secureTextEntry: type === 'password',
390
395
  editable: !disabled && !readOnly,
391
396
  restInputProps: restInputProps
392
397
  });
393
- const contentWrapperStyle = (0, _react().useMemo)(() => [{
398
+ const contentWrapStyle = [{
394
399
  width: '100%',
395
400
  justifyContent: alignMap[controlAlign]
396
- }, contentStyle], [contentStyle, controlAlign]);
401
+ }, contentStyle];
397
402
  const renderAffix = node => {
398
- if ((0, _validate.isText)(node)) {
399
- return /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
400
- style: [tokens.layout.affixText, {
401
- color: tokens.colors.input,
402
- fontSize: tokens.typography.inputSize
403
- }],
404
- numberOfLines: 1
405
- }, node);
406
- }
403
+ if ((0, _validate.isText)(node)) return /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
404
+ style: [tokens.layout.affixText, {
405
+ color: tokens.colors.input,
406
+ fontSize: tokens.typography.inputSize
407
+ }],
408
+ numberOfLines: 1
409
+ }, node);
407
410
  return node;
408
411
  };
409
412
  const tooltipNode = (0, _validate.isRenderable)(tooltip) ? (() => {
@@ -424,6 +427,7 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
424
427
  icon = customIcon ?? defaultIcon;
425
428
  dialogProps = rest;
426
429
  }
430
+ ;
427
431
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
428
432
  style: [tokens.layout.tooltip, {
429
433
  marginLeft: tokens.spacing.rightIconGap
@@ -433,8 +437,8 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
433
437
  }, icon);
434
438
  })() : null;
435
439
  const labelNode = (0, _validate.isRenderable)(label) ? (() => {
436
- const isPlain = (0, _validate.isText)(label);
437
- const content = isPlain ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
440
+ const isPlainText = (0, _validate.isText)(label);
441
+ const content = isPlainText ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
438
442
  style: [{
439
443
  color: disabled ? tokens.colors.disabled : tokens.colors.label,
440
444
  fontSize: tokens.typography.labelSize,
@@ -446,25 +450,22 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
446
450
  style: tokens.layout.labelRow
447
451
  }, content, tooltipNode);
448
452
  })() : null;
449
- const wordLimitNode = showWordLimit && maxLength !== undefined && maxLength !== null ? (() => {
453
+ const wordLimitNode = showWordLimit && maxLength != null ? (() => {
450
454
  const currentCount = (value ?? '').length;
451
455
  const content = (0, _validate.isFunction)(showWordLimit) ? showWordLimit({
452
456
  currentCount,
453
457
  maxLength
454
458
  }) : `${currentCount}/${maxLength}`;
455
- if (content === null || content === false) return null;
456
- if ((0, _validate.isText)(content)) {
457
- return /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
458
- style: [tokens.layout.wordLimit, {
459
- color: tokens.colors.wordLimit,
460
- fontSize: tokens.typography.wordLimitSize ?? 12,
461
- textAlign: 'right',
462
- alignSelf: 'flex-end',
463
- marginTop: tokens.spacing.wordLimitMarginTop
464
- }]
465
- }, content);
466
- }
467
- return content;
459
+ if (!(0, _validate.isRenderable)(content)) return null;
460
+ return (0, _validate.isText)(content) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
461
+ style: [tokens.layout.wordLimit, {
462
+ color: tokens.colors.wordLimit,
463
+ fontSize: tokens.typography.wordLimitSize ?? 12,
464
+ textAlign: 'right',
465
+ alignSelf: 'flex-end',
466
+ marginTop: tokens.spacing.wordLimitMarginTop
467
+ }]
468
+ }, content) : content;
468
469
  })() : null;
469
470
  const messageNode = (0, _validate.isRenderable)(errorMessage) ? (0, _validate.isText)(errorMessage) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
470
471
  nativeID: errorId,
@@ -483,7 +484,7 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
483
484
  }],
484
485
  accessibilityLiveRegion: "polite"
485
486
  }, errorMessage) : null;
486
- const introNode = (0, _validate.isRenderable)(resolvedDescription) ? (0, _validate.isText)(resolvedDescription) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
487
+ const introNode = (0, _validate.isRenderable)(descriptionText) ? (0, _validate.isText)(descriptionText) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
487
488
  nativeID: introId,
488
489
  style: [tokens.layout.message, {
489
490
  color: tokens.colors.intro,
@@ -491,22 +492,22 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
491
492
  textAlign: controlAlign,
492
493
  marginTop: tokens.spacing.introMarginTop
493
494
  }, introStyle]
494
- }, resolvedDescription) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
495
+ }, descriptionText) : /*#__PURE__*/_react().default.createElement(_reactNative().View, {
495
496
  nativeID: introId,
496
497
  style: {
497
498
  marginTop: tokens.spacing.introMarginTop
498
499
  }
499
- }, resolvedDescription) : null;
500
+ }, descriptionText) : null;
500
501
  const prefixNode = prefix ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
501
502
  style: [tokens.layout.prefix, {
502
503
  paddingRight: tokens.spacing.prefixGap
503
504
  }]
504
505
  }, renderAffix(prefix)) : null;
505
- const suffixNode = resolvedSuffix ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
506
+ const suffixNode = suffix ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
506
507
  style: [tokens.layout.suffix, {
507
508
  paddingLeft: tokens.spacing.suffixGap
508
509
  }]
509
- }, renderAffix(resolvedSuffix)) : null;
510
+ }, renderAffix(suffix)) : null;
510
511
  const leftIconNode = leftIcon ? /*#__PURE__*/_react().default.createElement(FieldSlot, {
511
512
  onPress: onClickLeftIcon,
512
513
  style: [tokens.layout.leftIcon, {
@@ -539,9 +540,9 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
539
540
  isLink: isLink,
540
541
  arrowDirection: arrowDirection,
541
542
  extra: extra,
542
- titleStyle: mergedTitleStyle,
543
+ titleStyle: titleS,
543
544
  style: style,
544
- contentStyle: contentWrapperStyle,
545
+ contentStyle: contentWrapStyle,
545
546
  accessibilityState: error ? {
546
547
  invalid: true
547
548
  } : undefined,
@@ -557,6 +558,8 @@ const Field = exports.Field = /*#__PURE__*/_react().default.forwardRef((props, r
557
558
  rightIconNode: rightIconNode,
558
559
  suffixNode: suffixNode
559
560
  }), wordLimitNode, messageNode, introNode);
560
- });
561
- Field.displayName = 'Field';
561
+ };
562
+ const FieldForwardRef = /*#__PURE__*/_react().default.forwardRef(FieldImpl);
563
+ FieldForwardRef.displayName = 'Field';
564
+ const Field = exports.Field = /*#__PURE__*/_react().default.memo(FieldForwardRef);
562
565
  var _default = exports.default = Field;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.FlexContext = exports.Flex = void 0;
7
7
  function _react() {
8
- const data = _interopRequireDefault(require("react"));
8
+ const data = _interopRequireWildcard(require("react"));
9
9
  _react = function () {
10
10
  return data;
11
11
  };
@@ -19,7 +19,7 @@ function _reactNative() {
19
19
  return data;
20
20
  }
21
21
  var _tokens = require("./tokens");
22
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ 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); }
23
23
  const FlexContext = exports.FlexContext = /*#__PURE__*/_react().default.createContext({
24
24
  horizontalGap: 0,
25
25
  verticalGap: 0,
@@ -39,7 +39,7 @@ const justifyMap = {
39
39
  around: 'space-around',
40
40
  between: 'space-between'
41
41
  };
42
- const Flex = props => {
42
+ const FlexImpl = props => {
43
43
  const {
44
44
  tokensOverride,
45
45
  children,
@@ -57,29 +57,29 @@ const Flex = props => {
57
57
  const gutter = gutterProp ?? tokens.defaults.gutter;
58
58
  const align = alignProp ?? tokens.defaults.align;
59
59
  const justify = justifyProp ?? tokens.defaults.justify;
60
- const columns = columnsProp ?? tokens.defaults.columns;
61
- const resolvedColumns = Math.max(1, columns);
60
+ const resolvedColumns = Math.max(1, columnsProp ?? tokens.defaults.columns);
62
61
  const [hRaw, vRaw] = Array.isArray(gutter) ? gutter : [gutter, 0];
63
- const horizontalGap = Math.max(0, hRaw ?? 0);
64
- const verticalGap = Math.max(0, vRaw ?? 0);
65
- const supportsGap = _reactNative().Platform.OS === 'web';
62
+ const hGap = Math.max(0, hRaw ?? 0),
63
+ vGap = Math.max(0, vRaw ?? 0);
64
+ const web = _reactNative().Platform.OS === 'web';
65
+ const contextValue = (0, _react().useMemo)(() => ({
66
+ horizontalGap: hGap,
67
+ verticalGap: vGap,
68
+ columns: resolvedColumns
69
+ }), [hGap, vGap, resolvedColumns]);
66
70
  return /*#__PURE__*/_react().default.createElement(FlexContext.Provider, {
67
- value: {
68
- horizontalGap,
69
- verticalGap,
70
- columns: resolvedColumns
71
- }
71
+ value: contextValue
72
72
  }, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
73
73
  style: [tokens.layout.container, {
74
74
  flexDirection: direction,
75
75
  flexWrap: wrap,
76
76
  alignItems: alignMap[align],
77
77
  justifyContent: justifyMap[justify],
78
- marginHorizontal: !supportsGap && horizontalGap ? -horizontalGap / 2 : undefined,
79
- marginVertical: !supportsGap && verticalGap ? -verticalGap / 2 : undefined,
80
- columnGap: supportsGap ? horizontalGap : undefined,
81
- rowGap: supportsGap ? verticalGap : undefined
78
+ marginHorizontal: !web && hGap ? -hGap / 2 : undefined,
79
+ marginVertical: !web && vGap ? -vGap / 2 : undefined,
80
+ columnGap: web ? hGap : undefined,
81
+ rowGap: web ? vGap : undefined
82
82
  }, style]
83
83
  }, children));
84
84
  };
85
- exports.Flex = Flex;
85
+ const Flex = exports.Flex = /*#__PURE__*/_react().default.memo(FlexImpl);
@@ -21,12 +21,12 @@ function _reactNative() {
21
21
  var _FlexContext = require("./FlexContext");
22
22
  var _utils = require("../../utils");
23
23
  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); }
24
- const parseFlex = value => {
25
- if ((0, _utils.isNumber)(value)) return {
26
- flex: value
24
+ const parseFlex = v => {
25
+ if ((0, _utils.isNumber)(v)) return {
26
+ flex: v
27
27
  };
28
- if (!value) return undefined;
29
- const str = value.trim();
28
+ if (!v) return undefined;
29
+ const str = v.trim();
30
30
  if (!str) return undefined;
31
31
  if (str === 'auto') return {
32
32
  flexGrow: 1,
@@ -51,9 +51,7 @@ const parseFlex = value => {
51
51
  if (basisStr === 'auto') flexBasis = 'auto';else if (basisStr) {
52
52
  const pxMatch = basisStr.match(/^(-?\d+(?:\.\d+)?)px$/);
53
53
  const basisNum = pxMatch ? Number(pxMatch[1]) : Number(basisStr);
54
- if ((0, _utils.isNumber)(basisNum)) {
55
- flexBasis = basisNum;
56
- }
54
+ if ((0, _utils.isNumber)(basisNum)) flexBasis = basisNum;
57
55
  }
58
56
  return {
59
57
  flexGrow: grow,
@@ -64,32 +62,33 @@ const parseFlex = value => {
64
62
  }
65
63
  return undefined;
66
64
  };
67
- const FlexItem = ({
65
+ const FlexItemImpl = ({
68
66
  span,
69
67
  flex,
70
- style,
71
- children
68
+ style: s,
69
+ children: c
72
70
  }) => {
73
71
  const {
74
- horizontalGap,
75
- verticalGap,
76
- columns
72
+ horizontalGap: hg,
73
+ verticalGap: vg,
74
+ columns: cols
77
75
  } = (0, _react().useContext)(_FlexContext.FlexContext);
78
- const supportsGap = _reactNative().Platform.OS === 'web';
76
+ const sg = _reactNative().Platform.OS === 'web';
79
77
  if ((0, _utils.isNumber)(span) && span <= 0) return null;
80
- const widthStyle = {};
78
+ const ws = {};
81
79
  if ((0, _utils.isNumber)(span)) {
82
- const safeColumns = Math.max(1, columns);
83
- const percent = Math.min(Math.max(span, 0), safeColumns) / safeColumns;
84
- widthStyle.width = `${percent * 100}%`;
85
- widthStyle.flexGrow = 0;
86
- widthStyle.flexShrink = 0;
80
+ const sc = Math.max(1, cols);
81
+ const p = Math.min(Math.max(span, 0), sc) / sc;
82
+ ws.width = `${p * 100}%`;
83
+ ws.flexGrow = 0;
84
+ ws.flexShrink = 0;
87
85
  }
88
86
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
89
- style: [supportsGap ? null : {
90
- paddingHorizontal: horizontalGap / 2,
91
- paddingVertical: verticalGap / 2
92
- }, widthStyle, parseFlex(flex), style]
93
- }, children);
87
+ style: [sg ? null : {
88
+ paddingHorizontal: hg / 2,
89
+ paddingVertical: vg / 2
90
+ }, ws, parseFlex(flex), s]
91
+ }, c);
94
92
  };
95
- exports.FlexItem = FlexItem;
93
+ const FlexItem = exports.FlexItem = /*#__PURE__*/_react().default.memo(FlexItemImpl);
94
+ FlexItem.displayName = 'FlexItem';