(
{ pagesAmount }: UsePagerViewParams = { pagesAmount: 0 }
)
| 22 | }; |
| 23 | |
| 24 | export function usePagerView( |
| 25 | { pagesAmount }: UsePagerViewParams = { pagesAmount: 0 } |
| 26 | ) { |
| 27 | const ref = useRef<PagerView>(null); |
| 28 | const [pages, setPages] = useState<number[]>( |
| 29 | new Array(pagesAmount).fill('').map((_v, index) => index) |
| 30 | ); |
| 31 | const [activePage, setActivePage] = useState(0); |
| 32 | const [isAnimated, setIsAnimated] = useState(true); |
| 33 | const [overdragEnabled, setOverdragEnabled] = useState(false); |
| 34 | const [scrollEnabled, setScrollEnabled] = useState(true); |
| 35 | const [scrollState, setScrollState] = useState('idle'); |
| 36 | const [progress, setProgress] = useState({ position: 0, offset: 0 }); |
| 37 | const onPageScrollOffset = useRef(new Animated.Value(0)).current; |
| 38 | const onPageScrollPosition = useRef(new Animated.Value(0)).current; |
| 39 | const onPageSelectedPosition = useRef(new Animated.Value(0)).current; |
| 40 | |
| 41 | const setPage = useCallback( |
| 42 | (page: number) => |
| 43 | isAnimated |
| 44 | ? ref.current?.setPage(page) |
| 45 | : ref.current?.setPageWithoutAnimation(page), |
| 46 | [isAnimated] |
| 47 | ); |
| 48 | |
| 49 | const addPage = useCallback(() => { |
| 50 | setPages((prevPages) => { |
| 51 | return [...prevPages, prevPages.length]; |
| 52 | }); |
| 53 | }, []); |
| 54 | |
| 55 | const removePage = useCallback(() => { |
| 56 | setPages((prevPages) => { |
| 57 | if (prevPages.length === 1) { |
| 58 | return prevPages; |
| 59 | } |
| 60 | return prevPages.slice(0, prevPages.length - 1); |
| 61 | }); |
| 62 | }, []); |
| 63 | |
| 64 | const toggleAnimation = useCallback( |
| 65 | () => setIsAnimated((animated) => !animated), |
| 66 | [] |
| 67 | ); |
| 68 | |
| 69 | const toggleScroll = useCallback( |
| 70 | () => setScrollEnabled((enabled) => !enabled), |
| 71 | [] |
| 72 | ); |
| 73 | |
| 74 | const toggleOverdrag = useCallback( |
| 75 | () => setOverdragEnabled((enabled) => !enabled), |
| 76 | [] |
| 77 | ); |
| 78 | |
| 79 | const onPageScroll = useMemo( |
| 80 | () => |
| 81 | Animated.event<PagerViewOnPageScrollEventData>( |
no outgoing calls
no test coverage detected
searching dependent graphs…