@fountain-ui/lab 2.0.0-beta.9 → 3.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commonjs/BottomSheet/BottomSheetNative.js +78 -27
- package/build/commonjs/BottomSheet/BottomSheetNative.js.map +1 -1
- package/build/commonjs/BottomSheet/BottomSheetProps.js.map +1 -1
- package/build/commonjs/BottomSheet/BottomSheetWeb.js +63 -17
- package/build/commonjs/BottomSheet/BottomSheetWeb.js.map +1 -1
- package/build/commonjs/BottomSheet/useDynamicSnapPoints.js +79 -0
- package/build/commonjs/BottomSheet/useDynamicSnapPoints.js.map +1 -0
- package/build/commonjs/Carousel/Carousel.js +130 -0
- package/build/commonjs/Carousel/Carousel.js.map +1 -0
- package/build/commonjs/Carousel/CarouselProps.js.map +1 -1
- package/build/commonjs/Carousel/animation/animationUtils.js +9 -0
- package/build/commonjs/Carousel/animation/animationUtils.js.map +1 -0
- package/build/commonjs/Carousel/animation/createDefaultItemStyle.js +15 -0
- package/build/commonjs/Carousel/animation/createDefaultItemStyle.js.map +1 -0
- package/build/commonjs/Carousel/animation/createDefaultScrollAnimation.js +26 -0
- package/build/commonjs/Carousel/animation/createDefaultScrollAnimation.js.map +1 -0
- package/build/commonjs/Carousel/animation/index.js +40 -0
- package/build/commonjs/Carousel/animation/index.js.map +1 -0
- package/build/commonjs/Carousel/animation/normalItemStyleFactory.js +27 -0
- package/build/commonjs/Carousel/animation/normalItemStyleFactory.js.map +1 -0
- package/build/commonjs/Carousel/animation/parallaxItemStyleFactory.js +65 -0
- package/build/commonjs/Carousel/animation/parallaxItemStyleFactory.js.map +1 -0
- package/build/commonjs/Carousel/components/InternalContext.js +29 -0
- package/build/commonjs/Carousel/components/InternalContext.js.map +1 -0
- package/build/commonjs/Carousel/components/ItemView.js +66 -0
- package/build/commonjs/Carousel/components/ItemView.js.map +1 -0
- package/build/commonjs/Carousel/components/RootView.js +86 -0
- package/build/commonjs/Carousel/components/RootView.js.map +1 -0
- package/build/commonjs/Carousel/components/ScrollViewGesture.js +84 -0
- package/build/commonjs/Carousel/components/ScrollViewGesture.js.map +1 -0
- package/build/commonjs/Carousel/components/index.js +40 -0
- package/build/commonjs/Carousel/components/index.js.map +1 -0
- package/build/commonjs/Carousel/components/useItemInterpolation.js +65 -0
- package/build/commonjs/Carousel/components/useItemInterpolation.js.map +1 -0
- package/build/commonjs/Carousel/hooks/index.js +48 -0
- package/build/commonjs/Carousel/hooks/index.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useAutoplayController.js +58 -0
- package/build/commonjs/Carousel/hooks/useAutoplayController.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useIndexController.js +55 -0
- package/build/commonjs/Carousel/hooks/useIndexController.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useItemVisibilityStore.js +95 -0
- package/build/commonjs/Carousel/hooks/useItemVisibilityStore.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useLoopedData.js +33 -0
- package/build/commonjs/Carousel/hooks/useLoopedData.js.map +1 -0
- package/build/commonjs/Carousel/hooks/usePagingAnimator.js +202 -0
- package/build/commonjs/Carousel/hooks/usePagingAnimator.js.map +1 -0
- package/build/commonjs/Carousel/index.js +16 -2
- package/build/commonjs/Carousel/index.js.map +1 -1
- package/build/commonjs/Carousel/tick.js +16 -0
- package/build/commonjs/Carousel/tick.js.map +1 -0
- package/build/commonjs/Carousel/types.js +8 -0
- package/build/commonjs/Carousel/types.js.map +1 -0
- package/build/commonjs/ComicViewer/ComicViewer.js +230 -92
- package/build/commonjs/ComicViewer/ComicViewer.js.map +1 -1
- package/build/commonjs/ComicViewer/ComicViewerProps.js.map +1 -1
- package/build/commonjs/ComicViewer/EncodedTile.js +10 -0
- package/build/commonjs/ComicViewer/EncodedTile.js.map +1 -0
- package/build/commonjs/ComicViewer/FastScroll.js +175 -0
- package/build/commonjs/ComicViewer/FastScroll.js.map +1 -0
- package/build/commonjs/ComicViewer/{ComicViewerItemProps.js → FastScrollProps.js} +1 -1
- package/build/commonjs/ComicViewer/FastScrollProps.js.map +1 -0
- package/build/commonjs/ComicViewer/ReloadButton.js +48 -0
- package/build/commonjs/ComicViewer/ReloadButton.js.map +1 -0
- package/build/commonjs/ComicViewer/ViewerItem.js +53 -59
- package/build/commonjs/ComicViewer/ViewerItem.js.map +1 -1
- package/build/commonjs/ComicViewer/index.js.map +1 -1
- package/build/commonjs/ComicViewer/util.js +27 -0
- package/build/commonjs/ComicViewer/util.js.map +1 -0
- package/build/commonjs/DateTimePicker/DateTimePicker.js +12 -3
- package/build/commonjs/DateTimePicker/DateTimePicker.js.map +1 -1
- package/build/commonjs/DateTimePicker/YearPicker.js +2 -2
- package/build/commonjs/DateTimePicker/YearPicker.js.map +1 -1
- package/build/commonjs/StatusBarProvider/Provider.js.map +1 -1
- package/build/commonjs/StatusBarProvider/StatusBarProvider.js +111 -2
- package/build/commonjs/StatusBarProvider/StatusBarProvider.js.map +1 -1
- package/build/commonjs/ViewPager/FluxContext.js +13 -0
- package/build/commonjs/ViewPager/FluxContext.js.map +1 -0
- package/build/commonjs/ViewPager/InternalContext.js +17 -0
- package/build/commonjs/ViewPager/InternalContext.js.map +1 -0
- package/build/commonjs/ViewPager/PageStateContext.js +14 -0
- package/build/commonjs/ViewPager/PageStateContext.js.map +1 -0
- package/build/commonjs/ViewPager/ViewPager.js +81 -0
- package/build/commonjs/ViewPager/ViewPager.js.map +1 -0
- package/build/commonjs/ViewPager/ViewPager.native.js +152 -0
- package/build/commonjs/ViewPager/ViewPager.native.js.map +1 -0
- package/build/commonjs/ViewPager/ViewPagerProps.js.map +1 -1
- package/build/commonjs/ViewPager/components/ChildrenMemoizedPage.js +122 -0
- package/build/commonjs/ViewPager/components/ChildrenMemoizedPage.js.map +1 -0
- package/build/commonjs/ViewPager/components/FluxStoreProvider.js +37 -0
- package/build/commonjs/ViewPager/components/FluxStoreProvider.js.map +1 -0
- package/build/commonjs/ViewPager/components/index.js +24 -0
- package/build/commonjs/ViewPager/components/index.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/index.js +64 -0
- package/build/commonjs/ViewPager/hooks/index.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/useDispatch.js +22 -0
- package/build/commonjs/ViewPager/hooks/useDispatch.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/useEagerState.js +24 -0
- package/build/commonjs/ViewPager/hooks/useEagerState.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/useForceRender.js +16 -0
- package/build/commonjs/ViewPager/hooks/useForceRender.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/useLazyState.js +43 -0
- package/build/commonjs/ViewPager/hooks/useLazyState.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/usePageStore.js +35 -0
- package/build/commonjs/ViewPager/hooks/usePageStore.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/useStore.js +26 -0
- package/build/commonjs/ViewPager/hooks/useStore.js.map +1 -0
- package/build/commonjs/ViewPager/hooks/useViewPagerPageState.js +19 -0
- package/build/commonjs/ViewPager/hooks/useViewPagerPageState.js.map +1 -0
- package/build/commonjs/ViewPager/index.js +42 -2
- package/build/commonjs/ViewPager/index.js.map +1 -1
- package/build/commonjs/ViewPager/types.js +2 -0
- package/build/commonjs/ViewPager/types.js.map +1 -0
- package/build/commonjs/ViewPager/utils.js +12 -45
- package/build/commonjs/ViewPager/utils.js.map +1 -1
- package/build/commonjs/ViewabilityTrackerView/Viewability.js +2 -0
- package/build/commonjs/ViewabilityTrackerView/Viewability.js.map +1 -0
- package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerView.js +45 -0
- package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerView.js.map +1 -0
- package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerViewProps.js +2 -0
- package/build/commonjs/ViewabilityTrackerView/ViewabilityTrackerViewProps.js.map +1 -0
- package/build/commonjs/{Carousel/index.native.js → ViewabilityTrackerView/index.js} +3 -3
- package/build/commonjs/ViewabilityTrackerView/index.js.map +1 -0
- package/build/commonjs/ViewabilityTrackerView/measureViewability.js +42 -0
- package/build/commonjs/ViewabilityTrackerView/measureViewability.js.map +1 -0
- package/build/commonjs/ViewabilityTrackerView/useViewabilityTracker.js +88 -0
- package/build/commonjs/ViewabilityTrackerView/useViewabilityTracker.js.map +1 -0
- package/build/commonjs/hooks/index.js +16 -0
- package/build/commonjs/hooks/index.js.map +1 -1
- package/build/commonjs/hooks/useDeferredExecutor.js +45 -0
- package/build/commonjs/hooks/useDeferredExecutor.js.map +1 -0
- package/build/commonjs/hooks/useHeight.js +4 -4
- package/build/commonjs/hooks/useHeight.js.map +1 -1
- package/build/commonjs/hooks/useIsMounted.js +22 -0
- package/build/commonjs/hooks/useIsMounted.js.map +1 -0
- package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js +3 -5
- package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
- package/build/commonjs/index.js +22 -1
- package/build/commonjs/index.js.map +1 -1
- package/build/module/BottomSheet/BottomSheetNative.js +73 -22
- package/build/module/BottomSheet/BottomSheetNative.js.map +1 -1
- package/build/module/BottomSheet/BottomSheetProps.js.map +1 -1
- package/build/module/BottomSheet/BottomSheetWeb.js +58 -18
- package/build/module/BottomSheet/BottomSheetWeb.js.map +1 -1
- package/build/module/BottomSheet/useDynamicSnapPoints.js +65 -0
- package/build/module/BottomSheet/useDynamicSnapPoints.js.map +1 -0
- package/build/module/Carousel/Carousel.js +109 -0
- package/build/module/Carousel/Carousel.js.map +1 -0
- package/build/module/Carousel/CarouselProps.js.map +1 -1
- package/build/module/Carousel/animation/animationUtils.js +2 -0
- package/build/module/Carousel/animation/animationUtils.js.map +1 -0
- package/build/module/Carousel/animation/createDefaultItemStyle.js +3 -0
- package/build/module/Carousel/animation/createDefaultItemStyle.js.map +1 -0
- package/build/module/Carousel/animation/createDefaultScrollAnimation.js +12 -0
- package/build/module/Carousel/animation/createDefaultScrollAnimation.js.map +1 -0
- package/build/module/Carousel/animation/index.js +5 -0
- package/build/module/Carousel/animation/index.js.map +1 -0
- package/build/module/Carousel/animation/normalItemStyleFactory.js +18 -0
- package/build/module/Carousel/animation/normalItemStyleFactory.js.map +1 -0
- package/build/module/Carousel/animation/parallaxItemStyleFactory.js +55 -0
- package/build/module/Carousel/animation/parallaxItemStyleFactory.js.map +1 -0
- package/build/module/Carousel/components/InternalContext.js +19 -0
- package/build/module/Carousel/components/InternalContext.js.map +1 -0
- package/build/module/Carousel/components/ItemView.js +46 -0
- package/build/module/Carousel/components/ItemView.js.map +1 -0
- package/build/module/Carousel/components/RootView.js +65 -0
- package/build/module/Carousel/components/RootView.js.map +1 -0
- package/build/module/Carousel/components/ScrollViewGesture.js +69 -0
- package/build/module/Carousel/components/ScrollViewGesture.js.map +1 -0
- package/build/module/Carousel/components/index.js +5 -0
- package/build/module/Carousel/components/index.js.map +1 -0
- package/build/module/Carousel/components/useItemInterpolation.js +51 -0
- package/build/module/Carousel/components/useItemInterpolation.js.map +1 -0
- package/build/module/Carousel/hooks/index.js +6 -0
- package/build/module/Carousel/hooks/index.js.map +1 -0
- package/build/module/Carousel/hooks/useAutoplayController.js +48 -0
- package/build/module/Carousel/hooks/useAutoplayController.js.map +1 -0
- package/build/module/Carousel/hooks/useIndexController.js +44 -0
- package/build/module/Carousel/hooks/useIndexController.js.map +1 -0
- package/build/module/Carousel/hooks/useItemVisibilityStore.js +86 -0
- package/build/module/Carousel/hooks/useItemVisibilityStore.js.map +1 -0
- package/build/module/Carousel/hooks/useLoopedData.js +24 -0
- package/build/module/Carousel/hooks/useLoopedData.js.map +1 -0
- package/build/module/Carousel/hooks/usePagingAnimator.js +192 -0
- package/build/module/Carousel/hooks/usePagingAnimator.js.map +1 -0
- package/build/module/Carousel/index.js +2 -1
- package/build/module/Carousel/index.js.map +1 -1
- package/build/module/Carousel/tick.js +6 -0
- package/build/module/Carousel/tick.js.map +1 -0
- package/build/module/Carousel/types.js +4 -0
- package/build/module/Carousel/types.js.map +1 -0
- package/build/module/ComicViewer/ComicViewer.js +229 -93
- package/build/module/ComicViewer/ComicViewer.js.map +1 -1
- package/build/module/ComicViewer/ComicViewerProps.js.map +1 -1
- package/build/module/ComicViewer/EncodedTile.js +3 -0
- package/build/module/ComicViewer/EncodedTile.js.map +1 -0
- package/build/module/ComicViewer/FastScroll.js +152 -0
- package/build/module/ComicViewer/FastScroll.js.map +1 -0
- package/build/module/ComicViewer/FastScrollProps.js +2 -0
- package/build/module/ComicViewer/FastScrollProps.js.map +1 -0
- package/build/module/ComicViewer/ReloadButton.js +33 -0
- package/build/module/ComicViewer/ReloadButton.js.map +1 -0
- package/build/module/ComicViewer/ViewerItem.js +53 -60
- package/build/module/ComicViewer/ViewerItem.js.map +1 -1
- package/build/module/ComicViewer/index.js.map +1 -1
- package/build/module/ComicViewer/util.js +15 -0
- package/build/module/ComicViewer/util.js.map +1 -0
- package/build/module/DateTimePicker/DateTimePicker.js +13 -4
- package/build/module/DateTimePicker/DateTimePicker.js.map +1 -1
- package/build/module/DateTimePicker/YearPicker.js +2 -2
- package/build/module/DateTimePicker/YearPicker.js.map +1 -1
- package/build/module/StatusBarProvider/Provider.js.map +1 -1
- package/build/module/StatusBarProvider/StatusBarProvider.js +105 -2
- package/build/module/StatusBarProvider/StatusBarProvider.js.map +1 -1
- package/build/module/ViewPager/FluxContext.js +4 -0
- package/build/module/ViewPager/FluxContext.js.map +1 -0
- package/build/module/ViewPager/InternalContext.js +7 -0
- package/build/module/ViewPager/InternalContext.js.map +1 -0
- package/build/module/ViewPager/PageStateContext.js +5 -0
- package/build/module/ViewPager/PageStateContext.js.map +1 -0
- package/build/module/ViewPager/ViewPager.js +57 -0
- package/build/module/ViewPager/ViewPager.js.map +1 -0
- package/build/module/ViewPager/ViewPager.native.js +129 -0
- package/build/module/ViewPager/ViewPager.native.js.map +1 -0
- package/build/module/ViewPager/ViewPagerProps.js.map +1 -1
- package/build/module/ViewPager/components/ChildrenMemoizedPage.js +101 -0
- package/build/module/ViewPager/components/ChildrenMemoizedPage.js.map +1 -0
- package/build/module/ViewPager/components/FluxStoreProvider.js +20 -0
- package/build/module/ViewPager/components/FluxStoreProvider.js.map +1 -0
- package/build/module/ViewPager/components/index.js +3 -0
- package/build/module/ViewPager/components/index.js.map +1 -0
- package/build/module/ViewPager/hooks/index.js +8 -0
- package/build/module/ViewPager/hooks/index.js.map +1 -0
- package/build/module/ViewPager/hooks/useDispatch.js +10 -0
- package/build/module/ViewPager/hooks/useDispatch.js.map +1 -0
- package/build/module/ViewPager/hooks/useEagerState.js +12 -0
- package/build/module/ViewPager/hooks/useEagerState.js.map +1 -0
- package/build/module/ViewPager/hooks/useForceRender.js +7 -0
- package/build/module/ViewPager/hooks/useForceRender.js.map +1 -0
- package/build/module/ViewPager/hooks/useLazyState.js +28 -0
- package/build/module/ViewPager/hooks/useLazyState.js.map +1 -0
- package/build/module/ViewPager/hooks/usePageStore.js +25 -0
- package/build/module/ViewPager/hooks/usePageStore.js.map +1 -0
- package/build/module/ViewPager/hooks/useStore.js +14 -0
- package/build/module/ViewPager/hooks/useStore.js.map +1 -0
- package/build/module/ViewPager/hooks/useViewPagerPageState.js +7 -0
- package/build/module/ViewPager/hooks/useViewPagerPageState.js.map +1 -0
- package/build/module/ViewPager/index.js +3 -1
- package/build/module/ViewPager/index.js.map +1 -1
- package/build/module/ViewPager/types.js +2 -0
- package/build/module/ViewPager/types.js.map +1 -0
- package/build/module/ViewPager/utils.js +6 -34
- package/build/module/ViewPager/utils.js.map +1 -1
- package/build/module/ViewabilityTrackerView/Viewability.js +2 -0
- package/build/module/ViewabilityTrackerView/Viewability.js.map +1 -0
- package/build/module/ViewabilityTrackerView/ViewabilityTrackerView.js +28 -0
- package/build/module/ViewabilityTrackerView/ViewabilityTrackerView.js.map +1 -0
- package/build/module/ViewabilityTrackerView/ViewabilityTrackerViewProps.js +2 -0
- package/build/module/ViewabilityTrackerView/ViewabilityTrackerViewProps.js.map +1 -0
- package/build/module/ViewabilityTrackerView/index.js +2 -0
- package/build/module/ViewabilityTrackerView/index.js.map +1 -0
- package/build/module/ViewabilityTrackerView/measureViewability.js +34 -0
- package/build/module/ViewabilityTrackerView/measureViewability.js.map +1 -0
- package/build/module/ViewabilityTrackerView/useViewabilityTracker.js +73 -0
- package/build/module/ViewabilityTrackerView/useViewabilityTracker.js.map +1 -0
- package/build/module/hooks/index.js +2 -0
- package/build/module/hooks/index.js.map +1 -1
- package/build/module/hooks/useDeferredExecutor.js +33 -0
- package/build/module/hooks/useDeferredExecutor.js.map +1 -0
- package/build/module/hooks/useHeight.js +2 -3
- package/build/module/hooks/useHeight.js.map +1 -1
- package/build/module/hooks/useIsMounted.js +13 -0
- package/build/module/hooks/useIsMounted.js.map +1 -0
- package/build/module/hooks/useUnstableCollapsibleAppBar.js +4 -6
- package/build/module/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
- package/build/module/index.js +2 -0
- package/build/module/index.js.map +1 -1
- package/build/typescript/AnimatedY/AnimatedY.d.ts +1 -0
- package/build/typescript/BottomSheet/BottomSheetNative.d.ts +1 -0
- package/build/typescript/BottomSheet/BottomSheetProps.d.ts +22 -1
- package/build/typescript/BottomSheet/BottomSheetWeb.d.ts +1 -0
- package/build/typescript/BottomSheet/TransparentBackdrop.d.ts +1 -0
- package/build/typescript/BottomSheet/useDynamicSnapPoints.d.ts +13 -0
- package/build/typescript/Carousel/Carousel.d.ts +5 -0
- package/build/typescript/Carousel/CarouselProps.d.ts +33 -48
- package/build/typescript/Carousel/animation/animationUtils.d.ts +1 -0
- package/build/typescript/Carousel/animation/createDefaultItemStyle.d.ts +2 -0
- package/build/typescript/Carousel/animation/createDefaultScrollAnimation.d.ts +2 -0
- package/build/typescript/Carousel/animation/index.d.ts +4 -0
- package/build/typescript/Carousel/animation/normalItemStyleFactory.d.ts +2 -0
- package/build/typescript/Carousel/animation/parallaxItemStyleFactory.d.ts +9 -0
- package/build/typescript/Carousel/components/InternalContext.d.ts +14 -0
- package/build/typescript/Carousel/components/ItemView.d.ts +9 -0
- package/build/typescript/Carousel/components/RootView.d.ts +16 -0
- package/build/typescript/Carousel/components/ScrollViewGesture.d.ts +12 -0
- package/build/typescript/Carousel/components/index.d.ts +4 -0
- package/build/typescript/Carousel/components/useItemInterpolation.d.ts +2 -0
- package/build/typescript/Carousel/hooks/index.d.ts +5 -0
- package/build/typescript/Carousel/hooks/useAutoplayController.d.ts +7 -0
- package/build/typescript/Carousel/hooks/useIndexController.d.ts +10 -0
- package/build/typescript/Carousel/hooks/useItemVisibilityStore.d.ts +7 -0
- package/build/typescript/Carousel/hooks/useLoopedData.d.ts +1 -0
- package/build/typescript/Carousel/hooks/usePagingAnimator.d.ts +17 -0
- package/build/typescript/Carousel/index.d.ts +3 -1
- package/build/typescript/Carousel/tick.d.ts +2 -0
- package/build/typescript/Carousel/types.d.ts +91 -0
- package/build/typescript/ComicViewer/ComicViewer.d.ts +2 -1
- package/build/typescript/ComicViewer/ComicViewerProps.d.ts +61 -43
- package/build/typescript/ComicViewer/EncodedTile.d.ts +2 -0
- package/build/typescript/ComicViewer/FastScroll.d.ts +4 -0
- package/build/typescript/ComicViewer/FastScrollProps.d.ts +74 -0
- package/build/typescript/ComicViewer/ReloadButton.d.ts +7 -0
- package/build/typescript/ComicViewer/ViewerItem.d.ts +46 -7
- package/build/typescript/ComicViewer/index.d.ts +3 -2
- package/build/typescript/ComicViewer/util.d.ts +2 -0
- package/build/typescript/DateTimePicker/DateTimePicker.d.ts +1 -0
- package/build/typescript/DateTimePicker/YearPicker.d.ts +1 -0
- package/build/typescript/FlipCard/FlipCard.d.ts +1 -0
- package/build/typescript/StatusBarProvider/Provider.d.ts +13 -0
- package/build/typescript/StatusBarProvider/StatusBarProvider.d.ts +1 -0
- package/build/typescript/ViewPager/FluxContext.d.ts +5 -0
- package/build/typescript/ViewPager/InternalContext.d.ts +7 -0
- package/build/typescript/ViewPager/PageStateContext.d.ts +6 -0
- package/build/typescript/ViewPager/ViewPager.d.ts +5 -0
- package/build/typescript/ViewPager/ViewPager.native.d.ts +5 -0
- package/build/typescript/ViewPager/ViewPagerProps.d.ts +21 -27
- package/build/typescript/ViewPager/components/ChildrenMemoizedPage.d.ts +14 -0
- package/build/typescript/ViewPager/components/FluxStoreProvider.d.ts +6 -0
- package/build/typescript/ViewPager/components/index.d.ts +2 -0
- package/build/typescript/ViewPager/hooks/index.d.ts +7 -0
- package/build/typescript/ViewPager/hooks/useDispatch.d.ts +2 -0
- package/build/typescript/ViewPager/hooks/useEagerState.d.ts +1 -0
- package/build/typescript/ViewPager/hooks/useForceRender.d.ts +2 -0
- package/build/typescript/ViewPager/hooks/useLazyState.d.ts +2 -0
- package/build/typescript/ViewPager/hooks/usePageStore.d.ts +2 -0
- package/build/typescript/ViewPager/hooks/useStore.d.ts +2 -0
- package/build/typescript/ViewPager/hooks/useViewPagerPageState.d.ts +1 -0
- package/build/typescript/ViewPager/index.d.ts +4 -1
- package/build/typescript/ViewPager/types.d.ts +12 -0
- package/build/typescript/ViewPager/utils.d.ts +5 -20
- package/build/typescript/ViewabilityTrackerView/Viewability.d.ts +3 -0
- package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerView.d.ts +3 -0
- package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerViewProps.d.ts +22 -0
- package/build/typescript/ViewabilityTrackerView/index.d.ts +2 -0
- package/build/typescript/ViewabilityTrackerView/measureViewability.d.ts +11 -0
- package/build/typescript/ViewabilityTrackerView/useViewabilityTracker.d.ts +11 -0
- package/build/typescript/hooks/index.d.ts +2 -0
- package/build/typescript/hooks/useDeferredExecutor.d.ts +11 -0
- package/build/typescript/hooks/useIsMounted.d.ts +4 -0
- package/build/typescript/index.d.ts +2 -0
- package/package.json +10 -25
- package/src/BottomSheet/BottomSheetNative.tsx +76 -21
- package/src/BottomSheet/BottomSheetProps.ts +26 -1
- package/src/BottomSheet/BottomSheetWeb.tsx +67 -24
- package/src/BottomSheet/useDynamicSnapPoints.ts +87 -0
- package/src/Carousel/Carousel.tsx +135 -0
- package/src/Carousel/CarouselProps.ts +42 -53
- package/src/Carousel/animation/animationUtils.ts +1 -0
- package/src/Carousel/animation/createDefaultItemStyle.ts +3 -0
- package/src/Carousel/animation/createDefaultScrollAnimation.ts +14 -0
- package/src/Carousel/animation/index.ts +4 -0
- package/src/Carousel/animation/normalItemStyleFactory.ts +19 -0
- package/src/Carousel/animation/parallaxItemStyleFactory.ts +79 -0
- package/src/Carousel/components/InternalContext.ts +33 -0
- package/src/Carousel/components/ItemView.tsx +66 -0
- package/src/Carousel/components/RootView.tsx +79 -0
- package/src/Carousel/components/ScrollViewGesture.tsx +93 -0
- package/src/Carousel/components/index.ts +4 -0
- package/src/Carousel/components/useItemInterpolation.ts +107 -0
- package/src/Carousel/hooks/index.ts +5 -0
- package/src/Carousel/hooks/useAutoplayController.ts +57 -0
- package/src/Carousel/hooks/useIndexController.tsx +57 -0
- package/src/Carousel/hooks/useItemVisibilityStore.ts +107 -0
- package/src/Carousel/hooks/useLoopedData.ts +26 -0
- package/src/Carousel/hooks/usePagingAnimator.ts +255 -0
- package/src/Carousel/index.ts +4 -2
- package/src/Carousel/tick.ts +6 -0
- package/src/Carousel/types.ts +114 -0
- package/src/ComicViewer/ComicViewer.tsx +268 -106
- package/src/ComicViewer/ComicViewerProps.ts +66 -44
- package/src/ComicViewer/EncodedTile.ts +3 -0
- package/src/ComicViewer/FastScroll.tsx +176 -0
- package/src/ComicViewer/FastScrollProps.ts +88 -0
- package/src/ComicViewer/ReloadButton.tsx +36 -0
- package/src/ComicViewer/ViewerItem.tsx +104 -62
- package/src/ComicViewer/index.ts +8 -2
- package/src/ComicViewer/util.ts +15 -0
- package/src/DateTimePicker/DateTimePicker.tsx +11 -3
- package/src/DateTimePicker/YearPicker.tsx +2 -2
- package/src/StatusBarProvider/Provider.ts +14 -0
- package/src/StatusBarProvider/StatusBarProvider.tsx +103 -1
- package/src/ViewPager/FluxContext.ts +8 -0
- package/src/ViewPager/InternalContext.ts +13 -0
- package/src/ViewPager/PageStateContext.ts +11 -0
- package/src/ViewPager/ViewPager.native.tsx +152 -0
- package/src/ViewPager/ViewPager.tsx +69 -0
- package/src/ViewPager/ViewPagerProps.ts +25 -34
- package/src/ViewPager/components/ChildrenMemoizedPage.tsx +124 -0
- package/src/ViewPager/components/FluxStoreProvider.tsx +27 -0
- package/src/ViewPager/components/index.ts +2 -0
- package/src/ViewPager/hooks/index.ts +7 -0
- package/src/ViewPager/hooks/useDispatch.ts +11 -0
- package/src/ViewPager/hooks/useEagerState.ts +14 -0
- package/src/ViewPager/hooks/useForceRender.ts +7 -0
- package/src/ViewPager/hooks/useLazyState.ts +32 -0
- package/src/ViewPager/hooks/usePageStore.ts +30 -0
- package/src/ViewPager/hooks/useStore.ts +15 -0
- package/src/ViewPager/hooks/useViewPagerPageState.ts +6 -0
- package/src/ViewPager/index.ts +11 -2
- package/src/ViewPager/types.ts +15 -0
- package/src/ViewPager/utils.tsx +9 -56
- package/src/ViewabilityTrackerView/Viewability.ts +3 -0
- package/src/ViewabilityTrackerView/ViewabilityTrackerView.tsx +33 -0
- package/src/ViewabilityTrackerView/ViewabilityTrackerViewProps.ts +25 -0
- package/src/ViewabilityTrackerView/index.ts +2 -0
- package/src/ViewabilityTrackerView/measureViewability.ts +54 -0
- package/src/ViewabilityTrackerView/useViewabilityTracker.ts +85 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useDeferredExecutor.ts +46 -0
- package/src/hooks/useHeight.ts +3 -4
- package/src/hooks/useIsMounted.ts +19 -0
- package/src/hooks/useUnstableCollapsibleAppBar.ts +4 -4
- package/src/index.ts +3 -0
- package/build/commonjs/Carousel/CarouselNative.js +0 -72
- package/build/commonjs/Carousel/CarouselNative.js.map +0 -1
- package/build/commonjs/Carousel/CarouselWeb.js +0 -237
- package/build/commonjs/Carousel/CarouselWeb.js.map +0 -1
- package/build/commonjs/Carousel/index.native.js.map +0 -1
- package/build/commonjs/Carousel/utils.js +0 -19
- package/build/commonjs/Carousel/utils.js.map +0 -1
- package/build/commonjs/ComicViewer/ComicViewerItemProps.js.map +0 -1
- package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +0 -49
- package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +0 -1
- package/build/commonjs/ViewPager/ViewPagerNative.js +0 -75
- package/build/commonjs/ViewPager/ViewPagerNative.js.map +0 -1
- package/build/commonjs/ViewPager/ViewPagerWeb.js +0 -55
- package/build/commonjs/ViewPager/ViewPagerWeb.js.map +0 -1
- package/build/commonjs/ViewPager/index.native.js +0 -16
- package/build/commonjs/ViewPager/index.native.js.map +0 -1
- package/build/module/Carousel/CarouselNative.js +0 -54
- package/build/module/Carousel/CarouselNative.js.map +0 -1
- package/build/module/Carousel/CarouselWeb.js +0 -215
- package/build/module/Carousel/CarouselWeb.js.map +0 -1
- package/build/module/Carousel/index.native.js +0 -2
- package/build/module/Carousel/index.native.js.map +0 -1
- package/build/module/Carousel/utils.js +0 -7
- package/build/module/Carousel/utils.js.map +0 -1
- package/build/module/ComicViewer/ComicViewerItemProps.js +0 -2
- package/build/module/ComicViewer/ComicViewerItemProps.js.map +0 -1
- package/build/module/ViewPager/ChildrenMemoizedPage.js +0 -37
- package/build/module/ViewPager/ChildrenMemoizedPage.js.map +0 -1
- package/build/module/ViewPager/ViewPagerNative.js +0 -58
- package/build/module/ViewPager/ViewPagerNative.js.map +0 -1
- package/build/module/ViewPager/ViewPagerWeb.js +0 -41
- package/build/module/ViewPager/ViewPagerWeb.js.map +0 -1
- package/build/module/ViewPager/index.native.js +0 -2
- package/build/module/ViewPager/index.native.js.map +0 -1
- package/build/typescript/Carousel/CarouselNative.d.ts +0 -2
- package/build/typescript/Carousel/CarouselWeb.d.ts +0 -4
- package/build/typescript/Carousel/index.native.d.ts +0 -1
- package/build/typescript/Carousel/utils.d.ts +0 -6
- package/build/typescript/ComicViewer/ComicViewerItemProps.d.ts +0 -12
- package/build/typescript/ViewPager/ChildrenMemoizedPage.d.ts +0 -4
- package/build/typescript/ViewPager/ViewPagerNative.d.ts +0 -2
- package/build/typescript/ViewPager/ViewPagerWeb.d.ts +0 -2
- package/build/typescript/ViewPager/index.native.d.ts +0 -1
- package/src/Carousel/CarouselNative.tsx +0 -67
- package/src/Carousel/CarouselWeb.tsx +0 -222
- package/src/Carousel/index.native.ts +0 -1
- package/src/Carousel/utils.ts +0 -11
- package/src/ComicViewer/ComicViewerItemProps.ts +0 -15
- package/src/ViewPager/ChildrenMemoizedPage.tsx +0 -36
- package/src/ViewPager/ViewPagerNative.tsx +0 -73
- package/src/ViewPager/ViewPagerWeb.tsx +0 -52
- package/src/ViewPager/index.native.ts +0 -1
|
@@ -6,11 +6,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
Object.defineProperty(exports, "default", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _Carousel.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "normalItemStyleFactory", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _animation.normalItemStyleFactory;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "parallaxItemStyleFactory", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _animation.parallaxItemStyleFactory;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
var _Carousel = _interopRequireDefault(require("./Carousel"));
|
|
12
26
|
|
|
13
|
-
var
|
|
27
|
+
var _animation = require("./animation");
|
|
14
28
|
|
|
15
29
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default } from './
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default } from './Carousel';\nexport type { default as CarouselProps } from './CarouselProps';\nexport type { CarouselInstance } from './types';\nexport { normalItemStyleFactory, parallaxItemStyleFactory } from './animation';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAGA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("@fountain-ui/utils");
|
|
9
|
+
|
|
10
|
+
var _default = (0, _utils.logger)('Carousel', {
|
|
11
|
+
enabled: __DEV__,
|
|
12
|
+
format: 'diff'
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
exports.default = _default;
|
|
16
|
+
//# sourceMappingURL=tick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["logger","enabled","__DEV__","format"],"sources":["tick.ts"],"sourcesContent":["import { logger } from '@fountain-ui/utils';\n\nexport default logger('Carousel', {\n enabled: __DEV__,\n format: 'diff',\n});\n"],"mappings":";;;;;;;AAAA;;eAEe,IAAAA,aAAA,EAAO,UAAP,EAAmB;EAC9BC,OAAO,EAAEC,OADqB;EAE9BC,MAAM,EAAE;AAFsB,CAAnB,C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["directions","scrollStates"],"sources":["types.ts"],"sourcesContent":["import type { ReactElement } from 'react';\nimport type { Animated, ViewProps } from 'react-native';\n\nconst directions = ['next', 'prev', 'stay'] as const;\n\nexport type PagingDirection = (typeof directions)[number];\n\nconst scrollStates = ['idle', 'dragging', 'interrupted'] as const;\n\nexport type ScrollState = (typeof scrollStates)[number];\n\nexport type ItemHeight = number | 'auto';\n\nexport interface RenderItem<T> {\n (info: { item: T, index: number, interpolation: Animated.AnimatedInterpolation }): ReactElement | null;\n}\n\nexport interface CreateScrollAnimation {\n (aValue: Animated.AnimatedValue, toValue: number): Animated.CompositeAnimation;\n}\n\nexport interface CreateItemStyle {\n (itemInterpolation: Animated.AnimatedInterpolation, itemWidth: number): Animated.AnimatedProps<ViewProps['style']>;\n}\n\nexport interface GetCurrentIndex {\n (): number;\n}\n\nexport interface OnIndexChange {\n (itemIndex: number): void;\n}\n\nexport interface OnPositionChange {\n (position: number): void;\n}\n\nexport interface ScrollStateChangeEvent {\n offset: number;\n state: ScrollState;\n}\n\nexport interface IndexController {\n getCurrentIndex: GetCurrentIndex;\n lastIndex: number;\n notifyScrollStateHasChanged: (event: ScrollStateChangeEvent) => void;\n}\n\nexport type PagingAnimationType = 'directional' | 'index';\n\nexport interface BasePagingAnimationConfig {\n animated?: boolean;\n lastGestureTranslationX?: number;\n}\n\nexport interface DirectionalPagingAnimationConfig extends BasePagingAnimationConfig {\n direction: PagingDirection;\n isOriginatedFromGesture?: boolean;\n}\n\nexport interface IndexPagingAnimationConfig extends BasePagingAnimationConfig {\n index: number;\n}\n\nexport type PagingAnimationConfig = DirectionalPagingAnimationConfig | IndexPagingAnimationConfig;\n\nexport interface StartPagingAnimation {\n (type: PagingAnimationType, config: PagingAnimationConfig): void;\n}\n\nexport type VisibleIndexRanges = Array<[number, number]>;\n\nexport interface StoreSubscription {\n (): void;\n}\n\nexport interface ItemVisibilityStore {\n dispatch: (ranges: VisibleIndexRanges) => void;\n subscribe: (listener: (ranges: VisibleIndexRanges) => void) => StoreSubscription;\n removeAllListeners: () => void;\n}\n\nexport interface AutoplayController {\n pause: () => void;\n resume: () => void;\n}\n\nexport interface ScrollToOption {\n index: number;\n animated?: boolean;\n}\n\nexport interface CarouselInstance {\n /**\n * Get current visible item index.\n */\n getCurrentIndex: GetCurrentIndex;\n\n /**\n * Scroll to next visible item.\n */\n next: () => void;\n\n /**\n * Scroll to previous visible item.\n */\n prev: () => void;\n\n /**\n * Scroll to desired indexed item.\n * Invalid index is ignored.\n */\n scrollTo: (option: ScrollToOption) => void;\n}\n"],"mappings":";;;;;AAGA,MAAMA,UAAU,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,MAAjB,CAAnB;AAIA,MAAMC,YAAY,GAAG,CAAC,MAAD,EAAS,UAAT,EAAqB,aAArB,CAArB"}
|
|
@@ -13,6 +13,8 @@ var R = _interopRequireWildcard(require("ramda"));
|
|
|
13
13
|
|
|
14
14
|
var _ViewerItem = _interopRequireDefault(require("./ViewerItem"));
|
|
15
15
|
|
|
16
|
+
var _FastScroll = _interopRequireDefault(require("./FastScroll"));
|
|
17
|
+
|
|
16
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
19
|
|
|
18
20
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -21,138 +23,269 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
21
23
|
|
|
22
24
|
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); }
|
|
23
25
|
|
|
24
|
-
const getItemHeights = items => R.map(content => content.height)(items);
|
|
25
|
-
|
|
26
26
|
const appender = (left, right) => [left + right, left + right];
|
|
27
27
|
|
|
28
|
-
const getHeightAccum =
|
|
28
|
+
const getHeightAccum = heights => R.mapAccum(appender, 0, heights);
|
|
29
|
+
|
|
30
|
+
const keyExtractor = item => String(item.index);
|
|
31
|
+
|
|
32
|
+
const createInitialImageState = image => ({
|
|
33
|
+
totalErrorCount: 0,
|
|
34
|
+
dimension: image.dimension,
|
|
35
|
+
tryRenderingMillis: 0,
|
|
36
|
+
urlState: {
|
|
37
|
+
url: image.url,
|
|
38
|
+
validity: 'unknown'
|
|
39
|
+
}
|
|
40
|
+
});
|
|
29
41
|
|
|
30
|
-
const
|
|
42
|
+
const mapImageStateToItemState = (index, imageState, autoHandleErrorCount) => {
|
|
43
|
+
var _imageState$urlState, _imageState$urlState2;
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
index,
|
|
47
|
+
url: (_imageState$urlState = imageState.urlState) === null || _imageState$urlState === void 0 ? void 0 : _imageState$urlState.url,
|
|
48
|
+
imageKey: `${imageState.tryRenderingMillis}-${index}`,
|
|
49
|
+
reloadButtonVisible: ((_imageState$urlState2 = imageState.urlState) === null || _imageState$urlState2 === void 0 ? void 0 : _imageState$urlState2.validity) !== 'valid' && imageState.totalErrorCount >= autoHandleErrorCount,
|
|
50
|
+
dimension: imageState.dimension
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const mapIndexed = R.addIndex(R.map);
|
|
55
|
+
const MAXIMUM_WIDTH = 720;
|
|
31
56
|
|
|
32
57
|
function ComicViewer(props) {
|
|
33
58
|
const {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
59
|
+
debounceMillis = 100,
|
|
60
|
+
autoHandleErrorCount = 3,
|
|
61
|
+
fastScrollOptions,
|
|
37
62
|
initialNumToRender = 1,
|
|
63
|
+
initialNumToCreate,
|
|
38
64
|
initialScrollPercentage = 0,
|
|
39
65
|
itemVisiblePercentThreshold = 0,
|
|
66
|
+
intrinsicImages: originalIntrinsicImages,
|
|
67
|
+
maxContentWidth = MAXIMUM_WIDTH,
|
|
68
|
+
onItemPress,
|
|
69
|
+
onScroll,
|
|
40
70
|
onError,
|
|
41
|
-
|
|
71
|
+
onReloadPress,
|
|
72
|
+
viewportWidth,
|
|
73
|
+
invisiblePaddingTop = 0,
|
|
42
74
|
windowSize = 3,
|
|
43
75
|
...otherProps
|
|
44
76
|
} = props;
|
|
77
|
+
const initialCreateCount = initialNumToCreate ? R.min(initialNumToCreate, initialNumToRender) : undefined;
|
|
78
|
+
const initialIntrinsicImages = initialCreateCount ? R.take(initialCreateCount, originalIntrinsicImages) : originalIntrinsicImages;
|
|
79
|
+
const [intrinsicImages, setIntrinsicImages] = (0, _react.useState)(initialIntrinsicImages);
|
|
80
|
+
const fastScrollRef = fastScrollOptions === null || fastScrollOptions === void 0 ? void 0 : fastScrollOptions.ref;
|
|
45
81
|
const flatListRef = (0, _react.useRef)(null);
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
|
|
82
|
+
const actualImageWidth = Math.min(viewportWidth, maxContentWidth);
|
|
83
|
+
const initialImageStates = (0, _react.useMemo)(() => R.map(createInitialImageState, intrinsicImages), []);
|
|
84
|
+
const imageStatesRef = (0, _react.useRef)(initialImageStates);
|
|
85
|
+
const shouldWaitInitialCreate = (0, _react.useRef)(!R.isNil(initialCreateCount));
|
|
86
|
+
|
|
87
|
+
const mapImageStatesToItemStates = imageStates => {
|
|
88
|
+
return imageStates.map((image, index) => mapImageStateToItemState(index, image, autoHandleErrorCount));
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const [itemStates, setItemStates] = (0, _react.useState)(() => {
|
|
92
|
+
return mapImageStatesToItemStates(imageStatesRef.current);
|
|
93
|
+
});
|
|
94
|
+
const renderedDimensions = (0, _react.useMemo)(() => {
|
|
95
|
+
return mapIndexed((intrinsicImage, index) => {
|
|
96
|
+
const height = intrinsicImage.dimension.height * actualImageWidth / intrinsicImage.dimension.width + (index === 0 ? invisiblePaddingTop : 0);
|
|
97
|
+
return {
|
|
98
|
+
width: actualImageWidth,
|
|
99
|
+
height: isNaN(height) ? 0 : height
|
|
100
|
+
};
|
|
101
|
+
}, intrinsicImages);
|
|
102
|
+
}, [actualImageWidth, intrinsicImages]);
|
|
103
|
+
const layoutFromDimensions = (0, _react.useCallback)(() => {
|
|
104
|
+
const itemHeights = R.map(dimension => dimension.height, renderedDimensions);
|
|
105
|
+
const [totalHeight, heightAccum] = getHeightAccum(itemHeights);
|
|
106
|
+
const itemOffsets = R.prepend(0, heightAccum);
|
|
107
|
+
|
|
108
|
+
const getItemLayout = (data, index) => ({
|
|
109
|
+
index,
|
|
110
|
+
length: itemHeights[index],
|
|
111
|
+
offset: itemOffsets[index]
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
totalHeight,
|
|
116
|
+
getItemLayout
|
|
117
|
+
};
|
|
118
|
+
}, [renderedDimensions]);
|
|
119
|
+
const {
|
|
120
|
+
totalHeight,
|
|
121
|
+
getItemLayout
|
|
122
|
+
} = layoutFromDimensions();
|
|
57
123
|
const viewabilityConfig = (0, _react.useMemo)(() => ({
|
|
58
124
|
itemVisiblePercentThreshold
|
|
59
125
|
}), [itemVisiblePercentThreshold]);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
126
|
+
|
|
127
|
+
const updateImageState = updateFunction => {
|
|
128
|
+
const prevImageStates = imageStatesRef.current;
|
|
129
|
+
const newImageStates = prevImageStates.map(updateFunction);
|
|
130
|
+
imageStatesRef.current = newImageStates;
|
|
131
|
+
setItemStates(prevItemStates => {
|
|
132
|
+
const newItemStates = mapImageStatesToItemStates(newImageStates);
|
|
133
|
+
return R.equals(prevItemStates, newItemStates) ? prevItemStates : newItemStates;
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const updateTryRenderingMillis = () => {
|
|
138
|
+
const tryRenderingMillis = new Date().getTime();
|
|
139
|
+
updateImageState((imageState, i) => {
|
|
140
|
+
const urlState = imageState.urlState;
|
|
141
|
+
|
|
142
|
+
if ((urlState === null || urlState === void 0 ? void 0 : urlState.validity) === 'invalid') {
|
|
143
|
+
return { ...imageState,
|
|
144
|
+
tryRenderingMillis
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return imageState;
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
|
|
68
152
|
const onViewableItemsChanged = (0, _react.useRef)(_ref => {
|
|
69
153
|
let {
|
|
70
154
|
viewableItems
|
|
71
155
|
} = _ref;
|
|
72
|
-
|
|
73
|
-
const viewableItemIds = R.map(viewableItem => viewableItem.item.id)(viewableItems);
|
|
74
|
-
return R.map(prevItem => ({ ...prevItem,
|
|
75
|
-
isViewable: R.includes(prevItem.id, viewableItemIds)
|
|
76
|
-
}))([...prev]);
|
|
77
|
-
});
|
|
156
|
+
updateTryRenderingMillis();
|
|
78
157
|
});
|
|
158
|
+
const handleScroll = (0, _react.useCallback)(event => {
|
|
159
|
+
var _fastScrollRef$curren;
|
|
79
160
|
|
|
80
|
-
|
|
81
|
-
|
|
161
|
+
fastScrollRef === null || fastScrollRef === void 0 ? void 0 : (_fastScrollRef$curren = fastScrollRef.current) === null || _fastScrollRef$curren === void 0 ? void 0 : _fastScrollRef$curren.onContentScroll(event);
|
|
162
|
+
onScroll === null || onScroll === void 0 ? void 0 : onScroll(event);
|
|
163
|
+
}, [onScroll]);
|
|
82
164
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
165
|
+
const scrollContentToOffset = offset => {
|
|
166
|
+
var _flatListRef$current;
|
|
86
167
|
|
|
87
|
-
|
|
168
|
+
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 ? void 0 : _flatListRef$current.scrollToOffset({
|
|
169
|
+
offset,
|
|
170
|
+
animated: false
|
|
171
|
+
});
|
|
88
172
|
};
|
|
89
173
|
|
|
90
|
-
const
|
|
91
|
-
|
|
174
|
+
const updateIntrinsicImages = (0, _react.useCallback)(() => {
|
|
175
|
+
const isInitialCreateFinish = R.all(imageState => imageState.urlState.validity !== 'unknown')(imageStatesRef.current);
|
|
92
176
|
|
|
93
|
-
if (
|
|
94
|
-
|
|
177
|
+
if (!isInitialCreateFinish || !shouldWaitInitialCreate.current) {
|
|
178
|
+
return;
|
|
95
179
|
}
|
|
96
180
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
onErrorHandler([...errorsInfo]);
|
|
107
|
-
errors.current.clear();
|
|
108
|
-
}, errorDebounceMillis);
|
|
109
|
-
}, [errorDebounceMillis, errors.current]);
|
|
181
|
+
setIntrinsicImages(originalIntrinsicImages);
|
|
182
|
+
const newImageStates = R.map(createInitialImageState, originalIntrinsicImages);
|
|
183
|
+
imageStatesRef.current = R.map(_ref2 => {
|
|
184
|
+
let [, state] = _ref2;
|
|
185
|
+
return state;
|
|
186
|
+
})(R.toPairs(R.mergeDeepLeft(imageStatesRef.current, newImageStates)));
|
|
187
|
+
setItemStates(mapImageStatesToItemStates(imageStatesRef.current));
|
|
188
|
+
shouldWaitInitialCreate.current = false;
|
|
189
|
+
}, [originalIntrinsicImages, createInitialImageState, mapImageStatesToItemStates]);
|
|
110
190
|
const renderItem = (0, _react.useCallback)(_ref3 => {
|
|
191
|
+
var _renderedDimensions$i, _renderedDimensions$i2;
|
|
192
|
+
|
|
111
193
|
let {
|
|
112
|
-
item
|
|
194
|
+
item,
|
|
195
|
+
index
|
|
113
196
|
} = _ref3;
|
|
114
|
-
|
|
115
|
-
|
|
197
|
+
|
|
198
|
+
const handleError = () => {
|
|
199
|
+
onError && onError();
|
|
200
|
+
updateImageState((imageState, i) => {
|
|
201
|
+
const urlState = imageState.urlState;
|
|
202
|
+
|
|
203
|
+
if (i === index) {
|
|
204
|
+
return { ...imageState,
|
|
205
|
+
totalErrorCount: imageState.totalErrorCount + 1,
|
|
206
|
+
urlState: { ...urlState,
|
|
207
|
+
validity: 'invalid'
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return imageState;
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
if (item.reloadButtonVisible) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
updateIntrinsicImages();
|
|
220
|
+
updateTryRenderingMillis();
|
|
116
221
|
};
|
|
117
|
-
return /*#__PURE__*/_react.default.createElement(_ViewerItem.default, {
|
|
118
|
-
props: props
|
|
119
|
-
});
|
|
120
|
-
}, []);
|
|
121
|
-
(0, _react.useEffect)(() => {
|
|
122
|
-
setItems(prev => {
|
|
123
|
-
return R.map(prevItem => {
|
|
124
|
-
const currentData = R.find(currentItemData => prevItem.id === currentItemData.id)(data);
|
|
125
222
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
223
|
+
const handleReloadPress = () => {
|
|
224
|
+
onReloadPress && onReloadPress();
|
|
225
|
+
updateTryRenderingMillis();
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
const onLoad = () => {
|
|
229
|
+
updateImageState((imageState, i) => {
|
|
230
|
+
const urlState = imageState.urlState;
|
|
231
|
+
|
|
232
|
+
if (i === index && urlState !== undefined) {
|
|
233
|
+
return { ...imageState,
|
|
234
|
+
urlState: { ...urlState,
|
|
235
|
+
validity: 'valid'
|
|
236
|
+
}
|
|
129
237
|
};
|
|
130
238
|
}
|
|
131
239
|
|
|
132
|
-
return
|
|
133
|
-
})
|
|
240
|
+
return imageState;
|
|
241
|
+
});
|
|
242
|
+
updateIntrinsicImages();
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
return /*#__PURE__*/_react.default.createElement(_ViewerItem.default, {
|
|
246
|
+
onError: handleError,
|
|
247
|
+
onLoad: onLoad,
|
|
248
|
+
onPress: onItemPress,
|
|
249
|
+
onReloadPress: handleReloadPress,
|
|
250
|
+
url: item.url,
|
|
251
|
+
imageKey: item.imageKey,
|
|
252
|
+
invisiblePaddingTop: index === 0 ? invisiblePaddingTop : 0,
|
|
253
|
+
width: ((_renderedDimensions$i = renderedDimensions[index]) === null || _renderedDimensions$i === void 0 ? void 0 : _renderedDimensions$i.width) ?? 0,
|
|
254
|
+
height: ((_renderedDimensions$i2 = renderedDimensions[index]) === null || _renderedDimensions$i2 === void 0 ? void 0 : _renderedDimensions$i2.height) ?? 0,
|
|
255
|
+
reloadButtonVisible: item.reloadButtonVisible
|
|
134
256
|
});
|
|
135
|
-
}, [
|
|
257
|
+
}, [onItemPress, renderedDimensions, updateIntrinsicImages]);
|
|
136
258
|
(0, _react.useEffect)(() => {
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
height: item.height * viewerWidth / item.width
|
|
140
|
-
}))(items);
|
|
141
|
-
setItems(newItems);
|
|
142
|
-
}, [viewerWidth]);
|
|
143
|
-
(0, _react.useEffect)(() => {
|
|
144
|
-
const totalHeight = itemHeightAccum[0];
|
|
145
|
-
const offset = Math.floor(initialScrollPercentage / 100 * totalHeight);
|
|
259
|
+
const scroll = () => {
|
|
260
|
+
const offset = Math.floor(initialScrollPercentage / 100 * totalHeight);
|
|
146
261
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
262
|
+
if (flatListRef.current) {
|
|
263
|
+
flatListRef.current.scrollToOffset({
|
|
264
|
+
offset,
|
|
265
|
+
animated: false
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
let timeoutId = undefined;
|
|
271
|
+
/**
|
|
272
|
+
* @FIXME
|
|
273
|
+
* scrollToOffset has issue(no effect) in useEffect hook on iOS.
|
|
274
|
+
* ref: https://github.com/facebook/react-native/issues/35575
|
|
275
|
+
*/
|
|
276
|
+
|
|
277
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
278
|
+
timeoutId = setTimeout(scroll, 0);
|
|
279
|
+
} else {
|
|
280
|
+
scroll();
|
|
152
281
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
282
|
+
|
|
283
|
+
return () => {
|
|
284
|
+
timeoutId && clearTimeout(timeoutId);
|
|
285
|
+
};
|
|
286
|
+
}, []);
|
|
287
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.FlatList, _extends({
|
|
288
|
+
data: itemStates,
|
|
156
289
|
getItemLayout: getItemLayout,
|
|
157
290
|
initialNumToRender: initialNumToRender,
|
|
158
291
|
keyExtractor: keyExtractor,
|
|
@@ -160,8 +293,13 @@ function ComicViewer(props) {
|
|
|
160
293
|
ref: flatListRef,
|
|
161
294
|
renderItem: renderItem,
|
|
162
295
|
viewabilityConfig: viewabilityConfig,
|
|
163
|
-
windowSize: windowSize
|
|
164
|
-
|
|
296
|
+
windowSize: windowSize,
|
|
297
|
+
onScroll: handleScroll
|
|
298
|
+
}, otherProps)), /*#__PURE__*/_react.default.createElement(_FastScroll.default, _extends({}, fastScrollOptions, {
|
|
299
|
+
contentLength: totalHeight,
|
|
300
|
+
initialScrollPercentage: initialScrollPercentage,
|
|
301
|
+
scrollContentToOffset: scrollContentToOffset
|
|
302
|
+
})));
|
|
165
303
|
}
|
|
166
304
|
|
|
167
305
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getItemHeights","items","R","map","content","height","appender","left","right","getHeightAccum","itemHeights","mapAccum","keyExtractor","item","id","ComicViewer","props","data","errorDebounceMillis","errorRetryCount","initialNumToRender","initialScrollPercentage","itemVisiblePercentThreshold","onError","viewerWidth","windowSize","otherProps","flatListRef","useRef","errors","Map","debounceTimeOut","resourceString","toString","itemData","sourceUrl","initialItems","isViewable","width","setItems","useState","itemHeightAccum","viewabilityConfig","useMemo","getItemLayout","useCallback","index","offsets","prepend","length","offset","onViewableItemsChanged","viewableItems","prev","viewableItemIds","viewableItem","prevItem","includes","onErrorHandler","isRetryLimited","any","error","count","itemErrorHandler","errorInfo","current","set","clearTimeout","setTimeout","errorsArray","Array","from","entries","errorsInfo","key","value","clear","renderItem","useEffect","currentData","find","currentItemData","newItems","totalHeight","Math","floor","scrollToOffset","animated"],"sources":["ComicViewer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FlatList, ListRenderItem, ViewToken } from 'react-native';\nimport * as R from 'ramda';\nimport { ComicViewerItemData, default as ComicViewerProps, ErrorInfo } from './ComicViewerProps';\nimport type ComicViewerItemProps from './ComicViewerItemProps';\nimport ViewerItem from './ViewerItem';\n\nconst getItemHeights = <T, >(items: ComicViewerItemProps<T>[]): number[] => R.map((content: ComicViewerItemProps<T>) => content.height)(items);\nconst appender = (left: number, right: number): [number, number] => [left + right, left + right];\nconst getHeightAccum = (itemHeights: number[]): [number, number[]] => R.mapAccum(appender, 0, itemHeights);\n\nconst keyExtractor = <T, >(item: ComicViewerItemProps<T>) => item.id;\n\nexport default function ComicViewer<T>(props: ComicViewerProps<T>) {\n const {\n data,\n errorDebounceMillis = 500,\n errorRetryCount = 3,\n initialNumToRender = 1,\n initialScrollPercentage = 0,\n itemVisiblePercentThreshold = 0,\n onError,\n viewerWidth,\n windowSize = 3,\n ...otherProps\n } = props;\n\n const flatListRef = useRef<FlatList>(null);\n\n const errors = useRef<Map<string, number>>(new Map());\n const debounceTimeOut = useRef<NodeJS.Timeout | null>(null);\n\n const resourceString = R.toString(R.map((itemData: ComicViewerItemData) => itemData.sourceUrl)(data));\n\n const initialItems = R.map((itemData: ComicViewerItemData<T>) => ({\n ...itemData,\n isViewable: false,\n width: viewerWidth,\n height: (itemData.height * viewerWidth) / itemData.width,\n }))(data);\n\n const [items, setItems] = useState<ComicViewerItemProps<T>[]>(initialItems);\n\n const itemHeights = getItemHeights(items);\n const itemHeightAccum = getHeightAccum(itemHeights);\n\n const viewabilityConfig = useMemo(() => ({\n itemVisiblePercentThreshold,\n }), [itemVisiblePercentThreshold]);\n\n const getItemLayout = useCallback((data: any, index: number) => {\n const offsets = R.prepend(0, itemHeightAccum[1]);\n\n return {\n length: itemHeights[index],\n offset: offsets[index],\n index,\n };\n }, [itemHeights]);\n\n const onViewableItemsChanged = useRef(({ viewableItems }: {\n viewableItems: Array<ViewToken>,\n }) => {\n setItems((prev: ComicViewerItemProps<T>[]) => {\n const viewableItemIds = R.map((viewableItem: ViewToken) => viewableItem.item.id)(viewableItems);\n\n return R.map((prevItem: ComicViewerItemProps<T>) => ({\n ...prevItem,\n isViewable: R.includes(prevItem.id, viewableItemIds),\n }))([...prev]);\n });\n });\n\n const onErrorHandler = (errors: ErrorInfo[]) => {\n const isRetryLimited = R.any((error: ErrorInfo) => error.count >= errorRetryCount)(errors);\n\n if (isRetryLimited) {\n return;\n }\n\n onError && onError(errors);\n };\n\n const itemErrorHandler = useCallback((errorInfo: ErrorInfo) => {\n errors.current.set(errorInfo.id, errorInfo.count);\n\n if (debounceTimeOut.current) {\n clearTimeout(debounceTimeOut.current);\n }\n\n debounceTimeOut.current = setTimeout(function () {\n const errorsArray = Array.from(errors.current.entries());\n const errorsInfo = R.map(([key, value]: [string, number]) => ({\n id: key,\n count: value,\n }))(errorsArray);\n\n onErrorHandler([...errorsInfo]);\n errors.current.clear();\n }, errorDebounceMillis);\n }, [errorDebounceMillis, errors.current]);\n\n const renderItem: ListRenderItem<ComicViewerItemProps<T>> = useCallback(({ item }) => {\n const props = {\n ...item,\n onError: itemErrorHandler,\n };\n\n return <ViewerItem props={props}/>;\n }, []);\n\n useEffect(() => {\n setItems((prev: ComicViewerItemProps<T>[]) => {\n return R.map((prevItem: ComicViewerItemProps<T>) => {\n const currentData = R.find((currentItemData: ComicViewerItemData<T>) => prevItem.id === currentItemData.id)(data);\n\n if (currentData && (currentData.sourceUrl !== prevItem.sourceUrl)) {\n return {\n ...prevItem,\n sourceUrl: currentData.sourceUrl,\n };\n }\n\n return prevItem;\n })([...prev]);\n });\n }, [resourceString]);\n\n useEffect(() => {\n const newItems = R.map((item: ComicViewerItemProps<T>) => ({\n ...item,\n width: viewerWidth,\n height: (item.height * viewerWidth) / item.width,\n }))(items);\n\n setItems(newItems);\n }, [viewerWidth]);\n\n useEffect(() => {\n const totalHeight = itemHeightAccum[0];\n const offset = Math.floor((initialScrollPercentage / 100) * totalHeight);\n\n if (flatListRef.current) {\n flatListRef.current.scrollToOffset({ offset, animated: false });\n }\n }, [flatListRef.current]);\n\n return (\n <FlatList\n data={items}\n getItemLayout={getItemLayout}\n initialNumToRender={initialNumToRender}\n keyExtractor={keyExtractor}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={flatListRef}\n renderItem={renderItem}\n viewabilityConfig={viewabilityConfig}\n windowSize={windowSize}\n {...otherProps}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["appender","left","right","getHeightAccum","heights","R","mapAccum","keyExtractor","item","String","index","createInitialImageState","image","totalErrorCount","dimension","tryRenderingMillis","urlState","url","validity","mapImageStateToItemState","imageState","autoHandleErrorCount","imageKey","reloadButtonVisible","mapIndexed","addIndex","map","MAXIMUM_WIDTH","ComicViewer","props","debounceMillis","fastScrollOptions","initialNumToRender","initialNumToCreate","initialScrollPercentage","itemVisiblePercentThreshold","intrinsicImages","originalIntrinsicImages","maxContentWidth","onItemPress","onScroll","onError","onReloadPress","viewportWidth","invisiblePaddingTop","windowSize","otherProps","initialCreateCount","min","undefined","initialIntrinsicImages","take","setIntrinsicImages","useState","fastScrollRef","ref","flatListRef","useRef","actualImageWidth","Math","initialImageStates","useMemo","imageStatesRef","shouldWaitInitialCreate","isNil","mapImageStatesToItemStates","imageStates","itemStates","setItemStates","current","renderedDimensions","intrinsicImage","height","width","isNaN","layoutFromDimensions","useCallback","itemHeights","totalHeight","heightAccum","itemOffsets","prepend","getItemLayout","data","length","offset","viewabilityConfig","updateImageState","updateFunction","prevImageStates","newImageStates","prevItemStates","newItemStates","equals","updateTryRenderingMillis","Date","getTime","i","onViewableItemsChanged","viewableItems","handleScroll","event","onContentScroll","scrollContentToOffset","scrollToOffset","animated","updateIntrinsicImages","isInitialCreateFinish","all","state","toPairs","mergeDeepLeft","renderItem","handleError","handleReloadPress","onLoad","useEffect","scroll","floor","timeoutId","Platform","OS","setTimeout","clearTimeout"],"sources":["ComicViewer.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { FlatList, ListRenderItem, NativeScrollEvent, NativeSyntheticEvent, Platform, ViewToken } from 'react-native';\nimport * as R from 'ramda';\nimport { default as ComicViewerProps, Dimension, IntrinsicImage } from './ComicViewerProps';\nimport ViewerItem from './ViewerItem';\nimport FastScroll from './FastScroll';\n\nconst appender = (left: number, right: number): [number, number] => [left + right, left + right];\nconst getHeightAccum = (heights: number[]): [number, number[]] => R.mapAccum(appender, 0, heights);\n\nconst keyExtractor = <T, >(item: ItemState) => String(item.index);\n\ninterface UrlState {\n url: string;\n validity: 'valid' | 'invalid' | 'unknown';\n}\n\ninterface ImageState {\n urlState: UrlState;\n totalErrorCount: number;\n dimension: Dimension;\n tryRenderingMillis: number;\n}\n\ninterface ItemState {\n index: number;\n url?: string;\n imageKey: string;\n reloadButtonVisible: boolean;\n dimension: Dimension;\n}\n\nconst createInitialImageState = (image: IntrinsicImage): ImageState => ({\n totalErrorCount: 0,\n dimension: image.dimension,\n tryRenderingMillis: 0,\n urlState: {\n url: image.url,\n validity: 'unknown',\n },\n});\n\nconst mapImageStateToItemState = (\n index: number,\n imageState: ImageState,\n autoHandleErrorCount: number,\n): ItemState => ({\n index,\n url: imageState.urlState?.url,\n imageKey: `${imageState.tryRenderingMillis}-${index}`,\n reloadButtonVisible: (imageState.urlState?.validity !== 'valid') && imageState.totalErrorCount >= autoHandleErrorCount,\n dimension: imageState.dimension,\n});\n\nconst mapIndexed = R.addIndex<IntrinsicImage>(R.map);\n\nconst MAXIMUM_WIDTH = 720;\n\nexport default function ComicViewer(props: ComicViewerProps) {\n const {\n debounceMillis = 100,\n autoHandleErrorCount = 3,\n fastScrollOptions,\n initialNumToRender = 1,\n initialNumToCreate,\n initialScrollPercentage = 0,\n itemVisiblePercentThreshold = 0,\n intrinsicImages: originalIntrinsicImages,\n maxContentWidth = MAXIMUM_WIDTH,\n onItemPress,\n onScroll,\n onError,\n onReloadPress,\n viewportWidth,\n invisiblePaddingTop = 0,\n windowSize = 3,\n ...otherProps\n } = props;\n\n const initialCreateCount = initialNumToCreate ? R.min(initialNumToCreate, initialNumToRender) : undefined;\n const initialIntrinsicImages = initialCreateCount ? R.take(initialCreateCount, originalIntrinsicImages) : originalIntrinsicImages;\n const [intrinsicImages, setIntrinsicImages] = useState(initialIntrinsicImages);\n\n const fastScrollRef = fastScrollOptions?.ref;\n\n const flatListRef = useRef<FlatList>(null);\n\n const actualImageWidth = Math.min(viewportWidth, maxContentWidth);\n\n const initialImageStates = useMemo<Array<ImageState>>(() => R.map(createInitialImageState, intrinsicImages), []);\n\n const imageStatesRef = useRef<Array<ImageState>>(initialImageStates);\n\n const shouldWaitInitialCreate = useRef<Boolean>(!R.isNil(initialCreateCount));\n\n const mapImageStatesToItemStates = (imageStates: Array<ImageState>): Array<ItemState> => {\n return imageStates.map((image, index) => mapImageStateToItemState(\n index, image, autoHandleErrorCount,\n ));\n };\n\n const [itemStates, setItemStates] = useState<Array<ItemState>>(() => {\n return mapImageStatesToItemStates(imageStatesRef.current);\n });\n\n const renderedDimensions = useMemo<Array<Dimension>>(() => {\n return mapIndexed((intrinsicImage, index) => {\n const height = (intrinsicImage.dimension.height * actualImageWidth) / intrinsicImage.dimension.width + (index === 0 ? invisiblePaddingTop : 0);\n\n return {\n width: actualImageWidth,\n height: isNaN(height) ? 0 : height,\n };\n }, intrinsicImages);\n }, [actualImageWidth, intrinsicImages]);\n\n const layoutFromDimensions = useCallback(() => {\n const itemHeights = R.map(dimension => dimension.height, renderedDimensions);\n const [totalHeight, heightAccum] = getHeightAccum(itemHeights);\n const itemOffsets = R.prepend(0, heightAccum);\n\n const getItemLayout = (data: any, index: number) => ({\n index,\n length: itemHeights[index],\n offset: itemOffsets[index],\n });\n\n return {\n totalHeight,\n getItemLayout,\n };\n }, [renderedDimensions]);\n\n const { totalHeight, getItemLayout } = layoutFromDimensions();\n\n const viewabilityConfig = useMemo(() => ({\n itemVisiblePercentThreshold,\n }), [itemVisiblePercentThreshold]);\n\n const updateImageState = (updateFunction: (prev: ImageState, index: number) => ImageState) => {\n const prevImageStates = imageStatesRef.current;\n const newImageStates = prevImageStates.map(updateFunction);\n\n imageStatesRef.current = newImageStates;\n\n setItemStates(prevItemStates => {\n const newItemStates = mapImageStatesToItemStates(newImageStates);\n\n return R.equals(prevItemStates, newItemStates) ? prevItemStates : newItemStates;\n });\n };\n\n const updateTryRenderingMillis = () => {\n const tryRenderingMillis = new Date().getTime();\n\n updateImageState((imageState, i) => {\n const urlState = imageState.urlState;\n\n if (urlState?.validity === 'invalid') {\n return {\n ...imageState,\n tryRenderingMillis,\n };\n }\n\n return imageState;\n });\n };\n const onViewableItemsChanged = useRef(({ viewableItems }: { viewableItems: Array<ViewToken> }) => {\n updateTryRenderingMillis();\n });\n\n const handleScroll = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => {\n fastScrollRef?.current?.onContentScroll(event);\n\n onScroll?.(event);\n }, [onScroll]);\n\n const scrollContentToOffset = (offset: number) => {\n flatListRef.current?.scrollToOffset({\n offset,\n animated: false,\n });\n };\n\n const updateIntrinsicImages = useCallback(() => {\n const isInitialCreateFinish = R.all((imageState: ImageState) => imageState.urlState.validity !== 'unknown')(imageStatesRef.current);\n\n if (!isInitialCreateFinish || !shouldWaitInitialCreate.current) {\n return;\n }\n\n setIntrinsicImages(originalIntrinsicImages);\n const newImageStates = R.map(createInitialImageState, originalIntrinsicImages);\n imageStatesRef.current = R.map(([, state]: [number, ImageState]) => state)(R.toPairs(R.mergeDeepLeft(imageStatesRef.current, newImageStates)));\n setItemStates(mapImageStatesToItemStates(imageStatesRef.current));\n\n shouldWaitInitialCreate.current = false;\n }, [originalIntrinsicImages, createInitialImageState, mapImageStatesToItemStates]);\n\n const renderItem: ListRenderItem<ItemState> = useCallback(({ item, index }) => {\n const handleError = () => {\n onError && onError();\n\n updateImageState((imageState, i) => {\n const urlState = imageState.urlState;\n\n if (i === index) {\n return {\n ...imageState,\n totalErrorCount: imageState.totalErrorCount + 1,\n urlState: {\n ...urlState,\n validity: 'invalid',\n },\n };\n }\n\n return imageState;\n });\n\n if (item.reloadButtonVisible) {\n return;\n }\n\n updateIntrinsicImages();\n\n updateTryRenderingMillis();\n };\n\n const handleReloadPress = () => {\n onReloadPress && onReloadPress();\n\n updateTryRenderingMillis();\n };\n\n const onLoad = () => {\n updateImageState((imageState, i) => {\n const urlState = imageState.urlState;\n\n if (i === index && urlState !== undefined) {\n return {\n ...imageState,\n urlState: {\n ...urlState,\n validity: 'valid',\n },\n };\n }\n\n return imageState;\n });\n\n updateIntrinsicImages();\n };\n\n return (\n <ViewerItem\n onError={handleError}\n onLoad={onLoad}\n onPress={onItemPress}\n onReloadPress={handleReloadPress}\n url={item.url}\n imageKey={item.imageKey}\n invisiblePaddingTop={index === 0 ? invisiblePaddingTop : 0}\n width={renderedDimensions[index]?.width ?? 0}\n height={renderedDimensions[index]?.height ?? 0}\n reloadButtonVisible={item.reloadButtonVisible}\n />\n );\n }, [onItemPress, renderedDimensions, updateIntrinsicImages]);\n\n useEffect(() => {\n const scroll = () => {\n const offset = Math.floor((initialScrollPercentage / 100) * totalHeight);\n\n if (flatListRef.current) {\n flatListRef.current.scrollToOffset({ offset, animated: false });\n }\n };\n\n let timeoutId: NodeJS.Timeout | undefined = undefined;\n\n /**\n * @FIXME\n * scrollToOffset has issue(no effect) in useEffect hook on iOS.\n * ref: https://github.com/facebook/react-native/issues/35575\n */\n if (Platform.OS === 'ios') {\n timeoutId = setTimeout(scroll, 0);\n } else {\n scroll();\n }\n\n return () => {\n timeoutId && clearTimeout(timeoutId);\n };\n }, []);\n\n return (\n <React.Fragment>\n <FlatList\n data={itemStates}\n getItemLayout={getItemLayout}\n initialNumToRender={initialNumToRender}\n keyExtractor={keyExtractor}\n onViewableItemsChanged={onViewableItemsChanged.current}\n ref={flatListRef}\n renderItem={renderItem}\n viewabilityConfig={viewabilityConfig}\n windowSize={windowSize}\n onScroll={handleScroll}\n {...otherProps}\n />\n\n <FastScroll\n {...fastScrollOptions}\n contentLength={totalHeight}\n initialScrollPercentage={initialScrollPercentage}\n scrollContentToOffset={scrollContentToOffset}\n />\n </React.Fragment>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;AAEA,MAAMA,QAAQ,GAAG,CAACC,IAAD,EAAeC,KAAf,KAAmD,CAACD,IAAI,GAAGC,KAAR,EAAeD,IAAI,GAAGC,KAAtB,CAApE;;AACA,MAAMC,cAAc,GAAIC,OAAD,IAA2CC,CAAC,CAACC,QAAF,CAAWN,QAAX,EAAqB,CAArB,EAAwBI,OAAxB,CAAlE;;AAEA,MAAMG,YAAY,GAASC,IAAN,IAA0BC,MAAM,CAACD,IAAI,CAACE,KAAN,CAArD;;AAsBA,MAAMC,uBAAuB,GAAIC,KAAD,KAAwC;EACpEC,eAAe,EAAE,CADmD;EAEpEC,SAAS,EAAEF,KAAK,CAACE,SAFmD;EAGpEC,kBAAkB,EAAE,CAHgD;EAIpEC,QAAQ,EAAE;IACNC,GAAG,EAAEL,KAAK,CAACK,GADL;IAENC,QAAQ,EAAE;EAFJ;AAJ0D,CAAxC,CAAhC;;AAUA,MAAMC,wBAAwB,GAAG,CAC7BT,KAD6B,EAE7BU,UAF6B,EAG7BC,oBAH6B;EAAA;;EAAA,OAIhB;IACbX,KADa;IAEbO,GAAG,0BAAEG,UAAU,CAACJ,QAAb,yDAAE,qBAAqBC,GAFb;IAGbK,QAAQ,EAAG,GAAEF,UAAU,CAACL,kBAAmB,IAAGL,KAAM,EAHvC;IAIba,mBAAmB,EAAG,0BAAAH,UAAU,CAACJ,QAAX,gFAAqBE,QAArB,MAAkC,OAAnC,IAA+CE,UAAU,CAACP,eAAX,IAA8BQ,oBAJrF;IAKbP,SAAS,EAAEM,UAAU,CAACN;EALT,CAJgB;AAAA,CAAjC;;AAYA,MAAMU,UAAU,GAAGnB,CAAC,CAACoB,QAAF,CAA2BpB,CAAC,CAACqB,GAA7B,CAAnB;AAEA,MAAMC,aAAa,GAAG,GAAtB;;AAEe,SAASC,WAAT,CAAqBC,KAArB,EAA8C;EACzD,MAAM;IACFC,cAAc,GAAG,GADf;IAEFT,oBAAoB,GAAG,CAFrB;IAGFU,iBAHE;IAIFC,kBAAkB,GAAG,CAJnB;IAKFC,kBALE;IAMFC,uBAAuB,GAAG,CANxB;IAOFC,2BAA2B,GAAG,CAP5B;IAQFC,eAAe,EAAEC,uBARf;IASFC,eAAe,GAAGX,aAThB;IAUFY,WAVE;IAWFC,QAXE;IAYFC,OAZE;IAaFC,aAbE;IAcFC,aAdE;IAeFC,mBAAmB,GAAG,CAfpB;IAgBFC,UAAU,GAAG,CAhBX;IAiBF,GAAGC;EAjBD,IAkBFjB,KAlBJ;EAoBA,MAAMkB,kBAAkB,GAAGd,kBAAkB,GAAG5B,CAAC,CAAC2C,GAAF,CAAMf,kBAAN,EAA0BD,kBAA1B,CAAH,GAAmDiB,SAAhG;EACA,MAAMC,sBAAsB,GAAGH,kBAAkB,GAAG1C,CAAC,CAAC8C,IAAF,CAAOJ,kBAAP,EAA2BV,uBAA3B,CAAH,GAAyDA,uBAA1G;EACA,MAAM,CAACD,eAAD,EAAkBgB,kBAAlB,IAAwC,IAAAC,eAAA,EAASH,sBAAT,CAA9C;EAEA,MAAMI,aAAa,GAAGvB,iBAAH,aAAGA,iBAAH,uBAAGA,iBAAiB,CAAEwB,GAAzC;EAEA,MAAMC,WAAW,GAAG,IAAAC,aAAA,EAAiB,IAAjB,CAApB;EAEA,MAAMC,gBAAgB,GAAGC,IAAI,CAACX,GAAL,CAASL,aAAT,EAAwBL,eAAxB,CAAzB;EAEA,MAAMsB,kBAAkB,GAAG,IAAAC,cAAA,EAA2B,MAAMxD,CAAC,CAACqB,GAAF,CAAMf,uBAAN,EAA+ByB,eAA/B,CAAjC,EAAkF,EAAlF,CAA3B;EAEA,MAAM0B,cAAc,GAAG,IAAAL,aAAA,EAA0BG,kBAA1B,CAAvB;EAEA,MAAMG,uBAAuB,GAAG,IAAAN,aAAA,EAAgB,CAACpD,CAAC,CAAC2D,KAAF,CAAQjB,kBAAR,CAAjB,CAAhC;;EAEA,MAAMkB,0BAA0B,GAAIC,WAAD,IAAsD;IACrF,OAAOA,WAAW,CAACxC,GAAZ,CAAgB,CAACd,KAAD,EAAQF,KAAR,KAAkBS,wBAAwB,CAC7DT,KAD6D,EACtDE,KADsD,EAC/CS,oBAD+C,CAA1D,CAAP;EAGH,CAJD;;EAMA,MAAM,CAAC8C,UAAD,EAAaC,aAAb,IAA8B,IAAAf,eAAA,EAA2B,MAAM;IACjE,OAAOY,0BAA0B,CAACH,cAAc,CAACO,OAAhB,CAAjC;EACH,CAFmC,CAApC;EAIA,MAAMC,kBAAkB,GAAG,IAAAT,cAAA,EAA0B,MAAM;IACvD,OAAOrC,UAAU,CAAC,CAAC+C,cAAD,EAAiB7D,KAAjB,KAA2B;MACzC,MAAM8D,MAAM,GAAID,cAAc,CAACzD,SAAf,CAAyB0D,MAAzB,GAAkCd,gBAAnC,GAAuDa,cAAc,CAACzD,SAAf,CAAyB2D,KAAhF,IAAyF/D,KAAK,KAAK,CAAV,GAAckC,mBAAd,GAAoC,CAA7H,CAAf;MAEA,OAAO;QACH6B,KAAK,EAAEf,gBADJ;QAEHc,MAAM,EAAEE,KAAK,CAACF,MAAD,CAAL,GAAgB,CAAhB,GAAoBA;MAFzB,CAAP;IAIH,CAPgB,EAOdpC,eAPc,CAAjB;EAQH,CAT0B,EASxB,CAACsB,gBAAD,EAAmBtB,eAAnB,CATwB,CAA3B;EAWA,MAAMuC,oBAAoB,GAAG,IAAAC,kBAAA,EAAY,MAAM;IAC3C,MAAMC,WAAW,GAAGxE,CAAC,CAACqB,GAAF,CAAMZ,SAAS,IAAIA,SAAS,CAAC0D,MAA7B,EAAqCF,kBAArC,CAApB;IACA,MAAM,CAACQ,WAAD,EAAcC,WAAd,IAA6B5E,cAAc,CAAC0E,WAAD,CAAjD;IACA,MAAMG,WAAW,GAAG3E,CAAC,CAAC4E,OAAF,CAAU,CAAV,EAAaF,WAAb,CAApB;;IAEA,MAAMG,aAAa,GAAG,CAACC,IAAD,EAAYzE,KAAZ,MAA+B;MACjDA,KADiD;MAEjD0E,MAAM,EAAEP,WAAW,CAACnE,KAAD,CAF8B;MAGjD2E,MAAM,EAAEL,WAAW,CAACtE,KAAD;IAH8B,CAA/B,CAAtB;;IAMA,OAAO;MACHoE,WADG;MAEHI;IAFG,CAAP;EAIH,CAf4B,EAe1B,CAACZ,kBAAD,CAf0B,CAA7B;EAiBA,MAAM;IAAEQ,WAAF;IAAeI;EAAf,IAAiCP,oBAAoB,EAA3D;EAEA,MAAMW,iBAAiB,GAAG,IAAAzB,cAAA,EAAQ,OAAO;IACrC1B;EADqC,CAAP,CAAR,EAEtB,CAACA,2BAAD,CAFsB,CAA1B;;EAIA,MAAMoD,gBAAgB,GAAIC,cAAD,IAAqE;IAC1F,MAAMC,eAAe,GAAG3B,cAAc,CAACO,OAAvC;IACA,MAAMqB,cAAc,GAAGD,eAAe,CAAC/D,GAAhB,CAAoB8D,cAApB,CAAvB;IAEA1B,cAAc,CAACO,OAAf,GAAyBqB,cAAzB;IAEAtB,aAAa,CAACuB,cAAc,IAAI;MAC5B,MAAMC,aAAa,GAAG3B,0BAA0B,CAACyB,cAAD,CAAhD;MAEA,OAAOrF,CAAC,CAACwF,MAAF,CAASF,cAAT,EAAyBC,aAAzB,IAA0CD,cAA1C,GAA2DC,aAAlE;IACH,CAJY,CAAb;EAKH,CAXD;;EAaA,MAAME,wBAAwB,GAAG,MAAM;IACnC,MAAM/E,kBAAkB,GAAG,IAAIgF,IAAJ,GAAWC,OAAX,EAA3B;IAEAT,gBAAgB,CAAC,CAACnE,UAAD,EAAa6E,CAAb,KAAmB;MAChC,MAAMjF,QAAQ,GAAGI,UAAU,CAACJ,QAA5B;;MAEA,IAAI,CAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEE,QAAV,MAAuB,SAA3B,EAAsC;QAClC,OAAO,EACH,GAAGE,UADA;UAEHL;QAFG,CAAP;MAIH;;MAED,OAAOK,UAAP;IACH,CAXe,CAAhB;EAYH,CAfD;;EAgBA,MAAM8E,sBAAsB,GAAG,IAAAzC,aAAA,EAAO,QAA4D;IAAA,IAA3D;MAAE0C;IAAF,CAA2D;IAC9FL,wBAAwB;EAC3B,CAF8B,CAA/B;EAIA,MAAMM,YAAY,GAAG,IAAAxB,kBAAA,EAAayB,KAAD,IAAoD;IAAA;;IACjF/C,aAAa,SAAb,IAAAA,aAAa,WAAb,qCAAAA,aAAa,CAAEe,OAAf,gFAAwBiC,eAAxB,CAAwCD,KAAxC;IAEA7D,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAG6D,KAAH,CAAR;EACH,CAJoB,EAIlB,CAAC7D,QAAD,CAJkB,CAArB;;EAMA,MAAM+D,qBAAqB,GAAIlB,MAAD,IAAoB;IAAA;;IAC9C,wBAAA7B,WAAW,CAACa,OAAZ,8EAAqBmC,cAArB,CAAoC;MAChCnB,MADgC;MAEhCoB,QAAQ,EAAE;IAFsB,CAApC;EAIH,CALD;;EAOA,MAAMC,qBAAqB,GAAG,IAAA9B,kBAAA,EAAY,MAAM;IAC5C,MAAM+B,qBAAqB,GAAGtG,CAAC,CAACuG,GAAF,CAAOxF,UAAD,IAA4BA,UAAU,CAACJ,QAAX,CAAoBE,QAApB,KAAiC,SAAnE,EAA8E4C,cAAc,CAACO,OAA7F,CAA9B;;IAEA,IAAI,CAACsC,qBAAD,IAA0B,CAAC5C,uBAAuB,CAACM,OAAvD,EAAgE;MAC5D;IACH;;IAEDjB,kBAAkB,CAACf,uBAAD,CAAlB;IACA,MAAMqD,cAAc,GAAGrF,CAAC,CAACqB,GAAF,CAAMf,uBAAN,EAA+B0B,uBAA/B,CAAvB;IACAyB,cAAc,CAACO,OAAf,GAAyBhE,CAAC,CAACqB,GAAF,CAAM;MAAA,IAAC,GAAGmF,KAAH,CAAD;MAAA,OAAqCA,KAArC;IAAA,CAAN,EAAkDxG,CAAC,CAACyG,OAAF,CAAUzG,CAAC,CAAC0G,aAAF,CAAgBjD,cAAc,CAACO,OAA/B,EAAwCqB,cAAxC,CAAV,CAAlD,CAAzB;IACAtB,aAAa,CAACH,0BAA0B,CAACH,cAAc,CAACO,OAAhB,CAA3B,CAAb;IAEAN,uBAAuB,CAACM,OAAxB,GAAkC,KAAlC;EACH,CAb6B,EAa3B,CAAChC,uBAAD,EAA0B1B,uBAA1B,EAAmDsD,0BAAnD,CAb2B,CAA9B;EAeA,MAAM+C,UAAqC,GAAG,IAAApC,kBAAA,EAAY,SAAqB;IAAA;;IAAA,IAApB;MAAEpE,IAAF;MAAQE;IAAR,CAAoB;;IAC3E,MAAMuG,WAAW,GAAG,MAAM;MACtBxE,OAAO,IAAIA,OAAO,EAAlB;MAEA8C,gBAAgB,CAAC,CAACnE,UAAD,EAAa6E,CAAb,KAAmB;QAChC,MAAMjF,QAAQ,GAAGI,UAAU,CAACJ,QAA5B;;QAEA,IAAIiF,CAAC,KAAKvF,KAAV,EAAiB;UACb,OAAO,EACH,GAAGU,UADA;YAEHP,eAAe,EAAEO,UAAU,CAACP,eAAX,GAA6B,CAF3C;YAGHG,QAAQ,EAAE,EACN,GAAGA,QADG;cAENE,QAAQ,EAAE;YAFJ;UAHP,CAAP;QAQH;;QAED,OAAOE,UAAP;MACH,CAfe,CAAhB;;MAiBA,IAAIZ,IAAI,CAACe,mBAAT,EAA8B;QAC1B;MACH;;MAEDmF,qBAAqB;MAErBZ,wBAAwB;IAC3B,CA3BD;;IA6BA,MAAMoB,iBAAiB,GAAG,MAAM;MAC5BxE,aAAa,IAAIA,aAAa,EAA9B;MAEAoD,wBAAwB;IAC3B,CAJD;;IAMA,MAAMqB,MAAM,GAAG,MAAM;MACjB5B,gBAAgB,CAAC,CAACnE,UAAD,EAAa6E,CAAb,KAAmB;QAChC,MAAMjF,QAAQ,GAAGI,UAAU,CAACJ,QAA5B;;QAEA,IAAIiF,CAAC,KAAKvF,KAAN,IAAeM,QAAQ,KAAKiC,SAAhC,EAA2C;UACvC,OAAO,EACH,GAAG7B,UADA;YAEHJ,QAAQ,EAAE,EACN,GAAGA,QADG;cAENE,QAAQ,EAAE;YAFJ;UAFP,CAAP;QAOH;;QAED,OAAOE,UAAP;MACH,CAde,CAAhB;MAgBAsF,qBAAqB;IACxB,CAlBD;;IAoBA,oBACI,6BAAC,mBAAD;MACI,OAAO,EAAEO,WADb;MAEI,MAAM,EAAEE,MAFZ;MAGI,OAAO,EAAE5E,WAHb;MAII,aAAa,EAAE2E,iBAJnB;MAKI,GAAG,EAAE1G,IAAI,CAACS,GALd;MAMI,QAAQ,EAAET,IAAI,CAACc,QANnB;MAOI,mBAAmB,EAAEZ,KAAK,KAAK,CAAV,GAAckC,mBAAd,GAAoC,CAP7D;MAQI,KAAK,EAAE,0BAAA0B,kBAAkB,CAAC5D,KAAD,CAAlB,gFAA2B+D,KAA3B,KAAoC,CAR/C;MASI,MAAM,EAAE,2BAAAH,kBAAkB,CAAC5D,KAAD,CAAlB,kFAA2B8D,MAA3B,KAAqC,CATjD;MAUI,mBAAmB,EAAEhE,IAAI,CAACe;IAV9B,EADJ;EAcH,CAtE6C,EAsE3C,CAACgB,WAAD,EAAc+B,kBAAd,EAAkCoC,qBAAlC,CAtE2C,CAA9C;EAwEA,IAAAU,gBAAA,EAAU,MAAM;IACZ,MAAMC,MAAM,GAAG,MAAM;MACjB,MAAMhC,MAAM,GAAG1B,IAAI,CAAC2D,KAAL,CAAYpF,uBAAuB,GAAG,GAA3B,GAAkC4C,WAA7C,CAAf;;MAEA,IAAItB,WAAW,CAACa,OAAhB,EAAyB;QACrBb,WAAW,CAACa,OAAZ,CAAoBmC,cAApB,CAAmC;UAAEnB,MAAF;UAAUoB,QAAQ,EAAE;QAApB,CAAnC;MACH;IACJ,CAND;;IAQA,IAAIc,SAAqC,GAAGtE,SAA5C;IAEA;AACR;AACA;AACA;AACA;;IACQ,IAAIuE,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2B;MACvBF,SAAS,GAAGG,UAAU,CAACL,MAAD,EAAS,CAAT,CAAtB;IACH,CAFD,MAEO;MACHA,MAAM;IACT;;IAED,OAAO,MAAM;MACTE,SAAS,IAAII,YAAY,CAACJ,SAAD,CAAzB;IACH,CAFD;EAGH,CAzBD,EAyBG,EAzBH;EA2BA,oBACI,6BAAC,cAAD,CAAO,QAAP,qBACI,6BAAC,qBAAD;IACI,IAAI,EAAEpD,UADV;IAEI,aAAa,EAAEe,aAFnB;IAGI,kBAAkB,EAAElD,kBAHxB;IAII,YAAY,EAAEzB,YAJlB;IAKI,sBAAsB,EAAE2F,sBAAsB,CAAC7B,OALnD;IAMI,GAAG,EAAEb,WANT;IAOI,UAAU,EAAEwD,UAPhB;IAQI,iBAAiB,EAAE1B,iBARvB;IASI,UAAU,EAAEzC,UAThB;IAUI,QAAQ,EAAEuD;EAVd,GAWQtD,UAXR,EADJ,eAeI,6BAAC,mBAAD,eACQf,iBADR;IAEI,aAAa,EAAE+C,WAFnB;IAGI,uBAAuB,EAAE5C,uBAH7B;IAII,qBAAqB,EAAEqE;EAJ3B,GAfJ,CADJ;AAwBH;;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["ComicViewerProps.ts"],"sourcesContent":["import { ComponentProps } from '@fountain-ui/core';\n\nexport interface
|
|
1
|
+
{"version":3,"names":[],"sources":["ComicViewerProps.ts"],"sourcesContent":["import React from 'react';\nimport { ComponentProps } from '@fountain-ui/core';\nimport { NativeScrollEvent, NativeSyntheticEvent } from 'react-native';\nimport { FastScrollOptions } from './FastScrollProps';\n\nexport interface Dimension {\n width: number;\n height: number;\n}\n\nexport interface IntrinsicImage {\n dimension: Dimension;\n url: string;\n}\n\nexport default interface ComicViewerProps extends ComponentProps <{\n /**\n * Delay Time to call the error handler.\n * @default 100\n */\n debounceMillis?: number;\n\n /**\n * How many times handle onError directly when item error occur\n * @default 3\n */\n autoHandleErrorCount?: number;\n\n /**\n * How many items to render in the initial batch.\n * @default 1\n */\n initialNumToRender?: number;\n\n /**\n * How many items to create in the initial batch.\n * @default 1\n */\n initialNumToCreate?: number;\n\n /**\n * Start at initialScrollPercentage.\n * If over 100, scroll to end.\n * @default 0\n */\n initialScrollPercentage?: number;\n\n /**\n * The value for FlatList viewabilityConfig.itemVisiblePercentThreshold.\n * @default 0\n */\n itemVisiblePercentThreshold?: number;\n\n /**\n * Dimensions and url info of each Image considering viewport.\n */\n intrinsicImages: Array<IntrinsicImage>;\n\n /**\n * Need invisible paddingTop viewer vertically expanded.\n * @default 0\n */\n invisiblePaddingTop?: number;\n\n /**\n * Max value of contents image width size.\n * @default 720\n */\n maxContentWidth?: number;\n\n /**\n * Width of viewport.\n */\n viewportWidth: number;\n\n /**\n * The value for FlatList windowSize.\n * @default 3\n */\n windowSize?: number;\n\n /**\n * Options for fastscroll component.\n */\n fastScrollOptions: FastScrollOptions;\n\n /**\n * Handle scroll event.\n * @param event Scroll event.\n */\n onScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;\n\n /**\n * Handle item press event.\n */\n onItemPress?: () => void;\n\n /**\n * Handle image loading fail event.\n */\n onError?: () => void;\n\n /**\n * Handle reload button press event.\n */\n onReloadPress?: () => void;\n\n /**\n * Component for comic viewer footer.\n */\n ListFooterComponent?: React.ReactElement;\n}> {}\n"],"mappings":""}
|