react-native-reanimated-carousel
Version:
Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.
29 lines (23 loc) • 902 B
text/typescript
import React from "react";
import type { TInitializeCarouselProps } from "./useInitProps";
import { Layouts } from "../layouts";
import type { TAnimationStyle } from "../layouts/BaseLayout";
type TLayoutConfigOpts<T> = TInitializeCarouselProps<T> & { size: number };
export function useLayoutConfig<T>(
opts: TLayoutConfigOpts<T>,
): TAnimationStyle {
const { size, vertical } = opts as Required<TLayoutConfigOpts<T>>;
return React.useMemo(() => {
const baseConfig = { size, vertical };
switch (opts.mode) {
case "parallax":
return Layouts.parallax(baseConfig, opts.modeConfig);
case "horizontal-stack":
return Layouts.horizontalStack(opts.modeConfig);
case "vertical-stack":
return Layouts.verticalStack(opts.modeConfig);
default:
return Layouts.normal(baseConfig);
}
}, [opts.mode, opts.modeConfig, size, vertical]);
}