react-native-system-ui 0.0.1 → 0.0.3

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 (679) hide show
  1. package/README.md +55 -46
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +55 -33
  3. package/dist/cjs/components/area/Area.js +42 -7
  4. package/dist/cjs/components/area/utils.js +37 -33
  5. package/dist/cjs/components/avatar/Avatar.js +4 -4
  6. package/dist/cjs/components/badge/Badge.js +31 -38
  7. package/dist/cjs/components/badge/tokens.js +1 -1
  8. package/dist/cjs/components/button/Button.js +13 -21
  9. package/dist/cjs/components/button/ButtonGroup.js +5 -5
  10. package/dist/cjs/components/button/tokens.js +2 -2
  11. package/dist/cjs/components/calendar/Calendar.js +39 -31
  12. package/dist/cjs/components/cascader/Cascader.js +135 -58
  13. package/dist/cjs/components/cascader/useCascaderExtend.js +19 -19
  14. package/dist/cjs/components/cell/Cell.js +13 -14
  15. package/dist/cjs/components/cell/CellGroup.js +5 -4
  16. package/dist/cjs/components/checkbox/Checkbox.js +24 -27
  17. package/dist/cjs/components/checkbox/CheckboxGroup.js +10 -9
  18. package/dist/cjs/components/circle/Circle.js +56 -78
  19. package/dist/cjs/components/collapse/Collapse.js +66 -60
  20. package/dist/cjs/components/collapse/tokens.js +1 -1
  21. package/dist/cjs/components/config-provider/ConfigProvider.js +7 -6
  22. package/dist/cjs/components/config-provider/useLocale.js +2 -3
  23. package/dist/cjs/components/count-down/CountDown.js +7 -8
  24. package/dist/cjs/components/datetime-picker/DatetimePicker.js +80 -73
  25. package/dist/cjs/components/dialog/Dialog.js +95 -78
  26. package/dist/cjs/components/dialog/imperative.js +20 -21
  27. package/dist/cjs/components/dialog/index.js +5 -1
  28. package/dist/cjs/components/divider/Divider.js +6 -7
  29. package/dist/cjs/components/dropdown-menu/DropdownItem.js +17 -17
  30. package/dist/cjs/components/dropdown-menu/DropdownMenu.js +79 -57
  31. package/dist/cjs/components/dropdown-menu/DropdownMenuContext.js +3 -3
  32. package/dist/cjs/components/empty/Empty.js +6 -6
  33. package/dist/cjs/components/field/Field.js +57 -148
  34. package/dist/cjs/components/field/tokens.js +87 -12
  35. package/dist/cjs/components/field/utils.js +24 -0
  36. package/dist/cjs/components/flex/FlexItem.js +10 -10
  37. package/dist/cjs/components/form/Form.js +78 -36
  38. package/dist/cjs/components/form/FormItem.js +19 -15
  39. package/dist/cjs/components/form/FormList.js +6 -6
  40. package/dist/cjs/components/form/index.js +2 -3
  41. package/dist/cjs/components/form/utils.js +36 -13
  42. package/dist/cjs/components/grid/Grid.js +7 -7
  43. package/dist/cjs/components/grid/GridItem.js +11 -11
  44. package/dist/cjs/components/grid/tokens.js +1 -1
  45. package/dist/cjs/components/image/Image.js +93 -60
  46. package/dist/cjs/components/image-preview/ImagePreview.js +95 -71
  47. package/dist/cjs/components/image-preview/imperative.js +7 -6
  48. package/dist/cjs/components/index-bar/IndexBar.js +213 -105
  49. package/dist/cjs/components/index.js +498 -0
  50. package/dist/cjs/components/input/Input.js +25 -25
  51. package/dist/cjs/components/list/List.js +29 -22
  52. package/dist/cjs/components/loading/Loading.js +6 -6
  53. package/dist/cjs/components/nav-bar/NavBar.js +7 -6
  54. package/dist/cjs/components/nav-bar/tokens.js +71 -68
  55. package/dist/cjs/components/notice-bar/NoticeBar.js +46 -50
  56. package/dist/cjs/components/notify/Notify.js +19 -15
  57. package/dist/cjs/components/notify/defaults.js +15 -0
  58. package/dist/cjs/components/notify/imperative.js +9 -8
  59. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +191 -138
  60. package/dist/cjs/components/number-keyboard/tokens.js +7 -7
  61. package/dist/cjs/components/overlay/Overlay.js +19 -20
  62. package/dist/cjs/components/overlay/OverlayStackStore.js +4 -4
  63. package/dist/cjs/components/overlay/tokens.js +25 -2
  64. package/dist/cjs/components/overlay/useOverlayStack.js +9 -9
  65. package/dist/cjs/components/pagination/Pagination.js +10 -10
  66. package/dist/cjs/components/password-input/PasswordInput.js +57 -52
  67. package/dist/cjs/components/picker/Picker.js +219 -89
  68. package/dist/cjs/components/picker/WheelPicker.js +313 -135
  69. package/dist/cjs/components/picker/utils.js +14 -10
  70. package/dist/cjs/components/popup/Popup.js +184 -213
  71. package/dist/cjs/components/portal/Portal.js +6 -16
  72. package/dist/cjs/components/portal/PortalHost.js +103 -73
  73. package/dist/cjs/components/progress/Progress.js +114 -115
  74. package/dist/cjs/components/pull-refresh/PullRefresh.js +87 -52
  75. package/dist/cjs/components/radio/Radio.js +49 -53
  76. package/dist/cjs/components/radio/RadioGroup.js +9 -10
  77. package/dist/cjs/components/radio/tokens.js +1 -1
  78. package/dist/cjs/components/rate/Rate.js +77 -68
  79. package/dist/cjs/components/rate/tokens.js +1 -3
  80. package/dist/cjs/components/safe-area-view/SafeAreaView.js +63 -0
  81. package/dist/cjs/components/safe-area-view/index.js +12 -0
  82. package/dist/cjs/components/search/Search.js +23 -25
  83. package/dist/cjs/components/selector/Selector.js +128 -88
  84. package/dist/cjs/components/selector/tokens.js +1 -1
  85. package/dist/cjs/components/share-sheet/ShareSheet.js +73 -65
  86. package/dist/cjs/components/sidebar/Sidebar.js +36 -24
  87. package/dist/cjs/components/sidebar/SidebarContext.js +4 -3
  88. package/dist/cjs/components/sidebar/SidebarItem.js +9 -9
  89. package/dist/cjs/components/sidebar/tokens.js +3 -2
  90. package/dist/cjs/components/skeleton/Skeleton.js +72 -53
  91. package/dist/cjs/components/slider/Slider.js +200 -165
  92. package/dist/cjs/components/slider/utils.js +60 -0
  93. package/dist/cjs/components/space/Space.js +25 -26
  94. package/dist/cjs/components/stepper/Stepper.js +127 -103
  95. package/dist/cjs/components/swiper/Swiper.js +238 -341
  96. package/dist/cjs/components/swiper/SwiperItem.js +3 -3
  97. package/dist/cjs/components/swiper/SwiperPagIndicator.js +10 -8
  98. package/dist/cjs/components/swiper/useSwiperWeb.js +212 -0
  99. package/dist/cjs/components/swiper/utils.js +49 -0
  100. package/dist/cjs/components/switch/Switch.js +43 -39
  101. package/dist/cjs/components/switch/tokens.js +7 -5
  102. package/dist/cjs/components/tabbar/Tabbar.js +25 -30
  103. package/dist/cjs/components/tabbar/TabbarContext.js +4 -3
  104. package/dist/cjs/components/tabbar/TabbarItem.js +11 -10
  105. package/dist/cjs/components/tabs/Tabs.js +171 -228
  106. package/dist/cjs/components/tabs/tokens.js +4 -3
  107. package/dist/cjs/components/tabs/useTabsAnimation.js +74 -0
  108. package/dist/cjs/components/tabs/useTabsScroll.js +129 -0
  109. package/dist/cjs/components/tabs/utils.js +34 -0
  110. package/dist/cjs/components/tag/Tag.js +5 -5
  111. package/dist/cjs/components/tag/tokens.js +2 -2
  112. package/dist/cjs/components/toast/Toast.js +23 -11
  113. package/dist/cjs/components/toast/imperative.js +10 -9
  114. package/dist/cjs/components/types.js +1 -0
  115. package/dist/cjs/components/typography/Typography.js +57 -38
  116. package/dist/cjs/components/typography/tokens.js +3 -3
  117. package/dist/cjs/components/uploader/Uploader.js +42 -93
  118. package/dist/cjs/components/uploader/utils.js +72 -0
  119. package/dist/cjs/components/water-mark/WaterMark.js +18 -18
  120. package/dist/cjs/design-system/ThemeProvider.js +3 -3
  121. package/dist/cjs/design-system/createComponentTokensHook.js +4 -5
  122. package/dist/cjs/design-system/tokens.js +1 -0
  123. package/dist/cjs/design-system/useTheme.js +2 -3
  124. package/dist/cjs/hooks/aria/useAriaListBox.js +24 -9
  125. package/dist/cjs/hooks/aria/useAriaOverlay.js +13 -9
  126. package/dist/cjs/hooks/aria/useAriaPress.js +47 -21
  127. package/dist/cjs/hooks/aria/useAriaToggle.js +6 -6
  128. package/dist/cjs/hooks/gesture/useGestureScroll.js +22 -23
  129. package/dist/cjs/hooks/index.js +12 -0
  130. package/dist/cjs/hooks/useControllableValue.js +10 -9
  131. package/dist/cjs/hooks/useCountDown.js +17 -18
  132. package/dist/cjs/hooks/useHairline.js +3 -3
  133. package/dist/cjs/hooks/usePresenceAnimation.js +5 -6
  134. package/dist/cjs/hooks/useSafeAreaPadding.js +41 -0
  135. package/dist/cjs/index.js +22 -0
  136. package/dist/cjs/platform/index.js +11 -0
  137. package/dist/cjs/platform/measure.js +10 -8
  138. package/dist/cjs/platform/runtime.js +19 -0
  139. package/dist/cjs/utils/deepMerge.js +5 -2
  140. package/dist/cjs/utils/hairline.js +6 -3
  141. package/dist/cjs/utils/index.js +115 -0
  142. package/dist/es/components/action-sheet/ActionSheet.js +43 -22
  143. package/dist/es/components/area/Area.js +41 -7
  144. package/dist/es/components/area/utils.js +37 -33
  145. package/dist/es/components/avatar/Avatar.js +3 -3
  146. package/dist/es/components/badge/Badge.js +27 -34
  147. package/dist/es/components/badge/tokens.js +1 -1
  148. package/dist/es/components/button/Button.js +12 -21
  149. package/dist/es/components/button/ButtonGroup.js +4 -4
  150. package/dist/es/components/button/tokens.js +1 -1
  151. package/dist/es/components/calendar/Calendar.js +38 -31
  152. package/dist/es/components/cascader/Cascader.js +136 -60
  153. package/dist/es/components/cascader/useCascaderExtend.js +17 -16
  154. package/dist/es/components/cell/Cell.js +4 -5
  155. package/dist/es/components/cell/CellGroup.js +3 -2
  156. package/dist/es/components/checkbox/Checkbox.js +22 -25
  157. package/dist/es/components/checkbox/CheckboxGroup.js +9 -8
  158. package/dist/es/components/circle/Circle.js +53 -74
  159. package/dist/es/components/collapse/Collapse.js +61 -55
  160. package/dist/es/components/collapse/tokens.js +1 -1
  161. package/dist/es/components/config-provider/ConfigProvider.js +7 -5
  162. package/dist/es/components/config-provider/useLocale.js +2 -2
  163. package/dist/es/components/count-down/CountDown.js +4 -5
  164. package/dist/es/components/datetime-picker/DatetimePicker.js +61 -55
  165. package/dist/es/components/dialog/Dialog.js +94 -78
  166. package/dist/es/components/dialog/imperative.js +14 -16
  167. package/dist/es/components/dialog/index.js +5 -1
  168. package/dist/es/components/divider/Divider.js +3 -4
  169. package/dist/es/components/dropdown-menu/DropdownItem.js +11 -11
  170. package/dist/es/components/dropdown-menu/DropdownMenu.js +78 -57
  171. package/dist/es/components/dropdown-menu/DropdownMenuContext.js +2 -2
  172. package/dist/es/components/empty/Empty.js +3 -3
  173. package/dist/es/components/field/Field.js +54 -146
  174. package/dist/es/components/field/tokens.js +81 -12
  175. package/dist/es/components/field/utils.js +17 -0
  176. package/dist/es/components/flex/FlexItem.js +3 -3
  177. package/dist/es/components/form/Form.js +77 -35
  178. package/dist/es/components/form/FormItem.js +14 -10
  179. package/dist/es/components/form/FormList.js +5 -5
  180. package/dist/es/components/form/index.js +2 -2
  181. package/dist/es/components/form/utils.js +34 -11
  182. package/dist/es/components/grid/Grid.js +4 -4
  183. package/dist/es/components/grid/GridItem.js +5 -6
  184. package/dist/es/components/grid/tokens.js +1 -1
  185. package/dist/es/components/image/Image.js +88 -55
  186. package/dist/es/components/image-preview/ImagePreview.js +94 -71
  187. package/dist/es/components/image-preview/imperative.js +6 -6
  188. package/dist/es/components/index-bar/IndexBar.js +212 -104
  189. package/dist/es/components/index.js +74 -2
  190. package/dist/es/components/input/Input.js +24 -25
  191. package/dist/es/components/list/List.js +28 -22
  192. package/dist/es/components/loading/Loading.js +5 -5
  193. package/dist/es/components/nav-bar/NavBar.js +6 -5
  194. package/dist/es/components/nav-bar/tokens.js +71 -68
  195. package/dist/es/components/notice-bar/NoticeBar.js +45 -49
  196. package/dist/es/components/notify/Notify.js +19 -15
  197. package/dist/es/components/notify/defaults.js +9 -0
  198. package/dist/es/components/notify/imperative.js +5 -5
  199. package/dist/es/components/number-keyboard/NumberKeyboard.js +191 -139
  200. package/dist/es/components/number-keyboard/tokens.js +7 -7
  201. package/dist/es/components/overlay/Overlay.js +18 -20
  202. package/dist/es/components/overlay/OverlayStackStore.js +2 -2
  203. package/dist/es/components/overlay/tokens.js +25 -2
  204. package/dist/es/components/overlay/useOverlayStack.js +9 -8
  205. package/dist/es/components/pagination/Pagination.js +9 -9
  206. package/dist/es/components/password-input/PasswordInput.js +56 -51
  207. package/dist/es/components/picker/Picker.js +209 -81
  208. package/dist/es/components/picker/WheelPicker.js +304 -126
  209. package/dist/es/components/picker/utils.js +13 -9
  210. package/dist/es/components/popup/Popup.js +184 -214
  211. package/dist/es/components/portal/Portal.js +6 -15
  212. package/dist/es/components/portal/PortalHost.js +103 -73
  213. package/dist/es/components/progress/Progress.js +112 -112
  214. package/dist/es/components/pull-refresh/PullRefresh.js +86 -51
  215. package/dist/es/components/radio/Radio.js +46 -49
  216. package/dist/es/components/radio/RadioGroup.js +8 -9
  217. package/dist/es/components/radio/tokens.js +1 -1
  218. package/dist/es/components/rate/Rate.js +67 -57
  219. package/dist/es/components/rate/tokens.js +1 -3
  220. package/dist/es/components/safe-area-view/SafeAreaView.js +43 -0
  221. package/dist/es/components/safe-area-view/index.js +1 -0
  222. package/dist/es/components/search/Search.js +22 -25
  223. package/dist/es/components/selector/Selector.js +128 -87
  224. package/dist/es/components/selector/tokens.js +1 -1
  225. package/dist/es/components/share-sheet/ShareSheet.js +72 -65
  226. package/dist/es/components/sidebar/Sidebar.js +34 -22
  227. package/dist/es/components/sidebar/SidebarContext.js +2 -1
  228. package/dist/es/components/sidebar/SidebarItem.js +7 -7
  229. package/dist/es/components/sidebar/tokens.js +3 -2
  230. package/dist/es/components/skeleton/Skeleton.js +70 -51
  231. package/dist/es/components/slider/Slider.js +197 -162
  232. package/dist/es/components/slider/utils.js +49 -0
  233. package/dist/es/components/space/Space.js +21 -21
  234. package/dist/es/components/stepper/Stepper.js +105 -81
  235. package/dist/es/components/swiper/Swiper.js +229 -332
  236. package/dist/es/components/swiper/SwiperItem.js +2 -2
  237. package/dist/es/components/swiper/SwiperPagIndicator.js +9 -7
  238. package/dist/es/components/swiper/useSwiperWeb.js +193 -0
  239. package/dist/es/components/swiper/utils.js +37 -0
  240. package/dist/es/components/switch/Switch.js +42 -37
  241. package/dist/es/components/switch/tokens.js +7 -5
  242. package/dist/es/components/tabbar/Tabbar.js +25 -30
  243. package/dist/es/components/tabbar/TabbarContext.js +2 -1
  244. package/dist/es/components/tabbar/TabbarItem.js +11 -10
  245. package/dist/es/components/tabs/Tabs.js +170 -227
  246. package/dist/es/components/tabs/tokens.js +4 -3
  247. package/dist/es/components/tabs/useTabsAnimation.js +55 -0
  248. package/dist/es/components/tabs/useTabsScroll.js +110 -0
  249. package/dist/es/components/tabs/utils.js +19 -0
  250. package/dist/es/components/tag/Tag.js +3 -3
  251. package/dist/es/components/tag/tokens.js +1 -1
  252. package/dist/es/components/toast/Toast.js +22 -11
  253. package/dist/es/components/toast/imperative.js +6 -6
  254. package/dist/es/components/types.js +1 -0
  255. package/dist/es/components/typography/Typography.js +54 -35
  256. package/dist/es/components/typography/tokens.js +3 -3
  257. package/dist/es/components/uploader/Uploader.js +35 -87
  258. package/dist/es/components/uploader/utils.js +60 -0
  259. package/dist/es/components/water-mark/WaterMark.js +13 -13
  260. package/dist/es/design-system/ThemeProvider.js +2 -2
  261. package/dist/es/design-system/createComponentTokensHook.js +2 -2
  262. package/dist/es/design-system/tokens.js +1 -0
  263. package/dist/es/design-system/useTheme.js +2 -2
  264. package/dist/es/hooks/aria/useAriaListBox.js +22 -6
  265. package/dist/es/hooks/aria/useAriaOverlay.js +5 -6
  266. package/dist/es/hooks/aria/useAriaPress.js +35 -21
  267. package/dist/es/hooks/aria/useAriaToggle.js +4 -3
  268. package/dist/es/hooks/gesture/useGestureScroll.js +20 -20
  269. package/dist/es/hooks/index.js +1 -0
  270. package/dist/es/hooks/useControllableValue.js +10 -8
  271. package/dist/es/hooks/useCountDown.js +17 -17
  272. package/dist/es/hooks/useHairline.js +2 -2
  273. package/dist/es/hooks/usePresenceAnimation.js +5 -5
  274. package/dist/es/hooks/useSafeAreaPadding.js +23 -0
  275. package/dist/es/index.js +2 -4
  276. package/dist/es/platform/index.js +1 -0
  277. package/dist/es/platform/measure.js +10 -8
  278. package/dist/es/platform/runtime.js +4 -0
  279. package/dist/es/utils/deepMerge.js +5 -2
  280. package/dist/es/utils/hairline.js +6 -3
  281. package/dist/es/utils/index.js +12 -0
  282. package/dist/types/components/action-sheet/ActionSheet.d.ts +4 -0
  283. package/dist/types/components/action-sheet/index.d.ts +4 -0
  284. package/dist/types/components/action-sheet/tokens.d.ts +4 -0
  285. package/dist/types/components/area/Area.d.ts +4 -0
  286. package/dist/types/components/area/index.d.ts +3 -0
  287. package/dist/types/components/area/utils.d.ts +2 -0
  288. package/dist/types/components/avatar/Avatar.d.ts +5 -0
  289. package/dist/types/components/avatar/index.d.ts +3 -0
  290. package/dist/types/components/avatar/tokens.d.ts +4 -0
  291. package/dist/types/components/badge/Badge.d.ts +4 -0
  292. package/dist/types/components/badge/index.d.ts +3 -0
  293. package/dist/types/components/badge/tokens.d.ts +2 -0
  294. package/dist/types/components/button/Button.d.ts +5 -0
  295. package/dist/types/components/button/ButtonContext.d.ts +16 -0
  296. package/dist/types/components/button/ButtonGroup.d.ts +10 -0
  297. package/dist/types/components/button/index.d.ts +6 -0
  298. package/dist/types/components/button/tokens.d.ts +2 -0
  299. package/dist/types/components/calendar/Calendar.d.ts +4 -0
  300. package/dist/types/components/calendar/index.d.ts +3 -0
  301. package/dist/types/components/calendar/tokens.d.ts +4 -0
  302. package/dist/types/components/cascader/Cascader.d.ts +4 -0
  303. package/dist/types/components/cascader/index.d.ts +4 -0
  304. package/dist/types/components/cascader/tokens.d.ts +4 -0
  305. package/dist/types/components/cascader/useCascaderExtend.d.ts +12 -0
  306. package/dist/types/components/cascader/utils.d.ts +6 -0
  307. package/dist/types/components/cell/Cell.d.ts +4 -0
  308. package/dist/types/components/cell/CellContext.d.ts +7 -0
  309. package/dist/types/components/cell/CellGroup.d.ts +3 -0
  310. package/dist/types/components/cell/index.d.ts +8 -0
  311. package/dist/types/components/cell/tokens.d.ts +4 -0
  312. package/dist/types/components/checkbox/Checkbox.d.ts +5 -0
  313. package/dist/types/components/checkbox/CheckboxContext.d.ts +16 -0
  314. package/dist/types/components/checkbox/CheckboxGroup.d.ts +8 -0
  315. package/dist/types/components/checkbox/index.d.ts +7 -0
  316. package/dist/types/components/checkbox/tokens.d.ts +2 -0
  317. package/dist/types/components/circle/Circle.d.ts +5 -0
  318. package/dist/types/components/circle/index.d.ts +3 -0
  319. package/dist/types/components/circle/tokens.d.ts +4 -0
  320. package/dist/types/components/collapse/Collapse.d.ts +45 -0
  321. package/dist/types/components/collapse/index.d.ts +3 -0
  322. package/dist/types/components/collapse/tokens.d.ts +4 -0
  323. package/dist/types/components/config-provider/ConfigProvider.d.ts +3 -0
  324. package/dist/types/components/config-provider/LocaleContext.d.ts +75 -0
  325. package/dist/types/components/config-provider/index.d.ts +5 -0
  326. package/dist/types/components/config-provider/locale/base.d.ts +74 -0
  327. package/dist/types/components/config-provider/locale/en-US.d.ts +74 -0
  328. package/dist/types/components/config-provider/locale/zh-CN.d.ts +74 -0
  329. package/dist/types/components/config-provider/useLocale.d.ts +74 -0
  330. package/dist/types/components/count-down/CountDown.d.ts +4 -0
  331. package/dist/types/components/count-down/index.d.ts +4 -0
  332. package/dist/types/components/count-down/tokens.d.ts +4 -0
  333. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +4 -0
  334. package/dist/types/components/datetime-picker/index.d.ts +3 -0
  335. package/dist/types/components/dialog/Dialog.d.ts +4 -0
  336. package/dist/types/components/dialog/imperative.d.ts +23 -0
  337. package/dist/types/components/dialog/index.d.ts +5 -0
  338. package/dist/types/components/dialog/tokens.d.ts +46 -0
  339. package/dist/types/components/divider/Divider.d.ts +3 -0
  340. package/dist/types/components/divider/index.d.ts +3 -0
  341. package/dist/types/components/divider/tokens.d.ts +4 -0
  342. package/dist/types/components/dropdown-menu/DropdownItem.d.ts +4 -0
  343. package/dist/types/components/dropdown-menu/DropdownMenu.d.ts +4 -0
  344. package/dist/types/components/dropdown-menu/DropdownMenuContext.d.ts +17 -0
  345. package/dist/types/components/dropdown-menu/index.d.ts +8 -0
  346. package/dist/types/components/dropdown-menu/tokens.d.ts +35 -0
  347. package/dist/types/components/empty/Empty.d.ts +3 -0
  348. package/dist/types/components/empty/index.d.ts +3 -0
  349. package/dist/types/components/empty/tokens.d.ts +4 -0
  350. package/dist/types/components/field/Field.d.ts +4 -0
  351. package/dist/types/components/field/index.d.ts +7 -0
  352. package/dist/types/components/field/tokens.d.ts +131 -0
  353. package/dist/types/components/field/utils.d.ts +4 -0
  354. package/dist/types/components/flex/Flex.d.ts +3 -0
  355. package/dist/types/components/flex/FlexContext.d.ts +8 -0
  356. package/dist/types/components/flex/FlexItem.d.ts +3 -0
  357. package/dist/types/components/flex/index.d.ts +8 -0
  358. package/dist/types/components/flex/tokens.d.ts +2 -0
  359. package/dist/types/components/form/Form.d.ts +6 -0
  360. package/dist/types/components/form/FormContext.d.ts +17 -0
  361. package/dist/types/components/form/FormItem.d.ts +4 -0
  362. package/dist/types/components/form/FormList.d.ts +18 -0
  363. package/dist/types/components/form/index.d.ts +17 -0
  364. package/dist/types/components/form/utils.d.ts +6 -0
  365. package/dist/types/components/grid/Grid.d.ts +3 -0
  366. package/dist/types/components/grid/GridContext.d.ts +17 -0
  367. package/dist/types/components/grid/GridItem.d.ts +3 -0
  368. package/dist/types/components/grid/index.d.ts +5 -0
  369. package/dist/types/components/grid/tokens.d.ts +4 -0
  370. package/dist/types/components/image/Image.d.ts +5 -0
  371. package/dist/types/components/image/index.d.ts +4 -0
  372. package/dist/types/components/image/tokens.d.ts +2 -0
  373. package/dist/types/components/image-preview/ImagePreview.d.ts +4 -0
  374. package/dist/types/components/image-preview/imperative.d.ts +5 -0
  375. package/dist/types/components/image-preview/index.d.ts +6 -0
  376. package/dist/types/components/image-preview/tokens.d.ts +10 -0
  377. package/dist/types/components/index-bar/IndexAnchor.d.ts +4 -0
  378. package/dist/types/components/index-bar/IndexBar.d.ts +4 -0
  379. package/dist/types/components/index-bar/index.d.ts +9 -0
  380. package/dist/types/components/index-bar/tokens.d.ts +22 -0
  381. package/dist/types/components/index.d.ts +138 -0
  382. package/dist/types/components/input/Input.d.ts +8 -0
  383. package/dist/types/components/input/index.d.ts +4 -0
  384. package/dist/types/components/input/tokens.d.ts +2 -0
  385. package/dist/types/components/list/List.d.ts +4 -0
  386. package/dist/types/components/list/index.d.ts +3 -0
  387. package/dist/types/components/list/tokens.d.ts +4 -0
  388. package/dist/types/components/loading/Loading.d.ts +3 -0
  389. package/dist/types/components/loading/index.d.ts +3 -0
  390. package/dist/types/components/loading/tokens.d.ts +4 -0
  391. package/dist/types/components/nav-bar/NavBar.d.ts +4 -0
  392. package/dist/types/components/nav-bar/index.d.ts +4 -0
  393. package/dist/types/components/nav-bar/tokens.d.ts +4 -0
  394. package/dist/types/components/notice-bar/NoticeBar.d.ts +3 -0
  395. package/dist/types/components/notice-bar/index.d.ts +3 -0
  396. package/dist/types/components/notice-bar/tokens.d.ts +23 -0
  397. package/dist/types/components/notify/Notify.d.ts +5 -0
  398. package/dist/types/components/notify/defaults.d.ts +10 -0
  399. package/dist/types/components/notify/imperative.d.ts +22 -0
  400. package/dist/types/components/notify/index.d.ts +15 -0
  401. package/dist/types/components/notify/tokens.d.ts +4 -0
  402. package/dist/types/components/number-keyboard/NumberKeyboard.d.ts +4 -0
  403. package/dist/types/components/number-keyboard/index.d.ts +4 -0
  404. package/dist/types/components/number-keyboard/tokens.d.ts +36 -0
  405. package/dist/types/components/overlay/Overlay.d.ts +4 -0
  406. package/dist/types/components/overlay/OverlayStackStore.d.ts +39 -0
  407. package/dist/types/components/overlay/index.d.ts +6 -0
  408. package/dist/types/components/overlay/tokens.d.ts +4 -0
  409. package/dist/types/components/overlay/useOverlayStack.d.ts +10 -0
  410. package/dist/types/components/pagination/Pagination.d.ts +5 -0
  411. package/dist/types/components/pagination/index.d.ts +5 -0
  412. package/dist/types/components/pagination/tokens.d.ts +2 -0
  413. package/dist/types/components/password-input/PasswordInput.d.ts +39 -0
  414. package/dist/types/components/password-input/index.d.ts +2 -0
  415. package/dist/types/components/picker/Picker.d.ts +16 -0
  416. package/dist/types/components/picker/WheelPicker.d.ts +21 -0
  417. package/dist/types/components/picker/index.d.ts +4 -0
  418. package/dist/types/components/picker/tokens.d.ts +37 -0
  419. package/dist/types/components/picker/utils.d.ts +17 -0
  420. package/dist/types/components/popup/Popup.d.ts +44 -0
  421. package/dist/types/components/popup/index.d.ts +4 -0
  422. package/dist/types/components/popup/tokens.d.ts +46 -0
  423. package/dist/types/components/portal/Portal.d.ts +13 -0
  424. package/dist/types/components/portal/PortalContext.d.ts +7 -0
  425. package/dist/types/components/portal/PortalHost.d.ts +25 -0
  426. package/dist/types/components/portal/index.d.ts +3 -0
  427. package/dist/types/components/progress/Progress.d.ts +4 -0
  428. package/dist/types/components/progress/index.d.ts +3 -0
  429. package/dist/types/components/progress/tokens.d.ts +4 -0
  430. package/dist/types/components/pull-refresh/PullRefresh.d.ts +5 -0
  431. package/dist/types/components/pull-refresh/index.d.ts +4 -0
  432. package/dist/types/components/pull-refresh/tokens.d.ts +10 -0
  433. package/dist/types/components/radio/Radio.d.ts +3 -0
  434. package/dist/types/components/radio/RadioContext.d.ts +13 -0
  435. package/dist/types/components/radio/RadioGroup.d.ts +3 -0
  436. package/dist/types/components/radio/index.d.ts +7 -0
  437. package/dist/types/components/radio/tokens.d.ts +2 -0
  438. package/dist/types/components/rate/Rate.d.ts +4 -0
  439. package/dist/types/components/rate/index.d.ts +4 -0
  440. package/dist/types/components/rate/tokens.d.ts +4 -0
  441. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +10 -0
  442. package/dist/types/components/safe-area-view/index.d.ts +2 -0
  443. package/dist/types/components/search/Search.d.ts +4 -0
  444. package/dist/types/components/search/index.d.ts +4 -0
  445. package/dist/types/components/search/tokens.d.ts +40 -0
  446. package/dist/types/components/selector/Selector.d.ts +7 -0
  447. package/dist/types/components/selector/index.d.ts +4 -0
  448. package/dist/types/components/selector/tokens.d.ts +2 -0
  449. package/dist/types/components/share-sheet/ShareSheet.d.ts +4 -0
  450. package/dist/types/components/share-sheet/index.d.ts +4 -0
  451. package/dist/types/components/share-sheet/tokens.d.ts +26 -0
  452. package/dist/types/components/sidebar/Sidebar.d.ts +4 -0
  453. package/dist/types/components/sidebar/SidebarContext.d.ts +7 -0
  454. package/dist/types/components/sidebar/SidebarItem.d.ts +4 -0
  455. package/dist/types/components/sidebar/index.d.ts +8 -0
  456. package/dist/types/components/sidebar/tokens.d.ts +4 -0
  457. package/dist/types/components/skeleton/Skeleton.d.ts +5 -0
  458. package/dist/types/components/skeleton/index.d.ts +5 -0
  459. package/dist/types/components/skeleton/tokens.d.ts +2 -0
  460. package/dist/types/components/slider/Slider.d.ts +4 -0
  461. package/dist/types/components/slider/index.d.ts +3 -0
  462. package/dist/types/components/slider/tokens.d.ts +28 -0
  463. package/dist/types/components/slider/utils.d.ts +42 -0
  464. package/dist/types/components/space/Space.d.ts +3 -0
  465. package/dist/types/components/space/index.d.ts +3 -0
  466. package/dist/types/components/space/tokens.d.ts +3 -0
  467. package/dist/types/components/stepper/Stepper.d.ts +4 -0
  468. package/dist/types/components/stepper/index.d.ts +4 -0
  469. package/dist/types/components/stepper/tokens.d.ts +43 -0
  470. package/dist/types/components/swiper/Swiper.d.ts +7 -0
  471. package/dist/types/components/swiper/SwiperItem.d.ts +5 -0
  472. package/dist/types/components/swiper/SwiperPagIndicator.d.ts +36 -0
  473. package/dist/types/components/swiper/index.d.ts +14 -0
  474. package/dist/types/components/swiper/useSwiperWeb.d.ts +41 -0
  475. package/dist/types/components/swiper/utils.d.ts +17 -0
  476. package/dist/types/components/switch/Switch.d.ts +7 -0
  477. package/dist/types/components/switch/index.d.ts +4 -0
  478. package/dist/types/components/switch/tokens.d.ts +2 -0
  479. package/dist/types/components/tabbar/Tabbar.d.ts +4 -0
  480. package/dist/types/components/tabbar/TabbarContext.d.ts +13 -0
  481. package/dist/types/components/tabbar/TabbarItem.d.ts +4 -0
  482. package/dist/types/components/tabbar/index.d.ts +9 -0
  483. package/dist/types/components/tabbar/tokens.d.ts +28 -0
  484. package/dist/types/components/tabs/TabPane.d.ts +4 -0
  485. package/dist/types/components/tabs/Tabs.d.ts +4 -0
  486. package/dist/types/components/tabs/index.d.ts +8 -0
  487. package/dist/types/components/tabs/tokens.d.ts +87 -0
  488. package/dist/types/components/tabs/useTabsAnimation.d.ts +30 -0
  489. package/dist/types/components/tabs/useTabsScroll.d.ts +23 -0
  490. package/dist/types/components/tabs/utils.d.ts +5 -0
  491. package/dist/types/components/tag/Tag.d.ts +3 -0
  492. package/dist/types/components/tag/index.d.ts +3 -0
  493. package/dist/types/components/tag/tokens.d.ts +4 -0
  494. package/dist/types/components/toast/Toast.d.ts +36 -0
  495. package/dist/types/components/toast/imperative.d.ts +22 -0
  496. package/dist/types/components/toast/index.d.ts +15 -0
  497. package/dist/types/components/toast/tokens.d.ts +24 -0
  498. package/dist/types/components/types.d.ts +59 -0
  499. package/dist/types/components/typography/Typography.d.ts +11 -0
  500. package/dist/types/components/typography/index.d.ts +3 -0
  501. package/dist/types/components/typography/tokens.d.ts +2 -0
  502. package/dist/types/components/uploader/Uploader.d.ts +4 -0
  503. package/dist/types/components/uploader/index.d.ts +5 -0
  504. package/dist/types/components/uploader/tokens.d.ts +17 -0
  505. package/dist/types/components/uploader/utils.d.ts +11 -0
  506. package/dist/types/components/water-mark/WaterMark.d.ts +4 -0
  507. package/dist/types/components/water-mark/index.d.ts +5 -0
  508. package/dist/types/components/water-mark/tokens.d.ts +2 -0
  509. package/dist/types/design-system/ThemeContext.d.ts +14 -0
  510. package/dist/types/design-system/ThemeProvider.d.ts +14 -0
  511. package/dist/types/design-system/createComponentTokensHook.d.ts +4 -0
  512. package/dist/types/design-system/index.d.ts +10 -0
  513. package/dist/types/design-system/mergeTokensOverride.d.ts +2 -0
  514. package/dist/types/design-system/presets.d.ts +8 -0
  515. package/dist/types/design-system/tokens.d.ts +74 -0
  516. package/dist/types/design-system/useTheme.d.ts +1 -0
  517. package/dist/types/hooks/aria/index.d.ts +4 -0
  518. package/dist/types/hooks/aria/useAriaListBox.d.ts +20 -0
  519. package/dist/types/hooks/aria/useAriaOverlay.d.ts +24 -0
  520. package/dist/types/hooks/aria/useAriaPress.d.ts +39 -0
  521. package/dist/types/hooks/aria/useAriaToggle.d.ts +15 -0
  522. package/dist/types/hooks/gesture/index.d.ts +1 -0
  523. package/dist/types/hooks/gesture/useGestureScroll.d.ts +32 -0
  524. package/dist/types/hooks/index.d.ts +8 -0
  525. package/dist/types/hooks/useControllableValue.d.ts +9 -0
  526. package/dist/types/hooks/useCountDown.d.ts +23 -0
  527. package/dist/types/hooks/useHairline.d.ts +31 -0
  528. package/dist/types/hooks/usePresenceAnimation.d.ts +15 -0
  529. package/dist/types/hooks/useSafeAreaPadding.d.ts +13 -0
  530. package/dist/types/index.d.ts +4 -0
  531. package/dist/types/platform/animation.d.ts +1 -0
  532. package/dist/types/platform/history.d.ts +1 -0
  533. package/dist/types/platform/index.d.ts +5 -0
  534. package/dist/types/platform/measure.d.ts +7 -0
  535. package/dist/types/platform/runtime.d.ts +3 -0
  536. package/dist/types/platform/scrollLock.d.ts +2 -0
  537. package/dist/types/types.d.ts +4 -0
  538. package/dist/types/utils/array.d.ts +1 -0
  539. package/dist/types/utils/color.d.ts +5 -0
  540. package/dist/types/utils/createPlatformShadow.d.ts +11 -0
  541. package/dist/types/utils/date.d.ts +13 -0
  542. package/dist/types/utils/deepMerge.d.ts +3 -0
  543. package/dist/types/utils/hairline.d.ts +20 -0
  544. package/dist/types/utils/index.d.ts +10 -0
  545. package/dist/types/utils/number.d.ts +11 -0
  546. package/dist/types/utils/promise.d.ts +1 -0
  547. package/dist/types/utils/string.d.ts +3 -0
  548. package/dist/types/utils/validate.d.ts +14 -0
  549. package/package.json +411 -14
  550. package/dist/cjs/components/action-sheet/types.d.ts +0 -96
  551. package/dist/cjs/components/area/types.d.ts +0 -27
  552. package/dist/cjs/components/avatar/types.d.ts +0 -64
  553. package/dist/cjs/components/badge/types.d.ts +0 -61
  554. package/dist/cjs/components/button/types.d.ts +0 -145
  555. package/dist/cjs/components/calendar/types.d.ts +0 -115
  556. package/dist/cjs/components/cascader/types.d.ts +0 -159
  557. package/dist/cjs/components/cell/types.d.ts +0 -117
  558. package/dist/cjs/components/checkbox/types.d.ts +0 -108
  559. package/dist/cjs/components/circle/types.d.ts +0 -94
  560. package/dist/cjs/components/collapse/types.d.ts +0 -47
  561. package/dist/cjs/components/config-provider/locale/types.d.ts +0 -3
  562. package/dist/cjs/components/config-provider/types.d.ts +0 -10
  563. package/dist/cjs/components/count-down/types.d.ts +0 -33
  564. package/dist/cjs/components/datetime-picker/types.d.ts +0 -46
  565. package/dist/cjs/components/dialog/types.d.ts +0 -83
  566. package/dist/cjs/components/divider/types.d.ts +0 -50
  567. package/dist/cjs/components/dropdown-menu/types.d.ts +0 -89
  568. package/dist/cjs/components/empty/types.d.ts +0 -48
  569. package/dist/cjs/components/field/types.d.ts +0 -112
  570. package/dist/cjs/components/flex/types.d.ts +0 -42
  571. package/dist/cjs/components/form/types.d.ts +0 -80
  572. package/dist/cjs/components/grid/types.d.ts +0 -82
  573. package/dist/cjs/components/image/types.d.ts +0 -56
  574. package/dist/cjs/components/image-preview/types.d.ts +0 -67
  575. package/dist/cjs/components/index-bar/types.d.ts +0 -43
  576. package/dist/cjs/components/input/types.d.ts +0 -49
  577. package/dist/cjs/components/list/types.d.ts +0 -48
  578. package/dist/cjs/components/loading/types.d.ts +0 -53
  579. package/dist/cjs/components/nav-bar/types.d.ts +0 -69
  580. package/dist/cjs/components/notice-bar/types.d.ts +0 -29
  581. package/dist/cjs/components/notify/types.d.ts +0 -63
  582. package/dist/cjs/components/number-keyboard/types.d.ts +0 -40
  583. package/dist/cjs/components/pagination/types.d.ts +0 -75
  584. package/dist/cjs/components/password-input/types.d.ts +0 -65
  585. package/dist/cjs/components/picker/core.js +0 -41
  586. package/dist/cjs/components/picker/styles.js +0 -75
  587. package/dist/cjs/components/picker/types.d.ts +0 -70
  588. package/dist/cjs/components/picker/usePickerValue.js +0 -74
  589. package/dist/cjs/components/progress/types.d.ts +0 -53
  590. package/dist/cjs/components/pull-refresh/types.d.ts +0 -29
  591. package/dist/cjs/components/radio/types.d.ts +0 -96
  592. package/dist/cjs/components/rate/types.d.ts +0 -54
  593. package/dist/cjs/components/search/types.d.ts +0 -84
  594. package/dist/cjs/components/selector/types.d.ts +0 -80
  595. package/dist/cjs/components/share-sheet/types.d.ts +0 -30
  596. package/dist/cjs/components/sidebar/types.d.ts +0 -66
  597. package/dist/cjs/components/skeleton/types.d.ts +0 -46
  598. package/dist/cjs/components/slider/types.d.ts +0 -39
  599. package/dist/cjs/components/space/types.d.ts +0 -47
  600. package/dist/cjs/components/stepper/types.d.ts +0 -58
  601. package/dist/cjs/components/swipe-cell/SwipeCell.js +0 -399
  602. package/dist/cjs/components/swipe-cell/index.js +0 -9
  603. package/dist/cjs/components/swiper/types.d.ts +0 -83
  604. package/dist/cjs/components/switch/types.d.ts +0 -71
  605. package/dist/cjs/components/tabbar/types.d.ts +0 -51
  606. package/dist/cjs/components/tabs/types.d.ts +0 -71
  607. package/dist/cjs/components/tag/types.d.ts +0 -67
  608. package/dist/cjs/components/theme.d.ts +0 -113
  609. package/dist/cjs/components/typography/types.d.ts +0 -77
  610. package/dist/cjs/components/uploader/types.d.ts +0 -90
  611. package/dist/cjs/components/water-mark/types.d.ts +0 -60
  612. package/dist/cjs/index.d.ts +0 -16
  613. package/dist/client-CDqbgn-w.mjs +0 -31965
  614. package/dist/es/components/action-sheet/types.d.ts +0 -96
  615. package/dist/es/components/area/types.d.ts +0 -27
  616. package/dist/es/components/avatar/types.d.ts +0 -64
  617. package/dist/es/components/badge/types.d.ts +0 -61
  618. package/dist/es/components/button/types.d.ts +0 -145
  619. package/dist/es/components/calendar/types.d.ts +0 -115
  620. package/dist/es/components/cascader/types.d.ts +0 -159
  621. package/dist/es/components/cell/types.d.ts +0 -117
  622. package/dist/es/components/checkbox/types.d.ts +0 -108
  623. package/dist/es/components/circle/types.d.ts +0 -94
  624. package/dist/es/components/collapse/types.d.ts +0 -47
  625. package/dist/es/components/config-provider/locale/types.d.ts +0 -3
  626. package/dist/es/components/config-provider/types.d.ts +0 -10
  627. package/dist/es/components/count-down/types.d.ts +0 -33
  628. package/dist/es/components/datetime-picker/types.d.ts +0 -46
  629. package/dist/es/components/dialog/types.d.ts +0 -83
  630. package/dist/es/components/divider/types.d.ts +0 -50
  631. package/dist/es/components/dropdown-menu/types.d.ts +0 -89
  632. package/dist/es/components/empty/types.d.ts +0 -48
  633. package/dist/es/components/field/types.d.ts +0 -112
  634. package/dist/es/components/flex/types.d.ts +0 -42
  635. package/dist/es/components/form/types.d.ts +0 -80
  636. package/dist/es/components/grid/types.d.ts +0 -82
  637. package/dist/es/components/image/types.d.ts +0 -56
  638. package/dist/es/components/image-preview/types.d.ts +0 -67
  639. package/dist/es/components/index-bar/types.d.ts +0 -43
  640. package/dist/es/components/input/types.d.ts +0 -49
  641. package/dist/es/components/list/types.d.ts +0 -48
  642. package/dist/es/components/loading/types.d.ts +0 -53
  643. package/dist/es/components/nav-bar/types.d.ts +0 -69
  644. package/dist/es/components/notice-bar/types.d.ts +0 -29
  645. package/dist/es/components/notify/types.d.ts +0 -63
  646. package/dist/es/components/number-keyboard/types.d.ts +0 -40
  647. package/dist/es/components/pagination/types.d.ts +0 -75
  648. package/dist/es/components/password-input/types.d.ts +0 -65
  649. package/dist/es/components/picker/core.js +0 -31
  650. package/dist/es/components/picker/styles.js +0 -63
  651. package/dist/es/components/picker/types.d.ts +0 -70
  652. package/dist/es/components/picker/usePickerValue.js +0 -60
  653. package/dist/es/components/progress/types.d.ts +0 -53
  654. package/dist/es/components/pull-refresh/types.d.ts +0 -29
  655. package/dist/es/components/radio/types.d.ts +0 -96
  656. package/dist/es/components/rate/types.d.ts +0 -54
  657. package/dist/es/components/search/types.d.ts +0 -84
  658. package/dist/es/components/selector/types.d.ts +0 -80
  659. package/dist/es/components/share-sheet/types.d.ts +0 -30
  660. package/dist/es/components/sidebar/types.d.ts +0 -66
  661. package/dist/es/components/skeleton/types.d.ts +0 -46
  662. package/dist/es/components/slider/types.d.ts +0 -39
  663. package/dist/es/components/space/types.d.ts +0 -47
  664. package/dist/es/components/stepper/types.d.ts +0 -58
  665. package/dist/es/components/swipe-cell/SwipeCell.js +0 -380
  666. package/dist/es/components/swipe-cell/index.js +0 -2
  667. package/dist/es/components/swiper/types.d.ts +0 -83
  668. package/dist/es/components/switch/types.d.ts +0 -71
  669. package/dist/es/components/tabbar/types.d.ts +0 -51
  670. package/dist/es/components/tabs/types.d.ts +0 -71
  671. package/dist/es/components/tag/types.d.ts +0 -67
  672. package/dist/es/components/theme.d.ts +0 -113
  673. package/dist/es/components/typography/types.d.ts +0 -77
  674. package/dist/es/components/uploader/types.d.ts +0 -90
  675. package/dist/es/components/water-mark/types.d.ts +0 -60
  676. package/dist/es/index.d.ts +0 -16
  677. package/dist/react-native-system-ui.es.mjs +0 -1194
  678. package/dist/react-native-system-ui.js +0 -33977
  679. package/dist/react-native-system-ui.min.js +0 -1
@@ -1,15 +1,18 @@
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 from 'react';
3
- import { Animated, Easing, Pressable, SafeAreaView, StyleSheet, Text, View } from 'react-native';
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { Animated, Dimensions, Easing, Pressable, StyleSheet, Text, View } from 'react-native';
4
+ import { SafeAreaView } from '../safe-area-view';
4
5
  import { addPopStateListener, nativeDriverEnabled } from '../../platform';
5
6
  import { createPlatformShadow } from '../../utils/createPlatformShadow';
6
7
  import { isRenderable, isText } from '../../utils/validate';
7
8
  import { Cross } from 'react-native-system-icon';
8
9
  import Portal from '../portal/Portal';
9
10
  import { useOverlayStack } from '../overlay';
10
- import { useAriaOverlay } from '../../hooks';
11
+ import { useAriaOverlay, usePresenceAnimation } from '../../hooks';
11
12
  import { usePopupTokens } from './tokens';
12
13
  const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
14
+ const EASING_IN_CUBIC = Easing.bezier(0.55, 0.055, 0.675, 0.19);
15
+ const EASING_OUT_CIRC = Easing.bezier(0.075, 0.82, 0.165, 1.0);
13
16
  const placementConfig = {
14
17
  top: {
15
18
  container: {
@@ -48,9 +51,7 @@ const placementConfig = {
48
51
  }
49
52
  };
50
53
  const buildRadius = (round, placement, radius) => {
51
- if (!round) return {
52
- borderRadius: 0
53
- };
54
+ if (!round) return;
54
55
  switch (placement) {
55
56
  case 'top':
56
57
  return {
@@ -89,22 +90,21 @@ const renderHeaderNode = (node, options) => {
89
90
  style: options.wrapperStyle
90
91
  }, node);
91
92
  };
92
- const renderWithSafeArea = (children, opts) => {
93
+ const renderWithSafeArea = (children, opts, onSafeAreaTopLayout) => {
93
94
  if (opts.safeArea) {
94
- return /*#__PURE__*/React.createElement(SafeAreaView, {
95
- style: styles.safeAreaView
96
- }, children);
95
+ return /*#__PURE__*/React.createElement(SafeAreaView, null, children);
97
96
  }
98
97
  return /*#__PURE__*/React.createElement(React.Fragment, null, opts.safeAreaInsetTop ? /*#__PURE__*/React.createElement(SafeAreaView, {
99
- style: styles.safeInsetTop
100
- }) : null, children, opts.safeAreaInsetBottom ? /*#__PURE__*/React.createElement(SafeAreaView, {
101
- style: styles.safeInsetBottom
102
- }) : null);
98
+ edge: "top",
99
+ onLayout: onSafeAreaTopLayout,
100
+ pointerEvents: "none"
101
+ }) : null, children, opts.safeAreaInsetBottom && /*#__PURE__*/React.createElement(SafeAreaView, {
102
+ edge: "bottom",
103
+ pointerEvents: "none"
104
+ }));
103
105
  };
104
106
  const hiddenContentStyle = {
105
107
  opacity: 0,
106
- // @ts-ignore
107
- boxShadow: 'none',
108
108
  shadowOpacity: 0,
109
109
  shadowRadius: 0,
110
110
  elevation: 0
@@ -153,9 +153,7 @@ export const Popup = props => {
153
153
  const shouldTranslate = placement !== 'center';
154
154
  const safeAreaInsetBottom = safeAreaInsetBottomProp ?? false;
155
155
  const tokens = usePopupTokens(tokensOverride);
156
-
157
- // Dynamic styles derived from tokens
158
- const dynamicStyles = React.useMemo(() => {
156
+ const dynamicStyles = useMemo(() => {
159
157
  const shadow = createPlatformShadow({
160
158
  color: tokens.shadow.color,
161
159
  opacity: tokens.shadow.opacity,
@@ -163,77 +161,78 @@ export const Popup = props => {
163
161
  offsetY: tokens.shadow.offsetY,
164
162
  elevation: tokens.shadow.elevation
165
163
  });
164
+ const popup = {
165
+ backgroundColor: tokens.colors.background,
166
+ padding: tokens.spacing.padding,
167
+ ...shadow
168
+ };
169
+ const title = {
170
+ color: tokens.colors.title,
171
+ fontSize: tokens.typography.titleSize,
172
+ fontWeight: tokens.typography.titleWeight,
173
+ marginHorizontal: tokens.spacing.descriptionHorizontal,
174
+ textAlign: 'center'
175
+ };
176
+ const titleWrapper = {
177
+ marginTop: tokens.spacing.titleTop,
178
+ marginBottom: tokens.spacing.titleBottom,
179
+ marginHorizontal: tokens.spacing.descriptionHorizontal,
180
+ alignItems: 'center'
181
+ };
182
+ const description = {
183
+ color: tokens.colors.description,
184
+ fontSize: tokens.typography.descriptionSize,
185
+ lineHeight: tokens.typography.descriptionLineHeight
186
+ };
187
+ const descriptionWrapper = {
188
+ marginHorizontal: tokens.spacing.descriptionHorizontal,
189
+ marginBottom: tokens.spacing.descriptionBottom
190
+ };
191
+ const closeIconBase = {
192
+ minWidth: tokens.spacing.closeIconSize,
193
+ minHeight: tokens.spacing.closeIconSize,
194
+ padding: 6
195
+ };
196
+ const closeIconDefault = {
197
+ width: tokens.spacing.closeIconSize,
198
+ height: tokens.spacing.closeIconSize
199
+ };
200
+ const popupSide = {
201
+ width: tokens.layout.sideWidth,
202
+ maxWidth: tokens.layout.maxWidth
203
+ };
204
+ const popupCenter = {
205
+ minWidth: tokens.layout.minWidth,
206
+ maxWidth: tokens.layout.centerMaxWidth
207
+ };
166
208
  return {
167
- popup: {
168
- backgroundColor: tokens.colors.background,
169
- padding: tokens.spacing.padding,
170
- ...shadow
171
- },
172
- title: {
173
- color: tokens.colors.title,
174
- fontSize: tokens.typography.titleSize,
175
- fontWeight: tokens.typography.titleWeight
176
- },
177
- titleWrapper: {
178
- marginTop: tokens.spacing.titleTop,
179
- marginBottom: tokens.spacing.titleBottom
180
- },
181
- description: {
182
- color: tokens.colors.description,
183
- fontSize: tokens.typography.descriptionSize,
184
- lineHeight: tokens.typography.descriptionLineHeight
185
- },
186
- descriptionWrapper: {
187
- marginHorizontal: tokens.spacing.descriptionHorizontal,
188
- marginBottom: tokens.spacing.descriptionBottom
189
- },
190
- closeIconBase: {
191
- minWidth: tokens.spacing.closeIconSize,
192
- minHeight: tokens.spacing.closeIconSize,
193
- padding: 6 // keep fixed or add token if needed, usually fixed for hitSlop area
194
- },
195
- closeIconDefault: {
196
- width: tokens.spacing.closeIconSize,
197
- height: tokens.spacing.closeIconSize
198
- },
199
- popupSide: {
200
- width: tokens.layout.sideWidth,
201
- maxWidth: tokens.layout.maxWidth
202
- },
203
- popupCenter: {
204
- minWidth: tokens.layout.minWidth,
205
- maxWidth: tokens.layout.centerMaxWidth
206
- }
209
+ popup,
210
+ title,
211
+ titleWrapper,
212
+ description,
213
+ descriptionWrapper,
214
+ closeIconBase,
215
+ closeIconDefault,
216
+ popupSide,
217
+ popupCenter
207
218
  };
208
219
  }, [tokens]);
209
- const [mounted, setMounted] = React.useState(visible);
210
- const [interactionVisible, setInteractionVisible] = React.useState(visible);
211
- const [contentDistance, setContentDistance] = React.useState(0);
212
- const progress = React.useRef(new Animated.Value(0)).current;
213
- const animatingRef = React.useRef(false);
214
- const animationRef = React.useRef(null);
215
- const distanceRef = React.useRef(0);
216
- const pendingDistanceRef = React.useRef(null);
217
- const pendingShowRef = React.useRef(false);
218
- const openFallbackTimerRef = React.useRef(null);
219
- const prevVisible = React.useRef(visible);
220
+ const [mounted, setMounted] = useState(visible);
221
+ const [interactionVisible, setInteractionVisible] = useState(visible);
222
+ const isOpen = visible || interactionVisible;
223
+ const canCloseOnOverlay = shouldCloseOnOverlay && (onClose || beforeClose);
224
+ const progress = useRef(new Animated.Value(0)).current;
225
+ const animationRef = useRef(null);
226
+ const animationSeqRef = useRef(0);
227
+ const prevVisible = useRef(visible);
228
+ const closingRef = useRef(false);
220
229
  const isVertical = placement === 'top' || placement === 'bottom';
221
230
  const isHorizontal = placement === 'left' || placement === 'right';
222
231
  const direction = placement === 'top' || placement === 'left' ? -1 : 1;
223
- const clearOpenFallbackTimer = React.useCallback(() => {
224
- if (openFallbackTimerRef.current) {
225
- clearTimeout(openFallbackTimerRef.current);
226
- openFallbackTimerRef.current = null;
227
- }
228
- }, []);
229
- const runAnimation = React.useCallback(show => {
230
- animatingRef.current = true;
231
- if (show) {
232
- setMounted(true);
233
- setInteractionVisible(true);
234
- }
235
- // 对齐 react-vant:进入使用 ease-out,退出使用 ease-in(近似 CSS cubic-bezier 0.25,0.1,0.25,1 / 0.42,0,1,1)
236
- const easing = show ? Easing.out(Easing.cubic) : Easing.in(Easing.cubic);
232
+ const runAnimation = useCallback(show => {
233
+ animationSeqRef.current += 1;
234
+ const currentSeq = animationSeqRef.current;
235
+ const easing = show ? EASING_OUT_CIRC : EASING_IN_CUBIC;
237
236
  animationRef.current?.stop();
238
237
  const animation = Animated.timing(progress, {
239
238
  toValue: show ? 1 : 0,
@@ -245,14 +244,7 @@ export const Popup = props => {
245
244
  animation.start(({
246
245
  finished
247
246
  }) => {
248
- if (!finished) return;
249
- animatingRef.current = false;
250
- const pendingDistance = pendingDistanceRef.current;
251
- if (pendingDistance != null) {
252
- pendingDistanceRef.current = null;
253
- distanceRef.current = pendingDistance;
254
- setContentDistance(pendingDistance);
255
- }
247
+ if (!finished || currentSeq !== animationSeqRef.current) return;
256
248
  if (show) {
257
249
  onOpened?.();
258
250
  } else {
@@ -264,51 +256,41 @@ export const Popup = props => {
264
256
  }
265
257
  });
266
258
  }, [destroyOnClose, duration, onClosed, onOpened, progress]);
267
- React.useEffect(() => {
259
+ useEffect(() => {
268
260
  if (visible) {
269
261
  setMounted(true);
270
262
  setInteractionVisible(true);
271
- clearOpenFallbackTimer();
272
- const needWaitForLayout = shouldTranslate && distanceRef.current === 0;
273
- if (needWaitForLayout) {
274
- pendingShowRef.current = true;
275
- openFallbackTimerRef.current = setTimeout(() => {
276
- if (pendingShowRef.current && visible) {
277
- pendingShowRef.current = false;
278
- runAnimation(true);
279
- }
280
- }, 50);
281
- return;
282
- }
283
- pendingShowRef.current = false;
284
263
  runAnimation(true);
285
264
  } else {
286
- pendingShowRef.current = false;
287
- clearOpenFallbackTimer();
288
265
  if (!prevVisible.current) return;
289
266
  runAnimation(false);
290
267
  }
291
- }, [clearOpenFallbackTimer, runAnimation, shouldTranslate, visible]);
292
- React.useEffect(() => {
268
+ }, [runAnimation, visible]);
269
+ useEffect(() => {
293
270
  if (visible && !prevVisible.current) {
294
271
  onOpen?.();
295
272
  }
296
273
  prevVisible.current = visible;
297
274
  }, [onOpen, visible]);
298
- React.useEffect(() => () => {
275
+ useEffect(() => () => {
299
276
  animationRef.current?.stop();
300
- clearOpenFallbackTimer();
301
- }, [clearOpenFallbackTimer]);
302
- const requestClose = React.useCallback(async reason => {
303
- if (beforeClose) {
304
- const result = await beforeClose(reason);
305
- if (result === false) {
306
- return;
277
+ }, []);
278
+ const requestClose = useCallback(async reason => {
279
+ if (closingRef.current) return;
280
+ closingRef.current = true;
281
+ try {
282
+ if (beforeClose) {
283
+ const result = await beforeClose(reason);
284
+ if (result === false) {
285
+ return;
286
+ }
307
287
  }
288
+ onClose?.();
289
+ } finally {
290
+ closingRef.current = false;
308
291
  }
309
- onClose?.();
310
292
  }, [beforeClose, onClose]);
311
- React.useEffect(() => {
293
+ useEffect(() => {
312
294
  if (!closeOnPopstate) {
313
295
  return;
314
296
  }
@@ -318,7 +300,7 @@ export const Popup = props => {
318
300
  };
319
301
  return addPopStateListener(handler);
320
302
  }, [closeOnPopstate, requestClose, visible]);
321
- const handleStackClose = React.useCallback(() => {
303
+ const handleStackClose = useCallback(() => {
322
304
  requestClose('close');
323
305
  }, [requestClose]);
324
306
  const {
@@ -347,80 +329,88 @@ export const Popup = props => {
347
329
  onLayout: overlayOnLayout,
348
330
  ...overlayRestProps
349
331
  } = overlayProps;
350
- const contentInteractionProps = React.useMemo(() => {
351
- if (!stopPropagation) {
352
- return overlayRestProps;
353
- }
354
- return {
355
- ...overlayRestProps,
356
- onStartShouldSetResponder: () => true
357
- };
358
- }, [overlayRestProps, stopPropagation]);
332
+ const stopPropagationResponder = useCallback(() => true, []);
333
+ const contentInteractionProps = stopPropagation ? {
334
+ ...overlayRestProps,
335
+ onStartShouldSetResponder: stopPropagationResponder
336
+ } : overlayRestProps;
359
337
  const config = placementConfig[placement];
360
- const distance = distanceRef.current || contentDistance;
361
- const translateStyle = shouldTranslate ? {
362
- transform: [config.axis === 'y' ? {
338
+ const radiusStyle = useMemo(() => buildRadius(round, placement, tokens.radius.round), [placement, round, tokens.radius.round]);
339
+ const {
340
+ animated: overlayOpacity
341
+ } = usePresenceAnimation(visible, {
342
+ duration
343
+ });
344
+ const translateDistance = useMemo(() => {
345
+ if (placement === 'left' || placement === 'right') {
346
+ return Dimensions.get('window').width;
347
+ }
348
+ if (placement === 'top' || placement === 'bottom') {
349
+ return Dimensions.get('window').height;
350
+ }
351
+ return 0;
352
+ }, [placement]);
353
+ const translateTransform = useMemo(() => {
354
+ if (!shouldTranslate) return null;
355
+ const outputRange = [translateDistance * direction, 0];
356
+ return config.axis === 'y' ? {
363
357
  translateY: progress.interpolate({
364
358
  inputRange: [0, 1],
365
- outputRange: [distance * direction, 0]
359
+ outputRange
366
360
  })
367
361
  } : {
368
362
  translateX: progress.interpolate({
369
363
  inputRange: [0, 1],
370
- outputRange: [distance * direction, 0]
364
+ outputRange
371
365
  })
372
- }]
373
- } : {
374
- transform: []
375
- };
376
- const overlayOpacity = progress.interpolate({
377
- inputRange: [0, 1],
378
- outputRange: [0, 1]
379
- });
380
- const animatedContentStyle = React.useMemo(() => {
381
- const transform = contentAnimationStyle?.transform;
382
- const baseTransform = Array.isArray(translateStyle.transform) ? translateStyle.transform : [];
383
- const mergedTransform = transform && Array.isArray(transform) ? [...baseTransform, ...transform] : baseTransform;
384
- return {
385
- ...translateStyle,
366
+ };
367
+ }, [config.axis, direction, progress, shouldTranslate, translateDistance]);
368
+ const baseTransform = useMemo(() => translateTransform ? [translateTransform] : [], [translateTransform]);
369
+ const animatedContentStyle = useMemo(() => {
370
+ const extraTransform = contentAnimationStyle?.transform;
371
+ const transform = Array.isArray(extraTransform) ? [...baseTransform, ...extraTransform] : baseTransform;
372
+ const baseStyle = {
386
373
  ...contentAnimationStyle,
387
- transform: mergedTransform,
388
- opacity: progress
374
+ transform
389
375
  };
390
- }, [translateStyle, progress, contentAnimationStyle]);
391
- const handleContentLayout = React.useCallback(event => {
392
- overlayOnLayout?.(event);
393
- const {
394
- width,
395
- height
396
- } = event.nativeEvent.layout;
397
- const nextDistance = isVertical ? height : width;
398
- if (animatingRef.current) {
399
- pendingDistanceRef.current = nextDistance;
400
- return;
376
+ if (placement === 'center') {
377
+ return {
378
+ ...baseStyle,
379
+ opacity: progress
380
+ };
401
381
  }
402
- distanceRef.current = nextDistance;
403
- setContentDistance(prev => Math.abs(prev - nextDistance) < 0.5 ? prev : nextDistance);
404
- if (pendingShowRef.current && visible) {
405
- pendingShowRef.current = false;
406
- clearOpenFallbackTimer();
407
- runAnimation(true);
382
+ if (contentAnimationStyle?.opacity == null) {
383
+ return {
384
+ ...baseStyle,
385
+ opacity: 1
386
+ };
408
387
  }
409
- }, [clearOpenFallbackTimer, isVertical, overlayOnLayout, runAnimation, visible]);
388
+ return baseStyle;
389
+ }, [baseTransform, contentAnimationStyle, placement, progress]);
390
+ const handleContentLayout = useCallback(event => {
391
+ overlayOnLayout?.(event);
392
+ }, [overlayOnLayout]);
393
+ const [safeAreaTopHeight, setSafeAreaTopHeight] = useState(0);
394
+ const handleSafeAreaTopLayout = useCallback(event => {
395
+ setSafeAreaTopHeight(event.nativeEvent.layout.height);
396
+ }, []);
410
397
  const shouldRender = mounted || visible;
411
398
  if (!shouldRender) return null;
412
- const hidden = !visible && !interactionVisible;
399
+ const hidden = !isOpen;
413
400
  const hasCustomCloseIcon = closeIcon != null;
414
401
  const hasHeader = isRenderable(title) || isRenderable(description);
402
+ const headerPadding = tokens.spacing.closeIconRight + tokens.spacing.closeIconSize;
415
403
  const headerPaddingStyle = closeable && closeIconPosition.startsWith('top-') ? closeIconPosition.endsWith('right') ? {
416
- paddingRight: 44
404
+ paddingRight: headerPadding
417
405
  } : {
418
- paddingLeft: 44
406
+ paddingLeft: headerPadding
419
407
  } : undefined;
420
- const closeIconVerticalStyle = closeIconPosition.includes('bottom') ? {
421
- bottom: tokens.spacing.closeIconTop
408
+ const closeIconTopValue = closeIconPosition.includes('top') ? tokens.spacing.closeIconTop + safeAreaTopHeight : undefined;
409
+ const closeIconBottomValue = closeIconPosition.includes('bottom') ? tokens.spacing.closeIconTop : undefined;
410
+ const closeIconVerticalStyle = closeIconBottomValue !== undefined ? {
411
+ bottom: closeIconBottomValue
422
412
  } : {
423
- top: tokens.spacing.closeIconTop
413
+ top: closeIconTopValue
424
414
  };
425
415
  const closeIconHorizontalStyle = closeIconPosition.endsWith('left') ? {
426
416
  left: tokens.spacing.closeIconRight
@@ -431,18 +421,13 @@ export const Popup = props => {
431
421
  style: [styles.header, headerPaddingStyle]
432
422
  }, renderHeaderNode(title, {
433
423
  textStyle: [styles.title, dynamicStyles.title],
434
- wrapperStyle: [styles.titleWrapper, dynamicStyles.titleWrapper]
424
+ wrapperStyle: dynamicStyles.titleWrapper
435
425
  }), renderHeaderNode(description, {
436
426
  textStyle: [styles.description, dynamicStyles.description],
437
- wrapperStyle: [styles.descriptionWrapper, dynamicStyles.descriptionWrapper]
427
+ wrapperStyle: dynamicStyles.descriptionWrapper
438
428
  })) : null;
439
429
  const contentBody = hasHeader ? /*#__PURE__*/React.createElement(React.Fragment, null, headerNode, children) : children;
440
- const content = /*#__PURE__*/React.createElement(Animated.View, _extends({
441
- ref: overlayRef
442
- }, contentInteractionProps, {
443
- onLayout: handleContentLayout,
444
- style: [dynamicStyles.popup, placement === 'center' ? dynamicStyles.popupCenter : null, isVertical ? styles.popupVertical : null, isHorizontal ? dynamicStyles.popupSide : null, buildRadius(round, placement, tokens.radius.round), animatedContentStyle, style, hidden ? hiddenContentStyle : null]
445
- }, rest), closeable ? /*#__PURE__*/React.createElement(Pressable, {
430
+ const closeIconNode = closeable ? /*#__PURE__*/React.createElement(Pressable, {
446
431
  style: [styles.closeIconBase, dynamicStyles.closeIconBase, closeIconVerticalStyle, closeIconHorizontalStyle, !hasCustomCloseIcon ? dynamicStyles.closeIconDefault : null],
447
432
  hitSlop: 8,
448
433
  onPress: () => requestClose('close-icon')
@@ -450,31 +435,37 @@ export const Popup = props => {
450
435
  size: 22,
451
436
  fill: tokens.colors.closeIcon,
452
437
  color: tokens.colors.closeIcon
453
- })) : null, renderWithSafeArea(contentBody, {
438
+ })) : null;
439
+ const content = /*#__PURE__*/React.createElement(Animated.View, _extends({
440
+ ref: overlayRef
441
+ }, contentInteractionProps, {
442
+ onLayout: handleContentLayout,
443
+ style: [dynamicStyles.popup, placement === 'center' ? dynamicStyles.popupCenter : null, isVertical ? styles.popupVertical : null, isHorizontal ? dynamicStyles.popupSide : null, radiusStyle, animatedContentStyle, style, hidden ? hiddenContentStyle : null]
444
+ }, rest), closeIconNode, renderWithSafeArea(contentBody, {
454
445
  safeArea,
455
446
  safeAreaInsetTop,
456
447
  safeAreaInsetBottom
457
- }));
448
+ }, safeAreaInsetTop ? handleSafeAreaTopLayout : undefined));
458
449
  const resolvedZIndex = stackZIndex ?? zIndex;
459
450
  return /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(View, {
460
451
  style: [styles.portalRoot, resolvedZIndex ? {
461
452
  zIndex: resolvedZIndex
462
- } : null],
453
+ } : undefined],
463
454
  pointerEvents: "box-none"
464
455
  }, /*#__PURE__*/React.createElement(View, {
465
456
  style: [styles.container, config.container],
466
- pointerEvents: visible || interactionVisible ? 'auto' : 'none',
457
+ pointerEvents: isOpen ? 'auto' : 'none',
467
458
  accessibilityViewIsModal: visible,
468
459
  accessibilityLiveRegion: "polite",
469
460
  onAccessibilityEscape: () => requestClose('close')
470
- }, overlay && (visible || interactionVisible) ? /*#__PURE__*/React.createElement(AnimatedPressable, _extends({
461
+ }, overlay && isOpen ? /*#__PURE__*/React.createElement(AnimatedPressable, _extends({
471
462
  testID: overlayTestID,
472
463
  style: [styles.overlay, {
473
464
  backgroundColor: tokens.colors.overlay,
474
465
  opacity: overlayOpacity
475
466
  }, overlayStyle],
476
- pointerEvents: visible || interactionVisible ? 'auto' : 'none'
477
- }, shouldCloseOnOverlay && (onClose || beforeClose) ? {
467
+ pointerEvents: isOpen ? 'auto' : 'none'
468
+ }, canCloseOnOverlay ? {
478
469
  accessibilityRole: 'button',
479
470
  accessibilityLabel: overlayAccessibilityLabel,
480
471
  accessibilityHint: '双击即可关闭弹层'
@@ -487,12 +478,12 @@ export const Popup = props => {
487
478
  requestClose('overlay');
488
479
  }
489
480
  }
490
- })) : null, !overlay && lockScroll && (visible || interactionVisible) ? /*#__PURE__*/React.createElement(View, {
481
+ })) : null, !overlay && lockScroll && isOpen ? /*#__PURE__*/React.createElement(View, {
491
482
  style: styles.lockLayer,
492
483
  pointerEvents: "auto",
493
484
  onStartShouldSetResponder: () => true,
494
485
  onMoveShouldSetResponder: () => true
495
- }) : null, visible || mounted ? content : null)));
486
+ }) : null, content)));
496
487
  };
497
488
  const styles = StyleSheet.create({
498
489
  portalRoot: {
@@ -509,22 +500,10 @@ const styles = StyleSheet.create({
509
500
  header: {
510
501
  width: '100%'
511
502
  },
512
- titleWrapper: {
513
- // Moved to dynamicStyles
514
- marginHorizontal: 12,
515
- alignItems: 'center'
516
- },
517
503
  title: {
518
- // Moved to dynamicStyles
519
- marginHorizontal: 12,
520
- textAlign: 'center',
521
504
  includeFontPadding: false
522
505
  },
523
- descriptionWrapper: {
524
- // Moved to dynamicStyles
525
- },
526
506
  description: {
527
- // Moved to dynamicStyles
528
507
  includeFontPadding: false
529
508
  },
530
509
  popupVertical: {
@@ -532,21 +511,12 @@ const styles = StyleSheet.create({
532
511
  },
533
512
  closeIconBase: {
534
513
  position: 'absolute',
535
- zIndex: 1,
514
+ zIndex: 999,
536
515
  alignItems: 'center',
537
516
  justifyContent: 'center'
538
517
  },
539
518
  lockLayer: {
540
519
  ...StyleSheet.absoluteFillObject
541
- },
542
- safeAreaView: {
543
- width: '100%'
544
- },
545
- safeInsetTop: {
546
- width: '100%'
547
- },
548
- safeInsetBottom: {
549
- width: '100%'
550
520
  }
551
521
  });
552
522
  Popup.displayName = 'Popup';
@@ -1,23 +1,18 @@
1
- import React from 'react';
1
+ import { useContext, useLayoutEffect, useRef } from 'react';
2
2
  import { PortalContext } from './PortalContext';
3
3
  import { PortalHost, ensureGlobalPortalHost, portalManager as globalManager, portalStore } from './PortalHost';
4
- const usePortalManager = () => React.useContext(PortalContext) ?? globalManager;
4
+ const usePortalManager = () => useContext(PortalContext) ?? globalManager;
5
5
  const PortalComponent = ({
6
6
  children
7
7
  }) => {
8
8
  const manager = usePortalManager();
9
- if (manager === globalManager && typeof document === 'undefined') {
10
- void ensureGlobalPortalHost();
11
- }
12
- const keyRef = React.useRef(null);
13
- const skipNextUpdateRef = React.useRef(false);
14
- React.useLayoutEffect(() => {
15
- if (manager === globalManager && typeof document !== 'undefined') {
9
+ const keyRef = useRef(null);
10
+ useLayoutEffect(() => {
11
+ if (manager === globalManager) {
16
12
  void ensureGlobalPortalHost();
17
13
  }
18
14
  const key = manager.mount(children ?? null);
19
15
  keyRef.current = key;
20
- skipNextUpdateRef.current = true;
21
16
  return () => {
22
17
  if (keyRef.current !== null) {
23
18
  manager.unmount(keyRef.current);
@@ -25,11 +20,7 @@ const PortalComponent = ({
25
20
  }
26
21
  };
27
22
  }, [manager]);
28
- React.useLayoutEffect(() => {
29
- if (skipNextUpdateRef.current) {
30
- skipNextUpdateRef.current = false;
31
- return;
32
- }
23
+ useLayoutEffect(() => {
33
24
  if (keyRef.current === null) return;
34
25
  manager.update(keyRef.current, children ?? null);
35
26
  }, [children, manager]);