@fountain-ui/lab 2.0.0-beta.4 → 2.0.0-beta.40

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 (516) hide show
  1. package/build/commonjs/AnimatedY/AnimatedY.js +10 -14
  2. package/build/commonjs/AnimatedY/AnimatedY.js.map +1 -1
  3. package/build/commonjs/AnimatedY/AnimatedYProps.js.map +1 -1
  4. package/build/commonjs/AnimatedY/index.js.map +1 -1
  5. package/build/commonjs/BottomSheet/BottomSheet.js +177 -0
  6. package/build/commonjs/BottomSheet/BottomSheet.js.map +1 -0
  7. package/build/commonjs/BottomSheet/BottomSheetNative.js +5 -3
  8. package/build/commonjs/BottomSheet/BottomSheetNative.js.map +1 -1
  9. package/build/commonjs/BottomSheet/BottomSheetProps.js.map +1 -1
  10. package/build/commonjs/BottomSheet/BottomSheetWeb.js +19 -7
  11. package/build/commonjs/BottomSheet/BottomSheetWeb.js.map +1 -1
  12. package/build/commonjs/BottomSheet/TransparentBackdrop.js +1 -1
  13. package/build/commonjs/BottomSheet/TransparentBackdrop.js.map +1 -1
  14. package/build/commonjs/BottomSheet/index.js.map +1 -1
  15. package/build/commonjs/BottomSheet/index.native.js.map +1 -1
  16. package/build/commonjs/BottomSheet/useDynamicSnapPoints.js +49 -0
  17. package/build/commonjs/BottomSheet/useDynamicSnapPoints.js.map +1 -0
  18. package/build/commonjs/Carousel/Carousel.js +130 -0
  19. package/build/commonjs/Carousel/Carousel.js.map +1 -0
  20. package/build/commonjs/Carousel/CarouselProps.js.map +1 -1
  21. package/build/commonjs/Carousel/animation/animationUtils.js +9 -0
  22. package/build/commonjs/Carousel/animation/animationUtils.js.map +1 -0
  23. package/build/commonjs/Carousel/animation/createDefaultItemStyle.js +15 -0
  24. package/build/commonjs/Carousel/animation/createDefaultItemStyle.js.map +1 -0
  25. package/build/commonjs/Carousel/animation/createDefaultScrollAnimation.js +20 -0
  26. package/build/commonjs/Carousel/animation/createDefaultScrollAnimation.js.map +1 -0
  27. package/build/commonjs/Carousel/animation/index.js +40 -0
  28. package/build/commonjs/Carousel/animation/index.js.map +1 -0
  29. package/build/commonjs/Carousel/animation/normalItemStyleFactory.js +27 -0
  30. package/build/commonjs/Carousel/animation/normalItemStyleFactory.js.map +1 -0
  31. package/build/commonjs/Carousel/animation/parallaxItemStyleFactory.js +65 -0
  32. package/build/commonjs/Carousel/animation/parallaxItemStyleFactory.js.map +1 -0
  33. package/build/commonjs/Carousel/components/InternalContext.js +29 -0
  34. package/build/commonjs/Carousel/components/InternalContext.js.map +1 -0
  35. package/build/commonjs/Carousel/components/ItemView.js +66 -0
  36. package/build/commonjs/Carousel/components/ItemView.js.map +1 -0
  37. package/build/commonjs/Carousel/components/RootView.js +86 -0
  38. package/build/commonjs/Carousel/components/RootView.js.map +1 -0
  39. package/build/commonjs/Carousel/components/ScrollViewGesture.js +82 -0
  40. package/build/commonjs/Carousel/components/ScrollViewGesture.js.map +1 -0
  41. package/build/commonjs/Carousel/components/index.js +40 -0
  42. package/build/commonjs/Carousel/components/index.js.map +1 -0
  43. package/build/commonjs/Carousel/components/useItemInterpolation.js +65 -0
  44. package/build/commonjs/Carousel/components/useItemInterpolation.js.map +1 -0
  45. package/build/commonjs/Carousel/hooks/index.js +48 -0
  46. package/build/commonjs/Carousel/hooks/index.js.map +1 -0
  47. package/build/commonjs/Carousel/hooks/useAutoplayController.js +58 -0
  48. package/build/commonjs/Carousel/hooks/useAutoplayController.js.map +1 -0
  49. package/build/commonjs/Carousel/hooks/useIndexController.js +55 -0
  50. package/build/commonjs/Carousel/hooks/useIndexController.js.map +1 -0
  51. package/build/commonjs/Carousel/hooks/useItemVisibilityStore.js +95 -0
  52. package/build/commonjs/Carousel/hooks/useItemVisibilityStore.js.map +1 -0
  53. package/build/commonjs/Carousel/hooks/useLoopedData.js +33 -0
  54. package/build/commonjs/Carousel/hooks/useLoopedData.js.map +1 -0
  55. package/build/commonjs/Carousel/hooks/usePagingAnimator.js +202 -0
  56. package/build/commonjs/Carousel/hooks/usePagingAnimator.js.map +1 -0
  57. package/build/commonjs/Carousel/index.js +16 -2
  58. package/build/commonjs/Carousel/index.js.map +1 -1
  59. package/build/commonjs/Carousel/tick.js +16 -0
  60. package/build/commonjs/Carousel/tick.js.map +1 -0
  61. package/build/commonjs/Carousel/types.js +8 -0
  62. package/build/commonjs/Carousel/types.js.map +1 -0
  63. package/build/commonjs/ComicViewer/ComicViewer.js +203 -86
  64. package/build/commonjs/ComicViewer/ComicViewer.js.map +1 -1
  65. package/build/commonjs/ComicViewer/ComicViewerProps.js.map +1 -1
  66. package/build/commonjs/ComicViewer/EncodedTile.js +10 -0
  67. package/build/commonjs/ComicViewer/EncodedTile.js.map +1 -0
  68. package/build/commonjs/ComicViewer/ReloadButton.js +48 -0
  69. package/build/commonjs/ComicViewer/ReloadButton.js.map +1 -0
  70. package/build/commonjs/ComicViewer/ViewerItem.js +49 -58
  71. package/build/commonjs/ComicViewer/ViewerItem.js.map +1 -1
  72. package/build/commonjs/ComicViewer/index.js.map +1 -1
  73. package/build/commonjs/DateTimePicker/DateTimePicker.js +2 -2
  74. package/build/commonjs/DateTimePicker/DateTimePicker.js.map +1 -1
  75. package/build/commonjs/DateTimePicker/DateTimePickerProps.js.map +1 -1
  76. package/build/commonjs/DateTimePicker/DateTimePickerProvider.js.map +1 -1
  77. package/build/commonjs/DateTimePicker/YearPicker.js +21 -17
  78. package/build/commonjs/DateTimePicker/YearPicker.js.map +1 -1
  79. package/build/commonjs/DateTimePicker/index.js +4 -4
  80. package/build/commonjs/DateTimePicker/index.js.map +1 -1
  81. package/build/commonjs/DateTimePicker/utils.js +2 -1
  82. package/build/commonjs/DateTimePicker/utils.js.map +1 -1
  83. package/build/commonjs/FlipCard/FlipCard.js +7 -13
  84. package/build/commonjs/FlipCard/FlipCard.js.map +1 -1
  85. package/build/commonjs/FlipCard/FlipCardProps.js.map +1 -1
  86. package/build/commonjs/FlipCard/index.js.map +1 -1
  87. package/build/commonjs/StatusBarProvider/Provider.js +1 -1
  88. package/build/commonjs/StatusBarProvider/Provider.js.map +1 -1
  89. package/build/commonjs/StatusBarProvider/StatusBarProvider.js.map +1 -1
  90. package/build/commonjs/StatusBarProvider/StatusBarProviderProps.js.map +1 -1
  91. package/build/commonjs/StatusBarProvider/index.js.map +1 -1
  92. package/build/commonjs/ViewPager/FluxContext.js +13 -0
  93. package/build/commonjs/ViewPager/FluxContext.js.map +1 -0
  94. package/build/commonjs/ViewPager/InternalContext.js +17 -0
  95. package/build/commonjs/ViewPager/InternalContext.js.map +1 -0
  96. package/build/commonjs/ViewPager/PageStateContext.js +16 -0
  97. package/build/commonjs/ViewPager/PageStateContext.js.map +1 -0
  98. package/build/commonjs/ViewPager/ViewPager.js +81 -0
  99. package/build/commonjs/ViewPager/ViewPager.js.map +1 -0
  100. package/build/commonjs/ViewPager/ViewPager.native.js +150 -0
  101. package/build/commonjs/ViewPager/ViewPager.native.js.map +1 -0
  102. package/build/commonjs/ViewPager/ViewPagerProps.js.map +1 -1
  103. package/build/commonjs/ViewPager/components/ChildrenMemoizedPage.js +122 -0
  104. package/build/commonjs/ViewPager/components/ChildrenMemoizedPage.js.map +1 -0
  105. package/build/commonjs/ViewPager/components/FluxStoreProvider.js +37 -0
  106. package/build/commonjs/ViewPager/components/FluxStoreProvider.js.map +1 -0
  107. package/build/commonjs/ViewPager/components/index.js +24 -0
  108. package/build/commonjs/ViewPager/components/index.js.map +1 -0
  109. package/build/commonjs/ViewPager/hooks/index.js +64 -0
  110. package/build/commonjs/ViewPager/hooks/index.js.map +1 -0
  111. package/build/commonjs/ViewPager/hooks/useDispatch.js +22 -0
  112. package/build/commonjs/ViewPager/hooks/useDispatch.js.map +1 -0
  113. package/build/commonjs/ViewPager/hooks/useEagerState.js +24 -0
  114. package/build/commonjs/ViewPager/hooks/useEagerState.js.map +1 -0
  115. package/build/commonjs/ViewPager/hooks/useForceRender.js +16 -0
  116. package/build/commonjs/ViewPager/hooks/useForceRender.js.map +1 -0
  117. package/build/commonjs/ViewPager/hooks/useLazyState.js +45 -0
  118. package/build/commonjs/ViewPager/hooks/useLazyState.js.map +1 -0
  119. package/build/commonjs/ViewPager/hooks/usePageStore.js +35 -0
  120. package/build/commonjs/ViewPager/hooks/usePageStore.js.map +1 -0
  121. package/build/commonjs/ViewPager/hooks/useStore.js +26 -0
  122. package/build/commonjs/ViewPager/hooks/useStore.js.map +1 -0
  123. package/build/commonjs/ViewPager/hooks/useViewPagerPageState.js +19 -0
  124. package/build/commonjs/ViewPager/hooks/useViewPagerPageState.js.map +1 -0
  125. package/build/commonjs/ViewPager/index.js +42 -2
  126. package/build/commonjs/ViewPager/index.js.map +1 -1
  127. package/build/commonjs/ViewPager/types.js +2 -0
  128. package/build/commonjs/ViewPager/types.js.map +1 -0
  129. package/build/commonjs/ViewPager/utils.js +12 -43
  130. package/build/commonjs/ViewPager/utils.js.map +1 -1
  131. package/build/commonjs/ViewabilityTrackerView/Viewability.js +2 -0
  132. package/build/commonjs/ViewabilityTrackerView/Viewability.js.map +1 -0
  133. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerView.js +45 -0
  134. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerView.js.map +1 -0
  135. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerViewProps.js +2 -0
  136. package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerViewProps.js.map +1 -0
  137. package/build/commonjs/{Carousel/index.native.js → ViewabilityTrackerView/index.js} +3 -3
  138. package/build/commonjs/ViewabilityTrackerView/index.js.map +1 -0
  139. package/build/commonjs/ViewabilityTrackerView/measureViewability.js +42 -0
  140. package/build/commonjs/ViewabilityTrackerView/measureViewability.js.map +1 -0
  141. package/build/commonjs/ViewabilityTrackerView/useViewabilityTracker.js +88 -0
  142. package/build/commonjs/ViewabilityTrackerView/useViewabilityTracker.js.map +1 -0
  143. package/build/commonjs/hooks/index.js +16 -0
  144. package/build/commonjs/hooks/index.js.map +1 -1
  145. package/build/commonjs/hooks/useAppbarStyles.js.map +1 -1
  146. package/build/commonjs/hooks/useDeferredExecutor.js +45 -0
  147. package/build/commonjs/hooks/useDeferredExecutor.js.map +1 -0
  148. package/build/commonjs/hooks/useElevationStyle.js.map +1 -1
  149. package/build/commonjs/hooks/useHeight.js +5 -4
  150. package/build/commonjs/hooks/useHeight.js.map +1 -1
  151. package/build/commonjs/hooks/useIsMounted.js +22 -0
  152. package/build/commonjs/hooks/useIsMounted.js.map +1 -0
  153. package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js +58 -61
  154. package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
  155. package/build/commonjs/hooks/useUnstableToggleDisplayStyle.js +9 -11
  156. package/build/commonjs/hooks/useUnstableToggleDisplayStyle.js.map +1 -1
  157. package/build/commonjs/index.js +28 -7
  158. package/build/commonjs/index.js.map +1 -1
  159. package/build/module/AnimatedY/AnimatedY.js +11 -10
  160. package/build/module/AnimatedY/AnimatedY.js.map +1 -1
  161. package/build/module/AnimatedY/AnimatedYProps.js.map +1 -1
  162. package/build/module/AnimatedY/index.js.map +1 -1
  163. package/build/module/BottomSheet/BottomSheet.js +161 -0
  164. package/build/module/BottomSheet/BottomSheet.js.map +1 -0
  165. package/build/module/BottomSheet/BottomSheetNative.js +5 -3
  166. package/build/module/BottomSheet/BottomSheetNative.js.map +1 -1
  167. package/build/module/BottomSheet/BottomSheetProps.js.map +1 -1
  168. package/build/module/BottomSheet/BottomSheetWeb.js +18 -7
  169. package/build/module/BottomSheet/BottomSheetWeb.js.map +1 -1
  170. package/build/module/BottomSheet/TransparentBackdrop.js +1 -1
  171. package/build/module/BottomSheet/TransparentBackdrop.js.map +1 -1
  172. package/build/module/BottomSheet/index.js.map +1 -1
  173. package/build/module/BottomSheet/index.native.js.map +1 -1
  174. package/build/module/BottomSheet/useDynamicSnapPoints.js +41 -0
  175. package/build/module/BottomSheet/useDynamicSnapPoints.js.map +1 -0
  176. package/build/module/Carousel/Carousel.js +109 -0
  177. package/build/module/Carousel/Carousel.js.map +1 -0
  178. package/build/module/Carousel/CarouselProps.js.map +1 -1
  179. package/build/module/Carousel/animation/animationUtils.js +2 -0
  180. package/build/module/Carousel/animation/animationUtils.js.map +1 -0
  181. package/build/module/Carousel/animation/createDefaultItemStyle.js +3 -0
  182. package/build/module/Carousel/animation/createDefaultItemStyle.js.map +1 -0
  183. package/build/module/Carousel/animation/createDefaultScrollAnimation.js +11 -0
  184. package/build/module/Carousel/animation/createDefaultScrollAnimation.js.map +1 -0
  185. package/build/module/Carousel/animation/index.js +5 -0
  186. package/build/module/Carousel/animation/index.js.map +1 -0
  187. package/build/module/Carousel/animation/normalItemStyleFactory.js +18 -0
  188. package/build/module/Carousel/animation/normalItemStyleFactory.js.map +1 -0
  189. package/build/module/Carousel/animation/parallaxItemStyleFactory.js +55 -0
  190. package/build/module/Carousel/animation/parallaxItemStyleFactory.js.map +1 -0
  191. package/build/module/Carousel/components/InternalContext.js +19 -0
  192. package/build/module/Carousel/components/InternalContext.js.map +1 -0
  193. package/build/module/Carousel/components/ItemView.js +46 -0
  194. package/build/module/Carousel/components/ItemView.js.map +1 -0
  195. package/build/module/Carousel/components/RootView.js +65 -0
  196. package/build/module/Carousel/components/RootView.js.map +1 -0
  197. package/build/module/Carousel/components/ScrollViewGesture.js +68 -0
  198. package/build/module/Carousel/components/ScrollViewGesture.js.map +1 -0
  199. package/build/module/Carousel/components/index.js +5 -0
  200. package/build/module/Carousel/components/index.js.map +1 -0
  201. package/build/module/Carousel/components/useItemInterpolation.js +51 -0
  202. package/build/module/Carousel/components/useItemInterpolation.js.map +1 -0
  203. package/build/module/Carousel/hooks/index.js +6 -0
  204. package/build/module/Carousel/hooks/index.js.map +1 -0
  205. package/build/module/Carousel/hooks/useAutoplayController.js +48 -0
  206. package/build/module/Carousel/hooks/useAutoplayController.js.map +1 -0
  207. package/build/module/Carousel/hooks/useIndexController.js +44 -0
  208. package/build/module/Carousel/hooks/useIndexController.js.map +1 -0
  209. package/build/module/Carousel/hooks/useItemVisibilityStore.js +86 -0
  210. package/build/module/Carousel/hooks/useItemVisibilityStore.js.map +1 -0
  211. package/build/module/Carousel/hooks/useLoopedData.js +24 -0
  212. package/build/module/Carousel/hooks/useLoopedData.js.map +1 -0
  213. package/build/module/Carousel/hooks/usePagingAnimator.js +192 -0
  214. package/build/module/Carousel/hooks/usePagingAnimator.js.map +1 -0
  215. package/build/module/Carousel/index.js +2 -1
  216. package/build/module/Carousel/index.js.map +1 -1
  217. package/build/module/Carousel/tick.js +6 -0
  218. package/build/module/Carousel/tick.js.map +1 -0
  219. package/build/module/Carousel/types.js +4 -0
  220. package/build/module/Carousel/types.js.map +1 -0
  221. package/build/module/ComicViewer/ComicViewer.js +201 -86
  222. package/build/module/ComicViewer/ComicViewer.js.map +1 -1
  223. package/build/module/ComicViewer/ComicViewerProps.js.map +1 -1
  224. package/build/module/ComicViewer/EncodedTile.js +3 -0
  225. package/build/module/ComicViewer/EncodedTile.js.map +1 -0
  226. package/build/module/ComicViewer/ReloadButton.js +33 -0
  227. package/build/module/ComicViewer/ReloadButton.js.map +1 -0
  228. package/build/module/ComicViewer/ViewerItem.js +49 -59
  229. package/build/module/ComicViewer/ViewerItem.js.map +1 -1
  230. package/build/module/ComicViewer/index.js.map +1 -1
  231. package/build/module/DateTimePicker/DateTimePicker.js +2 -2
  232. package/build/module/DateTimePicker/DateTimePicker.js.map +1 -1
  233. package/build/module/DateTimePicker/DateTimePickerProps.js.map +1 -1
  234. package/build/module/DateTimePicker/DateTimePickerProvider.js.map +1 -1
  235. package/build/module/DateTimePicker/YearPicker.js +21 -17
  236. package/build/module/DateTimePicker/YearPicker.js.map +1 -1
  237. package/build/module/DateTimePicker/index.js.map +1 -1
  238. package/build/module/DateTimePicker/utils.js +2 -1
  239. package/build/module/DateTimePicker/utils.js.map +1 -1
  240. package/build/module/FlipCard/FlipCard.js +7 -7
  241. package/build/module/FlipCard/FlipCard.js.map +1 -1
  242. package/build/module/FlipCard/FlipCardProps.js.map +1 -1
  243. package/build/module/FlipCard/index.js.map +1 -1
  244. package/build/module/StatusBarProvider/Provider.js.map +1 -1
  245. package/build/module/StatusBarProvider/StatusBarProvider.js.map +1 -1
  246. package/build/module/StatusBarProvider/StatusBarProviderProps.js.map +1 -1
  247. package/build/module/StatusBarProvider/index.js.map +1 -1
  248. package/build/module/ViewPager/FluxContext.js +4 -0
  249. package/build/module/ViewPager/FluxContext.js.map +1 -0
  250. package/build/module/ViewPager/InternalContext.js +7 -0
  251. package/build/module/ViewPager/InternalContext.js.map +1 -0
  252. package/build/module/ViewPager/PageStateContext.js +7 -0
  253. package/build/module/ViewPager/PageStateContext.js.map +1 -0
  254. package/build/module/ViewPager/ViewPager.js +57 -0
  255. package/build/module/ViewPager/ViewPager.js.map +1 -0
  256. package/build/module/ViewPager/ViewPager.native.js +127 -0
  257. package/build/module/ViewPager/ViewPager.native.js.map +1 -0
  258. package/build/module/ViewPager/ViewPagerProps.js.map +1 -1
  259. package/build/module/ViewPager/components/ChildrenMemoizedPage.js +101 -0
  260. package/build/module/ViewPager/components/ChildrenMemoizedPage.js.map +1 -0
  261. package/build/module/ViewPager/components/FluxStoreProvider.js +20 -0
  262. package/build/module/ViewPager/components/FluxStoreProvider.js.map +1 -0
  263. package/build/module/ViewPager/components/index.js +3 -0
  264. package/build/module/ViewPager/components/index.js.map +1 -0
  265. package/build/module/ViewPager/hooks/index.js +8 -0
  266. package/build/module/ViewPager/hooks/index.js.map +1 -0
  267. package/build/module/ViewPager/hooks/useDispatch.js +10 -0
  268. package/build/module/ViewPager/hooks/useDispatch.js.map +1 -0
  269. package/build/module/ViewPager/hooks/useEagerState.js +12 -0
  270. package/build/module/ViewPager/hooks/useEagerState.js.map +1 -0
  271. package/build/module/ViewPager/hooks/useForceRender.js +7 -0
  272. package/build/module/ViewPager/hooks/useForceRender.js.map +1 -0
  273. package/build/module/ViewPager/hooks/useLazyState.js +30 -0
  274. package/build/module/ViewPager/hooks/useLazyState.js.map +1 -0
  275. package/build/module/ViewPager/hooks/usePageStore.js +25 -0
  276. package/build/module/ViewPager/hooks/usePageStore.js.map +1 -0
  277. package/build/module/ViewPager/hooks/useStore.js +14 -0
  278. package/build/module/ViewPager/hooks/useStore.js.map +1 -0
  279. package/build/module/ViewPager/hooks/useViewPagerPageState.js +7 -0
  280. package/build/module/ViewPager/hooks/useViewPagerPageState.js.map +1 -0
  281. package/build/module/ViewPager/index.js +3 -1
  282. package/build/module/ViewPager/index.js.map +1 -1
  283. package/build/module/ViewPager/types.js +2 -0
  284. package/build/module/ViewPager/types.js.map +1 -0
  285. package/build/module/ViewPager/utils.js +6 -33
  286. package/build/module/ViewPager/utils.js.map +1 -1
  287. package/build/module/ViewabilityTrackerView/Viewability.js +2 -0
  288. package/build/module/ViewabilityTrackerView/Viewability.js.map +1 -0
  289. package/build/module/ViewabilityTrackerView/ViewabilityTrackerView.js +28 -0
  290. package/build/module/ViewabilityTrackerView/ViewabilityTrackerView.js.map +1 -0
  291. package/build/module/ViewabilityTrackerView/ViewabilityTrackerViewProps.js +2 -0
  292. package/build/module/ViewabilityTrackerView/ViewabilityTrackerViewProps.js.map +1 -0
  293. package/build/module/ViewabilityTrackerView/index.js +2 -0
  294. package/build/module/ViewabilityTrackerView/index.js.map +1 -0
  295. package/build/module/ViewabilityTrackerView/measureViewability.js +34 -0
  296. package/build/module/ViewabilityTrackerView/measureViewability.js.map +1 -0
  297. package/build/module/ViewabilityTrackerView/useViewabilityTracker.js +73 -0
  298. package/build/module/ViewabilityTrackerView/useViewabilityTracker.js.map +1 -0
  299. package/build/module/hooks/index.js +2 -0
  300. package/build/module/hooks/index.js.map +1 -1
  301. package/build/module/hooks/useAppbarStyles.js.map +1 -1
  302. package/build/module/hooks/useDeferredExecutor.js +33 -0
  303. package/build/module/hooks/useDeferredExecutor.js.map +1 -0
  304. package/build/module/hooks/useElevationStyle.js.map +1 -1
  305. package/build/module/hooks/useHeight.js +4 -3
  306. package/build/module/hooks/useHeight.js.map +1 -1
  307. package/build/module/hooks/useIsMounted.js +13 -0
  308. package/build/module/hooks/useIsMounted.js.map +1 -0
  309. package/build/module/hooks/useUnstableCollapsibleAppBar.js +58 -45
  310. package/build/module/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
  311. package/build/module/hooks/useUnstableToggleDisplayStyle.js +9 -7
  312. package/build/module/hooks/useUnstableToggleDisplayStyle.js.map +1 -1
  313. package/build/module/index.js +2 -0
  314. package/build/module/index.js.map +1 -1
  315. package/build/typescript/AnimatedY/AnimatedY.d.ts +0 -1
  316. package/build/typescript/BottomSheet/BottomSheet.d.ts +2 -0
  317. package/build/typescript/BottomSheet/BottomSheetNative.d.ts +0 -1
  318. package/build/typescript/BottomSheet/BottomSheetProps.d.ts +6 -1
  319. package/build/typescript/BottomSheet/BottomSheetWeb.d.ts +0 -1
  320. package/build/typescript/BottomSheet/TransparentBackdrop.d.ts +0 -1
  321. package/build/typescript/BottomSheet/useDynamicSnapPoints.d.ts +11 -0
  322. package/build/typescript/Carousel/Carousel.d.ts +5 -0
  323. package/build/typescript/Carousel/CarouselProps.d.ts +33 -48
  324. package/build/typescript/Carousel/animation/animationUtils.d.ts +1 -0
  325. package/build/typescript/Carousel/animation/createDefaultItemStyle.d.ts +2 -0
  326. package/build/typescript/Carousel/animation/createDefaultScrollAnimation.d.ts +2 -0
  327. package/build/typescript/Carousel/animation/index.d.ts +4 -0
  328. package/build/typescript/Carousel/animation/normalItemStyleFactory.d.ts +2 -0
  329. package/build/typescript/Carousel/animation/parallaxItemStyleFactory.d.ts +9 -0
  330. package/build/typescript/Carousel/components/InternalContext.d.ts +14 -0
  331. package/build/typescript/Carousel/components/ItemView.d.ts +9 -0
  332. package/build/typescript/Carousel/components/RootView.d.ts +16 -0
  333. package/build/typescript/Carousel/components/ScrollViewGesture.d.ts +12 -0
  334. package/build/typescript/Carousel/components/index.d.ts +4 -0
  335. package/build/typescript/Carousel/components/useItemInterpolation.d.ts +2 -0
  336. package/build/typescript/Carousel/hooks/index.d.ts +5 -0
  337. package/build/typescript/Carousel/hooks/useAutoplayController.d.ts +7 -0
  338. package/build/typescript/Carousel/hooks/useIndexController.d.ts +10 -0
  339. package/build/typescript/Carousel/hooks/useItemVisibilityStore.d.ts +7 -0
  340. package/build/typescript/Carousel/hooks/useLoopedData.d.ts +1 -0
  341. package/build/typescript/Carousel/hooks/usePagingAnimator.d.ts +17 -0
  342. package/build/typescript/Carousel/index.d.ts +3 -1
  343. package/build/typescript/Carousel/tick.d.ts +2 -0
  344. package/build/typescript/Carousel/types.d.ts +91 -0
  345. package/build/typescript/ComicViewer/ComicViewer.d.ts +1 -2
  346. package/build/typescript/ComicViewer/ComicViewerProps.d.ts +39 -44
  347. package/build/typescript/ComicViewer/EncodedTile.d.ts +2 -0
  348. package/build/typescript/ComicViewer/ReloadButton.d.ts +6 -0
  349. package/build/typescript/ComicViewer/ViewerItem.d.ts +37 -7
  350. package/build/typescript/ComicViewer/index.d.ts +2 -2
  351. package/build/typescript/DateTimePicker/DateTimePicker.d.ts +0 -1
  352. package/build/typescript/DateTimePicker/YearPicker.d.ts +0 -1
  353. package/build/typescript/FlipCard/FlipCard.d.ts +0 -1
  354. package/build/typescript/StatusBarProvider/StatusBarProvider.d.ts +0 -1
  355. package/build/typescript/ViewPager/FluxContext.d.ts +5 -0
  356. package/build/typescript/ViewPager/InternalContext.d.ts +7 -0
  357. package/build/typescript/ViewPager/PageStateContext.d.ts +6 -0
  358. package/build/typescript/ViewPager/ViewPager.d.ts +5 -0
  359. package/build/typescript/ViewPager/ViewPager.native.d.ts +5 -0
  360. package/build/typescript/ViewPager/ViewPagerProps.d.ts +18 -29
  361. package/build/typescript/ViewPager/components/ChildrenMemoizedPage.d.ts +14 -0
  362. package/build/typescript/ViewPager/components/FluxStoreProvider.d.ts +6 -0
  363. package/build/typescript/ViewPager/components/index.d.ts +2 -0
  364. package/build/typescript/ViewPager/hooks/index.d.ts +7 -0
  365. package/build/typescript/ViewPager/hooks/useDispatch.d.ts +2 -0
  366. package/build/typescript/ViewPager/hooks/useEagerState.d.ts +1 -0
  367. package/build/typescript/ViewPager/hooks/useForceRender.d.ts +2 -0
  368. package/build/typescript/ViewPager/hooks/useLazyState.d.ts +2 -0
  369. package/build/typescript/ViewPager/hooks/usePageStore.d.ts +2 -0
  370. package/build/typescript/ViewPager/hooks/useStore.d.ts +2 -0
  371. package/build/typescript/ViewPager/hooks/useViewPagerPageState.d.ts +1 -0
  372. package/build/typescript/ViewPager/index.d.ts +4 -1
  373. package/build/typescript/ViewPager/types.d.ts +12 -0
  374. package/build/typescript/ViewPager/utils.d.ts +5 -20
  375. package/build/typescript/ViewabilityTrackerView/Viewability.d.ts +3 -0
  376. package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerView.d.ts +2 -0
  377. package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerViewProps.d.ts +22 -0
  378. package/build/typescript/ViewabilityTrackerView/index.d.ts +2 -0
  379. package/build/typescript/ViewabilityTrackerView/measureViewability.d.ts +11 -0
  380. package/build/typescript/ViewabilityTrackerView/useViewabilityTracker.d.ts +11 -0
  381. package/build/typescript/hooks/index.d.ts +2 -0
  382. package/build/typescript/hooks/useDeferredExecutor.d.ts +11 -0
  383. package/build/typescript/hooks/useIsMounted.d.ts +4 -0
  384. package/build/typescript/hooks/useUnstableCollapsibleAppBar.d.ts +2 -3
  385. package/build/typescript/hooks/useUnstableToggleDisplayStyle.d.ts +2 -2
  386. package/build/typescript/index.d.ts +2 -0
  387. package/package.json +11 -25
  388. package/src/AnimatedY/AnimatedY.tsx +13 -10
  389. package/src/BottomSheet/BottomSheet.tsx +184 -0
  390. package/src/BottomSheet/BottomSheetNative.tsx +2 -0
  391. package/src/BottomSheet/BottomSheetProps.ts +7 -1
  392. package/src/BottomSheet/BottomSheetWeb.tsx +18 -5
  393. package/src/BottomSheet/useDynamicSnapPoints.ts +52 -0
  394. package/src/Carousel/Carousel.tsx +135 -0
  395. package/src/Carousel/CarouselProps.ts +42 -53
  396. package/src/Carousel/animation/animationUtils.ts +1 -0
  397. package/src/Carousel/animation/createDefaultItemStyle.ts +3 -0
  398. package/src/Carousel/animation/createDefaultScrollAnimation.ts +13 -0
  399. package/src/Carousel/animation/index.ts +4 -0
  400. package/src/Carousel/animation/normalItemStyleFactory.ts +19 -0
  401. package/src/Carousel/animation/parallaxItemStyleFactory.ts +79 -0
  402. package/src/Carousel/components/InternalContext.ts +33 -0
  403. package/src/Carousel/components/ItemView.tsx +66 -0
  404. package/src/Carousel/components/RootView.tsx +79 -0
  405. package/src/Carousel/components/ScrollViewGesture.tsx +92 -0
  406. package/src/Carousel/components/index.ts +4 -0
  407. package/src/Carousel/components/useItemInterpolation.ts +107 -0
  408. package/src/Carousel/hooks/index.ts +5 -0
  409. package/src/Carousel/hooks/useAutoplayController.ts +57 -0
  410. package/src/Carousel/hooks/useIndexController.tsx +57 -0
  411. package/src/Carousel/hooks/useItemVisibilityStore.ts +107 -0
  412. package/src/Carousel/hooks/useLoopedData.ts +26 -0
  413. package/src/Carousel/hooks/usePagingAnimator.ts +255 -0
  414. package/src/Carousel/index.ts +4 -2
  415. package/src/Carousel/tick.ts +6 -0
  416. package/src/Carousel/types.ts +114 -0
  417. package/src/ComicViewer/ComicViewer.tsx +222 -93
  418. package/src/ComicViewer/ComicViewerProps.ts +42 -48
  419. package/src/ComicViewer/EncodedTile.ts +3 -0
  420. package/src/ComicViewer/ReloadButton.tsx +36 -0
  421. package/src/ComicViewer/ViewerItem.tsx +91 -63
  422. package/src/ComicViewer/index.ts +2 -2
  423. package/src/DateTimePicker/DateTimePicker.tsx +2 -2
  424. package/src/FlipCard/FlipCard.tsx +8 -8
  425. package/src/ViewPager/FluxContext.ts +8 -0
  426. package/src/ViewPager/InternalContext.ts +13 -0
  427. package/src/ViewPager/PageStateContext.ts +11 -0
  428. package/src/ViewPager/ViewPager.native.tsx +150 -0
  429. package/src/ViewPager/ViewPager.tsx +69 -0
  430. package/src/ViewPager/ViewPagerProps.ts +20 -35
  431. package/src/ViewPager/components/ChildrenMemoizedPage.tsx +124 -0
  432. package/src/ViewPager/components/FluxStoreProvider.tsx +27 -0
  433. package/src/ViewPager/components/index.ts +2 -0
  434. package/src/ViewPager/hooks/index.ts +7 -0
  435. package/src/ViewPager/hooks/useDispatch.ts +11 -0
  436. package/src/ViewPager/hooks/useEagerState.ts +14 -0
  437. package/src/ViewPager/hooks/useForceRender.ts +7 -0
  438. package/src/ViewPager/hooks/useLazyState.ts +32 -0
  439. package/src/ViewPager/hooks/usePageStore.ts +30 -0
  440. package/src/ViewPager/hooks/useStore.ts +15 -0
  441. package/src/ViewPager/hooks/useViewPagerPageState.ts +6 -0
  442. package/src/ViewPager/index.ts +11 -2
  443. package/src/ViewPager/types.ts +15 -0
  444. package/src/ViewPager/utils.tsx +9 -56
  445. package/src/ViewabilityTrackerView/Viewability.ts +3 -0
  446. package/src/ViewabilityTrackerView/ViewabilityTrackerView.tsx +33 -0
  447. package/src/ViewabilityTrackerView/ViewabilityTrackerViewProps.ts +25 -0
  448. package/src/ViewabilityTrackerView/index.ts +2 -0
  449. package/src/ViewabilityTrackerView/measureViewability.ts +54 -0
  450. package/src/ViewabilityTrackerView/useViewabilityTracker.ts +85 -0
  451. package/src/hooks/index.ts +2 -0
  452. package/src/hooks/useDeferredExecutor.ts +46 -0
  453. package/src/hooks/useHeight.ts +2 -2
  454. package/src/hooks/useIsMounted.ts +19 -0
  455. package/src/hooks/useUnstableCollapsibleAppBar.ts +62 -45
  456. package/src/hooks/useUnstableToggleDisplayStyle.ts +8 -6
  457. package/src/index.ts +3 -0
  458. package/build/commonjs/Carousel/CarouselNative.js +0 -72
  459. package/build/commonjs/Carousel/CarouselNative.js.map +0 -1
  460. package/build/commonjs/Carousel/CarouselWeb.js +0 -237
  461. package/build/commonjs/Carousel/CarouselWeb.js.map +0 -1
  462. package/build/commonjs/Carousel/index.native.js.map +0 -1
  463. package/build/commonjs/Carousel/utils.js +0 -19
  464. package/build/commonjs/Carousel/utils.js.map +0 -1
  465. package/build/commonjs/ComicViewer/ComicViewerItemProps.js +0 -6
  466. package/build/commonjs/ComicViewer/ComicViewerItemProps.js.map +0 -1
  467. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +0 -49
  468. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +0 -1
  469. package/build/commonjs/ViewPager/ViewPagerNative.js +0 -72
  470. package/build/commonjs/ViewPager/ViewPagerNative.js.map +0 -1
  471. package/build/commonjs/ViewPager/ViewPagerWeb.js +0 -55
  472. package/build/commonjs/ViewPager/ViewPagerWeb.js.map +0 -1
  473. package/build/commonjs/ViewPager/index.native.js +0 -16
  474. package/build/commonjs/ViewPager/index.native.js.map +0 -1
  475. package/build/commonjs/hooks/useWidth.js +0 -29
  476. package/build/commonjs/hooks/useWidth.js.map +0 -1
  477. package/build/module/Carousel/CarouselNative.js +0 -54
  478. package/build/module/Carousel/CarouselNative.js.map +0 -1
  479. package/build/module/Carousel/CarouselWeb.js +0 -215
  480. package/build/module/Carousel/CarouselWeb.js.map +0 -1
  481. package/build/module/Carousel/index.native.js +0 -2
  482. package/build/module/Carousel/index.native.js.map +0 -1
  483. package/build/module/Carousel/utils.js +0 -7
  484. package/build/module/Carousel/utils.js.map +0 -1
  485. package/build/module/ComicViewer/ComicViewerItemProps.js +0 -2
  486. package/build/module/ComicViewer/ComicViewerItemProps.js.map +0 -1
  487. package/build/module/ViewPager/ChildrenMemoizedPage.js +0 -37
  488. package/build/module/ViewPager/ChildrenMemoizedPage.js.map +0 -1
  489. package/build/module/ViewPager/ViewPagerNative.js +0 -53
  490. package/build/module/ViewPager/ViewPagerNative.js.map +0 -1
  491. package/build/module/ViewPager/ViewPagerWeb.js +0 -41
  492. package/build/module/ViewPager/ViewPagerWeb.js.map +0 -1
  493. package/build/module/ViewPager/index.native.js +0 -2
  494. package/build/module/ViewPager/index.native.js.map +0 -1
  495. package/build/module/hooks/useWidth.js +0 -15
  496. package/build/module/hooks/useWidth.js.map +0 -1
  497. package/build/typescript/Carousel/CarouselNative.d.ts +0 -3
  498. package/build/typescript/Carousel/CarouselWeb.d.ts +0 -4
  499. package/build/typescript/Carousel/index.native.d.ts +0 -1
  500. package/build/typescript/Carousel/utils.d.ts +0 -6
  501. package/build/typescript/ComicViewer/ComicViewerItemProps.d.ts +0 -12
  502. package/build/typescript/ViewPager/ChildrenMemoizedPage.d.ts +0 -4
  503. package/build/typescript/ViewPager/ViewPagerNative.d.ts +0 -3
  504. package/build/typescript/ViewPager/ViewPagerWeb.d.ts +0 -3
  505. package/build/typescript/ViewPager/index.native.d.ts +0 -1
  506. package/build/typescript/hooks/useWidth.d.ts +0 -2
  507. package/src/Carousel/CarouselNative.tsx +0 -67
  508. package/src/Carousel/CarouselWeb.tsx +0 -222
  509. package/src/Carousel/index.native.ts +0 -1
  510. package/src/Carousel/utils.ts +0 -11
  511. package/src/ComicViewer/ComicViewerItemProps.ts +0 -15
  512. package/src/ViewPager/ChildrenMemoizedPage.tsx +0 -36
  513. package/src/ViewPager/ViewPagerNative.tsx +0 -66
  514. package/src/ViewPager/ViewPagerWeb.tsx +0 -52
  515. package/src/ViewPager/index.native.ts +0 -1
  516. package/src/hooks/useWidth.ts +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useMemo","useRef","Animated","PanResponder","ScrollView","View","css","Modal","Paper","StyleSheet","useAnimatedValue","useTheme","useDynamicSnapPoints","useStyles","theme","root","justifyContent","zIndex","dialog","animated","alignSelf","maxWidth","width","paper","borderBottomLeftRadius","borderBottomRightRadius","flexGrow","overflow","scrollView","BottomSheet","props","backdropOpacity","children","header","index","onChange","snapPoints","initialSnapPoints","styles","contentLayout","x","y","height","currentScrollY","handleContentLayout","length","translateY","animatedY","isInsideScrollView","locationX","locationY","current","panResponder","create","onMoveShouldSetPanResponder","event","gestureState","nativeEvent","dy","onPanResponderMove","_","setValue","onPanResponderRelease","vy","handleClose","timing","toValue","useNativeDriver","duration","start","handleScrollViewLayout","layout","handleScroll","contentOffset","animatedStyles","transform","paperStyles","contentStyle","absoluteFill","panHandlers"],"sources":["BottomSheet.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n LayoutRectangle,\n NativeScrollEvent,\n NativeSyntheticEvent,\n PanResponder,\n ScrollView,\n View,\n} from 'react-native';\nimport { css, Modal, Paper, StyleSheet, useAnimatedValue, useTheme } from '@fountain-ui/core';\nimport { NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\nimport BottomSheetProps from './BottomSheetProps';\nimport useDynamicSnapPoints from './useDynamicSnapPoints';\n\ntype BottomSheetStyles = NamedStylesStringUnion<'root' | 'animated' | 'paper' | 'scrollView'>;\n\nconst useStyles: UseStyles<BottomSheetStyles> = function (): BottomSheetStyles {\n const theme = useTheme();\n\n return {\n root: {\n justifyContent: 'flex-end',\n zIndex: theme.zIndex.dialog,\n },\n animated: {\n alignSelf: 'center',\n maxWidth: 720,\n width: '100%',\n },\n paper: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n flexGrow: 1,\n overflow: 'hidden',\n },\n scrollView: {\n flexGrow: 1,\n },\n };\n};\n\nexport default function BottomSheet(props: BottomSheetProps) {\n const {\n backdropOpacity,\n children,\n header,\n index,\n onChange,\n snapPoints: initialSnapPoints,\n } = props;\n\n const styles = useStyles();\n\n const contentLayout = useRef<LayoutRectangle>({ x: 0, y: 0, width: 0, height: 0 });\n const currentScrollY = useRef<number>(0);\n\n const {\n snapPoints,\n handleContentLayout,\n } = useDynamicSnapPoints({\n index,\n initialSnapPoints,\n });\n\n const height = snapPoints[snapPoints.length - 1] ?? 0;\n const translateY = height - (snapPoints[index] ?? 0);\n\n const animatedY = useAnimatedValue(translateY);\n\n const isInsideScrollView = (locationX: number, locationY: number): boolean => {\n const {\n current: { x, y, width, height },\n } = contentLayout;\n\n return locationX >= x && locationX <= x + width && locationY >= y && locationY <= y + height;\n };\n\n const panResponder = useMemo(() => (\n PanResponder.create({\n onMoveShouldSetPanResponder: (event, gestureState) => {\n const {\n nativeEvent: { locationX, locationY },\n } = event;\n\n if (isInsideScrollView(locationX, locationY)) {\n return gestureState.dy > 0 && currentScrollY.current === 0;\n }\n\n return true;\n },\n onPanResponderMove: (_, gestureState) => {\n if (gestureState.dy > 0) {\n animatedY.setValue(translateY + gestureState.dy);\n }\n },\n onPanResponderRelease: (_, gestureState) => {\n if (gestureState.dy > 0 && gestureState.vy > 0.5) {\n handleClose();\n } else {\n Animated.timing(animatedY, {\n toValue: translateY,\n useNativeDriver: false,\n duration: 300,\n }).start();\n }\n },\n })\n ), [translateY]);\n\n useEffect(() => {\n if (translateY >= 0) {\n Animated.timing(animatedY, {\n toValue: translateY,\n useNativeDriver: false,\n duration: 300,\n }).start();\n }\n }, [translateY]);\n\n const handleClose = () => {\n if (onChange) {\n onChange(-1);\n }\n };\n\n const handleScrollViewLayout = (event: LayoutChangeEvent) => {\n contentLayout.current = event.nativeEvent.layout;\n };\n\n const handleScroll = (event: NativeSyntheticEvent<NativeScrollEvent>) => {\n currentScrollY.current = event.nativeEvent.contentOffset.y;\n };\n\n const animatedStyles = [\n styles.animated,\n { transform: [{ translateY: animatedY }] },\n ];\n\n const paperStyles = [\n styles.paper,\n { ...(height !== 0 ? { height } : {}) },\n ];\n\n const contentStyle = {\n ...(snapPoints[index] !== 0 ? { height: snapPoints[index] } : {}),\n };\n\n return (\n <Modal\n backdropOpacity={backdropOpacity}\n onClose={handleClose}\n visible={index >= 0}\n style={css([StyleSheet.absoluteFill, styles.root])}\n >\n <Animated.View\n style={animatedStyles}\n {...panResponder.panHandlers}\n >\n <Paper\n elevation={12}\n style={paperStyles}\n >\n <View\n style={contentStyle}\n onLayout={handleContentLayout}\n >\n {header}\n\n <ScrollView\n onLayout={handleScrollViewLayout}\n onScroll={handleScroll}\n scrollEventThrottle={300}\n style={styles.scrollView}\n >\n {children}\n </ScrollView>\n </View>\n </Paper>\n </Animated.View>\n </Modal>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React from 'react';
4
4
  import { Platform } from 'react-native';
@@ -66,7 +66,8 @@ export default function BottomSheet(props) {
66
66
  const OpacityAwareBackdrop = props => /*#__PURE__*/React.createElement(BottomSheetBackdrop, _extends({}, props, {
67
67
  appearsOnIndex: 0,
68
68
  disappearsOnIndex: -1,
69
- opacity: backdropOpacity
69
+ opacity: backdropOpacity,
70
+ pressBehavior: onChange ? 'close' : 'none'
70
71
  }));
71
72
 
72
73
  return /*#__PURE__*/React.createElement(BottomSheetModalProvider, null, /*#__PURE__*/React.createElement(BottomSheetModal, {
@@ -79,7 +80,8 @@ export default function BottomSheet(props) {
79
80
  onDismiss: handleDismiss,
80
81
  ref: bottomSheetRef,
81
82
  snapPoints: snapPoints,
82
- style: modalStyle
83
+ style: modalStyle,
84
+ enablePanDownToClose: Boolean(onChange)
83
85
  }, children));
84
86
  }
85
87
  ;
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomSheetNative.tsx"],"names":["React","Platform","useTheme","BottomSheetBackdrop","BottomSheetModal","BottomSheetModalProvider","TransparentBackdrop","NoHandle","BottomSheet","props","backdropOpacity","children","index","onChange","snapPoints","indexRef","useRef","bottomSheetRef","handleChange","useCallback","newIndex","current","handleDismiss","useEffect","present","dismiss","snapToIndex","theme","shadow","modalStyle","backgroundColor","select","android","elevation","ios","web","boxShadow","backgroundStyle","palette","paper","default","isBackdropTransparent","OpacityAwareBackdrop"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport { useTheme } from '@fountain-ui/styles';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n BottomSheetModalProvider,\n} from '@gorhom/bottom-sheet';\nimport type BottomSheetProps from './BottomSheetProps';\nimport TransparentBackdrop from './TransparentBackdrop';\n\nconst NoHandle = () => null;\n\nexport default function BottomSheet(props: BottomSheetProps) {\n const {\n backdropOpacity = 0.5,\n children,\n index,\n onChange,\n snapPoints,\n } = props;\n\n const indexRef = React.useRef<number>(-1);\n const bottomSheetRef = React.useRef<BottomSheetModal | null>(null);\n\n const handleChange = React.useCallback((newIndex: number) => {\n indexRef.current = newIndex;\n\n if (onChange) {\n onChange(newIndex);\n }\n }, [onChange]);\n\n const handleDismiss = React.useCallback(() => {\n handleChange(-1);\n }, [handleChange]);\n\n React.useEffect(() => {\n if (index === indexRef.current) {\n return;\n }\n\n if (indexRef.current < 0 && index >= 0) {\n bottomSheetRef.current?.present();\n } else if (indexRef.current >= 0 && index < 0) {\n bottomSheetRef.current?.dismiss();\n } else {\n // @ts-ignore\n bottomSheetRef.current?.snapToIndex(index);\n }\n }, [index]);\n\n const theme = useTheme();\n const shadow = theme.shadow[12];\n const modalStyle = {\n backgroundColor: '#ffffff00',\n ...Platform.select<object>({\n android: shadow?.elevation,\n ios: shadow?.shadow,\n web: shadow?.boxShadow,\n }),\n };\n const backgroundStyle = {\n backgroundColor: theme.palette.paper.default,\n };\n\n const isBackdropTransparent = backdropOpacity <= 0;\n\n const OpacityAwareBackdrop = (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop\n {...props}\n appearsOnIndex={0}\n disappearsOnIndex={-1}\n opacity={backdropOpacity}\n />\n );\n\n return (\n <BottomSheetModalProvider>\n <BottomSheetModal\n backdropComponent={isBackdropTransparent ? TransparentBackdrop : OpacityAwareBackdrop}\n // @ts-ignore\n backgroundStyle={backgroundStyle}\n index={index}\n handleComponent={NoHandle}\n onChange={handleChange}\n onDismiss={handleDismiss}\n ref={bottomSheetRef}\n snapPoints={snapPoints}\n style={modalStyle}\n >\n {children}\n </BottomSheetModal>\n </BottomSheetModalProvider>\n );\n};\n"]}
1
+ {"version":3,"names":["React","Platform","useTheme","BottomSheetBackdrop","BottomSheetModal","BottomSheetModalProvider","TransparentBackdrop","NoHandle","BottomSheet","props","backdropOpacity","children","index","onChange","snapPoints","indexRef","useRef","bottomSheetRef","handleChange","useCallback","newIndex","current","handleDismiss","useEffect","present","dismiss","snapToIndex","theme","shadow","modalStyle","backgroundColor","select","android","elevation","ios","web","boxShadow","backgroundStyle","palette","paper","default","isBackdropTransparent","OpacityAwareBackdrop","Boolean"],"sources":["BottomSheetNative.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport { useTheme } from '@fountain-ui/styles';\nimport {\n BottomSheetBackdrop,\n BottomSheetBackdropProps,\n BottomSheetModal,\n BottomSheetModalProvider,\n} from '@gorhom/bottom-sheet';\nimport type BottomSheetProps from './BottomSheetProps';\nimport TransparentBackdrop from './TransparentBackdrop';\n\nconst NoHandle = () => null;\n\nexport default function BottomSheet(props: BottomSheetProps) {\n const {\n backdropOpacity = 0.5,\n children,\n index,\n onChange,\n snapPoints,\n } = props;\n\n const indexRef = React.useRef<number>(-1);\n const bottomSheetRef = React.useRef<BottomSheetModal | null>(null);\n\n const handleChange = React.useCallback((newIndex: number) => {\n indexRef.current = newIndex;\n\n if (onChange) {\n onChange(newIndex);\n }\n }, [onChange]);\n\n const handleDismiss = React.useCallback(() => {\n handleChange(-1);\n }, [handleChange]);\n\n React.useEffect(() => {\n if (index === indexRef.current) {\n return;\n }\n\n if (indexRef.current < 0 && index >= 0) {\n bottomSheetRef.current?.present();\n } else if (indexRef.current >= 0 && index < 0) {\n bottomSheetRef.current?.dismiss();\n } else {\n // @ts-ignore\n bottomSheetRef.current?.snapToIndex(index);\n }\n }, [index]);\n\n const theme = useTheme();\n const shadow = theme.shadow[12];\n const modalStyle = {\n backgroundColor: '#ffffff00',\n ...Platform.select<object>({\n android: shadow?.elevation,\n ios: shadow?.shadow,\n web: shadow?.boxShadow,\n }),\n };\n const backgroundStyle = {\n backgroundColor: theme.palette.paper.default,\n };\n\n const isBackdropTransparent = backdropOpacity <= 0;\n\n const OpacityAwareBackdrop = (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop\n {...props}\n appearsOnIndex={0}\n disappearsOnIndex={-1}\n opacity={backdropOpacity}\n pressBehavior={onChange ? 'close' : 'none'}\n />\n );\n\n return (\n <BottomSheetModalProvider>\n <BottomSheetModal\n backdropComponent={isBackdropTransparent ? TransparentBackdrop : OpacityAwareBackdrop}\n // @ts-ignore\n backgroundStyle={backgroundStyle}\n index={index}\n handleComponent={NoHandle}\n onChange={handleChange}\n onDismiss={handleDismiss}\n ref={bottomSheetRef}\n snapPoints={snapPoints}\n style={modalStyle}\n enablePanDownToClose={Boolean(onChange)}\n >\n {children}\n </BottomSheetModal>\n </BottomSheetModalProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
1
+ {"version":3,"names":[],"sources":["BottomSheetProps.ts"],"sourcesContent":["import React from 'react';\nimport type { ComponentProps } from '@fountain-ui/core';\n\nexport default interface BottomSheetProps extends ComponentProps<{\n /**\n * Opacity for BackdropComponent\n * @default 0.5\n */\n backdropOpacity?: number;\n\n /**\n * BottomSheet children, usually the included sub-components.\n */\n children?: React.ReactNode;\n\n /**\n * Area to be fixed on the top of the bottom sheet.\n */\n header?: React.ReactNode;\n\n /**\n * Snap index. You could also provide -1 to bottom sheet in closed state.\n */\n index: number;\n\n /**\n * Callback fired when the index is changed.\n * Important! Use memoized value.\n */\n onChange?: (newIndex: number) => void;\n\n /**\n * Points for the bottom sheet to snap to, points should be sorted from bottom to top.\n * Important! Use memoized value.\n * Only number type or string type(~% format) can be used.\n */\n snapPoints: Array<number | string>;\n}> {}\n"],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { useWindowDimensions } from 'react-native';
2
3
  import { Modal, Paper, StyleSheet, css, useTheme } from '@fountain-ui/core';
3
4
  import AnimatedY from '../AnimatedY';
4
5
 
@@ -23,15 +24,22 @@ const useStyles = function () {
23
24
  };
24
25
  };
25
26
 
26
- const calculateHeight = points => {
27
- var _points;
27
+ const convertHeightAsPixel = (windowHeight, value) => {
28
+ if (typeof value === 'number') {
29
+ return value;
30
+ }
28
31
 
29
- return (_points = points[points.length - 1]) !== null && _points !== void 0 ? _points : 0;
32
+ const percentageRegex = new RegExp(/^[0-9]+%$/);
33
+
34
+ if (percentageRegex.test(value)) {
35
+ const percentage = parseFloat(value) / 100;
36
+ return isNaN(percentage) ? 0 : Math.round(windowHeight * percentage);
37
+ }
38
+
39
+ return 0;
30
40
  };
31
41
 
32
42
  export default function BottomSheet(props) {
33
- var _snapPoints$index;
34
-
35
43
  const {
36
44
  backdropOpacity,
37
45
  children,
@@ -40,6 +48,9 @@ export default function BottomSheet(props) {
40
48
  snapPoints
41
49
  } = props;
42
50
  const styles = useStyles();
51
+ const {
52
+ height: windowHeight
53
+ } = useWindowDimensions();
43
54
 
44
55
  const handleClose = () => {
45
56
  if (onChange) {
@@ -47,8 +58,8 @@ export default function BottomSheet(props) {
47
58
  }
48
59
  };
49
60
 
50
- const height = calculateHeight(snapPoints);
51
- const translateY = height - ((_snapPoints$index = snapPoints[index]) !== null && _snapPoints$index !== void 0 ? _snapPoints$index : 0);
61
+ const height = convertHeightAsPixel(windowHeight, snapPoints[snapPoints.length - 1] ?? 0);
62
+ const translateY = height - convertHeightAsPixel(windowHeight, snapPoints[index] ?? 0);
52
63
  return /*#__PURE__*/React.createElement(Modal, {
53
64
  backdropOpacity: backdropOpacity,
54
65
  onClose: handleClose,
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomSheetWeb.tsx"],"names":["React","Modal","Paper","StyleSheet","css","useTheme","AnimatedY","useStyles","theme","root","justifyContent","zIndex","dialog","animated","alignSelf","maxWidth","width","paper","borderBottomLeftRadius","borderBottomRightRadius","flexGrow","overflow","calculateHeight","points","length","BottomSheet","props","backdropOpacity","children","index","onChange","snapPoints","styles","handleClose","height","translateY","absoluteFill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,KAAT,EAAgBC,KAAhB,EAAuBC,UAAvB,EAAmCC,GAAnC,EAAwCC,QAAxC,QAAwD,mBAAxD;AAEA,OAAOC,SAAP,MAAsB,cAAtB;;AAKA,MAAMC,SAAuC,GAAG,YAA+B;AAC3E,QAAMC,KAAK,GAAGH,QAAQ,EAAtB;AAEA,SAAO;AACHI,IAAAA,IAAI,EAAE;AACFC,MAAAA,cAAc,EAAE,UADd;AAEFC,MAAAA,MAAM,EAAEH,KAAK,CAACG,MAAN,CAAaC;AAFnB,KADH;AAKHC,IAAAA,QAAQ,EAAE;AACNC,MAAAA,SAAS,EAAE,QADL;AAENC,MAAAA,QAAQ,EAAE,GAFJ;AAGNC,MAAAA,KAAK,EAAE;AAHD,KALP;AAUHC,IAAAA,KAAK,EAAE;AACHC,MAAAA,sBAAsB,EAAE,CADrB;AAEHC,MAAAA,uBAAuB,EAAE,CAFtB;AAGHC,MAAAA,QAAQ,EAAE,CAHP;AAIHC,MAAAA,QAAQ,EAAE;AAJP;AAVJ,GAAP;AAiBH,CApBD;;AAsBA,MAAMC,eAAe,GAAIC,MAAD,IAAoD;AAAA;;AACxE,oBAAOA,MAAM,CAACA,MAAM,CAACC,MAAP,GAAgB,CAAjB,CAAb,6CAAoC,CAApC;AACH,CAFD;;AAIA,eAAe,SAASC,WAAT,CAAqBC,KAArB,EAA8C;AAAA;;AACzD,QAAM;AACFC,IAAAA,eADE;AAEFC,IAAAA,QAFE;AAGFC,IAAAA,KAHE;AAIFC,IAAAA,QAJE;AAKFC,IAAAA;AALE,MAMFL,KANJ;AAQA,QAAMM,MAAM,GAAGzB,SAAS,EAAxB;;AAEA,QAAM0B,WAAW,GAAG,MAAM;AACtB,QAAIH,QAAJ,EAAc;AACVA,MAAAA,QAAQ,CAAC,CAAC,CAAF,CAAR;AACH;AACJ,GAJD;;AAMA,QAAMI,MAAM,GAAGZ,eAAe,CAACS,UAAD,CAA9B;AACA,QAAMI,UAAU,GAAGD,MAAM,yBAAIH,UAAU,CAACF,KAAD,CAAd,iEAAyB,CAAzB,CAAzB;AAEA,sBACI,oBAAC,KAAD;AACI,IAAA,eAAe,EAAEF,eADrB;AAEI,IAAA,OAAO,EAAEM,WAFb;AAGI,IAAA,OAAO,EAAEJ,KAAK,IAAI,CAHtB;AAII,IAAA,KAAK,EAAEzB,GAAG,CAAC,CAACD,UAAU,CAACiC,YAAZ,EAA0BJ,MAAM,CAACvB,IAAjC,CAAD;AAJd,kBAMI,oBAAC,SAAD;AACI,IAAA,KAAK,EAAEuB,MAAM,CAACnB,QADlB;AAEI,IAAA,UAAU,EAAEsB;AAFhB,kBAII,oBAAC,KAAD;AACI,IAAA,SAAS,EAAE,EADf;AAEI,IAAA,KAAK,EAAE,CACHH,MAAM,CAACf,KADJ,EAEH;AAAEiB,MAAAA;AAAF,KAFG;AAFX,KAOKN,QAPL,CAJJ,CANJ,CADJ;AAuBH;AAAA","sourcesContent":["import React from 'react';\nimport { Modal, Paper, StyleSheet, css, useTheme } from '@fountain-ui/core';\nimport { NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\nimport AnimatedY from '../AnimatedY';\nimport type BottomSheetProps from './BottomSheetProps';\n\ntype BottomSheetStyles = NamedStylesStringUnion<'root' | 'animated' | 'paper'>;\n\nconst useStyles: UseStyles<BottomSheetStyles> = function (): BottomSheetStyles {\n const theme = useTheme();\n\n return {\n root: {\n justifyContent: 'flex-end',\n zIndex: theme.zIndex.dialog\n },\n animated: {\n alignSelf: 'center',\n maxWidth: 720,\n width: '100%',\n },\n paper: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n flexGrow: 1,\n overflow: 'hidden',\n },\n };\n};\n\nconst calculateHeight = (points: BottomSheetProps['snapPoints']): number => {\n return points[points.length - 1] ?? 0;\n};\n\nexport default function BottomSheet(props: BottomSheetProps) {\n const {\n backdropOpacity,\n children,\n index,\n onChange,\n snapPoints,\n } = props;\n\n const styles = useStyles();\n\n const handleClose = () => {\n if (onChange) {\n onChange(-1);\n }\n };\n\n const height = calculateHeight(snapPoints);\n const translateY = height - (snapPoints[index] ?? 0);\n\n return (\n <Modal\n backdropOpacity={backdropOpacity}\n onClose={handleClose}\n visible={index >= 0}\n style={css([StyleSheet.absoluteFill, styles.root])}\n >\n <AnimatedY\n style={styles.animated}\n translateY={translateY}\n >\n <Paper\n elevation={12}\n style={[\n styles.paper,\n { height },\n ]}\n >\n {children}\n </Paper>\n </AnimatedY>\n </Modal>\n );\n};\n"]}
1
+ {"version":3,"names":["React","useWindowDimensions","Modal","Paper","StyleSheet","css","useTheme","AnimatedY","useStyles","theme","root","justifyContent","zIndex","dialog","animated","alignSelf","maxWidth","width","paper","borderBottomLeftRadius","borderBottomRightRadius","flexGrow","overflow","convertHeightAsPixel","windowHeight","value","percentageRegex","RegExp","test","percentage","parseFloat","isNaN","Math","round","BottomSheet","props","backdropOpacity","children","index","onChange","snapPoints","styles","height","handleClose","length","translateY","absoluteFill"],"sources":["BottomSheetWeb.tsx"],"sourcesContent":["import React from 'react';\nimport { useWindowDimensions } from 'react-native';\nimport { Modal, Paper, StyleSheet, css, useTheme } from '@fountain-ui/core';\nimport { NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\nimport AnimatedY from '../AnimatedY';\nimport type BottomSheetProps from './BottomSheetProps';\n\ntype BottomSheetStyles = NamedStylesStringUnion<'root' | 'animated' | 'paper'>;\n\nconst useStyles: UseStyles<BottomSheetStyles> = function (): BottomSheetStyles {\n const theme = useTheme();\n\n return {\n root: {\n justifyContent: 'flex-end',\n zIndex: theme.zIndex.dialog,\n },\n animated: {\n alignSelf: 'center',\n maxWidth: 720,\n width: '100%',\n },\n paper: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n flexGrow: 1,\n overflow: 'hidden',\n },\n };\n};\n\nconst convertHeightAsPixel = (windowHeight: number, value: number | string): number => {\n if (typeof value === 'number') {\n return value;\n }\n\n const percentageRegex = new RegExp(/^[0-9]+%$/);\n if (percentageRegex.test(value)) {\n const percentage = parseFloat(value) / 100;\n return isNaN(percentage) ? 0 : Math.round(windowHeight * percentage);\n }\n\n return 0;\n};\n\nexport default function BottomSheet(props: BottomSheetProps) {\n const {\n backdropOpacity,\n children,\n index,\n onChange,\n snapPoints,\n } = props;\n\n const styles = useStyles();\n\n const { height: windowHeight } = useWindowDimensions();\n\n const handleClose = () => {\n if (onChange) {\n onChange(-1);\n }\n };\n\n const height = convertHeightAsPixel(windowHeight, snapPoints[snapPoints.length - 1] ?? 0);\n const translateY = height - (convertHeightAsPixel(windowHeight, snapPoints[index] ?? 0));\n\n return (\n <Modal\n backdropOpacity={backdropOpacity}\n onClose={handleClose}\n visible={index >= 0}\n style={css([StyleSheet.absoluteFill, styles.root])}\n >\n <AnimatedY\n style={styles.animated}\n translateY={translateY}\n >\n <Paper\n elevation={12}\n style={[\n styles.paper,\n { height },\n ]}\n >\n {children}\n </Paper>\n </AnimatedY>\n </Modal>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,mBAAT,QAAoC,cAApC;AACA,SAASC,KAAT,EAAgBC,KAAhB,EAAuBC,UAAvB,EAAmCC,GAAnC,EAAwCC,QAAxC,QAAwD,mBAAxD;AAEA,OAAOC,SAAP,MAAsB,cAAtB;;AAKA,MAAMC,SAAuC,GAAG,YAA+B;EAC3E,MAAMC,KAAK,GAAGH,QAAQ,EAAtB;EAEA,OAAO;IACHI,IAAI,EAAE;MACFC,cAAc,EAAE,UADd;MAEFC,MAAM,EAAEH,KAAK,CAACG,MAAN,CAAaC;IAFnB,CADH;IAKHC,QAAQ,EAAE;MACNC,SAAS,EAAE,QADL;MAENC,QAAQ,EAAE,GAFJ;MAGNC,KAAK,EAAE;IAHD,CALP;IAUHC,KAAK,EAAE;MACHC,sBAAsB,EAAE,CADrB;MAEHC,uBAAuB,EAAE,CAFtB;MAGHC,QAAQ,EAAE,CAHP;MAIHC,QAAQ,EAAE;IAJP;EAVJ,CAAP;AAiBH,CApBD;;AAsBA,MAAMC,oBAAoB,GAAG,CAACC,YAAD,EAAuBC,KAAvB,KAA0D;EACnF,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;IAC3B,OAAOA,KAAP;EACH;;EAED,MAAMC,eAAe,GAAG,IAAIC,MAAJ,CAAW,WAAX,CAAxB;;EACA,IAAID,eAAe,CAACE,IAAhB,CAAqBH,KAArB,CAAJ,EAAiC;IAC7B,MAAMI,UAAU,GAAGC,UAAU,CAACL,KAAD,CAAV,GAAoB,GAAvC;IACA,OAAOM,KAAK,CAACF,UAAD,CAAL,GAAoB,CAApB,GAAwBG,IAAI,CAACC,KAAL,CAAWT,YAAY,GAAGK,UAA1B,CAA/B;EACH;;EAED,OAAO,CAAP;AACH,CAZD;;AAcA,eAAe,SAASK,WAAT,CAAqBC,KAArB,EAA8C;EACzD,MAAM;IACFC,eADE;IAEFC,QAFE;IAGFC,KAHE;IAIFC,QAJE;IAKFC;EALE,IAMFL,KANJ;EAQA,MAAMM,MAAM,GAAGjC,SAAS,EAAxB;EAEA,MAAM;IAAEkC,MAAM,EAAElB;EAAV,IAA2BvB,mBAAmB,EAApD;;EAEA,MAAM0C,WAAW,GAAG,MAAM;IACtB,IAAIJ,QAAJ,EAAc;MACVA,QAAQ,CAAC,CAAC,CAAF,CAAR;IACH;EACJ,CAJD;;EAMA,MAAMG,MAAM,GAAGnB,oBAAoB,CAACC,YAAD,EAAegB,UAAU,CAACA,UAAU,CAACI,MAAX,GAAoB,CAArB,CAAV,IAAqC,CAApD,CAAnC;EACA,MAAMC,UAAU,GAAGH,MAAM,GAAInB,oBAAoB,CAACC,YAAD,EAAegB,UAAU,CAACF,KAAD,CAAV,IAAqB,CAApC,CAAjD;EAEA,oBACI,oBAAC,KAAD;IACI,eAAe,EAAEF,eADrB;IAEI,OAAO,EAAEO,WAFb;IAGI,OAAO,EAAEL,KAAK,IAAI,CAHtB;IAII,KAAK,EAAEjC,GAAG,CAAC,CAACD,UAAU,CAAC0C,YAAZ,EAA0BL,MAAM,CAAC/B,IAAjC,CAAD;EAJd,gBAMI,oBAAC,SAAD;IACI,KAAK,EAAE+B,MAAM,CAAC3B,QADlB;IAEI,UAAU,EAAE+B;EAFhB,gBAII,oBAAC,KAAD;IACI,SAAS,EAAE,EADf;IAEI,KAAK,EAAE,CACHJ,MAAM,CAACvB,KADJ,EAEH;MAAEwB;IAAF,CAFG;EAFX,GAOKL,QAPL,CAJJ,CANJ,CADJ;AAuBH;AAAA"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React from 'react';
4
4
  import { BottomSheetBackdrop } from '@gorhom/bottom-sheet';
@@ -1 +1 @@
1
- {"version":3,"sources":["TransparentBackdrop.tsx"],"names":["React","BottomSheetBackdrop","css","TransparentBackdrop","props","backdropStyle","backgroundColor","bottom","left","position","right","top"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,mBAAT,QAA8D,sBAA9D;AACA,SAASC,GAAT,QAAoB,qBAApB;AAEA,eAAe,SAASC,mBAAT,CAA6BC,KAA7B,EAA8D;AACzE;AACA,QAAMC,aAAa,GAAGH,GAAG,CAAC,CACtB;AACII,IAAAA,eAAe,EAAE,WADrB;AAEIC,IAAAA,MAAM,EAAE,CAFZ;AAGIC,IAAAA,IAAI,EAAE,CAHV;AAIIC,IAAAA,QAAQ,EAAE,UAJd;AAKIC,IAAAA,KAAK,EAAE,CALX;AAMIC,IAAAA,GAAG,EAAE;AANT,GADsB,CAAD,CAAzB;AAWA,sBACI,oBAAC,mBAAD,eACQP,KADR;AAEI,IAAA,cAAc,EAAE,CAFpB;AAGI,IAAA,iBAAiB,EAAE,CAAC,CAHxB;AAII,IAAA,KAAK,EAAEC;AAJX,KADJ;AAQH;AAAA","sourcesContent":["import React from 'react';\nimport { BottomSheetBackdrop, BottomSheetBackdropProps } from '@gorhom/bottom-sheet';\nimport { css } from '@fountain-ui/styles';\n\nexport default function TransparentBackdrop(props: BottomSheetBackdropProps) {\n // The reason that it did not use the opacity prop is that the close event is ignored in Android. (opacity < 0.1)\n const backdropStyle = css([\n {\n backgroundColor: '#ffffff00',\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n ]);\n\n return (\n <BottomSheetBackdrop\n {...props}\n appearsOnIndex={0}\n disappearsOnIndex={-1}\n style={backdropStyle}\n />\n );\n};"]}
1
+ {"version":3,"names":["React","BottomSheetBackdrop","css","TransparentBackdrop","props","backdropStyle","backgroundColor","bottom","left","position","right","top"],"sources":["TransparentBackdrop.tsx"],"sourcesContent":["import React from 'react';\nimport { BottomSheetBackdrop, BottomSheetBackdropProps } from '@gorhom/bottom-sheet';\nimport { css } from '@fountain-ui/styles';\n\nexport default function TransparentBackdrop(props: BottomSheetBackdropProps) {\n // The reason that it did not use the opacity prop is that the close event is ignored in Android. (opacity < 0.1)\n const backdropStyle = css([\n {\n backgroundColor: '#ffffff00',\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n ]);\n\n return (\n <BottomSheetBackdrop\n {...props}\n appearsOnIndex={0}\n disappearsOnIndex={-1}\n style={backdropStyle}\n />\n );\n};"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,mBAAT,QAA8D,sBAA9D;AACA,SAASC,GAAT,QAAoB,qBAApB;AAEA,eAAe,SAASC,mBAAT,CAA6BC,KAA7B,EAA8D;EACzE;EACA,MAAMC,aAAa,GAAGH,GAAG,CAAC,CACtB;IACII,eAAe,EAAE,WADrB;IAEIC,MAAM,EAAE,CAFZ;IAGIC,IAAI,EAAE,CAHV;IAIIC,QAAQ,EAAE,UAJd;IAKIC,KAAK,EAAE,CALX;IAMIC,GAAG,EAAE;EANT,CADsB,CAAD,CAAzB;EAWA,oBACI,oBAAC,mBAAD,eACQP,KADR;IAEI,cAAc,EAAE,CAFpB;IAGI,iBAAiB,EAAE,CAAC,CAHxB;IAII,KAAK,EAAEC;EAJX,GADJ;AAQH;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,kBAAxB","sourcesContent":["export { default } from './BottomSheetWeb';\nexport type { default as BottomSheetProps } from './BottomSheetProps';\n"]}
1
+ {"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["export { default } from './BottomSheetWeb';\nexport type { default as BottomSheetProps } from './BottomSheetProps';\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,kBAAxB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.native.ts"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,qBAAxB","sourcesContent":["export { default } from './BottomSheetNative';\n"]}
1
+ {"version":3,"names":["default"],"sources":["index.native.ts"],"sourcesContent":["export { default } from './BottomSheetNative';\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,qBAAxB"}
@@ -0,0 +1,41 @@
1
+ import { useCallback, useState } from 'react';
2
+ import { useWindowDimensions } from 'react-native';
3
+
4
+ const convertHeightAsPixel = (windowHeight, value) => {
5
+ if (typeof value === 'number') {
6
+ return value;
7
+ }
8
+
9
+ const percentageRegex = new RegExp(/^[0-9]+%$/);
10
+
11
+ if (percentageRegex.test(value)) {
12
+ const percentage = parseFloat(value) / 100;
13
+ return isNaN(percentage) ? 0 : Math.round(windowHeight * percentage);
14
+ }
15
+
16
+ return 0;
17
+ };
18
+
19
+ export default function useDynamicSnapPoints(props) {
20
+ const {
21
+ index: currentIndex,
22
+ initialSnapPoints
23
+ } = props;
24
+ const {
25
+ height: WINDOW_HEIGHT
26
+ } = useWindowDimensions();
27
+ const [snapPoints, setSnapPoints] = useState(initialSnapPoints.map(snapPoint => convertHeightAsPixel(WINDOW_HEIGHT, snapPoint)));
28
+ const handleContentLayout = useCallback(event => {
29
+ if (initialSnapPoints[currentIndex] === 'CONTENT_HEIGHT') {
30
+ const contentHeight = Math.min(Math.round(WINDOW_HEIGHT * 0.9), event.nativeEvent.layout.height);
31
+ setSnapPoints(prevState => prevState.map((snapPoint, index) => {
32
+ return currentIndex === index ? contentHeight : snapPoint;
33
+ }));
34
+ }
35
+ }, [currentIndex, initialSnapPoints]);
36
+ return {
37
+ handleContentLayout,
38
+ snapPoints
39
+ };
40
+ }
41
+ //# sourceMappingURL=useDynamicSnapPoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useState","useWindowDimensions","convertHeightAsPixel","windowHeight","value","percentageRegex","RegExp","test","percentage","parseFloat","isNaN","Math","round","useDynamicSnapPoints","props","index","currentIndex","initialSnapPoints","height","WINDOW_HEIGHT","snapPoints","setSnapPoints","map","snapPoint","handleContentLayout","event","contentHeight","min","nativeEvent","layout","prevState"],"sources":["useDynamicSnapPoints.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { LayoutChangeEvent, useWindowDimensions } from 'react-native';\n\ninterface UseDynamicSnapPointsParams {\n index: number;\n initialSnapPoints: (number | string)[];\n}\n\ninterface UseDynamicSnapPointsReturns {\n handleContentLayout: (e: LayoutChangeEvent) => void;\n snapPoints: number[];\n}\n\nconst convertHeightAsPixel = (windowHeight: number, value: number | string): number => {\n if (typeof value === 'number') {\n return value;\n }\n\n const percentageRegex = new RegExp(/^[0-9]+%$/);\n if (percentageRegex.test(value)) {\n const percentage = parseFloat(value) / 100;\n return isNaN(percentage) ? 0 : Math.round(windowHeight * percentage);\n }\n\n return 0;\n};\n\nexport default function useDynamicSnapPoints(props: UseDynamicSnapPointsParams): UseDynamicSnapPointsReturns {\n const {\n index: currentIndex,\n initialSnapPoints,\n } = props;\n\n const { height: WINDOW_HEIGHT } = useWindowDimensions();\n\n const [snapPoints, setSnapPoints] = useState(initialSnapPoints.map((snapPoint) => convertHeightAsPixel(WINDOW_HEIGHT, snapPoint)));\n\n const handleContentLayout = useCallback((event: LayoutChangeEvent) => {\n if (initialSnapPoints[currentIndex] === 'CONTENT_HEIGHT') {\n const contentHeight = Math.min(Math.round(WINDOW_HEIGHT * 0.9), event.nativeEvent.layout.height);\n \n setSnapPoints(prevState => prevState.map((snapPoint, index) => {\n return currentIndex === index ? contentHeight : snapPoint;\n }));\n }\n }, [currentIndex, initialSnapPoints]);\n\n return {\n handleContentLayout,\n snapPoints,\n };\n}\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,QAAtB,QAAsC,OAAtC;AACA,SAA4BC,mBAA5B,QAAuD,cAAvD;;AAYA,MAAMC,oBAAoB,GAAG,CAACC,YAAD,EAAuBC,KAAvB,KAA0D;EACnF,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;IAC3B,OAAOA,KAAP;EACH;;EAED,MAAMC,eAAe,GAAG,IAAIC,MAAJ,CAAW,WAAX,CAAxB;;EACA,IAAID,eAAe,CAACE,IAAhB,CAAqBH,KAArB,CAAJ,EAAiC;IAC7B,MAAMI,UAAU,GAAGC,UAAU,CAACL,KAAD,CAAV,GAAoB,GAAvC;IACA,OAAOM,KAAK,CAACF,UAAD,CAAL,GAAoB,CAApB,GAAwBG,IAAI,CAACC,KAAL,CAAWT,YAAY,GAAGK,UAA1B,CAA/B;EACH;;EAED,OAAO,CAAP;AACH,CAZD;;AAcA,eAAe,SAASK,oBAAT,CAA8BC,KAA9B,EAA8F;EACzG,MAAM;IACFC,KAAK,EAAEC,YADL;IAEFC;EAFE,IAGFH,KAHJ;EAKA,MAAM;IAAEI,MAAM,EAAEC;EAAV,IAA4BlB,mBAAmB,EAArD;EAEA,MAAM,CAACmB,UAAD,EAAaC,aAAb,IAA8BrB,QAAQ,CAACiB,iBAAiB,CAACK,GAAlB,CAAuBC,SAAD,IAAerB,oBAAoB,CAACiB,aAAD,EAAgBI,SAAhB,CAAzD,CAAD,CAA5C;EAEA,MAAMC,mBAAmB,GAAGzB,WAAW,CAAE0B,KAAD,IAA8B;IAClE,IAAIR,iBAAiB,CAACD,YAAD,CAAjB,KAAoC,gBAAxC,EAA0D;MACtD,MAAMU,aAAa,GAAGf,IAAI,CAACgB,GAAL,CAAShB,IAAI,CAACC,KAAL,CAAWO,aAAa,GAAG,GAA3B,CAAT,EAA0CM,KAAK,CAACG,WAAN,CAAkBC,MAAlB,CAAyBX,MAAnE,CAAtB;MAEAG,aAAa,CAACS,SAAS,IAAIA,SAAS,CAACR,GAAV,CAAc,CAACC,SAAD,EAAYR,KAAZ,KAAsB;QAC3D,OAAOC,YAAY,KAAKD,KAAjB,GAAyBW,aAAzB,GAAyCH,SAAhD;MACH,CAF0B,CAAd,CAAb;IAGH;EACJ,CARsC,EAQpC,CAACP,YAAD,EAAeC,iBAAf,CARoC,CAAvC;EAUA,OAAO;IACHO,mBADG;IAEHJ;EAFG,CAAP;AAIH"}
@@ -0,0 +1,109 @@
1
+ import React, { forwardRef, memo, useImperativeHandle, useMemo } from 'react';
2
+ import ViewabilityTrackerView from '../ViewabilityTrackerView';
3
+ import { useAutoplayController, useIndexController, useItemVisibilityStore, useLoopedData, usePagingAnimator } from './hooks';
4
+ import { createDefaultItemStyle, createDefaultScrollAnimation } from './animation';
5
+ import { InternalContext, RootView, ScrollViewGesture } from './components';
6
+ const Carousel = /*#__PURE__*/forwardRef(function Carousel(props, ref) {
7
+ const {
8
+ autoplay = false,
9
+ autoplayInterval = 3000,
10
+ createItemStyle = createDefaultItemStyle,
11
+ createScrollAnimation = createDefaultScrollAnimation,
12
+ data: originalData,
13
+ disableSmartAutoplay = false,
14
+ initialIndex = 0,
15
+ itemHeight,
16
+ itemWidth,
17
+ loop = false,
18
+ onIndexChange,
19
+ renderItem,
20
+ scrollEnabled = true,
21
+ style,
22
+ windowSize = 5
23
+ } = props;
24
+ const data = useLoopedData(originalData, loop);
25
+ const [itemVisibilityStore, onPositionChange] = useItemVisibilityStore({
26
+ initialIndex,
27
+ numberOfData: data.length,
28
+ windowSize
29
+ });
30
+ const indexController = useIndexController({
31
+ initialIndex,
32
+ itemWidth,
33
+ numberOfData: data.length,
34
+ numberOfOriginalData: originalData.length,
35
+ onIndexChange,
36
+ onPositionChange
37
+ });
38
+ const {
39
+ getCurrentIndex
40
+ } = indexController;
41
+ const {
42
+ gestureTranslationX,
43
+ globalInterpolation,
44
+ interruptAnimation,
45
+ startPagingAnimation
46
+ } = usePagingAnimator({
47
+ createScrollAnimation,
48
+ itemWidth,
49
+ indexController,
50
+ initialIndex,
51
+ loop,
52
+ numberOfData: data.length
53
+ });
54
+ const autoplayController = useAutoplayController({
55
+ enabled: autoplay,
56
+ intervalMillis: autoplayInterval,
57
+ startPagingAnimation
58
+ });
59
+ useImperativeHandle(ref, () => ({
60
+ getCurrentIndex,
61
+ next: () => startPagingAnimation('directional', {
62
+ direction: 'next'
63
+ }),
64
+ prev: () => startPagingAnimation('directional', {
65
+ direction: 'prev'
66
+ }),
67
+ scrollTo: option => startPagingAnimation('index', option)
68
+ }), [startPagingAnimation, getCurrentIndex]);
69
+ const contextValue = useMemo(() => ({
70
+ createItemStyle,
71
+ data,
72
+ globalInterpolation,
73
+ itemHeight,
74
+ itemWidth,
75
+ itemVisibilityStore,
76
+ loop
77
+ }), [createItemStyle, data, globalInterpolation, itemHeight, itemWidth, itemVisibilityStore, loop]);
78
+ return /*#__PURE__*/React.createElement(InternalContext.Provider, {
79
+ value: contextValue
80
+ }, /*#__PURE__*/React.createElement(ViewabilityTrackerView, {
81
+ enabled: autoplay && !disableSmartAutoplay,
82
+ measurementIntervalMillis: Math.max(3000, autoplayInterval),
83
+ onViewabilityChange: _ref => {
84
+ let {
85
+ visible
86
+ } = _ref;
87
+
88
+ if (visible) {
89
+ autoplayController.resume();
90
+ } else {
91
+ autoplayController.pause();
92
+ }
93
+ }
94
+ }, /*#__PURE__*/React.createElement(ScrollViewGesture, {
95
+ autoplayController: autoplayController,
96
+ gestureTranslationX: gestureTranslationX,
97
+ interruptAnimation: interruptAnimation,
98
+ scrollEnabled: scrollEnabled,
99
+ startPagingAnimation: startPagingAnimation
100
+ }, /*#__PURE__*/React.createElement(RootView, {
101
+ data: data,
102
+ itemHeight: itemHeight,
103
+ originalData: originalData,
104
+ renderItem: renderItem,
105
+ style: style
106
+ }))));
107
+ });
108
+ export default /*#__PURE__*/memo(Carousel);
109
+ //# sourceMappingURL=Carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","forwardRef","memo","useImperativeHandle","useMemo","ViewabilityTrackerView","useAutoplayController","useIndexController","useItemVisibilityStore","useLoopedData","usePagingAnimator","createDefaultItemStyle","createDefaultScrollAnimation","InternalContext","RootView","ScrollViewGesture","Carousel","props","ref","autoplay","autoplayInterval","createItemStyle","createScrollAnimation","data","originalData","disableSmartAutoplay","initialIndex","itemHeight","itemWidth","loop","onIndexChange","renderItem","scrollEnabled","style","windowSize","itemVisibilityStore","onPositionChange","numberOfData","length","indexController","numberOfOriginalData","getCurrentIndex","gestureTranslationX","globalInterpolation","interruptAnimation","startPagingAnimation","autoplayController","enabled","intervalMillis","next","direction","prev","scrollTo","option","contextValue","Math","max","visible","resume","pause"],"sources":["Carousel.tsx"],"sourcesContent":["import React, { forwardRef, memo, useImperativeHandle, useMemo } from 'react';\nimport ViewabilityTrackerView from '../ViewabilityTrackerView';\nimport type CarouselProps from './CarouselProps';\nimport type { CarouselInstance } from './types';\nimport {\n useAutoplayController,\n useIndexController,\n useItemVisibilityStore,\n useLoopedData,\n usePagingAnimator,\n} from './hooks';\nimport { createDefaultItemStyle, createDefaultScrollAnimation } from './animation';\nimport { InternalContext, RootView, ScrollViewGesture } from './components';\n\nconst Carousel = forwardRef<CarouselInstance, CarouselProps>(function Carousel(props, ref) {\n const {\n autoplay = false,\n autoplayInterval = 3000,\n createItemStyle = createDefaultItemStyle,\n createScrollAnimation = createDefaultScrollAnimation,\n data: originalData,\n disableSmartAutoplay = false,\n initialIndex = 0,\n itemHeight,\n itemWidth,\n loop = false,\n onIndexChange,\n renderItem,\n scrollEnabled = true,\n style,\n windowSize = 5,\n } = props;\n\n const data = useLoopedData(originalData, loop);\n\n const [itemVisibilityStore, onPositionChange] = useItemVisibilityStore({\n initialIndex,\n numberOfData: data.length,\n windowSize,\n });\n\n const indexController = useIndexController({\n initialIndex,\n itemWidth,\n numberOfData: data.length,\n numberOfOriginalData: originalData.length,\n onIndexChange,\n onPositionChange,\n });\n\n const { getCurrentIndex } = indexController;\n\n const {\n gestureTranslationX,\n globalInterpolation,\n interruptAnimation,\n startPagingAnimation,\n } = usePagingAnimator({\n createScrollAnimation,\n itemWidth,\n indexController,\n initialIndex,\n loop,\n numberOfData: data.length,\n });\n\n const autoplayController = useAutoplayController({\n enabled: autoplay,\n intervalMillis: autoplayInterval,\n startPagingAnimation,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n getCurrentIndex,\n next: () => startPagingAnimation('directional', { direction: 'next' }),\n prev: () => startPagingAnimation('directional', { direction: 'prev' }),\n scrollTo: (option) => startPagingAnimation('index', option),\n }),\n [startPagingAnimation, getCurrentIndex],\n );\n\n const contextValue = useMemo(() => ({\n createItemStyle,\n data,\n globalInterpolation,\n itemHeight,\n itemWidth,\n itemVisibilityStore,\n loop,\n }), [\n createItemStyle,\n data,\n globalInterpolation,\n itemHeight,\n itemWidth,\n itemVisibilityStore,\n loop,\n ]);\n\n return (\n <InternalContext.Provider value={contextValue}>\n <ViewabilityTrackerView\n enabled={autoplay && !disableSmartAutoplay}\n measurementIntervalMillis={Math.max(3000, autoplayInterval)}\n onViewabilityChange={({ visible }) => {\n if (visible) {\n autoplayController.resume();\n } else {\n autoplayController.pause();\n }\n }}\n >\n <ScrollViewGesture\n autoplayController={autoplayController}\n gestureTranslationX={gestureTranslationX}\n interruptAnimation={interruptAnimation}\n scrollEnabled={scrollEnabled}\n startPagingAnimation={startPagingAnimation}\n >\n <RootView\n data={data}\n itemHeight={itemHeight}\n originalData={originalData}\n renderItem={renderItem}\n style={style}\n />\n </ScrollViewGesture>\n </ViewabilityTrackerView>\n </InternalContext.Provider>\n );\n});\n\nexport default memo(Carousel);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
1
+ {"version":3,"names":[],"sources":["CarouselProps.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport type { ComponentProps } from '@fountain-ui/core';\nimport type {\n CarouselInstance,\n CreateItemStyle,\n CreateScrollAnimation,\n ItemHeight,\n OnIndexChange,\n RenderItem,\n} from './types';\n\nexport default interface CarouselProps<ItemT = any> extends ComponentProps<{\n ref?: RefObject<CarouselInstance>;\n\n /**\n * If `true`, enable autoplay.\n * @default false\n */\n autoplay?: boolean;\n\n /**\n * Delay in ms until navigating to the next item.\n * @default 3000\n */\n autoplayInterval?: number;\n\n /**\n * The item style creator function.\n * @default createDefaultItemStyle\n */\n createItemStyle?: CreateItemStyle;\n\n /**\n * The scroll animation creator function.\n * @default createDefaultScrollAnimation\n */\n createScrollAnimation?: CreateScrollAnimation;\n\n /**\n * Data for render items.\n */\n data: ReadonlyArray<ItemT>;\n\n /**\n * If `true`, carousel will detect its own viewability and control autoplay automatically.\n * @default false\n */\n disableSmartAutoplay?: boolean;\n\n /**\n * Index of initial item that should be selected.\n * @default 0\n */\n initialIndex?: number;\n\n /**\n * The item height.\n * For a performance reason, always consider to provide a number value.\n */\n itemHeight: ItemHeight;\n\n /**\n * The item width.\n */\n itemWidth: number;\n\n /**\n * Enable infinite loop mode.\n * @default false\n */\n loop?: boolean;\n\n /**\n * Callback fired when an index is changed.\n */\n onIndexChange?: OnIndexChange;\n\n /**\n * Takes an item from data and renders it into the list.\n */\n renderItem: RenderItem<ItemT>;\n\n /**\n * Whether to enable scroll gesture.\n * @default true\n */\n scrollEnabled?: boolean;\n\n /**\n * The maximum number of items that can respond to pan gesture events.\n * Due to the nature of the `active` item, it accepts only odd number. (e.g. 1, 3, 5...)\n * 0 means all items will respond to pan gesture events.\n * @default 5\n */\n windowSize?: number;\n}> {}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export const itemInterpolationInputRange = [-1, 0, 1];
2
+ //# sourceMappingURL=animationUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["itemInterpolationInputRange"],"sources":["animationUtils.ts"],"sourcesContent":["export const itemInterpolationInputRange = [-1, 0, 1];\n"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,GAAG,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,CAApC"}
@@ -0,0 +1,3 @@
1
+ import normalItemStyleFactory from './normalItemStyleFactory';
2
+ export default normalItemStyleFactory();
3
+ //# sourceMappingURL=createDefaultItemStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalItemStyleFactory"],"sources":["createDefaultItemStyle.ts"],"sourcesContent":["import normalItemStyleFactory from './normalItemStyleFactory';\n\nexport default normalItemStyleFactory();\n"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,0BAAnC;AAEA,eAAeA,sBAAsB,EAArC"}
@@ -0,0 +1,11 @@
1
+ import { Animated, Easing } from 'react-native';
2
+ export default function createDefaultScrollAnimation(animatedValue, toValue) {
3
+ return Animated.timing(animatedValue, {
4
+ toValue: toValue,
5
+ duration: 180,
6
+ easing: Easing.bezier(0.2, 0.2, 0.2, 1),
7
+ useNativeDriver: true
8
+ });
9
+ }
10
+ ;
11
+ //# sourceMappingURL=createDefaultScrollAnimation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Animated","Easing","createDefaultScrollAnimation","animatedValue","toValue","timing","duration","easing","bezier","useNativeDriver"],"sources":["createDefaultScrollAnimation.ts"],"sourcesContent":["import { Animated, Easing } from 'react-native';\n\nexport default function createDefaultScrollAnimation(\n animatedValue: Animated.Value,\n toValue: number,\n): Animated.CompositeAnimation {\n return Animated.timing(animatedValue, {\n toValue: toValue,\n duration: 180,\n easing: Easing.bezier(0.2, 0.2, 0.2, 1),\n useNativeDriver: true,\n });\n};\n"],"mappings":"AAAA,SAASA,QAAT,EAAmBC,MAAnB,QAAiC,cAAjC;AAEA,eAAe,SAASC,4BAAT,CACXC,aADW,EAEXC,OAFW,EAGgB;EAC3B,OAAOJ,QAAQ,CAACK,MAAT,CAAgBF,aAAhB,EAA+B;IAClCC,OAAO,EAAEA,OADyB;IAElCE,QAAQ,EAAE,GAFwB;IAGlCC,MAAM,EAAEN,MAAM,CAACO,MAAP,CAAc,GAAd,EAAmB,GAAnB,EAAwB,GAAxB,EAA6B,CAA7B,CAH0B;IAIlCC,eAAe,EAAE;EAJiB,CAA/B,CAAP;AAMH;AAAA"}
@@ -0,0 +1,5 @@
1
+ export { default as createDefaultItemStyle } from './createDefaultItemStyle';
2
+ export { default as createDefaultScrollAnimation } from './createDefaultScrollAnimation';
3
+ export { default as normalItemStyleFactory } from './normalItemStyleFactory';
4
+ export { default as parallaxItemStyleFactory } from './parallaxItemStyleFactory';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","createDefaultItemStyle","createDefaultScrollAnimation","normalItemStyleFactory","parallaxItemStyleFactory"],"sources":["index.ts"],"sourcesContent":["export { default as createDefaultItemStyle } from './createDefaultItemStyle';\nexport { default as createDefaultScrollAnimation } from './createDefaultScrollAnimation';\nexport { default as normalItemStyleFactory } from './normalItemStyleFactory';\nexport { default as parallaxItemStyleFactory } from './parallaxItemStyleFactory';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,sBAApB,QAAkD,0BAAlD;AACA,SAASD,OAAO,IAAIE,4BAApB,QAAwD,gCAAxD;AACA,SAASF,OAAO,IAAIG,sBAApB,QAAkD,0BAAlD;AACA,SAASH,OAAO,IAAII,wBAApB,QAAoD,4BAApD"}
@@ -0,0 +1,18 @@
1
+ import { itemInterpolationInputRange } from './animationUtils';
2
+ export default function normalItemStyleFactory() {
3
+ const createItemStyle = (itemInterpolation, itemWidth) => {
4
+ const translate = itemInterpolation.interpolate({
5
+ inputRange: itemInterpolationInputRange,
6
+ outputRange: [-itemWidth, 0, itemWidth]
7
+ });
8
+ return {
9
+ transform: [{
10
+ translateX: translate
11
+ }]
12
+ };
13
+ };
14
+
15
+ return createItemStyle;
16
+ }
17
+ ;
18
+ //# sourceMappingURL=normalItemStyleFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["itemInterpolationInputRange","normalItemStyleFactory","createItemStyle","itemInterpolation","itemWidth","translate","interpolate","inputRange","outputRange","transform","translateX"],"sources":["normalItemStyleFactory.ts"],"sourcesContent":["import type { CreateItemStyle } from '../types';\nimport { itemInterpolationInputRange } from './animationUtils';\n\nexport default function normalItemStyleFactory() {\n const createItemStyle: CreateItemStyle = (itemInterpolation, itemWidth) => {\n const translate = itemInterpolation.interpolate({\n inputRange: itemInterpolationInputRange,\n outputRange: [\n -itemWidth,\n 0,\n itemWidth,\n ],\n });\n\n return { transform: [{ translateX: translate }] };\n };\n\n return createItemStyle;\n};\n"],"mappings":"AACA,SAASA,2BAAT,QAA4C,kBAA5C;AAEA,eAAe,SAASC,sBAAT,GAAkC;EAC7C,MAAMC,eAAgC,GAAG,CAACC,iBAAD,EAAoBC,SAApB,KAAkC;IACvE,MAAMC,SAAS,GAAGF,iBAAiB,CAACG,WAAlB,CAA8B;MAC5CC,UAAU,EAAEP,2BADgC;MAE5CQ,WAAW,EAAE,CACT,CAACJ,SADQ,EAET,CAFS,EAGTA,SAHS;IAF+B,CAA9B,CAAlB;IASA,OAAO;MAAEK,SAAS,EAAE,CAAC;QAAEC,UAAU,EAAEL;MAAd,CAAD;IAAb,CAAP;EACH,CAXD;;EAaA,OAAOH,eAAP;AACH;AAAA"}
@@ -0,0 +1,55 @@
1
+ import { itemInterpolationInputRange } from './animationUtils';
2
+ const defaultParallaxAnimationConfig = {
3
+ activeItemScale: 0.9,
4
+ activeItemOpacity: 1,
5
+ adjacentItemScale: Math.pow(0.9, 2),
6
+ adjacentItemOpacity: 0.5,
7
+ scrollingOffset: 50
8
+ };
9
+ export default function parallaxItemStyleFactory() {
10
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultParallaxAnimationConfig;
11
+ const {
12
+ activeItemOpacity,
13
+ activeItemScale,
14
+ adjacentItemOpacity,
15
+ adjacentItemScale,
16
+ scrollingOffset
17
+ } = { ...defaultParallaxAnimationConfig,
18
+ ...config
19
+ };
20
+
21
+ const createItemStyle = (itemInterpolation, itemWidth) => {
22
+ const translate = itemInterpolation.interpolate({
23
+ inputRange: itemInterpolationInputRange,
24
+ outputRange: [-itemWidth + scrollingOffset, 0, itemWidth - scrollingOffset]
25
+ });
26
+ const zIndex = itemInterpolation.interpolate({
27
+ inputRange: itemInterpolationInputRange,
28
+ outputRange: [0, itemWidth, 0],
29
+ extrapolate: 'clamp'
30
+ });
31
+ const scale = itemInterpolation.interpolate({
32
+ inputRange: itemInterpolationInputRange,
33
+ outputRange: [adjacentItemScale, activeItemScale, adjacentItemScale],
34
+ extrapolate: 'clamp'
35
+ });
36
+ const opacity = itemInterpolation.interpolate({
37
+ inputRange: itemInterpolationInputRange,
38
+ outputRange: [adjacentItemOpacity, activeItemOpacity, adjacentItemOpacity],
39
+ extrapolate: 'clamp'
40
+ });
41
+ return {
42
+ transform: [{
43
+ translateX: translate
44
+ }, {
45
+ scale
46
+ }],
47
+ zIndex,
48
+ opacity
49
+ };
50
+ };
51
+
52
+ return createItemStyle;
53
+ }
54
+ ;
55
+ //# sourceMappingURL=parallaxItemStyleFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["itemInterpolationInputRange","defaultParallaxAnimationConfig","activeItemScale","activeItemOpacity","adjacentItemScale","Math","pow","adjacentItemOpacity","scrollingOffset","parallaxItemStyleFactory","config","createItemStyle","itemInterpolation","itemWidth","translate","interpolate","inputRange","outputRange","zIndex","extrapolate","scale","opacity","transform","translateX"],"sources":["parallaxItemStyleFactory.ts"],"sourcesContent":["import type { CreateItemStyle } from '../types';\nimport { itemInterpolationInputRange } from './animationUtils';\n\nexport interface ParallaxAnimationConfig {\n activeItemScale?: number;\n activeItemOpacity?: number;\n adjacentItemScale?: number;\n adjacentItemOpacity?: number;\n scrollingOffset?: number;\n}\n\nconst defaultParallaxAnimationConfig: Required<Readonly<ParallaxAnimationConfig>> = {\n activeItemScale: 0.9,\n activeItemOpacity: 1,\n adjacentItemScale: Math.pow(0.9, 2),\n adjacentItemOpacity: 0.5,\n scrollingOffset: 50,\n};\n\nexport default function parallaxItemStyleFactory(config: ParallaxAnimationConfig = defaultParallaxAnimationConfig) {\n const {\n activeItemOpacity,\n activeItemScale,\n adjacentItemOpacity,\n adjacentItemScale,\n scrollingOffset,\n }: Required<ParallaxAnimationConfig> = {\n ...defaultParallaxAnimationConfig,\n ...config,\n };\n\n const createItemStyle: CreateItemStyle = (itemInterpolation, itemWidth) => {\n const translate = itemInterpolation.interpolate({\n inputRange: itemInterpolationInputRange,\n outputRange: [\n -itemWidth + scrollingOffset,\n 0,\n itemWidth - scrollingOffset,\n ],\n });\n\n const zIndex = itemInterpolation.interpolate({\n inputRange: itemInterpolationInputRange,\n outputRange: [0, itemWidth, 0],\n extrapolate: 'clamp',\n });\n\n const scale = itemInterpolation.interpolate({\n inputRange: itemInterpolationInputRange,\n outputRange: [\n adjacentItemScale,\n activeItemScale,\n adjacentItemScale,\n ],\n extrapolate: 'clamp',\n });\n\n const opacity = itemInterpolation.interpolate({\n inputRange: itemInterpolationInputRange,\n outputRange: [\n adjacentItemOpacity,\n activeItemOpacity,\n adjacentItemOpacity,\n ],\n extrapolate: 'clamp',\n });\n\n return {\n transform: [\n { translateX: translate },\n { scale },\n ],\n zIndex,\n opacity,\n };\n };\n\n return createItemStyle;\n};\n"],"mappings":"AACA,SAASA,2BAAT,QAA4C,kBAA5C;AAUA,MAAMC,8BAA2E,GAAG;EAChFC,eAAe,EAAE,GAD+D;EAEhFC,iBAAiB,EAAE,CAF6D;EAGhFC,iBAAiB,EAAEC,IAAI,CAACC,GAAL,CAAS,GAAT,EAAc,CAAd,CAH6D;EAIhFC,mBAAmB,EAAE,GAJ2D;EAKhFC,eAAe,EAAE;AAL+D,CAApF;AAQA,eAAe,SAASC,wBAAT,GAAoG;EAAA,IAAlEC,MAAkE,uEAAhCT,8BAAgC;EAC/G,MAAM;IACFE,iBADE;IAEFD,eAFE;IAGFK,mBAHE;IAIFH,iBAJE;IAKFI;EALE,IAMiC,EACnC,GAAGP,8BADgC;IAEnC,GAAGS;EAFgC,CANvC;;EAWA,MAAMC,eAAgC,GAAG,CAACC,iBAAD,EAAoBC,SAApB,KAAkC;IACvE,MAAMC,SAAS,GAAGF,iBAAiB,CAACG,WAAlB,CAA8B;MAC5CC,UAAU,EAAEhB,2BADgC;MAE5CiB,WAAW,EAAE,CACT,CAACJ,SAAD,GAAaL,eADJ,EAET,CAFS,EAGTK,SAAS,GAAGL,eAHH;IAF+B,CAA9B,CAAlB;IASA,MAAMU,MAAM,GAAGN,iBAAiB,CAACG,WAAlB,CAA8B;MACzCC,UAAU,EAAEhB,2BAD6B;MAEzCiB,WAAW,EAAE,CAAC,CAAD,EAAIJ,SAAJ,EAAe,CAAf,CAF4B;MAGzCM,WAAW,EAAE;IAH4B,CAA9B,CAAf;IAMA,MAAMC,KAAK,GAAGR,iBAAiB,CAACG,WAAlB,CAA8B;MACxCC,UAAU,EAAEhB,2BAD4B;MAExCiB,WAAW,EAAE,CACTb,iBADS,EAETF,eAFS,EAGTE,iBAHS,CAF2B;MAOxCe,WAAW,EAAE;IAP2B,CAA9B,CAAd;IAUA,MAAME,OAAO,GAAGT,iBAAiB,CAACG,WAAlB,CAA8B;MAC1CC,UAAU,EAAEhB,2BAD8B;MAE1CiB,WAAW,EAAE,CACTV,mBADS,EAETJ,iBAFS,EAGTI,mBAHS,CAF6B;MAO1CY,WAAW,EAAE;IAP6B,CAA9B,CAAhB;IAUA,OAAO;MACHG,SAAS,EAAE,CACP;QAAEC,UAAU,EAAET;MAAd,CADO,EAEP;QAAEM;MAAF,CAFO,CADR;MAKHF,MALG;MAMHG;IANG,CAAP;EAQH,CA5CD;;EA8CA,OAAOV,eAAP;AACH;AAAA"}
@@ -0,0 +1,19 @@
1
+ import { createContext } from 'react';
2
+ import { Animated } from 'react-native';
3
+ const mockItemVisibilityStore = {
4
+ dispatch: () => void 0,
5
+ subscribe: () => () => void 0,
6
+ removeAllListeners: () => void 0
7
+ };
8
+ const initialValue = {
9
+ createItemStyle: () => ({}),
10
+ data: [],
11
+ globalInterpolation: Animated.add(new Animated.Value(0), 0),
12
+ itemHeight: 0,
13
+ itemWidth: 0,
14
+ itemVisibilityStore: mockItemVisibilityStore,
15
+ loop: false
16
+ };
17
+ const InternalContext = /*#__PURE__*/createContext(initialValue);
18
+ export default InternalContext;
19
+ //# sourceMappingURL=InternalContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","Animated","mockItemVisibilityStore","dispatch","subscribe","removeAllListeners","initialValue","createItemStyle","data","globalInterpolation","add","Value","itemHeight","itemWidth","itemVisibilityStore","loop","InternalContext"],"sources":["InternalContext.ts"],"sourcesContent":["import { createContext } from 'react';\nimport { Animated } from 'react-native';\nimport type { CreateItemStyle, ItemHeight, ItemVisibilityStore } from '../types';\n\nexport interface InternalContextValue<ItemT> {\n createItemStyle: CreateItemStyle;\n data: ReadonlyArray<ItemT>;\n globalInterpolation: Animated.AnimatedInterpolation;\n itemHeight: ItemHeight;\n itemWidth: number;\n itemVisibilityStore: ItemVisibilityStore;\n loop: boolean;\n}\n\nconst mockItemVisibilityStore: ItemVisibilityStore = {\n dispatch: () => void 0,\n subscribe: () => () => void 0,\n removeAllListeners: () => void 0,\n};\n\nconst initialValue: Readonly<InternalContextValue<any>> = {\n createItemStyle: () => ({}),\n data: [],\n globalInterpolation: Animated.add(new Animated.Value(0), 0),\n itemHeight: 0,\n itemWidth: 0,\n itemVisibilityStore: mockItemVisibilityStore,\n loop: false,\n};\n\nconst InternalContext = createContext<InternalContextValue<any>>(initialValue);\n\nexport default InternalContext;\n"],"mappings":"AAAA,SAASA,aAAT,QAA8B,OAA9B;AACA,SAASC,QAAT,QAAyB,cAAzB;AAaA,MAAMC,uBAA4C,GAAG;EACjDC,QAAQ,EAAE,MAAM,KAAK,CAD4B;EAEjDC,SAAS,EAAE,MAAM,MAAM,KAAK,CAFqB;EAGjDC,kBAAkB,EAAE,MAAM,KAAK;AAHkB,CAArD;AAMA,MAAMC,YAAiD,GAAG;EACtDC,eAAe,EAAE,OAAO,EAAP,CADqC;EAEtDC,IAAI,EAAE,EAFgD;EAGtDC,mBAAmB,EAAER,QAAQ,CAACS,GAAT,CAAa,IAAIT,QAAQ,CAACU,KAAb,CAAmB,CAAnB,CAAb,EAAoC,CAApC,CAHiC;EAItDC,UAAU,EAAE,CAJ0C;EAKtDC,SAAS,EAAE,CAL2C;EAMtDC,mBAAmB,EAAEZ,uBANiC;EAOtDa,IAAI,EAAE;AAPgD,CAA1D;AAUA,MAAMC,eAAe,gBAAGhB,aAAa,CAA4BM,YAA5B,CAArC;AAEA,eAAeU,eAAf"}
@@ -0,0 +1,46 @@
1
+ import React, { useContext, useEffect, useMemo, useState } from 'react';
2
+ import { Animated } from 'react-native';
3
+ import { StyleSheet } from '@fountain-ui/core';
4
+ import useItemInterpolation from './useItemInterpolation';
5
+ import InternalContext from './InternalContext';
6
+ export default function ItemView(props) {
7
+ const {
8
+ children,
9
+ index,
10
+ onLayout
11
+ } = props;
12
+ const {
13
+ createItemStyle,
14
+ itemHeight,
15
+ itemWidth,
16
+ itemVisibilityStore
17
+ } = useContext(InternalContext);
18
+ const [visible, setVisible] = useState(false);
19
+ const interpolation = useItemInterpolation(index);
20
+ const itemStyle = useMemo(() => createItemStyle(interpolation, itemWidth), [createItemStyle, interpolation, itemWidth]);
21
+ useEffect(() => {
22
+ return itemVisibilityStore.subscribe(ranges => {
23
+ const nextVisible = ranges.some(_ref => {
24
+ let [from, to] = _ref;
25
+ return index >= from && index <= to;
26
+ });
27
+ setVisible(nextVisible);
28
+ });
29
+ }, [index, itemVisibilityStore]);
30
+ return /*#__PURE__*/React.createElement(Animated.View, {
31
+ children: visible ? children(interpolation) : null,
32
+ onLayout: onLayout,
33
+ style: [{
34
+ width: itemWidth,
35
+ height: itemHeight !== 'auto' ? itemHeight : undefined
36
+ }, styles.absolute, // @ts-ignore
37
+ itemStyle]
38
+ });
39
+ }
40
+ ;
41
+ const styles = StyleSheet.create({
42
+ absolute: {
43
+ position: 'absolute'
44
+ }
45
+ });
46
+ //# sourceMappingURL=ItemView.js.map