reactxp-navigation
Version:
Plugin for ReactXP that provides a navigation framework
90 lines (89 loc) • 3.23 kB
TypeScript
/**
* 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;
}