import * as React from 'react'; import { LayoutChangeEvent, NativeSyntheticEvent, NativeScrollEvent, StyleSheet, Text, View, ViewStyle, } from 'react-native'; import Carousel, { Pagination, ParallaxImage, AdditionalParallaxProps, } from 'react-native-snap-carousel'; class StringCarousel extends Carousel {} class SnapCarouselTest extends React.Component { data = ['Item #1', 'Item #2', 'Item #3']; renderItem({ item }: { item: string }): React.ReactNode { return ( {item} ); } render(): React.ReactElement { return ( this.renderItem(item)} itemWidth={75} sliderWidth={300} containerCustomStyle={styles.container} enableMomentum={true} keyboardDismissMode='interactive' onSnapToItem={this.onSnapToItem} onBeforeSnapToItem={this.onBeforeSnapToItem} lockScrollTimeoutDuration={900} onScroll={this.onScroll} onLayout={this.onLayout} scrollEndDragDebounceValue={100} vertical={false} /> this.renderItem(item)} itemHeight={75} sliderHeight={300} vertical={true} /> ); } private readonly onBeforeSnapToItem = (index: number) => { console.log("Before snap to: ", index); } private readonly onSnapToItem = (index: number) => { console.log("Snapped to: ", index); } private readonly onScroll = (event: NativeSyntheticEvent) => { console.log("Scrolled: ", event); } private readonly onLayout = (event: LayoutChangeEvent) => { console.log("Layout: ", event); } } class SnapCarouselWithPaginationTest extends React.Component<{}, {activeSlide: number}> { state = { activeSlide: 0 }; renderItem({ item }: { item: string }): React.ReactNode { return ( {item} ); } render(): React.ReactElement { return ( this.renderItem(item)} itemWidth={75} sliderWidth={300} keyboardDismissMode='interactive' onSnapToItem={(index) => this.setState({ activeSlide: index })} /> ); } } class SnapCarouselWithParallaxTest extends React.Component { data = ['Item #1', 'Item #2', 'Item #3']; renderParallaxItem({ item }: { item: string }, parallaxProps?: AdditionalParallaxProps): React.ReactNode { return ( ); } render(): React.ReactElement { return ( this.renderParallaxItem(item, parallaxProps)} itemWidth={75} sliderWidth={300} containerCustomStyle={styles.container} /> ); } } const styles = StyleSheet.create({ container: { flex: 1 } as ViewStyle, item: { width: 75 } as ViewStyle, parallaxItem: { height: 350, width: 350 } });