@past3lle/carousel-hooks
Version:
PASTELLE carousel animation hooks built on top of @usegesture and react-springs
72 lines • 2.14 kB
TypeScript
import { UseWindowSizeOptions } from '@past3lle/hooks';
import { SpringConfig, useSprings } from '@react-spring/web';
import { DOMAttributes, MutableRefObject } from 'react';
export declare type WithWindowSizeOptions = {
windowSizeOptions?: UseWindowSizeOptions;
};
export declare type AxisDirection = 'x' | 'y';
export declare type SizeOptions = {
fixedSize?: number;
minSize?: number;
};
export interface OverwritingOptions {
sizeOptions?: SizeOptions;
styleMixin?: Record<string, any>;
}
export interface InifniteScrollDataParams {
itemSize: number;
dataLength: number;
setCurrentIndex: (i: number) => void;
}
export interface InfiniteScrollHookOptions {
visible: number;
scrollSpeed?: number;
snapOnScroll?: boolean;
dynamicConfig?: boolean;
scaleOptions: {
scaleOnScroll?: number;
initialScale: number;
};
config?: SpringConfig | ((options: {
configPos: number;
length: number;
}) => SpringConfig);
}
export interface BaseGestureParams {
currentIndex?: number;
axis: number;
dAxis: number;
mAxis?: number;
active: boolean;
first?: boolean;
last?: boolean;
down?: boolean;
memo?: {
[key: number]: number;
};
cancel: () => void;
}
export interface WheelGestureParams extends BaseGestureParams {
firstVis: number;
firstVisIdx: number;
prevRef: MutableRefObject<number[]>;
}
export interface DragGestureParams extends BaseGestureParams {
swDir: number;
}
export declare type InfiniteScrollOptions = InfiniteScrollHookOptions & OverwritingOptions;
export interface SpringAnimationHookReturn {
target?: HTMLElement | null;
bind: (...args: any[]) => DOMAttributes<any>;
springs: ReturnType<typeof useSprings>[0];
state: {
currentIndex: number;
itemSize: number;
firstAnimationOver?: boolean;
};
refCallbacks: {
setScrollingZoneRef: (newNode: any) => void;
setItemSizeRef: (newNode: any) => void;
};
}
//# sourceMappingURL=types.d.ts.map