@fountain-ui/lab 2.0.0-beta.9 → 3.0.0-alpha.2

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,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useItemInterpolation;
7
+
8
+ var _react = require("react");
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _InternalContext = _interopRequireDefault(require("./InternalContext"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ const OVERSCROLL_FRICTION_FACTOR = 4;
17
+
18
+ function useItemInterpolation(index) {
19
+ const {
20
+ itemWidth,
21
+ data,
22
+ globalInterpolation,
23
+ loop
24
+ } = (0, _react.useContext)(_InternalContext.default);
25
+ const numberOfData = data.length;
26
+ const interpolationConfigOnLoop = (0, _react.useMemo)(() => {
27
+ const lastIndex = numberOfData - 1;
28
+ const maxWidth = Math.abs(itemWidth * numberOfData);
29
+ const halfOfItemWidth = 0.5 * itemWidth;
30
+ const positiveCount = Math.round(lastIndex / 2);
31
+ const startPosition = index > positiveCount ? (index - numberOfData) * itemWidth : itemWidth * index;
32
+ const max = positiveCount * itemWidth;
33
+ const min = -((lastIndex - positiveCount) * itemWidth);
34
+ const inputRange = [-maxWidth, min - halfOfItemWidth - startPosition - Number.MIN_VALUE, min - halfOfItemWidth - startPosition, 0, max + halfOfItemWidth - startPosition, max + halfOfItemWidth - startPosition + Number.MIN_VALUE, maxWidth];
35
+ const outputRange = [startPosition, max + halfOfItemWidth - Number.MIN_VALUE, min - halfOfItemWidth, startPosition, max + halfOfItemWidth, min - halfOfItemWidth + Number.MIN_VALUE, startPosition];
36
+ return {
37
+ inputRange,
38
+ outputRange,
39
+ extrapolate: 'clamp'
40
+ };
41
+ }, [index, itemWidth, numberOfData]);
42
+ const interpolationConfigOnNoLoop = (0, _react.useMemo)(() => {
43
+ const lastIndex = numberOfData - 1;
44
+ const maxWidth = itemWidth * lastIndex;
45
+ const startPosition = itemWidth * index;
46
+ const friction = itemWidth / OVERSCROLL_FRICTION_FACTOR;
47
+ const inputRange = [-(maxWidth + itemWidth), // overscroll
48
+ -maxWidth, 0, itemWidth // overscroll
49
+ ];
50
+ const outputRange = [-maxWidth + startPosition - friction, -maxWidth + startPosition, startPosition, startPosition + friction];
51
+ return {
52
+ inputRange,
53
+ outputRange,
54
+ extrapolate: 'clamp'
55
+ };
56
+ }, [index, itemWidth, numberOfData]);
57
+ return (0, _react.useMemo)(() => {
58
+ const interpolationConfig = loop ? interpolationConfigOnLoop : interpolationConfigOnNoLoop;
59
+ const localOffsetX = globalInterpolation.interpolate(interpolationConfig);
60
+ return _reactNative.Animated.divide(localOffsetX, itemWidth);
61
+ }, [globalInterpolation, interpolationConfigOnLoop, interpolationConfigOnNoLoop, itemWidth, loop]);
62
+ }
63
+
64
+ ;
65
+ //# sourceMappingURL=useItemInterpolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OVERSCROLL_FRICTION_FACTOR","useItemInterpolation","index","itemWidth","data","globalInterpolation","loop","useContext","InternalContext","numberOfData","length","interpolationConfigOnLoop","useMemo","lastIndex","maxWidth","Math","abs","halfOfItemWidth","positiveCount","round","startPosition","max","min","inputRange","Number","MIN_VALUE","outputRange","extrapolate","interpolationConfigOnNoLoop","friction","interpolationConfig","localOffsetX","interpolate","Animated","divide"],"sources":["useItemInterpolation.ts"],"sourcesContent":["import { useContext, useMemo } from 'react';\nimport { Animated } from 'react-native';\nimport InternalContext from './InternalContext';\n\nconst OVERSCROLL_FRICTION_FACTOR = 4;\n\nexport default function useItemInterpolation(index: number): Animated.AnimatedInterpolation {\n const {\n itemWidth,\n data,\n globalInterpolation,\n loop,\n } = useContext(InternalContext);\n\n const numberOfData = data.length;\n\n const interpolationConfigOnLoop = useMemo<Animated.InterpolationConfigType>(() => {\n const lastIndex = numberOfData - 1;\n const maxWidth = Math.abs(itemWidth * numberOfData);\n const halfOfItemWidth = 0.5 * itemWidth;\n\n const positiveCount = Math.round(lastIndex / 2);\n const startPosition = index > positiveCount\n ? (index - numberOfData) * itemWidth\n : itemWidth * index;\n\n const max = positiveCount * itemWidth;\n const min = -((lastIndex - positiveCount) * itemWidth);\n\n const inputRange = [\n -maxWidth,\n min - halfOfItemWidth - startPosition - Number.MIN_VALUE,\n min - halfOfItemWidth - startPosition,\n 0,\n max + halfOfItemWidth - startPosition,\n max + halfOfItemWidth - startPosition + Number.MIN_VALUE,\n maxWidth,\n ];\n\n const outputRange = [\n startPosition,\n max + halfOfItemWidth - Number.MIN_VALUE,\n min - halfOfItemWidth,\n startPosition,\n max + halfOfItemWidth,\n min - halfOfItemWidth + Number.MIN_VALUE,\n startPosition,\n ];\n\n return {\n inputRange,\n outputRange,\n extrapolate: 'clamp',\n };\n }, [\n index,\n itemWidth,\n numberOfData,\n ]);\n\n const interpolationConfigOnNoLoop = useMemo<Animated.InterpolationConfigType>(() => {\n const lastIndex = numberOfData - 1;\n const maxWidth = itemWidth * lastIndex;\n const startPosition = itemWidth * index;\n const friction = itemWidth / OVERSCROLL_FRICTION_FACTOR;\n\n const inputRange = [\n -(maxWidth + itemWidth), // overscroll\n -maxWidth,\n 0,\n itemWidth, // overscroll\n ];\n\n const outputRange = [\n -maxWidth + startPosition - friction,\n -maxWidth + startPosition,\n startPosition,\n startPosition + friction,\n ];\n\n return {\n inputRange,\n outputRange,\n extrapolate: 'clamp',\n };\n }, [\n index,\n itemWidth,\n numberOfData,\n ]);\n\n return useMemo(() => {\n const interpolationConfig = loop\n ? interpolationConfigOnLoop\n : interpolationConfigOnNoLoop;\n\n const localOffsetX = globalInterpolation.interpolate(interpolationConfig);\n\n return Animated.divide(localOffsetX, itemWidth);\n }, [\n globalInterpolation,\n interpolationConfigOnLoop,\n interpolationConfigOnNoLoop,\n itemWidth,\n loop,\n ]);\n};\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useAutoplayController", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useAutoplayController.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useIndexController", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _useIndexController.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "useItemVisibilityStore", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _useItemVisibilityStore.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "useLoopedData", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _useLoopedData.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "usePagingAnimator", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _usePagingAnimator.default;
34
+ }
35
+ });
36
+
37
+ var _useAutoplayController = _interopRequireDefault(require("./useAutoplayController"));
38
+
39
+ var _useIndexController = _interopRequireDefault(require("./useIndexController"));
40
+
41
+ var _useLoopedData = _interopRequireDefault(require("./useLoopedData"));
42
+
43
+ var _usePagingAnimator = _interopRequireDefault(require("./usePagingAnimator"));
44
+
45
+ var _useItemVisibilityStore = _interopRequireDefault(require("./useItemVisibilityStore"));
46
+
47
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as useAutoplayController } from './useAutoplayController';\nexport { default as useIndexController } from './useIndexController';\nexport { default as useLoopedData } from './useLoopedData';\nexport { default as usePagingAnimator } from './usePagingAnimator';\nexport { default as useItemVisibilityStore } from './useItemVisibilityStore';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useAutoplayController;
7
+
8
+ var _react = require("react");
9
+
10
+ var _hooks = require("../../hooks");
11
+
12
+ function useAutoplayController(config) {
13
+ const {
14
+ enabled,
15
+ intervalMillis,
16
+ startPagingAnimation
17
+ } = config;
18
+ const paused = (0, _react.useRef)(false);
19
+ const executor = (0, _hooks.useDeferredExecutor)();
20
+ const play = (0, _react.useCallback)(() => {
21
+ if (paused.current) {
22
+ return;
23
+ }
24
+
25
+ executor.execute(() => {
26
+ startPagingAnimation('directional', {
27
+ direction: 'next',
28
+ isOriginatedFromGesture: false
29
+ });
30
+ play();
31
+ }, intervalMillis);
32
+ }, [intervalMillis, startPagingAnimation]);
33
+ const pause = (0, _react.useCallback)(() => {
34
+ executor.cancel();
35
+ paused.current = true;
36
+ }, []);
37
+ const resume = (0, _react.useCallback)(() => {
38
+ paused.current = false;
39
+
40
+ if (enabled) {
41
+ play();
42
+ }
43
+ }, [play, enabled]);
44
+ (0, _react.useEffect)(() => {
45
+ if (enabled) {
46
+ resume();
47
+ } else {
48
+ pause();
49
+ }
50
+ }, [enabled]);
51
+ return {
52
+ pause,
53
+ resume
54
+ };
55
+ }
56
+
57
+ ;
58
+ //# sourceMappingURL=useAutoplayController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useAutoplayController","config","enabled","intervalMillis","startPagingAnimation","paused","useRef","executor","useDeferredExecutor","play","useCallback","current","execute","direction","isOriginatedFromGesture","pause","cancel","resume","useEffect"],"sources":["useAutoplayController.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport type { AutoplayController, StartPagingAnimation } from '../types';\nimport { useDeferredExecutor } from '../../hooks';\n\nexport interface AutoplayConfig {\n enabled: boolean;\n intervalMillis: number;\n startPagingAnimation: StartPagingAnimation;\n}\n\nexport default function useAutoplayController(config: AutoplayConfig): AutoplayController {\n const {\n enabled,\n intervalMillis,\n startPagingAnimation,\n } = config;\n\n const paused = useRef<boolean>(false);\n\n const executor = useDeferredExecutor();\n\n const play = useCallback(() => {\n if (paused.current) {\n return;\n }\n\n executor.execute(() => {\n startPagingAnimation(\n 'directional',\n { direction: 'next', isOriginatedFromGesture: false },\n );\n play();\n }, intervalMillis);\n }, [intervalMillis, startPagingAnimation]);\n\n const pause = useCallback(() => {\n executor.cancel();\n paused.current = true;\n }, []);\n\n const resume = useCallback(() => {\n paused.current = false;\n if (enabled) {\n play();\n }\n }, [play, enabled]);\n\n useEffect(() => {\n if (enabled) {\n resume();\n } else {\n pause();\n }\n }, [enabled]);\n\n return { pause, resume };\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAQe,SAASA,qBAAT,CAA+BC,MAA/B,EAA2E;EACtF,MAAM;IACFC,OADE;IAEFC,cAFE;IAGFC;EAHE,IAIFH,MAJJ;EAMA,MAAMI,MAAM,GAAG,IAAAC,aAAA,EAAgB,KAAhB,CAAf;EAEA,MAAMC,QAAQ,GAAG,IAAAC,0BAAA,GAAjB;EAEA,MAAMC,IAAI,GAAG,IAAAC,kBAAA,EAAY,MAAM;IAC3B,IAAIL,MAAM,CAACM,OAAX,EAAoB;MAChB;IACH;;IAEDJ,QAAQ,CAACK,OAAT,CAAiB,MAAM;MACnBR,oBAAoB,CAChB,aADgB,EAEhB;QAAES,SAAS,EAAE,MAAb;QAAqBC,uBAAuB,EAAE;MAA9C,CAFgB,CAApB;MAIAL,IAAI;IACP,CAND,EAMGN,cANH;EAOH,CAZY,EAYV,CAACA,cAAD,EAAiBC,oBAAjB,CAZU,CAAb;EAcA,MAAMW,KAAK,GAAG,IAAAL,kBAAA,EAAY,MAAM;IAC5BH,QAAQ,CAACS,MAAT;IACAX,MAAM,CAACM,OAAP,GAAiB,IAAjB;EACH,CAHa,EAGX,EAHW,CAAd;EAKA,MAAMM,MAAM,GAAG,IAAAP,kBAAA,EAAY,MAAM;IAC7BL,MAAM,CAACM,OAAP,GAAiB,KAAjB;;IACA,IAAIT,OAAJ,EAAa;MACTO,IAAI;IACP;EACJ,CALc,EAKZ,CAACA,IAAD,EAAOP,OAAP,CALY,CAAf;EAOA,IAAAgB,gBAAA,EAAU,MAAM;IACZ,IAAIhB,OAAJ,EAAa;MACTe,MAAM;IACT,CAFD,MAEO;MACHF,KAAK;IACR;EACJ,CAND,EAMG,CAACb,OAAD,CANH;EAQA,OAAO;IAAEa,KAAF;IAASE;EAAT,CAAP;AACH;;AAAA"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useIndexController;
7
+
8
+ var _react = require("react");
9
+
10
+ var _core = require("@fountain-ui/core");
11
+
12
+ var _utils = require("@fountain-ui/utils");
13
+
14
+ function useIndexController(params) {
15
+ const {
16
+ initialIndex,
17
+ itemWidth,
18
+ numberOfData,
19
+ numberOfOriginalData,
20
+ onIndexChange,
21
+ onPositionChange
22
+ } = params;
23
+ const currentIndex = (0, _core.useImperativeState)(initialIndex);
24
+ const currentPosition = (0, _core.useImperativeState)(initialIndex);
25
+ const notifyScrollStateHasChanged = (0, _react.useCallback)(_ref => {
26
+ let {
27
+ offset,
28
+ state
29
+ } = _ref;
30
+ const normalized = -Math.round(offset / itemWidth);
31
+ const index = Math.floor((0, _utils.mod)(normalized, numberOfOriginalData));
32
+ const position = Math.floor((0, _utils.mod)(normalized, numberOfData));
33
+
34
+ if (state === 'idle' || state === 'interrupted') {
35
+ if (currentIndex.hasChanged()) {
36
+ onIndexChange === null || onIndexChange === void 0 ? void 0 : onIndexChange(currentIndex.get());
37
+ }
38
+
39
+ if (currentPosition.hasChanged()) {
40
+ onPositionChange === null || onPositionChange === void 0 ? void 0 : onPositionChange(currentPosition.get());
41
+ }
42
+ }
43
+
44
+ currentIndex.set(index);
45
+ currentPosition.set(position);
46
+ }, [itemWidth, numberOfData, numberOfOriginalData, onIndexChange, onPositionChange]);
47
+ return {
48
+ getCurrentIndex: currentIndex.get,
49
+ lastIndex: numberOfOriginalData - 1,
50
+ notifyScrollStateHasChanged
51
+ };
52
+ }
53
+
54
+ ;
55
+ //# sourceMappingURL=useIndexController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useIndexController","params","initialIndex","itemWidth","numberOfData","numberOfOriginalData","onIndexChange","onPositionChange","currentIndex","useImperativeState","currentPosition","notifyScrollStateHasChanged","useCallback","offset","state","normalized","Math","round","index","floor","mod","position","hasChanged","get","set","getCurrentIndex","lastIndex"],"sources":["useIndexController.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport { useImperativeState } from '@fountain-ui/core';\nimport { mod } from '@fountain-ui/utils';\nimport type { IndexController, ScrollStateChangeEvent } from '../types';\n\nexport interface UseIndexControllerParameters {\n initialIndex: number;\n itemWidth: number;\n numberOfData: number;\n numberOfOriginalData: number;\n onIndexChange?: (itemIndex: number) => void;\n onPositionChange?: (position: number) => void;\n}\n\nexport default function useIndexController(params: UseIndexControllerParameters): IndexController {\n const {\n initialIndex,\n itemWidth,\n numberOfData,\n numberOfOriginalData,\n onIndexChange,\n onPositionChange,\n } = params;\n\n const currentIndex = useImperativeState(initialIndex);\n const currentPosition = useImperativeState(initialIndex);\n\n const notifyScrollStateHasChanged = useCallback(({ offset, state }: ScrollStateChangeEvent) => {\n const normalized = -Math.round(offset / itemWidth);\n const index = Math.floor(mod(normalized, numberOfOriginalData));\n const position = Math.floor(mod(normalized, numberOfData));\n\n if (state === 'idle' || state === 'interrupted') {\n if (currentIndex.hasChanged()) {\n onIndexChange?.(currentIndex.get());\n }\n if (currentPosition.hasChanged()) {\n onPositionChange?.(currentPosition.get());\n }\n }\n\n currentIndex.set(index);\n currentPosition.set(position);\n }, [\n itemWidth,\n numberOfData,\n numberOfOriginalData,\n onIndexChange,\n onPositionChange,\n ]);\n\n return {\n getCurrentIndex: currentIndex.get,\n lastIndex: numberOfOriginalData - 1,\n notifyScrollStateHasChanged,\n };\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAYe,SAASA,kBAAT,CAA4BC,MAA5B,EAAmF;EAC9F,MAAM;IACFC,YADE;IAEFC,SAFE;IAGFC,YAHE;IAIFC,oBAJE;IAKFC,aALE;IAMFC;EANE,IAOFN,MAPJ;EASA,MAAMO,YAAY,GAAG,IAAAC,wBAAA,EAAmBP,YAAnB,CAArB;EACA,MAAMQ,eAAe,GAAG,IAAAD,wBAAA,EAAmBP,YAAnB,CAAxB;EAEA,MAAMS,2BAA2B,GAAG,IAAAC,kBAAA,EAAY,QAA+C;IAAA,IAA9C;MAAEC,MAAF;MAAUC;IAAV,CAA8C;IAC3F,MAAMC,UAAU,GAAG,CAACC,IAAI,CAACC,KAAL,CAAWJ,MAAM,GAAGV,SAApB,CAApB;IACA,MAAMe,KAAK,GAAGF,IAAI,CAACG,KAAL,CAAW,IAAAC,UAAA,EAAIL,UAAJ,EAAgBV,oBAAhB,CAAX,CAAd;IACA,MAAMgB,QAAQ,GAAGL,IAAI,CAACG,KAAL,CAAW,IAAAC,UAAA,EAAIL,UAAJ,EAAgBX,YAAhB,CAAX,CAAjB;;IAEA,IAAIU,KAAK,KAAK,MAAV,IAAoBA,KAAK,KAAK,aAAlC,EAAiD;MAC7C,IAAIN,YAAY,CAACc,UAAb,EAAJ,EAA+B;QAC3BhB,aAAa,SAAb,IAAAA,aAAa,WAAb,YAAAA,aAAa,CAAGE,YAAY,CAACe,GAAb,EAAH,CAAb;MACH;;MACD,IAAIb,eAAe,CAACY,UAAhB,EAAJ,EAAkC;QAC9Bf,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAGG,eAAe,CAACa,GAAhB,EAAH,CAAhB;MACH;IACJ;;IAEDf,YAAY,CAACgB,GAAb,CAAiBN,KAAjB;IACAR,eAAe,CAACc,GAAhB,CAAoBH,QAApB;EACH,CAhBmC,EAgBjC,CACClB,SADD,EAECC,YAFD,EAGCC,oBAHD,EAICC,aAJD,EAKCC,gBALD,CAhBiC,CAApC;EAwBA,OAAO;IACHkB,eAAe,EAAEjB,YAAY,CAACe,GAD3B;IAEHG,SAAS,EAAErB,oBAAoB,GAAG,CAF/B;IAGHM;EAHG,CAAP;AAKH;;AAAA"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useItemVisibilityStore;
7
+
8
+ var _react = require("react");
9
+
10
+ var _utils = require("@fountain-ui/utils");
11
+
12
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+
14
+ class SimpleItemVisibilityStore {
15
+ constructor(initialValue) {
16
+ _defineProperty(this, "store", void 0);
17
+
18
+ _defineProperty(this, "listeners", []);
19
+
20
+ this.store = initialValue;
21
+ }
22
+
23
+ subscribe(listener) {
24
+ this.listeners.push(listener);
25
+ listener(this.store);
26
+ return () => {
27
+ const index = this.listeners.indexOf(listener);
28
+ this.listeners.splice(index, 1);
29
+ };
30
+ }
31
+
32
+ dispatch(ranges) {
33
+ this.store = ranges;
34
+
35
+ for (const id in this.listeners) {
36
+ const listener = this.listeners[id];
37
+ listener === null || listener === void 0 ? void 0 : listener(ranges);
38
+ }
39
+ }
40
+
41
+ removeAllListeners() {
42
+ this.listeners.splice(0, this.listeners.length);
43
+ }
44
+
45
+ }
46
+
47
+ function normalize(windowSize, numberOfData) {
48
+ if (windowSize <= 0) {
49
+ return numberOfData;
50
+ }
51
+
52
+ if (windowSize > 0 && windowSize % 2 === 0) {
53
+ return windowSize + 1;
54
+ }
55
+
56
+ return windowSize;
57
+ }
58
+
59
+ function makeVisibleIndexRanges(numberOfData, windowSize, index) {
60
+ const ws = normalize(windowSize, numberOfData);
61
+ const firstIndex = 0;
62
+ const lastIndex = numberOfData - 1;
63
+ const halfNumberOfAdjacent = Math.floor(ws / 2);
64
+ const leftSide = index - halfNumberOfAdjacent;
65
+ const rightSide = index + halfNumberOfAdjacent;
66
+ const leftRanges = leftSide >= 0 ? [[leftSide, index]] : [[firstIndex, index], [(0, _utils.mod)(leftSide, numberOfData), lastIndex]];
67
+ const rightRanges = rightSide < numberOfData ? [[index, rightSide]] : [[index, lastIndex], [firstIndex, (0, _utils.mod)(rightSide, numberOfData)]]; // @ts-ignore
68
+
69
+ return [...leftRanges, ...rightRanges];
70
+ }
71
+
72
+ function useItemVisibilityStore(params) {
73
+ const {
74
+ initialIndex,
75
+ numberOfData,
76
+ windowSize
77
+ } = params;
78
+ const [initialRange] = (0, _react.useState)(() => {
79
+ return makeVisibleIndexRanges(numberOfData, windowSize, initialIndex);
80
+ });
81
+ const store = (0, _react.useRef)(new SimpleItemVisibilityStore(initialRange)).current;
82
+ const onPositionChange = (0, _react.useCallback)(position => {
83
+ const newRanges = makeVisibleIndexRanges(numberOfData, windowSize, position);
84
+ store.dispatch(newRanges);
85
+ }, [numberOfData, windowSize]);
86
+ (0, _react.useEffect)(() => {
87
+ return () => {
88
+ store.removeAllListeners();
89
+ };
90
+ }, []);
91
+ return [store, onPositionChange];
92
+ }
93
+
94
+ ;
95
+ //# sourceMappingURL=useItemVisibilityStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SimpleItemVisibilityStore","constructor","initialValue","store","subscribe","listener","listeners","push","index","indexOf","splice","dispatch","ranges","id","removeAllListeners","length","normalize","windowSize","numberOfData","makeVisibleIndexRanges","ws","firstIndex","lastIndex","halfNumberOfAdjacent","Math","floor","leftSide","rightSide","leftRanges","mod","rightRanges","useItemVisibilityStore","params","initialIndex","initialRange","useState","useRef","current","onPositionChange","useCallback","position","newRanges","useEffect"],"sources":["useItemVisibilityStore.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { mod } from '@fountain-ui/utils';\nimport type { ItemVisibilityStore, OnPositionChange, VisibleIndexRanges } from '../types';\n\nexport interface Parameters {\n initialIndex: number;\n numberOfData: number;\n windowSize: number;\n}\n\nclass SimpleItemVisibilityStore implements ItemVisibilityStore {\n\n private store: VisibleIndexRanges;\n\n constructor(initialValue: VisibleIndexRanges) {\n this.store = initialValue;\n }\n\n private listeners: Array<(ranges: VisibleIndexRanges) => void> = [];\n\n subscribe(listener: (ranges: VisibleIndexRanges) => void) {\n this.listeners.push(listener);\n\n listener(this.store);\n\n return () => {\n const index = this.listeners.indexOf(listener);\n this.listeners.splice(index, 1);\n };\n }\n\n dispatch(ranges: VisibleIndexRanges): void {\n this.store = ranges;\n for (const id in this.listeners) {\n const listener = this.listeners[id];\n listener?.(ranges);\n }\n }\n\n removeAllListeners(): void {\n this.listeners.splice(0, this.listeners.length);\n }\n\n}\n\nfunction normalize(windowSize: number, numberOfData: number): number {\n if (windowSize <= 0) {\n return numberOfData;\n }\n if (windowSize > 0 && windowSize % 2 === 0) {\n return windowSize + 1;\n }\n return windowSize;\n}\n\nfunction makeVisibleIndexRanges(numberOfData: number, windowSize: number, index: number): VisibleIndexRanges {\n const ws = normalize(windowSize, numberOfData);\n\n const firstIndex = 0;\n const lastIndex = numberOfData - 1;\n const halfNumberOfAdjacent = Math.floor(ws / 2);\n\n const leftSide = index - halfNumberOfAdjacent;\n const rightSide = index + halfNumberOfAdjacent;\n\n const leftRanges = leftSide >= 0\n ? [[leftSide, index]]\n : [[firstIndex, index], [mod(leftSide, numberOfData), lastIndex]];\n\n const rightRanges = rightSide < numberOfData\n ? [[index, rightSide]]\n : [[index, lastIndex], [firstIndex, mod(rightSide, numberOfData)]];\n\n // @ts-ignore\n return [\n ...leftRanges,\n ...rightRanges,\n ];\n}\n\nexport default function useItemVisibilityStore(params: Parameters): [ItemVisibilityStore, OnPositionChange] {\n const {\n initialIndex,\n numberOfData,\n windowSize,\n } = params;\n\n const [initialRange] = useState(() => {\n return makeVisibleIndexRanges(numberOfData, windowSize, initialIndex);\n });\n\n const store = useRef(new SimpleItemVisibilityStore(initialRange)).current;\n\n const onPositionChange: OnPositionChange = useCallback((position) => {\n const newRanges = makeVisibleIndexRanges(numberOfData, windowSize, position);\n\n store.dispatch(newRanges);\n }, [numberOfData, windowSize]);\n\n useEffect(() => {\n return () => {\n store.removeAllListeners();\n };\n }, []);\n\n return [store, onPositionChange];\n};\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useLoopedData;
7
+
8
+ var _react = require("react");
9
+
10
+ function useLoopedData(originalData, loop) {
11
+ return (0, _react.useMemo)(() => {
12
+ if (!loop) {
13
+ return originalData;
14
+ }
15
+
16
+ const numberOfData = originalData.length;
17
+
18
+ if (numberOfData === 1) {
19
+ const [first] = originalData;
20
+ return [first, first, first];
21
+ }
22
+
23
+ if (numberOfData === 2) {
24
+ const [first, second] = originalData;
25
+ return [first, second, first, second];
26
+ }
27
+
28
+ return originalData;
29
+ }, [originalData, loop]);
30
+ }
31
+
32
+ ;
33
+ //# sourceMappingURL=useLoopedData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useLoopedData","originalData","loop","useMemo","numberOfData","length","first","second"],"sources":["useLoopedData.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nexport default function useLoopedData<ItemT>(\n originalData: ReadonlyArray<ItemT>,\n loop: boolean,\n): ReadonlyArray<ItemT> {\n return useMemo(() => {\n if (!loop) {\n return originalData;\n }\n\n const numberOfData = originalData.length;\n\n if (numberOfData === 1) {\n const [first] = originalData;\n return [first, first, first];\n }\n\n if (numberOfData === 2) {\n const [first, second] = originalData;\n return [first, second, first, second];\n }\n\n return originalData;\n }, [originalData, loop]);\n};\n"],"mappings":";;;;;;;AAAA;;AAEe,SAASA,aAAT,CACXC,YADW,EAEXC,IAFW,EAGS;EACpB,OAAO,IAAAC,cAAA,EAAQ,MAAM;IACjB,IAAI,CAACD,IAAL,EAAW;MACP,OAAOD,YAAP;IACH;;IAED,MAAMG,YAAY,GAAGH,YAAY,CAACI,MAAlC;;IAEA,IAAID,YAAY,KAAK,CAArB,EAAwB;MACpB,MAAM,CAACE,KAAD,IAAUL,YAAhB;MACA,OAAO,CAACK,KAAD,EAAQA,KAAR,EAAeA,KAAf,CAAP;IACH;;IAED,IAAIF,YAAY,KAAK,CAArB,EAAwB;MACpB,MAAM,CAACE,KAAD,EAAQC,MAAR,IAAkBN,YAAxB;MACA,OAAO,CAACK,KAAD,EAAQC,MAAR,EAAgBD,KAAhB,EAAuBC,MAAvB,CAAP;IACH;;IAED,OAAON,YAAP;EACH,CAlBM,EAkBJ,CAACA,YAAD,EAAeC,IAAf,CAlBI,CAAP;AAmBH;;AAAA"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = usePagingAnimator;
7
+
8
+ var _react = require("react");
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _core = require("@fountain-ui/core");
13
+
14
+ function directionToValue(itemWidth) {
15
+ return function (direction) {
16
+ switch (direction) {
17
+ case 'next':
18
+ return -itemWidth;
19
+
20
+ case 'prev':
21
+ return itemWidth;
22
+
23
+ case 'stay':
24
+ return 0;
25
+ }
26
+ };
27
+ }
28
+
29
+ function toValueCompensator(itemWidth) {
30
+ return function (toValue, currentOffset) {
31
+ const remainder = Math.abs(currentOffset % itemWidth);
32
+ const halfOfItemWidth = Math.abs(itemWidth / 2);
33
+ const compensateVector = remainder > halfOfItemWidth ? remainder - itemWidth : remainder;
34
+ const direction = currentOffset > 0 ? -1 : 1;
35
+ return toValue + direction * compensateVector;
36
+ };
37
+ }
38
+
39
+ function usePagingAnimator(config) {
40
+ const {
41
+ createScrollAnimation,
42
+ itemWidth,
43
+ indexController,
44
+ initialIndex,
45
+ loop,
46
+ numberOfData
47
+ } = config;
48
+ const {
49
+ getCurrentIndex,
50
+ lastIndex,
51
+ notifyScrollStateHasChanged
52
+ } = indexController;
53
+ const initialOffsetX = itemWidth * initialIndex;
54
+ const accumulativeOffsetX = (0, _core.useAnimatedValue)(initialOffsetX);
55
+ const animationOffsetX = (0, _core.useAnimatedValue)(0);
56
+ const gestureTranslationX = (0, _core.useAnimatedValue)(0);
57
+ const globalInterpolation = (0, _react.useMemo)(() => {
58
+ return _reactNative.Animated.add(_reactNative.Animated.add(accumulativeOffsetX, animationOffsetX), gestureTranslationX);
59
+ }, []);
60
+ const toValueRef = (0, _react.useRef)(0);
61
+ const currentOffsetRef = (0, _react.useRef)(0);
62
+ const isAnimatingRef = (0, _react.useRef)(false);
63
+ const maxWidth = Math.abs(numberOfData * itemWidth);
64
+ const ensureOffsetBoundary = (0, _react.useCallback)(offset => {
65
+ if (loop) {
66
+ const isCloseToEnd = Math.abs(offset) >= maxWidth - itemWidth;
67
+
68
+ if (isCloseToEnd) {
69
+ const signOfOffset = offset > 0 ? 1 : -1;
70
+ return offset + -signOfOffset * maxWidth;
71
+ }
72
+ }
73
+
74
+ return offset % maxWidth;
75
+ }, [itemWidth, loop, maxWidth]);
76
+ const requireNewOffset = (0, _react.useCallback)(newOffset => {
77
+ const nextOffset = ensureOffsetBoundary(newOffset);
78
+ currentOffsetRef.current = nextOffset;
79
+ accumulativeOffsetX.setValue(nextOffset);
80
+ toValueRef.current = 0;
81
+ animationOffsetX.setValue(0);
82
+ }, [ensureOffsetBoundary]);
83
+ const interruptAnimation = (0, _react.useCallback)(() => {
84
+ if (!isAnimatingRef.current) {
85
+ return;
86
+ }
87
+
88
+ animationOffsetX.stopAnimation(lastValue => {
89
+ isAnimatingRef.current = false;
90
+ const prevOffset = currentOffsetRef.current;
91
+ const totalOffset = prevOffset + lastValue;
92
+ requireNewOffset(totalOffset);
93
+ notifyScrollStateHasChanged({
94
+ offset: totalOffset,
95
+ state: 'interrupted'
96
+ });
97
+ });
98
+ }, [notifyScrollStateHasChanged, requireNewOffset]);
99
+ const finalizeAnimation = (0, _react.useCallback)(() => {
100
+ isAnimatingRef.current = false;
101
+ const prevOffset = currentOffsetRef.current;
102
+ const toValue = toValueRef.current;
103
+ const totalOffset = prevOffset + toValue;
104
+ requireNewOffset(totalOffset);
105
+ notifyScrollStateHasChanged({
106
+ offset: totalOffset,
107
+ state: 'idle'
108
+ });
109
+ }, [notifyScrollStateHasChanged, requireNewOffset]);
110
+ const startPagingAnimation = (0, _react.useCallback)((type, config) => {
111
+ if (isAnimatingRef.current) {
112
+ return;
113
+ }
114
+
115
+ const configWithDefaults = {
116
+ animated: true,
117
+ ...config
118
+ };
119
+ const currentIndex = getCurrentIndex();
120
+ const getValueByDirectionOnAllAdjacentItemsVisible = directionToValue(itemWidth);
121
+ const compensateToValue = toValueCompensator(itemWidth);
122
+
123
+ const getValueByDirectionalPagingOnLoopDisabled = _config => {
124
+ const {
125
+ direction,
126
+ isOriginatedFromGesture
127
+ } = _config;
128
+
129
+ if (currentIndex === 0 && direction === 'prev') {
130
+ return isOriginatedFromGesture ? getValueByDirectionOnAllAdjacentItemsVisible('stay') : -lastIndex * itemWidth; // last position
131
+ } else if (currentIndex === lastIndex && direction === 'next') {
132
+ return isOriginatedFromGesture ? getValueByDirectionOnAllAdjacentItemsVisible('stay') : lastIndex * itemWidth; // first position
133
+ }
134
+
135
+ return getValueByDirectionOnAllAdjacentItemsVisible(direction);
136
+ };
137
+
138
+ const getValueByDirectionalPaging = _config => {
139
+ const _configWithDefaults = {
140
+ isOriginatedFromGesture: false,
141
+ ..._config
142
+ };
143
+ return loop ? getValueByDirectionOnAllAdjacentItemsVisible(_configWithDefaults.direction) : getValueByDirectionalPagingOnLoopDisabled(_configWithDefaults);
144
+ };
145
+
146
+ const getValueByIndexPaging = _ref => {
147
+ let {
148
+ index
149
+ } = _ref;
150
+
151
+ if (index < 0 || index > lastIndex || index === currentIndex) {
152
+ // no animation if index is invalid or equals to current index
153
+ return 0;
154
+ }
155
+
156
+ const distance = Math.abs(currentIndex - index) * itemWidth;
157
+ const direction = index > currentIndex ? -1 : 1;
158
+ return distance * direction;
159
+ };
160
+
161
+ const wantedToValue = type === 'directional' // @ts-ignore
162
+ ? getValueByDirectionalPaging(configWithDefaults) // @ts-ignore
163
+ : getValueByIndexPaging(configWithDefaults);
164
+ const toValue = compensateToValue(wantedToValue, currentOffsetRef.current);
165
+ toValueRef.current = toValue;
166
+ isAnimatingRef.current = true;
167
+ notifyScrollStateHasChanged({
168
+ offset: currentOffsetRef.current + toValue,
169
+ state: 'dragging'
170
+ });
171
+ const lastGestureTranslationX = configWithDefaults.lastGestureTranslationX ?? 0;
172
+
173
+ if (Number.isFinite(lastGestureTranslationX)) {
174
+ animationOffsetX.setValue(lastGestureTranslationX);
175
+ gestureTranslationX.setValue(0);
176
+ }
177
+
178
+ if (configWithDefaults.animated) {
179
+ const animation = createScrollAnimation(animationOffsetX, toValue);
180
+ animation.start(_ref2 => {
181
+ let {
182
+ finished
183
+ } = _ref2;
184
+
185
+ if (finished) {
186
+ finalizeAnimation();
187
+ }
188
+ });
189
+ } else {
190
+ finalizeAnimation();
191
+ }
192
+ }, [createScrollAnimation, getCurrentIndex, finalizeAnimation, itemWidth, lastIndex, loop, notifyScrollStateHasChanged]);
193
+ return {
194
+ gestureTranslationX,
195
+ globalInterpolation,
196
+ interruptAnimation,
197
+ startPagingAnimation
198
+ };
199
+ }
200
+
201
+ ;
202
+ //# sourceMappingURL=usePagingAnimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["directionToValue","itemWidth","direction","toValueCompensator","toValue","currentOffset","remainder","Math","abs","halfOfItemWidth","compensateVector","usePagingAnimator","config","createScrollAnimation","indexController","initialIndex","loop","numberOfData","getCurrentIndex","lastIndex","notifyScrollStateHasChanged","initialOffsetX","accumulativeOffsetX","useAnimatedValue","animationOffsetX","gestureTranslationX","globalInterpolation","useMemo","Animated","add","toValueRef","useRef","currentOffsetRef","isAnimatingRef","maxWidth","ensureOffsetBoundary","useCallback","offset","isCloseToEnd","signOfOffset","requireNewOffset","newOffset","nextOffset","current","setValue","interruptAnimation","stopAnimation","lastValue","prevOffset","totalOffset","state","finalizeAnimation","startPagingAnimation","type","configWithDefaults","animated","currentIndex","getValueByDirectionOnAllAdjacentItemsVisible","compensateToValue","getValueByDirectionalPagingOnLoopDisabled","_config","isOriginatedFromGesture","getValueByDirectionalPaging","_configWithDefaults","getValueByIndexPaging","index","distance","wantedToValue","lastGestureTranslationX","Number","isFinite","animation","start","finished"],"sources":["usePagingAnimator.ts"],"sourcesContent":["import { useCallback, useMemo, useRef } from 'react';\nimport { Animated } from 'react-native';\nimport { useAnimatedValue } from '@fountain-ui/core';\nimport type {\n CreateScrollAnimation,\n DirectionalPagingAnimationConfig,\n IndexController,\n IndexPagingAnimationConfig,\n PagingAnimationConfig,\n PagingAnimationType,\n PagingDirection,\n StartPagingAnimation,\n} from '../types';\n\nexport interface PagingAnimatorConfig {\n createScrollAnimation: CreateScrollAnimation;\n itemWidth: number;\n indexController: IndexController;\n initialIndex: number;\n loop: boolean;\n numberOfData: number;\n}\n\nexport interface PagingAnimator {\n gestureTranslationX: Animated.Value;\n globalInterpolation: Animated.AnimatedInterpolation;\n interruptAnimation: () => void;\n startPagingAnimation: StartPagingAnimation;\n}\n\nfunction directionToValue(itemWidth: number) {\n return function (direction: PagingDirection): number {\n switch (direction) {\n case 'next':\n return -itemWidth;\n case 'prev':\n return itemWidth;\n case 'stay':\n return 0;\n }\n };\n}\n\nfunction toValueCompensator(itemWidth: number) {\n return function (toValue: number, currentOffset: number): number {\n const remainder = Math.abs(currentOffset % itemWidth);\n\n const halfOfItemWidth = Math.abs(itemWidth / 2);\n const compensateVector = remainder > halfOfItemWidth\n ? remainder - itemWidth\n : remainder;\n\n const direction = currentOffset > 0 ? -1 : 1;\n\n return toValue + (direction * compensateVector);\n };\n}\n\nexport default function usePagingAnimator(config: PagingAnimatorConfig): PagingAnimator {\n const {\n createScrollAnimation,\n itemWidth,\n indexController,\n initialIndex,\n loop,\n numberOfData,\n } = config;\n\n const {\n getCurrentIndex,\n lastIndex,\n notifyScrollStateHasChanged,\n } = indexController;\n\n const initialOffsetX = itemWidth * initialIndex;\n const accumulativeOffsetX = useAnimatedValue(initialOffsetX);\n const animationOffsetX = useAnimatedValue(0);\n const gestureTranslationX = useAnimatedValue(0);\n\n const globalInterpolation = useMemo(() => {\n return Animated.add(\n Animated.add(accumulativeOffsetX, animationOffsetX),\n gestureTranslationX,\n );\n }, []);\n\n const toValueRef = useRef<number>(0);\n const currentOffsetRef = useRef<number>(0);\n\n const isAnimatingRef = useRef<boolean>(false);\n\n const maxWidth = Math.abs(numberOfData * itemWidth);\n\n const ensureOffsetBoundary: (offset: number) => number = useCallback((offset: number) => {\n if (loop) {\n const isCloseToEnd = Math.abs(offset) >= (maxWidth - itemWidth);\n if (isCloseToEnd) {\n const signOfOffset = offset > 0 ? 1 : -1;\n return offset + (-signOfOffset * maxWidth);\n }\n }\n\n return offset % maxWidth;\n }, [itemWidth, loop, maxWidth]);\n\n const requireNewOffset = useCallback((newOffset: number) => {\n const nextOffset = ensureOffsetBoundary(newOffset);\n\n currentOffsetRef.current = nextOffset;\n accumulativeOffsetX.setValue(nextOffset);\n\n toValueRef.current = 0;\n animationOffsetX.setValue(0);\n }, [\n ensureOffsetBoundary,\n ]);\n\n const interruptAnimation = useCallback(() => {\n if (!isAnimatingRef.current) {\n return;\n }\n\n animationOffsetX.stopAnimation(lastValue => {\n isAnimatingRef.current = false;\n\n const prevOffset = currentOffsetRef.current;\n const totalOffset = prevOffset + lastValue;\n\n requireNewOffset(totalOffset);\n\n notifyScrollStateHasChanged({ offset: totalOffset, state: 'interrupted' });\n });\n }, [\n notifyScrollStateHasChanged,\n requireNewOffset,\n ]);\n\n const finalizeAnimation = useCallback(() => {\n isAnimatingRef.current = false;\n\n const prevOffset = currentOffsetRef.current;\n const toValue = toValueRef.current;\n const totalOffset = prevOffset + toValue;\n\n requireNewOffset(totalOffset);\n\n notifyScrollStateHasChanged({ offset: totalOffset, state: 'idle' });\n }, [\n notifyScrollStateHasChanged,\n requireNewOffset,\n ]);\n\n const startPagingAnimation = useCallback((type: PagingAnimationType, config: PagingAnimationConfig) => {\n if (isAnimatingRef.current) {\n return;\n }\n\n const configWithDefaults: PagingAnimationConfig = {\n animated: true,\n ...config,\n };\n\n const currentIndex = getCurrentIndex();\n\n const getValueByDirectionOnAllAdjacentItemsVisible = directionToValue(itemWidth);\n const compensateToValue = toValueCompensator(itemWidth);\n\n const getValueByDirectionalPagingOnLoopDisabled = (_config: DirectionalPagingAnimationConfig): number => {\n const { direction, isOriginatedFromGesture } = _config;\n\n if (currentIndex === 0 && direction === 'prev') {\n return isOriginatedFromGesture\n ? getValueByDirectionOnAllAdjacentItemsVisible('stay')\n : -lastIndex * itemWidth; // last position\n } else if (currentIndex === lastIndex && direction === 'next') {\n return isOriginatedFromGesture\n ? getValueByDirectionOnAllAdjacentItemsVisible('stay')\n : lastIndex * itemWidth; // first position\n }\n return getValueByDirectionOnAllAdjacentItemsVisible(direction);\n };\n\n const getValueByDirectionalPaging = (_config: DirectionalPagingAnimationConfig): number => {\n const _configWithDefaults: DirectionalPagingAnimationConfig = {\n isOriginatedFromGesture: false,\n ..._config,\n };\n\n return loop\n ? getValueByDirectionOnAllAdjacentItemsVisible(_configWithDefaults.direction)\n : getValueByDirectionalPagingOnLoopDisabled(_configWithDefaults);\n };\n\n const getValueByIndexPaging = ({ index }: IndexPagingAnimationConfig): number => {\n if (index < 0 || index > lastIndex || index === currentIndex) {\n // no animation if index is invalid or equals to current index\n return 0;\n }\n\n const distance = Math.abs(currentIndex - index) * itemWidth;\n const direction = index > currentIndex ? -1 : 1;\n\n return distance * direction;\n };\n\n const wantedToValue = type === 'directional'\n // @ts-ignore\n ? getValueByDirectionalPaging(configWithDefaults)\n // @ts-ignore\n : getValueByIndexPaging(configWithDefaults);\n\n const toValue = compensateToValue(wantedToValue, currentOffsetRef.current);\n\n toValueRef.current = toValue;\n isAnimatingRef.current = true;\n\n notifyScrollStateHasChanged({\n offset: currentOffsetRef.current + toValue,\n state: 'dragging',\n });\n\n const lastGestureTranslationX: number = configWithDefaults.lastGestureTranslationX ?? 0;\n if (Number.isFinite(lastGestureTranslationX)) {\n animationOffsetX.setValue(lastGestureTranslationX);\n gestureTranslationX.setValue(0);\n }\n\n if (configWithDefaults.animated) {\n const animation = createScrollAnimation(animationOffsetX, toValue);\n\n animation.start(({ finished }) => {\n if (finished) {\n finalizeAnimation();\n }\n });\n } else {\n finalizeAnimation();\n }\n }, [\n createScrollAnimation,\n getCurrentIndex,\n finalizeAnimation,\n itemWidth,\n lastIndex,\n loop,\n notifyScrollStateHasChanged,\n ]);\n\n return {\n gestureTranslationX,\n globalInterpolation,\n interruptAnimation,\n startPagingAnimation,\n };\n};\n"],"mappings":"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"}