UNPKG

reactxp-navigation

Version:

Plugin for ReactXP that provides a navigation framework

90 lines (89 loc) 3.23 kB
/** * Types.ts * * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT license. * Type definitions for reactxp-naviigation extension. */ import * as React from 'react'; import * as RX from 'reactxp'; export declare type ReactNode = React.ReactNode; export declare enum NavigatorSceneConfigType { FloatFromRight = 0, FloatFromLeft = 1, FloatFromBottom = 2, Fade = 3, FadeWithSlide = 4 } export interface NavigatorRoute { routeId: number; sceneConfigType: NavigatorSceneConfigType; gestureResponseDistance?: number; customSceneConfig?: CustomNavigatorSceneConfig; } export declare type NavigationTransitionSpec = { duration?: number; easing?: RX.Types.Animated.EasingFunction; }; export declare type NavigationTransitionStyleConfig = { inputRange?: number[]; opacityOutput: number | number[]; scaleOutput: number | number[]; translateXOutput: number | number[]; translateYOutput: number | number[]; }; export declare type CustomNavigatorSceneConfig = { transitionStyle: (sceneIndex: number, sceneDimensions: RX.Types.Dimensions) => NavigationTransitionStyleConfig; transitionSpec?: NavigationTransitionSpec; cardStyle?: RX.Types.ViewStyleRuleSet; hideShadow?: boolean; presentBelowPrevious?: boolean; }; export interface NavigatorProps extends RX.CommonProps { renderScene: (route: NavigatorRoute) => JSX.Element | null; navigateBackCompleted?: () => void; transitionStarted?: (progress?: RX.Types.AnimatedValue, toRouteId?: string, fromRouteId?: string, toIndex?: number, fromIndex?: number) => void; transitionCompleted?: () => void; cardStyle?: RX.Types.ViewStyleRuleSet; children?: ReactNode; delegateSelector?: NavigatorDelegateSelector; } export declare enum CommandType { Push = 0, Pop = 1, Replace = 2 } export interface CommandParam { route?: NavigatorRoute; value?: number; } export interface NavigationCommand { type: CommandType; param: CommandParam; } export interface NavigatorState { } export declare abstract class Navigator<S> extends React.Component<NavigatorProps, S> { abstract push(route: NavigatorRoute): void; abstract pop(): void; abstract replace(route: NavigatorRoute): void; abstract replacePrevious(route: NavigatorRoute): void; abstract replaceAtIndex(route: NavigatorRoute, index: number): void; abstract immediatelyResetRouteStack(nextRouteStack: NavigatorRoute[]): void; abstract popToRoute(route: NavigatorRoute): void; abstract popToTop(): void; abstract getCurrentRoutes(): NavigatorRoute[]; } export interface NavigatorDelegateSelector { getNavigatorDelegate(navigator: Navigator<NavigatorState>): NavigatorDelegate; } export declare abstract class NavigatorDelegate { protected _owner: Navigator<NavigatorState>; constructor(navigator: Navigator<NavigatorState>); onBackPress: () => boolean; abstract getRoutes(): NavigatorRoute[]; abstract immediatelyResetRouteStack(nextRouteStack: NavigatorRoute[]): void; abstract render(): JSX.Element | null; abstract processCommand(commandQueue: NavigationCommand[]): void; abstract handleBackPress(): void; }