@fountain-ui/lab 2.0.0-beta.11 → 2.0.0-beta.12
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/Carousel/Carousel.js +137 -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 +20 -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 +64 -0
- package/build/commonjs/Carousel/components/ItemView.js.map +1 -0
- package/build/commonjs/Carousel/components/RootView.js +68 -0
- package/build/commonjs/Carousel/components/RootView.js.map +1 -0
- package/build/commonjs/Carousel/components/ScrollViewGesture.js +76 -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/hooks/index.js +64 -0
- package/build/commonjs/Carousel/hooks/index.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useAutoplayController.js +55 -0
- package/build/commonjs/Carousel/hooks/useAutoplayController.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useDimensionChangeReaction.js +23 -0
- package/build/commonjs/Carousel/hooks/useDimensionChangeReaction.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useIndexController.js +70 -0
- package/build/commonjs/Carousel/hooks/useIndexController.js.map +1 -0
- package/build/commonjs/Carousel/hooks/useItemInterpolation.js +63 -0
- package/build/commonjs/Carousel/hooks/useItemInterpolation.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/usePagingAnimation.js +124 -0
- package/build/commonjs/Carousel/hooks/usePagingAnimation.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/types.js +7 -0
- package/build/commonjs/Carousel/types.js.map +1 -0
- package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +44 -47
- package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +1 -1
- package/build/commonjs/ViewPager/PageStateContext.js +22 -0
- package/build/commonjs/ViewPager/PageStateContext.js.map +1 -0
- package/build/commonjs/ViewPager/ViewPagerNative.js +23 -10
- package/build/commonjs/ViewPager/ViewPagerNative.js.map +1 -1
- package/build/commonjs/ViewPager/ViewPagerProps.js.map +1 -1
- package/build/commonjs/ViewPager/ViewPagerWeb.js +9 -7
- package/build/commonjs/ViewPager/ViewPagerWeb.js.map +1 -1
- package/build/commonjs/ViewPager/index.js +8 -0
- package/build/commonjs/ViewPager/index.js.map +1 -1
- package/build/commonjs/ViewPager/index.native.js +8 -0
- package/build/commonjs/ViewPager/index.native.js.map +1 -1
- package/build/commonjs/ViewPager/utils.js +3 -1
- 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/useIsMounted.js +22 -0
- package/build/commonjs/hooks/useIsMounted.js.map +1 -0
- package/build/commonjs/index.js +22 -1
- package/build/commonjs/index.js.map +1 -1
- package/build/module/Carousel/Carousel.js +115 -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 +11 -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 +44 -0
- package/build/module/Carousel/components/ItemView.js.map +1 -0
- package/build/module/Carousel/components/RootView.js +47 -0
- package/build/module/Carousel/components/RootView.js.map +1 -0
- package/build/module/Carousel/components/ScrollViewGesture.js +62 -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/hooks/index.js +8 -0
- package/build/module/Carousel/hooks/index.js.map +1 -0
- package/build/module/Carousel/hooks/useAutoplayController.js +45 -0
- package/build/module/Carousel/hooks/useAutoplayController.js.map +1 -0
- package/build/module/Carousel/hooks/useDimensionChangeReaction.js +14 -0
- package/build/module/Carousel/hooks/useDimensionChangeReaction.js.map +1 -0
- package/build/module/Carousel/hooks/useIndexController.js +54 -0
- package/build/module/Carousel/hooks/useIndexController.js.map +1 -0
- package/build/module/Carousel/hooks/useItemInterpolation.js +51 -0
- package/build/module/Carousel/hooks/useItemInterpolation.js.map +1 -0
- package/build/module/Carousel/hooks/useItemVisibilityStore.js +87 -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/usePagingAnimation.js +115 -0
- package/build/module/Carousel/hooks/usePagingAnimation.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/types.js +3 -0
- package/build/module/Carousel/types.js.map +1 -0
- package/build/module/ViewPager/ChildrenMemoizedPage.js +40 -45
- package/build/module/ViewPager/ChildrenMemoizedPage.js.map +1 -1
- package/build/module/ViewPager/PageStateContext.js +10 -0
- package/build/module/ViewPager/PageStateContext.js.map +1 -0
- package/build/module/ViewPager/ViewPagerNative.js +26 -13
- package/build/module/ViewPager/ViewPagerNative.js.map +1 -1
- package/build/module/ViewPager/ViewPagerProps.js.map +1 -1
- package/build/module/ViewPager/ViewPagerWeb.js +10 -8
- package/build/module/ViewPager/ViewPagerWeb.js.map +1 -1
- package/build/module/ViewPager/index.js +1 -0
- package/build/module/ViewPager/index.js.map +1 -1
- package/build/module/ViewPager/index.native.js +1 -0
- package/build/module/ViewPager/index.native.js.map +1 -1
- package/build/module/ViewPager/utils.js +1 -0
- 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/useIsMounted.js +13 -0
- package/build/module/hooks/useIsMounted.js.map +1 -0
- package/build/module/index.js +2 -0
- package/build/module/index.js.map +1 -1
- package/build/typescript/Carousel/Carousel.d.ts +5 -0
- package/build/typescript/Carousel/CarouselProps.d.ts +32 -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 +7 -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/hooks/index.d.ts +7 -0
- package/build/typescript/Carousel/hooks/useAutoplayController.d.ts +7 -0
- package/build/typescript/Carousel/hooks/useDimensionChangeReaction.d.ts +7 -0
- package/build/typescript/Carousel/hooks/useIndexController.d.ts +10 -0
- package/build/typescript/Carousel/hooks/useItemInterpolation.d.ts +2 -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/usePagingAnimation.d.ts +18 -0
- package/build/typescript/Carousel/index.d.ts +3 -1
- package/build/typescript/Carousel/types.d.ts +57 -0
- package/build/typescript/ViewPager/PageStateContext.d.ts +7 -0
- package/build/typescript/ViewPager/ViewPagerNative.d.ts +1 -1
- package/build/typescript/ViewPager/ViewPagerProps.d.ts +11 -0
- package/build/typescript/ViewPager/ViewPagerWeb.d.ts +1 -1
- package/build/typescript/ViewPager/index.d.ts +1 -0
- package/build/typescript/ViewPager/index.native.d.ts +1 -0
- package/build/typescript/ViewPager/utils.d.ts +1 -0
- package/build/typescript/ViewabilityTrackerView/Viewability.d.ts +3 -0
- package/build/typescript/ViewabilityTrackerView/ViewabilityTrackerView.d.ts +2 -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 +4 -19
- package/src/Carousel/Carousel.tsx +151 -0
- package/src/Carousel/CarouselProps.ts +34 -53
- package/src/Carousel/animation/animationUtils.ts +1 -0
- package/src/Carousel/animation/createDefaultItemStyle.ts +3 -0
- package/src/Carousel/animation/createDefaultScrollAnimation.ts +13 -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 +56 -0
- package/src/Carousel/components/RootView.tsx +66 -0
- package/src/Carousel/components/ScrollViewGesture.tsx +80 -0
- package/src/Carousel/components/index.ts +4 -0
- package/src/Carousel/hooks/index.ts +7 -0
- package/src/Carousel/hooks/useAutoplayController.ts +54 -0
- package/src/Carousel/hooks/useDimensionChangeReaction.ts +25 -0
- package/src/Carousel/hooks/useIndexController.tsx +76 -0
- package/src/Carousel/hooks/useItemInterpolation.ts +107 -0
- package/src/Carousel/hooks/useItemVisibilityStore.ts +107 -0
- package/src/Carousel/hooks/useLoopedData.ts +26 -0
- package/src/Carousel/hooks/usePagingAnimation.ts +148 -0
- package/src/Carousel/index.ts +4 -2
- package/src/Carousel/types.ts +67 -0
- package/src/ViewPager/ChildrenMemoizedPage.tsx +48 -43
- package/src/ViewPager/PageStateContext.ts +15 -0
- package/src/ViewPager/ViewPagerNative.tsx +35 -11
- package/src/ViewPager/ViewPagerProps.ts +13 -0
- package/src/ViewPager/ViewPagerWeb.tsx +9 -5
- package/src/ViewPager/index.native.ts +1 -0
- package/src/ViewPager/index.ts +1 -0
- package/src/ViewPager/utils.tsx +2 -1
- 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 +56 -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/useIsMounted.ts +19 -0
- 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/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/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/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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { Animated, ViewProps } from 'react-native';
|
|
3
|
+
declare const directions: readonly ["next", "prev", "stay"];
|
|
4
|
+
export declare type PagingDirection = (typeof directions)[number];
|
|
5
|
+
export interface RenderItem<T> {
|
|
6
|
+
(info: {
|
|
7
|
+
item: T;
|
|
8
|
+
index: number;
|
|
9
|
+
interpolation: Animated.AnimatedInterpolation;
|
|
10
|
+
}): ReactElement | null;
|
|
11
|
+
}
|
|
12
|
+
export interface CreateScrollAnimation {
|
|
13
|
+
(aValue: Animated.AnimatedValue, toValue: number): Animated.CompositeAnimation;
|
|
14
|
+
}
|
|
15
|
+
export interface CreateItemStyle {
|
|
16
|
+
(itemInterpolation: Animated.AnimatedInterpolation, itemWidth: number): Animated.AnimatedProps<ViewProps['style']>;
|
|
17
|
+
}
|
|
18
|
+
export interface GetCurrentIndex {
|
|
19
|
+
(): number;
|
|
20
|
+
}
|
|
21
|
+
export interface IndexController {
|
|
22
|
+
currentIndex: number;
|
|
23
|
+
getCurrentIndex: GetCurrentIndex;
|
|
24
|
+
lastIndex: number;
|
|
25
|
+
monitorElement: ReactElement;
|
|
26
|
+
}
|
|
27
|
+
export interface StartPagingAnimation {
|
|
28
|
+
(direction: PagingDirection, isGesture?: boolean): void;
|
|
29
|
+
}
|
|
30
|
+
export declare type VisibleIndexRanges = Array<[number, number]>;
|
|
31
|
+
export interface StoreSubscription {
|
|
32
|
+
(): void;
|
|
33
|
+
}
|
|
34
|
+
export interface ItemVisibilityStore {
|
|
35
|
+
dispatch: (ranges: VisibleIndexRanges) => void;
|
|
36
|
+
subscribe: (listener: (ranges: VisibleIndexRanges) => void) => StoreSubscription;
|
|
37
|
+
removeAllListeners: () => void;
|
|
38
|
+
}
|
|
39
|
+
export interface AutoplayController {
|
|
40
|
+
pause: () => void;
|
|
41
|
+
resume: () => void;
|
|
42
|
+
}
|
|
43
|
+
export interface CarouselInstance {
|
|
44
|
+
/**
|
|
45
|
+
* Scroll to next visible item.
|
|
46
|
+
*/
|
|
47
|
+
next: () => void;
|
|
48
|
+
/**
|
|
49
|
+
* Scroll to previous visible item.
|
|
50
|
+
*/
|
|
51
|
+
prev: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* Get current visible item index.
|
|
54
|
+
*/
|
|
55
|
+
getCurrentIndex: GetCurrentIndex;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type ViewPagerProps from './ViewPagerProps';
|
|
3
3
|
import type { ViewPagerInstance } from './ViewPagerProps';
|
|
4
|
-
declare const ViewPager: React.ForwardRefExoticComponent<Pick<ViewPagerProps, "style" | "children" | "onChange" | "
|
|
4
|
+
declare const ViewPager: React.ForwardRefExoticComponent<Pick<ViewPagerProps, "style" | "children" | "onChange" | "scrollEnabled" | "keyboardDismissMode" | "loading" | "initialPage" | "offscreenPageRerenderLimit" | "pageComponent" | "pageForceRerenderKey" | "UNSTABLE_sharedIndex"> & React.RefAttributes<ViewPagerInstance>>;
|
|
5
5
|
export default ViewPager;
|
|
@@ -6,6 +6,7 @@ export declare type KeyboardDismissMode = 'none' | 'on-drag';
|
|
|
6
6
|
export declare type PageProps = PropsWithChildren<ViewProps> & {
|
|
7
7
|
index: number;
|
|
8
8
|
loading: ViewPagerProps['loading'];
|
|
9
|
+
offscreenPageRerenderLimit: number;
|
|
9
10
|
sharedIndex: SharedValue<number>;
|
|
10
11
|
rerenderKey?: ViewPagerProps['pageForceRerenderKey'];
|
|
11
12
|
};
|
|
@@ -34,6 +35,12 @@ export default interface ViewPagerProps extends ComponentProps<{
|
|
|
34
35
|
* @default 'lazy'
|
|
35
36
|
*/
|
|
36
37
|
loading?: Loading;
|
|
38
|
+
/**
|
|
39
|
+
* Mobile only. The number of pages that should be re-rendered to either side of the current page.
|
|
40
|
+
* Changing this value after the component mount has no effect.
|
|
41
|
+
* @default 0
|
|
42
|
+
*/
|
|
43
|
+
offscreenPageRerenderLimit?: number;
|
|
37
44
|
/**
|
|
38
45
|
* Callback fired when an index is changed.
|
|
39
46
|
*/
|
|
@@ -57,5 +64,9 @@ export default interface ViewPagerProps extends ComponentProps<{
|
|
|
57
64
|
* @default 'on-drag'
|
|
58
65
|
*/
|
|
59
66
|
keyboardDismissMode?: KeyboardDismissMode;
|
|
67
|
+
/**
|
|
68
|
+
* Unstable API.
|
|
69
|
+
*/
|
|
70
|
+
UNSTABLE_sharedIndex?: SharedValue<number>;
|
|
60
71
|
}> {
|
|
61
72
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type ViewPagerProps from './ViewPagerProps';
|
|
3
3
|
import type { ViewPagerInstance } from './ViewPagerProps';
|
|
4
|
-
declare const ViewPager: React.ForwardRefExoticComponent<Pick<ViewPagerProps, "style" | "children" | "onChange" | "
|
|
4
|
+
declare const ViewPager: React.ForwardRefExoticComponent<Pick<ViewPagerProps, "style" | "children" | "onChange" | "scrollEnabled" | "keyboardDismissMode" | "loading" | "initialPage" | "offscreenPageRerenderLimit" | "pageComponent" | "pageForceRerenderKey" | "UNSTABLE_sharedIndex"> & React.RefAttributes<ViewPagerInstance>>;
|
|
5
5
|
export default ViewPager;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Loading, PageComponent } from './ViewPagerProps';
|
|
2
2
|
export declare const defaultInitialPage: number;
|
|
3
3
|
export declare const defaultLoading: Loading;
|
|
4
|
+
export declare const defaultOffscreenPageRerenderLimit: number;
|
|
4
5
|
export declare const defaultPageComponent: PageComponent;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
import type { OverridableComponentProps } from '@fountain-ui/core';
|
|
3
|
+
import type Viewability from './Viewability';
|
|
4
|
+
export default interface ViewabilityTrackerViewProps extends OverridableComponentProps<ViewProps, {
|
|
5
|
+
/**
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @default 1000
|
|
11
|
+
*/
|
|
12
|
+
measurementIntervalMillis?: number;
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
onViewabilityChange?: (viewability: Viewability) => void;
|
|
17
|
+
/**
|
|
18
|
+
* @default 50
|
|
19
|
+
*/
|
|
20
|
+
visiblePercentThreshold?: number;
|
|
21
|
+
}> {
|
|
22
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { View } from 'react-native';
|
|
2
|
+
export interface ViewabilityDetail {
|
|
3
|
+
visiblePercent: number;
|
|
4
|
+
}
|
|
5
|
+
export interface MeasureViewabilityParameters {
|
|
6
|
+
view: View;
|
|
7
|
+
windowWidth: number;
|
|
8
|
+
windowHeight: number;
|
|
9
|
+
onViewabilityDetailMeasured: (detail: ViewabilityDetail) => void;
|
|
10
|
+
}
|
|
11
|
+
export default function measureViewability({ view, windowWidth, windowHeight, onViewabilityDetailMeasured, }: MeasureViewabilityParameters): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
import type { View } from 'react-native';
|
|
3
|
+
import type Viewability from './Viewability';
|
|
4
|
+
export interface ViewabilityTrackerConfig {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
measurementIntervalMillis: number;
|
|
7
|
+
onViewabilityChange?: (viewability: Viewability) => void;
|
|
8
|
+
viewRef: RefObject<View>;
|
|
9
|
+
visiblePercentThreshold: number;
|
|
10
|
+
}
|
|
11
|
+
export default function useViewabilityTracker(config: ViewabilityTrackerConfig): void;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export { default as useDeferredExecutor } from './useDeferredExecutor';
|
|
2
|
+
export { default as useIsMounted } from './useIsMounted';
|
|
1
3
|
export { default as useUnstableCollapsibleAppBar } from './useUnstableCollapsibleAppBar';
|
|
2
4
|
export { default as useUnstableToggleDisplayStyle } from './useUnstableToggleDisplayStyle';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Runnable {
|
|
2
|
+
(): void;
|
|
3
|
+
}
|
|
4
|
+
export interface DeferredExecute {
|
|
5
|
+
(runnable: Runnable, delay?: number): void;
|
|
6
|
+
}
|
|
7
|
+
export interface DeferredExecutor {
|
|
8
|
+
cancel: () => void;
|
|
9
|
+
execute: DeferredExecute;
|
|
10
|
+
}
|
|
11
|
+
export default function useDeferredExecutor(): DeferredExecutor;
|
|
@@ -12,4 +12,6 @@ export { default as ComicViewer } from './ComicViewer';
|
|
|
12
12
|
export * from './ComicViewer';
|
|
13
13
|
export { default as StatusBarProvider, useStatusBarContext } from './StatusBarProvider';
|
|
14
14
|
export * from './StatusBarProvider';
|
|
15
|
+
export { default as ViewabilityTrackerView } from './ViewabilityTrackerView';
|
|
16
|
+
export * from './ViewabilityTrackerView';
|
|
15
17
|
export * from './hooks';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fountain-ui/lab",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.12",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Fountain-UI Team",
|
|
6
6
|
"description": "Incubator for Fountain-UI React components.",
|
|
@@ -29,9 +29,7 @@
|
|
|
29
29
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
30
30
|
"react-native": "^0.63.0",
|
|
31
31
|
"react-native-gesture-handler": "^2.0.0",
|
|
32
|
-
"react-native-pager-view": "^4.0.0"
|
|
33
|
-
"react-native-snap-carousel": "^3.9.0",
|
|
34
|
-
"react-slick": "^0.25.0"
|
|
32
|
+
"react-native-pager-view": "^4.0.0"
|
|
35
33
|
},
|
|
36
34
|
"peerDependenciesMeta": {
|
|
37
35
|
"@gorhom/bottom-sheet": {
|
|
@@ -40,28 +38,15 @@
|
|
|
40
38
|
"react-dom": {
|
|
41
39
|
"optional": true
|
|
42
40
|
},
|
|
43
|
-
"react-native": {
|
|
44
|
-
"optional": true
|
|
45
|
-
},
|
|
46
|
-
"react-slick": {
|
|
47
|
-
"optional": true
|
|
48
|
-
},
|
|
49
41
|
"react-native-pager-view": {
|
|
50
42
|
"optional": true
|
|
51
|
-
},
|
|
52
|
-
"react-native-snap-carousel": {
|
|
53
|
-
"optional": true
|
|
54
43
|
}
|
|
55
44
|
},
|
|
56
45
|
"devDependencies": {
|
|
57
46
|
"@gorhom/bottom-sheet": "4.1.3",
|
|
58
|
-
"@types/react-native-snap-carousel": "^3.8.4",
|
|
59
|
-
"@types/react-slick": "^0.23.5",
|
|
60
47
|
"date-fns": "^2.23.0",
|
|
61
48
|
"react-native-pager-view": "^4.2.4",
|
|
62
|
-
"react-native-safe-area-context": "^3.3.2"
|
|
63
|
-
"react-native-snap-carousel": "^3.9.1",
|
|
64
|
-
"react-slick": "^0.28.1"
|
|
49
|
+
"react-native-safe-area-context": "^3.3.2"
|
|
65
50
|
},
|
|
66
51
|
"react-native-builder-bob": {
|
|
67
52
|
"source": "./src",
|
|
@@ -85,5 +70,5 @@
|
|
|
85
70
|
"publishConfig": {
|
|
86
71
|
"access": "public"
|
|
87
72
|
},
|
|
88
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "efb9e6cc7cc65e52d1084a0c3664f419dc171240"
|
|
89
74
|
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import React, { forwardRef, memo, useImperativeHandle, useMemo, useRef } from 'react';
|
|
2
|
+
import { Animated } from 'react-native';
|
|
3
|
+
import ViewabilityTrackerView from '../ViewabilityTrackerView';
|
|
4
|
+
import type CarouselProps from './CarouselProps';
|
|
5
|
+
import type { CarouselInstance } from './types';
|
|
6
|
+
import {
|
|
7
|
+
useAutoplayController,
|
|
8
|
+
useDimensionChangeReaction,
|
|
9
|
+
useIndexController,
|
|
10
|
+
useItemVisibilityStore,
|
|
11
|
+
useLoopedData,
|
|
12
|
+
usePagingAnimation,
|
|
13
|
+
} from './hooks';
|
|
14
|
+
import { createDefaultItemStyle, createDefaultScrollAnimation } from './animation';
|
|
15
|
+
import { InternalContext, RootView, ScrollViewGesture } from './components';
|
|
16
|
+
|
|
17
|
+
const Carousel = forwardRef<CarouselInstance, CarouselProps>(function Carousel(props, ref) {
|
|
18
|
+
const {
|
|
19
|
+
autoplay = false,
|
|
20
|
+
autoplayInterval = 3000,
|
|
21
|
+
createItemStyle = createDefaultItemStyle,
|
|
22
|
+
createScrollAnimation = createDefaultScrollAnimation,
|
|
23
|
+
data: originalData,
|
|
24
|
+
disableSmartAutoplay = false,
|
|
25
|
+
initialIndex = 0,
|
|
26
|
+
itemHeight,
|
|
27
|
+
itemWidth,
|
|
28
|
+
loop = false,
|
|
29
|
+
onIndexChange,
|
|
30
|
+
renderItem,
|
|
31
|
+
scrollEnabled = true,
|
|
32
|
+
style,
|
|
33
|
+
windowSize = 5,
|
|
34
|
+
} = props;
|
|
35
|
+
|
|
36
|
+
const data = useLoopedData(originalData, loop);
|
|
37
|
+
|
|
38
|
+
const initialTx = itemWidth * initialIndex;
|
|
39
|
+
const controlledTx = useRef(new Animated.Value(initialTx)).current;
|
|
40
|
+
const offsetTx = useRef(new Animated.Value(0)).current;
|
|
41
|
+
|
|
42
|
+
const {
|
|
43
|
+
currentIndex,
|
|
44
|
+
getCurrentIndex,
|
|
45
|
+
lastIndex,
|
|
46
|
+
monitorElement,
|
|
47
|
+
} = useIndexController({
|
|
48
|
+
controlledTx,
|
|
49
|
+
initialIndex,
|
|
50
|
+
itemWidth,
|
|
51
|
+
numberOfOriginalData: originalData.length,
|
|
52
|
+
onIndexChange,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const itemVisibilityStore = useItemVisibilityStore({
|
|
56
|
+
currentIndex,
|
|
57
|
+
numberOfData: data.length,
|
|
58
|
+
windowSize,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const {
|
|
62
|
+
finalizeAnimation,
|
|
63
|
+
globalInterpolation,
|
|
64
|
+
startAnimation,
|
|
65
|
+
} = usePagingAnimation({
|
|
66
|
+
controlledTx,
|
|
67
|
+
createScrollAnimation,
|
|
68
|
+
getCurrentIndex,
|
|
69
|
+
itemWidth,
|
|
70
|
+
lastIndex,
|
|
71
|
+
loop,
|
|
72
|
+
numberOfData: data.length,
|
|
73
|
+
offsetTx,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const autoplayController = useAutoplayController({
|
|
77
|
+
enabled: autoplay,
|
|
78
|
+
intervalMillis: autoplayInterval,
|
|
79
|
+
startPagingAnimation: startAnimation,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
useDimensionChangeReaction({
|
|
83
|
+
controlledTx,
|
|
84
|
+
currentIndex,
|
|
85
|
+
itemWidth,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
useImperativeHandle(
|
|
89
|
+
ref,
|
|
90
|
+
() => ({
|
|
91
|
+
next: () => startAnimation('next'),
|
|
92
|
+
prev: () => startAnimation('prev'),
|
|
93
|
+
getCurrentIndex,
|
|
94
|
+
}),
|
|
95
|
+
[startAnimation, getCurrentIndex],
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const contextValue = useMemo(() => ({
|
|
99
|
+
createItemStyle,
|
|
100
|
+
data,
|
|
101
|
+
globalInterpolation,
|
|
102
|
+
itemHeight,
|
|
103
|
+
itemWidth,
|
|
104
|
+
itemVisibilityStore,
|
|
105
|
+
loop,
|
|
106
|
+
}), [
|
|
107
|
+
createItemStyle,
|
|
108
|
+
data,
|
|
109
|
+
globalInterpolation,
|
|
110
|
+
itemHeight,
|
|
111
|
+
itemWidth,
|
|
112
|
+
itemVisibilityStore,
|
|
113
|
+
loop,
|
|
114
|
+
]);
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<InternalContext.Provider value={contextValue}>
|
|
118
|
+
{monitorElement}
|
|
119
|
+
|
|
120
|
+
<ViewabilityTrackerView
|
|
121
|
+
enabled={autoplay && !disableSmartAutoplay}
|
|
122
|
+
measurementIntervalMillis={Math.max(3000, autoplayInterval)}
|
|
123
|
+
onViewabilityChange={({ visible }) => {
|
|
124
|
+
if (visible) {
|
|
125
|
+
autoplayController.resume();
|
|
126
|
+
} else {
|
|
127
|
+
autoplayController.pause();
|
|
128
|
+
}
|
|
129
|
+
}}
|
|
130
|
+
>
|
|
131
|
+
<ScrollViewGesture
|
|
132
|
+
autoplayController={autoplayController}
|
|
133
|
+
finalizeAnimation={finalizeAnimation}
|
|
134
|
+
offsetTx={offsetTx}
|
|
135
|
+
scrollEnabled={scrollEnabled}
|
|
136
|
+
startAnimation={startAnimation}
|
|
137
|
+
>
|
|
138
|
+
<RootView
|
|
139
|
+
data={data}
|
|
140
|
+
itemHeight={itemHeight}
|
|
141
|
+
originalData={originalData}
|
|
142
|
+
renderItem={renderItem}
|
|
143
|
+
style={style}
|
|
144
|
+
/>
|
|
145
|
+
</ScrollViewGesture>
|
|
146
|
+
</ViewabilityTrackerView>
|
|
147
|
+
</InternalContext.Provider>
|
|
148
|
+
);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
export default memo(Carousel);
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { ListRenderItemInfo } from 'react-native';
|
|
1
|
+
import type { RefObject } from 'react';
|
|
3
2
|
import type { ComponentProps } from '@fountain-ui/core';
|
|
3
|
+
import type { CarouselInstance, CreateItemStyle, CreateScrollAnimation, RenderItem } from './types';
|
|
4
4
|
|
|
5
5
|
export default interface CarouselProps<ItemT = any> extends ComponentProps<{
|
|
6
|
+
ref?: RefObject<CarouselInstance>;
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* If `true`, enable autoplay.
|
|
8
10
|
* @default false
|
|
@@ -16,92 +18,71 @@ export default interface CarouselProps<ItemT = any> extends ComponentProps<{
|
|
|
16
18
|
autoplayInterval?: number;
|
|
17
19
|
|
|
18
20
|
/**
|
|
19
|
-
*
|
|
21
|
+
* The item style creator function.
|
|
22
|
+
* @default createDefaultItemStyle
|
|
20
23
|
*/
|
|
21
|
-
|
|
24
|
+
createItemStyle?: CreateItemStyle;
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
|
-
*
|
|
27
|
+
* The scroll animation creator function.
|
|
28
|
+
* @default createDefaultScrollAnimation
|
|
29
|
+
*/
|
|
30
|
+
createScrollAnimation?: CreateScrollAnimation;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Data for render items.
|
|
25
34
|
*/
|
|
26
35
|
data: ReadonlyArray<ItemT>;
|
|
27
36
|
|
|
28
37
|
/**
|
|
29
|
-
*
|
|
30
|
-
* @default
|
|
38
|
+
* If `true`, carousel will detect its own viewability and control autoplay automatically.
|
|
39
|
+
* @default false
|
|
31
40
|
*/
|
|
32
|
-
|
|
41
|
+
disableSmartAutoplay?: boolean;
|
|
33
42
|
|
|
34
43
|
/**
|
|
35
|
-
*
|
|
36
|
-
* @default 0
|
|
44
|
+
* Index of initial item that should be selected.
|
|
45
|
+
* @default 0
|
|
37
46
|
*/
|
|
38
|
-
|
|
47
|
+
initialIndex?: number;
|
|
39
48
|
|
|
40
49
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @default 0.990
|
|
50
|
+
* The item width.
|
|
43
51
|
*/
|
|
44
|
-
|
|
52
|
+
itemHeight: number;
|
|
45
53
|
|
|
46
54
|
/**
|
|
47
|
-
*
|
|
55
|
+
* The item width.
|
|
48
56
|
*/
|
|
49
|
-
|
|
57
|
+
itemWidth: number;
|
|
50
58
|
|
|
51
59
|
/**
|
|
52
60
|
* Enable infinite loop mode.
|
|
53
61
|
* @default false
|
|
54
62
|
*/
|
|
55
|
-
|
|
63
|
+
loop?: boolean;
|
|
56
64
|
|
|
57
65
|
/**
|
|
58
66
|
* Callback fired when an index is changed.
|
|
59
67
|
*/
|
|
60
|
-
|
|
68
|
+
onIndexChange?: (newIndex: number) => void;
|
|
61
69
|
|
|
62
70
|
/**
|
|
63
71
|
* Takes an item from data and renders it into the list.
|
|
64
72
|
*/
|
|
65
|
-
renderItem:
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Web only. Number of slides to scroll at once.
|
|
69
|
-
* @default 1
|
|
70
|
-
*/
|
|
71
|
-
slidesToScroll?: number;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Web only. Number of slides to display.
|
|
75
|
-
* @default 1
|
|
76
|
-
*/
|
|
77
|
-
slidesToShow?: number;
|
|
73
|
+
renderItem: RenderItem<ItemT>;
|
|
78
74
|
|
|
79
75
|
/**
|
|
80
|
-
*
|
|
76
|
+
* Whether to enable scroll gesture.
|
|
81
77
|
* @default true
|
|
82
78
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Web only. Enable arrows to display.
|
|
87
|
-
* @default true
|
|
88
|
-
*/
|
|
89
|
-
arrows?: boolean;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Web only. Style of arrows
|
|
93
|
-
* @default true
|
|
94
|
-
*/
|
|
95
|
-
arrowsStyle?: object;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Web only. Style of track
|
|
99
|
-
* @default object
|
|
100
|
-
*/
|
|
101
|
-
trackStyle?: object;
|
|
79
|
+
scrollEnabled?: boolean;
|
|
102
80
|
|
|
103
81
|
/**
|
|
104
|
-
*
|
|
82
|
+
* The maximum number of items that can respond to pan gesture events.
|
|
83
|
+
* Due to the nature of the `active` item, it accepts only odd number. (e.g. 1, 3, 5...)
|
|
84
|
+
* 0 means all items will respond to pan gesture events.
|
|
85
|
+
* @default 5
|
|
105
86
|
*/
|
|
106
|
-
|
|
87
|
+
windowSize?: number;
|
|
107
88
|
}> {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const itemInterpolationInputRange = [-1, 0, 1];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Animated, Easing } from 'react-native';
|
|
2
|
+
|
|
3
|
+
export default function createDefaultScrollAnimation(
|
|
4
|
+
animatedValue: Animated.Value,
|
|
5
|
+
toValue: number,
|
|
6
|
+
): Animated.CompositeAnimation {
|
|
7
|
+
return Animated.timing(animatedValue, {
|
|
8
|
+
toValue: toValue,
|
|
9
|
+
duration: 350,
|
|
10
|
+
easing: Easing.bezier(0.25, 1, 0.5, 1),
|
|
11
|
+
useNativeDriver: true,
|
|
12
|
+
});
|
|
13
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
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';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CreateItemStyle } from '../types';
|
|
2
|
+
import { itemInterpolationInputRange } from './animationUtils';
|
|
3
|
+
|
|
4
|
+
export default function normalItemStyleFactory() {
|
|
5
|
+
const createItemStyle: CreateItemStyle = (itemInterpolation, itemWidth) => {
|
|
6
|
+
const translate = itemInterpolation.interpolate({
|
|
7
|
+
inputRange: itemInterpolationInputRange,
|
|
8
|
+
outputRange: [
|
|
9
|
+
-itemWidth,
|
|
10
|
+
0,
|
|
11
|
+
itemWidth,
|
|
12
|
+
],
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return { transform: [{ translateX: translate }] };
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return createItemStyle;
|
|
19
|
+
};
|