UNPKG

react-navigation-stack

Version:
169 lines (168 loc) 7.13 kB
/// <reference types="react" /> import { Animated, TextProps, StyleProp, TextStyle, ViewStyle } from 'react-native'; import { SafeAreaView, NavigationRoute, NavigationDescriptor, NavigationAction, NavigationState, NavigationParams, NavigationScreenProp, NavigationNavigateAction, NavigationEventCallback, NavigationEventSubscription, NavigationScreenConfig, SupportedThemes } from 'react-navigation'; export declare type Scene = { key: string; index: number; isStale: boolean; isActive: boolean; route: NavigationRoute; descriptor: NavigationDescriptor<NavigationParams, NavigationStackOptions>; }; export declare type NavigationStackEventName = 'willFocus' | 'didFocus' | 'willBlur' | 'didBlur'; export declare type NavigationStackState = NavigationState; export declare type NavigationStackProp<State = NavigationRoute, Params = NavigationParams> = NavigationScreenProp<State, Params> & { push: (routeName: string, params?: NavigationParams, action?: NavigationNavigateAction) => boolean; replace: (routeName: string, params?: NavigationParams, action?: NavigationNavigateAction) => boolean; reset: (actions: NavigationAction[], index: number) => boolean; pop: (n?: number, params?: { immediate?: boolean; }) => boolean; popToTop: (params?: { immediate?: boolean; }) => boolean; addListener: (event: NavigationStackEventName, callback: NavigationEventCallback) => NavigationEventSubscription; }; export declare type HeaderMode = 'float' | 'screen' | 'none'; export declare type HeaderLayoutPreset = 'left' | 'center'; export declare type HeaderTransitionPreset = 'fade-in-place' | 'uikit'; export declare type HeaderBackgroundTransitionPreset = 'translate' | 'fade' | 'toggle'; export declare type HeaderProps = { mode: HeaderMode; position: Animated.Value; navigation: NavigationStackProp; layout: TransitionerLayout; scene: Scene; scenes: Scene[]; layoutPreset: HeaderLayoutPreset; transitionPreset?: HeaderTransitionPreset; backTitleVisible?: boolean; leftInterpolator?: (props: SceneInterpolatorProps) => any; titleInterpolator?: (props: SceneInterpolatorProps) => any; rightInterpolator?: (props: SceneInterpolatorProps) => any; backgroundInterpolator?: (props: SceneInterpolatorProps) => any; isLandscape: boolean; }; export declare type HeaderTransitionConfig = { headerLeftInterpolator?: SceneInterpolator; headerLeftLabelInterpolator?: SceneInterpolator; headerLeftButtonInterpolator?: SceneInterpolator; headerTitleFromLeftInterpolator?: SceneInterpolator; headerTitleInterpolator?: SceneInterpolator; headerRightInterpolator?: SceneInterpolator; headerBackgroundInterpolator?: SceneInterpolator; headerLayoutInterpolator?: SceneInterpolator; }; export declare type NavigationStackOptions = { title?: string; header?: ((props: HeaderProps) => React.ReactNode) | null; headerShown?: boolean; headerTitle?: ((props: TextProps & { children?: string; }) => React.ReactNode) | React.ReactNode; headerTitleStyle?: StyleProp<TextStyle>; headerTitleContainerStyle?: StyleProp<ViewStyle>; headerTintColor?: string; headerTitleAllowFontScaling?: boolean; headerBackAllowFontScaling?: boolean; headerBackTitle?: string | null; headerBackTitleStyle?: StyleProp<TextStyle>; headerTruncatedBackTitle?: string; headerLeft?: ((props: HeaderBackButtonProps) => React.ReactNode) | React.ReactNode; headerLeftContainerStyle?: StyleProp<ViewStyle>; headerRight?: (() => React.ReactNode) | React.ReactNode; headerRightContainerStyle?: StyleProp<ViewStyle>; headerBackImage?: (props: { tintColor?: string; title?: string | null; }) => React.ReactNode; headerPressColorAndroid?: string; headerBackground?: React.ReactNode; headerTransparent?: boolean; headerStyle?: StyleProp<ViewStyle>; headerForceInset?: React.ComponentProps<typeof SafeAreaView>['forceInset']; gesturesEnabled?: boolean; gestureDirection?: 'inverted' | 'normal'; gestureResponseDistance?: { vertical: number; horizontal: number; }; disableKeyboardHandling?: boolean; }; export declare type NavigationStackConfig = { mode?: 'card' | 'modal'; headerMode?: HeaderMode; headerLayoutPreset?: HeaderLayoutPreset; headerTransitionPreset?: HeaderTransitionPreset; headerBackgroundTransitionPreset?: HeaderBackgroundTransitionPreset; headerBackTitleVisible?: boolean; disableKeyboardHandling?: boolean; transparentCard?: boolean; cardShadowEnabled?: boolean; cardOverlayEnabled?: boolean; cardStyle?: StyleProp<ViewStyle>; onTransitionStart?: () => void; onTransitionEnd?: () => void; transitionConfig?: (transitionProps: TransitionProps, prevTransitionProps?: TransitionProps, isModal?: boolean) => TransitionConfig & HeaderTransitionConfig; }; export declare type NavigationStackScreenProps<Params = NavigationParams, ScreenProps = unknown> = { theme: SupportedThemes; navigation: NavigationStackProp<NavigationRoute, Params>; screenProps: ScreenProps; }; export declare type NavigationStackScreenComponent<Params = NavigationParams, ScreenProps = unknown> = React.ComponentType<NavigationStackScreenProps<Params, ScreenProps>> & { navigationOptions?: NavigationScreenConfig<NavigationStackOptions, NavigationStackProp<NavigationRoute, Params>, ScreenProps>; }; export declare type SceneDescriptorMap = { [key: string]: NavigationDescriptor<NavigationParams, NavigationStackOptions, NavigationStackProp>; }; export declare type HeaderBackButtonProps = { disabled?: boolean; onPress: () => void; pressColorAndroid?: string; tintColor?: string; backImage?: NavigationStackOptions['headerBackImage']; title?: string | null; truncatedTitle?: string | null; backTitleVisible?: boolean; allowFontScaling?: boolean; titleStyle?: StyleProp<TextStyle>; layoutPreset: HeaderLayoutPreset; width?: number; scene: Scene; }; export declare type SceneInterpolatorProps = { mode?: HeaderMode; layout: TransitionerLayout; scene: Scene; scenes: Scene[]; position: Animated.AnimatedInterpolation; navigation: NavigationStackProp; shadowEnabled?: boolean; cardOverlayEnabled?: boolean; }; export declare type SceneInterpolator = (props: SceneInterpolatorProps) => any; export declare type TransitionerLayout = { height: Animated.Value; width: Animated.Value; initHeight: number; initWidth: number; isMeasured: boolean; }; export declare type TransitionProps = { layout: TransitionerLayout; navigation: NavigationStackProp; position: Animated.Value; scenes: Scene[]; scene: Scene; index: number; }; export declare type TransitionConfig = { transitionSpec: { timing: Function; }; screenInterpolator: SceneInterpolator; containerStyle?: StyleProp<ViewStyle>; containerStyleLight?: StyleProp<ViewStyle>; containerStyleDark?: StyleProp<ViewStyle>; };