react-native-system-ui 0.0.7 → 1.0.1

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 (411) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +128 -142
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +57 -70
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +38 -36
  7. package/dist/cjs/components/badge/Badge.js +68 -73
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +135 -176
  10. package/dist/cjs/components/button/ButtonGroup.js +11 -45
  11. package/dist/cjs/components/button/tokens.js +1 -8
  12. package/dist/cjs/components/calendar/Calendar.js +212 -223
  13. package/dist/cjs/components/calendar/tokens.js +3 -3
  14. package/dist/cjs/components/cascader/Cascader.js +257 -267
  15. package/dist/cjs/components/cascader/tokens.js +2 -2
  16. package/dist/cjs/components/cascader/useCascaderExtend.js +25 -29
  17. package/dist/cjs/components/cell/Cell.js +94 -104
  18. package/dist/cjs/components/cell/CellGroup.js +37 -49
  19. package/dist/cjs/components/checkbox/Checkbox.js +140 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +21 -51
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +87 -74
  23. package/dist/cjs/components/collapse/Collapse.js +88 -104
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +17 -4
  25. package/dist/cjs/components/config-provider/DirectionContext.js +15 -0
  26. package/dist/cjs/components/config-provider/index.js +7 -0
  27. package/dist/cjs/components/config-provider/locale/en-US.js +32 -0
  28. package/dist/cjs/components/config-provider/locale/zh-CN.js +32 -0
  29. package/dist/cjs/components/config-provider/useDirection.js +16 -0
  30. package/dist/cjs/components/count-down/CountDown.js +32 -27
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +80 -104
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +159 -121
  34. package/dist/cjs/components/dialog/imperative.js +24 -43
  35. package/dist/cjs/components/dialog/tokens.js +1 -0
  36. package/dist/cjs/components/divider/Divider.js +57 -62
  37. package/dist/cjs/components/empty/Empty.js +53 -52
  38. package/dist/cjs/components/error-boundary/ErrorBoundary.js +74 -0
  39. package/dist/cjs/components/error-boundary/index.js +19 -0
  40. package/dist/cjs/components/field/Field.js +109 -106
  41. package/dist/cjs/components/flex/Flex.js +32 -32
  42. package/dist/cjs/components/flex/FlexItem.js +27 -27
  43. package/dist/cjs/components/form/Form.js +178 -196
  44. package/dist/cjs/components/form/FormItem.js +87 -109
  45. package/dist/cjs/components/form/FormList.js +57 -45
  46. package/dist/cjs/components/form/tokens.js +6 -3
  47. package/dist/cjs/components/form/utils.js +15 -34
  48. package/dist/cjs/components/grid/Grid.js +44 -43
  49. package/dist/cjs/components/grid/GridItem.js +92 -86
  50. package/dist/cjs/components/image/Image.js +76 -79
  51. package/dist/cjs/components/image/tokens.js +5 -3
  52. package/dist/cjs/components/image-preview/ImagePreview.js +125 -113
  53. package/dist/cjs/components/image-preview/imperative.js +4 -13
  54. package/dist/cjs/components/image-preview/tokens.js +3 -1
  55. package/dist/cjs/components/index.js +13 -0
  56. package/dist/cjs/components/input/Input.js +40 -35
  57. package/dist/cjs/components/loading/Loading.js +32 -33
  58. package/dist/cjs/components/nav-bar/NavBar.js +88 -100
  59. package/dist/cjs/components/nav-bar/tokens.js +4 -10
  60. package/dist/cjs/components/notice-bar/NoticeBar.js +81 -80
  61. package/dist/cjs/components/notice-bar/tokens.js +3 -1
  62. package/dist/cjs/components/notify/Notify.js +89 -84
  63. package/dist/cjs/components/notify/imperative.js +32 -55
  64. package/dist/cjs/components/notify/tokens.js +2 -11
  65. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +277 -283
  66. package/dist/cjs/components/number-keyboard/tokens.js +7 -1
  67. package/dist/cjs/components/overlay/Overlay.js +37 -52
  68. package/dist/cjs/components/overlay/tokens.js +5 -3
  69. package/dist/cjs/components/password-input/PasswordInput.js +114 -95
  70. package/dist/cjs/components/picker/Picker.js +465 -454
  71. package/dist/cjs/components/picker/tokens.js +1 -1
  72. package/dist/cjs/components/popup/Popup.js +269 -299
  73. package/dist/cjs/components/popup/tokens.js +1 -0
  74. package/dist/cjs/components/portal/Portal.js +12 -30
  75. package/dist/cjs/components/portal/PortalHost.js +151 -234
  76. package/dist/cjs/components/progress/Progress.js +103 -101
  77. package/dist/cjs/components/progress/tokens.js +1 -0
  78. package/dist/cjs/components/radio/Radio.js +98 -91
  79. package/dist/cjs/components/radio/RadioGroup.js +13 -45
  80. package/dist/cjs/components/radio/tokens.js +7 -10
  81. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  82. package/dist/cjs/components/search/Search.js +65 -57
  83. package/dist/cjs/components/selector/Selector.js +21 -27
  84. package/dist/cjs/components/share-sheet/ShareSheet.js +165 -161
  85. package/dist/cjs/components/share-sheet/tokens.js +3 -1
  86. package/dist/cjs/components/sidebar/Sidebar.js +51 -51
  87. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  88. package/dist/cjs/components/sidebar/SidebarItem.js +19 -21
  89. package/dist/cjs/components/sidebar/tokens.js +4 -4
  90. package/dist/cjs/components/skeleton/Skeleton.js +71 -77
  91. package/dist/cjs/components/skeleton/tokens.js +1 -2
  92. package/dist/cjs/components/slider/Slider.js +156 -135
  93. package/dist/cjs/components/space/Space.js +57 -76
  94. package/dist/cjs/components/space/tokens.js +7 -1
  95. package/dist/cjs/components/stepper/Stepper.js +182 -158
  96. package/dist/cjs/components/stepper/tokens.js +1 -0
  97. package/dist/cjs/components/swiper/Swiper.js +256 -255
  98. package/dist/cjs/components/swiper/SwiperPagIndicator.js +26 -27
  99. package/dist/cjs/components/swiper/tokens.js +10 -3
  100. package/dist/cjs/components/switch/Switch.js +23 -25
  101. package/dist/cjs/components/tabbar/Tabbar.js +48 -40
  102. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  103. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  104. package/dist/cjs/components/tabs/Tabs.js +402 -439
  105. package/dist/cjs/components/tabs/tokens.js +3 -1
  106. package/dist/cjs/components/tag/Tag.js +68 -59
  107. package/dist/cjs/components/toast/Toast.js +91 -90
  108. package/dist/cjs/components/toast/imperative.js +16 -41
  109. package/dist/cjs/components/toast/tokens.js +1 -0
  110. package/dist/cjs/components/typography/Typography.js +25 -25
  111. package/dist/cjs/components/water-mark/WaterMark.js +80 -78
  112. package/dist/cjs/design-system/Text.js +38 -0
  113. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  114. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  115. package/dist/cjs/design-system/index.js +7 -0
  116. package/dist/cjs/design-system/mergeTokensOverride.js +1 -4
  117. package/dist/cjs/design-system/presets.js +2 -3
  118. package/dist/cjs/design-system/tokens.js +2 -11
  119. package/dist/cjs/hooks/animation/index.js +25 -0
  120. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  121. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  122. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  123. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  124. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  125. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  126. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  127. package/dist/cjs/hooks/index.js +12 -0
  128. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  129. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  130. package/dist/cjs/hooks/useControllableValue.js +13 -24
  131. package/dist/cjs/hooks/useCountDown.js +30 -38
  132. package/dist/cjs/hooks/useHairline.js +17 -29
  133. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  134. package/dist/cjs/index.js +67 -1
  135. package/dist/cjs/platform/animation.js +10 -2
  136. package/dist/cjs/platform/measure.js +21 -37
  137. package/dist/cjs/utils/color.js +20 -39
  138. package/dist/cjs/utils/compare.js +7 -12
  139. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  140. package/dist/cjs/utils/date.js +20 -50
  141. package/dist/cjs/utils/deepMerge.js +16 -26
  142. package/dist/cjs/utils/hairline.js +75 -71
  143. package/dist/cjs/utils/index.js +22 -0
  144. package/dist/cjs/utils/number.js +21 -29
  145. package/dist/cjs/utils/render.js +21 -0
  146. package/dist/cjs/utils/rtl.js +25 -0
  147. package/dist/cjs/utils/string.js +8 -25
  148. package/dist/cjs/utils/validate.js +2 -4
  149. package/dist/es/components/action-sheet/ActionSheet.js +130 -144
  150. package/dist/es/components/action-sheet/tokens.js +16 -27
  151. package/dist/es/components/area/Area.js +58 -71
  152. package/dist/es/components/area/tokens.js +6 -3
  153. package/dist/es/components/avatar/Avatar.js +38 -36
  154. package/dist/es/components/avatar/index.js +1 -2
  155. package/dist/es/components/badge/Badge.js +70 -75
  156. package/dist/es/components/badge/tokens.js +6 -8
  157. package/dist/es/components/button/Button.js +136 -177
  158. package/dist/es/components/button/ButtonGroup.js +12 -46
  159. package/dist/es/components/button/tokens.js +2 -3
  160. package/dist/es/components/calendar/Calendar.js +214 -225
  161. package/dist/es/components/calendar/tokens.js +3 -3
  162. package/dist/es/components/cascader/Cascader.js +260 -270
  163. package/dist/es/components/cascader/tokens.js +2 -2
  164. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  165. package/dist/es/components/cell/Cell.js +95 -105
  166. package/dist/es/components/cell/CellGroup.js +37 -48
  167. package/dist/es/components/checkbox/Checkbox.js +141 -133
  168. package/dist/es/components/checkbox/CheckboxGroup.js +22 -52
  169. package/dist/es/components/checkbox/tokens.js +7 -10
  170. package/dist/es/components/circle/Circle.js +87 -73
  171. package/dist/es/components/collapse/Collapse.js +90 -105
  172. package/dist/es/components/config-provider/ConfigProvider.js +11 -4
  173. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  174. package/dist/es/components/config-provider/index.js +1 -0
  175. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  176. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  177. package/dist/es/components/config-provider/useDirection.js +3 -0
  178. package/dist/es/components/count-down/CountDown.js +35 -30
  179. package/dist/es/components/datetime-picker/DatetimePicker.js +80 -104
  180. package/dist/es/components/datetime-picker/tokens.js +14 -3
  181. package/dist/es/components/dialog/Dialog.js +160 -121
  182. package/dist/es/components/dialog/imperative.js +24 -43
  183. package/dist/es/components/dialog/tokens.js +1 -0
  184. package/dist/es/components/divider/Divider.js +59 -63
  185. package/dist/es/components/empty/Empty.js +54 -52
  186. package/dist/es/components/error-boundary/ErrorBoundary.js +62 -0
  187. package/dist/es/components/error-boundary/index.js +1 -0
  188. package/dist/es/components/field/Field.js +109 -106
  189. package/dist/es/components/flex/Flex.js +32 -31
  190. package/dist/es/components/flex/FlexItem.js +28 -27
  191. package/dist/es/components/form/Form.js +179 -197
  192. package/dist/es/components/form/FormItem.js +86 -107
  193. package/dist/es/components/form/FormList.js +57 -45
  194. package/dist/es/components/form/tokens.js +6 -3
  195. package/dist/es/components/form/utils.js +15 -34
  196. package/dist/es/components/grid/Grid.js +44 -42
  197. package/dist/es/components/grid/GridItem.js +94 -87
  198. package/dist/es/components/image/Image.js +79 -82
  199. package/dist/es/components/image/tokens.js +5 -3
  200. package/dist/es/components/image-preview/ImagePreview.js +125 -113
  201. package/dist/es/components/image-preview/imperative.js +4 -13
  202. package/dist/es/components/image-preview/tokens.js +3 -1
  203. package/dist/es/components/index.js +3 -1
  204. package/dist/es/components/input/Input.js +41 -36
  205. package/dist/es/components/loading/Loading.js +34 -34
  206. package/dist/es/components/nav-bar/NavBar.js +88 -100
  207. package/dist/es/components/nav-bar/tokens.js +4 -4
  208. package/dist/es/components/notice-bar/NoticeBar.js +81 -79
  209. package/dist/es/components/notice-bar/tokens.js +3 -1
  210. package/dist/es/components/notify/Notify.js +93 -87
  211. package/dist/es/components/notify/imperative.js +33 -56
  212. package/dist/es/components/notify/tokens.js +2 -5
  213. package/dist/es/components/number-keyboard/NumberKeyboard.js +277 -283
  214. package/dist/es/components/number-keyboard/tokens.js +7 -1
  215. package/dist/es/components/overlay/Overlay.js +36 -51
  216. package/dist/es/components/overlay/tokens.js +5 -3
  217. package/dist/es/components/password-input/PasswordInput.js +114 -95
  218. package/dist/es/components/picker/Picker.js +465 -454
  219. package/dist/es/components/picker/tokens.js +1 -1
  220. package/dist/es/components/popup/Popup.js +269 -298
  221. package/dist/es/components/popup/tokens.js +1 -0
  222. package/dist/es/components/portal/Portal.js +13 -30
  223. package/dist/es/components/portal/PortalHost.js +152 -234
  224. package/dist/es/components/progress/Progress.js +103 -101
  225. package/dist/es/components/progress/tokens.js +1 -0
  226. package/dist/es/components/radio/Radio.js +100 -93
  227. package/dist/es/components/radio/RadioGroup.js +15 -46
  228. package/dist/es/components/radio/tokens.js +7 -10
  229. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  230. package/dist/es/components/search/Search.js +66 -58
  231. package/dist/es/components/selector/Selector.js +21 -27
  232. package/dist/es/components/share-sheet/ShareSheet.js +167 -163
  233. package/dist/es/components/share-sheet/tokens.js +3 -1
  234. package/dist/es/components/sidebar/Sidebar.js +53 -53
  235. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  236. package/dist/es/components/sidebar/SidebarItem.js +19 -20
  237. package/dist/es/components/sidebar/tokens.js +4 -4
  238. package/dist/es/components/skeleton/Skeleton.js +71 -77
  239. package/dist/es/components/skeleton/tokens.js +1 -2
  240. package/dist/es/components/slider/Slider.js +156 -134
  241. package/dist/es/components/space/Space.js +59 -78
  242. package/dist/es/components/space/tokens.js +7 -1
  243. package/dist/es/components/stepper/Stepper.js +183 -159
  244. package/dist/es/components/stepper/tokens.js +1 -0
  245. package/dist/es/components/swiper/Swiper.js +258 -257
  246. package/dist/es/components/swiper/SwiperPagIndicator.js +26 -27
  247. package/dist/es/components/swiper/tokens.js +10 -3
  248. package/dist/es/components/switch/Switch.js +23 -25
  249. package/dist/es/components/tabbar/Tabbar.js +49 -41
  250. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  251. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  252. package/dist/es/components/tabs/Tabs.js +403 -440
  253. package/dist/es/components/tabs/tokens.js +3 -1
  254. package/dist/es/components/tag/Tag.js +71 -61
  255. package/dist/es/components/toast/Toast.js +94 -91
  256. package/dist/es/components/toast/imperative.js +16 -41
  257. package/dist/es/components/toast/tokens.js +1 -0
  258. package/dist/es/components/typography/Typography.js +25 -25
  259. package/dist/es/components/water-mark/WaterMark.js +81 -79
  260. package/dist/es/design-system/Text.js +19 -0
  261. package/dist/es/design-system/ThemeProvider.js +5 -11
  262. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  263. package/dist/es/design-system/index.js +1 -0
  264. package/dist/es/design-system/mergeTokensOverride.js +1 -4
  265. package/dist/es/design-system/presets.js +2 -3
  266. package/dist/es/design-system/tokens.js +1 -9
  267. package/dist/es/hooks/animation/index.js +2 -0
  268. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  269. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  270. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  271. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  272. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  273. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  274. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  275. package/dist/es/hooks/index.js +1 -0
  276. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  277. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  278. package/dist/es/hooks/useControllableValue.js +13 -24
  279. package/dist/es/hooks/useCountDown.js +30 -38
  280. package/dist/es/hooks/useHairline.js +16 -28
  281. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  282. package/dist/es/index.js +8 -1
  283. package/dist/es/platform/animation.js +9 -1
  284. package/dist/es/platform/measure.js +21 -37
  285. package/dist/es/utils/color.js +18 -35
  286. package/dist/es/utils/compare.js +7 -12
  287. package/dist/es/utils/createPlatformShadow.js +28 -39
  288. package/dist/es/utils/date.js +20 -50
  289. package/dist/es/utils/deepMerge.js +16 -26
  290. package/dist/es/utils/hairline.js +74 -65
  291. package/dist/es/utils/index.js +2 -0
  292. package/dist/es/utils/number.js +21 -29
  293. package/dist/es/utils/render.js +7 -0
  294. package/dist/es/utils/rtl.js +17 -0
  295. package/dist/es/utils/string.js +8 -25
  296. package/dist/es/utils/validate.js +1 -2
  297. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  298. package/dist/types/components/area/Area.d.ts +1 -1
  299. package/dist/types/components/area/tokens.d.ts +4 -0
  300. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  301. package/dist/types/components/avatar/index.d.ts +1 -2
  302. package/dist/types/components/badge/Badge.d.ts +1 -1
  303. package/dist/types/components/button/Button.d.ts +1 -1
  304. package/dist/types/components/button/index.d.ts +1 -1
  305. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  306. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  307. package/dist/types/components/cell/Cell.d.ts +1 -1
  308. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  309. package/dist/types/components/cell/index.d.ts +2 -2
  310. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  311. package/dist/types/components/circle/Circle.d.ts +1 -1
  312. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  313. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  314. package/dist/types/components/config-provider/index.d.ts +2 -1
  315. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  316. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  317. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  318. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  319. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  320. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  321. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  322. package/dist/types/components/dialog/tokens.d.ts +1 -0
  323. package/dist/types/components/divider/Divider.d.ts +1 -1
  324. package/dist/types/components/empty/Empty.d.ts +1 -1
  325. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  326. package/dist/types/components/error-boundary/index.d.ts +2 -0
  327. package/dist/types/components/field/Field.d.ts +1 -1
  328. package/dist/types/components/flex/Flex.d.ts +1 -1
  329. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  330. package/dist/types/components/flex/index.d.ts +2 -2
  331. package/dist/types/components/form/Form.d.ts +1 -1
  332. package/dist/types/components/form/FormItem.d.ts +2 -1
  333. package/dist/types/components/form/index.d.ts +2 -2
  334. package/dist/types/components/form/tokens.d.ts +4 -0
  335. package/dist/types/components/grid/Grid.d.ts +1 -1
  336. package/dist/types/components/grid/GridItem.d.ts +1 -1
  337. package/dist/types/components/grid/index.d.ts +2 -2
  338. package/dist/types/components/image/Image.d.ts +1 -1
  339. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  340. package/dist/types/components/image-preview/tokens.d.ts +1 -0
  341. package/dist/types/components/index.d.ts +4 -1
  342. package/dist/types/components/input/Input.d.ts +3 -3
  343. package/dist/types/components/loading/Loading.d.ts +1 -1
  344. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  345. package/dist/types/components/nav-bar/tokens.d.ts +1 -1
  346. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  347. package/dist/types/components/notice-bar/tokens.d.ts +1 -0
  348. package/dist/types/components/notify/Notify.d.ts +2 -2
  349. package/dist/types/components/notify/index.d.ts +1 -1
  350. package/dist/types/components/number-keyboard/tokens.d.ts +5 -0
  351. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  352. package/dist/types/components/overlay/tokens.d.ts +3 -0
  353. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  354. package/dist/types/components/picker/Picker.d.ts +6 -6
  355. package/dist/types/components/popup/Popup.d.ts +3 -42
  356. package/dist/types/components/popup/tokens.d.ts +1 -0
  357. package/dist/types/components/portal/Portal.d.ts +9 -6
  358. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  359. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  360. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  361. package/dist/types/components/search/Search.d.ts +1 -1
  362. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  363. package/dist/types/components/share-sheet/tokens.d.ts +1 -0
  364. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  365. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  366. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  367. package/dist/types/components/sidebar/index.d.ts +2 -2
  368. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  369. package/dist/types/components/slider/Slider.d.ts +1 -1
  370. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  371. package/dist/types/components/stepper/tokens.d.ts +1 -0
  372. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  373. package/dist/types/components/swiper/index.d.ts +1 -1
  374. package/dist/types/components/swiper/tokens.d.ts +8 -0
  375. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  376. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  377. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  378. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  379. package/dist/types/components/tabs/index.d.ts +1 -1
  380. package/dist/types/components/tabs/tokens.d.ts +1 -0
  381. package/dist/types/components/tag/Tag.d.ts +1 -1
  382. package/dist/types/components/toast/Toast.d.ts +2 -2
  383. package/dist/types/components/toast/index.d.ts +1 -1
  384. package/dist/types/components/toast/tokens.d.ts +1 -0
  385. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  386. package/dist/types/design-system/Text.d.ts +3 -0
  387. package/dist/types/design-system/index.d.ts +1 -0
  388. package/dist/types/design-system/tokens.d.ts +0 -1
  389. package/dist/types/hooks/animation/index.d.ts +3 -0
  390. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  391. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  392. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  393. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  394. package/dist/types/hooks/index.d.ts +1 -0
  395. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  396. package/dist/types/hooks/useCountDown.d.ts +1 -1
  397. package/dist/types/hooks/useHairline.d.ts +1 -1
  398. package/dist/types/index.d.ts +5 -0
  399. package/dist/types/platform/animation.d.ts +8 -0
  400. package/dist/types/platform/measure.d.ts +1 -1
  401. package/dist/types/utils/color.d.ts +0 -2
  402. package/dist/types/utils/compare.d.ts +1 -1
  403. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  404. package/dist/types/utils/date.d.ts +2 -2
  405. package/dist/types/utils/hairline.d.ts +5 -10
  406. package/dist/types/utils/index.d.ts +2 -0
  407. package/dist/types/utils/number.d.ts +2 -2
  408. package/dist/types/utils/render.d.ts +5 -0
  409. package/dist/types/utils/rtl.d.ts +5 -0
  410. package/dist/types/utils/validate.d.ts +0 -1
  411. package/package.json +25 -4
@@ -20,24 +20,19 @@ function _reactNative() {
20
20
  }
21
21
  var _number = require("../../utils/number");
22
22
  var _SwiperPagIndicator = _interopRequireDefault(require("./SwiperPagIndicator"));
23
+ var _tokens = require("./tokens");
23
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
25
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
25
26
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
26
- const SwiperItem = exports.SwiperItem = /*#__PURE__*/(0, _react().forwardRef)((props, ref) => {
27
- const {
28
- style,
29
- children,
30
- testID
31
- } = props;
32
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
33
- ref: ref,
34
- style: [styles.item, style],
35
- testID: testID
36
- }, children);
37
- });
38
- SwiperItem.displayName = 'SwiperItem';
39
- const DEFAULT_AUTOPLAY_INTERVAL = 3000;
40
- const LOOP_RENDER_ALL_THRESHOLD = 10;
27
+ const SwiperItemImpl = (props, ref) => /*#__PURE__*/_react().default.createElement(_reactNative().View, {
28
+ ref: ref,
29
+ style: [S.item, props.style],
30
+ testID: props.testID
31
+ }, props.children);
32
+ const SwiperItemFR = /*#__PURE__*/(0, _react().forwardRef)(SwiperItemImpl);
33
+ SwiperItemFR.displayName = 'SwiperItem';
34
+ const SwiperItem = exports.SwiperItem = /*#__PURE__*/(0, _react().memo)(SwiperItemFR);
35
+ const LOOP_THRESHOLD = 10;
41
36
  const SwiperImpl = (props, ref) => {
42
37
  const {
43
38
  data,
@@ -54,310 +49,316 @@ const SwiperImpl = (props, ref) => {
54
49
  style,
55
50
  testID
56
51
  } = props;
57
- const flatListRef = (0, _react().useRef)(null);
58
- const autoplayTimerRef = (0, _react().useRef)(null);
59
- const isInteractingRef = (0, _react().useRef)(false);
60
- const isAnimatingRef = (0, _react().useRef)(false);
61
- const queuedIndexRef = (0, _react().useRef)(null);
62
- const isMomentumRef = (0, _react().useRef)(false);
52
+ const tokens = (0, _tokens.useSwiperTokens)();
53
+ const listRef = (0, _react().useRef)(null);
54
+ const autoRef = (0, _react().useRef)(null);
55
+ const interRef = (0, _react().useRef)(false);
56
+ const animRef = (0, _react().useRef)(false);
57
+ const queueRef = (0, _react().useRef)(null);
58
+ const momRef = (0, _react().useRef)(false);
59
+ const dragRef = (0, _react().useRef)(null);
63
60
  const isWeb = _reactNative().Platform.OS === 'web';
64
- const {
65
- width: windowWidth,
66
- height: windowHeight
67
- } = (0, _reactNative().useWindowDimensions)();
68
61
  const [layout, setLayout] = (0, _react().useState)({
69
62
  width: 0,
70
63
  height: 0
71
64
  });
72
- const handleLayout = (0, _react().useCallback)(event => {
65
+ const onLayout = (0, _react().useCallback)(e => {
73
66
  const {
74
- width,
75
- height
76
- } = event.nativeEvent.layout;
77
- setLayout(prev => prev.width === width && prev.height === height ? prev : {
78
- width,
79
- height
67
+ width: w,
68
+ height: h
69
+ } = e.nativeEvent.layout;
70
+ setLayout(p => p.width === w && p.height === h ? p : {
71
+ width: w,
72
+ height: h
80
73
  });
81
74
  }, []);
82
- const childItems = (0, _react().useMemo)(() => {
83
- if (!children) return [];
84
- return _react().Children.toArray(children).filter(child => /*#__PURE__*/(0, _react().isValidElement)(child));
85
- }, [children]);
75
+ const items = (0, _react().useMemo)(() => !children ? [] : _react().Children.toArray(children).filter(c => /*#__PURE__*/(0, _react().isValidElement)(c)), [children]);
86
76
  const usingData = Array.isArray(data);
87
- const baseItems = (0, _react().useMemo)(() => usingData ? data : childItems, [usingData, data, childItems]);
88
- const count = baseItems.length;
77
+ const base = usingData ? data : items;
78
+ const count = base.length;
89
79
  const shouldLoop = loop && count > 1;
90
- const displayData = (0, _react().useMemo)(() => {
91
- if (!shouldLoop) return baseItems;
92
- const head = baseItems[count - 1];
93
- const tail = baseItems[0];
94
- return [head, ...baseItems, tail];
95
- }, [baseItems, shouldLoop, count]);
96
- const displayCount = displayData.length;
97
- const loopRenderAll = shouldLoop && displayCount <= LOOP_RENDER_ALL_THRESHOLD;
98
- const getRealIndex = (0, _react().useCallback)(displayIndex => {
99
- if (!shouldLoop) return (0, _number.clamp)(displayIndex, 0, count - 1);
100
- if (displayIndex === 0) return count - 1;
101
- if (displayIndex === displayCount - 1) return 0;
102
- return displayIndex - 1;
103
- }, [shouldLoop, count, displayCount]);
104
- const getDisplayIndex = (0, _react().useCallback)(realIndex => {
105
- if (!shouldLoop) return (0, _number.clamp)(realIndex, 0, count - 1);
106
- return (0, _number.clamp)(realIndex, 0, count - 1) + 1;
107
- }, [shouldLoop, count]);
108
- const initialRealIndex = (0, _number.clamp)(initialSwipe, 0, Math.max(0, count - 1));
109
- const initialDisplayIndex = getDisplayIndex(initialRealIndex);
110
- const currentIndexRef = (0, _react().useRef)(initialRealIndex);
111
- const [currentIndex, setCurrentIndex] = (0, _react().useState)(initialRealIndex);
112
- const layoutReady = layout.width > 0 && layout.height > 0;
113
- const mainSize = vertical ? layout.height || windowHeight || 1 : layout.width || windowWidth || 1;
114
- const crossSize = vertical ? layout.width || windowWidth || 1 : layout.height || windowHeight || 1;
115
- const itemStyle = (0, _react().useMemo)(() => ({
116
- width: vertical ? crossSize : mainSize,
117
- height: vertical ? mainSize : crossSize
118
- }), [vertical, mainSize, crossSize]);
119
- const clearAutoplay = (0, _react().useCallback)(() => {
120
- if (autoplayTimerRef.current) {
121
- clearTimeout(autoplayTimerRef.current);
122
- autoplayTimerRef.current = null;
80
+ const display = (0, _react().useMemo)(() => shouldLoop ? [base[count - 1], ...base, base[0]] : base, [base, shouldLoop, count]);
81
+ const dCount = display.length;
82
+ const loopAll = shouldLoop && dCount <= LOOP_THRESHOLD;
83
+ const realIdx = (0, _react().useCallback)(di => !shouldLoop ? (0, _number.clamp)(di, 0, count - 1) : di === 0 ? count - 1 : di === dCount - 1 ? 0 : di - 1, [shouldLoop, count, dCount]);
84
+ const dispIdx = (0, _react().useCallback)(ri => shouldLoop ? (0, _number.clamp)(ri, 0, count - 1) + 1 : (0, _number.clamp)(ri, 0, count - 1), [shouldLoop, count]);
85
+ const initReal = (0, _number.clamp)(initialSwipe, 0, Math.max(0, count - 1));
86
+ const initDisp = dispIdx(initReal);
87
+ const curRef = (0, _react().useRef)(initReal);
88
+ const [curIdx, setCurIdx] = (0, _react().useState)(initReal);
89
+ const ready = layout.width > 0 && layout.height > 0;
90
+ const mainSz = vertical ? layout.height : layout.width;
91
+ const crossSz = vertical ? layout.width : layout.height;
92
+ const itemSz = (0, _react().useMemo)(() => ({
93
+ width: vertical ? crossSz : mainSz,
94
+ height: vertical ? mainSz : crossSz
95
+ }), [vertical, mainSz, crossSz]);
96
+ const clearAuto = (0, _react().useCallback)(() => {
97
+ if (autoRef.current) {
98
+ clearTimeout(autoRef.current);
99
+ autoRef.current = null;
123
100
  }
124
101
  }, []);
125
- const updateIndex = (0, _react().useCallback)(next => {
126
- const clamped = (0, _number.clamp)(next, 0, Math.max(0, count - 1));
127
- if (currentIndexRef.current === clamped) return;
128
- currentIndexRef.current = clamped;
129
- setCurrentIndex(clamped);
130
- onChange?.(clamped);
131
- }, [count, onChange]);
132
- const scrollToDisplayIndex = (0, _react().useCallback)((displayIndex, animated) => {
102
+ const onChangeRef = (0, _react().useRef)(onChange);
103
+ onChangeRef.current = onChange;
104
+ const update = (0, _react().useCallback)(n => {
105
+ const c = (0, _number.clamp)(n, 0, Math.max(0, count - 1));
106
+ if (curRef.current === c) return;
107
+ curRef.current = c;
108
+ setCurIdx(c);
109
+ onChangeRef.current?.(c);
110
+ }, [count]);
111
+ const scrollTo = (0, _react().useCallback)((i, anim) => {
133
112
  try {
134
- flatListRef.current?.scrollToIndex({
135
- index: displayIndex,
136
- animated
113
+ listRef.current?.scrollToIndex({
114
+ index: i,
115
+ animated: anim
137
116
  });
138
117
  } catch {}
139
118
  }, []);
140
119
  const swipeTo = (0, _react().useCallback)((index, animated = true) => {
141
120
  if (count === 0) return;
142
- if (animated && isAnimatingRef.current) {
143
- queuedIndexRef.current = index;
121
+ if (animated && animRef.current) {
122
+ queueRef.current = index;
144
123
  return;
145
124
  }
146
- const targetRealIndex = (0, _number.clamp)(index, 0, count - 1);
147
- let targetDisplayIndex = getDisplayIndex(targetRealIndex);
148
- let resolvedAnimated = animated;
149
- if (isWeb && shouldLoop && animated) {
150
- const currentRealIndex = currentIndexRef.current;
151
- if (currentRealIndex === count - 1 && targetRealIndex === 0 || currentRealIndex === 0 && targetRealIndex === count - 1) {
152
- resolvedAnimated = false;
153
- }
154
- }
155
- if (shouldLoop && resolvedAnimated) {
156
- const currentDisplayIndex = getDisplayIndex(currentIndexRef.current);
157
- if (currentDisplayIndex === count && targetRealIndex === 0) {
158
- targetDisplayIndex = displayCount - 1;
159
- } else if (currentDisplayIndex === 1 && targetRealIndex === count - 1) {
160
- targetDisplayIndex = 0;
161
- }
125
+ const tReal = (0, _number.clamp)(index, 0, count - 1);
126
+ let tDisp = dispIdx(tReal);
127
+ if (shouldLoop && animated) {
128
+ const cDisp = dispIdx(curRef.current);
129
+ if (cDisp === count && tReal === 0) tDisp = dCount - 1;else if (cDisp === 1 && tReal === count - 1) tDisp = 0;
162
130
  }
163
- const currentRealIndex = currentIndexRef.current;
164
- const currentDisplayIndex = getDisplayIndex(currentRealIndex);
165
- if (targetRealIndex === currentRealIndex && targetDisplayIndex === currentDisplayIndex) {
166
- if (queuedIndexRef.current != null) {
167
- const next = queuedIndexRef.current;
168
- queuedIndexRef.current = null;
169
- swipeTo(next, true);
131
+ const cReal = curRef.current,
132
+ cDisp = dispIdx(cReal);
133
+ if (tReal === cReal && tDisp === cDisp) {
134
+ if (queueRef.current != null) {
135
+ const q = queueRef.current;
136
+ queueRef.current = null;
137
+ swipeTo(q, true);
170
138
  }
139
+ ;
171
140
  return;
172
141
  }
173
- if (resolvedAnimated) {
174
- isAnimatingRef.current = true;
175
- }
176
- scrollToDisplayIndex(targetDisplayIndex, resolvedAnimated);
177
- if (!resolvedAnimated) {
178
- updateIndex(targetRealIndex);
179
- if (queuedIndexRef.current != null) {
180
- const next = queuedIndexRef.current;
181
- queuedIndexRef.current = null;
182
- swipeTo(next, true);
142
+ if (animated) animRef.current = true;
143
+ scrollTo(tDisp, animated);
144
+ if (!animated) {
145
+ update(tReal);
146
+ if (queueRef.current != null) {
147
+ const q = queueRef.current;
148
+ queueRef.current = null;
149
+ swipeTo(q, true);
183
150
  }
184
151
  }
185
- }, [count, getDisplayIndex, scrollToDisplayIndex, shouldLoop, displayCount, updateIndex, isWeb]);
186
- const resolveAutoplayInterval = (0, _react().useCallback)(() => {
187
- if (typeof autoplay === 'number') return Math.max(0, autoplay);
188
- if (autoplay) return DEFAULT_AUTOPLAY_INTERVAL;
189
- return 0;
190
- }, [autoplay]);
191
- const scheduleAutoplay = (0, _react().useCallback)(() => {
192
- const interval = resolveAutoplayInterval();
193
- if (!interval || count <= 1) return;
194
- if (isInteractingRef.current && !isWeb) return;
195
- clearAutoplay();
196
- autoplayTimerRef.current = setTimeout(() => {
197
- if (isInteractingRef.current && !isWeb) return;
198
- const nextIndex = shouldLoop ? (currentIndexRef.current + 1) % count : (0, _number.clamp)(currentIndexRef.current + 1, 0, count - 1);
199
- swipeTo(nextIndex, true);
200
- }, interval);
201
- }, [resolveAutoplayInterval, count, clearAutoplay, shouldLoop, swipeTo]);
202
- const swipeNext = (0, _react().useCallback)(() => {
152
+ }, [count, dispIdx, scrollTo, shouldLoop, dCount, update]);
153
+ const schedule = (0, _react().useCallback)(() => {
154
+ const iv = typeof autoplay === 'number' ? Math.max(0, autoplay) : autoplay ? tokens.defaults.autoplayInterval : 0;
155
+ if (!iv || count <= 1) return;
156
+ if (interRef.current && !isWeb) return;
157
+ clearAuto();
158
+ autoRef.current = setTimeout(() => {
159
+ if (interRef.current && !isWeb) return;
160
+ swipeTo(shouldLoop ? (curRef.current + 1) % count : (0, _number.clamp)(curRef.current + 1, 0, count - 1), true);
161
+ }, iv);
162
+ }, [autoplay, count, clearAuto, shouldLoop, swipeTo, isWeb, tokens.defaults.autoplayInterval]);
163
+ const next = (0, _react().useCallback)(() => {
203
164
  if (count === 0) return;
204
- const next = shouldLoop ? (currentIndexRef.current + 1) % count : (0, _number.clamp)(currentIndexRef.current + 1, 0, count - 1);
205
- swipeTo(next, true);
165
+ swipeTo(shouldLoop ? (curRef.current + 1) % count : (0, _number.clamp)(curRef.current + 1, 0, count - 1), true);
206
166
  }, [count, shouldLoop, swipeTo]);
207
- const swipePrev = (0, _react().useCallback)(() => {
167
+ const prev = (0, _react().useCallback)(() => {
208
168
  if (count === 0) return;
209
- const next = shouldLoop ? (currentIndexRef.current - 1 + count) % count : (0, _number.clamp)(currentIndexRef.current - 1, 0, count - 1);
210
- swipeTo(next, true);
169
+ swipeTo(shouldLoop ? (curRef.current - 1 + count) % count : (0, _number.clamp)(curRef.current - 1, 0, count - 1), true);
211
170
  }, [count, shouldLoop, swipeTo]);
212
- const flushQueuedSwipe = () => {
213
- if (queuedIndexRef.current == null) return;
214
- const next = queuedIndexRef.current;
215
- queuedIndexRef.current = null;
216
- swipeTo(next, true);
171
+ const flush = () => {
172
+ if (queueRef.current == null) return;
173
+ const q = queueRef.current;
174
+ queueRef.current = null;
175
+ swipeTo(q, true);
217
176
  };
218
177
  (0, _react().useImperativeHandle)(ref, () => ({
219
178
  swipeTo,
220
- swipeNext,
221
- swipePrev,
222
- getCurrentIndex: () => currentIndexRef.current
223
- }), [swipeTo, swipeNext, swipePrev]);
179
+ swipeNext: next,
180
+ swipePrev: prev,
181
+ getCurrentIndex: () => curRef.current
182
+ }), [swipeTo, next, prev]);
224
183
  (0, _react().useEffect)(() => {
225
- if (!layoutReady || count === 0) return;
226
- scrollToDisplayIndex(initialDisplayIndex, false);
227
- }, [layoutReady, count, initialDisplayIndex, scrollToDisplayIndex]);
184
+ if (!ready || count === 0) return;
185
+ scrollTo(initDisp, false);
186
+ }, [ready, count, initDisp, scrollTo]);
228
187
  (0, _react().useEffect)(() => {
229
- scheduleAutoplay();
230
- return clearAutoplay;
231
- }, [scheduleAutoplay, clearAutoplay, currentIndex]);
232
- const handleScrollBeginDrag = () => {
233
- isInteractingRef.current = true;
234
- clearAutoplay();
235
- };
236
- const handleScroll = event => {
237
- if (!isWeb || count <= 1) return;
238
- const offset = vertical ? event.nativeEvent.contentOffset.y : event.nativeEvent.contentOffset.x;
239
- const displayIndex = Math.round(offset / mainSize);
240
- const nextDisplayIndex = shouldLoop ? (0, _number.clamp)(displayIndex, 0, displayCount - 1) : (0, _number.clamp)(displayIndex, 0, count - 1);
241
- updateIndex(getRealIndex(nextDisplayIndex));
242
- const alignedOffset = Math.round(offset / mainSize) * mainSize;
243
- if (Math.abs(offset - alignedOffset) < 0.5) {
244
- isAnimatingRef.current = false;
245
- isInteractingRef.current = false;
246
- isMomentumRef.current = false;
247
- scheduleAutoplay();
248
- flushQueuedSwipe();
188
+ schedule();
189
+ return clearAuto;
190
+ }, [schedule, clearAuto, curIdx]);
191
+ const reset = (0, _react().useCallback)(() => {
192
+ animRef.current = false;
193
+ interRef.current = false;
194
+ momRef.current = false;
195
+ schedule();
196
+ flush();
197
+ }, [schedule]);
198
+ const onScroll = (0, _react().useCallback)(e => {
199
+ if (count <= 1) return;
200
+ const off = vertical ? e.nativeEvent.contentOffset.y : e.nativeEvent.contentOffset.x;
201
+ const di = Math.round(off / mainSz);
202
+ const cdi = shouldLoop ? (0, _number.clamp)(di, 0, dCount - 1) : (0, _number.clamp)(di, 0, count - 1);
203
+ update(realIdx(cdi));
204
+ if (isWeb) {
205
+ const aligned = di * mainSz;
206
+ if (Math.abs(off - aligned) < 0.5) {
207
+ if (shouldLoop && (di <= 0 || di >= dCount - 1)) scrollTo(di <= 0 ? count : 1, false);
208
+ reset();
209
+ }
249
210
  }
250
- };
251
- const handleMomentumScrollBegin = () => {
252
- isMomentumRef.current = true;
253
- };
254
- const handleScrollEndDrag = event => {
255
- if (isMomentumRef.current) return;
256
- handleScrollEnd(event);
257
- };
258
- const handleScrollEnd = event => {
259
- if (count === 0) return;
260
- const offset = vertical ? event.nativeEvent.contentOffset.y : event.nativeEvent.contentOffset.x;
261
- const displayIndex = Math.round(offset / mainSize);
262
- let nextDisplayIndex = displayIndex;
211
+ }, [count, vertical, mainSz, shouldLoop, dCount, update, realIdx, scrollTo, reset, isWeb]);
212
+ const onEnd = (0, _react().useCallback)(e => {
213
+ if (isWeb || count === 0) return;
214
+ const off = vertical ? e.nativeEvent.contentOffset.y : e.nativeEvent.contentOffset.x;
215
+ const di = Math.round(off / mainSz);
216
+ let ndi = di;
263
217
  if (shouldLoop) {
264
- if (displayIndex === 0) nextDisplayIndex = count;
265
- if (displayIndex === displayCount - 1) nextDisplayIndex = 1;
218
+ if (di === 0) ndi = count;
219
+ if (di === dCount - 1) ndi = 1;
266
220
  }
267
- if (nextDisplayIndex !== displayIndex) {
268
- scrollToDisplayIndex(nextDisplayIndex, false);
269
- }
270
- updateIndex(getRealIndex(nextDisplayIndex));
271
- isInteractingRef.current = false;
272
- isAnimatingRef.current = false;
273
- isMomentumRef.current = false;
274
- scheduleAutoplay();
275
- flushQueuedSwipe();
276
- };
277
- const renderIndicator = () => {
278
- if (indicator === false || count <= 1) return null;
279
- if (typeof indicator === 'function') return indicator(count, currentIndex);
280
- return /*#__PURE__*/_react().default.createElement(_SwiperPagIndicator.default, _extends({}, indicatorProps, {
281
- total: count,
282
- current: currentIndex,
283
- vertical: vertical
284
- }));
285
- };
221
+ if (ndi !== di) scrollTo(ndi, false);
222
+ update(realIdx(ndi));
223
+ reset();
224
+ }, [vertical, count, mainSz, shouldLoop, dCount, scrollTo, update, realIdx, reset, isWeb]);
225
+ const onDragBegin = (0, _react().useCallback)(() => {
226
+ interRef.current = true;
227
+ clearAuto();
228
+ }, [clearAuto]);
229
+ const onDragEnd = (0, _react().useCallback)(e => {
230
+ if (!momRef.current) onEnd(e);
231
+ }, [onEnd]);
232
+ const onMomBegin = (0, _react().useCallback)(() => {
233
+ momRef.current = true;
234
+ }, []);
235
+ const onFail = (0, _react().useCallback)(info => {
236
+ scrollTo(info.index, false);
237
+ update(realIdx(info.index));
238
+ reset();
239
+ }, [scrollTo, update, realIdx, reset]);
240
+ const renderItemRef = (0, _react().useRef)(renderItem);
241
+ renderItemRef.current = renderItem;
286
242
  const renderSlide = (0, _react().useCallback)(info => {
287
- const content = usingData ? renderItem?.(info) ?? null : info.item;
288
- if (!content) return null;
289
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
290
- style: [styles.slide, itemStyle]
291
- }, content);
292
- }, [usingData, renderItem, itemStyle]);
243
+ const c = usingData ? renderItemRef.current?.(info) ?? null : info.item;
244
+ return c ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
245
+ style: [S.slide, itemSz]
246
+ }, c) : null;
247
+ }, [usingData, itemSz]);
248
+ const getLayout = (0, _react().useCallback)((_, i) => ({
249
+ length: mainSz,
250
+ offset: mainSz * i,
251
+ index: i
252
+ }), [mainSz]);
253
+ const keyEx = (0, _react().useCallback)((_, i) => `s-${i}`, []);
293
254
  if (count === 0) return null;
294
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
295
- style: [styles.container, style],
296
- onLayout: handleLayout,
255
+ const indNode = indicator === false || count <= 1 ? null : typeof indicator === 'function' ? indicator(count, curIdx) : /*#__PURE__*/_react().default.createElement(_SwiperPagIndicator.default, _extends({}, indicatorProps, {
256
+ total: count,
257
+ current: curIdx,
258
+ vertical: vertical
259
+ }));
260
+ const webMouse = isWeb && touchable && count > 1 ? {
261
+ onPointerDown: e => {
262
+ if (e.nativeEvent.pointerType !== 'mouse' || e.nativeEvent.button !== 0) return;
263
+ dragRef.current = vertical ? e.nativeEvent.pageY : e.nativeEvent.pageX;
264
+ interRef.current = true;
265
+ clearAuto();
266
+ },
267
+ onPointerUp: e => {
268
+ const s = dragRef.current;
269
+ dragRef.current = null;
270
+ if (s == null || e.nativeEvent.pointerType !== 'mouse') return;
271
+ const d = (vertical ? e.nativeEvent.pageY : e.nativeEvent.pageX) - s;
272
+ if (Math.abs(d) >= mainSz * 0.15) {
273
+ d < 0 ? next() : prev();
274
+ }
275
+ ;
276
+ interRef.current = false;
277
+ schedule();
278
+ },
279
+ onPointerLeave: () => {
280
+ if (dragRef.current != null) {
281
+ dragRef.current = null;
282
+ interRef.current = false;
283
+ schedule();
284
+ }
285
+ }
286
+ } : undefined;
287
+ if (!ready) {
288
+ return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
289
+ style: [S.ctr, style],
290
+ onLayout: onLayout,
291
+ testID: testID
292
+ });
293
+ }
294
+ return /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({
295
+ accessibilityRole: "adjustable",
296
+ accessibilityLabel: `swiper, ${curIdx + 1} of ${count}`,
297
+ accessibilityValue: {
298
+ min: 0,
299
+ max: count - 1,
300
+ now: curIdx
301
+ },
302
+ style: [S.ctr, webMouse && S.web, style],
303
+ onLayout: onLayout,
297
304
  testID: testID
298
- }, /*#__PURE__*/_react().default.createElement(_reactNative().FlatList, {
299
- ref: flatListRef,
300
- data: displayData,
305
+ }, webMouse), /*#__PURE__*/_react().default.createElement(_reactNative().FlatList, {
306
+ ref: listRef,
307
+ data: display,
301
308
  renderItem: renderSlide,
302
- keyExtractor: (_item, index) => `swiper-${index}`,
309
+ keyExtractor: keyEx,
303
310
  horizontal: !vertical,
304
- getItemLayout: (_, index) => ({
305
- length: mainSize,
306
- offset: mainSize * index,
307
- index
308
- }),
309
- initialScrollIndex: layoutReady ? initialDisplayIndex : undefined,
311
+ getItemLayout: getLayout,
312
+ initialScrollIndex: initDisp,
310
313
  scrollEnabled: touchable && count > 1,
311
- removeClippedSubviews: !shouldLoop || !loopRenderAll,
312
- disableVirtualization: shouldLoop && loopRenderAll,
313
- initialNumToRender: shouldLoop ? loopRenderAll ? displayCount : 3 : 3,
314
- maxToRenderPerBatch: shouldLoop ? loopRenderAll ? displayCount : 3 : 3,
315
- windowSize: shouldLoop ? loopRenderAll ? displayCount : 7 : 5,
314
+ removeClippedSubviews: !shouldLoop || !loopAll,
315
+ disableVirtualization: shouldLoop && loopAll,
316
+ initialNumToRender: shouldLoop ? loopAll ? dCount : 3 : 3,
317
+ maxToRenderPerBatch: shouldLoop ? loopAll ? dCount : 3 : 3,
318
+ windowSize: shouldLoop ? loopAll ? dCount : 7 : 5,
316
319
  pagingEnabled: true,
317
- snapToInterval: mainSize,
320
+ snapToInterval: mainSz,
318
321
  decelerationRate: "fast",
319
322
  showsHorizontalScrollIndicator: false,
320
323
  showsVerticalScrollIndicator: false,
321
- onScrollBeginDrag: handleScrollBeginDrag,
322
- onScroll: handleScroll,
323
- scrollEventThrottle: 16,
324
- onScrollEndDrag: handleScrollEndDrag,
325
- onMomentumScrollBegin: handleMomentumScrollBegin,
326
- onMomentumScrollEnd: handleScrollEnd,
327
- onScrollToIndexFailed: info => {
328
- scrollToDisplayIndex(info.index, false);
329
- isAnimatingRef.current = false;
330
- isInteractingRef.current = false;
331
- updateIndex(getRealIndex(info.index));
332
- scheduleAutoplay();
333
- flushQueuedSwipe();
334
- }
324
+ onScrollBeginDrag: onDragBegin,
325
+ onScroll: onScroll,
326
+ scrollEventThrottle: tokens.defaults.scrollEventThrottle,
327
+ onScrollEndDrag: onDragEnd,
328
+ onMomentumScrollBegin: onMomBegin,
329
+ onMomentumScrollEnd: onEnd,
330
+ onScrollToIndexFailed: onFail
335
331
  }), /*#__PURE__*/_react().default.createElement(_reactNative().View, {
336
332
  pointerEvents: "none",
337
- style: styles.indicatorOverlay
338
- }, renderIndicator()));
333
+ style: [S.ind, {
334
+ zIndex: tokens.layer.zIndex,
335
+ elevation: tokens.layer.elevation
336
+ }]
337
+ }, indNode));
339
338
  };
340
- const Swiper = /*#__PURE__*/(0, _react().forwardRef)(SwiperImpl);
341
- Swiper.displayName = 'Swiper';
342
- const styles = _reactNative().StyleSheet.create({
343
- container: {
339
+ const SwiperFR = /*#__PURE__*/(0, _react().forwardRef)(SwiperImpl);
340
+ const Swiper = /*#__PURE__*/(0, _react().memo)(SwiperFR);
341
+ const S = _reactNative().StyleSheet.create({
342
+ ctr: {
344
343
  position: 'relative',
345
344
  overflow: 'hidden'
346
345
  },
346
+ web: {
347
+ cursor: 'grab',
348
+ userSelect: 'none'
349
+ },
347
350
  slide: {
348
351
  flex: 1
349
352
  },
350
353
  item: {
351
354
  flex: 1
352
355
  },
353
- indicatorOverlay: {
356
+ ind: {
354
357
  position: 'absolute',
355
358
  left: 0,
356
359
  right: 0,
357
360
  top: 0,
358
- bottom: 0,
359
- zIndex: 10,
360
- elevation: 10
361
+ bottom: 0
361
362
  }
362
363
  });
363
364
  var _default = exports.default = Swiper;