@fountain-ui/lab 2.0.0-beta.9 → 3.0.0-alpha.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 (474) hide show
  1. package/build/commonjs/BottomSheet/BottomSheetNative.js +78 -27
  2. package/build/commonjs/BottomSheet/BottomSheetNative.js.map +1 -1
  3. package/build/commonjs/BottomSheet/BottomSheetProps.js.map +1 -1
  4. package/build/commonjs/BottomSheet/BottomSheetWeb.js +63 -17
  5. package/build/commonjs/BottomSheet/BottomSheetWeb.js.map +1 -1
  6. package/build/commonjs/BottomSheet/useDynamicSnapPoints.js +79 -0
  7. package/build/commonjs/BottomSheet/useDynamicSnapPoints.js.map +1 -0
  8. package/build/commonjs/Carousel/Carousel.js +130 -0
  9. package/build/commonjs/Carousel/Carousel.js.map +1 -0
  10. package/build/commonjs/Carousel/CarouselProps.js.map +1 -1
  11. package/build/commonjs/Carousel/animation/animationUtils.js +9 -0
  12. package/build/commonjs/Carousel/animation/animationUtils.js.map +1 -0
  13. package/build/commonjs/Carousel/animation/createDefaultItemStyle.js +15 -0
  14. package/build/commonjs/Carousel/animation/createDefaultItemStyle.js.map +1 -0
  15. package/build/commonjs/Carousel/animation/createDefaultScrollAnimation.js +26 -0
  16. package/build/commonjs/Carousel/animation/createDefaultScrollAnimation.js.map +1 -0
  17. package/build/commonjs/Carousel/animation/index.js +40 -0
  18. package/build/commonjs/Carousel/animation/index.js.map +1 -0
  19. package/build/commonjs/Carousel/animation/normalItemStyleFactory.js +27 -0
  20. package/build/commonjs/Carousel/animation/normalItemStyleFactory.js.map +1 -0
  21. package/build/commonjs/Carousel/animation/parallaxItemStyleFactory.js +65 -0
  22. package/build/commonjs/Carousel/animation/parallaxItemStyleFactory.js.map +1 -0
  23. package/build/commonjs/Carousel/components/InternalContext.js +29 -0
  24. package/build/commonjs/Carousel/components/InternalContext.js.map +1 -0
  25. package/build/commonjs/Carousel/components/ItemView.js +66 -0
  26. package/build/commonjs/Carousel/components/ItemView.js.map +1 -0
  27. package/build/commonjs/Carousel/components/RootView.js +86 -0
  28. package/build/commonjs/Carousel/components/RootView.js.map +1 -0
  29. package/build/commonjs/Carousel/components/ScrollViewGesture.js +84 -0
  30. package/build/commonjs/Carousel/components/ScrollViewGesture.js.map +1 -0
  31. package/build/commonjs/Carousel/components/index.js +40 -0
  32. package/build/commonjs/Carousel/components/index.js.map +1 -0
  33. package/build/commonjs/Carousel/components/useItemInterpolation.js +65 -0
  34. package/build/commonjs/Carousel/components/useItemInterpolation.js.map +1 -0
  35. package/build/commonjs/Carousel/hooks/index.js +48 -0
  36. package/build/commonjs/Carousel/hooks/index.js.map +1 -0
  37. package/build/commonjs/Carousel/hooks/useAutoplayController.js +58 -0
  38. package/build/commonjs/Carousel/hooks/useAutoplayController.js.map +1 -0
  39. package/build/commonjs/Carousel/hooks/useIndexController.js +55 -0
  40. package/build/commonjs/Carousel/hooks/useIndexController.js.map +1 -0
  41. package/build/commonjs/Carousel/hooks/useItemVisibilityStore.js +95 -0
  42. package/build/commonjs/Carousel/hooks/useItemVisibilityStore.js.map +1 -0
  43. package/build/commonjs/Carousel/hooks/useLoopedData.js +33 -0
  44. package/build/commonjs/Carousel/hooks/useLoopedData.js.map +1 -0
  45. package/build/commonjs/Carousel/hooks/usePagingAnimator.js +202 -0
  46. package/build/commonjs/Carousel/hooks/usePagingAnimator.js.map +1 -0
  47. package/build/commonjs/Carousel/index.js +16 -2
  48. package/build/commonjs/Carousel/index.js.map +1 -1
  49. package/build/commonjs/Carousel/tick.js +16 -0
  50. package/build/commonjs/Carousel/tick.js.map +1 -0
  51. package/build/commonjs/Carousel/types.js +8 -0
  52. package/build/commonjs/Carousel/types.js.map +1 -0
  53. package/build/commonjs/ComicViewer/ComicViewer.js +230 -92
  54. package/build/commonjs/ComicViewer/ComicViewer.js.map +1 -1
  55. package/build/commonjs/ComicViewer/ComicViewerProps.js.map +1 -1
  56. package/build/commonjs/ComicViewer/EncodedTile.js +10 -0
  57. package/build/commonjs/ComicViewer/EncodedTile.js.map +1 -0
  58. package/build/commonjs/ComicViewer/FastScroll.js +175 -0
  59. package/build/commonjs/ComicViewer/FastScroll.js.map +1 -0
  60. package/build/commonjs/ComicViewer/{ComicViewerItemProps.js → FastScrollProps.js} +1 -1
  61. package/build/commonjs/ComicViewer/FastScrollProps.js.map +1 -0
  62. package/build/commonjs/ComicViewer/ReloadButton.js +48 -0
  63. package/build/commonjs/ComicViewer/ReloadButton.js.map +1 -0
  64. package/build/commonjs/ComicViewer/ViewerItem.js +53 -59
  65. package/build/commonjs/ComicViewer/ViewerItem.js.map +1 -1
  66. package/build/commonjs/ComicViewer/index.js.map +1 -1
  67. package/build/commonjs/ComicViewer/util.js +27 -0
  68. package/build/commonjs/ComicViewer/util.js.map +1 -0
  69. package/build/commonjs/DateTimePicker/DateTimePicker.js +12 -3
  70. package/build/commonjs/DateTimePicker/DateTimePicker.js.map +1 -1
  71. package/build/commonjs/DateTimePicker/YearPicker.js +2 -2
  72. package/build/commonjs/DateTimePicker/YearPicker.js.map +1 -1
  73. package/build/commonjs/StatusBarProvider/Provider.js.map +1 -1
  74. package/build/commonjs/StatusBarProvider/StatusBarProvider.js +111 -2
  75. package/build/commonjs/StatusBarProvider/StatusBarProvider.js.map +1 -1
  76. package/build/commonjs/ViewPager/FluxContext.js +13 -0
  77. package/build/commonjs/ViewPager/FluxContext.js.map +1 -0
  78. package/build/commonjs/ViewPager/InternalContext.js +17 -0
  79. package/build/commonjs/ViewPager/InternalContext.js.map +1 -0
  80. package/build/commonjs/ViewPager/PageStateContext.js +14 -0
  81. package/build/commonjs/ViewPager/PageStateContext.js.map +1 -0
  82. package/build/commonjs/ViewPager/ViewPager.js +81 -0
  83. package/build/commonjs/ViewPager/ViewPager.js.map +1 -0
  84. package/build/commonjs/ViewPager/ViewPager.native.js +152 -0
  85. package/build/commonjs/ViewPager/ViewPager.native.js.map +1 -0
  86. package/build/commonjs/ViewPager/ViewPagerProps.js.map +1 -1
  87. package/build/commonjs/ViewPager/components/ChildrenMemoizedPage.js +122 -0
  88. package/build/commonjs/ViewPager/components/ChildrenMemoizedPage.js.map +1 -0
  89. package/build/commonjs/ViewPager/components/FluxStoreProvider.js +37 -0
  90. package/build/commonjs/ViewPager/components/FluxStoreProvider.js.map +1 -0
  91. package/build/commonjs/ViewPager/components/index.js +24 -0
  92. package/build/commonjs/ViewPager/components/index.js.map +1 -0
  93. package/build/commonjs/ViewPager/hooks/index.js +64 -0
  94. package/build/commonjs/ViewPager/hooks/index.js.map +1 -0
  95. package/build/commonjs/ViewPager/hooks/useDispatch.js +22 -0
  96. package/build/commonjs/ViewPager/hooks/useDispatch.js.map +1 -0
  97. package/build/commonjs/ViewPager/hooks/useEagerState.js +24 -0
  98. package/build/commonjs/ViewPager/hooks/useEagerState.js.map +1 -0
  99. package/build/commonjs/ViewPager/hooks/useForceRender.js +16 -0
  100. package/build/commonjs/ViewPager/hooks/useForceRender.js.map +1 -0
  101. package/build/commonjs/ViewPager/hooks/useLazyState.js +43 -0
  102. package/build/commonjs/ViewPager/hooks/useLazyState.js.map +1 -0
  103. package/build/commonjs/ViewPager/hooks/usePageStore.js +35 -0
  104. package/build/commonjs/ViewPager/hooks/usePageStore.js.map +1 -0
  105. package/build/commonjs/ViewPager/hooks/useStore.js +26 -0
  106. package/build/commonjs/ViewPager/hooks/useStore.js.map +1 -0
  107. package/build/commonjs/ViewPager/hooks/useViewPagerPageState.js +19 -0
  108. package/build/commonjs/ViewPager/hooks/useViewPagerPageState.js.map +1 -0
  109. package/build/commonjs/ViewPager/index.js +42 -2
  110. package/build/commonjs/ViewPager/index.js.map +1 -1
  111. package/build/commonjs/ViewPager/types.js +2 -0
  112. package/build/commonjs/ViewPager/types.js.map +1 -0
  113. package/build/commonjs/ViewPager/utils.js +12 -45
  114. package/build/commonjs/ViewPager/utils.js.map +1 -1
  115. package/build/commonjs/ViewabilityTrackerView/Viewability.js +2 -0
  116. package/build/commonjs/ViewabilityTrackerView/Viewability.js.map +1 -0
  117. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerView.js +45 -0
  118. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerView.js.map +1 -0
  119. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerViewProps.js +2 -0
  120. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerViewProps.js.map +1 -0
  121. package/build/commonjs/{Carousel/index.native.js → ViewabilityTrackerView/index.js} +3 -3
  122. package/build/commonjs/ViewabilityTrackerView/index.js.map +1 -0
  123. package/build/commonjs/ViewabilityTrackerView/measureViewability.js +42 -0
  124. package/build/commonjs/ViewabilityTrackerView/measureViewability.js.map +1 -0
  125. package/build/commonjs/ViewabilityTrackerView/useViewabilityTracker.js +88 -0
  126. package/build/commonjs/ViewabilityTrackerView/useViewabilityTracker.js.map +1 -0
  127. package/build/commonjs/hooks/index.js +16 -0
  128. package/build/commonjs/hooks/index.js.map +1 -1
  129. package/build/commonjs/hooks/useDeferredExecutor.js +45 -0
  130. package/build/commonjs/hooks/useDeferredExecutor.js.map +1 -0
  131. package/build/commonjs/hooks/useHeight.js +4 -4
  132. package/build/commonjs/hooks/useHeight.js.map +1 -1
  133. package/build/commonjs/hooks/useIsMounted.js +22 -0
  134. package/build/commonjs/hooks/useIsMounted.js.map +1 -0
  135. package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js +3 -5
  136. package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
  137. package/build/commonjs/index.js +22 -1
  138. package/build/commonjs/index.js.map +1 -1
  139. package/build/module/BottomSheet/BottomSheetNative.js +73 -22
  140. package/build/module/BottomSheet/BottomSheetNative.js.map +1 -1
  141. package/build/module/BottomSheet/BottomSheetProps.js.map +1 -1
  142. package/build/module/BottomSheet/BottomSheetWeb.js +58 -18
  143. package/build/module/BottomSheet/BottomSheetWeb.js.map +1 -1
  144. package/build/module/BottomSheet/useDynamicSnapPoints.js +65 -0
  145. package/build/module/BottomSheet/useDynamicSnapPoints.js.map +1 -0
  146. package/build/module/Carousel/Carousel.js +109 -0
  147. package/build/module/Carousel/Carousel.js.map +1 -0
  148. package/build/module/Carousel/CarouselProps.js.map +1 -1
  149. package/build/module/Carousel/animation/animationUtils.js +2 -0
  150. package/build/module/Carousel/animation/animationUtils.js.map +1 -0
  151. package/build/module/Carousel/animation/createDefaultItemStyle.js +3 -0
  152. package/build/module/Carousel/animation/createDefaultItemStyle.js.map +1 -0
  153. package/build/module/Carousel/animation/createDefaultScrollAnimation.js +12 -0
  154. package/build/module/Carousel/animation/createDefaultScrollAnimation.js.map +1 -0
  155. package/build/module/Carousel/animation/index.js +5 -0
  156. package/build/module/Carousel/animation/index.js.map +1 -0
  157. package/build/module/Carousel/animation/normalItemStyleFactory.js +18 -0
  158. package/build/module/Carousel/animation/normalItemStyleFactory.js.map +1 -0
  159. package/build/module/Carousel/animation/parallaxItemStyleFactory.js +55 -0
  160. package/build/module/Carousel/animation/parallaxItemStyleFactory.js.map +1 -0
  161. package/build/module/Carousel/components/InternalContext.js +19 -0
  162. package/build/module/Carousel/components/InternalContext.js.map +1 -0
  163. package/build/module/Carousel/components/ItemView.js +46 -0
  164. package/build/module/Carousel/components/ItemView.js.map +1 -0
  165. package/build/module/Carousel/components/RootView.js +65 -0
  166. package/build/module/Carousel/components/RootView.js.map +1 -0
  167. package/build/module/Carousel/components/ScrollViewGesture.js +69 -0
  168. package/build/module/Carousel/components/ScrollViewGesture.js.map +1 -0
  169. package/build/module/Carousel/components/index.js +5 -0
  170. package/build/module/Carousel/components/index.js.map +1 -0
  171. package/build/module/Carousel/components/useItemInterpolation.js +51 -0
  172. package/build/module/Carousel/components/useItemInterpolation.js.map +1 -0
  173. package/build/module/Carousel/hooks/index.js +6 -0
  174. package/build/module/Carousel/hooks/index.js.map +1 -0
  175. package/build/module/Carousel/hooks/useAutoplayController.js +48 -0
  176. package/build/module/Carousel/hooks/useAutoplayController.js.map +1 -0
  177. package/build/module/Carousel/hooks/useIndexController.js +44 -0
  178. package/build/module/Carousel/hooks/useIndexController.js.map +1 -0
  179. package/build/module/Carousel/hooks/useItemVisibilityStore.js +86 -0
  180. package/build/module/Carousel/hooks/useItemVisibilityStore.js.map +1 -0
  181. package/build/module/Carousel/hooks/useLoopedData.js +24 -0
  182. package/build/module/Carousel/hooks/useLoopedData.js.map +1 -0
  183. package/build/module/Carousel/hooks/usePagingAnimator.js +192 -0
  184. package/build/module/Carousel/hooks/usePagingAnimator.js.map +1 -0
  185. package/build/module/Carousel/index.js +2 -1
  186. package/build/module/Carousel/index.js.map +1 -1
  187. package/build/module/Carousel/tick.js +6 -0
  188. package/build/module/Carousel/tick.js.map +1 -0
  189. package/build/module/Carousel/types.js +4 -0
  190. package/build/module/Carousel/types.js.map +1 -0
  191. package/build/module/ComicViewer/ComicViewer.js +229 -93
  192. package/build/module/ComicViewer/ComicViewer.js.map +1 -1
  193. package/build/module/ComicViewer/ComicViewerProps.js.map +1 -1
  194. package/build/module/ComicViewer/EncodedTile.js +3 -0
  195. package/build/module/ComicViewer/EncodedTile.js.map +1 -0
  196. package/build/module/ComicViewer/FastScroll.js +152 -0
  197. package/build/module/ComicViewer/FastScroll.js.map +1 -0
  198. package/build/module/ComicViewer/FastScrollProps.js +2 -0
  199. package/build/module/ComicViewer/FastScrollProps.js.map +1 -0
  200. package/build/module/ComicViewer/ReloadButton.js +33 -0
  201. package/build/module/ComicViewer/ReloadButton.js.map +1 -0
  202. package/build/module/ComicViewer/ViewerItem.js +53 -60
  203. package/build/module/ComicViewer/ViewerItem.js.map +1 -1
  204. package/build/module/ComicViewer/index.js.map +1 -1
  205. package/build/module/ComicViewer/util.js +15 -0
  206. package/build/module/ComicViewer/util.js.map +1 -0
  207. package/build/module/DateTimePicker/DateTimePicker.js +13 -4
  208. package/build/module/DateTimePicker/DateTimePicker.js.map +1 -1
  209. package/build/module/DateTimePicker/YearPicker.js +2 -2
  210. package/build/module/DateTimePicker/YearPicker.js.map +1 -1
  211. package/build/module/StatusBarProvider/Provider.js.map +1 -1
  212. package/build/module/StatusBarProvider/StatusBarProvider.js +105 -2
  213. package/build/module/StatusBarProvider/StatusBarProvider.js.map +1 -1
  214. package/build/module/ViewPager/FluxContext.js +4 -0
  215. package/build/module/ViewPager/FluxContext.js.map +1 -0
  216. package/build/module/ViewPager/InternalContext.js +7 -0
  217. package/build/module/ViewPager/InternalContext.js.map +1 -0
  218. package/build/module/ViewPager/PageStateContext.js +5 -0
  219. package/build/module/ViewPager/PageStateContext.js.map +1 -0
  220. package/build/module/ViewPager/ViewPager.js +57 -0
  221. package/build/module/ViewPager/ViewPager.js.map +1 -0
  222. package/build/module/ViewPager/ViewPager.native.js +129 -0
  223. package/build/module/ViewPager/ViewPager.native.js.map +1 -0
  224. package/build/module/ViewPager/ViewPagerProps.js.map +1 -1
  225. package/build/module/ViewPager/components/ChildrenMemoizedPage.js +101 -0
  226. package/build/module/ViewPager/components/ChildrenMemoizedPage.js.map +1 -0
  227. package/build/module/ViewPager/components/FluxStoreProvider.js +20 -0
  228. package/build/module/ViewPager/components/FluxStoreProvider.js.map +1 -0
  229. package/build/module/ViewPager/components/index.js +3 -0
  230. package/build/module/ViewPager/components/index.js.map +1 -0
  231. package/build/module/ViewPager/hooks/index.js +8 -0
  232. package/build/module/ViewPager/hooks/index.js.map +1 -0
  233. package/build/module/ViewPager/hooks/useDispatch.js +10 -0
  234. package/build/module/ViewPager/hooks/useDispatch.js.map +1 -0
  235. package/build/module/ViewPager/hooks/useEagerState.js +12 -0
  236. package/build/module/ViewPager/hooks/useEagerState.js.map +1 -0
  237. package/build/module/ViewPager/hooks/useForceRender.js +7 -0
  238. package/build/module/ViewPager/hooks/useForceRender.js.map +1 -0
  239. package/build/module/ViewPager/hooks/useLazyState.js +28 -0
  240. package/build/module/ViewPager/hooks/useLazyState.js.map +1 -0
  241. package/build/module/ViewPager/hooks/usePageStore.js +25 -0
  242. package/build/module/ViewPager/hooks/usePageStore.js.map +1 -0
  243. package/build/module/ViewPager/hooks/useStore.js +14 -0
  244. package/build/module/ViewPager/hooks/useStore.js.map +1 -0
  245. package/build/module/ViewPager/hooks/useViewPagerPageState.js +7 -0
  246. package/build/module/ViewPager/hooks/useViewPagerPageState.js.map +1 -0
  247. package/build/module/ViewPager/index.js +3 -1
  248. package/build/module/ViewPager/index.js.map +1 -1
  249. package/build/module/ViewPager/types.js +2 -0
  250. package/build/module/ViewPager/types.js.map +1 -0
  251. package/build/module/ViewPager/utils.js +6 -34
  252. package/build/module/ViewPager/utils.js.map +1 -1
  253. package/build/module/ViewabilityTrackerView/Viewability.js +2 -0
  254. package/build/module/ViewabilityTrackerView/Viewability.js.map +1 -0
  255. package/build/module/ViewabilityTrackerView/ViewabilityTrackerView.js +28 -0
  256. package/build/module/ViewabilityTrackerView/ViewabilityTrackerView.js.map +1 -0
  257. package/build/module/ViewabilityTrackerView/ViewabilityTrackerViewProps.js +2 -0
  258. package/build/module/ViewabilityTrackerView/ViewabilityTrackerViewProps.js.map +1 -0
  259. package/build/module/ViewabilityTrackerView/index.js +2 -0
  260. package/build/module/ViewabilityTrackerView/index.js.map +1 -0
  261. package/build/module/ViewabilityTrackerView/measureViewability.js +34 -0
  262. package/build/module/ViewabilityTrackerView/measureViewability.js.map +1 -0
  263. package/build/module/ViewabilityTrackerView/useViewabilityTracker.js +73 -0
  264. package/build/module/ViewabilityTrackerView/useViewabilityTracker.js.map +1 -0
  265. package/build/module/hooks/index.js +2 -0
  266. package/build/module/hooks/index.js.map +1 -1
  267. package/build/module/hooks/useDeferredExecutor.js +33 -0
  268. package/build/module/hooks/useDeferredExecutor.js.map +1 -0
  269. package/build/module/hooks/useHeight.js +2 -3
  270. package/build/module/hooks/useHeight.js.map +1 -1
  271. package/build/module/hooks/useIsMounted.js +13 -0
  272. package/build/module/hooks/useIsMounted.js.map +1 -0
  273. package/build/module/hooks/useUnstableCollapsibleAppBar.js +4 -6
  274. package/build/module/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
  275. package/build/module/index.js +2 -0
  276. package/build/module/index.js.map +1 -1
  277. package/build/typescript/AnimatedY/AnimatedY.d.ts +1 -0
  278. package/build/typescript/BottomSheet/BottomSheetNative.d.ts +1 -0
  279. package/build/typescript/BottomSheet/BottomSheetProps.d.ts +22 -1
  280. package/build/typescript/BottomSheet/BottomSheetWeb.d.ts +1 -0
  281. package/build/typescript/BottomSheet/TransparentBackdrop.d.ts +1 -0
  282. package/build/typescript/BottomSheet/useDynamicSnapPoints.d.ts +13 -0
  283. package/build/typescript/Carousel/Carousel.d.ts +5 -0
  284. package/build/typescript/Carousel/CarouselProps.d.ts +33 -48
  285. package/build/typescript/Carousel/animation/animationUtils.d.ts +1 -0
  286. package/build/typescript/Carousel/animation/createDefaultItemStyle.d.ts +2 -0
  287. package/build/typescript/Carousel/animation/createDefaultScrollAnimation.d.ts +2 -0
  288. package/build/typescript/Carousel/animation/index.d.ts +4 -0
  289. package/build/typescript/Carousel/animation/normalItemStyleFactory.d.ts +2 -0
  290. package/build/typescript/Carousel/animation/parallaxItemStyleFactory.d.ts +9 -0
  291. package/build/typescript/Carousel/components/InternalContext.d.ts +14 -0
  292. package/build/typescript/Carousel/components/ItemView.d.ts +9 -0
  293. package/build/typescript/Carousel/components/RootView.d.ts +16 -0
  294. package/build/typescript/Carousel/components/ScrollViewGesture.d.ts +12 -0
  295. package/build/typescript/Carousel/components/index.d.ts +4 -0
  296. package/build/typescript/Carousel/components/useItemInterpolation.d.ts +2 -0
  297. package/build/typescript/Carousel/hooks/index.d.ts +5 -0
  298. package/build/typescript/Carousel/hooks/useAutoplayController.d.ts +7 -0
  299. package/build/typescript/Carousel/hooks/useIndexController.d.ts +10 -0
  300. package/build/typescript/Carousel/hooks/useItemVisibilityStore.d.ts +7 -0
  301. package/build/typescript/Carousel/hooks/useLoopedData.d.ts +1 -0
  302. package/build/typescript/Carousel/hooks/usePagingAnimator.d.ts +17 -0
  303. package/build/typescript/Carousel/index.d.ts +3 -1
  304. package/build/typescript/Carousel/tick.d.ts +2 -0
  305. package/build/typescript/Carousel/types.d.ts +91 -0
  306. package/build/typescript/ComicViewer/ComicViewer.d.ts +2 -1
  307. package/build/typescript/ComicViewer/ComicViewerProps.d.ts +61 -43
  308. package/build/typescript/ComicViewer/EncodedTile.d.ts +2 -0
  309. package/build/typescript/ComicViewer/FastScroll.d.ts +4 -0
  310. package/build/typescript/ComicViewer/FastScrollProps.d.ts +74 -0
  311. package/build/typescript/ComicViewer/ReloadButton.d.ts +7 -0
  312. package/build/typescript/ComicViewer/ViewerItem.d.ts +46 -7
  313. package/build/typescript/ComicViewer/index.d.ts +3 -2
  314. package/build/typescript/ComicViewer/util.d.ts +2 -0
  315. package/build/typescript/DateTimePicker/DateTimePicker.d.ts +1 -0
  316. package/build/typescript/DateTimePicker/YearPicker.d.ts +1 -0
  317. package/build/typescript/FlipCard/FlipCard.d.ts +1 -0
  318. package/build/typescript/StatusBarProvider/Provider.d.ts +13 -0
  319. package/build/typescript/StatusBarProvider/StatusBarProvider.d.ts +1 -0
  320. package/build/typescript/ViewPager/FluxContext.d.ts +5 -0
  321. package/build/typescript/ViewPager/InternalContext.d.ts +7 -0
  322. package/build/typescript/ViewPager/PageStateContext.d.ts +6 -0
  323. package/build/typescript/ViewPager/ViewPager.d.ts +5 -0
  324. package/build/typescript/ViewPager/ViewPager.native.d.ts +5 -0
  325. package/build/typescript/ViewPager/ViewPagerProps.d.ts +21 -27
  326. package/build/typescript/ViewPager/components/ChildrenMemoizedPage.d.ts +14 -0
  327. package/build/typescript/ViewPager/components/FluxStoreProvider.d.ts +6 -0
  328. package/build/typescript/ViewPager/components/index.d.ts +2 -0
  329. package/build/typescript/ViewPager/hooks/index.d.ts +7 -0
  330. package/build/typescript/ViewPager/hooks/useDispatch.d.ts +2 -0
  331. package/build/typescript/ViewPager/hooks/useEagerState.d.ts +1 -0
  332. package/build/typescript/ViewPager/hooks/useForceRender.d.ts +2 -0
  333. package/build/typescript/ViewPager/hooks/useLazyState.d.ts +2 -0
  334. package/build/typescript/ViewPager/hooks/usePageStore.d.ts +2 -0
  335. package/build/typescript/ViewPager/hooks/useStore.d.ts +2 -0
  336. package/build/typescript/ViewPager/hooks/useViewPagerPageState.d.ts +1 -0
  337. package/build/typescript/ViewPager/index.d.ts +4 -1
  338. package/build/typescript/ViewPager/types.d.ts +12 -0
  339. package/build/typescript/ViewPager/utils.d.ts +5 -20
  340. package/build/typescript/ViewabilityTrackerView/Viewability.d.ts +3 -0
  341. package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerView.d.ts +3 -0
  342. package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerViewProps.d.ts +22 -0
  343. package/build/typescript/ViewabilityTrackerView/index.d.ts +2 -0
  344. package/build/typescript/ViewabilityTrackerView/measureViewability.d.ts +11 -0
  345. package/build/typescript/ViewabilityTrackerView/useViewabilityTracker.d.ts +11 -0
  346. package/build/typescript/hooks/index.d.ts +2 -0
  347. package/build/typescript/hooks/useDeferredExecutor.d.ts +11 -0
  348. package/build/typescript/hooks/useIsMounted.d.ts +4 -0
  349. package/build/typescript/index.d.ts +2 -0
  350. package/package.json +10 -25
  351. package/src/BottomSheet/BottomSheetNative.tsx +76 -21
  352. package/src/BottomSheet/BottomSheetProps.ts +26 -1
  353. package/src/BottomSheet/BottomSheetWeb.tsx +67 -24
  354. package/src/BottomSheet/useDynamicSnapPoints.ts +87 -0
  355. package/src/Carousel/Carousel.tsx +135 -0
  356. package/src/Carousel/CarouselProps.ts +42 -53
  357. package/src/Carousel/animation/animationUtils.ts +1 -0
  358. package/src/Carousel/animation/createDefaultItemStyle.ts +3 -0
  359. package/src/Carousel/animation/createDefaultScrollAnimation.ts +14 -0
  360. package/src/Carousel/animation/index.ts +4 -0
  361. package/src/Carousel/animation/normalItemStyleFactory.ts +19 -0
  362. package/src/Carousel/animation/parallaxItemStyleFactory.ts +79 -0
  363. package/src/Carousel/components/InternalContext.ts +33 -0
  364. package/src/Carousel/components/ItemView.tsx +66 -0
  365. package/src/Carousel/components/RootView.tsx +79 -0
  366. package/src/Carousel/components/ScrollViewGesture.tsx +93 -0
  367. package/src/Carousel/components/index.ts +4 -0
  368. package/src/Carousel/components/useItemInterpolation.ts +107 -0
  369. package/src/Carousel/hooks/index.ts +5 -0
  370. package/src/Carousel/hooks/useAutoplayController.ts +57 -0
  371. package/src/Carousel/hooks/useIndexController.tsx +57 -0
  372. package/src/Carousel/hooks/useItemVisibilityStore.ts +107 -0
  373. package/src/Carousel/hooks/useLoopedData.ts +26 -0
  374. package/src/Carousel/hooks/usePagingAnimator.ts +255 -0
  375. package/src/Carousel/index.ts +4 -2
  376. package/src/Carousel/tick.ts +6 -0
  377. package/src/Carousel/types.ts +114 -0
  378. package/src/ComicViewer/ComicViewer.tsx +268 -106
  379. package/src/ComicViewer/ComicViewerProps.ts +66 -44
  380. package/src/ComicViewer/EncodedTile.ts +3 -0
  381. package/src/ComicViewer/FastScroll.tsx +176 -0
  382. package/src/ComicViewer/FastScrollProps.ts +88 -0
  383. package/src/ComicViewer/ReloadButton.tsx +36 -0
  384. package/src/ComicViewer/ViewerItem.tsx +104 -62
  385. package/src/ComicViewer/index.ts +8 -2
  386. package/src/ComicViewer/util.ts +15 -0
  387. package/src/DateTimePicker/DateTimePicker.tsx +11 -3
  388. package/src/DateTimePicker/YearPicker.tsx +2 -2
  389. package/src/StatusBarProvider/Provider.ts +14 -0
  390. package/src/StatusBarProvider/StatusBarProvider.tsx +103 -1
  391. package/src/ViewPager/FluxContext.ts +8 -0
  392. package/src/ViewPager/InternalContext.ts +13 -0
  393. package/src/ViewPager/PageStateContext.ts +11 -0
  394. package/src/ViewPager/ViewPager.native.tsx +152 -0
  395. package/src/ViewPager/ViewPager.tsx +69 -0
  396. package/src/ViewPager/ViewPagerProps.ts +25 -34
  397. package/src/ViewPager/components/ChildrenMemoizedPage.tsx +124 -0
  398. package/src/ViewPager/components/FluxStoreProvider.tsx +27 -0
  399. package/src/ViewPager/components/index.ts +2 -0
  400. package/src/ViewPager/hooks/index.ts +7 -0
  401. package/src/ViewPager/hooks/useDispatch.ts +11 -0
  402. package/src/ViewPager/hooks/useEagerState.ts +14 -0
  403. package/src/ViewPager/hooks/useForceRender.ts +7 -0
  404. package/src/ViewPager/hooks/useLazyState.ts +32 -0
  405. package/src/ViewPager/hooks/usePageStore.ts +30 -0
  406. package/src/ViewPager/hooks/useStore.ts +15 -0
  407. package/src/ViewPager/hooks/useViewPagerPageState.ts +6 -0
  408. package/src/ViewPager/index.ts +11 -2
  409. package/src/ViewPager/types.ts +15 -0
  410. package/src/ViewPager/utils.tsx +9 -56
  411. package/src/ViewabilityTrackerView/Viewability.ts +3 -0
  412. package/src/ViewabilityTrackerView/ViewabilityTrackerView.tsx +33 -0
  413. package/src/ViewabilityTrackerView/ViewabilityTrackerViewProps.ts +25 -0
  414. package/src/ViewabilityTrackerView/index.ts +2 -0
  415. package/src/ViewabilityTrackerView/measureViewability.ts +54 -0
  416. package/src/ViewabilityTrackerView/useViewabilityTracker.ts +85 -0
  417. package/src/hooks/index.ts +2 -0
  418. package/src/hooks/useDeferredExecutor.ts +46 -0
  419. package/src/hooks/useHeight.ts +3 -4
  420. package/src/hooks/useIsMounted.ts +19 -0
  421. package/src/hooks/useUnstableCollapsibleAppBar.ts +4 -4
  422. package/src/index.ts +3 -0
  423. package/build/commonjs/Carousel/CarouselNative.js +0 -72
  424. package/build/commonjs/Carousel/CarouselNative.js.map +0 -1
  425. package/build/commonjs/Carousel/CarouselWeb.js +0 -237
  426. package/build/commonjs/Carousel/CarouselWeb.js.map +0 -1
  427. package/build/commonjs/Carousel/index.native.js.map +0 -1
  428. package/build/commonjs/Carousel/utils.js +0 -19
  429. package/build/commonjs/Carousel/utils.js.map +0 -1
  430. package/build/commonjs/ComicViewer/ComicViewerItemProps.js.map +0 -1
  431. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +0 -49
  432. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +0 -1
  433. package/build/commonjs/ViewPager/ViewPagerNative.js +0 -75
  434. package/build/commonjs/ViewPager/ViewPagerNative.js.map +0 -1
  435. package/build/commonjs/ViewPager/ViewPagerWeb.js +0 -55
  436. package/build/commonjs/ViewPager/ViewPagerWeb.js.map +0 -1
  437. package/build/commonjs/ViewPager/index.native.js +0 -16
  438. package/build/commonjs/ViewPager/index.native.js.map +0 -1
  439. package/build/module/Carousel/CarouselNative.js +0 -54
  440. package/build/module/Carousel/CarouselNative.js.map +0 -1
  441. package/build/module/Carousel/CarouselWeb.js +0 -215
  442. package/build/module/Carousel/CarouselWeb.js.map +0 -1
  443. package/build/module/Carousel/index.native.js +0 -2
  444. package/build/module/Carousel/index.native.js.map +0 -1
  445. package/build/module/Carousel/utils.js +0 -7
  446. package/build/module/Carousel/utils.js.map +0 -1
  447. package/build/module/ComicViewer/ComicViewerItemProps.js +0 -2
  448. package/build/module/ComicViewer/ComicViewerItemProps.js.map +0 -1
  449. package/build/module/ViewPager/ChildrenMemoizedPage.js +0 -37
  450. package/build/module/ViewPager/ChildrenMemoizedPage.js.map +0 -1
  451. package/build/module/ViewPager/ViewPagerNative.js +0 -58
  452. package/build/module/ViewPager/ViewPagerNative.js.map +0 -1
  453. package/build/module/ViewPager/ViewPagerWeb.js +0 -41
  454. package/build/module/ViewPager/ViewPagerWeb.js.map +0 -1
  455. package/build/module/ViewPager/index.native.js +0 -2
  456. package/build/module/ViewPager/index.native.js.map +0 -1
  457. package/build/typescript/Carousel/CarouselNative.d.ts +0 -2
  458. package/build/typescript/Carousel/CarouselWeb.d.ts +0 -4
  459. package/build/typescript/Carousel/index.native.d.ts +0 -1
  460. package/build/typescript/Carousel/utils.d.ts +0 -6
  461. package/build/typescript/ComicViewer/ComicViewerItemProps.d.ts +0 -12
  462. package/build/typescript/ViewPager/ChildrenMemoizedPage.d.ts +0 -4
  463. package/build/typescript/ViewPager/ViewPagerNative.d.ts +0 -2
  464. package/build/typescript/ViewPager/ViewPagerWeb.d.ts +0 -2
  465. package/build/typescript/ViewPager/index.native.d.ts +0 -1
  466. package/src/Carousel/CarouselNative.tsx +0 -67
  467. package/src/Carousel/CarouselWeb.tsx +0 -222
  468. package/src/Carousel/index.native.ts +0 -1
  469. package/src/Carousel/utils.ts +0 -11
  470. package/src/ComicViewer/ComicViewerItemProps.ts +0 -15
  471. package/src/ViewPager/ChildrenMemoizedPage.tsx +0 -36
  472. package/src/ViewPager/ViewPagerNative.tsx +0 -73
  473. package/src/ViewPager/ViewPagerWeb.tsx +0 -52
  474. package/src/ViewPager/index.native.ts +0 -1
@@ -0,0 +1,57 @@
1
+ import React, { Children, forwardRef, useCallback, useImperativeHandle, useMemo } from 'react';
2
+ import { View } from 'react-native';
3
+ import { StyleSheet, useSyncAnimatedValue } from '@fountain-ui/core';
4
+ import { ChildrenMemoizedPage } from './components';
5
+ import { defaultInitialPage, defaultLoading, isValidPage } from './utils';
6
+ import { usePageStore } from './hooks';
7
+ import InternalContext from './InternalContext';
8
+ const styles = StyleSheet.create({
9
+ root: {
10
+ // @ts-ignore
11
+ overflow: 'auto',
12
+ position: 'relative'
13
+ }
14
+ });
15
+ const ViewPager = /*#__PURE__*/forwardRef(function ViewPager(props, ref) {
16
+ const {
17
+ children,
18
+ initialPage = defaultInitialPage,
19
+ loading = defaultLoading,
20
+ pageForceRerenderKey,
21
+ style,
22
+ UNSTABLE_sharedPage
23
+ } = props;
24
+ const fallbackSharedPage = useSyncAnimatedValue({
25
+ initialValue: initialPage
26
+ });
27
+ const sharedPage = UNSTABLE_sharedPage ?? fallbackSharedPage;
28
+ const numberOfPages = Children.count(children);
29
+ const setPage = useCallback(newPage => {
30
+ if (isValidPage(newPage, numberOfPages)) {
31
+ sharedPage.animatedValue.setValue(newPage);
32
+ }
33
+ }, [sharedPage, numberOfPages]);
34
+ useImperativeHandle(ref, () => ({
35
+ setPage
36
+ }), [setPage]);
37
+ const pageStore = usePageStore(sharedPage);
38
+ const contextValue = useMemo(() => ({
39
+ pageStore
40
+ }), [pageStore]);
41
+ return /*#__PURE__*/React.createElement(InternalContext.Provider, {
42
+ value: contextValue
43
+ }, /*#__PURE__*/React.createElement(View, {
44
+ style: [styles.root, style]
45
+ }, Children.map(children, (child, index) => /*#__PURE__*/React.createElement(ChildrenMemoizedPage, {
46
+ key: index,
47
+ children: child,
48
+ index: index,
49
+ initialPage: sharedPage.initialValue,
50
+ loading: loading,
51
+ offscreenPageRerenderLimit: 0 // All offscreen pages will not be re-rendered
52
+ ,
53
+ rerenderKey: pageForceRerenderKey
54
+ }))));
55
+ });
56
+ export default ViewPager;
57
+ //# sourceMappingURL=ViewPager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Children","forwardRef","useCallback","useImperativeHandle","useMemo","View","StyleSheet","useSyncAnimatedValue","ChildrenMemoizedPage","defaultInitialPage","defaultLoading","isValidPage","usePageStore","InternalContext","styles","create","root","overflow","position","ViewPager","props","ref","children","initialPage","loading","pageForceRerenderKey","style","UNSTABLE_sharedPage","fallbackSharedPage","initialValue","sharedPage","numberOfPages","count","setPage","newPage","animatedValue","setValue","pageStore","contextValue","map","child","index"],"sources":["ViewPager.tsx"],"sourcesContent":["import React, { Children, forwardRef, useCallback, useImperativeHandle, useMemo } from 'react';\nimport { View } from 'react-native';\nimport { StyleSheet, useSyncAnimatedValue } from '@fountain-ui/core';\nimport { ChildrenMemoizedPage } from './components';\nimport type ViewPagerProps from './ViewPagerProps';\nimport type { ViewPagerInstance } from './types';\nimport { defaultInitialPage, defaultLoading, isValidPage } from './utils';\nimport { usePageStore } from './hooks';\nimport InternalContext from './InternalContext';\n\nconst styles = StyleSheet.create({\n root: {\n // @ts-ignore\n overflow: 'auto',\n position: 'relative',\n },\n});\n\nconst ViewPager = forwardRef<ViewPagerInstance, ViewPagerProps>(function ViewPager(props, ref) {\n const {\n children,\n initialPage = defaultInitialPage,\n loading = defaultLoading,\n pageForceRerenderKey,\n style,\n UNSTABLE_sharedPage,\n } = props;\n\n const fallbackSharedPage = useSyncAnimatedValue({ initialValue: initialPage });\n\n const sharedPage = UNSTABLE_sharedPage ?? fallbackSharedPage;\n\n const numberOfPages = Children.count(children);\n const setPage = useCallback((newPage: number) => {\n if (isValidPage(newPage, numberOfPages)) {\n sharedPage.animatedValue.setValue(newPage);\n }\n }, [sharedPage, numberOfPages]);\n\n useImperativeHandle(\n ref,\n () => ({ setPage }),\n [setPage],\n );\n\n const pageStore = usePageStore(sharedPage);\n\n const contextValue = useMemo(() => ({ pageStore }), [pageStore]);\n\n return (\n <InternalContext.Provider value={contextValue}>\n <View style={[styles.root, style]}>\n {Children.map(children, (child, index) => (\n <ChildrenMemoizedPage\n key={index}\n children={child}\n index={index}\n initialPage={sharedPage.initialValue}\n loading={loading}\n offscreenPageRerenderLimit={0} // All offscreen pages will not be re-rendered\n rerenderKey={pageForceRerenderKey}\n />\n ))}\n </View>\n </InternalContext.Provider>\n );\n});\n\nexport default ViewPager;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,UAA1B,EAAsCC,WAAtC,EAAmDC,mBAAnD,EAAwEC,OAAxE,QAAuF,OAAvF;AACA,SAASC,IAAT,QAAqB,cAArB;AACA,SAASC,UAAT,EAAqBC,oBAArB,QAAiD,mBAAjD;AACA,SAASC,oBAAT,QAAqC,cAArC;AAGA,SAASC,kBAAT,EAA6BC,cAA7B,EAA6CC,WAA7C,QAAgE,SAAhE;AACA,SAASC,YAAT,QAA6B,SAA7B;AACA,OAAOC,eAAP,MAA4B,mBAA5B;AAEA,MAAMC,MAAM,GAAGR,UAAU,CAACS,MAAX,CAAkB;EAC7BC,IAAI,EAAE;IACF;IACAC,QAAQ,EAAE,MAFR;IAGFC,QAAQ,EAAE;EAHR;AADuB,CAAlB,CAAf;AAQA,MAAMC,SAAS,gBAAGlB,UAAU,CAAoC,SAASkB,SAAT,CAAmBC,KAAnB,EAA0BC,GAA1B,EAA+B;EAC3F,MAAM;IACFC,QADE;IAEFC,WAAW,GAAGd,kBAFZ;IAGFe,OAAO,GAAGd,cAHR;IAIFe,oBAJE;IAKFC,KALE;IAMFC;EANE,IAOFP,KAPJ;EASA,MAAMQ,kBAAkB,GAAGrB,oBAAoB,CAAC;IAAEsB,YAAY,EAAEN;EAAhB,CAAD,CAA/C;EAEA,MAAMO,UAAU,GAAGH,mBAAmB,IAAIC,kBAA1C;EAEA,MAAMG,aAAa,GAAG/B,QAAQ,CAACgC,KAAT,CAAeV,QAAf,CAAtB;EACA,MAAMW,OAAO,GAAG/B,WAAW,CAAEgC,OAAD,IAAqB;IAC7C,IAAIvB,WAAW,CAACuB,OAAD,EAAUH,aAAV,CAAf,EAAyC;MACrCD,UAAU,CAACK,aAAX,CAAyBC,QAAzB,CAAkCF,OAAlC;IACH;EACJ,CAJ0B,EAIxB,CAACJ,UAAD,EAAaC,aAAb,CAJwB,CAA3B;EAMA5B,mBAAmB,CACfkB,GADe,EAEf,OAAO;IAAEY;EAAF,CAAP,CAFe,EAGf,CAACA,OAAD,CAHe,CAAnB;EAMA,MAAMI,SAAS,GAAGzB,YAAY,CAACkB,UAAD,CAA9B;EAEA,MAAMQ,YAAY,GAAGlC,OAAO,CAAC,OAAO;IAAEiC;EAAF,CAAP,CAAD,EAAwB,CAACA,SAAD,CAAxB,CAA5B;EAEA,oBACI,oBAAC,eAAD,CAAiB,QAAjB;IAA0B,KAAK,EAAEC;EAAjC,gBACI,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACxB,MAAM,CAACE,IAAR,EAAcU,KAAd;EAAb,GACK1B,QAAQ,CAACuC,GAAT,CAAajB,QAAb,EAAuB,CAACkB,KAAD,EAAQC,KAAR,kBACpB,oBAAC,oBAAD;IACI,GAAG,EAAEA,KADT;IAEI,QAAQ,EAAED,KAFd;IAGI,KAAK,EAAEC,KAHX;IAII,WAAW,EAAEX,UAAU,CAACD,YAJ5B;IAKI,OAAO,EAAEL,OALb;IAMI,0BAA0B,EAAE,CANhC,CAMmC;IANnC;IAOI,WAAW,EAAEC;EAPjB,EADH,CADL,CADJ,CADJ;AAiBH,CAhD2B,CAA5B;AAkDA,eAAeN,SAAf"}
@@ -0,0 +1,129 @@
1
+ import React, { Children, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
2
+ import RNViewPager from 'react-native-pager-view';
3
+ import { useSyncAnimatedValue } from '@fountain-ui/core';
4
+ import { ChildrenMemoizedPage } from './components';
5
+ import { usePageStore } from './hooks';
6
+ import { defaultInitialPage, defaultLoading, defaultOffscreenPageRerenderLimit, isValidPage } from './utils';
7
+ import InternalContext from './InternalContext';
8
+ const ViewPager = /*#__PURE__*/forwardRef(function ViewPager(props, ref) {
9
+ const {
10
+ children,
11
+ initialPage = defaultInitialPage,
12
+ keyboardDismissMode = 'on-drag',
13
+ loading = defaultLoading,
14
+ offscreenPageRerenderLimit = defaultOffscreenPageRerenderLimit,
15
+ onChange,
16
+ onPageScrollStateChanged,
17
+ pageForceRerenderKey,
18
+ scrollEnabled = true,
19
+ style,
20
+ UNSTABLE_sharedPage
21
+ } = props;
22
+ const fallbackSharedPage = useSyncAnimatedValue({
23
+ initialValue: initialPage
24
+ });
25
+ const sharedPage = UNSTABLE_sharedPage ?? fallbackSharedPage;
26
+ const pageRef = useRef(sharedPage.initialValue);
27
+ const desiredPageRef = useRef(NaN);
28
+ const pagerRef = useRef(null);
29
+ const animationFrameRef = useRef(NaN);
30
+ const numberOfPages = Children.count(children);
31
+ const setPage = useCallback(newPage => {
32
+ if (!isValidPage(newPage, numberOfPages)) {
33
+ return;
34
+ }
35
+
36
+ animationFrameRef.current = requestAnimationFrame(() => {
37
+ var _pagerRef$current;
38
+
39
+ if (Number.isFinite(desiredPageRef.current)) {
40
+ if (pageRef.current === desiredPageRef.current) {
41
+ // end of state machine. clear desired page.
42
+ desiredPageRef.current = NaN;
43
+ return;
44
+ }
45
+
46
+ if (newPage === desiredPageRef.current) {
47
+ return;
48
+ }
49
+ }
50
+
51
+ desiredPageRef.current = newPage;
52
+ (_pagerRef$current = pagerRef.current) === null || _pagerRef$current === void 0 ? void 0 : _pagerRef$current.setPage(newPage);
53
+ });
54
+ }, [numberOfPages]);
55
+ useEffect(() => {
56
+ return () => {
57
+ if (animationFrameRef.current) {
58
+ cancelAnimationFrame(animationFrameRef.current);
59
+ }
60
+ };
61
+ }, []);
62
+ useEffect(() => {
63
+ const animatedValue = sharedPage.animatedValue;
64
+ const id = animatedValue.addListener(newValue => {
65
+ const newPage = newValue.value;
66
+ pageRef.current = newPage;
67
+ setPage(newPage);
68
+ });
69
+ return () => {
70
+ animatedValue.removeListener(id);
71
+ };
72
+ }, [sharedPage, setPage]);
73
+ const handlePageSelected = useCallback(e => {
74
+ if (Number.isFinite(desiredPageRef.current)) {
75
+ // onPageSelected is called from outer controlling mechanism
76
+ // e.g. sharedPage.value is changed, setPage() is called
77
+ // Due to the onPageSelected bug,
78
+ // we don't trust the value from event, (e.nativeEvent.position)
79
+ // other than that trust the value from desiredPageRef.
80
+ const desiredPage = desiredPageRef.current;
81
+
82
+ if (pageRef.current === desiredPage) {
83
+ // end of state machine. clear desired page.
84
+ desiredPageRef.current = NaN;
85
+ } else {
86
+ sharedPage.animatedValue.setValue(desiredPage);
87
+ }
88
+
89
+ onChange === null || onChange === void 0 ? void 0 : onChange(desiredPage);
90
+ } else {
91
+ const trustfulNextPage = e.nativeEvent.position;
92
+
93
+ if (trustfulNextPage !== pageRef.current) {
94
+ desiredPageRef.current = trustfulNextPage;
95
+ sharedPage.animatedValue.setValue(trustfulNextPage);
96
+ onChange === null || onChange === void 0 ? void 0 : onChange(trustfulNextPage);
97
+ }
98
+ }
99
+ }, [onChange, sharedPage]);
100
+ useImperativeHandle(ref, () => ({
101
+ setPage
102
+ }), [setPage]);
103
+ const pageStore = usePageStore(sharedPage);
104
+ const contextValue = useMemo(() => ({
105
+ pageStore
106
+ }), [pageStore]);
107
+ return /*#__PURE__*/React.createElement(InternalContext.Provider, {
108
+ value: contextValue
109
+ }, /*#__PURE__*/React.createElement(RNViewPager, {
110
+ ref: pagerRef,
111
+ initialPage: sharedPage.initialValue,
112
+ keyboardDismissMode: keyboardDismissMode,
113
+ onPageScrollStateChanged: onPageScrollStateChanged,
114
+ onPageSelected: handlePageSelected,
115
+ pageMargin: 8,
116
+ scrollEnabled: scrollEnabled,
117
+ style: style
118
+ }, Children.map(children, (child, index) => /*#__PURE__*/React.createElement(ChildrenMemoizedPage, {
119
+ key: index,
120
+ children: child,
121
+ index: index,
122
+ initialPage: sharedPage.initialValue,
123
+ loading: loading,
124
+ offscreenPageRerenderLimit: offscreenPageRerenderLimit,
125
+ rerenderKey: pageForceRerenderKey
126
+ }))));
127
+ });
128
+ export default ViewPager;
129
+ //# sourceMappingURL=ViewPager.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Children","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","RNViewPager","useSyncAnimatedValue","ChildrenMemoizedPage","usePageStore","defaultInitialPage","defaultLoading","defaultOffscreenPageRerenderLimit","isValidPage","InternalContext","ViewPager","props","ref","children","initialPage","keyboardDismissMode","loading","offscreenPageRerenderLimit","onChange","onPageScrollStateChanged","pageForceRerenderKey","scrollEnabled","style","UNSTABLE_sharedPage","fallbackSharedPage","initialValue","sharedPage","pageRef","desiredPageRef","NaN","pagerRef","animationFrameRef","numberOfPages","count","setPage","newPage","current","requestAnimationFrame","Number","isFinite","cancelAnimationFrame","animatedValue","id","addListener","newValue","value","removeListener","handlePageSelected","e","desiredPage","setValue","trustfulNextPage","nativeEvent","position","pageStore","contextValue","map","child","index"],"sources":["ViewPager.native.tsx"],"sourcesContent":["import React, { Children, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport type { ViewPagerOnPageSelectedEvent } from 'react-native-pager-view';\nimport RNViewPager from 'react-native-pager-view';\nimport { useSyncAnimatedValue } from '@fountain-ui/core';\nimport { ChildrenMemoizedPage } from './components';\nimport type ViewPagerProps from './ViewPagerProps';\nimport type { ViewPagerInstance } from './types';\nimport { usePageStore } from './hooks';\nimport { defaultInitialPage, defaultLoading, defaultOffscreenPageRerenderLimit, isValidPage } from './utils';\nimport InternalContext from './InternalContext';\n\nconst ViewPager = forwardRef<ViewPagerInstance, ViewPagerProps>(function ViewPager(props, ref) {\n const {\n children,\n initialPage = defaultInitialPage,\n keyboardDismissMode = 'on-drag',\n loading = defaultLoading,\n offscreenPageRerenderLimit = defaultOffscreenPageRerenderLimit,\n onChange,\n onPageScrollStateChanged,\n pageForceRerenderKey,\n scrollEnabled = true,\n style,\n UNSTABLE_sharedPage,\n } = props;\n\n const fallbackSharedPage = useSyncAnimatedValue({ initialValue: initialPage });\n\n const sharedPage = UNSTABLE_sharedPage ?? fallbackSharedPage;\n\n const pageRef = useRef<number>(sharedPage.initialValue);\n\n const desiredPageRef = useRef<number>(NaN);\n\n const pagerRef = useRef<RNViewPager | null>(null);\n\n const animationFrameRef = useRef<number>(NaN);\n\n const numberOfPages = Children.count(children);\n const setPage = useCallback((newPage: number) => {\n if (!isValidPage(newPage, numberOfPages)) {\n return;\n }\n\n animationFrameRef.current = requestAnimationFrame(() => {\n if (Number.isFinite(desiredPageRef.current)) {\n if (pageRef.current === desiredPageRef.current) {\n // end of state machine. clear desired page.\n desiredPageRef.current = NaN;\n return;\n }\n\n if (newPage === desiredPageRef.current) {\n return;\n }\n }\n\n desiredPageRef.current = newPage;\n pagerRef.current?.setPage(newPage);\n });\n }, [numberOfPages]);\n\n useEffect(() => {\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, []);\n\n useEffect(() => {\n const animatedValue = sharedPage.animatedValue;\n const id = animatedValue.addListener(newValue => {\n const newPage = newValue.value;\n pageRef.current = newPage;\n setPage(newPage);\n });\n\n return () => {\n animatedValue.removeListener(id);\n };\n }, [sharedPage, setPage]);\n\n const handlePageSelected = useCallback((e: ViewPagerOnPageSelectedEvent) => {\n if (Number.isFinite(desiredPageRef.current)) {\n // onPageSelected is called from outer controlling mechanism\n // e.g. sharedPage.value is changed, setPage() is called\n // Due to the onPageSelected bug,\n // we don't trust the value from event, (e.nativeEvent.position)\n // other than that trust the value from desiredPageRef.\n\n const desiredPage = desiredPageRef.current;\n\n if (pageRef.current === desiredPage) {\n // end of state machine. clear desired page.\n desiredPageRef.current = NaN;\n } else {\n sharedPage.animatedValue.setValue(desiredPage);\n }\n\n onChange?.(desiredPage);\n } else {\n const trustfulNextPage = e.nativeEvent.position;\n\n if (trustfulNextPage !== pageRef.current) {\n desiredPageRef.current = trustfulNextPage;\n sharedPage.animatedValue.setValue(trustfulNextPage);\n\n onChange?.(trustfulNextPage);\n }\n }\n }, [onChange, sharedPage]);\n\n useImperativeHandle(\n ref,\n () => ({ setPage }),\n [setPage],\n );\n\n const pageStore = usePageStore(sharedPage);\n\n const contextValue = useMemo(() => ({ pageStore }), [pageStore]);\n\n return (\n <InternalContext.Provider value={contextValue}>\n <RNViewPager\n ref={pagerRef}\n initialPage={sharedPage.initialValue}\n keyboardDismissMode={keyboardDismissMode}\n onPageScrollStateChanged={onPageScrollStateChanged}\n onPageSelected={handlePageSelected}\n pageMargin={8}\n scrollEnabled={scrollEnabled}\n style={style}\n >\n {Children.map(children, (child, index) => (\n <ChildrenMemoizedPage\n key={index}\n children={child}\n index={index}\n initialPage={sharedPage.initialValue}\n loading={loading}\n offscreenPageRerenderLimit={offscreenPageRerenderLimit}\n rerenderKey={pageForceRerenderKey}\n />\n ))}\n </RNViewPager>\n </InternalContext.Provider>\n );\n});\n\nexport default ViewPager;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["ViewPagerProps.ts"],"sourcesContent":["import React from 'react';\nimport type { ViewProps } from 'react-native';\nimport type { ComponentProps } from '@fountain-ui/core';\n\nexport type KeyboardDismissMode = 'none' | 'on-drag';\n\nexport type PageProps = React.PropsWithChildren<ViewProps> & {\n isNeighbor: boolean;\n isVisible: boolean;\n rerenderKey?: any;\n};\n\nexport type PageComponent = React.ComponentType<PageProps>;\n\nexport type Loading = 'lazy' | 'eager';\n\nexport default interface ViewPagerProps extends ComponentProps<{\n /**\n * Collection of ViewPager components.\n */\n children?: React.ReactNode;\n\n /**\n * If `true`, enable page visible hint.\n * @default false\n */\n enableVisibleHint?: boolean;\n\n /**\n * If `true`, Based on the current index, the pages on the left and right are also rerender.\n * @default false\n */\n enableNeighborPageRerender?: boolean;\n\n /**\n * A number representing the index of the active page.\n */\n index: number,\n\n /**\n * Whether to load the page immediately (`eager`) or on an as-needed basis (`lazy`).\n * @default 'lazy'\n */\n loading?: Loading;\n\n /**\n * Callback fired when an index is changed.\n */\n onChange?: (newIndex: number) => void,\n\n /**\n * The component used to render the wrapper of the page.\n * @default 'ChildrenMemoizedPage'\n */\n pageComponent?: PageComponent,\n\n /**\n * When this value is changed, page will be rerender.\n */\n pageForceRerenderKey?: any;\n\n /**\n * Mobile only. Should pager view scroll, when scroll enabled.\n * @default true\n */\n scrollEnabled?: boolean;\n\n /**\n * Mobile only. Determines whether the keyboard gets dismissed in response to a drag.\n * @default 'on-drag'\n */\n keyboardDismissMode?: KeyboardDismissMode;\n}> {}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["ViewPagerProps.ts"],"sourcesContent":["import type { ReactNode, Ref } from 'react';\nimport type { PageScrollStateChangedNativeEvent } from 'react-native-pager-view';\nimport type { ComponentProps, SyncAnimatedValue } from '@fountain-ui/core';\nimport type { KeyboardDismissMode, Loading, ViewPagerInstance } from './types';\n\nexport default interface ViewPagerProps extends ComponentProps<{\n ref?: Ref<ViewPagerInstance>;\n\n /**\n * Collection of ViewPager components.\n */\n children?: ReactNode;\n\n /**\n * Index of initial page that should be selected.\n * @default 0\n */\n initialPage?: number;\n\n /**\n * Whether to load the page immediately (`eager`) or on an as-needed basis (`lazy`).\n * @default 'lazy'\n */\n loading?: Loading;\n\n /**\n * Mobile only. The number of pages that should be re-rendered to either side of the current page.\n * Changing this value after the component mount has no effect.\n * @default 0\n */\n offscreenPageRerenderLimit?: number;\n\n /**\n * Callback fired when an index is changed.\n */\n onChange?: (newIndex: number) => void;\n\n /**\n * Native only. This handler processes events that occur when the pager is scrolled horizontally.\n */\n onPageScrollStateChanged?: (event: PageScrollStateChangedNativeEvent) => void;\n\n /**\n * When this value is changed, page will be rerender.\n */\n pageForceRerenderKey?: any;\n\n /**\n * Mobile only. Should pager view scroll, when scroll enabled.\n * @default true\n */\n scrollEnabled?: boolean;\n\n /**\n * Mobile only. Determines whether the keyboard gets dismissed in response to a drag.\n * @default 'on-drag'\n */\n keyboardDismissMode?: KeyboardDismissMode;\n\n /**\n * Unstable API.\n */\n UNSTABLE_sharedPage?: SyncAnimatedValue;\n}> {}\n"],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import React, { memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { Platform, View } from 'react-native';
3
+ import { StyleSheet } from '@fountain-ui/core';
4
+ import { useForceRender } from '../hooks';
5
+ import PageStateContext from '../PageStateContext';
6
+ import InternalContext from '../InternalContext';
7
+ const styles = StyleSheet.create({
8
+ fill: {
9
+ width: '100%',
10
+ height: '100%'
11
+ },
12
+ none: {
13
+ display: 'none'
14
+ }
15
+ });
16
+
17
+ function Page(props) {
18
+ const {
19
+ index,
20
+ initialPage,
21
+ children,
22
+ loading,
23
+ offscreenPageRerenderLimit
24
+ } = props;
25
+ const {
26
+ pageStore
27
+ } = useContext(InternalContext);
28
+ const computePageDescription = useCallback(page => {
29
+ const activeIndex = page;
30
+ const isActive = index === activeIndex;
31
+ const shouldRerender = index >= activeIndex - offscreenPageRerenderLimit && index <= activeIndex + offscreenPageRerenderLimit;
32
+ const becomeNeighbor = shouldRerender && !isActive;
33
+ return {
34
+ isActive,
35
+ becomeNeighbor
36
+ };
37
+ }, [index]);
38
+ const [initialState] = useState(() => {
39
+ const {
40
+ isActive,
41
+ becomeNeighbor
42
+ } = computePageDescription(initialPage);
43
+
44
+ if (loading === 'eager') {
45
+ return {
46
+ active: isActive,
47
+ loaded: true
48
+ };
49
+ }
50
+
51
+ return {
52
+ active: isActive,
53
+ loaded: isActive || becomeNeighbor
54
+ };
55
+ }); // `Bailing out of a state update` is not working as expected.
56
+
57
+ const pageStateRef = useRef(initialState);
58
+ const forceRender = useForceRender();
59
+ const {
60
+ active,
61
+ loaded
62
+ } = pageStateRef.current;
63
+ const content = loaded ? children : null;
64
+ useEffect(() => {
65
+ return pageStore.subscribe(newPage => {
66
+ const {
67
+ isActive,
68
+ becomeNeighbor
69
+ } = computePageDescription(newPage);
70
+ const currentState = pageStateRef.current;
71
+ const newState = {
72
+ active: isActive,
73
+ loaded: isActive || becomeNeighbor ? true : currentState.loaded
74
+ };
75
+
76
+ if (currentState.active !== newState.active || currentState.loaded !== newState.loaded) {
77
+ pageStateRef.current = newState;
78
+ forceRender();
79
+ }
80
+ });
81
+ }, [pageStore, computePageDescription]);
82
+ const contextValue = useMemo(() => ({
83
+ isActive: active
84
+ }), [active]);
85
+ const style = Platform.OS === 'web' ? active ? StyleSheet.absoluteFill : styles.none : styles.fill;
86
+ return /*#__PURE__*/React.createElement(View, {
87
+ collapsable: false,
88
+ style: style
89
+ }, /*#__PURE__*/React.createElement(PageStateContext.Provider, {
90
+ value: contextValue
91
+ }, content));
92
+ }
93
+
94
+ export default /*#__PURE__*/memo(Page, (prevProps, nextProps) => {
95
+ if (prevProps.rerenderKey !== nextProps.rerenderKey) {
96
+ return false;
97
+ }
98
+
99
+ return prevProps.index === nextProps.index;
100
+ });
101
+ //# sourceMappingURL=ChildrenMemoizedPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","Platform","View","StyleSheet","useForceRender","PageStateContext","InternalContext","styles","create","fill","width","height","none","display","Page","props","index","initialPage","children","loading","offscreenPageRerenderLimit","pageStore","computePageDescription","page","activeIndex","isActive","shouldRerender","becomeNeighbor","initialState","active","loaded","pageStateRef","forceRender","current","content","subscribe","newPage","currentState","newState","contextValue","style","OS","absoluteFill","prevProps","nextProps","rerenderKey"],"sources":["ChildrenMemoizedPage.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ViewProps } from 'react-native';\nimport { Platform, View } from 'react-native';\nimport { StyleSheet } from '@fountain-ui/core';\nimport type { Loading } from '../types';\nimport { useForceRender } from '../hooks';\nimport PageStateContext from '../PageStateContext';\nimport InternalContext from '../InternalContext';\n\nconst styles = StyleSheet.create({\n fill: { width: '100%', height: '100%' },\n none: { display: 'none' },\n});\n\nexport type PageProps = PropsWithChildren<ViewProps> & {\n index: number;\n initialPage: number;\n loading: Loading;\n offscreenPageRerenderLimit: number;\n rerenderKey?: any;\n};\n\ninterface InternalPageDescription {\n isActive: boolean;\n becomeNeighbor: boolean;\n}\n\ninterface InternalPageState {\n active: boolean;\n loaded: boolean;\n}\n\nfunction Page(props: PageProps) {\n const {\n index,\n initialPage,\n children,\n loading,\n offscreenPageRerenderLimit,\n } = props;\n\n const { pageStore } = useContext(InternalContext);\n\n const computePageDescription: (page: number) => InternalPageDescription = useCallback((page: number) => {\n const activeIndex = page;\n\n const isActive = index === activeIndex;\n\n const shouldRerender = index >= activeIndex - offscreenPageRerenderLimit\n && index <= activeIndex + offscreenPageRerenderLimit;\n\n const becomeNeighbor = shouldRerender && !isActive;\n\n return { isActive, becomeNeighbor };\n }, [index]);\n\n const [initialState] = useState<InternalPageState>(() => {\n const { isActive, becomeNeighbor } = computePageDescription(initialPage);\n\n if (loading === 'eager') {\n return { active: isActive, loaded: true };\n }\n\n return { active: isActive, loaded: isActive || becomeNeighbor };\n });\n\n // `Bailing out of a state update` is not working as expected.\n const pageStateRef = useRef<InternalPageState>(initialState);\n const forceRender = useForceRender();\n\n const { active, loaded } = pageStateRef.current;\n\n const content = loaded ? children : null;\n\n useEffect(() => {\n return pageStore.subscribe(newPage => {\n const { isActive, becomeNeighbor } = computePageDescription(newPage);\n\n const currentState = pageStateRef.current;\n\n const newState: InternalPageState = {\n active: isActive,\n loaded: isActive || becomeNeighbor ? true : currentState.loaded,\n };\n\n if (\n currentState.active !== newState.active\n || currentState.loaded !== newState.loaded\n ) {\n pageStateRef.current = newState;\n\n forceRender();\n }\n });\n }, [pageStore, computePageDescription]);\n\n const contextValue = useMemo(() => ({\n isActive: active,\n }), [active]);\n\n const style = Platform.OS === 'web'\n ? (active ? StyleSheet.absoluteFill : styles.none)\n : styles.fill;\n\n return (\n <View\n collapsable={false}\n style={style}\n >\n <PageStateContext.Provider value={contextValue}>\n {content}\n </PageStateContext.Provider>\n </View>\n );\n}\n\nexport default memo(Page, (prevProps, nextProps) => {\n if (prevProps.rerenderKey !== nextProps.rerenderKey) {\n return false;\n }\n\n return prevProps.index === nextProps.index;\n});\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+ import { SimpleStore } from '@fountain-ui/core';
3
+ import FluxContext from '../FluxContext';
4
+ export default function FluxStoreProvider(props) {
5
+ const {
6
+ children,
7
+ initialState
8
+ } = props;
9
+ const store = useRef(new SimpleStore(initialState)).current;
10
+ useEffect(() => {
11
+ return () => {
12
+ store.removeAllListeners();
13
+ };
14
+ }, [store]);
15
+ return /*#__PURE__*/React.createElement(FluxContext.Provider, {
16
+ value: store
17
+ }, children);
18
+ }
19
+ ;
20
+ //# sourceMappingURL=FluxStoreProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","SimpleStore","FluxContext","FluxStoreProvider","props","children","initialState","store","current","removeAllListeners"],"sources":["FluxStoreProvider.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { SimpleStore } from '@fountain-ui/core';\nimport type { FluxStore } from '../FluxContext';\nimport FluxContext from '../FluxContext';\n\nexport interface FluxStoreProviderProps<State> {\n children: React.ReactElement;\n initialState: State;\n}\n\nexport default function FluxStoreProvider<State>(props: FluxStoreProviderProps<State>) {\n const { children, initialState } = props;\n\n const store = useRef<FluxStore<State>>(new SimpleStore(initialState)).current;\n\n useEffect(() => {\n return () => {\n store.removeAllListeners();\n };\n }, [store]);\n\n return (\n <FluxContext.Provider value={store}>\n {children}\n </FluxContext.Provider>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,QAAyC,OAAzC;AACA,SAASC,WAAT,QAA4B,mBAA5B;AAEA,OAAOC,WAAP,MAAwB,gBAAxB;AAOA,eAAe,SAASC,iBAAT,CAAkCC,KAAlC,EAAwE;EACnF,MAAM;IAAEC,QAAF;IAAYC;EAAZ,IAA6BF,KAAnC;EAEA,MAAMG,KAAK,GAAGP,MAAM,CAAmB,IAAIC,WAAJ,CAAgBK,YAAhB,CAAnB,CAAN,CAAwDE,OAAtE;EAEAT,SAAS,CAAC,MAAM;IACZ,OAAO,MAAM;MACTQ,KAAK,CAACE,kBAAN;IACH,CAFD;EAGH,CAJQ,EAIN,CAACF,KAAD,CAJM,CAAT;EAMA,oBACI,oBAAC,WAAD,CAAa,QAAb;IAAsB,KAAK,EAAEA;EAA7B,GACKF,QADL,CADJ;AAKH;AAAA"}
@@ -0,0 +1,3 @@
1
+ export { default as ChildrenMemoizedPage } from './ChildrenMemoizedPage';
2
+ export { default as FluxStoreProvider } from './FluxStoreProvider';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","ChildrenMemoizedPage","FluxStoreProvider"],"sources":["index.ts"],"sourcesContent":["export { default as ChildrenMemoizedPage } from './ChildrenMemoizedPage';\nexport { default as FluxStoreProvider } from './FluxStoreProvider';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,oBAApB,QAAgD,wBAAhD;AACA,SAASD,OAAO,IAAIE,iBAApB,QAA6C,qBAA7C"}
@@ -0,0 +1,8 @@
1
+ export { default as useDispatch } from './useDispatch';
2
+ export { default as useEagerState } from './useEagerState';
3
+ export { default as useForceRender } from './useForceRender';
4
+ export { default as useLazyState } from './useLazyState';
5
+ export { default as usePageStore } from './usePageStore';
6
+ export { default as useStore } from './useStore';
7
+ export { default as useViewPagerPageState } from './useViewPagerPageState';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","useDispatch","useEagerState","useForceRender","useLazyState","usePageStore","useStore","useViewPagerPageState"],"sources":["index.ts"],"sourcesContent":["export { default as useDispatch } from './useDispatch';\nexport { default as useEagerState } from './useEagerState';\nexport { default as useForceRender } from './useForceRender';\nexport { default as useLazyState } from './useLazyState';\nexport { default as usePageStore } from './usePageStore';\nexport { default as useStore } from './useStore';\nexport { default as useViewPagerPageState } from './useViewPagerPageState';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAApB,QAAuC,eAAvC;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,iBAAzC;AACA,SAASF,OAAO,IAAIG,cAApB,QAA0C,kBAA1C;AACA,SAASH,OAAO,IAAII,YAApB,QAAwC,gBAAxC;AACA,SAASJ,OAAO,IAAIK,YAApB,QAAwC,gBAAxC;AACA,SAASL,OAAO,IAAIM,QAApB,QAAoC,YAApC;AACA,SAASN,OAAO,IAAIO,qBAApB,QAAiD,yBAAjD"}
@@ -0,0 +1,10 @@
1
+ import { useCallback } from 'react';
2
+ import useStore from './useStore';
3
+ export default function useDispatch() {
4
+ const store = useStore();
5
+ return useCallback(action => {
6
+ store.dispatch(action);
7
+ }, [store]);
8
+ }
9
+ ;
10
+ //# sourceMappingURL=useDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useStore","useDispatch","store","action","dispatch"],"sources":["useDispatch.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport type { DispatchAction } from '@fountain-ui/core';\nimport useStore from './useStore';\n\nexport default function useDispatch<State>() {\n const store = useStore<State>();\n\n return useCallback((action: DispatchAction<State>) => {\n store.dispatch(action);\n }, [store]);\n};\n"],"mappings":"AAAA,SAASA,WAAT,QAA4B,OAA5B;AAEA,OAAOC,QAAP,MAAqB,YAArB;AAEA,eAAe,SAASC,WAAT,GAA8B;EACzC,MAAMC,KAAK,GAAGF,QAAQ,EAAtB;EAEA,OAAOD,WAAW,CAAEI,MAAD,IAAmC;IAClDD,KAAK,CAACE,QAAN,CAAeD,MAAf;EACH,CAFiB,EAEf,CAACD,KAAD,CAFe,CAAlB;AAGH;AAAA"}
@@ -0,0 +1,12 @@
1
+ import { useEffect, useState } from 'react';
2
+ import useStore from './useStore';
3
+ export default function useEagerState() {
4
+ const store = useStore();
5
+ const [state, setState] = useState(() => store.getState());
6
+ useEffect(() => {
7
+ return store.subscribe(setState);
8
+ }, [store]);
9
+ return state;
10
+ }
11
+ ;
12
+ //# sourceMappingURL=useEagerState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useState","useStore","useEagerState","store","state","setState","getState","subscribe"],"sources":["useEagerState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport useStore from './useStore';\n\nexport default function useEagerState<State>(): State {\n const store = useStore<State>();\n\n const [state, setState] = useState<State>(() => store.getState());\n\n useEffect(() => {\n return store.subscribe(setState);\n }, [store]);\n\n return state;\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,OAApC;AACA,OAAOC,QAAP,MAAqB,YAArB;AAEA,eAAe,SAASC,aAAT,GAAuC;EAClD,MAAMC,KAAK,GAAGF,QAAQ,EAAtB;EAEA,MAAM,CAACG,KAAD,EAAQC,QAAR,IAAoBL,QAAQ,CAAQ,MAAMG,KAAK,CAACG,QAAN,EAAd,CAAlC;EAEAP,SAAS,CAAC,MAAM;IACZ,OAAOI,KAAK,CAACI,SAAN,CAAgBF,QAAhB,CAAP;EACH,CAFQ,EAEN,CAACF,KAAD,CAFM,CAAT;EAIA,OAAOC,KAAP;AACH;AAAA"}
@@ -0,0 +1,7 @@
1
+ import { useReducer } from 'react';
2
+ export default function useForceRender() {
3
+ const [, forceRender] = useReducer(s => s + 1, 0);
4
+ return forceRender;
5
+ }
6
+ ;
7
+ //# sourceMappingURL=useForceRender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useReducer","useForceRender","forceRender","s"],"sources":["useForceRender.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nexport default function useForceRender() {\n const [, forceRender] = useReducer((s) => s + 1, 0);\n\n return forceRender;\n};\n"],"mappings":"AAAA,SAASA,UAAT,QAA2B,OAA3B;AAEA,eAAe,SAASC,cAAT,GAA0B;EACrC,MAAM,GAAGC,WAAH,IAAkBF,UAAU,CAAEG,CAAD,IAAOA,CAAC,GAAG,CAAZ,EAAe,CAAf,CAAlC;EAEA,OAAOD,WAAP;AACH;AAAA"}
@@ -0,0 +1,28 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { refEqual } from '../utils';
3
+ import useForceRender from './useForceRender';
4
+ import useViewPagerPageState from './useViewPagerPageState';
5
+ import useStore from './useStore';
6
+ export default function useLazyState() {
7
+ let equalityFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : refEqual;
8
+ const store = useStore();
9
+ const stateRef = useRef(store.getState());
10
+ const forceRender = useForceRender();
11
+ const pageState = useViewPagerPageState();
12
+ useEffect(() => {
13
+ return store.subscribe(newState => {
14
+ if (equalityFn(stateRef.current, newState)) {
15
+ return;
16
+ }
17
+
18
+ stateRef.current = newState;
19
+
20
+ if (pageState !== null && pageState !== void 0 && pageState.isActive) {
21
+ forceRender();
22
+ }
23
+ });
24
+ }, [store, pageState === null || pageState === void 0 ? void 0 : pageState.isActive]);
25
+ return stateRef.current;
26
+ }
27
+ ;
28
+ //# sourceMappingURL=useLazyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","refEqual","useForceRender","useViewPagerPageState","useStore","useLazyState","equalityFn","store","stateRef","getState","forceRender","pageState","subscribe","newState","current","isActive"],"sources":["useLazyState.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { EqualityFunction } from '../types';\nimport { refEqual } from '../utils';\nimport useForceRender from './useForceRender';\nimport useViewPagerPageState from './useViewPagerPageState';\nimport useStore from './useStore';\n\nexport default function useLazyState<State>(equalityFn: EqualityFunction<State> = refEqual): State {\n const store = useStore<State>();\n\n const stateRef = useRef<State>(store.getState());\n\n const forceRender = useForceRender();\n\n const pageState = useViewPagerPageState();\n\n useEffect(() => {\n return store.subscribe(newState => {\n if (equalityFn(stateRef.current, newState)) {\n return;\n }\n\n stateRef.current = newState;\n\n if (pageState?.isActive) {\n forceRender();\n }\n });\n }, [store, pageState?.isActive]);\n\n return stateRef.current;\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,MAApB,QAAkC,OAAlC;AAEA,SAASC,QAAT,QAAyB,UAAzB;AACA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,OAAOC,qBAAP,MAAkC,yBAAlC;AACA,OAAOC,QAAP,MAAqB,YAArB;AAEA,eAAe,SAASC,YAAT,GAAoF;EAAA,IAAvDC,UAAuD,uEAAjBL,QAAiB;EAC/F,MAAMM,KAAK,GAAGH,QAAQ,EAAtB;EAEA,MAAMI,QAAQ,GAAGR,MAAM,CAAQO,KAAK,CAACE,QAAN,EAAR,CAAvB;EAEA,MAAMC,WAAW,GAAGR,cAAc,EAAlC;EAEA,MAAMS,SAAS,GAAGR,qBAAqB,EAAvC;EAEAJ,SAAS,CAAC,MAAM;IACZ,OAAOQ,KAAK,CAACK,SAAN,CAAgBC,QAAQ,IAAI;MAC/B,IAAIP,UAAU,CAACE,QAAQ,CAACM,OAAV,EAAmBD,QAAnB,CAAd,EAA4C;QACxC;MACH;;MAEDL,QAAQ,CAACM,OAAT,GAAmBD,QAAnB;;MAEA,IAAIF,SAAJ,aAAIA,SAAJ,eAAIA,SAAS,CAAEI,QAAf,EAAyB;QACrBL,WAAW;MACd;IACJ,CAVM,CAAP;EAWH,CAZQ,EAYN,CAACH,KAAD,EAAQI,SAAR,aAAQA,SAAR,uBAAQA,SAAS,CAAEI,QAAnB,CAZM,CAAT;EAcA,OAAOP,QAAQ,CAACM,OAAhB;AACH;AAAA"}
@@ -0,0 +1,25 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { SimpleStore } from '@fountain-ui/core';
3
+ export default function usePageStore(value) {
4
+ const {
5
+ animatedValue,
6
+ initialValue
7
+ } = value;
8
+ const store = useRef(new SimpleStore(initialValue)).current;
9
+ useEffect(() => {
10
+ const id = animatedValue.addListener(newPage => {
11
+ store.dispatch(newPage.value);
12
+ });
13
+ return () => {
14
+ animatedValue.removeListener(id);
15
+ };
16
+ }, [animatedValue]);
17
+ useEffect(() => {
18
+ return () => {
19
+ store.removeAllListeners();
20
+ };
21
+ }, [store]);
22
+ return store;
23
+ }
24
+ ;
25
+ //# sourceMappingURL=usePageStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","SimpleStore","usePageStore","value","animatedValue","initialValue","store","current","id","addListener","newPage","dispatch","removeListener","removeAllListeners"],"sources":["usePageStore.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { MonoStore, SyncAnimatedValue } from '@fountain-ui/core';\nimport { SimpleStore } from '@fountain-ui/core';\n\nexport default function usePageStore(value: SyncAnimatedValue): MonoStore<number> {\n const {\n animatedValue,\n initialValue,\n } = value;\n\n const store = useRef(new SimpleStore(initialValue)).current;\n\n useEffect(() => {\n const id = animatedValue.addListener((newPage) => {\n store.dispatch(newPage.value);\n });\n\n return () => {\n animatedValue.removeListener(id);\n };\n }, [animatedValue]);\n\n useEffect(() => {\n return () => {\n store.removeAllListeners();\n };\n }, [store]);\n\n return store;\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,MAApB,QAAkC,OAAlC;AAEA,SAASC,WAAT,QAA4B,mBAA5B;AAEA,eAAe,SAASC,YAAT,CAAsBC,KAAtB,EAAmE;EAC9E,MAAM;IACFC,aADE;IAEFC;EAFE,IAGFF,KAHJ;EAKA,MAAMG,KAAK,GAAGN,MAAM,CAAC,IAAIC,WAAJ,CAAgBI,YAAhB,CAAD,CAAN,CAAsCE,OAApD;EAEAR,SAAS,CAAC,MAAM;IACZ,MAAMS,EAAE,GAAGJ,aAAa,CAACK,WAAd,CAA2BC,OAAD,IAAa;MAC9CJ,KAAK,CAACK,QAAN,CAAeD,OAAO,CAACP,KAAvB;IACH,CAFU,CAAX;IAIA,OAAO,MAAM;MACTC,aAAa,CAACQ,cAAd,CAA6BJ,EAA7B;IACH,CAFD;EAGH,CARQ,EAQN,CAACJ,aAAD,CARM,CAAT;EAUAL,SAAS,CAAC,MAAM;IACZ,OAAO,MAAM;MACTO,KAAK,CAACO,kBAAN;IACH,CAFD;EAGH,CAJQ,EAIN,CAACP,KAAD,CAJM,CAAT;EAMA,OAAOA,KAAP;AACH;AAAA"}
@@ -0,0 +1,14 @@
1
+ import { useContext } from 'react';
2
+ import FluxContext from '../FluxContext';
3
+ export default function useStore() {
4
+ // @ts-ignore
5
+ const store = useContext(FluxContext);
6
+
7
+ if (store == null) {
8
+ throw new Error('You should wrap your parent component with `FluxStoreProvider`');
9
+ }
10
+
11
+ return store;
12
+ }
13
+ ;
14
+ //# sourceMappingURL=useStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useContext","FluxContext","useStore","store","Error"],"sources":["useStore.ts"],"sourcesContent":["import { useContext } from 'react';\nimport type { FluxStore } from '../FluxContext';\nimport FluxContext from '../FluxContext';\n\nexport default function useStore<State>(): FluxStore<State> {\n // @ts-ignore\n const store = useContext<FluxStore<State>>(FluxContext);\n if (store == null) {\n throw new Error(\n 'You should wrap your parent component with `FluxStoreProvider`',\n );\n }\n\n return store;\n};\n"],"mappings":"AAAA,SAASA,UAAT,QAA2B,OAA3B;AAEA,OAAOC,WAAP,MAAwB,gBAAxB;AAEA,eAAe,SAASC,QAAT,GAA6C;EACxD;EACA,MAAMC,KAAK,GAAGH,UAAU,CAAmBC,WAAnB,CAAxB;;EACA,IAAIE,KAAK,IAAI,IAAb,EAAmB;IACf,MAAM,IAAIC,KAAJ,CACF,gEADE,CAAN;EAGH;;EAED,OAAOD,KAAP;AACH;AAAA"}
@@ -0,0 +1,7 @@
1
+ import { useContext } from 'react';
2
+ import PageStateContext from '../PageStateContext';
3
+ export default function useViewPagerPageState() {
4
+ return useContext(PageStateContext);
5
+ }
6
+ ;
7
+ //# sourceMappingURL=useViewPagerPageState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useContext","PageStateContext","useViewPagerPageState"],"sources":["useViewPagerPageState.ts"],"sourcesContent":["import { useContext } from 'react';\nimport PageStateContext from '../PageStateContext';\n\nexport default function useViewPagerPageState() {\n return useContext(PageStateContext);\n};\n"],"mappings":"AAAA,SAASA,UAAT,QAA2B,OAA3B;AACA,OAAOC,gBAAP,MAA6B,qBAA7B;AAEA,eAAe,SAASC,qBAAT,GAAiC;EAC5C,OAAOF,UAAU,CAACC,gBAAD,CAAjB;AACH;AAAA"}
@@ -1,2 +1,4 @@
1
- export { default } from './ViewPagerWeb';
1
+ export { default } from './ViewPager';
2
+ export { useDispatch as useFluxDispatch, useEagerState, useStore as useFluxStore, useLazyState, useViewPagerPageState } from './hooks';
3
+ export { FluxStoreProvider } from './components';
2
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["export { default } from './ViewPagerWeb';\nexport type { default as ViewPagerProps } from './ViewPagerProps';"],"mappings":"AAAA,SAASA,OAAT,QAAwB,gBAAxB"}
1
+ {"version":3,"names":["default","useDispatch","useFluxDispatch","useEagerState","useStore","useFluxStore","useLazyState","useViewPagerPageState","FluxStoreProvider"],"sources":["index.ts"],"sourcesContent":["export { default } from './ViewPager';\nexport type { default as ViewPagerProps } from './ViewPagerProps';\nexport type { ViewPagerInstance } from './types';\nexport {\n useDispatch as useFluxDispatch,\n useEagerState,\n useStore as useFluxStore,\n useLazyState,\n useViewPagerPageState,\n} from './hooks';\nexport { FluxStoreProvider } from './components';\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,aAAxB;AAGA,SACIC,WAAW,IAAIC,eADnB,EAEIC,aAFJ,EAGIC,QAAQ,IAAIC,YAHhB,EAIIC,YAJJ,EAKIC,qBALJ,QAMO,SANP;AAOA,SAASC,iBAAT,QAAkC,cAAlC"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type KeyboardDismissMode = 'none' | 'on-drag';\n\nexport type Loading = 'lazy' | 'eager';\n\nexport interface EqualityFunction<State> {\n (a: State, b: State): boolean;\n}\n\nexport interface ViewPagerInstance {\n /**\n * Function to scroll to a specific page in the ViewPager. Invalid index is ignored.\n * @param index\n */\n setPage: (index: number) => void;\n}\n"],"mappings":""}
@@ -1,36 +1,8 @@
1
- import React from 'react';
2
- import ChildrenMemoizedPage from './ChildrenMemoizedPage';
3
- export const defaultEnableVisibleHint = false;
4
- export const defaultEnableNeighborPageRerender = false;
1
+ export const defaultInitialPage = 0;
5
2
  export const defaultLoading = 'lazy';
6
- export const defaultPageComponent = ChildrenMemoizedPage;
7
- export const usePageRenderer = _ref => {
8
- let {
9
- enableVisibleHint,
10
- index: currentIndex,
11
- loading,
12
- pageComponent: PageComponent,
13
- pageForceRerenderKey,
14
- enableNeighborPageRerender
15
- } = _ref;
16
- const pagesStateRef = React.useRef([]);
17
- pagesStateRef.current[currentIndex] = { ...pagesStateRef.current[currentIndex],
18
- visited: true
19
- };
20
- return children => React.Children.map(children, (child, index) => {
21
- var _pagesStateRef$curren;
22
-
23
- const visited = ((_pagesStateRef$curren = pagesStateRef.current[index]) === null || _pagesStateRef$curren === void 0 ? void 0 : _pagesStateRef$curren.visited) ?? false;
24
- const content = loading === 'eager' || visited ? child : null;
25
- const isVisible = enableVisibleHint ? index === currentIndex : false;
26
- const isNeighborIndex = index === currentIndex - 1 || index === currentIndex + 1;
27
- return /*#__PURE__*/React.createElement(PageComponent, {
28
- key: index,
29
- children: content,
30
- isNeighbor: enableNeighborPageRerender && isNeighborIndex,
31
- isVisible: isVisible,
32
- rerenderKey: pageForceRerenderKey
33
- });
34
- });
35
- };
3
+ export const defaultOffscreenPageRerenderLimit = 0;
4
+ export const refEqual = (a, b) => a === b;
5
+ export function isValidPage(maybePage, numberOfPages) {
6
+ return Number.isInteger(maybePage) && maybePage >= 0 && maybePage < numberOfPages;
7
+ }
36
8
  //# sourceMappingURL=utils.js.map