'use strict'; var React = require('react-native'); var { Component, StyleSheet, Text, View, Navigator, TouchableOpacity, SegmentedControlIOS, Image } = React; var MainTabBar = require('./MainTabBar'); var style = StyleSheet.create({ flexEnabled: { flex: 1 }, leftBackButton: { flex: 1, justifyContent: 'center', alignItems: 'center', paddingLeft: 7 }, sceneStyle: { shadowColor: '#000000', shadowOpacity: .5, shadowOffset: { height: 1, width: 0 }, overflow: 'visible', flex: 1, marginTop: 64, backgroundColor: '#ffffff' } }); var lightBackArrow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAA2FBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8lb+eLAAAAR3RSTlMAAQIDBAYICQsMDQ4QERQXGBofJykqODlAQUlMUldeYWhrbW98f4KMlJWYnZ6goqutr7K0tbrAwcPMzs/T5ujp6+/z9ff7/dlYrXMAAAJCSURBVHja7dBXUlQBFEXR+wwtmHNWzBgxZzHDnf+M/LHUgg52lT++s/YM1q7639p/6enmxxeXJxXaxW/d3d1bVzL9d/pX94ZA/3r/0caQ7Q88sMMfd2CXP+zAFH/Ugan+oAMz/DEHZvpDDszxRxyY6w84sMA/+gML/SM/8Bf+7gfh/u4b4f7uo+H+Xg/39/ch2989Cff3ari/94X734T7+0K4//2Q7f+ymu3/eizcf5yfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn39a18P9J8P99SrcvxLur9Ph/jq31IDzo/PXmaUGfD4yugEHO/3A2/QDpzr9wK30A8NDBxxwwAEHHHDAAQcccMABBxxwwAEHHHBg2QOHHXDAAQcccMABBxxwYGwHHjnggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggANLHvjkgAMOOOCAAw444IADDjjggAMOOOCAAw6M7sCGAw444IADDix5YHOSfuB1pR84m37gZaUf2Jt+YKXCDxyo7ANbQ2UfuFuVfeBEZR+4XRV94MlQ0Qee7alKPjBu/+IDY/cvOjB+//wDCf55BzL8sw88D/HPOpDjn34gyT/tQJZ/94E0/84Def6q4f5v/+NAf1Vd3f7pvzlUZitr77a3P1w7VPon/QDqIm8Mnw8FiAAAAABJRU5ErkJggg=='; class TabBarNavigator extends Component { constructor(props) { super(props); this.state = { rootNavigatorTitle: '', currentTabIndex: 0, refresh:0, }; this.navItems = {}; this.navRouter = {}; this.currentRoute = null; this.rootNavigatorItems = {}; this.currentTabIndex = 0; var self = this; this.navRouter = { LeftButton(route, navigator, index, navState) { if (!route.isRoot) { if (route.navItems && route.navItems.leftItem) { return React.cloneElement(route.navItems.leftItem.component, { onPress: () => {route.navItems.leftItem.event(self.popThisNavigator.bind(self, navigator))} }); } else { return ( { self.popThisNavigator(navigator); }}> ); } } else { var navItems = self.rootNavigatorItems; var currentIndex = self.currentTabIndex; if (navItems[currentIndex] && navItems[currentIndex].leftItem) { return React.cloneElement(navItems[currentIndex].leftItem.component, { onPress: () => {navItems[currentIndex].leftItem.event()} }); } } }, RightButton(route, navigator, index, navState) { if (!route.isRoot) { if (route.navItems && route.navItems.rightItem) { return React.cloneElement(route.navItems.rightItem.component, { onPress: () => {route.navItems.rightItem.event(self.popThisNavigator.bind(self, navigator))} }); } } else { var navItems = self.rootNavigatorItems; var currentIndex = self.currentTabIndex; if (navItems[currentIndex] && navItems[currentIndex].rightItem) { return React.cloneElement(navItems[currentIndex].rightItem.component, { onPress: () => {navItems[currentIndex].rightItem.event()} }); } } }, Title(route, navigator, index, navState) { if (!route.isRoot) { if (route.navItems && route.navItems.title) { return React.cloneElement(route.navItems.title.component, { onPress: () => {route.navItems.title.event()} }); } } else { var navItems = self.rootNavigatorItems; var currentIndex = self.state.currentTabIndex; if (navItems[currentIndex] && navItems[currentIndex].title) { return React.cloneElement(navItems[currentIndex].title.component, { onPress: () => {navItems[currentIndex].title.event()} }); } } return ( {route.isRoot ? self.state.rootNavigatorTitle : route.title} ); } }; } setNavItems(config) { if (this.currentRoute.isRoot) { this.rootNavigatorItems[this.state.currentTabIndex] = config; this.forceUpdate(); } else { this.currentRoute.navItems = config; } } popThisNavigator(navigator) { this.resetNavItems(); this.forceReRender(); navigator.pop(); } resetNavItems() { this.navItems.rightItem = false; this.navItems.titleItem = false; this.navItems.leftItem = false; } forceReRender() { this.setState({ forceReRender: !this.state.forceReRender }); } reloadView(){ this.forceUpdate(); } renderScene(route, navigator) { this.currentRoute = route; this.resetNavItems(); var newComponent = React.cloneElement(route.component, { navigator: navigator, navComponent: this }); return newComponent; } render() { var initialRoute = { title: '', isRoot: true, component: ( ) }; var navBar = ( ); return ( ); } } class TabBarNavigatorItem extends Component { render() { return ; } } TabBarNavigator.Item = TabBarNavigatorItem; module.exports = TabBarNavigator;