react-native-system-ui 0.0.2 → 0.0.4

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 (565) hide show
  1. package/README.md +22 -6
  2. package/dist/cjs/{area → components/area}/Area.js +4 -10
  3. package/dist/cjs/{avatar → components/avatar}/Avatar.js +3 -3
  4. package/dist/cjs/{avatar → components/avatar}/tokens.js +2 -1
  5. package/dist/cjs/{badge → components/badge}/Badge.js +30 -38
  6. package/dist/cjs/{button → components/button}/Button.js +13 -13
  7. package/dist/cjs/{button → components/button}/ButtonGroup.js +8 -8
  8. package/dist/cjs/{calendar → components/calendar}/Calendar.js +10 -10
  9. package/dist/cjs/{cascader → components/cascader}/Cascader.js +4 -4
  10. package/dist/cjs/{cascader → components/cascader}/useCascaderExtend.js +5 -15
  11. package/dist/cjs/{checkbox → components/checkbox}/CheckboxGroup.js +2 -2
  12. package/dist/cjs/{circle → components/circle}/Circle.js +2 -2
  13. package/dist/cjs/{collapse → components/collapse}/Collapse.js +13 -16
  14. package/dist/cjs/{config-provider → components/config-provider}/ConfigProvider.js +1 -1
  15. package/dist/cjs/{datetime-picker → components/datetime-picker}/DatetimePicker.js +7 -7
  16. package/dist/cjs/{dialog → components/dialog}/Dialog.js +4 -6
  17. package/dist/cjs/{dialog → components/dialog}/tokens.js +2 -1
  18. package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownItem.js +53 -52
  19. package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownMenu.js +19 -23
  20. package/dist/cjs/{dropdown-menu → components/dropdown-menu}/tokens.js +20 -3
  21. package/dist/cjs/{field → components/field}/Field.js +6 -6
  22. package/dist/cjs/{form → components/form}/Form.js +5 -9
  23. package/dist/cjs/{grid → components/grid}/Grid.js +4 -4
  24. package/dist/cjs/{image → components/image}/Image.js +19 -15
  25. package/dist/cjs/{image-preview → components/image-preview}/ImagePreview.js +62 -60
  26. package/dist/cjs/{image-preview → components/image-preview}/tokens.js +21 -2
  27. package/dist/cjs/{index-bar → components/index-bar}/IndexAnchor.js +7 -6
  28. package/dist/cjs/{index-bar → components/index-bar}/IndexBar.js +40 -45
  29. package/dist/cjs/components/index-bar/tokens.js +45 -0
  30. package/dist/cjs/components/index.js +854 -0
  31. package/dist/cjs/{input → components/input}/Input.js +7 -10
  32. package/dist/cjs/{nav-bar → components/nav-bar}/NavBar.js +2 -1
  33. package/dist/cjs/{notice-bar → components/notice-bar}/NoticeBar.js +69 -95
  34. package/dist/cjs/{notify → components/notify}/Notify.js +65 -49
  35. package/dist/cjs/{notify → components/notify}/defaults.js +2 -2
  36. package/dist/cjs/{notify → components/notify}/imperative.js +2 -2
  37. package/dist/cjs/{notify → components/notify}/tokens.js +5 -4
  38. package/dist/cjs/{number-keyboard → components/number-keyboard}/NumberKeyboard.js +15 -16
  39. package/dist/cjs/{number-keyboard → components/number-keyboard}/tokens.js +4 -2
  40. package/dist/cjs/{overlay → components/overlay}/useOverlayStack.js +5 -1
  41. package/dist/cjs/{pagination → components/pagination}/Pagination.js +2 -2
  42. package/dist/cjs/{password-input → components/password-input}/PasswordInput.js +35 -27
  43. package/dist/cjs/{picker → components/picker}/Picker.js +11 -12
  44. package/dist/cjs/{picker → components/picker}/WheelPicker.js +9 -9
  45. package/dist/cjs/{picker → components/picker}/tokens.js +4 -2
  46. package/dist/cjs/{popup → components/popup}/Popup.js +48 -75
  47. package/dist/cjs/{popup → components/popup}/tokens.js +2 -1
  48. package/dist/cjs/{portal → components/portal}/Portal.js +5 -0
  49. package/dist/cjs/{portal → components/portal}/PortalHost.js +1 -13
  50. package/dist/cjs/{pull-refresh → components/pull-refresh}/PullRefresh.js +46 -27
  51. package/dist/cjs/{radio → components/radio}/RadioGroup.js +2 -2
  52. package/dist/cjs/components/safe-area-view/SafeAreaView.js +63 -0
  53. package/dist/cjs/components/safe-area-view/index.js +12 -0
  54. package/dist/cjs/{search → components/search}/Search.js +52 -67
  55. package/dist/cjs/{search → components/search}/tokens.js +2 -1
  56. package/dist/cjs/{selector → components/selector}/Selector.js +3 -3
  57. package/dist/cjs/{share-sheet → components/share-sheet}/ShareSheet.js +64 -62
  58. package/dist/cjs/{share-sheet → components/share-sheet}/tokens.js +15 -2
  59. package/dist/cjs/{sidebar → components/sidebar}/Sidebar.js +15 -19
  60. package/dist/cjs/{sidebar → components/sidebar}/SidebarItem.js +0 -3
  61. package/dist/cjs/{skeleton → components/skeleton}/Skeleton.js +44 -56
  62. package/dist/cjs/{slider → components/slider}/Slider.js +55 -61
  63. package/dist/cjs/{stepper → components/stepper}/Stepper.js +13 -16
  64. package/dist/cjs/{stepper → components/stepper}/tokens.js +4 -2
  65. package/dist/cjs/{swiper → components/swiper}/Swiper.js +21 -42
  66. package/dist/cjs/{swiper → components/swiper}/useSwiperWeb.js +15 -18
  67. package/dist/cjs/{tabbar → components/tabbar}/Tabbar.js +10 -12
  68. package/dist/cjs/{tabbar → components/tabbar}/TabbarItem.js +0 -3
  69. package/dist/cjs/{tabs → components/tabs}/Tabs.js +33 -54
  70. package/dist/cjs/{tabs → components/tabs}/tokens.js +9 -1
  71. package/dist/cjs/{tabs → components/tabs}/useTabsScroll.js +4 -0
  72. package/dist/cjs/{toast → components/toast}/Toast.js +15 -16
  73. package/dist/cjs/{toast → components/toast}/tokens.js +5 -1
  74. package/dist/cjs/components/types.js +1 -0
  75. package/dist/cjs/{typography → components/typography}/Typography.js +17 -30
  76. package/dist/cjs/{uploader → components/uploader}/Uploader.js +49 -46
  77. package/dist/cjs/{uploader → components/uploader}/tokens.js +27 -1
  78. package/dist/cjs/{water-mark → components/water-mark}/WaterMark.js +16 -16
  79. package/dist/cjs/design-system/ThemeContext.js +19 -0
  80. package/dist/cjs/design-system/ThemeProvider.js +37 -0
  81. package/dist/cjs/design-system/createComponentTokensHook.js +30 -0
  82. package/dist/cjs/design-system/index.js +59 -0
  83. package/dist/cjs/design-system/mergeTokensOverride.js +12 -0
  84. package/dist/cjs/design-system/presets.js +147 -0
  85. package/dist/cjs/design-system/tokens.js +144 -0
  86. package/dist/cjs/design-system/useTheme.js +16 -0
  87. package/dist/cjs/hooks/aria/index.js +49 -0
  88. package/dist/cjs/hooks/aria/useAriaListBox.js +58 -0
  89. package/dist/cjs/hooks/aria/useAriaOverlay.js +50 -0
  90. package/dist/cjs/hooks/aria/useAriaPress.js +107 -0
  91. package/dist/cjs/hooks/aria/useAriaToggle.js +41 -0
  92. package/dist/cjs/hooks/gesture/index.js +16 -0
  93. package/dist/cjs/hooks/gesture/useGestureScroll.js +131 -0
  94. package/dist/cjs/hooks/index.js +84 -0
  95. package/dist/cjs/hooks/useControllableValue.js +52 -0
  96. package/dist/cjs/hooks/useCountDown.js +107 -0
  97. package/dist/cjs/hooks/useHairline.js +62 -0
  98. package/dist/cjs/hooks/usePresenceAnimation.js +70 -0
  99. package/dist/cjs/hooks/useSafeAreaPadding.js +41 -0
  100. package/dist/cjs/index.js +33 -499
  101. package/dist/cjs/platform/animation.js +14 -0
  102. package/dist/cjs/platform/history.js +14 -0
  103. package/dist/cjs/platform/index.js +60 -0
  104. package/dist/cjs/platform/measure.js +55 -0
  105. package/dist/cjs/platform/runtime.js +19 -0
  106. package/dist/cjs/platform/scrollLock.js +24 -0
  107. package/dist/cjs/utils/array.js +12 -0
  108. package/dist/cjs/utils/color.js +52 -0
  109. package/dist/cjs/utils/createPlatformShadow.js +63 -0
  110. package/dist/cjs/utils/date.js +75 -0
  111. package/dist/cjs/utils/deepMerge.js +37 -0
  112. package/dist/cjs/utils/hairline.js +103 -0
  113. package/dist/cjs/utils/index.js +115 -0
  114. package/dist/cjs/utils/number.js +73 -0
  115. package/dist/cjs/utils/promise.js +9 -0
  116. package/dist/cjs/utils/string.js +39 -0
  117. package/dist/cjs/utils/validate.js +41 -0
  118. package/dist/es/{area → components/area}/Area.js +5 -11
  119. package/dist/es/{avatar → components/avatar}/Avatar.js +3 -3
  120. package/dist/es/{avatar → components/avatar}/tokens.js +2 -1
  121. package/dist/es/{badge → components/badge}/Badge.js +31 -39
  122. package/dist/es/{button → components/button}/Button.js +14 -14
  123. package/dist/es/{button → components/button}/ButtonGroup.js +7 -7
  124. package/dist/es/{calendar → components/calendar}/Calendar.js +11 -11
  125. package/dist/es/{cascader → components/cascader}/Cascader.js +5 -5
  126. package/dist/es/{cascader → components/cascader}/useCascaderExtend.js +5 -9
  127. package/dist/es/{checkbox → components/checkbox}/CheckboxGroup.js +3 -3
  128. package/dist/es/{circle → components/circle}/Circle.js +3 -3
  129. package/dist/es/{collapse → components/collapse}/Collapse.js +14 -17
  130. package/dist/es/{config-provider → components/config-provider}/ConfigProvider.js +2 -2
  131. package/dist/es/{datetime-picker → components/datetime-picker}/DatetimePicker.js +8 -8
  132. package/dist/es/{dialog → components/dialog}/Dialog.js +4 -6
  133. package/dist/es/{dialog → components/dialog}/tokens.js +2 -1
  134. package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownItem.js +53 -52
  135. package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownMenu.js +20 -24
  136. package/dist/es/{dropdown-menu → components/dropdown-menu}/tokens.js +20 -3
  137. package/dist/es/{field → components/field}/Field.js +7 -7
  138. package/dist/es/{field → components/field}/index.js +1 -1
  139. package/dist/es/{form → components/form}/Form.js +6 -10
  140. package/dist/es/{grid → components/grid}/Grid.js +3 -3
  141. package/dist/es/{image → components/image}/Image.js +20 -16
  142. package/dist/es/{image-preview → components/image-preview}/ImagePreview.js +63 -61
  143. package/dist/es/components/image-preview/tokens.js +35 -0
  144. package/dist/es/{index-bar → components/index-bar}/IndexAnchor.js +7 -6
  145. package/dist/es/{index-bar → components/index-bar}/IndexBar.js +41 -46
  146. package/dist/es/components/index-bar/tokens.js +39 -0
  147. package/dist/es/components/index.js +123 -0
  148. package/dist/es/{input → components/input}/Input.js +8 -11
  149. package/dist/es/{nav-bar → components/nav-bar}/NavBar.js +2 -1
  150. package/dist/es/{notice-bar → components/notice-bar}/NoticeBar.js +70 -96
  151. package/dist/es/{notify → components/notify}/Notify.js +68 -52
  152. package/dist/es/{notify → components/notify}/defaults.js +2 -2
  153. package/dist/es/{notify → components/notify}/imperative.js +2 -2
  154. package/dist/es/{notify → components/notify}/tokens.js +5 -4
  155. package/dist/es/{number-keyboard → components/number-keyboard}/NumberKeyboard.js +16 -17
  156. package/dist/es/{number-keyboard → components/number-keyboard}/tokens.js +4 -2
  157. package/dist/es/{overlay → components/overlay}/useOverlayStack.js +6 -2
  158. package/dist/es/{pagination → components/pagination}/Pagination.js +3 -3
  159. package/dist/es/{password-input → components/password-input}/PasswordInput.js +36 -28
  160. package/dist/es/{picker → components/picker}/Picker.js +12 -13
  161. package/dist/es/{picker → components/picker}/WheelPicker.js +10 -10
  162. package/dist/es/{picker → components/picker}/tokens.js +4 -2
  163. package/dist/es/{popup → components/popup}/Popup.js +48 -75
  164. package/dist/es/{popup → components/popup}/tokens.js +2 -1
  165. package/dist/es/{portal → components/portal}/Portal.js +5 -0
  166. package/dist/es/{portal → components/portal}/PortalHost.js +1 -13
  167. package/dist/es/{pull-refresh → components/pull-refresh}/PullRefresh.js +47 -28
  168. package/dist/es/{radio → components/radio}/RadioGroup.js +3 -3
  169. package/dist/es/components/safe-area-view/SafeAreaView.js +43 -0
  170. package/dist/es/components/safe-area-view/index.js +1 -0
  171. package/dist/es/{search → components/search}/Search.js +53 -68
  172. package/dist/es/{search → components/search}/tokens.js +2 -1
  173. package/dist/es/{selector → components/selector}/Selector.js +4 -4
  174. package/dist/es/{share-sheet → components/share-sheet}/ShareSheet.js +65 -63
  175. package/dist/es/{share-sheet → components/share-sheet}/tokens.js +15 -2
  176. package/dist/es/{sidebar → components/sidebar}/Sidebar.js +14 -18
  177. package/dist/es/{sidebar → components/sidebar}/SidebarItem.js +0 -3
  178. package/dist/es/{skeleton → components/skeleton}/Skeleton.js +45 -57
  179. package/dist/es/{slider → components/slider}/Slider.js +56 -62
  180. package/dist/es/{stepper → components/stepper}/Stepper.js +14 -17
  181. package/dist/es/{stepper → components/stepper}/tokens.js +4 -2
  182. package/dist/es/{swiper → components/swiper}/Swiper.js +22 -43
  183. package/dist/es/{swiper → components/swiper}/useSwiperWeb.js +16 -19
  184. package/dist/es/{tabbar → components/tabbar}/Tabbar.js +11 -13
  185. package/dist/es/{tabbar → components/tabbar}/TabbarItem.js +0 -3
  186. package/dist/es/{tabs → components/tabs}/Tabs.js +34 -55
  187. package/dist/es/{tabs → components/tabs}/tokens.js +9 -1
  188. package/dist/es/{tabs → components/tabs}/useTabsScroll.js +4 -0
  189. package/dist/es/{toast → components/toast}/Toast.js +14 -15
  190. package/dist/es/{toast → components/toast}/tokens.js +5 -1
  191. package/dist/es/components/types.js +1 -0
  192. package/dist/es/{typography → components/typography}/Typography.js +18 -31
  193. package/dist/es/{uploader → components/uploader}/Uploader.js +49 -46
  194. package/dist/es/{uploader → components/uploader}/tokens.js +27 -1
  195. package/dist/es/{water-mark → components/water-mark}/WaterMark.js +17 -17
  196. package/dist/es/design-system/ThemeContext.js +6 -0
  197. package/dist/es/design-system/ThemeProvider.js +23 -0
  198. package/dist/es/design-system/createComponentTokensHook.js +17 -0
  199. package/dist/es/design-system/index.js +6 -0
  200. package/dist/es/design-system/mergeTokensOverride.js +5 -0
  201. package/dist/es/design-system/presets.js +140 -0
  202. package/dist/es/design-system/tokens.js +136 -0
  203. package/dist/es/design-system/useTheme.js +3 -0
  204. package/dist/es/hooks/aria/index.js +5 -0
  205. package/dist/es/hooks/aria/useAriaListBox.js +33 -0
  206. package/dist/es/hooks/aria/useAriaOverlay.js +25 -0
  207. package/dist/es/hooks/aria/useAriaPress.js +70 -0
  208. package/dist/es/hooks/aria/useAriaToggle.js +16 -0
  209. package/dist/es/hooks/gesture/index.js +2 -0
  210. package/dist/es/hooks/gesture/useGestureScroll.js +112 -0
  211. package/dist/es/hooks/index.js +7 -0
  212. package/dist/es/hooks/useControllableValue.js +40 -0
  213. package/dist/es/hooks/useCountDown.js +95 -0
  214. package/dist/es/hooks/useHairline.js +42 -0
  215. package/dist/es/hooks/usePresenceAnimation.js +51 -0
  216. package/dist/es/hooks/useSafeAreaPadding.js +23 -0
  217. package/dist/es/index.js +4 -73
  218. package/dist/es/platform/animation.js +2 -0
  219. package/dist/es/platform/history.js +7 -0
  220. package/dist/es/platform/index.js +6 -0
  221. package/dist/es/platform/measure.js +48 -0
  222. package/dist/es/platform/runtime.js +4 -0
  223. package/dist/es/platform/scrollLock.js +16 -0
  224. package/dist/es/utils/array.js +5 -0
  225. package/dist/es/utils/color.js +42 -0
  226. package/dist/es/utils/createPlatformShadow.js +50 -0
  227. package/dist/es/utils/date.js +63 -0
  228. package/dist/es/utils/deepMerge.js +31 -0
  229. package/dist/es/utils/hairline.js +84 -0
  230. package/dist/es/utils/index.js +12 -0
  231. package/dist/es/utils/number.js +56 -0
  232. package/dist/es/utils/promise.js +2 -0
  233. package/dist/es/utils/string.js +30 -0
  234. package/dist/es/utils/validate.js +15 -0
  235. package/dist/types/components/dialog/tokens.d.ts +1 -0
  236. package/dist/types/components/dropdown-menu/tokens.d.ts +17 -0
  237. package/dist/types/components/field/index.d.ts +1 -1
  238. package/dist/types/components/image-preview/tokens.d.ts +16 -0
  239. package/dist/types/components/index-bar/tokens.d.ts +13 -4
  240. package/dist/types/components/index.d.ts +104 -0
  241. package/dist/types/components/notify/defaults.d.ts +2 -2
  242. package/dist/types/components/number-keyboard/tokens.d.ts +1 -0
  243. package/dist/types/components/password-input/PasswordInput.d.ts +4 -0
  244. package/dist/types/components/picker/tokens.d.ts +2 -0
  245. package/dist/types/components/popup/tokens.d.ts +1 -0
  246. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +10 -0
  247. package/dist/types/components/safe-area-view/index.d.ts +2 -0
  248. package/dist/types/components/search/tokens.d.ts +1 -0
  249. package/dist/types/components/share-sheet/tokens.d.ts +13 -0
  250. package/dist/types/components/stepper/tokens.d.ts +2 -0
  251. package/dist/types/components/tabs/tokens.d.ts +8 -0
  252. package/dist/types/components/toast/tokens.d.ts +4 -0
  253. package/dist/types/components/uploader/tokens.d.ts +25 -0
  254. package/dist/types/hooks/index.d.ts +1 -0
  255. package/dist/types/hooks/usePresenceAnimation.d.ts +6 -1
  256. package/dist/types/hooks/useSafeAreaPadding.d.ts +13 -0
  257. package/package.json +290 -274
  258. package/dist/cjs/index-bar/tokens.js +0 -36
  259. package/dist/cjs/safe-area/SafeAreaClipper.js +0 -114
  260. package/dist/cjs/safe-area/index.js +0 -63
  261. package/dist/es/image-preview/tokens.js +0 -16
  262. package/dist/es/index-bar/tokens.js +0 -30
  263. package/dist/es/safe-area/SafeAreaClipper.js +0 -86
  264. package/dist/es/safe-area/index.js +0 -25
  265. package/dist/types/components/safe-area/SafeAreaClipper.d.ts +0 -47
  266. package/dist/types/components/safe-area/index.d.ts +0 -9
  267. /package/dist/cjs/{action-sheet → components/action-sheet}/ActionSheet.js +0 -0
  268. /package/dist/cjs/{action-sheet → components/action-sheet}/index.js +0 -0
  269. /package/dist/cjs/{action-sheet → components/action-sheet}/tokens.js +0 -0
  270. /package/dist/cjs/{area → components/area}/index.js +0 -0
  271. /package/dist/cjs/{area → components/area}/utils.js +0 -0
  272. /package/dist/cjs/{avatar → components/avatar}/index.js +0 -0
  273. /package/dist/cjs/{badge → components/badge}/index.js +0 -0
  274. /package/dist/cjs/{badge → components/badge}/tokens.js +0 -0
  275. /package/dist/cjs/{button → components/button}/ButtonContext.js +0 -0
  276. /package/dist/cjs/{button → components/button}/index.js +0 -0
  277. /package/dist/cjs/{button → components/button}/tokens.js +0 -0
  278. /package/dist/cjs/{calendar → components/calendar}/index.js +0 -0
  279. /package/dist/cjs/{calendar → components/calendar}/tokens.js +0 -0
  280. /package/dist/cjs/{cascader → components/cascader}/index.js +0 -0
  281. /package/dist/cjs/{cascader → components/cascader}/tokens.js +0 -0
  282. /package/dist/cjs/{cascader → components/cascader}/utils.js +0 -0
  283. /package/dist/cjs/{cell → components/cell}/Cell.js +0 -0
  284. /package/dist/cjs/{cell → components/cell}/CellContext.js +0 -0
  285. /package/dist/cjs/{cell → components/cell}/CellGroup.js +0 -0
  286. /package/dist/cjs/{cell → components/cell}/index.js +0 -0
  287. /package/dist/cjs/{cell → components/cell}/tokens.js +0 -0
  288. /package/dist/cjs/{checkbox → components/checkbox}/Checkbox.js +0 -0
  289. /package/dist/cjs/{checkbox → components/checkbox}/CheckboxContext.js +0 -0
  290. /package/dist/cjs/{checkbox → components/checkbox}/index.js +0 -0
  291. /package/dist/cjs/{checkbox → components/checkbox}/tokens.js +0 -0
  292. /package/dist/cjs/{circle → components/circle}/index.js +0 -0
  293. /package/dist/cjs/{circle → components/circle}/tokens.js +0 -0
  294. /package/dist/cjs/{collapse → components/collapse}/index.js +0 -0
  295. /package/dist/cjs/{collapse → components/collapse}/tokens.js +0 -0
  296. /package/dist/cjs/{config-provider → components/config-provider}/LocaleContext.js +0 -0
  297. /package/dist/cjs/{config-provider → components/config-provider}/index.js +0 -0
  298. /package/dist/cjs/{config-provider → components/config-provider}/locale/base.js +0 -0
  299. /package/dist/cjs/{config-provider → components/config-provider}/locale/en-US.js +0 -0
  300. /package/dist/cjs/{config-provider → components/config-provider}/locale/zh-CN.js +0 -0
  301. /package/dist/cjs/{config-provider → components/config-provider}/useLocale.js +0 -0
  302. /package/dist/cjs/{count-down → components/count-down}/CountDown.js +0 -0
  303. /package/dist/cjs/{count-down → components/count-down}/index.js +0 -0
  304. /package/dist/cjs/{count-down → components/count-down}/tokens.js +0 -0
  305. /package/dist/cjs/{datetime-picker → components/datetime-picker}/index.js +0 -0
  306. /package/dist/cjs/{dialog → components/dialog}/imperative.js +0 -0
  307. /package/dist/cjs/{dialog → components/dialog}/index.js +0 -0
  308. /package/dist/cjs/{divider → components/divider}/Divider.js +0 -0
  309. /package/dist/cjs/{divider → components/divider}/index.js +0 -0
  310. /package/dist/cjs/{divider → components/divider}/tokens.js +0 -0
  311. /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownMenuContext.js +0 -0
  312. /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/index.js +0 -0
  313. /package/dist/cjs/{empty → components/empty}/Empty.js +0 -0
  314. /package/dist/cjs/{empty → components/empty}/index.js +0 -0
  315. /package/dist/cjs/{empty → components/empty}/tokens.js +0 -0
  316. /package/dist/cjs/{field → components/field}/index.js +0 -0
  317. /package/dist/cjs/{field → components/field}/tokens.js +0 -0
  318. /package/dist/cjs/{field → components/field}/utils.js +0 -0
  319. /package/dist/cjs/{flex → components/flex}/Flex.js +0 -0
  320. /package/dist/cjs/{flex → components/flex}/FlexContext.js +0 -0
  321. /package/dist/cjs/{flex → components/flex}/FlexItem.js +0 -0
  322. /package/dist/cjs/{flex → components/flex}/index.js +0 -0
  323. /package/dist/cjs/{flex → components/flex}/tokens.js +0 -0
  324. /package/dist/cjs/{form → components/form}/FormContext.js +0 -0
  325. /package/dist/cjs/{form → components/form}/FormItem.js +0 -0
  326. /package/dist/cjs/{form → components/form}/FormList.js +0 -0
  327. /package/dist/cjs/{form → components/form}/index.js +0 -0
  328. /package/dist/cjs/{form → components/form}/utils.js +0 -0
  329. /package/dist/cjs/{grid → components/grid}/GridContext.js +0 -0
  330. /package/dist/cjs/{grid → components/grid}/GridItem.js +0 -0
  331. /package/dist/cjs/{grid → components/grid}/index.js +0 -0
  332. /package/dist/cjs/{grid → components/grid}/tokens.js +0 -0
  333. /package/dist/cjs/{image → components/image}/index.js +0 -0
  334. /package/dist/cjs/{image → components/image}/tokens.js +0 -0
  335. /package/dist/cjs/{image-preview → components/image-preview}/imperative.js +0 -0
  336. /package/dist/cjs/{image-preview → components/image-preview}/index.js +0 -0
  337. /package/dist/cjs/{index-bar → components/index-bar}/index.js +0 -0
  338. /package/dist/cjs/{input → components/input}/index.js +0 -0
  339. /package/dist/cjs/{input → components/input}/tokens.js +0 -0
  340. /package/dist/cjs/{list → components/list}/List.js +0 -0
  341. /package/dist/cjs/{list → components/list}/index.js +0 -0
  342. /package/dist/cjs/{list → components/list}/tokens.js +0 -0
  343. /package/dist/cjs/{loading → components/loading}/Loading.js +0 -0
  344. /package/dist/cjs/{loading → components/loading}/index.js +0 -0
  345. /package/dist/cjs/{loading → components/loading}/tokens.js +0 -0
  346. /package/dist/cjs/{nav-bar → components/nav-bar}/index.js +0 -0
  347. /package/dist/cjs/{nav-bar → components/nav-bar}/tokens.js +0 -0
  348. /package/dist/cjs/{notice-bar → components/notice-bar}/index.js +0 -0
  349. /package/dist/cjs/{notice-bar → components/notice-bar}/tokens.js +0 -0
  350. /package/dist/cjs/{notify → components/notify}/index.js +0 -0
  351. /package/dist/cjs/{number-keyboard → components/number-keyboard}/index.js +0 -0
  352. /package/dist/cjs/{overlay → components/overlay}/Overlay.js +0 -0
  353. /package/dist/cjs/{overlay → components/overlay}/OverlayStackStore.js +0 -0
  354. /package/dist/cjs/{overlay → components/overlay}/index.js +0 -0
  355. /package/dist/cjs/{overlay → components/overlay}/tokens.js +0 -0
  356. /package/dist/cjs/{pagination → components/pagination}/index.js +0 -0
  357. /package/dist/cjs/{pagination → components/pagination}/tokens.js +0 -0
  358. /package/dist/cjs/{password-input → components/password-input}/index.js +0 -0
  359. /package/dist/cjs/{picker → components/picker}/index.js +0 -0
  360. /package/dist/cjs/{picker → components/picker}/utils.js +0 -0
  361. /package/dist/cjs/{popup → components/popup}/index.js +0 -0
  362. /package/dist/cjs/{portal → components/portal}/PortalContext.js +0 -0
  363. /package/dist/cjs/{portal → components/portal}/index.js +0 -0
  364. /package/dist/cjs/{progress → components/progress}/Progress.js +0 -0
  365. /package/dist/cjs/{progress → components/progress}/index.js +0 -0
  366. /package/dist/cjs/{progress → components/progress}/tokens.js +0 -0
  367. /package/dist/cjs/{pull-refresh → components/pull-refresh}/index.js +0 -0
  368. /package/dist/cjs/{pull-refresh → components/pull-refresh}/tokens.js +0 -0
  369. /package/dist/cjs/{radio → components/radio}/Radio.js +0 -0
  370. /package/dist/cjs/{radio → components/radio}/RadioContext.js +0 -0
  371. /package/dist/cjs/{radio → components/radio}/index.js +0 -0
  372. /package/dist/cjs/{radio → components/radio}/tokens.js +0 -0
  373. /package/dist/cjs/{rate → components/rate}/Rate.js +0 -0
  374. /package/dist/cjs/{rate → components/rate}/index.js +0 -0
  375. /package/dist/cjs/{rate → components/rate}/tokens.js +0 -0
  376. /package/dist/cjs/{search → components/search}/index.js +0 -0
  377. /package/dist/cjs/{selector → components/selector}/index.js +0 -0
  378. /package/dist/cjs/{selector → components/selector}/tokens.js +0 -0
  379. /package/dist/cjs/{share-sheet → components/share-sheet}/index.js +0 -0
  380. /package/dist/cjs/{sidebar → components/sidebar}/SidebarContext.js +0 -0
  381. /package/dist/cjs/{sidebar → components/sidebar}/index.js +0 -0
  382. /package/dist/cjs/{sidebar → components/sidebar}/tokens.js +0 -0
  383. /package/dist/cjs/{skeleton → components/skeleton}/index.js +0 -0
  384. /package/dist/cjs/{skeleton → components/skeleton}/tokens.js +0 -0
  385. /package/dist/cjs/{slider → components/slider}/index.js +0 -0
  386. /package/dist/cjs/{slider → components/slider}/tokens.js +0 -0
  387. /package/dist/cjs/{slider → components/slider}/utils.js +0 -0
  388. /package/dist/cjs/{space → components/space}/Space.js +0 -0
  389. /package/dist/cjs/{space → components/space}/index.js +0 -0
  390. /package/dist/cjs/{space → components/space}/tokens.js +0 -0
  391. /package/dist/cjs/{stepper → components/stepper}/index.js +0 -0
  392. /package/dist/cjs/{swiper → components/swiper}/SwiperItem.js +0 -0
  393. /package/dist/cjs/{swiper → components/swiper}/SwiperPagIndicator.js +0 -0
  394. /package/dist/cjs/{swiper → components/swiper}/index.js +0 -0
  395. /package/dist/cjs/{swiper → components/swiper}/utils.js +0 -0
  396. /package/dist/cjs/{switch → components/switch}/Switch.js +0 -0
  397. /package/dist/cjs/{switch → components/switch}/index.js +0 -0
  398. /package/dist/cjs/{switch → components/switch}/tokens.js +0 -0
  399. /package/dist/cjs/{tabbar → components/tabbar}/TabbarContext.js +0 -0
  400. /package/dist/cjs/{tabbar → components/tabbar}/index.js +0 -0
  401. /package/dist/cjs/{tabbar → components/tabbar}/tokens.js +0 -0
  402. /package/dist/cjs/{tabs → components/tabs}/TabPane.js +0 -0
  403. /package/dist/cjs/{tabs → components/tabs}/index.js +0 -0
  404. /package/dist/cjs/{tabs → components/tabs}/useTabsAnimation.js +0 -0
  405. /package/dist/cjs/{tabs → components/tabs}/utils.js +0 -0
  406. /package/dist/cjs/{tag → components/tag}/Tag.js +0 -0
  407. /package/dist/cjs/{tag → components/tag}/index.js +0 -0
  408. /package/dist/cjs/{tag → components/tag}/tokens.js +0 -0
  409. /package/dist/cjs/{toast → components/toast}/imperative.js +0 -0
  410. /package/dist/cjs/{toast → components/toast}/index.js +0 -0
  411. /package/dist/cjs/{typography → components/typography}/index.js +0 -0
  412. /package/dist/cjs/{typography → components/typography}/tokens.js +0 -0
  413. /package/dist/cjs/{uploader → components/uploader}/index.js +0 -0
  414. /package/dist/cjs/{uploader → components/uploader}/utils.js +0 -0
  415. /package/dist/cjs/{water-mark → components/water-mark}/index.js +0 -0
  416. /package/dist/cjs/{water-mark → components/water-mark}/tokens.js +0 -0
  417. /package/dist/es/{action-sheet → components/action-sheet}/ActionSheet.js +0 -0
  418. /package/dist/es/{action-sheet → components/action-sheet}/index.js +0 -0
  419. /package/dist/es/{action-sheet → components/action-sheet}/tokens.js +0 -0
  420. /package/dist/es/{area → components/area}/index.js +0 -0
  421. /package/dist/es/{area → components/area}/utils.js +0 -0
  422. /package/dist/es/{avatar → components/avatar}/index.js +0 -0
  423. /package/dist/es/{badge → components/badge}/index.js +0 -0
  424. /package/dist/es/{badge → components/badge}/tokens.js +0 -0
  425. /package/dist/es/{button → components/button}/ButtonContext.js +0 -0
  426. /package/dist/es/{button → components/button}/index.js +0 -0
  427. /package/dist/es/{button → components/button}/tokens.js +0 -0
  428. /package/dist/es/{calendar → components/calendar}/index.js +0 -0
  429. /package/dist/es/{calendar → components/calendar}/tokens.js +0 -0
  430. /package/dist/es/{cascader → components/cascader}/index.js +0 -0
  431. /package/dist/es/{cascader → components/cascader}/tokens.js +0 -0
  432. /package/dist/es/{cascader → components/cascader}/utils.js +0 -0
  433. /package/dist/es/{cell → components/cell}/Cell.js +0 -0
  434. /package/dist/es/{cell → components/cell}/CellContext.js +0 -0
  435. /package/dist/es/{cell → components/cell}/CellGroup.js +0 -0
  436. /package/dist/es/{cell → components/cell}/index.js +0 -0
  437. /package/dist/es/{cell → components/cell}/tokens.js +0 -0
  438. /package/dist/es/{checkbox → components/checkbox}/Checkbox.js +0 -0
  439. /package/dist/es/{checkbox → components/checkbox}/CheckboxContext.js +0 -0
  440. /package/dist/es/{checkbox → components/checkbox}/index.js +0 -0
  441. /package/dist/es/{checkbox → components/checkbox}/tokens.js +0 -0
  442. /package/dist/es/{circle → components/circle}/index.js +0 -0
  443. /package/dist/es/{circle → components/circle}/tokens.js +0 -0
  444. /package/dist/es/{collapse → components/collapse}/index.js +0 -0
  445. /package/dist/es/{collapse → components/collapse}/tokens.js +0 -0
  446. /package/dist/es/{config-provider → components/config-provider}/LocaleContext.js +0 -0
  447. /package/dist/es/{config-provider → components/config-provider}/index.js +0 -0
  448. /package/dist/es/{config-provider → components/config-provider}/locale/base.js +0 -0
  449. /package/dist/es/{config-provider → components/config-provider}/locale/en-US.js +0 -0
  450. /package/dist/es/{config-provider → components/config-provider}/locale/zh-CN.js +0 -0
  451. /package/dist/es/{config-provider → components/config-provider}/useLocale.js +0 -0
  452. /package/dist/es/{count-down → components/count-down}/CountDown.js +0 -0
  453. /package/dist/es/{count-down → components/count-down}/index.js +0 -0
  454. /package/dist/es/{count-down → components/count-down}/tokens.js +0 -0
  455. /package/dist/es/{datetime-picker → components/datetime-picker}/index.js +0 -0
  456. /package/dist/es/{dialog → components/dialog}/imperative.js +0 -0
  457. /package/dist/es/{dialog → components/dialog}/index.js +0 -0
  458. /package/dist/es/{divider → components/divider}/Divider.js +0 -0
  459. /package/dist/es/{divider → components/divider}/index.js +0 -0
  460. /package/dist/es/{divider → components/divider}/tokens.js +0 -0
  461. /package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownMenuContext.js +0 -0
  462. /package/dist/es/{dropdown-menu → components/dropdown-menu}/index.js +0 -0
  463. /package/dist/es/{empty → components/empty}/Empty.js +0 -0
  464. /package/dist/es/{empty → components/empty}/index.js +0 -0
  465. /package/dist/es/{empty → components/empty}/tokens.js +0 -0
  466. /package/dist/es/{field → components/field}/tokens.js +0 -0
  467. /package/dist/es/{field → components/field}/utils.js +0 -0
  468. /package/dist/es/{flex → components/flex}/Flex.js +0 -0
  469. /package/dist/es/{flex → components/flex}/FlexContext.js +0 -0
  470. /package/dist/es/{flex → components/flex}/FlexItem.js +0 -0
  471. /package/dist/es/{flex → components/flex}/index.js +0 -0
  472. /package/dist/es/{flex → components/flex}/tokens.js +0 -0
  473. /package/dist/es/{form → components/form}/FormContext.js +0 -0
  474. /package/dist/es/{form → components/form}/FormItem.js +0 -0
  475. /package/dist/es/{form → components/form}/FormList.js +0 -0
  476. /package/dist/es/{form → components/form}/index.js +0 -0
  477. /package/dist/es/{form → components/form}/utils.js +0 -0
  478. /package/dist/es/{grid → components/grid}/GridContext.js +0 -0
  479. /package/dist/es/{grid → components/grid}/GridItem.js +0 -0
  480. /package/dist/es/{grid → components/grid}/index.js +0 -0
  481. /package/dist/es/{grid → components/grid}/tokens.js +0 -0
  482. /package/dist/es/{image → components/image}/index.js +0 -0
  483. /package/dist/es/{image → components/image}/tokens.js +0 -0
  484. /package/dist/es/{image-preview → components/image-preview}/imperative.js +0 -0
  485. /package/dist/es/{image-preview → components/image-preview}/index.js +0 -0
  486. /package/dist/es/{index-bar → components/index-bar}/index.js +0 -0
  487. /package/dist/es/{input → components/input}/index.js +0 -0
  488. /package/dist/es/{input → components/input}/tokens.js +0 -0
  489. /package/dist/es/{list → components/list}/List.js +0 -0
  490. /package/dist/es/{list → components/list}/index.js +0 -0
  491. /package/dist/es/{list → components/list}/tokens.js +0 -0
  492. /package/dist/es/{loading → components/loading}/Loading.js +0 -0
  493. /package/dist/es/{loading → components/loading}/index.js +0 -0
  494. /package/dist/es/{loading → components/loading}/tokens.js +0 -0
  495. /package/dist/es/{nav-bar → components/nav-bar}/index.js +0 -0
  496. /package/dist/es/{nav-bar → components/nav-bar}/tokens.js +0 -0
  497. /package/dist/es/{notice-bar → components/notice-bar}/index.js +0 -0
  498. /package/dist/es/{notice-bar → components/notice-bar}/tokens.js +0 -0
  499. /package/dist/es/{notify → components/notify}/index.js +0 -0
  500. /package/dist/es/{number-keyboard → components/number-keyboard}/index.js +0 -0
  501. /package/dist/es/{overlay → components/overlay}/Overlay.js +0 -0
  502. /package/dist/es/{overlay → components/overlay}/OverlayStackStore.js +0 -0
  503. /package/dist/es/{overlay → components/overlay}/index.js +0 -0
  504. /package/dist/es/{overlay → components/overlay}/tokens.js +0 -0
  505. /package/dist/es/{pagination → components/pagination}/index.js +0 -0
  506. /package/dist/es/{pagination → components/pagination}/tokens.js +0 -0
  507. /package/dist/es/{password-input → components/password-input}/index.js +0 -0
  508. /package/dist/es/{picker → components/picker}/index.js +0 -0
  509. /package/dist/es/{picker → components/picker}/utils.js +0 -0
  510. /package/dist/es/{popup → components/popup}/index.js +0 -0
  511. /package/dist/es/{portal → components/portal}/PortalContext.js +0 -0
  512. /package/dist/es/{portal → components/portal}/index.js +0 -0
  513. /package/dist/es/{progress → components/progress}/Progress.js +0 -0
  514. /package/dist/es/{progress → components/progress}/index.js +0 -0
  515. /package/dist/es/{progress → components/progress}/tokens.js +0 -0
  516. /package/dist/es/{pull-refresh → components/pull-refresh}/index.js +0 -0
  517. /package/dist/es/{pull-refresh → components/pull-refresh}/tokens.js +0 -0
  518. /package/dist/es/{radio → components/radio}/Radio.js +0 -0
  519. /package/dist/es/{radio → components/radio}/RadioContext.js +0 -0
  520. /package/dist/es/{radio → components/radio}/index.js +0 -0
  521. /package/dist/es/{radio → components/radio}/tokens.js +0 -0
  522. /package/dist/es/{rate → components/rate}/Rate.js +0 -0
  523. /package/dist/es/{rate → components/rate}/index.js +0 -0
  524. /package/dist/es/{rate → components/rate}/tokens.js +0 -0
  525. /package/dist/es/{search → components/search}/index.js +0 -0
  526. /package/dist/es/{selector → components/selector}/index.js +0 -0
  527. /package/dist/es/{selector → components/selector}/tokens.js +0 -0
  528. /package/dist/es/{share-sheet → components/share-sheet}/index.js +0 -0
  529. /package/dist/es/{sidebar → components/sidebar}/SidebarContext.js +0 -0
  530. /package/dist/es/{sidebar → components/sidebar}/index.js +0 -0
  531. /package/dist/es/{sidebar → components/sidebar}/tokens.js +0 -0
  532. /package/dist/es/{skeleton → components/skeleton}/index.js +0 -0
  533. /package/dist/es/{skeleton → components/skeleton}/tokens.js +0 -0
  534. /package/dist/es/{slider → components/slider}/index.js +0 -0
  535. /package/dist/es/{slider → components/slider}/tokens.js +0 -0
  536. /package/dist/es/{slider → components/slider}/utils.js +0 -0
  537. /package/dist/es/{space → components/space}/Space.js +0 -0
  538. /package/dist/es/{space → components/space}/index.js +0 -0
  539. /package/dist/es/{space → components/space}/tokens.js +0 -0
  540. /package/dist/es/{stepper → components/stepper}/index.js +0 -0
  541. /package/dist/es/{swiper → components/swiper}/SwiperItem.js +0 -0
  542. /package/dist/es/{swiper → components/swiper}/SwiperPagIndicator.js +0 -0
  543. /package/dist/es/{swiper → components/swiper}/index.js +0 -0
  544. /package/dist/es/{swiper → components/swiper}/utils.js +0 -0
  545. /package/dist/es/{switch → components/switch}/Switch.js +0 -0
  546. /package/dist/es/{switch → components/switch}/index.js +0 -0
  547. /package/dist/es/{switch → components/switch}/tokens.js +0 -0
  548. /package/dist/es/{tabbar → components/tabbar}/TabbarContext.js +0 -0
  549. /package/dist/es/{tabbar → components/tabbar}/index.js +0 -0
  550. /package/dist/es/{tabbar → components/tabbar}/tokens.js +0 -0
  551. /package/dist/es/{tabs → components/tabs}/TabPane.js +0 -0
  552. /package/dist/es/{tabs → components/tabs}/index.js +0 -0
  553. /package/dist/es/{tabs → components/tabs}/useTabsAnimation.js +0 -0
  554. /package/dist/es/{tabs → components/tabs}/utils.js +0 -0
  555. /package/dist/es/{tag → components/tag}/Tag.js +0 -0
  556. /package/dist/es/{tag → components/tag}/index.js +0 -0
  557. /package/dist/es/{tag → components/tag}/tokens.js +0 -0
  558. /package/dist/es/{toast → components/toast}/imperative.js +0 -0
  559. /package/dist/es/{toast → components/toast}/index.js +0 -0
  560. /package/dist/es/{typography → components/typography}/index.js +0 -0
  561. /package/dist/es/{typography → components/typography}/tokens.js +0 -0
  562. /package/dist/es/{uploader → components/uploader}/index.js +0 -0
  563. /package/dist/es/{uploader → components/uploader}/utils.js +0 -0
  564. /package/dist/es/{water-mark → components/water-mark}/index.js +0 -0
  565. /package/dist/es/{water-mark → components/water-mark}/tokens.js +0 -0
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
3
3
  import { Animated, PanResponder, Platform, RefreshControl, ScrollView, StyleSheet, Text, View } from 'react-native';
4
4
  import { nativeDriverEnabled } from '../../platform';
5
5
  import { parseNumberLike } from '../../utils/number';
@@ -35,10 +35,10 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
35
35
  sizing
36
36
  } = tokens;
37
37
  const translateY = useRef(new Animated.Value(0)).current;
38
- const headHeightNumber = useMemo(() => Math.max(0, parseNumberLike(headHeight, sizing.headHeight) ?? sizing.headHeight), [headHeight, sizing.headHeight]);
39
- const pullDistanceNumber = useMemo(() => Math.max(0, parseNumberLike(pullDistance, headHeightNumber) ?? headHeightNumber), [headHeightNumber, pullDistance]);
40
- const successDurationMs = useMemo(() => Math.max(0, parseNumberLike(successDuration, DEFAULT_SUCCESS_DURATION) ?? DEFAULT_SUCCESS_DURATION), [successDuration]);
41
- const animationDurationMs = useMemo(() => Math.max(0, parseNumberLike(animationDuration, 300) ?? 300), [animationDuration]);
38
+ const headHeightNumber = Math.max(0, parseNumberLike(headHeight, sizing.headHeight) ?? sizing.headHeight);
39
+ const pullDistanceNumber = Math.max(0, parseNumberLike(pullDistance, headHeightNumber) ?? headHeightNumber);
40
+ const successDurationMs = Math.max(0, parseNumberLike(successDuration, DEFAULT_SUCCESS_DURATION) ?? DEFAULT_SUCCESS_DURATION);
41
+ const animationDurationMs = Math.max(0, parseNumberLike(animationDuration, 300) ?? 300);
42
42
  const isControlled = !isUndefined(refreshing);
43
43
  const [innerRefreshing, setInnerRefreshing] = useState(!!defaultRefreshing);
44
44
  const mergedRefreshing = isControlled ? !!refreshing : innerRefreshing;
@@ -46,6 +46,8 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
46
46
  const draggingRef = useRef(false);
47
47
  const webDragRafRef = useRef(null);
48
48
  const webDragPendingRef = useRef(null);
49
+ const webStateUpdateAtRef = useRef(0);
50
+ const webStateUpdateValueRef = useRef(0);
49
51
  const [distance, setDistance] = useState(0);
50
52
  const [showSuccess, setShowSuccess] = useState(false);
51
53
  const timerRef = useRef(null);
@@ -53,28 +55,45 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
53
55
  const mergedRefreshingRef = useRef(mergedRefreshing);
54
56
  const refreshTriggeredRef = useRef(false);
55
57
  const refreshSucceededRef = useRef(false);
58
+ const normalizeDistance = useCallback(nextDistance => Math.max(0, Math.round(nextDistance)), []);
59
+ const updateDistanceState = useCallback(normalized => {
60
+ setDistance(prev => Math.abs(prev - normalized) < 1 ? prev : normalized);
61
+ }, []);
62
+ const applyWebTranslate = useCallback((normalized, animate = false) => {
63
+ translateY.stopAnimation();
64
+ if (animate && animationDurationMs > 0) {
65
+ Animated.timing(translateY, {
66
+ toValue: normalized,
67
+ duration: animationDurationMs,
68
+ useNativeDriver: false
69
+ }).start();
70
+ } else {
71
+ translateY.setValue(normalized);
72
+ }
73
+ }, [animationDurationMs, translateY]);
56
74
  const setDistanceValue = useCallback((nextDistance, animate = false) => {
57
- const normalized = Math.max(0, Math.round(nextDistance));
75
+ const normalized = normalizeDistance(nextDistance);
58
76
  if (isWeb) {
59
- translateY.stopAnimation();
60
- if (animate && animationDurationMs > 0) {
61
- Animated.timing(translateY, {
62
- toValue: normalized,
63
- duration: animationDurationMs,
64
- useNativeDriver: false
65
- }).start();
66
- } else {
67
- translateY.setValue(normalized);
68
- }
77
+ applyWebTranslate(normalized, animate);
69
78
  }
70
- setDistance(prev => Math.abs(prev - normalized) < 1 ? prev : normalized);
71
- }, [animationDurationMs, isWeb, translateY]);
79
+ updateDistanceState(normalized);
80
+ return normalized;
81
+ }, [applyWebTranslate, isWeb, normalizeDistance, updateDistanceState]);
72
82
  const flushWebDrag = useCallback(() => {
73
83
  const pending = webDragPendingRef.current;
74
84
  if (pending == null) return;
75
85
  webDragPendingRef.current = null;
76
- setDistanceValue(pending);
77
- }, [setDistanceValue]);
86
+ const normalized = normalizeDistance(pending);
87
+ if (isWeb) {
88
+ applyWebTranslate(normalized);
89
+ }
90
+ const now = Date.now();
91
+ if (now - webStateUpdateAtRef.current >= 32 || Math.abs(normalized - webStateUpdateValueRef.current) >= 4) {
92
+ webStateUpdateAtRef.current = now;
93
+ webStateUpdateValueRef.current = normalized;
94
+ updateDistanceState(normalized);
95
+ }
96
+ }, [applyWebTranslate, isWeb, normalizeDistance, updateDistanceState]);
78
97
  const cancelWebDrag = useCallback(() => {
79
98
  if (webDragRafRef.current != null && typeof cancelAnimationFrame === 'function') {
80
99
  cancelAnimationFrame(webDragRafRef.current);
@@ -188,7 +207,7 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
188
207
  refreshTriggeredRef.current = false;
189
208
  refreshSucceededRef.current = false;
190
209
  }, [mergedRefreshing, showSuccess, triggerSuccess]);
191
- const status = useMemo(() => mergedRefreshing ? 'loading' : showSuccess ? 'success' : disabled || distance === 0 ? 'normal' : distance < pullDistanceNumber ? 'pulling' : 'loosing', [disabled, distance, mergedRefreshing, pullDistanceNumber, showSuccess]);
210
+ const status = mergedRefreshing ? 'loading' : showSuccess ? 'success' : disabled || distance === 0 ? 'normal' : distance < pullDistanceNumber ? 'pulling' : 'loosing';
192
211
  const opacity = useRef(new Animated.Value(status === 'normal' ? 0 : 1)).current;
193
212
  useEffect(() => {
194
213
  const toValue = status === 'normal' ? 0 : 1;
@@ -203,7 +222,7 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
203
222
  useNativeDriver: nativeDriverEnabled
204
223
  }).start();
205
224
  }, [animationDurationMs, opacity, status]);
206
- const statusNode = useMemo(() => {
225
+ const statusNode = (() => {
207
226
  switch (status) {
208
227
  case 'pulling':
209
228
  return resolveStatusText(pullingText, locale.vanPullRefresh.pulling);
@@ -216,13 +235,13 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
216
235
  default:
217
236
  return null;
218
237
  }
219
- }, [loadingText, locale.vanPullRefresh.loading, locale.vanPullRefresh.loosing, locale.vanPullRefresh.pulling, loosingText, pullingText, resolveStatusText, status, successText]);
238
+ })();
220
239
  const shouldReserveHead = (status === 'loading' || status === 'success') && distance === 0;
221
- const flattenedContainerStyle = useMemo(() => StyleSheet.flatten(scrollProps.contentContainerStyle), [scrollProps.contentContainerStyle]);
240
+ const flattenedContainerStyle = StyleSheet.flatten(scrollProps.contentContainerStyle);
222
241
  const basePaddingTop = isNumber(flattenedContainerStyle?.paddingTop) ? flattenedContainerStyle.paddingTop : 0;
223
- const contentContainerStyle = useMemo(() => shouldReserveHead ? [scrollProps.contentContainerStyle, {
242
+ const contentContainerStyle = shouldReserveHead ? [scrollProps.contentContainerStyle, {
224
243
  paddingTop: basePaddingTop + headHeightNumber
225
- }] : scrollProps.contentContainerStyle, [basePaddingTop, headHeightNumber, scrollProps.contentContainerStyle, shouldReserveHead]);
244
+ }] : scrollProps.contentContainerStyle;
226
245
  const onScrollProp = scrollProps.onScroll;
227
246
  const handleScroll = useCallback(event => {
228
247
  onScrollProp?.(event);
@@ -238,7 +257,7 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
238
257
  }
239
258
  setDistanceValue(offset < 0 ? -offset : 0);
240
259
  }, [disabled, isWeb, mergedRefreshing, onRefresh, onScrollProp, setDistanceValue, showSuccess]);
241
- const panResponder = useMemo(() => {
260
+ const panResponder = (() => {
242
261
  if (!isWeb || !isFunction(onRefresh)) return null;
243
262
  const easeDistance = raw => {
244
263
  const pullDistance = pullDistanceNumber;
@@ -295,7 +314,7 @@ const PullRefresh = /*#__PURE__*/React.forwardRef((props, ref) => {
295
314
  setDistanceValue(0, true);
296
315
  }
297
316
  });
298
- }, [disabled, handleRefresh, headHeightNumber, isWeb, pullDistanceNumber, cancelWebDrag, scheduleWebDrag, setDistanceValue, showSuccess]);
317
+ })();
299
318
  return /*#__PURE__*/React.createElement(ScrollView, _extends({}, scrollProps, {
300
319
  ref: ref,
301
320
  style: style,
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useMemo, useRef } from 'react';
2
+ import React, { useCallback, useRef } from 'react';
3
3
  import { Platform, View } from 'react-native';
4
4
  import { useRadioGroup } from '@react-native-aria/radio';
5
5
  import { useRadioGroupState } from '@react-stately/radio';
@@ -77,7 +77,7 @@ export const RadioGroup = props => {
77
77
  columnGap: direction === 'horizontal' ? gap : undefined,
78
78
  rowGap: gap
79
79
  } : null;
80
- const contextValue = useMemo(() => ({
80
+ const contextValue = {
81
81
  state,
82
82
  direction,
83
83
  iconSize,
@@ -85,7 +85,7 @@ export const RadioGroup = props => {
85
85
  labelDisabled,
86
86
  registerValue,
87
87
  unregisterValue
88
- }), [state, direction, iconSize, checkedColor, labelDisabled]);
88
+ };
89
89
  return /*#__PURE__*/React.createElement(RadioGroupContext.Provider, {
90
90
  value: contextValue
91
91
  }, /*#__PURE__*/React.createElement(View, _extends({}, resolvedRadioGroupProps, viewProps, {
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { useSafeAreaPadding } from '../../hooks/useSafeAreaPadding';
4
+ export const SafeAreaView = ({
5
+ edge,
6
+ style,
7
+ children,
8
+ onLayout,
9
+ pointerEvents
10
+ }) => {
11
+ const p = useSafeAreaPadding({});
12
+ if (edge === 'top') {
13
+ return /*#__PURE__*/React.createElement(View, {
14
+ style: [{
15
+ width: '100%',
16
+ minHeight: p.paddingTop
17
+ }, style],
18
+ onLayout: onLayout,
19
+ pointerEvents: pointerEvents ?? 'none'
20
+ });
21
+ }
22
+ if (edge === 'bottom') {
23
+ return /*#__PURE__*/React.createElement(View, {
24
+ style: [{
25
+ width: '100%',
26
+ minHeight: p.paddingBottom
27
+ }, style],
28
+ pointerEvents: pointerEvents ?? 'none'
29
+ });
30
+ }
31
+ return /*#__PURE__*/React.createElement(View, {
32
+ style: [{
33
+ width: '100%',
34
+ paddingTop: p.paddingTop,
35
+ paddingBottom: p.paddingBottom,
36
+ paddingLeft: p.paddingLeft,
37
+ paddingRight: p.paddingRight
38
+ }, style],
39
+ onLayout: onLayout,
40
+ pointerEvents: pointerEvents
41
+ }, children);
42
+ };
43
+ SafeAreaView.displayName = 'SafeAreaView';
@@ -0,0 +1 @@
1
+ export { SafeAreaView } from './SafeAreaView';
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
2
+ import React, { useCallback, useImperativeHandle, useRef } from 'react';
3
3
  import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { Search as SearchIcon } from 'react-native-system-icon';
5
5
  import { useAriaPress, useControllableValue } from '../../hooks';
@@ -41,7 +41,7 @@ const SearchComponent = (props, ref) => {
41
41
  defaultValue: ''
42
42
  });
43
43
  const inputValue = value ?? '';
44
- const resolvedInputAlign = useMemo(() => align ?? inputAlign, [align, inputAlign]);
44
+ const resolvedInputAlign = align ?? inputAlign;
45
45
  const handleChange = useCallback(next => {
46
46
  triggerChange(next);
47
47
  onChangeText?.(next);
@@ -54,14 +54,14 @@ const SearchComponent = (props, ref) => {
54
54
  onSearch?.(inputValue);
55
55
  onSubmitEditing?.(event);
56
56
  }, [inputValue, onSearch, onSubmitEditing]);
57
- const resolvedBackground = useMemo(() => background ?? tokens.colors.background, [background, tokens.colors.background]);
58
- const resolvedLeftIcon = useMemo(() => leftIcon ?? /*#__PURE__*/React.createElement(SearchIcon, {
57
+ const resolvedBackground = background ?? tokens.colors.background;
58
+ const resolvedLeftIcon = leftIcon ?? /*#__PURE__*/React.createElement(SearchIcon, {
59
59
  size: tokens.icon.size,
60
60
  fill: tokens.colors.icon,
61
61
  color: tokens.colors.icon
62
- }), [leftIcon, tokens.colors.icon, tokens.icon.size]);
63
- const resolvedClearTrigger = useMemo(() => clearTrigger ?? tokens.defaults.clearTrigger, [clearTrigger, tokens.defaults.clearTrigger]);
64
- const resolvedReturnKeyType = useMemo(() => returnKeyType ?? 'search', [returnKeyType]);
62
+ });
63
+ const resolvedClearTrigger = clearTrigger ?? tokens.defaults.clearTrigger;
64
+ const resolvedReturnKeyType = returnKeyType ?? 'search';
65
65
  const shouldShowAction = !!action || showAction;
66
66
  const isCustomActionText = /*#__PURE__*/React.isValidElement(actionText);
67
67
  const shouldRenderCancelAction = shouldShowAction && !action && !isCustomActionText;
@@ -80,64 +80,49 @@ const SearchComponent = (props, ref) => {
80
80
  testID: 'rnsu-search-action'
81
81
  }
82
82
  });
83
- const containerStyles = useMemo(() => [styles.container, {
83
+ const containerStyles = [styles.container, {
84
84
  paddingHorizontal: tokens.spacing.paddingHorizontal,
85
85
  paddingVertical: tokens.spacing.paddingVertical,
86
86
  backgroundColor: resolvedBackground
87
- }, containerStyle], [containerStyle, resolvedBackground, tokens.spacing.paddingHorizontal, tokens.spacing.paddingVertical]);
88
- const contentStyles = useMemo(() => [styles.content, {
87
+ }, containerStyle];
88
+ const contentStyles = [styles.content, {
89
89
  borderRadius: radius,
90
90
  paddingHorizontal: tokens.spacing.contentPaddingHorizontal,
91
91
  paddingVertical: tokens.spacing.contentPaddingVertical,
92
92
  backgroundColor: tokens.colors.contentBackground
93
- }], [radius, tokens.colors.contentBackground, tokens.spacing.contentPaddingHorizontal, tokens.spacing.contentPaddingVertical]);
94
- const labelNode = useMemo(() => {
95
- if (!label) return null;
96
- if (isText(label)) {
97
- return /*#__PURE__*/React.createElement(Text, {
98
- style: {
99
- marginRight: tokens.spacing.labelGap,
100
- color: tokens.colors.label,
101
- fontSize: tokens.typography.label,
102
- fontWeight: tokens.typography.labelWeight
103
- }
104
- }, label);
93
+ }];
94
+ const labelNode = !label ? null : isText(label) ? /*#__PURE__*/React.createElement(Text, {
95
+ style: {
96
+ marginRight: tokens.spacing.labelGap,
97
+ color: tokens.colors.label,
98
+ fontSize: tokens.typography.label,
99
+ fontWeight: tokens.typography.labelWeight
105
100
  }
106
- return /*#__PURE__*/React.createElement(View, {
107
- style: {
108
- marginRight: tokens.spacing.labelGap
109
- }
110
- }, label);
111
- }, [label, tokens.colors.label, tokens.spacing.labelGap, tokens.typography.label, tokens.typography.labelWeight]);
112
- const actionNode = useMemo(() => {
113
- if (action) {
114
- return /*#__PURE__*/React.createElement(View, {
115
- style: [styles.actionWrapper, {
116
- marginLeft: tokens.spacing.actionGap
117
- }]
118
- }, action);
101
+ }, label) : /*#__PURE__*/React.createElement(View, {
102
+ style: {
103
+ marginRight: tokens.spacing.labelGap
119
104
  }
120
- if (!shouldShowAction) return null;
121
- if (isCustomActionText) {
122
- return /*#__PURE__*/React.createElement(View, {
123
- style: [styles.actionWrapper, {
124
- marginLeft: tokens.spacing.actionGap
125
- }]
126
- }, actionText);
105
+ }, label);
106
+ const actionNode = action ? /*#__PURE__*/React.createElement(View, {
107
+ style: [styles.actionWrapper, {
108
+ marginLeft: tokens.spacing.actionGap
109
+ }]
110
+ }, action) : !shouldShowAction ? null : isCustomActionText ? /*#__PURE__*/React.createElement(View, {
111
+ style: [styles.actionWrapper, {
112
+ marginLeft: tokens.spacing.actionGap
113
+ }]
114
+ }, actionText) : /*#__PURE__*/React.createElement(Pressable, _extends({
115
+ style: [styles.actionWrapper, {
116
+ marginLeft: tokens.spacing.actionGap,
117
+ opacity: cancelActionPress.states.pressed ? tokens.opacity.actionPressed : 1
118
+ }]
119
+ }, cancelActionPress.interactionProps), /*#__PURE__*/React.createElement(Text, {
120
+ style: {
121
+ color: tokens.colors.action,
122
+ fontSize: tokens.typography.action,
123
+ fontWeight: tokens.typography.actionWeight
127
124
  }
128
- return /*#__PURE__*/React.createElement(Pressable, _extends({
129
- style: [styles.actionWrapper, {
130
- marginLeft: tokens.spacing.actionGap,
131
- opacity: cancelActionPress.states.pressed ? tokens.opacity.actionPressed : 1
132
- }]
133
- }, cancelActionPress.interactionProps), /*#__PURE__*/React.createElement(Text, {
134
- style: {
135
- color: tokens.colors.action,
136
- fontSize: tokens.typography.action,
137
- fontWeight: tokens.typography.actionWeight
138
- }
139
- }, actionText ?? locale.cancel));
140
- }, [action, actionText, cancelActionPress.interactionProps, cancelActionPress.states.pressed, isCustomActionText, locale.cancel, shouldShowAction, tokens.colors.action, tokens.opacity.actionPressed, tokens.spacing.actionGap, tokens.typography.action, tokens.typography.actionWeight]);
125
+ }, actionText ?? locale.cancel));
141
126
  return /*#__PURE__*/React.createElement(View, {
142
127
  style: containerStyles
143
128
  }, /*#__PURE__*/React.createElement(View, {
@@ -157,9 +142,16 @@ const SearchComponent = (props, ref) => {
157
142
  errorMessage: errorMessage,
158
143
  inputAlign: resolvedInputAlign,
159
144
  border: false,
160
- style: [styles.field, fieldStyle],
161
- contentStyle: [styles.fieldContent, fieldContentStyle],
162
- inputStyle: [styles.input, inputStyle],
145
+ style: [styles.field, {
146
+ paddingHorizontal: tokens.spacing.none,
147
+ paddingVertical: tokens.spacing.none
148
+ }, fieldStyle],
149
+ contentStyle: [styles.fieldContent, {
150
+ paddingVertical: tokens.spacing.none
151
+ }, fieldContentStyle],
152
+ inputStyle: [styles.input, {
153
+ paddingVertical: tokens.spacing.none
154
+ }, inputStyle],
163
155
  onSubmitEditing: handleSubmit,
164
156
  returnKeyType: resolvedReturnKeyType
165
157
  }, restFieldProps)))), actionNode);
@@ -179,16 +171,9 @@ const styles = StyleSheet.create({
179
171
  fieldWrapper: {
180
172
  flex: 1
181
173
  },
182
- field: {
183
- paddingHorizontal: 0,
184
- paddingVertical: 0
185
- },
186
- fieldContent: {
187
- paddingVertical: 0
188
- },
189
- input: {
190
- paddingVertical: 0
191
- },
174
+ field: {},
175
+ fieldContent: {},
176
+ input: {},
192
177
  actionWrapper: {
193
178
  justifyContent: 'center'
194
179
  }
@@ -24,7 +24,8 @@ const createSearchTokens = foundations => {
24
24
  labelGap: spacing.sm,
25
25
  actionGap: spacing.sm,
26
26
  contentPaddingHorizontal: spacing.sm,
27
- contentPaddingVertical: spacing.xs
27
+ contentPaddingVertical: spacing.xs,
28
+ none: spacing.none
28
29
  },
29
30
  radius: {
30
31
  square: radii.md,
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useMemo } from 'react';
2
+ import React, { useCallback } from 'react';
3
3
  import { Pressable, Text, View } from 'react-native';
4
4
  import { useSelectorTokens } from './tokens';
5
5
  import { useAriaPress, useControllableValue } from '../../hooks';
@@ -122,15 +122,15 @@ const SelectorImpl = props => {
122
122
  const [value = [], triggerChange] = useControllableValue(props, {
123
123
  defaultValue: []
124
124
  });
125
- const optionByValue = useMemo(() => {
125
+ const optionByValue = (() => {
126
126
  const map = new Map();
127
127
  for (const option of options) map.set(option.value, option);
128
128
  return map;
129
- }, [options]);
129
+ })();
130
130
  const resolvedColumns = Math.max(1, Math.floor(columns));
131
131
  const basis = `${100 / resolvedColumns}%`;
132
132
  const itemMargin = tokens.spacing.gap / 2;
133
- const selectedSet = useMemo(() => new Set(value), [value]);
133
+ const selectedSet = new Set(value);
134
134
  const toggleOption = useCallback(option => {
135
135
  if (disabled || option.disabled) return;
136
136
  const active = selectedSet.has(option.value);
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useCallback, useMemo } from 'react';
2
+ import React, { useCallback } from 'react';
3
3
  import { Pressable, StyleSheet, Text, View } from 'react-native';
4
4
  import { useAriaPress } from '../../hooks';
5
5
  import { createHairlineView } from '../../utils/hairline';
@@ -20,13 +20,13 @@ const ShareSheetOptionItem = ({
20
20
  tokens,
21
21
  onSelect
22
22
  }) => {
23
- const optionWidthStyle = useMemo(() => ({
23
+ const optionWidthStyle = {
24
24
  width: `${100 / columns}%`
25
- }), [columns]);
26
- const iconStyle = useMemo(() => ({
25
+ };
26
+ const iconStyle = {
27
27
  width: tokens.sizing.icon,
28
28
  height: tokens.sizing.icon
29
- }), [tokens.sizing.icon]);
29
+ };
30
30
  const press = useAriaPress({
31
31
  onPress: () => onSelect(option, index),
32
32
  extraProps: {
@@ -37,21 +37,26 @@ const ShareSheetOptionItem = ({
37
37
  return /*#__PURE__*/React.createElement(Pressable, _extends({
38
38
  style: [styles.option, optionWidthStyle]
39
39
  }, press.interactionProps), /*#__PURE__*/React.createElement(View, {
40
- style: [styles.icon, iconStyle]
40
+ style: [styles.icon, iconStyle, {
41
+ marginHorizontal: tokens.spacing.iconMarginHorizontal
42
+ }]
41
43
  }, option.icon), isValidNode(option.name) ? isText(option.name) ? /*#__PURE__*/React.createElement(Text, {
42
44
  style: [styles.optionText, {
43
45
  color: tokens.colors.option,
44
- fontSize: tokens.typography.option
46
+ fontSize: tokens.typography.option,
47
+ paddingHorizontal: tokens.spacing.optionTextPaddingHorizontal
45
48
  }]
46
49
  }, option.name) : option.name : null, isValidNode(option.description) ? isText(option.description) ? /*#__PURE__*/React.createElement(Text, {
47
50
  style: [styles.optionDesc, {
48
51
  color: tokens.colors.optionDesc,
49
52
  marginTop: tokens.spacing.gap,
50
- fontSize: tokens.typography.optionDesc
53
+ fontSize: tokens.typography.optionDesc,
54
+ paddingHorizontal: tokens.spacing.optionDescPaddingHorizontal
51
55
  }]
52
56
  }, option.description) : /*#__PURE__*/React.createElement(View, {
53
57
  style: [styles.optionDescNode, {
54
- marginTop: tokens.spacing.gap
58
+ marginTop: tokens.spacing.gap,
59
+ paddingHorizontal: tokens.spacing.optionDescPaddingHorizontal
55
60
  }]
56
61
  }, option.description) : null);
57
62
  };
@@ -73,11 +78,14 @@ const ShareSheetCancel = ({
73
78
  }
74
79
  }, /*#__PURE__*/React.createElement(Pressable, _extends({
75
80
  style: [styles.cancel, {
76
- backgroundColor: tokens.colors.background
81
+ backgroundColor: tokens.colors.background,
82
+ paddingVertical: tokens.spacing.cancelPaddingVertical,
83
+ marginTop: tokens.spacing.cancelMarginTop
77
84
  }]
78
85
  }, cancelPress.interactionProps), isText(cancelText) ? /*#__PURE__*/React.createElement(Text, {
79
86
  style: [styles.cancelText, {
80
- color: tokens.colors.option
87
+ color: tokens.colors.option,
88
+ fontSize: tokens.typography.cancel
81
89
  }]
82
90
  }, cancelText) : cancelText));
83
91
  };
@@ -105,8 +113,8 @@ const ShareSheet = props => {
105
113
  ...popupProps
106
114
  } = props;
107
115
  const tokens = useShareSheetTokens(tokensOverride);
108
- const groups = useMemo(() => normalizeOptions(options), [options]);
109
- const resolvedColumns = useMemo(() => isFiniteNumber(columns) ? Math.max(1, Math.floor(columns)) : 4, [columns]);
116
+ const groups = normalizeOptions(options);
117
+ const resolvedColumns = isFiniteNumber(columns) ? Math.max(1, Math.floor(columns)) : 4;
110
118
  const hasTitle = isValidNode(title);
111
119
  const hasDescription = isValidNode(description);
112
120
  const hasCancelText = isValidNode(cancelText);
@@ -120,14 +128,14 @@ const ShareSheet = props => {
120
128
  if (closeOnSelect) close();
121
129
  }, [close, closeOnSelect, onSelect]);
122
130
  const onPopupClose = useCallback(() => close(true), [close]);
123
- const wrapperStyle = useMemo(() => [styles.wrapper, {
131
+ const wrapperStyle = [styles.wrapper, {
124
132
  backgroundColor: tokens.colors.background
125
- }], [tokens.colors.background]);
126
- const groupRowStyle = useMemo(() => [styles.optionsRow, {
133
+ }];
134
+ const groupRowStyle = [styles.optionsRow, {
127
135
  paddingLeft: tokens.spacing.gap,
128
136
  paddingVertical: 12
129
- }], [tokens.spacing.gap]);
130
- const groupNodes = useMemo(() => {
137
+ }];
138
+ const groupNodes = (() => {
131
139
  if (!groups.length) return null;
132
140
  let globalIndex = 0;
133
141
  return groups.map((group, groupIndex) => /*#__PURE__*/React.createElement(View, {
@@ -152,27 +160,34 @@ const ShareSheet = props => {
152
160
  onSelect: handleSelect
153
161
  });
154
162
  }))));
155
- }, [groupRowStyle, groups, handleSelect, resolvedColumns, tokens, tokens.colors.border, tokens.spacing.horizontal]);
156
- const headerNode = useMemo(() => {
157
- if (!hasTitle && !hasDescription) return null;
158
- return /*#__PURE__*/React.createElement(View, {
159
- style: styles.header
160
- }, hasTitle ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
161
- style: [styles.title, {
162
- color: tokens.colors.title,
163
- fontSize: tokens.typography.title
164
- }]
165
- }, title) : /*#__PURE__*/React.createElement(View, {
166
- style: styles.node
167
- }, title) : null, hasDescription ? isText(description) ? /*#__PURE__*/React.createElement(Text, {
168
- style: [styles.description, {
169
- color: tokens.colors.description,
170
- fontSize: tokens.typography.description
171
- }]
172
- }, description) : /*#__PURE__*/React.createElement(View, {
173
- style: styles.node
174
- }, description) : null);
175
- }, [description, hasDescription, hasTitle, title, tokens.colors.description, tokens.colors.title, tokens.typography.description, tokens.typography.title]);
163
+ })();
164
+ const headerNode = !hasTitle && !hasDescription ? null : /*#__PURE__*/React.createElement(View, {
165
+ style: [styles.header, {
166
+ paddingTop: tokens.spacing.headerPaddingTop,
167
+ paddingHorizontal: tokens.spacing.headerPaddingHorizontal,
168
+ paddingBottom: tokens.spacing.headerPaddingBottom
169
+ }]
170
+ }, hasTitle ? isText(title) ? /*#__PURE__*/React.createElement(Text, {
171
+ style: [styles.title, {
172
+ color: tokens.colors.title,
173
+ fontSize: tokens.typography.title,
174
+ marginTop: tokens.spacing.titleMarginTop
175
+ }]
176
+ }, title) : /*#__PURE__*/React.createElement(View, {
177
+ style: [styles.node, {
178
+ marginTop: tokens.spacing.nodeMarginTop
179
+ }]
180
+ }, title) : null, hasDescription ? isText(description) ? /*#__PURE__*/React.createElement(Text, {
181
+ style: [styles.description, {
182
+ color: tokens.colors.description,
183
+ fontSize: tokens.typography.description,
184
+ marginTop: tokens.spacing.descriptionMarginTop
185
+ }]
186
+ }, description) : /*#__PURE__*/React.createElement(View, {
187
+ style: [styles.node, {
188
+ marginTop: tokens.spacing.nodeMarginTop
189
+ }]
190
+ }, description) : null);
176
191
  return /*#__PURE__*/React.createElement(Popup, _extends({}, popupProps, {
177
192
  visible: visible,
178
193
  placement: "bottom",
@@ -181,7 +196,9 @@ const ShareSheet = props => {
181
196
  overlay: overlay,
182
197
  lockScroll: lockScroll,
183
198
  onClose: onPopupClose,
184
- style: [styles.popupOverride, popupStyle]
199
+ style: [styles.popupOverride, {
200
+ padding: tokens.spacing.popupPadding
201
+ }, popupStyle]
185
202
  }), /*#__PURE__*/React.createElement(View, {
186
203
  style: wrapperStyle
187
204
  }, headerNode, groupNodes, children, hasCancelText ? /*#__PURE__*/React.createElement(ShareSheetCancel, {
@@ -191,30 +208,22 @@ const ShareSheet = props => {
191
208
  }) : null));
192
209
  };
193
210
  const styles = StyleSheet.create({
194
- popupOverride: {
195
- padding: 0
196
- },
211
+ popupOverride: {},
197
212
  wrapper: {
198
213
  width: '100%'
199
214
  },
200
215
  header: {
201
- paddingTop: 8,
202
- paddingHorizontal: 16,
203
- paddingBottom: 12,
204
216
  alignItems: 'center'
205
217
  },
206
218
  title: {
207
219
  fontWeight: 'normal',
208
- textAlign: 'center',
209
- marginTop: 4
220
+ textAlign: 'center'
210
221
  },
211
222
  description: {
212
- textAlign: 'center',
213
- marginTop: 4
223
+ textAlign: 'center'
214
224
  },
215
225
  node: {
216
- alignItems: 'center',
217
- marginTop: 4
226
+ alignItems: 'center'
218
227
  },
219
228
  optionsRow: {
220
229
  flexDirection: 'row',
@@ -226,29 +235,22 @@ const styles = StyleSheet.create({
226
235
  },
227
236
  icon: {
228
237
  alignItems: 'center',
229
- justifyContent: 'center',
230
- marginHorizontal: 12
238
+ justifyContent: 'center'
231
239
  },
232
240
  optionText: {
233
241
  fontWeight: '500',
234
- textAlign: 'center',
235
- paddingHorizontal: 4
242
+ textAlign: 'center'
236
243
  },
237
244
  optionDesc: {
238
- textAlign: 'center',
239
- paddingHorizontal: 16
245
+ textAlign: 'center'
240
246
  },
241
247
  optionDescNode: {
242
- alignItems: 'center',
243
- paddingHorizontal: 16
248
+ alignItems: 'center'
244
249
  },
245
250
  cancel: {
246
- paddingVertical: 14,
247
- marginTop: 8,
248
251
  alignItems: 'center'
249
252
  },
250
253
  cancelText: {
251
- fontSize: 16,
252
254
  fontWeight: '500'
253
255
  }
254
256
  });