Skip to content

Commit

Permalink
Create index.d.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
William Candillon authored Oct 31, 2016
1 parent d0323f7 commit c9d535d
Showing 1 changed file with 359 additions and 0 deletions.
359 changes: 359 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,359 @@
// typings for [email protected]
// created by bang88 (https://github.com/bang88)

import * as React from 'react';
import * as ReactNative from 'react-native';


declare namespace RNRF {

export interface SceneProps {
// Scene
/**
* Will be used to call screen transition, for example, Actions.name(params). Must be unique.
*/
key: string,
/**
* The Component to be displayed. Not required when defining a nested Scene, see example. If it is defined for 'container' scene, it will be used as custom container renderer
*/
component?: React.ReactNode,
/**
* Set to true if this is the initial scene
*/
initial?: boolean,
/**
* Defines how the new screen is added to the navigator stack. One of push, jump, replace, reset. If parent container is tabbar (tabs=true), jump will be automatically set.
*/
type?: 'push' | 'jump' | string,
/**
* Scenes marked with clone will be treated as templates and cloned into the current scene's parent when pushed. See example.
*/
clone?: boolean,
/**
* Pass all own props (except style, key, name, component, tabs) to children. Note that passProps is also passed to children.
*/
passProps?: boolean,

// Animation

/**
* optional. acts as a shortcut to writing an applyAnimation function with Animated.timing for a given duration (in ms).
*/
duration?: number,
/**
* direction of animation horizontal/vertical
*/
direction?: 'vertical' | 'horizontal',
/**
* optional if provided overrides the default spring animation
*/
applyAnimation?: Function,

// Scene styles

/**
* optional style override for the Scene's component
*/
sceneStyle?: ReactNative.ViewStyle,
/**
* Optionally override the styles for NavigationCard's Animated.View rendering the scene. Receives first argument of NavigationSceneRendererProps and second argument of {hideNavBar,hideTabBar,isActive} (see Example app).
*/
getSceneStyle?: Function,


// Tabs

/**
* Defines 'TabBar' scene container, so child scenes will be displayed as 'tabs'. If no component is defined, built-in TabBar is used as renderer. All child scenes are wrapped into own navbar.
*/
tabs?: boolean,
/**
* optional style override for the Tabs component
*/
tabBarStyle?: ReactNative.ViewStyle,
/**
* hides tab bar for this scene and any following scenes until explicitly reversed (if built-in TabBar component is used as parent renderer)
*/
hideTabBar?: boolean,


// Navigation Bar


/**
* hides the navigation bar for this scene and any following scenes until explicitly reversed
*/
hideNavBar?: boolean,
/**
* optional style override for the navigation bar
*/
navigationBarStyle?: ReactNative.ViewStyle,
/**
* optional custom NavBar for the scene. Check built-in NavBar of the component for reference
*/
navBar?: React.ReactNode,
/**
* Simple way to override the drawerImage in the navBar
*/
drawerImage?: ReactNative.Image,

// Navigation Bar: Title

/**
* The title to be displayed in the navigation bar
*/
title?: string,
/**
* Optionally closure to return a value of the title based on state
*/
getTitle?: Function,
/**
* Optionally closure to render the title
*/
renderTitle?: Function,
/**
* optional style override for the title element
*/
titleStyle?: ReactNative.TextStyle,

// Navigation Bar: Back button

/**
* optional string to display with back button
*/
backTitle?: string
/**
* optional closure to render back text or button if this route happens to be the previous route
*/
renderBackButton?: Function
/**
* './back_chevron.png' Simple way to override the back button in the navBar
*/
backButtonImage?: ReactNative.Image,
/**
* optional style override for the back title element
*/
backButtonTextStyle?: ReactNative.TextStyle,


// Navigation Bar: Left button

/**
* optional string to display on the left if the previous route does not provide renderBackButton prop. renderBackButton > leftTitle >
*/
leftTitle?: string,
/**
* optional closure to render the left title / buttons element
*/
renderLeftButton?: Function,
/**
* function will be called when left navBar button is pressed
*/
onLeft?: Function,
/**
* Image for left button
*/
leftButtonImage?: ReactNative.Image,
/**
* Image style for left button
*/
leftButtonIconStyle?: ReactNative.ViewStyle,
/**
* optional style override for the container of left title / buttons
*/
leftButtonStyle?: ReactNative.ViewStyle,
/**
* optional style override for the left title element
*/
leftButtonTextStyle?: ReactNative.TextStyle,


// Navigation Bar: Right button

/**
* optional string to display on the right. onRight must be provided for this to appear.
*/
rightTitle?: string,
/**
* optional closure to render the right title / buttons element
*/
renderRightButton?: Function,
/**
* function will be called when right navBar button is pressed
*/
onRight?: Function,
/**
* Image for right button
*/
rightButtonImage?: ReactNative.Image,
/**
* Image style for right button
*/
rightButtonIconStyle?: ReactNative.ViewStyle,
/**
* optional style override for the container of right title / buttons
*/
rightButtonStyle?: ReactNative.ViewStyle,
/**
* optional style override for the right title element
*/
rightButtonTextStyle?: ReactNative.TextStyle,
/**
* optional wrappert
*/
wrapBy?: ()=>any,
}

/**
* Scene
*/
export class Scene extends React.Component<SceneProps, {}> {

}


// Router
interface RouterProps extends React.Props<Router> {
reducer?: Function,
createReducer?: Function,
scenes?: any,
/**
* optional Scene's props that can be used in Router
*/
type?: 'push' | 'jump' | string,
clone?: boolean,
passProps?: boolean,
duration?: number,
direction?: 'vertical' | 'horizontal',
applyAnimation?: Function,
sceneStyle?: ReactNative.ViewStyle,
getSceneStyle?: Function,
tabs?: boolean,
tabBarStyle?: ReactNative.ViewStyle,
hideTabBar?: boolean,
hideNavBar?: boolean,
navigationBarStyle?: ReactNative.ViewStyle,
navBar?: React.ReactNode,
drawerImage?: ReactNative.Image,
title?: string,
getTitle?: Function,
renderTitle?: Function,
titleStyle?: ReactNative.TextStyle,
backTitle?: string,
renderBackButton?: Function,
backButtonImage?: ReactNative.Image,
backButtonTextStyle?: ReactNative.TextStyle,
leftTitle?: string,
renderLeftButton?: Function,
onLeft?: Function,
leftButtonImage?: ReactNative.Image,
leftButtonIconStyle?: ReactNative.ViewStyle,
leftButtonStyle?: ReactNative.ViewStyle,
leftButtonTextStyle?: ReactNative.TextStyle,
rightTitle?: string,
renderRightButton?: Function,
onRight?: Function,
rightButtonImage?: ReactNative.Image,
rightButtonIconStyle?: ReactNative.ViewStyle,
rightButtonStyle?: ReactNative.ViewStyle,
rightButtonTextStyle?: ReactNative.TextStyle
}
export class Router extends React.Component<RouterProps, {}>{ }


// Actions
type props = Object;

interface RNRFActions {
pop(props?: props): void,
jump(props: props): void,
refresh(props: props): void,
focus(props: props): void,
create(scene: React.ReactNode, wrapBy?: () => any): Object,
[sceneKey: string]: (props?: props) => void
}

export var Actions: RNRFActions;

// ActionsConst
interface RNRFActionConst {
JUMP: string,
PUSH: string,
PUSH_OR_POP: string,
REPLACE: string,
BACK: string,
BACK_ACTION: string,
POP_AND_REPLACE: string,
POP_TO: string,
REFRESH: string,
RESET: string,
FOCUS: string,
}
export var ActionConst: RNRFActionConst;

// DefaultRenderer
interface DefaultRendererProps extends React.Props<DefaultRenderer> {
navigationState: Object,
onNavigate: Function
}
export class DefaultRenderer extends React.Component<DefaultRendererProps, {}>{ }

// Modal
interface ModalProps extends React.Props<Modal> {
navigationState: Object,
onNavigate: Function
}
export class Modal extends React.Component<ModalProps, {}>{ }


// navbar
interface NavBarProps extends React.Props<NavBar> {
navigationState?: Object,
backButtonImage?: number,
backButtonTextStyle?: ReactNative.TextStyle,
leftButtonStyle?: ReactNative.ViewStyle
leftButtonIconStyle?: ReactNative.ImageStyle,
getTitle?: Function,
titleStyle?: ReactNative.TextStyle,
position?: Object,
navigationBarStyle?: ReactNative.ViewStyle,
renderTitle?: any,
}
export class NavBar extends React.Component<NavBarProps, {}>{ }



// Reducer
export var Reducer: (state: {}, scence: {}) => any;


// Switch
interface SwitchProps extends React.Props<Switch> {
navigationState?: Object,
onNavigate?: Function,
selector?: Function,
}
export class Switch extends React.Component<SwitchProps, {}>{ }


// TabBar
interface TabBarProps extends React.Props<TabBar> {
navigationState?: Object,
tabIcon?: any,
onNavigate?: Function,
}
export class TabBar extends React.Component<TabBarProps, {}>{ }


// getInitialState
export var getInitialState: (scenes: any) => Object

// Util
export interface Util {
deepestExplicitValueForKey(navigationState: Object, key: string): any,
assert(expr: boolean, failDescription: any): void
}

}

export = RNRF;

0 comments on commit c9d535d

Please sign in to comment.