/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule NavigationTypeDefinition * @flow */ 'use strict'; const Animated = require('Animated'); // Object Instances export type NavigationAnimatedValue = Animated.Value; // Value & Structs. export type NavigationGestureDirection = 'horizontal' | 'vertical'; export type NavigationState = { key: string, }; export type NavigationParentState = { index: number, key: string, children: Array, }; export type NavigationAction = any; export type NavigationLayout = { height: NavigationAnimatedValue, initHeight: number, initWidth: number, width: NavigationAnimatedValue, }; export type NavigationPosition = NavigationAnimatedValue; export type NavigationScene = { index: number, isStale: boolean, navigationState: NavigationState, }; export type NavigationSceneRendererProps = { // The layout of the containing view of the scenes. layout: NavigationLayout, // The navigation state of the containing view. navigationState: NavigationParentState, // Callback to navigation with an action. onNavigate: NavigationActionCaller, // The progressive index of the containing view's navigation state. position: NavigationPosition, // The scene to render. scene: NavigationScene, // All the scenes of the containing view's. scenes: Array, }; // Functions. export type NavigationActionCaller = Function; export type NavigationAnimationSetter = ( position: NavigationAnimatedValue, newState: NavigationParentState, lastState: NavigationParentState, ) => void; export type NavigationRenderer = ( navigationState: NavigationState, onNavigate: NavigationActionCaller, ) => ReactElement; export type NavigationReducer = ( state: ?NavigationState, action: ?NavigationAction, ) => NavigationState; export type NavigationSceneRenderer = ( props: NavigationSceneRendererProps, ) => ?ReactElement;