@react-navigation/core 3.5.0-alpha.6 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/navigators/__tests__/createSwitchnavigator-test.js +1 -1
- package/lib/commonjs/navigators/__tests__/createSwitchnavigator-test.js.map +1 -1
- package/lib/commonjs/navigators/createNavigator.js +1 -1
- package/lib/commonjs/navigators/createNavigator.js.map +1 -1
- package/lib/commonjs/routers/SwitchRouter.js +1 -1
- package/lib/commonjs/routers/SwitchRouter.js.map +1 -1
- package/lib/commonjs/routers/__tests__/PathHandling-test.js +1 -1
- package/lib/commonjs/routers/__tests__/PathHandling-test.js.map +1 -1
- package/lib/commonjs/routers/__tests__/Routers-test.js +1 -1
- package/lib/commonjs/routers/__tests__/Routers-test.js.map +1 -1
- package/lib/commonjs/routers/__tests__/StackRouter-test.js +1 -1
- package/lib/commonjs/routers/__tests__/StackRouter-test.js.map +1 -1
- package/lib/commonjs/routers/__tests__/SwitchRouter-test.js +1 -1
- package/lib/commonjs/routers/__tests__/SwitchRouter-test.js.map +1 -1
- package/lib/commonjs/routers/__tests__/TabRouter-test.js +1 -1
- package/lib/commonjs/routers/__tests__/TabRouter-test.js.map +1 -1
- package/lib/commonjs/routers/__tests__/pathUtils-test.js +1 -1
- package/lib/commonjs/routers/__tests__/pathUtils-test.js.map +1 -1
- package/lib/commonjs/routers/__tests__/validateRouteConfigMap-test.js +1 -1
- package/lib/commonjs/routers/__tests__/validateRouteConfigMap-test.js.map +1 -1
- package/lib/commonjs/routers/createConfigGetter.js +1 -1
- package/lib/commonjs/routers/createConfigGetter.js.map +1 -1
- package/lib/commonjs/routers/pathUtils.js +1 -1
- package/lib/commonjs/routers/pathUtils.js.map +1 -1
- package/lib/commonjs/useTheme.js +1 -1
- package/lib/commonjs/useTheme.js.map +1 -1
- package/lib/commonjs/utils/getActiveChildNavigationOptions.js +1 -1
- package/lib/commonjs/utils/getActiveChildNavigationOptions.js.map +1 -1
- package/lib/commonjs/views/SceneView.js +1 -1
- package/lib/commonjs/views/SceneView.js.map +1 -1
- package/lib/commonjs/views/SwitchView/SwitchView.js +1 -1
- package/lib/commonjs/views/SwitchView/SwitchView.js.map +1 -1
- package/lib/commonjs/views/__tests__/NavigationEvents-test.js +1 -1
- package/lib/commonjs/views/__tests__/NavigationEvents-test.js.map +1 -1
- package/lib/commonjs/views/withNavigation.js +1 -1
- package/lib/commonjs/views/withNavigation.js.map +1 -1
- package/lib/commonjs/views/withNavigationFocus.js +1 -1
- package/lib/commonjs/views/withNavigationFocus.js.map +1 -1
- package/lib/module/navigators/__tests__/createSwitchnavigator-test.js +1 -1
- package/lib/module/navigators/__tests__/createSwitchnavigator-test.js.map +1 -1
- package/lib/module/navigators/createNavigator.js +1 -1
- package/lib/module/navigators/createNavigator.js.map +1 -1
- package/lib/module/routers/SwitchRouter.js +1 -1
- package/lib/module/routers/SwitchRouter.js.map +1 -1
- package/lib/module/routers/__tests__/PathHandling-test.js +1 -1
- package/lib/module/routers/__tests__/PathHandling-test.js.map +1 -1
- package/lib/module/routers/__tests__/Routers-test.js +1 -1
- package/lib/module/routers/__tests__/Routers-test.js.map +1 -1
- package/lib/module/routers/__tests__/StackRouter-test.js +1 -1
- package/lib/module/routers/__tests__/StackRouter-test.js.map +1 -1
- package/lib/module/routers/__tests__/SwitchRouter-test.js +1 -1
- package/lib/module/routers/__tests__/SwitchRouter-test.js.map +1 -1
- package/lib/module/routers/__tests__/TabRouter-test.js +1 -1
- package/lib/module/routers/__tests__/TabRouter-test.js.map +1 -1
- package/lib/module/routers/__tests__/pathUtils-test.js +1 -1
- package/lib/module/routers/__tests__/pathUtils-test.js.map +1 -1
- package/lib/module/routers/__tests__/validateRouteConfigMap-test.js +1 -1
- package/lib/module/routers/__tests__/validateRouteConfigMap-test.js.map +1 -1
- package/lib/module/routers/createConfigGetter.js +1 -1
- package/lib/module/routers/createConfigGetter.js.map +1 -1
- package/lib/module/routers/pathUtils.js +1 -1
- package/lib/module/routers/pathUtils.js.map +1 -1
- package/lib/module/useTheme.js +1 -1
- package/lib/module/useTheme.js.map +1 -1
- package/lib/module/utils/getActiveChildNavigationOptions.js +1 -1
- package/lib/module/utils/getActiveChildNavigationOptions.js.map +1 -1
- package/lib/module/views/SceneView.js +1 -1
- package/lib/module/views/SceneView.js.map +1 -1
- package/lib/module/views/SwitchView/SwitchView.js +1 -1
- package/lib/module/views/SwitchView/SwitchView.js.map +1 -1
- package/lib/module/views/__tests__/NavigationEvents-test.js +1 -1
- package/lib/module/views/__tests__/NavigationEvents-test.js.map +1 -1
- package/lib/module/views/withNavigation.js +1 -1
- package/lib/module/views/withNavigation.js.map +1 -1
- package/lib/module/views/withNavigationFocus.js +1 -1
- package/lib/module/views/withNavigationFocus.js.map +1 -1
- package/lib/typescript/useTheme.d.ts +1 -1
- package/package.json +1 -1
- package/src/navigators/createNavigator.js +35 -16
- package/src/routers/SwitchRouter.js +13 -11
- package/src/routers/__tests__/pathUtils-test.js +37 -1
- package/src/routers/createConfigGetter.js +3 -2
- package/src/routers/pathUtils.js +16 -5
- package/src/useTheme.ts +1 -1
- package/src/utils/getActiveChildNavigationOptions.js +6 -2
- package/src/.DS_Store +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _objectSpread from"@babel/runtime/helpers/objectSpread";import invariant from'../utils/invariant';import getScreenForRouteName from'./getScreenForRouteName';import createConfigGetter from'./createConfigGetter';import*as NavigationActions from'../NavigationActions';import*as SwitchActions from'./SwitchActions';import validateRouteConfigMap from'./validateRouteConfigMap';import{createPathParser}from'./pathUtils';var defaultActionCreators=function defaultActionCreators(){return{};};export default(function(routeConfigs){var config=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};validateRouteConfigMap(routeConfigs);var order=config.order||Object.keys(routeConfigs);var getCustomActionCreators=config.getCustomActionCreators||defaultActionCreators;var initialRouteParams=config.initialRouteParams;var initialRouteName=config.initialRouteName||order[0];var backBehavior=config.backBehavior||'none';var resetOnBlur=config.hasOwnProperty('resetOnBlur')?config.resetOnBlur:true;var initialRouteIndex=order.indexOf(initialRouteName);if(initialRouteIndex===-1){throw new Error("Invalid initialRouteName '"+initialRouteName+"'."+("Should be one of "+order.map(function(n){return"\""+n+"\"";}).join(', ')));}var childRouters={};order.forEach(function(routeName){childRouters[routeName]=null;var screen=getScreenForRouteName(routeConfigs,routeName);if(screen.router){childRouters[routeName]=screen.router;}});function getParamsForRoute(routeName,params){var routeConfig=routeConfigs[routeName];if(routeConfig&&routeConfig.params){return _objectSpread({},routeConfig.params,params);}else{return params;}}var _createPathParser=createPathParser(childRouters,routeConfigs,config),getPathAndParamsForRoute=_createPathParser.getPathAndParamsForRoute,_getActionForPathAndParams=_createPathParser.getActionForPathAndParams;function resetChildRoute(routeName){var initialParams=routeName===initialRouteName?initialRouteParams:undefined;var params=getParamsForRoute(routeName,initialParams);var childRouter=childRouters[routeName];if(childRouter){var childAction=NavigationActions.init();return _objectSpread({},childRouter.getStateForAction(childAction),{key:routeName,routeName:routeName,params:params});}return{key:routeName,routeName:routeName,params:params};}function getNextState(action,prevState,possibleNextState){function updateNextStateHistory(nextState){if(backBehavior!=='history'){return nextState;}var nextRouteKeyHistory=prevState?prevState.routeKeyHistory:[];if(action.type===NavigationActions.NAVIGATE){nextRouteKeyHistory=_toConsumableArray(nextRouteKeyHistory);var keyToAdd=nextState.routes[nextState.index].key;nextRouteKeyHistory=nextRouteKeyHistory.filter(function(k){return k!==keyToAdd;});nextRouteKeyHistory.push(keyToAdd);}else if(action.type===NavigationActions.BACK){nextRouteKeyHistory=_toConsumableArray(nextRouteKeyHistory);nextRouteKeyHistory.pop();}return _objectSpread({},nextState,{routeKeyHistory:nextRouteKeyHistory});}var nextState=possibleNextState;if(prevState&&prevState.index!==possibleNextState.index&&resetOnBlur){var prevRouteName=prevState.routes[prevState.index].routeName;var nextRoutes=_toConsumableArray(possibleNextState.routes);nextRoutes[prevState.index]=resetChildRoute(prevRouteName);nextState=_objectSpread({},possibleNextState,{routes:nextRoutes});}return updateNextStateHistory(nextState);}function getInitialState(){var routes=order.map(resetChildRoute);var initialState={routes:routes,index:initialRouteIndex,isTransitioning:false};if(backBehavior==='history'){var initialKey=routes[initialRouteIndex].key;initialState['routeKeyHistory']=[initialKey];}return initialState;}return{childRouters:childRouters,getActionCreators:function getActionCreators(route,stateKey){return getCustomActionCreators(route,stateKey);},getStateForAction:function getStateForAction(action,inputState){var prevState=inputState?_objectSpread({},inputState):inputState;var state=inputState||getInitialState();var activeChildIndex=state.index;if(action.type===NavigationActions.INIT){var params=action.params;if(params){state.routes=state.routes.map(function(route){return _objectSpread({},route,{params:_objectSpread({},route.params,params,route.routeName===initialRouteName?initialRouteParams:null)});});}}if(action.type===SwitchActions.JUMP_TO&&(action.key==null||action.key===state.key)){var _params=action.params;var _index=state.routes.findIndex(function(route){return route.routeName===action.routeName;});if(_index===-1){throw new Error("There is no route named '"+action.routeName+"' in the navigator with the key '"+action.key+"'.\n"+("Must be one of: "+state.routes.map(function(route){return"'"+route.routeName+"'";}).join(',')));}return getNextState(action,prevState,_objectSpread({},state,{routes:state.routes.map(function(route,i){return i===_index?_objectSpread({},route,{params:_objectSpread({},route.params,_params)}):route;}),index:_index}));}var activeChildLastState=state.routes[state.index];var activeChildRouter=childRouters[order[state.index]];if(activeChildRouter){var activeChildState=activeChildRouter.getStateForAction(action,activeChildLastState);if(!activeChildState&&inputState){return null;}if(activeChildState&&activeChildState!==activeChildLastState){var _routes=_toConsumableArray(state.routes);_routes[state.index]=activeChildState;return getNextState(action,prevState,_objectSpread({},state,{routes:_routes}));}}var isBackEligible=action.key==null||action.key===activeChildLastState.key;if(action.type===NavigationActions.BACK){if(isBackEligible&&backBehavior==='initialRoute'){activeChildIndex=initialRouteIndex;}else if(isBackEligible&&backBehavior==='order'){activeChildIndex=Math.max(0,activeChildIndex-1);}else if(isBackEligible&&backBehavior==='history'&&state.routeKeyHistory.length>1){var routeKey=state.routeKeyHistory[state.routeKeyHistory.length-2];activeChildIndex=order.indexOf(routeKey);}else{return state;}}var didNavigate=false;if(action.type===NavigationActions.NAVIGATE){didNavigate=!!order.find(function(childId,i){if(childId===action.routeName){activeChildIndex=i;return true;}return false;});if(didNavigate){var childState=state.routes[activeChildIndex];var childRouter=childRouters[action.routeName];var newChildState=childState;if(action.action&&childRouter){var childStateUpdate=childRouter.getStateForAction(action.action,childState);if(childStateUpdate){newChildState=childStateUpdate;}}if(action.params){newChildState=_objectSpread({},newChildState,{params:_objectSpread({},newChildState.params||{},action.params)});}if(newChildState!==childState){var _routes2=_toConsumableArray(state.routes);_routes2[activeChildIndex]=newChildState;var nextState=_objectSpread({},state,{routes:_routes2,index:activeChildIndex});return getNextState(action,prevState,nextState);}else if(newChildState===childState&&state.index===activeChildIndex&&prevState){return null;}}}if(action.type===NavigationActions.SET_PARAMS){var key=action.key;var lastRoute=state.routes.find(function(route){return route.key===key;});if(lastRoute){var _params2=_objectSpread({},lastRoute.params,action.params);var _routes3=_toConsumableArray(state.routes);_routes3[state.routes.indexOf(lastRoute)]=_objectSpread({},lastRoute,{params:_params2});return getNextState(action,prevState,_objectSpread({},state,{routes:_routes3}));}}if(activeChildIndex!==state.index){return getNextState(action,prevState,_objectSpread({},state,{index:activeChildIndex}));}else if(didNavigate&&!inputState){return state;}else if(didNavigate){return _objectSpread({},state);}var index=state.index;var routes=state.routes;order.find(function(childId,i){var childRouter=childRouters[childId];if(i===index){return false;}var childState=routes[i];if(childRouter){childState=childRouter.getStateForAction(action,childState);}if(!childState){index=i;return true;}if(childState!==routes[i]){routes=_toConsumableArray(routes);routes[i]=childState;index=i;return true;}return false;});if(action.preserveFocus){index=state.index;}if(index!==state.index||routes!==state.routes){return getNextState(action,prevState,_objectSpread({},state,{index:index,routes:routes}));}return state;},getComponentForState:function getComponentForState(state){var routeName=state.routes[state.index].routeName;invariant(routeName,"There is no route defined for index "+state.index+". Check that\n that you passed in a navigation state with a valid tab/screen index.");var childRouter=childRouters[routeName];if(childRouter){return childRouter.getComponentForState(state.routes[state.index]);}return getScreenForRouteName(routeConfigs,routeName);},getComponentForRouteName:function getComponentForRouteName(routeName){return getScreenForRouteName(routeConfigs,routeName);},getPathAndParamsForState:function getPathAndParamsForState(state){var route=state.routes[state.index];return getPathAndParamsForRoute(route);},getActionForPathAndParams:function getActionForPathAndParams(path,params){return _getActionForPathAndParams(path,params);},getScreenOptions:createConfigGetter(routeConfigs,config.defaultNavigationOptions)};});
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _objectSpread from"@babel/runtime/helpers/objectSpread";import invariant from'../utils/invariant';import getScreenForRouteName from'./getScreenForRouteName';import createConfigGetter from'./createConfigGetter';import*as NavigationActions from'../NavigationActions';import*as SwitchActions from'./SwitchActions';import validateRouteConfigMap from'./validateRouteConfigMap';import{createPathParser}from'./pathUtils';var defaultActionCreators=function defaultActionCreators(){return{};};export default(function(routeConfigs){var config=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};validateRouteConfigMap(routeConfigs);var order=config.order||Object.keys(routeConfigs);var getCustomActionCreators=config.getCustomActionCreators||defaultActionCreators;var initialRouteParams=config.initialRouteParams;var initialRouteName=config.initialRouteName||order[0];var backBehavior=config.backBehavior||'none';var resetOnBlur=config.hasOwnProperty('resetOnBlur')?config.resetOnBlur:true;var initialRouteIndex=order.indexOf(initialRouteName);if(initialRouteIndex===-1){throw new Error("Invalid initialRouteName '"+initialRouteName+"'."+("Should be one of "+order.map(function(n){return"\""+n+"\"";}).join(', ')));}var childRouters={};order.forEach(function(routeName){childRouters[routeName]=null;var screen=getScreenForRouteName(routeConfigs,routeName);if(screen.router){childRouters[routeName]=screen.router;}});function getParamsForRoute(routeName,params){var routeConfig=routeConfigs[routeName];if(routeConfig&&routeConfig.params){return _objectSpread({},routeConfig.params,params);}else{return params;}}var _createPathParser=createPathParser(childRouters,routeConfigs,config),getPathAndParamsForRoute=_createPathParser.getPathAndParamsForRoute,_getActionForPathAndParams=_createPathParser.getActionForPathAndParams;function resetChildRoute(routeName){var initialParams=routeName===initialRouteName?initialRouteParams:undefined;var params=getParamsForRoute(routeName,initialParams);var childRouter=childRouters[routeName];if(childRouter){var childAction=NavigationActions.init();return _objectSpread({},childRouter.getStateForAction(childAction),{key:routeName,routeName:routeName,params:params});}return{key:routeName,routeName:routeName,params:params};}function getNextState(action,prevState,possibleNextState){function updateNextStateHistory(nextState){if(backBehavior!=='history'){return nextState;}var nextRouteKeyHistory=prevState?prevState.routeKeyHistory:[];if(action.type===NavigationActions.NAVIGATE){nextRouteKeyHistory=_toConsumableArray(nextRouteKeyHistory);var keyToAdd=nextState.routes[nextState.index].key;nextRouteKeyHistory=nextRouteKeyHistory.filter(function(k){return k!==keyToAdd;});nextRouteKeyHistory.push(keyToAdd);}else if(action.type===NavigationActions.BACK){nextRouteKeyHistory=_toConsumableArray(nextRouteKeyHistory);nextRouteKeyHistory.pop();}return _objectSpread({},nextState,{routeKeyHistory:nextRouteKeyHistory});}var nextState=possibleNextState;if(prevState&&prevState.index!==possibleNextState.index&&resetOnBlur){var prevRouteName=prevState.routes[prevState.index].routeName;var nextRoutes=_toConsumableArray(possibleNextState.routes);nextRoutes[prevState.index]=resetChildRoute(prevRouteName);nextState=_objectSpread({},possibleNextState,{routes:nextRoutes});}return updateNextStateHistory(nextState);}function getInitialState(){var routes=order.map(resetChildRoute);var initialState={routes:routes,index:initialRouteIndex,isTransitioning:false};if(backBehavior==='history'){var initialKey=routes[initialRouteIndex].key;initialState['routeKeyHistory']=[initialKey];}return initialState;}return{childRouters:childRouters,getActionCreators:function getActionCreators(route,stateKey){return getCustomActionCreators(route,stateKey);},getStateForAction:function getStateForAction(action,inputState){var prevState=inputState?_objectSpread({},inputState):inputState;var state=inputState||getInitialState();var activeChildIndex=state.index;if(action.type===NavigationActions.INIT){var params=action.params;if(params){state.routes=state.routes.map(function(route){return _objectSpread({},route,{params:_objectSpread({},route.params,params,route.routeName===initialRouteName?initialRouteParams:null)});});}}if(action.type===SwitchActions.JUMP_TO&&(action.key==null||action.key===state.key)){var _params=action.params;var _index=state.routes.findIndex(function(route){return route.routeName===action.routeName;});if(_index===-1){throw new Error("There is no route named '"+action.routeName+"' in the navigator with the key '"+action.key+"'.\n"+("Must be one of: "+state.routes.map(function(route){return"'"+route.routeName+"'";}).join(',')));}return getNextState(action,prevState,_objectSpread({},state,{routes:_params?state.routes.map(function(route,i){return i===_index?_objectSpread({},route,{params:_objectSpread({},route.params,_params)}):route;}):state.routes,index:_index}));}var activeChildLastState=state.routes[state.index];var activeChildRouter=childRouters[order[state.index]];if(activeChildRouter){var activeChildState=activeChildRouter.getStateForAction(action,activeChildLastState);if(!activeChildState&&inputState){return null;}if(activeChildState&&activeChildState!==activeChildLastState){var _routes=_toConsumableArray(state.routes);_routes[state.index]=activeChildState;return getNextState(action,prevState,_objectSpread({},state,{routes:_routes}));}}var isBackEligible=action.key==null||action.key===activeChildLastState.key;if(action.type===NavigationActions.BACK){if(isBackEligible&&backBehavior==='initialRoute'){activeChildIndex=initialRouteIndex;}else if(isBackEligible&&backBehavior==='order'){activeChildIndex=Math.max(0,activeChildIndex-1);}else if(isBackEligible&&backBehavior==='history'&&state.routeKeyHistory.length>1){var routeKey=state.routeKeyHistory[state.routeKeyHistory.length-2];activeChildIndex=order.indexOf(routeKey);}else{return state;}}var didNavigate=false;if(action.type===NavigationActions.NAVIGATE){didNavigate=!!order.find(function(childId,i){if(childId===action.routeName){activeChildIndex=i;return true;}return false;});if(didNavigate){var childState=state.routes[activeChildIndex];var childRouter=childRouters[action.routeName];var newChildState=childState;if(action.action&&childRouter){var childStateUpdate=childRouter.getStateForAction(action.action,childState);if(childStateUpdate){newChildState=childStateUpdate;}}if(action.params){newChildState=_objectSpread({},newChildState,{params:_objectSpread({},newChildState.params||{},action.params)});}if(newChildState!==childState){var _routes2=_toConsumableArray(state.routes);_routes2[activeChildIndex]=newChildState;var nextState=_objectSpread({},state,{routes:_routes2,index:activeChildIndex});return getNextState(action,prevState,nextState);}else if(newChildState===childState&&state.index===activeChildIndex&&prevState){return null;}}}if(action.type===NavigationActions.SET_PARAMS){var key=action.key;var lastRoute=state.routes.find(function(route){return route.key===key;});if(lastRoute){var _params2=_objectSpread({},lastRoute.params,action.params);var _routes3=_toConsumableArray(state.routes);_routes3[state.routes.indexOf(lastRoute)]=_objectSpread({},lastRoute,{params:_params2});return getNextState(action,prevState,_objectSpread({},state,{routes:_routes3}));}}if(activeChildIndex!==state.index){return getNextState(action,prevState,_objectSpread({},state,{index:activeChildIndex}));}else if(didNavigate&&!inputState){return state;}else if(didNavigate){return _objectSpread({},state);}var index=state.index;var routes=state.routes;order.find(function(childId,i){var childRouter=childRouters[childId];if(i===index){return false;}var childState=routes[i];if(childRouter){childState=childRouter.getStateForAction(action,childState);}if(!childState){index=i;return true;}if(childState!==routes[i]){routes=_toConsumableArray(routes);routes[i]=childState;index=i;return true;}return false;});if(action.preserveFocus){index=state.index;}if(index!==state.index||routes!==state.routes){return getNextState(action,prevState,_objectSpread({},state,{index:index,routes:routes}));}return state;},getComponentForState:function getComponentForState(state){var routeName=state.routes[state.index].routeName;invariant(routeName,"There is no route defined for index "+state.index+". Check that\n that you passed in a navigation state with a valid tab/screen index.");var childRouter=childRouters[routeName];if(childRouter){return childRouter.getComponentForState(state.routes[state.index]);}return getScreenForRouteName(routeConfigs,routeName);},getComponentForRouteName:function getComponentForRouteName(routeName){return getScreenForRouteName(routeConfigs,routeName);},getPathAndParamsForState:function getPathAndParamsForState(state){var route=state.routes[state.index];return getPathAndParamsForRoute(route);},getActionForPathAndParams:function getActionForPathAndParams(path,params){return _getActionForPathAndParams(path,params);},getScreenOptions:createConfigGetter(routeConfigs,config.defaultNavigationOptions)};});
|
|
2
2
|
//# sourceMappingURL=SwitchRouter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SwitchRouter.js"],"names":["invariant","getScreenForRouteName","createConfigGetter","NavigationActions","SwitchActions","validateRouteConfigMap","createPathParser","defaultActionCreators","routeConfigs","config","order","Object","keys","getCustomActionCreators","initialRouteParams","initialRouteName","backBehavior","resetOnBlur","hasOwnProperty","initialRouteIndex","indexOf","Error","map","n","join","childRouters","forEach","routeName","screen","router","getParamsForRoute","params","routeConfig","getPathAndParamsForRoute","getActionForPathAndParams","resetChildRoute","initialParams","undefined","childRouter","childAction","init","getStateForAction","key","getNextState","action","prevState","possibleNextState","updateNextStateHistory","nextState","nextRouteKeyHistory","routeKeyHistory","type","NAVIGATE","keyToAdd","routes","index","filter","k","push","BACK","pop","prevRouteName","nextRoutes","getInitialState","initialState","isTransitioning","initialKey","getActionCreators","route","stateKey","inputState","state","activeChildIndex","INIT","JUMP_TO","findIndex","i","activeChildLastState","activeChildRouter","activeChildState","isBackEligible","Math","max","length","routeKey","didNavigate","find","childId","childState","newChildState","childStateUpdate","SET_PARAMS","lastRoute","preserveFocus","getComponentForState","getComponentForRouteName","getPathAndParamsForState","path","getScreenOptions","defaultNavigationOptions"],"mappings":"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","sourcesContent":["import invariant from '../utils/invariant';\nimport getScreenForRouteName from './getScreenForRouteName';\nimport createConfigGetter from './createConfigGetter';\n\nimport * as NavigationActions from '../NavigationActions';\nimport * as SwitchActions from './SwitchActions';\nimport validateRouteConfigMap from './validateRouteConfigMap';\nimport { createPathParser } from './pathUtils';\n\nconst defaultActionCreators = () => ({});\n\nexport default (routeConfigs, config = {}) => {\n // Fail fast on invalid route definitions\n validateRouteConfigMap(routeConfigs);\n\n const order = config.order || Object.keys(routeConfigs);\n\n const getCustomActionCreators =\n config.getCustomActionCreators || defaultActionCreators;\n\n const initialRouteParams = config.initialRouteParams;\n const initialRouteName = config.initialRouteName || order[0];\n const backBehavior = config.backBehavior || 'none';\n const resetOnBlur = config.hasOwnProperty('resetOnBlur')\n ? config.resetOnBlur\n : true;\n\n const initialRouteIndex = order.indexOf(initialRouteName);\n if (initialRouteIndex === -1) {\n throw new Error(\n `Invalid initialRouteName '${initialRouteName}'.` +\n `Should be one of ${order.map(n => `\"${n}\"`).join(', ')}`\n );\n }\n\n const childRouters = {};\n order.forEach(routeName => {\n childRouters[routeName] = null;\n const screen = getScreenForRouteName(routeConfigs, routeName);\n if (screen.router) {\n childRouters[routeName] = screen.router;\n }\n });\n\n function getParamsForRoute(routeName, params) {\n let routeConfig = routeConfigs[routeName];\n if (routeConfig && routeConfig.params) {\n return { ...routeConfig.params, ...params };\n } else {\n return params;\n }\n }\n\n const {\n getPathAndParamsForRoute,\n getActionForPathAndParams,\n } = createPathParser(childRouters, routeConfigs, config);\n\n function resetChildRoute(routeName) {\n let initialParams =\n routeName === initialRouteName ? initialRouteParams : undefined;\n // note(brentvatne): merging initialRouteParams *on top* of default params\n // on the route seems incorrect but it's consistent with existing behavior\n // in stackrouter\n let params = getParamsForRoute(routeName, initialParams);\n const childRouter = childRouters[routeName];\n if (childRouter) {\n const childAction = NavigationActions.init();\n return {\n ...childRouter.getStateForAction(childAction),\n key: routeName,\n routeName,\n params,\n };\n }\n return {\n key: routeName,\n routeName,\n params,\n };\n }\n\n function getNextState(action, prevState, possibleNextState) {\n function updateNextStateHistory(nextState) {\n if (backBehavior !== 'history') {\n return nextState;\n }\n let nextRouteKeyHistory = prevState ? prevState.routeKeyHistory : [];\n if (action.type === NavigationActions.NAVIGATE) {\n nextRouteKeyHistory = [...nextRouteKeyHistory]; // copy\n const keyToAdd = nextState.routes[nextState.index].key;\n nextRouteKeyHistory = nextRouteKeyHistory.filter(k => k !== keyToAdd); // dedup\n nextRouteKeyHistory.push(keyToAdd);\n } else if (action.type === NavigationActions.BACK) {\n nextRouteKeyHistory = [...nextRouteKeyHistory]; // copy\n nextRouteKeyHistory.pop();\n }\n return {\n ...nextState,\n routeKeyHistory: nextRouteKeyHistory,\n };\n }\n\n let nextState = possibleNextState;\n if (\n prevState &&\n prevState.index !== possibleNextState.index &&\n resetOnBlur\n ) {\n const prevRouteName = prevState.routes[prevState.index].routeName;\n const nextRoutes = [...possibleNextState.routes];\n nextRoutes[prevState.index] = resetChildRoute(prevRouteName);\n nextState = {\n ...possibleNextState,\n routes: nextRoutes,\n };\n }\n return updateNextStateHistory(nextState);\n }\n\n function getInitialState() {\n const routes = order.map(resetChildRoute);\n const initialState = {\n routes,\n index: initialRouteIndex,\n isTransitioning: false,\n };\n if (backBehavior === 'history') {\n const initialKey = routes[initialRouteIndex].key;\n initialState['routeKeyHistory'] = [initialKey];\n }\n return initialState;\n }\n\n return {\n childRouters,\n\n getActionCreators(route, stateKey) {\n return getCustomActionCreators(route, stateKey);\n },\n\n getStateForAction(action, inputState) {\n let prevState = inputState ? { ...inputState } : inputState;\n let state = inputState || getInitialState();\n let activeChildIndex = state.index;\n\n if (action.type === NavigationActions.INIT) {\n // NOTE(brentvatne): this seems weird... why are we merging these\n // params into child routes?\n // ---------------------------------------------------------------\n // Merge any params from the action into all the child routes\n const { params } = action;\n if (params) {\n state.routes = state.routes.map(route => ({\n ...route,\n params: {\n ...route.params,\n ...params,\n ...(route.routeName === initialRouteName\n ? initialRouteParams\n : null),\n },\n }));\n }\n }\n\n if (\n action.type === SwitchActions.JUMP_TO &&\n (action.key == null || action.key === state.key)\n ) {\n const { params } = action;\n const index = state.routes.findIndex(\n route => route.routeName === action.routeName\n );\n\n if (index === -1) {\n throw new Error(\n `There is no route named '${\n action.routeName\n }' in the navigator with the key '${action.key}'.\\n` +\n `Must be one of: ${state.routes\n .map(route => `'${route.routeName}'`)\n .join(',')}`\n );\n }\n\n return getNextState(action, prevState, {\n ...state,\n routes: state.routes.map((route, i) =>\n i === index\n ? {\n ...route,\n params: {\n ...route.params,\n ...params,\n },\n }\n : route\n ),\n index,\n });\n }\n\n // Let the current child handle it\n const activeChildLastState = state.routes[state.index];\n const activeChildRouter = childRouters[order[state.index]];\n if (activeChildRouter) {\n const activeChildState = activeChildRouter.getStateForAction(\n action,\n activeChildLastState\n );\n if (!activeChildState && inputState) {\n return null;\n }\n if (activeChildState && activeChildState !== activeChildLastState) {\n const routes = [...state.routes];\n routes[state.index] = activeChildState;\n return getNextState(action, prevState, {\n ...state,\n routes,\n });\n }\n }\n\n // Handle tab changing. Do this after letting the current tab try to\n // handle the action, to allow inner children to change first\n const isBackEligible =\n action.key == null || action.key === activeChildLastState.key;\n if (action.type === NavigationActions.BACK) {\n if (isBackEligible && backBehavior === 'initialRoute') {\n activeChildIndex = initialRouteIndex;\n } else if (isBackEligible && backBehavior === 'order') {\n activeChildIndex = Math.max(0, activeChildIndex - 1);\n }\n // The history contains current route, so we can only go back\n // if there is more than one item in the history\n else if (\n isBackEligible &&\n backBehavior === 'history' &&\n state.routeKeyHistory.length > 1\n ) {\n const routeKey =\n state.routeKeyHistory[state.routeKeyHistory.length - 2];\n activeChildIndex = order.indexOf(routeKey);\n } else {\n return state;\n }\n }\n\n let didNavigate = false;\n if (action.type === NavigationActions.NAVIGATE) {\n didNavigate = !!order.find((childId, i) => {\n if (childId === action.routeName) {\n activeChildIndex = i;\n return true;\n }\n return false;\n });\n if (didNavigate) {\n const childState = state.routes[activeChildIndex];\n const childRouter = childRouters[action.routeName];\n let newChildState = childState;\n\n if (action.action && childRouter) {\n const childStateUpdate = childRouter.getStateForAction(\n action.action,\n childState\n );\n if (childStateUpdate) {\n newChildState = childStateUpdate;\n }\n }\n\n if (action.params) {\n newChildState = {\n ...newChildState,\n params: {\n ...(newChildState.params || {}),\n ...action.params,\n },\n };\n }\n\n if (newChildState !== childState) {\n const routes = [...state.routes];\n routes[activeChildIndex] = newChildState;\n const nextState = {\n ...state,\n routes,\n index: activeChildIndex,\n };\n return getNextState(action, prevState, nextState);\n } else if (\n newChildState === childState &&\n state.index === activeChildIndex &&\n prevState\n ) {\n return null;\n }\n }\n }\n\n if (action.type === NavigationActions.SET_PARAMS) {\n const key = action.key;\n const lastRoute = state.routes.find(route => route.key === key);\n if (lastRoute) {\n const params = {\n ...lastRoute.params,\n ...action.params,\n };\n const routes = [...state.routes];\n routes[state.routes.indexOf(lastRoute)] = {\n ...lastRoute,\n params,\n };\n return getNextState(action, prevState, {\n ...state,\n routes,\n });\n }\n }\n\n if (activeChildIndex !== state.index) {\n return getNextState(action, prevState, {\n ...state,\n index: activeChildIndex,\n });\n } else if (didNavigate && !inputState) {\n return state;\n } else if (didNavigate) {\n return { ...state };\n }\n\n // Let other children handle it and switch to the first child that returns a new state\n let index = state.index;\n let routes = state.routes;\n order.find((childId, i) => {\n const childRouter = childRouters[childId];\n if (i === index) {\n return false;\n }\n let childState = routes[i];\n if (childRouter) {\n childState = childRouter.getStateForAction(action, childState);\n }\n if (!childState) {\n index = i;\n return true;\n }\n if (childState !== routes[i]) {\n routes = [...routes];\n routes[i] = childState;\n index = i;\n return true;\n }\n return false;\n });\n\n // Nested routers can be updated after switching children with actions such as SET_PARAMS\n // and COMPLETE_TRANSITION.\n if (action.preserveFocus) {\n index = state.index;\n }\n\n if (index !== state.index || routes !== state.routes) {\n return getNextState(action, prevState, {\n ...state,\n index,\n routes,\n });\n }\n return state;\n },\n\n getComponentForState(state) {\n const routeName = state.routes[state.index].routeName;\n invariant(\n routeName,\n `There is no route defined for index ${state.index}. Check that\n that you passed in a navigation state with a valid tab/screen index.`\n );\n const childRouter = childRouters[routeName];\n if (childRouter) {\n return childRouter.getComponentForState(state.routes[state.index]);\n }\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getComponentForRouteName(routeName) {\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getPathAndParamsForState(state) {\n const route = state.routes[state.index];\n return getPathAndParamsForRoute(route);\n },\n\n getActionForPathAndParams(path, params) {\n return getActionForPathAndParams(path, params);\n },\n\n getScreenOptions: createConfigGetter(\n routeConfigs,\n config.defaultNavigationOptions\n ),\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["SwitchRouter.js"],"names":["invariant","getScreenForRouteName","createConfigGetter","NavigationActions","SwitchActions","validateRouteConfigMap","createPathParser","defaultActionCreators","routeConfigs","config","order","Object","keys","getCustomActionCreators","initialRouteParams","initialRouteName","backBehavior","resetOnBlur","hasOwnProperty","initialRouteIndex","indexOf","Error","map","n","join","childRouters","forEach","routeName","screen","router","getParamsForRoute","params","routeConfig","getPathAndParamsForRoute","getActionForPathAndParams","resetChildRoute","initialParams","undefined","childRouter","childAction","init","getStateForAction","key","getNextState","action","prevState","possibleNextState","updateNextStateHistory","nextState","nextRouteKeyHistory","routeKeyHistory","type","NAVIGATE","keyToAdd","routes","index","filter","k","push","BACK","pop","prevRouteName","nextRoutes","getInitialState","initialState","isTransitioning","initialKey","getActionCreators","route","stateKey","inputState","state","activeChildIndex","INIT","JUMP_TO","findIndex","i","activeChildLastState","activeChildRouter","activeChildState","isBackEligible","Math","max","length","routeKey","didNavigate","find","childId","childState","newChildState","childStateUpdate","SET_PARAMS","lastRoute","preserveFocus","getComponentForState","getComponentForRouteName","getPathAndParamsForState","path","getScreenOptions","defaultNavigationOptions"],"mappings":"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","sourcesContent":["import invariant from '../utils/invariant';\nimport getScreenForRouteName from './getScreenForRouteName';\nimport createConfigGetter from './createConfigGetter';\n\nimport * as NavigationActions from '../NavigationActions';\nimport * as SwitchActions from './SwitchActions';\nimport validateRouteConfigMap from './validateRouteConfigMap';\nimport { createPathParser } from './pathUtils';\n\nconst defaultActionCreators = () => ({});\n\nexport default (routeConfigs, config = {}) => {\n // Fail fast on invalid route definitions\n validateRouteConfigMap(routeConfigs);\n\n const order = config.order || Object.keys(routeConfigs);\n\n const getCustomActionCreators =\n config.getCustomActionCreators || defaultActionCreators;\n\n const initialRouteParams = config.initialRouteParams;\n const initialRouteName = config.initialRouteName || order[0];\n const backBehavior = config.backBehavior || 'none';\n const resetOnBlur = config.hasOwnProperty('resetOnBlur')\n ? config.resetOnBlur\n : true;\n\n const initialRouteIndex = order.indexOf(initialRouteName);\n if (initialRouteIndex === -1) {\n throw new Error(\n `Invalid initialRouteName '${initialRouteName}'.` +\n `Should be one of ${order.map(n => `\"${n}\"`).join(', ')}`\n );\n }\n\n const childRouters = {};\n order.forEach(routeName => {\n childRouters[routeName] = null;\n const screen = getScreenForRouteName(routeConfigs, routeName);\n if (screen.router) {\n childRouters[routeName] = screen.router;\n }\n });\n\n function getParamsForRoute(routeName, params) {\n let routeConfig = routeConfigs[routeName];\n if (routeConfig && routeConfig.params) {\n return { ...routeConfig.params, ...params };\n } else {\n return params;\n }\n }\n\n const {\n getPathAndParamsForRoute,\n getActionForPathAndParams,\n } = createPathParser(childRouters, routeConfigs, config);\n\n function resetChildRoute(routeName) {\n let initialParams =\n routeName === initialRouteName ? initialRouteParams : undefined;\n // note(brentvatne): merging initialRouteParams *on top* of default params\n // on the route seems incorrect but it's consistent with existing behavior\n // in stackrouter\n let params = getParamsForRoute(routeName, initialParams);\n const childRouter = childRouters[routeName];\n if (childRouter) {\n const childAction = NavigationActions.init();\n return {\n ...childRouter.getStateForAction(childAction),\n key: routeName,\n routeName,\n params,\n };\n }\n return {\n key: routeName,\n routeName,\n params,\n };\n }\n\n function getNextState(action, prevState, possibleNextState) {\n function updateNextStateHistory(nextState) {\n if (backBehavior !== 'history') {\n return nextState;\n }\n let nextRouteKeyHistory = prevState ? prevState.routeKeyHistory : [];\n if (action.type === NavigationActions.NAVIGATE) {\n nextRouteKeyHistory = [...nextRouteKeyHistory]; // copy\n const keyToAdd = nextState.routes[nextState.index].key;\n nextRouteKeyHistory = nextRouteKeyHistory.filter(k => k !== keyToAdd); // dedup\n nextRouteKeyHistory.push(keyToAdd);\n } else if (action.type === NavigationActions.BACK) {\n nextRouteKeyHistory = [...nextRouteKeyHistory]; // copy\n nextRouteKeyHistory.pop();\n }\n return {\n ...nextState,\n routeKeyHistory: nextRouteKeyHistory,\n };\n }\n\n let nextState = possibleNextState;\n if (\n prevState &&\n prevState.index !== possibleNextState.index &&\n resetOnBlur\n ) {\n const prevRouteName = prevState.routes[prevState.index].routeName;\n const nextRoutes = [...possibleNextState.routes];\n nextRoutes[prevState.index] = resetChildRoute(prevRouteName);\n nextState = {\n ...possibleNextState,\n routes: nextRoutes,\n };\n }\n return updateNextStateHistory(nextState);\n }\n\n function getInitialState() {\n const routes = order.map(resetChildRoute);\n const initialState = {\n routes,\n index: initialRouteIndex,\n isTransitioning: false,\n };\n if (backBehavior === 'history') {\n const initialKey = routes[initialRouteIndex].key;\n initialState['routeKeyHistory'] = [initialKey];\n }\n return initialState;\n }\n\n return {\n childRouters,\n\n getActionCreators(route, stateKey) {\n return getCustomActionCreators(route, stateKey);\n },\n\n getStateForAction(action, inputState) {\n let prevState = inputState ? { ...inputState } : inputState;\n let state = inputState || getInitialState();\n let activeChildIndex = state.index;\n\n if (action.type === NavigationActions.INIT) {\n // NOTE(brentvatne): this seems weird... why are we merging these\n // params into child routes?\n // ---------------------------------------------------------------\n // Merge any params from the action into all the child routes\n const { params } = action;\n if (params) {\n state.routes = state.routes.map(route => ({\n ...route,\n params: {\n ...route.params,\n ...params,\n ...(route.routeName === initialRouteName\n ? initialRouteParams\n : null),\n },\n }));\n }\n }\n\n if (\n action.type === SwitchActions.JUMP_TO &&\n (action.key == null || action.key === state.key)\n ) {\n const { params } = action;\n const index = state.routes.findIndex(\n route => route.routeName === action.routeName\n );\n\n if (index === -1) {\n throw new Error(\n `There is no route named '${\n action.routeName\n }' in the navigator with the key '${action.key}'.\\n` +\n `Must be one of: ${state.routes\n .map(route => `'${route.routeName}'`)\n .join(',')}`\n );\n }\n\n return getNextState(action, prevState, {\n ...state,\n routes: params\n ? state.routes.map((route, i) =>\n i === index\n ? {\n ...route,\n params: {\n ...route.params,\n ...params,\n },\n }\n : route\n )\n : state.routes,\n index,\n });\n }\n\n // Let the current child handle it\n const activeChildLastState = state.routes[state.index];\n const activeChildRouter = childRouters[order[state.index]];\n if (activeChildRouter) {\n const activeChildState = activeChildRouter.getStateForAction(\n action,\n activeChildLastState\n );\n if (!activeChildState && inputState) {\n return null;\n }\n if (activeChildState && activeChildState !== activeChildLastState) {\n const routes = [...state.routes];\n routes[state.index] = activeChildState;\n return getNextState(action, prevState, {\n ...state,\n routes,\n });\n }\n }\n\n // Handle tab changing. Do this after letting the current tab try to\n // handle the action, to allow inner children to change first\n const isBackEligible =\n action.key == null || action.key === activeChildLastState.key;\n if (action.type === NavigationActions.BACK) {\n if (isBackEligible && backBehavior === 'initialRoute') {\n activeChildIndex = initialRouteIndex;\n } else if (isBackEligible && backBehavior === 'order') {\n activeChildIndex = Math.max(0, activeChildIndex - 1);\n }\n // The history contains current route, so we can only go back\n // if there is more than one item in the history\n else if (\n isBackEligible &&\n backBehavior === 'history' &&\n state.routeKeyHistory.length > 1\n ) {\n const routeKey =\n state.routeKeyHistory[state.routeKeyHistory.length - 2];\n activeChildIndex = order.indexOf(routeKey);\n } else {\n return state;\n }\n }\n\n let didNavigate = false;\n if (action.type === NavigationActions.NAVIGATE) {\n didNavigate = !!order.find((childId, i) => {\n if (childId === action.routeName) {\n activeChildIndex = i;\n return true;\n }\n return false;\n });\n if (didNavigate) {\n const childState = state.routes[activeChildIndex];\n const childRouter = childRouters[action.routeName];\n let newChildState = childState;\n\n if (action.action && childRouter) {\n const childStateUpdate = childRouter.getStateForAction(\n action.action,\n childState\n );\n if (childStateUpdate) {\n newChildState = childStateUpdate;\n }\n }\n\n if (action.params) {\n newChildState = {\n ...newChildState,\n params: {\n ...(newChildState.params || {}),\n ...action.params,\n },\n };\n }\n\n if (newChildState !== childState) {\n const routes = [...state.routes];\n routes[activeChildIndex] = newChildState;\n const nextState = {\n ...state,\n routes,\n index: activeChildIndex,\n };\n return getNextState(action, prevState, nextState);\n } else if (\n newChildState === childState &&\n state.index === activeChildIndex &&\n prevState\n ) {\n return null;\n }\n }\n }\n\n if (action.type === NavigationActions.SET_PARAMS) {\n const key = action.key;\n const lastRoute = state.routes.find(route => route.key === key);\n if (lastRoute) {\n const params = {\n ...lastRoute.params,\n ...action.params,\n };\n const routes = [...state.routes];\n routes[state.routes.indexOf(lastRoute)] = {\n ...lastRoute,\n params,\n };\n return getNextState(action, prevState, {\n ...state,\n routes,\n });\n }\n }\n\n if (activeChildIndex !== state.index) {\n return getNextState(action, prevState, {\n ...state,\n index: activeChildIndex,\n });\n } else if (didNavigate && !inputState) {\n return state;\n } else if (didNavigate) {\n return { ...state };\n }\n\n // Let other children handle it and switch to the first child that returns a new state\n let index = state.index;\n let routes = state.routes;\n order.find((childId, i) => {\n const childRouter = childRouters[childId];\n if (i === index) {\n return false;\n }\n let childState = routes[i];\n if (childRouter) {\n childState = childRouter.getStateForAction(action, childState);\n }\n if (!childState) {\n index = i;\n return true;\n }\n if (childState !== routes[i]) {\n routes = [...routes];\n routes[i] = childState;\n index = i;\n return true;\n }\n return false;\n });\n\n // Nested routers can be updated after switching children with actions such as SET_PARAMS\n // and COMPLETE_TRANSITION.\n if (action.preserveFocus) {\n index = state.index;\n }\n\n if (index !== state.index || routes !== state.routes) {\n return getNextState(action, prevState, {\n ...state,\n index,\n routes,\n });\n }\n return state;\n },\n\n getComponentForState(state) {\n const routeName = state.routes[state.index].routeName;\n invariant(\n routeName,\n `There is no route defined for index ${state.index}. Check that\n that you passed in a navigation state with a valid tab/screen index.`\n );\n const childRouter = childRouters[routeName];\n if (childRouter) {\n return childRouter.getComponentForState(state.routes[state.index]);\n }\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getComponentForRouteName(routeName) {\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getPathAndParamsForState(state) {\n const route = state.routes[state.index];\n return getPathAndParamsForRoute(route);\n },\n\n getActionForPathAndParams(path, params) {\n return getActionForPathAndParams(path, params);\n },\n\n getScreenOptions: createConfigGetter(\n routeConfigs,\n config.defaultNavigationOptions\n ),\n };\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/brentvatne/coding/react-navigation-core/src/routers/__tests__/PathHandling-test.js";import React from'react';import SwitchRouter from'../SwitchRouter';import StackRouter from'../StackRouter';import TabRouter from'../TabRouter';import*as NavigationActions from'../../NavigationActions';import{_TESTING_ONLY_normalize_keys}from'../KeyGenerator.ts';beforeEach(function(){_TESTING_ONLY_normalize_keys();});var performRouterTest=function performRouterTest(createTestRouter){var ListScreen=function ListScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:16}});};var ProfileNavigator=function ProfileNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:18}});};ProfileNavigator.router=StackRouter({list:{path:'list/:id',screen:ListScreen}});var MainNavigator=function MainNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:26}});};MainNavigator.router=StackRouter({profile:{path:'p/:id',screen:ProfileNavigator}});var LoginScreen=function LoginScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:34}});};var AuthNavigator=function AuthNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:36}});};AuthNavigator.router=StackRouter({login:{screen:LoginScreen}});var BarScreen=function BarScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:43}});};var FooNavigator=function(_React$Component){_inherits(FooNavigator,_React$Component);function FooNavigator(){_classCallCheck(this,FooNavigator);return _possibleConstructorReturn(this,_getPrototypeOf(FooNavigator).apply(this,arguments));}_createClass(FooNavigator,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:53}});}}]);return FooNavigator;}(React.Component);FooNavigator.router=StackRouter({bar:{path:'b/:barThing',screen:BarScreen}});var PersonScreen=function PersonScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:57}});};var testRouter=createTestRouter({main:{screen:MainNavigator},baz:{path:null,screen:FooNavigator},auth:{screen:AuthNavigator},person:{path:'people/:id',screen:PersonScreen},foo:{path:'fo/:fooThing',screen:FooNavigator}});it('Handles empty URIs with empty action',function(){var router=createTestRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:84}});}},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:87}});}}},{initialRouteName:'Bar',initialRouteParams:{foo:42}});var action=router.getActionForPathAndParams('');expect(action).toEqual(null);var state=router.getStateForAction(action||NavigationActions.init());expect(state.routes[state.index]).toEqual(expect.objectContaining({routeName:'Bar',params:{foo:42}}));});it('Handles paths with several params',function(){var router=createTestRouter({Person:{path:'people/:person',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:107}});}},Task:{path:'people/:person/tasks/:task',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:111}});}},ThingA:{path:'things/:good',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:115}});}},Thing:{path:'things/:good/:thing',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:119}});}}});var action=router.getActionForPathAndParams('people/brent/tasks/everything');expect(action).toEqual({type:NavigationActions.NAVIGATE,routeName:'Task',params:{person:'brent',task:'everything'}});var action1=router.getActionForPathAndParams('people/lucy');expect(action1).toEqual({type:NavigationActions.NAVIGATE,routeName:'Person',params:{person:'lucy'}});var action2=router.getActionForPathAndParams('things/foo/bar');expect(action2).toEqual({type:NavigationActions.NAVIGATE,routeName:'Thing',params:{good:'foo',thing:'bar'}});var action3=router.getActionForPathAndParams('things/foo');expect(action3).toEqual({type:NavigationActions.NAVIGATE,routeName:'ThingA',params:{good:'foo'}});});it('Handles empty path configuration',function(){var router=createTestRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:156}});}},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:159}});},path:''}});var action=router.getActionForPathAndParams('');expect(action).toEqual({type:NavigationActions.NAVIGATE,routeName:'Bar',params:{}});});it('Handles wildcard path configuration',function(){var router=createTestRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:174}});}},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:177}});},path:':something'}});var action=router.getActionForPathAndParams('');expect(action).toEqual(null);var action1=router.getActionForPathAndParams('Foo');expect(action1).toEqual({type:NavigationActions.NAVIGATE,routeName:'Foo',params:{}});var action2=router.getActionForPathAndParams('asdf');expect(action2).toEqual({type:NavigationActions.NAVIGATE,routeName:'Bar',params:{something:'asdf'}});});it('Null path behavior',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:199}});};var router=createTestRouter({Bar:{screen:ScreenA},Foo:{path:null,screen:ScreenA},Baz:{path:'',screen:ScreenA}});var action0=router.getActionForPathAndParams('test/random',{});expect(action0).toBe(null);var action1=router.getActionForPathAndParams('',{});expect(action1.routeName).toBe('Baz');var state1=router.getStateForAction(action1);expect(state1.routes[state1.index].routeName).toBe('Baz');});it('Multiple null path sub routers path behavior',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:223}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:224}});};ScreenB.router=createTestRouter({Foo:ScreenA});var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:228}});};ScreenC.router=createTestRouter({Bar:{path:'bar/:id',screen:ScreenA},Empty:{path:'',screen:ScreenA}});var router=createTestRouter({A:{screen:ScreenA},B:{path:null,screen:ScreenB},C:{path:null,screen:ScreenC}});var action0=router.getActionForPathAndParams('Foo',{});expect(action0.routeName).toBe('B');expect(action0.action.routeName).toBe('Foo');var action1=router.getActionForPathAndParams('',{});expect(action1.routeName).toBe('C');expect(action1.action.routeName).toBe('Empty');var action2=router.getActionForPathAndParams('A',{});expect(action2.routeName).toBe('A');var action3=router.getActionForPathAndParams('bar/asdf',{});expect(action3.routeName).toBe('C');expect(action3.action.routeName).toBe('Bar');expect(action3.action.params.id).toBe('asdf');});it('Null and empty string path sub routers behavior',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:270}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:271}});};ScreenB.router=createTestRouter({Foo:ScreenA,Baz:{screen:ScreenA,path:''}});var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:279}});};ScreenC.router=createTestRouter({Boo:ScreenA,Bar:ScreenA,Baz:{screen:ScreenA,path:''}});var router=createTestRouter({B:{path:null,screen:ScreenB},C:{path:'',screen:ScreenC}});var action0=router.getActionForPathAndParams('',{});expect(action0.routeName).toBe('C');expect(action0.action.routeName).toBe('Baz');var action1=router.getActionForPathAndParams('Foo',{});expect(action1.routeName).toBe('B');expect(action1.action.routeName).toBe('Foo');var action2=router.getActionForPathAndParams('Bar',{});expect(action2.routeName).toBe('C');expect(action2.action.routeName).toBe('Bar');var action3=router.getActionForPathAndParams('unknown',{});expect(action3).toBe(null);});it('Empty path acts as wildcard for nested router',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:315}});};var Foo=function Foo(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:316}});};var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:317}});};ScreenC.router=createTestRouter({Boo:ScreenA,Bar:ScreenA});Foo.router=createTestRouter({Quo:ScreenA,Qux:{screen:ScreenC,path:''}});var router=createTestRouter({Bar:{screen:ScreenA},Foo:Foo});var action0=router.getActionForPathAndParams('Foo/Bar',{});expect(action0.routeName).toBe('Foo');expect(action0.action.routeName).toBe('Qux');expect(action0.action.action.routeName).toBe('Bar');});it('Gets deep path with pure wildcard match',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:342}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:343}});};var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:344}});};ScreenA.router=createTestRouter({Boo:{path:'boo',screen:ScreenC},Baz:{path:'baz/:bazId',screen:ScreenB}});ScreenC.router=createTestRouter({Boo2:{path:'',screen:ScreenB}});var router=createTestRouter({Foo:{path:null,screen:ScreenA},Bar:{screen:ScreenB}});{var state={index:0,routes:[{index:1,key:'Foo',routeName:'Foo',params:{id:'123'},routes:[{index:0,key:'Boo',routeName:'Boo',routes:[{key:'Boo2',routeName:'Boo2'}]},{key:'Baz',routeName:'Baz',params:{bazId:'321'}}]},{key:'Bar',routeName:'Bar'}]};var _router$getPathAndPar=router.getPathAndParamsForState(state),path=_router$getPathAndPar.path,params=_router$getPathAndPar.params;expect(path).toEqual('baz/321');expect(params.id).toEqual('123');}{var _state={index:0,routes:[{index:0,key:'Foo',routeName:'Foo',params:{id:'123'},routes:[{index:0,key:'Boo',routeName:'Boo',routes:[{key:'Boo2',routeName:'Boo2'}]},{key:'Baz',routeName:'Baz',params:{bazId:'321'}}]},{key:'Bar',routeName:'Bar'}]};var _router$getPathAndPar2=router.getPathAndParamsForState(_state),_path=_router$getPathAndPar2.path,_params=_router$getPathAndPar2.params;expect(_path).toEqual('boo');expect(_params).toEqual({id:'123'});}});it('URI encoded string get passed to deep link',function(){var uri='people/2018%2F02%2F07';var action=testRouter.getActionForPathAndParams(uri);expect(action).toEqual({routeName:'person',params:{id:'2018/02/07'},type:NavigationActions.NAVIGATE});var malformedUri='people/%E0%A4%A';var action2=testRouter.getActionForPathAndParams(malformedUri);expect(action2).toEqual({routeName:'person',params:{id:'%E0%A4%A'},type:NavigationActions.NAVIGATE});});it('URI encoded path param gets parsed and correctly printed',function(){var action=testRouter.getActionForPathAndParams('people/Henry%20L');expect(action).toEqual({routeName:'person',params:{id:'Henry L'},type:NavigationActions.NAVIGATE});var s=testRouter.getStateForAction(action);var out=testRouter.getPathAndParamsForState(s);expect(out.path).toEqual('people/Henry%20L');expect(out.params).toEqual({});});it('Querystring params get passed to nested deep link',function(){var action=testRouter.getActionForPathAndParams('main/p/4/list/10259959195',{code:'test',foo:'bar'});expect(action).toEqual({type:NavigationActions.NAVIGATE,routeName:'main',params:{code:'test',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'profile',params:{id:'4',code:'test',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'list',params:{id:'10259959195',code:'test',foo:'bar'}}}});var action2=testRouter.getActionForPathAndParams('main/p/4/list/10259959195',{code:'',foo:'bar'});expect(action2).toEqual({type:NavigationActions.NAVIGATE,routeName:'main',params:{code:'',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'profile',params:{id:'4',code:'',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'list',params:{id:'10259959195',code:'',foo:'bar'}}}});});it('paths option on router overrides path from route config',function(){var router=createTestRouter({main:{screen:MainNavigator},baz:{path:null,screen:FooNavigator}},{paths:{baz:'overridden'}});var action=router.getActionForPathAndParams('overridden',{});expect(action.type).toEqual(NavigationActions.NAVIGATE);expect(action.routeName).toEqual('baz');});it('paths option set as null on router overrides path from route config',function(){var router=createTestRouter({main:{screen:MainNavigator},baz:{path:'bazPath',screen:FooNavigator}},{paths:{baz:null}});var action=router.getActionForPathAndParams('b/noBaz',{});expect(action.type).toEqual(NavigationActions.NAVIGATE);expect(action.routeName).toEqual('baz');});};describe('Path handling for stack router',function(){performRouterTest(StackRouter);});describe('Path handling for switch router',function(){performRouterTest(SwitchRouter);});it('Handles nested switch routers',function(){var AScreen=function AScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:567}});};var DocsNavigator=function DocsNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:568}});};DocsNavigator.router=SwitchRouter({A:AScreen,B:AScreen,C:AScreen});DocsNavigator.path='docs';var router=SwitchRouter({Docs:DocsNavigator,D:AScreen});var action=router.getActionForPathAndParams('docs/B',{});expect(action.type).toEqual(NavigationActions.NAVIGATE);expect(action.routeName).toEqual('Docs');expect(action.action.type).toEqual(NavigationActions.NAVIGATE);expect(action.action.routeName).toEqual('B');});var performRouteNameAsPathDisabledTest=function performRouteNameAsPathDisabledTest(createTestRouter){var BScreen=function BScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:588}});};var NestedNavigator=function NestedNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:589}});};NestedNavigator.router=createTestRouter({B:{screen:BScreen,path:'baz'}});var router=createTestRouter({A:NestedNavigator},{disableRouteNamePaths:true});it('disableRouteNamePaths option on router prevent the default path to be the routeName',function(){var action=router.getActionForPathAndParams('baz',{});expect(action.routeName).toBe('A');expect(action.action.routeName).toBe('B');});};describe('Stack router handles disableRouteNamePaths',function(){performRouteNameAsPathDisabledTest(StackRouter);});describe('Switch router handles disableRouteNamePaths',function(){performRouteNameAsPathDisabledTest(SwitchRouter);});describe('Tab router handles disableRouteNamePaths',function(){performRouteNameAsPathDisabledTest(TabRouter);});
|
|
1
|
+
import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-core/src/routers/__tests__/PathHandling-test.js";import React from'react';import SwitchRouter from'../SwitchRouter';import StackRouter from'../StackRouter';import TabRouter from'../TabRouter';import*as NavigationActions from'../../NavigationActions';import{_TESTING_ONLY_normalize_keys}from'../KeyGenerator.ts';beforeEach(function(){_TESTING_ONLY_normalize_keys();});var performRouterTest=function performRouterTest(createTestRouter){var ListScreen=function ListScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:16}});};var ProfileNavigator=function ProfileNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:18}});};ProfileNavigator.router=StackRouter({list:{path:'list/:id',screen:ListScreen}});var MainNavigator=function MainNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:26}});};MainNavigator.router=StackRouter({profile:{path:'p/:id',screen:ProfileNavigator}});var LoginScreen=function LoginScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:34}});};var AuthNavigator=function AuthNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:36}});};AuthNavigator.router=StackRouter({login:{screen:LoginScreen}});var BarScreen=function BarScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:43}});};var FooNavigator=function(_React$Component){_inherits(FooNavigator,_React$Component);function FooNavigator(){_classCallCheck(this,FooNavigator);return _possibleConstructorReturn(this,_getPrototypeOf(FooNavigator).apply(this,arguments));}_createClass(FooNavigator,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:53}});}}]);return FooNavigator;}(React.Component);FooNavigator.router=StackRouter({bar:{path:'b/:barThing',screen:BarScreen}});var PersonScreen=function PersonScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:57}});};var testRouter=createTestRouter({main:{screen:MainNavigator},baz:{path:null,screen:FooNavigator},auth:{screen:AuthNavigator},person:{path:'people/:id',screen:PersonScreen},foo:{path:'fo/:fooThing',screen:FooNavigator}});it('Handles empty URIs with empty action',function(){var router=createTestRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:84}});}},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:87}});}}},{initialRouteName:'Bar',initialRouteParams:{foo:42}});var action=router.getActionForPathAndParams('');expect(action).toEqual(null);var state=router.getStateForAction(action||NavigationActions.init());expect(state.routes[state.index]).toEqual(expect.objectContaining({routeName:'Bar',params:{foo:42}}));});it('Handles paths with several params',function(){var router=createTestRouter({Person:{path:'people/:person',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:107}});}},Task:{path:'people/:person/tasks/:task',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:111}});}},ThingA:{path:'things/:good',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:115}});}},Thing:{path:'things/:good/:thing',screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:119}});}}});var action=router.getActionForPathAndParams('people/brent/tasks/everything');expect(action).toEqual({type:NavigationActions.NAVIGATE,routeName:'Task',params:{person:'brent',task:'everything'}});var action1=router.getActionForPathAndParams('people/lucy');expect(action1).toEqual({type:NavigationActions.NAVIGATE,routeName:'Person',params:{person:'lucy'}});var action2=router.getActionForPathAndParams('things/foo/bar');expect(action2).toEqual({type:NavigationActions.NAVIGATE,routeName:'Thing',params:{good:'foo',thing:'bar'}});var action3=router.getActionForPathAndParams('things/foo');expect(action3).toEqual({type:NavigationActions.NAVIGATE,routeName:'ThingA',params:{good:'foo'}});});it('Handles empty path configuration',function(){var router=createTestRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:156}});}},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:159}});},path:''}});var action=router.getActionForPathAndParams('');expect(action).toEqual({type:NavigationActions.NAVIGATE,routeName:'Bar',params:{}});});it('Handles wildcard path configuration',function(){var router=createTestRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:174}});}},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:177}});},path:':something'}});var action=router.getActionForPathAndParams('');expect(action).toEqual(null);var action1=router.getActionForPathAndParams('Foo');expect(action1).toEqual({type:NavigationActions.NAVIGATE,routeName:'Foo',params:{}});var action2=router.getActionForPathAndParams('asdf');expect(action2).toEqual({type:NavigationActions.NAVIGATE,routeName:'Bar',params:{something:'asdf'}});});it('Null path behavior',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:199}});};var router=createTestRouter({Bar:{screen:ScreenA},Foo:{path:null,screen:ScreenA},Baz:{path:'',screen:ScreenA}});var action0=router.getActionForPathAndParams('test/random',{});expect(action0).toBe(null);var action1=router.getActionForPathAndParams('',{});expect(action1.routeName).toBe('Baz');var state1=router.getStateForAction(action1);expect(state1.routes[state1.index].routeName).toBe('Baz');});it('Multiple null path sub routers path behavior',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:223}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:224}});};ScreenB.router=createTestRouter({Foo:ScreenA});var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:228}});};ScreenC.router=createTestRouter({Bar:{path:'bar/:id',screen:ScreenA},Empty:{path:'',screen:ScreenA}});var router=createTestRouter({A:{screen:ScreenA},B:{path:null,screen:ScreenB},C:{path:null,screen:ScreenC}});var action0=router.getActionForPathAndParams('Foo',{});expect(action0.routeName).toBe('B');expect(action0.action.routeName).toBe('Foo');var action1=router.getActionForPathAndParams('',{});expect(action1.routeName).toBe('C');expect(action1.action.routeName).toBe('Empty');var action2=router.getActionForPathAndParams('A',{});expect(action2.routeName).toBe('A');var action3=router.getActionForPathAndParams('bar/asdf',{});expect(action3.routeName).toBe('C');expect(action3.action.routeName).toBe('Bar');expect(action3.action.params.id).toBe('asdf');});it('Null and empty string path sub routers behavior',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:270}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:271}});};ScreenB.router=createTestRouter({Foo:ScreenA,Baz:{screen:ScreenA,path:''}});var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:279}});};ScreenC.router=createTestRouter({Boo:ScreenA,Bar:ScreenA,Baz:{screen:ScreenA,path:''}});var router=createTestRouter({B:{path:null,screen:ScreenB},C:{path:'',screen:ScreenC}});var action0=router.getActionForPathAndParams('',{});expect(action0.routeName).toBe('C');expect(action0.action.routeName).toBe('Baz');var action1=router.getActionForPathAndParams('Foo',{});expect(action1.routeName).toBe('B');expect(action1.action.routeName).toBe('Foo');var action2=router.getActionForPathAndParams('Bar',{});expect(action2.routeName).toBe('C');expect(action2.action.routeName).toBe('Bar');var action3=router.getActionForPathAndParams('unknown',{});expect(action3).toBe(null);});it('Empty path acts as wildcard for nested router',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:315}});};var Foo=function Foo(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:316}});};var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:317}});};ScreenC.router=createTestRouter({Boo:ScreenA,Bar:ScreenA});Foo.router=createTestRouter({Quo:ScreenA,Qux:{screen:ScreenC,path:''}});var router=createTestRouter({Bar:{screen:ScreenA},Foo:Foo});var action0=router.getActionForPathAndParams('Foo/Bar',{});expect(action0.routeName).toBe('Foo');expect(action0.action.routeName).toBe('Qux');expect(action0.action.action.routeName).toBe('Bar');});it('Gets deep path with pure wildcard match',function(){var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:342}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:343}});};var ScreenC=function ScreenC(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:344}});};ScreenA.router=createTestRouter({Boo:{path:'boo',screen:ScreenC},Baz:{path:'baz/:bazId',screen:ScreenB}});ScreenC.router=createTestRouter({Boo2:{path:'',screen:ScreenB}});var router=createTestRouter({Foo:{path:null,screen:ScreenA},Bar:{screen:ScreenB}});{var state={index:0,routes:[{index:1,key:'Foo',routeName:'Foo',params:{id:'123'},routes:[{index:0,key:'Boo',routeName:'Boo',routes:[{key:'Boo2',routeName:'Boo2'}]},{key:'Baz',routeName:'Baz',params:{bazId:'321'}}]},{key:'Bar',routeName:'Bar'}]};var _router$getPathAndPar=router.getPathAndParamsForState(state),path=_router$getPathAndPar.path,params=_router$getPathAndPar.params;expect(path).toEqual('baz/321');expect(params.id).toEqual('123');}{var _state={index:0,routes:[{index:0,key:'Foo',routeName:'Foo',params:{id:'123'},routes:[{index:0,key:'Boo',routeName:'Boo',routes:[{key:'Boo2',routeName:'Boo2'}]},{key:'Baz',routeName:'Baz',params:{bazId:'321'}}]},{key:'Bar',routeName:'Bar'}]};var _router$getPathAndPar2=router.getPathAndParamsForState(_state),_path=_router$getPathAndPar2.path,_params=_router$getPathAndPar2.params;expect(_path).toEqual('boo');expect(_params).toEqual({id:'123'});}});it('URI encoded string get passed to deep link',function(){var uri='people/2018%2F02%2F07';var action=testRouter.getActionForPathAndParams(uri);expect(action).toEqual({routeName:'person',params:{id:'2018/02/07'},type:NavigationActions.NAVIGATE});var malformedUri='people/%E0%A4%A';var action2=testRouter.getActionForPathAndParams(malformedUri);expect(action2).toEqual({routeName:'person',params:{id:'%E0%A4%A'},type:NavigationActions.NAVIGATE});});it('URI encoded path param gets parsed and correctly printed',function(){var action=testRouter.getActionForPathAndParams('people/Henry%20L');expect(action).toEqual({routeName:'person',params:{id:'Henry L'},type:NavigationActions.NAVIGATE});var s=testRouter.getStateForAction(action);var out=testRouter.getPathAndParamsForState(s);expect(out.path).toEqual('people/Henry%20L');expect(out.params).toEqual({});});it('Querystring params get passed to nested deep link',function(){var action=testRouter.getActionForPathAndParams('main/p/4/list/10259959195',{code:'test',foo:'bar'});expect(action).toEqual({type:NavigationActions.NAVIGATE,routeName:'main',params:{code:'test',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'profile',params:{id:'4',code:'test',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'list',params:{id:'10259959195',code:'test',foo:'bar'}}}});var action2=testRouter.getActionForPathAndParams('main/p/4/list/10259959195',{code:'',foo:'bar'});expect(action2).toEqual({type:NavigationActions.NAVIGATE,routeName:'main',params:{code:'',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'profile',params:{id:'4',code:'',foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'list',params:{id:'10259959195',code:'',foo:'bar'}}}});});it('paths option on router overrides path from route config',function(){var router=createTestRouter({main:{screen:MainNavigator},baz:{path:null,screen:FooNavigator}},{paths:{baz:'overridden'}});var action=router.getActionForPathAndParams('overridden',{});expect(action.type).toEqual(NavigationActions.NAVIGATE);expect(action.routeName).toEqual('baz');});it('paths option set as null on router overrides path from route config',function(){var router=createTestRouter({main:{screen:MainNavigator},baz:{path:'bazPath',screen:FooNavigator}},{paths:{baz:null}});var action=router.getActionForPathAndParams('b/noBaz',{});expect(action.type).toEqual(NavigationActions.NAVIGATE);expect(action.routeName).toEqual('baz');});};describe('Path handling for stack router',function(){performRouterTest(StackRouter);});describe('Path handling for switch router',function(){performRouterTest(SwitchRouter);});it('Handles nested switch routers',function(){var AScreen=function AScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:567}});};var DocsNavigator=function DocsNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:568}});};DocsNavigator.router=SwitchRouter({A:AScreen,B:AScreen,C:AScreen});DocsNavigator.path='docs';var router=SwitchRouter({Docs:DocsNavigator,D:AScreen});var action=router.getActionForPathAndParams('docs/B',{});expect(action.type).toEqual(NavigationActions.NAVIGATE);expect(action.routeName).toEqual('Docs');expect(action.action.type).toEqual(NavigationActions.NAVIGATE);expect(action.action.routeName).toEqual('B');});var performRouteNameAsPathDisabledTest=function performRouteNameAsPathDisabledTest(createTestRouter){var BScreen=function BScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:588}});};var NestedNavigator=function NestedNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:589}});};NestedNavigator.router=createTestRouter({B:{screen:BScreen,path:'baz'}});var router=createTestRouter({A:NestedNavigator},{disableRouteNamePaths:true});it('disableRouteNamePaths option on router prevent the default path to be the routeName',function(){var action=router.getActionForPathAndParams('baz',{});expect(action.routeName).toBe('A');expect(action.action.routeName).toBe('B');});};describe('Stack router handles disableRouteNamePaths',function(){performRouteNameAsPathDisabledTest(StackRouter);});describe('Switch router handles disableRouteNamePaths',function(){performRouteNameAsPathDisabledTest(SwitchRouter);});describe('Tab router handles disableRouteNamePaths',function(){performRouteNameAsPathDisabledTest(TabRouter);});
|
|
2
2
|
//# sourceMappingURL=PathHandling-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PathHandling-test.js"],"names":["React","SwitchRouter","StackRouter","TabRouter","NavigationActions","_TESTING_ONLY_normalize_keys","beforeEach","performRouterTest","createTestRouter","ListScreen","ProfileNavigator","router","list","path","screen","MainNavigator","profile","LoginScreen","AuthNavigator","login","BarScreen","FooNavigator","Component","bar","PersonScreen","testRouter","main","baz","auth","person","foo","it","Foo","Bar","initialRouteName","initialRouteParams","action","getActionForPathAndParams","expect","toEqual","state","getStateForAction","init","routes","index","objectContaining","routeName","params","Person","Task","ThingA","Thing","type","NAVIGATE","task","action1","action2","good","thing","action3","something","ScreenA","Baz","action0","toBe","state1","ScreenB","ScreenC","Empty","A","B","C","id","Boo","Quo","Qux","Boo2","key","bazId","getPathAndParamsForState","uri","malformedUri","s","out","code","paths","describe","AScreen","DocsNavigator","Docs","D","performRouteNameAsPathDisabledTest","BScreen","NestedNavigator","disableRouteNamePaths"],"mappings":"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","sourcesContent":["/* eslint no-shadow:0, react/no-multi-comp:0, react/display-name:0 */\n\nimport React from 'react';\n\nimport SwitchRouter from '../SwitchRouter';\nimport StackRouter from '../StackRouter';\nimport TabRouter from '../TabRouter';\nimport * as NavigationActions from '../../NavigationActions';\nimport { _TESTING_ONLY_normalize_keys } from '../KeyGenerator.ts';\n\nbeforeEach(() => {\n _TESTING_ONLY_normalize_keys();\n});\n\nconst performRouterTest = createTestRouter => {\n const ListScreen = () => <div />;\n\n const ProfileNavigator = () => <div />;\n ProfileNavigator.router = StackRouter({\n list: {\n path: 'list/:id',\n screen: ListScreen,\n },\n });\n\n const MainNavigator = () => <div />;\n MainNavigator.router = StackRouter({\n profile: {\n path: 'p/:id',\n screen: ProfileNavigator,\n },\n });\n\n const LoginScreen = () => <div />;\n\n const AuthNavigator = () => <div />;\n AuthNavigator.router = StackRouter({\n login: {\n screen: LoginScreen,\n },\n });\n\n const BarScreen = () => <div />;\n\n class FooNavigator extends React.Component {\n static router = StackRouter({\n bar: {\n path: 'b/:barThing',\n screen: BarScreen,\n },\n });\n render() {\n return <div />;\n }\n }\n\n const PersonScreen = () => <div />;\n\n const testRouter = createTestRouter({\n main: {\n screen: MainNavigator,\n },\n baz: {\n path: null,\n screen: FooNavigator,\n },\n auth: {\n screen: AuthNavigator,\n },\n person: {\n path: 'people/:id',\n screen: PersonScreen,\n },\n foo: {\n path: 'fo/:fooThing',\n screen: FooNavigator,\n },\n });\n\n it('Handles empty URIs with empty action', () => {\n const router = createTestRouter(\n {\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n },\n },\n { initialRouteName: 'Bar', initialRouteParams: { foo: 42 } }\n );\n const action = router.getActionForPathAndParams('');\n expect(action).toEqual(null);\n const state = router.getStateForAction(action || NavigationActions.init());\n expect(state.routes[state.index]).toEqual(\n expect.objectContaining({\n routeName: 'Bar',\n params: { foo: 42 },\n })\n );\n });\n\n it('Handles paths with several params', () => {\n const router = createTestRouter({\n Person: {\n path: 'people/:person',\n screen: () => <div />,\n },\n Task: {\n path: 'people/:person/tasks/:task',\n screen: () => <div />,\n },\n ThingA: {\n path: 'things/:good',\n screen: () => <div />,\n },\n Thing: {\n path: 'things/:good/:thing',\n screen: () => <div />,\n },\n });\n const action = router.getActionForPathAndParams(\n 'people/brent/tasks/everything'\n );\n expect(action).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Task',\n params: { person: 'brent', task: 'everything' },\n });\n\n const action1 = router.getActionForPathAndParams('people/lucy');\n expect(action1).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Person',\n params: { person: 'lucy' },\n });\n\n const action2 = router.getActionForPathAndParams('things/foo/bar');\n expect(action2).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Thing',\n params: { good: 'foo', thing: 'bar' },\n });\n\n const action3 = router.getActionForPathAndParams('things/foo');\n expect(action3).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'ThingA',\n params: { good: 'foo' },\n });\n });\n\n it('Handles empty path configuration', () => {\n const router = createTestRouter({\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n path: '',\n },\n });\n const action = router.getActionForPathAndParams('');\n expect(action).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n params: {},\n });\n });\n\n it('Handles wildcard path configuration', () => {\n const router = createTestRouter({\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n path: ':something',\n },\n });\n const action = router.getActionForPathAndParams('');\n expect(action).toEqual(null);\n\n const action1 = router.getActionForPathAndParams('Foo');\n expect(action1).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Foo',\n params: {},\n });\n const action2 = router.getActionForPathAndParams('asdf');\n expect(action2).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n params: { something: 'asdf' },\n });\n });\n\n it('Null path behavior', () => {\n const ScreenA = () => <div />;\n const router = createTestRouter({\n Bar: {\n screen: ScreenA,\n },\n Foo: {\n path: null,\n screen: ScreenA,\n },\n Baz: {\n path: '',\n screen: ScreenA,\n },\n });\n const action0 = router.getActionForPathAndParams('test/random', {});\n expect(action0).toBe(null);\n\n const action1 = router.getActionForPathAndParams('', {});\n expect(action1.routeName).toBe('Baz');\n const state1 = router.getStateForAction(action1);\n expect(state1.routes[state1.index].routeName).toBe('Baz');\n });\n\n it('Multiple null path sub routers path behavior', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenB.router = createTestRouter({\n Foo: ScreenA,\n });\n const ScreenC = () => <div />;\n ScreenC.router = createTestRouter({\n Bar: {\n path: 'bar/:id',\n screen: ScreenA,\n },\n Empty: {\n path: '',\n screen: ScreenA,\n },\n });\n const router = createTestRouter({\n A: {\n screen: ScreenA,\n },\n B: {\n path: null,\n screen: ScreenB,\n },\n C: {\n path: null,\n screen: ScreenC,\n },\n });\n const action0 = router.getActionForPathAndParams('Foo', {});\n expect(action0.routeName).toBe('B');\n expect(action0.action.routeName).toBe('Foo');\n\n const action1 = router.getActionForPathAndParams('', {});\n expect(action1.routeName).toBe('C');\n expect(action1.action.routeName).toBe('Empty');\n\n const action2 = router.getActionForPathAndParams('A', {});\n expect(action2.routeName).toBe('A');\n\n const action3 = router.getActionForPathAndParams('bar/asdf', {});\n expect(action3.routeName).toBe('C');\n expect(action3.action.routeName).toBe('Bar');\n expect(action3.action.params.id).toBe('asdf');\n });\n\n it('Null and empty string path sub routers behavior', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenB.router = createTestRouter({\n Foo: ScreenA,\n Baz: {\n screen: ScreenA,\n path: '',\n },\n });\n const ScreenC = () => <div />;\n ScreenC.router = createTestRouter({\n Boo: ScreenA,\n Bar: ScreenA,\n Baz: {\n screen: ScreenA,\n path: '',\n },\n });\n const router = createTestRouter({\n B: {\n path: null,\n screen: ScreenB,\n },\n C: {\n path: '',\n screen: ScreenC,\n },\n });\n const action0 = router.getActionForPathAndParams('', {});\n expect(action0.routeName).toBe('C');\n expect(action0.action.routeName).toBe('Baz');\n\n const action1 = router.getActionForPathAndParams('Foo', {});\n expect(action1.routeName).toBe('B');\n expect(action1.action.routeName).toBe('Foo');\n\n const action2 = router.getActionForPathAndParams('Bar', {});\n expect(action2.routeName).toBe('C');\n expect(action2.action.routeName).toBe('Bar');\n\n const action3 = router.getActionForPathAndParams('unknown', {});\n expect(action3).toBe(null);\n });\n\n it('Empty path acts as wildcard for nested router', () => {\n const ScreenA = () => <div />;\n const Foo = () => <div />;\n const ScreenC = () => <div />;\n ScreenC.router = createTestRouter({\n Boo: ScreenA,\n Bar: ScreenA,\n });\n Foo.router = createTestRouter({\n Quo: ScreenA,\n Qux: {\n screen: ScreenC,\n path: '',\n },\n });\n const router = createTestRouter({\n Bar: {\n screen: ScreenA,\n },\n Foo,\n });\n const action0 = router.getActionForPathAndParams('Foo/Bar', {});\n expect(action0.routeName).toBe('Foo');\n expect(action0.action.routeName).toBe('Qux');\n expect(action0.action.action.routeName).toBe('Bar');\n });\n\n it('Gets deep path with pure wildcard match', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const ScreenC = () => <div />;\n ScreenA.router = createTestRouter({\n Boo: { path: 'boo', screen: ScreenC },\n Baz: { path: 'baz/:bazId', screen: ScreenB },\n });\n ScreenC.router = createTestRouter({\n Boo2: { path: '', screen: ScreenB },\n });\n const router = createTestRouter({\n Foo: {\n path: null,\n screen: ScreenA,\n },\n Bar: {\n screen: ScreenB,\n },\n });\n\n {\n const state = {\n index: 0,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n params: {\n id: '123',\n },\n routes: [\n {\n index: 0,\n key: 'Boo',\n routeName: 'Boo',\n routes: [{ key: 'Boo2', routeName: 'Boo2' }],\n },\n { key: 'Baz', routeName: 'Baz', params: { bazId: '321' } },\n ],\n },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n const { path, params } = router.getPathAndParamsForState(state);\n expect(path).toEqual('baz/321');\n expect(params.id).toEqual('123');\n }\n\n {\n const state = {\n index: 0,\n routes: [\n {\n index: 0,\n key: 'Foo',\n routeName: 'Foo',\n params: {\n id: '123',\n },\n routes: [\n {\n index: 0,\n key: 'Boo',\n routeName: 'Boo',\n routes: [{ key: 'Boo2', routeName: 'Boo2' }],\n },\n { key: 'Baz', routeName: 'Baz', params: { bazId: '321' } },\n ],\n },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n const { path, params } = router.getPathAndParamsForState(state);\n expect(path).toEqual('boo');\n expect(params).toEqual({ id: '123' });\n }\n });\n\n it('URI encoded string get passed to deep link', () => {\n const uri = 'people/2018%2F02%2F07';\n const action = testRouter.getActionForPathAndParams(uri);\n expect(action).toEqual({\n routeName: 'person',\n params: {\n id: '2018/02/07',\n },\n type: NavigationActions.NAVIGATE,\n });\n\n const malformedUri = 'people/%E0%A4%A';\n const action2 = testRouter.getActionForPathAndParams(malformedUri);\n expect(action2).toEqual({\n routeName: 'person',\n params: {\n id: '%E0%A4%A',\n },\n type: NavigationActions.NAVIGATE,\n });\n });\n\n it('URI encoded path param gets parsed and correctly printed', () => {\n const action = testRouter.getActionForPathAndParams('people/Henry%20L');\n expect(action).toEqual({\n routeName: 'person',\n params: {\n id: 'Henry L',\n },\n type: NavigationActions.NAVIGATE,\n });\n const s = testRouter.getStateForAction(action);\n const out = testRouter.getPathAndParamsForState(s);\n expect(out.path).toEqual('people/Henry%20L');\n expect(out.params).toEqual({});\n });\n\n it('Querystring params get passed to nested deep link', () => {\n const action = testRouter.getActionForPathAndParams(\n 'main/p/4/list/10259959195',\n { code: 'test', foo: 'bar' }\n );\n expect(action).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'main',\n params: {\n code: 'test',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'profile',\n params: {\n id: '4',\n code: 'test',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'list',\n params: {\n id: '10259959195',\n code: 'test',\n foo: 'bar',\n },\n },\n },\n });\n\n const action2 = testRouter.getActionForPathAndParams(\n 'main/p/4/list/10259959195',\n { code: '', foo: 'bar' }\n );\n expect(action2).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'main',\n params: {\n code: '',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'profile',\n params: {\n id: '4',\n code: '',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'list',\n params: {\n id: '10259959195',\n code: '',\n foo: 'bar',\n },\n },\n },\n });\n });\n\n it('paths option on router overrides path from route config', () => {\n const router = createTestRouter(\n {\n main: {\n screen: MainNavigator,\n },\n baz: {\n path: null,\n screen: FooNavigator,\n },\n },\n { paths: { baz: 'overridden' } }\n );\n const action = router.getActionForPathAndParams('overridden', {});\n expect(action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.routeName).toEqual('baz');\n });\n\n it('paths option set as null on router overrides path from route config', () => {\n const router = createTestRouter(\n {\n main: {\n screen: MainNavigator,\n },\n baz: {\n path: 'bazPath',\n screen: FooNavigator,\n },\n },\n { paths: { baz: null } }\n );\n const action = router.getActionForPathAndParams('b/noBaz', {});\n expect(action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.routeName).toEqual('baz');\n });\n};\n\ndescribe('Path handling for stack router', () => {\n performRouterTest(StackRouter);\n});\ndescribe('Path handling for switch router', () => {\n performRouterTest(SwitchRouter);\n});\n\nit('Handles nested switch routers', () => {\n const AScreen = () => <div />;\n const DocsNavigator = () => <div />;\n DocsNavigator.router = SwitchRouter({\n A: AScreen,\n B: AScreen,\n C: AScreen,\n });\n DocsNavigator.path = 'docs';\n const router = SwitchRouter({\n Docs: DocsNavigator,\n D: AScreen,\n });\n const action = router.getActionForPathAndParams('docs/B', {});\n\n expect(action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.routeName).toEqual('Docs');\n expect(action.action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.action.routeName).toEqual('B');\n});\n\nconst performRouteNameAsPathDisabledTest = createTestRouter => {\n const BScreen = () => <div />;\n const NestedNavigator = () => <div />;\n NestedNavigator.router = createTestRouter({\n B: {\n screen: BScreen,\n path: 'baz',\n },\n });\n const router = createTestRouter(\n {\n A: NestedNavigator,\n },\n { disableRouteNamePaths: true }\n );\n\n it('disableRouteNamePaths option on router prevent the default path to be the routeName', () => {\n const action = router.getActionForPathAndParams('baz', {});\n\n expect(action.routeName).toBe('A');\n expect(action.action.routeName).toBe('B');\n });\n};\n\ndescribe('Stack router handles disableRouteNamePaths', () => {\n performRouteNameAsPathDisabledTest(StackRouter);\n});\n\ndescribe('Switch router handles disableRouteNamePaths', () => {\n performRouteNameAsPathDisabledTest(SwitchRouter);\n});\n\ndescribe('Tab router handles disableRouteNamePaths', () => {\n performRouteNameAsPathDisabledTest(TabRouter);\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["PathHandling-test.js"],"names":["React","SwitchRouter","StackRouter","TabRouter","NavigationActions","_TESTING_ONLY_normalize_keys","beforeEach","performRouterTest","createTestRouter","ListScreen","ProfileNavigator","router","list","path","screen","MainNavigator","profile","LoginScreen","AuthNavigator","login","BarScreen","FooNavigator","Component","bar","PersonScreen","testRouter","main","baz","auth","person","foo","it","Foo","Bar","initialRouteName","initialRouteParams","action","getActionForPathAndParams","expect","toEqual","state","getStateForAction","init","routes","index","objectContaining","routeName","params","Person","Task","ThingA","Thing","type","NAVIGATE","task","action1","action2","good","thing","action3","something","ScreenA","Baz","action0","toBe","state1","ScreenB","ScreenC","Empty","A","B","C","id","Boo","Quo","Qux","Boo2","key","bazId","getPathAndParamsForState","uri","malformedUri","s","out","code","paths","describe","AScreen","DocsNavigator","Docs","D","performRouteNameAsPathDisabledTest","BScreen","NestedNavigator","disableRouteNamePaths"],"mappings":"wcAEA,MAAOA,CAAAA,KAAP,KAAkB,OAAlB,CAEA,MAAOC,CAAAA,YAAP,KAAyB,iBAAzB,CACA,MAAOC,CAAAA,WAAP,KAAwB,gBAAxB,CACA,MAAOC,CAAAA,SAAP,KAAsB,cAAtB,CACA,MAAO,GAAKC,CAAAA,iBAAZ,KAAmC,yBAAnC,CACA,OAASC,4BAAT,KAA6C,oBAA7C,CAEAC,UAAU,CAAC,UAAM,CACfD,4BAA4B,GAC7B,CAFS,CAAV,CAIA,GAAME,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,CAAAC,gBAAgB,CAAI,CAC5C,GAAMC,CAAAA,UAAU,CAAG,QAAbA,CAAAA,UAAa,SAAM,4EAAN,EAAnB,CAEA,GAAMC,CAAAA,gBAAgB,CAAG,QAAnBA,CAAAA,gBAAmB,SAAM,4EAAN,EAAzB,CACAA,gBAAgB,CAACC,MAAjB,CAA0BT,WAAW,CAAC,CACpCU,IAAI,CAAE,CACJC,IAAI,CAAE,UADF,CAEJC,MAAM,CAAEL,UAFJ,CAD8B,CAAD,CAArC,CAOA,GAAMM,CAAAA,aAAa,CAAG,QAAhBA,CAAAA,aAAgB,SAAM,4EAAN,EAAtB,CACAA,aAAa,CAACJ,MAAd,CAAuBT,WAAW,CAAC,CACjCc,OAAO,CAAE,CACPH,IAAI,CAAE,OADC,CAEPC,MAAM,CAAEJ,gBAFD,CADwB,CAAD,CAAlC,CAOA,GAAMO,CAAAA,WAAW,CAAG,QAAdA,CAAAA,WAAc,SAAM,4EAAN,EAApB,CAEA,GAAMC,CAAAA,aAAa,CAAG,QAAhBA,CAAAA,aAAgB,SAAM,4EAAN,EAAtB,CACAA,aAAa,CAACP,MAAd,CAAuBT,WAAW,CAAC,CACjCiB,KAAK,CAAE,CACLL,MAAM,CAAEG,WADH,CAD0B,CAAD,CAAlC,CAMA,GAAMG,CAAAA,SAAS,CAAG,QAAZA,CAAAA,SAAY,SAAM,4EAAN,EAAlB,CA5B4C,GA8BtCC,CAAAA,YA9BsC,6RAqCjC,CACP,MAAO,4EAAP,CACD,CAvCyC,0BA8BjBrB,KAAK,CAACsB,SA9BW,EA8BtCD,YA9BsC,CA+BnCV,MA/BmC,CA+B1BT,WAAW,CAAC,CAC1BqB,GAAG,CAAE,CACHV,IAAI,CAAE,aADH,CAEHC,MAAM,CAAEM,SAFL,CADqB,CAAD,CA/Be,CA0C5C,GAAMI,CAAAA,YAAY,CAAG,QAAfA,CAAAA,YAAe,SAAM,4EAAN,EAArB,CAEA,GAAMC,CAAAA,UAAU,CAAGjB,gBAAgB,CAAC,CAClCkB,IAAI,CAAE,CACJZ,MAAM,CAAEC,aADJ,CAD4B,CAIlCY,GAAG,CAAE,CACHd,IAAI,CAAE,IADH,CAEHC,MAAM,CAAEO,YAFL,CAJ6B,CAQlCO,IAAI,CAAE,CACJd,MAAM,CAAEI,aADJ,CAR4B,CAWlCW,MAAM,CAAE,CACNhB,IAAI,CAAE,YADA,CAENC,MAAM,CAAEU,YAFF,CAX0B,CAelCM,GAAG,CAAE,CACHjB,IAAI,CAAE,cADH,CAEHC,MAAM,CAAEO,YAFL,CAf6B,CAAD,CAAnC,CAqBAU,EAAE,CAAC,sCAAD,CAAyC,UAAM,CAC/C,GAAMpB,CAAAA,MAAM,CAAGH,gBAAgB,CAC7B,CACEwB,GAAG,CAAE,CACHlB,MAAM,CAAE,wBAAM,4EAAN,EADL,CADP,CAIEmB,GAAG,CAAE,CACHnB,MAAM,CAAE,wBAAM,4EAAN,EADL,CAJP,CAD6B,CAS7B,CAAEoB,gBAAgB,CAAE,KAApB,CAA2BC,kBAAkB,CAAE,CAAEL,GAAG,CAAE,EAAP,CAA/C,CAT6B,CAA/B,CAWA,GAAMM,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,EAAjC,CAAf,CACAC,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,IAAvB,EACA,GAAMC,CAAAA,KAAK,CAAG7B,MAAM,CAAC8B,iBAAP,CAAyBL,MAAM,EAAIhC,iBAAiB,CAACsC,IAAlB,EAAnC,CAAd,CACAJ,MAAM,CAACE,KAAK,CAACG,MAAN,CAAaH,KAAK,CAACI,KAAnB,CAAD,CAAN,CAAkCL,OAAlC,CACED,MAAM,CAACO,gBAAP,CAAwB,CACtBC,SAAS,CAAE,KADW,CAEtBC,MAAM,CAAE,CAAEjB,GAAG,CAAE,EAAP,CAFc,CAAxB,CADF,EAMD,CArBC,CAAF,CAuBAC,EAAE,CAAC,mCAAD,CAAsC,UAAM,CAC5C,GAAMpB,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9BwC,MAAM,CAAE,CACNnC,IAAI,CAAE,gBADA,CAENC,MAAM,CAAE,wBAAM,6EAAN,EAFF,CADsB,CAK9BmC,IAAI,CAAE,CACJpC,IAAI,CAAE,4BADF,CAEJC,MAAM,CAAE,wBAAM,6EAAN,EAFJ,CALwB,CAS9BoC,MAAM,CAAE,CACNrC,IAAI,CAAE,cADA,CAENC,MAAM,CAAE,wBAAM,6EAAN,EAFF,CATsB,CAa9BqC,KAAK,CAAE,CACLtC,IAAI,CAAE,qBADD,CAELC,MAAM,CAAE,wBAAM,6EAAN,EAFH,CAbuB,CAAD,CAA/B,CAkBA,GAAMsB,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CACb,+BADa,CAAf,CAGAC,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,CACrBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADH,CAErBP,SAAS,CAAE,MAFU,CAGrBC,MAAM,CAAE,CAAElB,MAAM,CAAE,OAAV,CAAmByB,IAAI,CAAE,YAAzB,CAHa,CAAvB,EAMA,GAAMC,CAAAA,OAAO,CAAG5C,MAAM,CAAC0B,yBAAP,CAAiC,aAAjC,CAAhB,CACAC,MAAM,CAACiB,OAAD,CAAN,CAAgBhB,OAAhB,CAAwB,CACtBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADF,CAEtBP,SAAS,CAAE,QAFW,CAGtBC,MAAM,CAAE,CAAElB,MAAM,CAAE,MAAV,CAHc,CAAxB,EAMA,GAAM2B,CAAAA,OAAO,CAAG7C,MAAM,CAAC0B,yBAAP,CAAiC,gBAAjC,CAAhB,CACAC,MAAM,CAACkB,OAAD,CAAN,CAAgBjB,OAAhB,CAAwB,CACtBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADF,CAEtBP,SAAS,CAAE,OAFW,CAGtBC,MAAM,CAAE,CAAEU,IAAI,CAAE,KAAR,CAAeC,KAAK,CAAE,KAAtB,CAHc,CAAxB,EAMA,GAAMC,CAAAA,OAAO,CAAGhD,MAAM,CAAC0B,yBAAP,CAAiC,YAAjC,CAAhB,CACAC,MAAM,CAACqB,OAAD,CAAN,CAAgBpB,OAAhB,CAAwB,CACtBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADF,CAEtBP,SAAS,CAAE,QAFW,CAGtBC,MAAM,CAAE,CAAEU,IAAI,CAAE,KAAR,CAHc,CAAxB,EAKD,CAhDC,CAAF,CAkDA1B,EAAE,CAAC,kCAAD,CAAqC,UAAM,CAC3C,GAAMpB,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9BwB,GAAG,CAAE,CACHlB,MAAM,CAAE,wBAAM,6EAAN,EADL,CADyB,CAI9BmB,GAAG,CAAE,CACHnB,MAAM,CAAE,wBAAM,6EAAN,EADL,CAEHD,IAAI,CAAE,EAFH,CAJyB,CAAD,CAA/B,CASA,GAAMuB,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,EAAjC,CAAf,CACAC,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,CACrBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADH,CAErBP,SAAS,CAAE,KAFU,CAGrBC,MAAM,CAAE,EAHa,CAAvB,EAKD,CAhBC,CAAF,CAkBAhB,EAAE,CAAC,qCAAD,CAAwC,UAAM,CAC9C,GAAMpB,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9BwB,GAAG,CAAE,CACHlB,MAAM,CAAE,wBAAM,6EAAN,EADL,CADyB,CAI9BmB,GAAG,CAAE,CACHnB,MAAM,CAAE,wBAAM,6EAAN,EADL,CAEHD,IAAI,CAAE,YAFH,CAJyB,CAAD,CAA/B,CASA,GAAMuB,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,EAAjC,CAAf,CACAC,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,IAAvB,EAEA,GAAMgB,CAAAA,OAAO,CAAG5C,MAAM,CAAC0B,yBAAP,CAAiC,KAAjC,CAAhB,CACAC,MAAM,CAACiB,OAAD,CAAN,CAAgBhB,OAAhB,CAAwB,CACtBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADF,CAEtBP,SAAS,CAAE,KAFW,CAGtBC,MAAM,CAAE,EAHc,CAAxB,EAKA,GAAMS,CAAAA,OAAO,CAAG7C,MAAM,CAAC0B,yBAAP,CAAiC,MAAjC,CAAhB,CACAC,MAAM,CAACkB,OAAD,CAAN,CAAgBjB,OAAhB,CAAwB,CACtBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADF,CAEtBP,SAAS,CAAE,KAFW,CAGtBC,MAAM,CAAE,CAAEa,SAAS,CAAE,MAAb,CAHc,CAAxB,EAKD,CAzBC,CAAF,CA2BA7B,EAAE,CAAC,oBAAD,CAAuB,UAAM,CAC7B,GAAM8B,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMlD,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9ByB,GAAG,CAAE,CACHnB,MAAM,CAAE+C,OADL,CADyB,CAI9B7B,GAAG,CAAE,CACHnB,IAAI,CAAE,IADH,CAEHC,MAAM,CAAE+C,OAFL,CAJyB,CAQ9BC,GAAG,CAAE,CACHjD,IAAI,CAAE,EADH,CAEHC,MAAM,CAAE+C,OAFL,CARyB,CAAD,CAA/B,CAaA,GAAME,CAAAA,OAAO,CAAGpD,MAAM,CAAC0B,yBAAP,CAAiC,aAAjC,CAAgD,EAAhD,CAAhB,CACAC,MAAM,CAACyB,OAAD,CAAN,CAAgBC,IAAhB,CAAqB,IAArB,EAEA,GAAMT,CAAAA,OAAO,CAAG5C,MAAM,CAAC0B,yBAAP,CAAiC,EAAjC,CAAqC,EAArC,CAAhB,CACAC,MAAM,CAACiB,OAAO,CAACT,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,KAA/B,EACA,GAAMC,CAAAA,MAAM,CAAGtD,MAAM,CAAC8B,iBAAP,CAAyBc,OAAzB,CAAf,CACAjB,MAAM,CAAC2B,MAAM,CAACtB,MAAP,CAAcsB,MAAM,CAACrB,KAArB,EAA4BE,SAA7B,CAAN,CAA8CkB,IAA9C,CAAmD,KAAnD,EACD,CAtBC,CAAF,CAwBAjC,EAAE,CAAC,8CAAD,CAAiD,UAAM,CACvD,GAAM8B,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMK,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACAA,OAAO,CAACvD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCwB,GAAG,CAAE6B,OAD2B,CAAD,CAAjC,CAGA,GAAMM,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACAA,OAAO,CAACxD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCyB,GAAG,CAAE,CACHpB,IAAI,CAAE,SADH,CAEHC,MAAM,CAAE+C,OAFL,CAD2B,CAKhCO,KAAK,CAAE,CACLvD,IAAI,CAAE,EADD,CAELC,MAAM,CAAE+C,OAFH,CALyB,CAAD,CAAjC,CAUA,GAAMlD,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9B6D,CAAC,CAAE,CACDvD,MAAM,CAAE+C,OADP,CAD2B,CAI9BS,CAAC,CAAE,CACDzD,IAAI,CAAE,IADL,CAEDC,MAAM,CAAEoD,OAFP,CAJ2B,CAQ9BK,CAAC,CAAE,CACD1D,IAAI,CAAE,IADL,CAEDC,MAAM,CAAEqD,OAFP,CAR2B,CAAD,CAA/B,CAaA,GAAMJ,CAAAA,OAAO,CAAGpD,MAAM,CAAC0B,yBAAP,CAAiC,KAAjC,CAAwC,EAAxC,CAAhB,CACAC,MAAM,CAACyB,OAAO,CAACjB,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EACA1B,MAAM,CAACyB,OAAO,CAAC3B,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,KAAtC,EAEA,GAAMT,CAAAA,OAAO,CAAG5C,MAAM,CAAC0B,yBAAP,CAAiC,EAAjC,CAAqC,EAArC,CAAhB,CACAC,MAAM,CAACiB,OAAO,CAACT,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EACA1B,MAAM,CAACiB,OAAO,CAACnB,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,OAAtC,EAEA,GAAMR,CAAAA,OAAO,CAAG7C,MAAM,CAAC0B,yBAAP,CAAiC,GAAjC,CAAsC,EAAtC,CAAhB,CACAC,MAAM,CAACkB,OAAO,CAACV,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EAEA,GAAML,CAAAA,OAAO,CAAGhD,MAAM,CAAC0B,yBAAP,CAAiC,UAAjC,CAA6C,EAA7C,CAAhB,CACAC,MAAM,CAACqB,OAAO,CAACb,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EACA1B,MAAM,CAACqB,OAAO,CAACvB,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,KAAtC,EACA1B,MAAM,CAACqB,OAAO,CAACvB,MAAR,CAAeW,MAAf,CAAsByB,EAAvB,CAAN,CAAiCR,IAAjC,CAAsC,MAAtC,EACD,CA7CC,CAAF,CA+CAjC,EAAE,CAAC,iDAAD,CAAoD,UAAM,CAC1D,GAAM8B,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMK,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACAA,OAAO,CAACvD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCwB,GAAG,CAAE6B,OAD2B,CAEhCC,GAAG,CAAE,CACHhD,MAAM,CAAE+C,OADL,CAEHhD,IAAI,CAAE,EAFH,CAF2B,CAAD,CAAjC,CAOA,GAAMsD,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACAA,OAAO,CAACxD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCiE,GAAG,CAAEZ,OAD2B,CAEhC5B,GAAG,CAAE4B,OAF2B,CAGhCC,GAAG,CAAE,CACHhD,MAAM,CAAE+C,OADL,CAEHhD,IAAI,CAAE,EAFH,CAH2B,CAAD,CAAjC,CAQA,GAAMF,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9B8D,CAAC,CAAE,CACDzD,IAAI,CAAE,IADL,CAEDC,MAAM,CAAEoD,OAFP,CAD2B,CAK9BK,CAAC,CAAE,CACD1D,IAAI,CAAE,EADL,CAEDC,MAAM,CAAEqD,OAFP,CAL2B,CAAD,CAA/B,CAUA,GAAMJ,CAAAA,OAAO,CAAGpD,MAAM,CAAC0B,yBAAP,CAAiC,EAAjC,CAAqC,EAArC,CAAhB,CACAC,MAAM,CAACyB,OAAO,CAACjB,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EACA1B,MAAM,CAACyB,OAAO,CAAC3B,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,KAAtC,EAEA,GAAMT,CAAAA,OAAO,CAAG5C,MAAM,CAAC0B,yBAAP,CAAiC,KAAjC,CAAwC,EAAxC,CAAhB,CACAC,MAAM,CAACiB,OAAO,CAACT,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EACA1B,MAAM,CAACiB,OAAO,CAACnB,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,KAAtC,EAEA,GAAMR,CAAAA,OAAO,CAAG7C,MAAM,CAAC0B,yBAAP,CAAiC,KAAjC,CAAwC,EAAxC,CAAhB,CACAC,MAAM,CAACkB,OAAO,CAACV,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,GAA/B,EACA1B,MAAM,CAACkB,OAAO,CAACpB,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,KAAtC,EAEA,GAAML,CAAAA,OAAO,CAAGhD,MAAM,CAAC0B,yBAAP,CAAiC,SAAjC,CAA4C,EAA5C,CAAhB,CACAC,MAAM,CAACqB,OAAD,CAAN,CAAgBK,IAAhB,CAAqB,IAArB,EACD,CA3CC,CAAF,CA6CAjC,EAAE,CAAC,+CAAD,CAAkD,UAAM,CACxD,GAAM8B,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAM7B,CAAAA,GAAG,CAAG,QAANA,CAAAA,GAAM,SAAM,6EAAN,EAAZ,CACA,GAAMmC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACAA,OAAO,CAACxD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCiE,GAAG,CAAEZ,OAD2B,CAEhC5B,GAAG,CAAE4B,OAF2B,CAAD,CAAjC,CAIA7B,GAAG,CAACrB,MAAJ,CAAaH,gBAAgB,CAAC,CAC5BkE,GAAG,CAAEb,OADuB,CAE5Bc,GAAG,CAAE,CACH7D,MAAM,CAAEqD,OADL,CAEHtD,IAAI,CAAE,EAFH,CAFuB,CAAD,CAA7B,CAOA,GAAMF,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9ByB,GAAG,CAAE,CACHnB,MAAM,CAAE+C,OADL,CADyB,CAI9B7B,GAAG,CAAHA,GAJ8B,CAAD,CAA/B,CAMA,GAAM+B,CAAAA,OAAO,CAAGpD,MAAM,CAAC0B,yBAAP,CAAiC,SAAjC,CAA4C,EAA5C,CAAhB,CACAC,MAAM,CAACyB,OAAO,CAACjB,SAAT,CAAN,CAA0BkB,IAA1B,CAA+B,KAA/B,EACA1B,MAAM,CAACyB,OAAO,CAAC3B,MAAR,CAAeU,SAAhB,CAAN,CAAiCkB,IAAjC,CAAsC,KAAtC,EACA1B,MAAM,CAACyB,OAAO,CAAC3B,MAAR,CAAeA,MAAf,CAAsBU,SAAvB,CAAN,CAAwCkB,IAAxC,CAA6C,KAA7C,EACD,CAzBC,CAAF,CA2BAjC,EAAE,CAAC,yCAAD,CAA4C,UAAM,CAClD,GAAM8B,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMK,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACAN,OAAO,CAAClD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCiE,GAAG,CAAE,CAAE5D,IAAI,CAAE,KAAR,CAAeC,MAAM,CAAEqD,OAAvB,CAD2B,CAEhCL,GAAG,CAAE,CAAEjD,IAAI,CAAE,YAAR,CAAsBC,MAAM,CAAEoD,OAA9B,CAF2B,CAAD,CAAjC,CAIAC,OAAO,CAACxD,MAAR,CAAiBH,gBAAgB,CAAC,CAChCoE,IAAI,CAAE,CAAE/D,IAAI,CAAE,EAAR,CAAYC,MAAM,CAAEoD,OAApB,CAD0B,CAAD,CAAjC,CAGA,GAAMvD,CAAAA,MAAM,CAAGH,gBAAgB,CAAC,CAC9BwB,GAAG,CAAE,CACHnB,IAAI,CAAE,IADH,CAEHC,MAAM,CAAE+C,OAFL,CADyB,CAK9B5B,GAAG,CAAE,CACHnB,MAAM,CAAEoD,OADL,CALyB,CAAD,CAA/B,CAUA,CACE,GAAM1B,CAAAA,KAAK,CAAG,CACZI,KAAK,CAAE,CADK,CAEZD,MAAM,CAAE,CACN,CACEC,KAAK,CAAE,CADT,CAEEiC,GAAG,CAAE,KAFP,CAGE/B,SAAS,CAAE,KAHb,CAIEC,MAAM,CAAE,CACNyB,EAAE,CAAE,KADE,CAJV,CAOE7B,MAAM,CAAE,CACN,CACEC,KAAK,CAAE,CADT,CAEEiC,GAAG,CAAE,KAFP,CAGE/B,SAAS,CAAE,KAHb,CAIEH,MAAM,CAAE,CAAC,CAAEkC,GAAG,CAAE,MAAP,CAAe/B,SAAS,CAAE,MAA1B,CAAD,CAJV,CADM,CAON,CAAE+B,GAAG,CAAE,KAAP,CAAc/B,SAAS,CAAE,KAAzB,CAAgCC,MAAM,CAAE,CAAE+B,KAAK,CAAE,KAAT,CAAxC,CAPM,CAPV,CADM,CAkBN,CAAED,GAAG,CAAE,KAAP,CAAc/B,SAAS,CAAE,KAAzB,CAlBM,CAFI,CAAd,CADF,0BAwB2BnC,MAAM,CAACoE,wBAAP,CAAgCvC,KAAhC,CAxB3B,CAwBU3B,IAxBV,uBAwBUA,IAxBV,CAwBgBkC,MAxBhB,uBAwBgBA,MAxBhB,CAyBET,MAAM,CAACzB,IAAD,CAAN,CAAa0B,OAAb,CAAqB,SAArB,EACAD,MAAM,CAACS,MAAM,CAACyB,EAAR,CAAN,CAAkBjC,OAAlB,CAA0B,KAA1B,EACD,CAED,CACE,GAAMC,CAAAA,MAAK,CAAG,CACZI,KAAK,CAAE,CADK,CAEZD,MAAM,CAAE,CACN,CACEC,KAAK,CAAE,CADT,CAEEiC,GAAG,CAAE,KAFP,CAGE/B,SAAS,CAAE,KAHb,CAIEC,MAAM,CAAE,CACNyB,EAAE,CAAE,KADE,CAJV,CAOE7B,MAAM,CAAE,CACN,CACEC,KAAK,CAAE,CADT,CAEEiC,GAAG,CAAE,KAFP,CAGE/B,SAAS,CAAE,KAHb,CAIEH,MAAM,CAAE,CAAC,CAAEkC,GAAG,CAAE,MAAP,CAAe/B,SAAS,CAAE,MAA1B,CAAD,CAJV,CADM,CAON,CAAE+B,GAAG,CAAE,KAAP,CAAc/B,SAAS,CAAE,KAAzB,CAAgCC,MAAM,CAAE,CAAE+B,KAAK,CAAE,KAAT,CAAxC,CAPM,CAPV,CADM,CAkBN,CAAED,GAAG,CAAE,KAAP,CAAc/B,SAAS,CAAE,KAAzB,CAlBM,CAFI,CAAd,CADF,2BAwB2BnC,MAAM,CAACoE,wBAAP,CAAgCvC,MAAhC,CAxB3B,CAwBU3B,KAxBV,wBAwBUA,IAxBV,CAwBgBkC,OAxBhB,wBAwBgBA,MAxBhB,CAyBET,MAAM,CAACzB,KAAD,CAAN,CAAa0B,OAAb,CAAqB,KAArB,EACAD,MAAM,CAACS,OAAD,CAAN,CAAeR,OAAf,CAAuB,CAAEiC,EAAE,CAAE,KAAN,CAAvB,EACD,CACF,CA9EC,CAAF,CAgFAzC,EAAE,CAAC,4CAAD,CAA+C,UAAM,CACrD,GAAMiD,CAAAA,GAAG,CAAG,uBAAZ,CACA,GAAM5C,CAAAA,MAAM,CAAGX,UAAU,CAACY,yBAAX,CAAqC2C,GAArC,CAAf,CACA1C,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,CACrBO,SAAS,CAAE,QADU,CAErBC,MAAM,CAAE,CACNyB,EAAE,CAAE,YADE,CAFa,CAKrBpB,IAAI,CAAEhD,iBAAiB,CAACiD,QALH,CAAvB,EAQA,GAAM4B,CAAAA,YAAY,CAAG,iBAArB,CACA,GAAMzB,CAAAA,OAAO,CAAG/B,UAAU,CAACY,yBAAX,CAAqC4C,YAArC,CAAhB,CACA3C,MAAM,CAACkB,OAAD,CAAN,CAAgBjB,OAAhB,CAAwB,CACtBO,SAAS,CAAE,QADW,CAEtBC,MAAM,CAAE,CACNyB,EAAE,CAAE,UADE,CAFc,CAKtBpB,IAAI,CAAEhD,iBAAiB,CAACiD,QALF,CAAxB,EAOD,CApBC,CAAF,CAsBAtB,EAAE,CAAC,0DAAD,CAA6D,UAAM,CACnE,GAAMK,CAAAA,MAAM,CAAGX,UAAU,CAACY,yBAAX,CAAqC,kBAArC,CAAf,CACAC,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,CACrBO,SAAS,CAAE,QADU,CAErBC,MAAM,CAAE,CACNyB,EAAE,CAAE,SADE,CAFa,CAKrBpB,IAAI,CAAEhD,iBAAiB,CAACiD,QALH,CAAvB,EAOA,GAAM6B,CAAAA,CAAC,CAAGzD,UAAU,CAACgB,iBAAX,CAA6BL,MAA7B,CAAV,CACA,GAAM+C,CAAAA,GAAG,CAAG1D,UAAU,CAACsD,wBAAX,CAAoCG,CAApC,CAAZ,CACA5C,MAAM,CAAC6C,GAAG,CAACtE,IAAL,CAAN,CAAiB0B,OAAjB,CAAyB,kBAAzB,EACAD,MAAM,CAAC6C,GAAG,CAACpC,MAAL,CAAN,CAAmBR,OAAnB,CAA2B,EAA3B,EACD,CAbC,CAAF,CAeAR,EAAE,CAAC,mDAAD,CAAsD,UAAM,CAC5D,GAAMK,CAAAA,MAAM,CAAGX,UAAU,CAACY,yBAAX,CACb,2BADa,CAEb,CAAE+C,IAAI,CAAE,MAAR,CAAgBtD,GAAG,CAAE,KAArB,CAFa,CAAf,CAIAQ,MAAM,CAACF,MAAD,CAAN,CAAeG,OAAf,CAAuB,CACrBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADH,CAErBP,SAAS,CAAE,MAFU,CAGrBC,MAAM,CAAE,CACNqC,IAAI,CAAE,MADA,CAENtD,GAAG,CAAE,KAFC,CAHa,CAOrBM,MAAM,CAAE,CACNgB,IAAI,CAAEhD,iBAAiB,CAACiD,QADlB,CAENP,SAAS,CAAE,SAFL,CAGNC,MAAM,CAAE,CACNyB,EAAE,CAAE,GADE,CAENY,IAAI,CAAE,MAFA,CAGNtD,GAAG,CAAE,KAHC,CAHF,CAQNM,MAAM,CAAE,CACNgB,IAAI,CAAEhD,iBAAiB,CAACiD,QADlB,CAENP,SAAS,CAAE,MAFL,CAGNC,MAAM,CAAE,CACNyB,EAAE,CAAE,aADE,CAENY,IAAI,CAAE,MAFA,CAGNtD,GAAG,CAAE,KAHC,CAHF,CARF,CAPa,CAAvB,EA2BA,GAAM0B,CAAAA,OAAO,CAAG/B,UAAU,CAACY,yBAAX,CACd,2BADc,CAEd,CAAE+C,IAAI,CAAE,EAAR,CAAYtD,GAAG,CAAE,KAAjB,CAFc,CAAhB,CAIAQ,MAAM,CAACkB,OAAD,CAAN,CAAgBjB,OAAhB,CAAwB,CACtBa,IAAI,CAAEhD,iBAAiB,CAACiD,QADF,CAEtBP,SAAS,CAAE,MAFW,CAGtBC,MAAM,CAAE,CACNqC,IAAI,CAAE,EADA,CAENtD,GAAG,CAAE,KAFC,CAHc,CAOtBM,MAAM,CAAE,CACNgB,IAAI,CAAEhD,iBAAiB,CAACiD,QADlB,CAENP,SAAS,CAAE,SAFL,CAGNC,MAAM,CAAE,CACNyB,EAAE,CAAE,GADE,CAENY,IAAI,CAAE,EAFA,CAGNtD,GAAG,CAAE,KAHC,CAHF,CAQNM,MAAM,CAAE,CACNgB,IAAI,CAAEhD,iBAAiB,CAACiD,QADlB,CAENP,SAAS,CAAE,MAFL,CAGNC,MAAM,CAAE,CACNyB,EAAE,CAAE,aADE,CAENY,IAAI,CAAE,EAFA,CAGNtD,GAAG,CAAE,KAHC,CAHF,CARF,CAPc,CAAxB,EA0BD,CA9DC,CAAF,CAgEAC,EAAE,CAAC,yDAAD,CAA4D,UAAM,CAClE,GAAMpB,CAAAA,MAAM,CAAGH,gBAAgB,CAC7B,CACEkB,IAAI,CAAE,CACJZ,MAAM,CAAEC,aADJ,CADR,CAIEY,GAAG,CAAE,CACHd,IAAI,CAAE,IADH,CAEHC,MAAM,CAAEO,YAFL,CAJP,CAD6B,CAU7B,CAAEgE,KAAK,CAAE,CAAE1D,GAAG,CAAE,YAAP,CAAT,CAV6B,CAA/B,CAYA,GAAMS,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,YAAjC,CAA+C,EAA/C,CAAf,CACAC,MAAM,CAACF,MAAM,CAACgB,IAAR,CAAN,CAAoBb,OAApB,CAA4BnC,iBAAiB,CAACiD,QAA9C,EACAf,MAAM,CAACF,MAAM,CAACU,SAAR,CAAN,CAAyBP,OAAzB,CAAiC,KAAjC,EACD,CAhBC,CAAF,CAkBAR,EAAE,CAAC,qEAAD,CAAwE,UAAM,CAC9E,GAAMpB,CAAAA,MAAM,CAAGH,gBAAgB,CAC7B,CACEkB,IAAI,CAAE,CACJZ,MAAM,CAAEC,aADJ,CADR,CAIEY,GAAG,CAAE,CACHd,IAAI,CAAE,SADH,CAEHC,MAAM,CAAEO,YAFL,CAJP,CAD6B,CAU7B,CAAEgE,KAAK,CAAE,CAAE1D,GAAG,CAAE,IAAP,CAAT,CAV6B,CAA/B,CAYA,GAAMS,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,SAAjC,CAA4C,EAA5C,CAAf,CACAC,MAAM,CAACF,MAAM,CAACgB,IAAR,CAAN,CAAoBb,OAApB,CAA4BnC,iBAAiB,CAACiD,QAA9C,EACAf,MAAM,CAACF,MAAM,CAACU,SAAR,CAAN,CAAyBP,OAAzB,CAAiC,KAAjC,EACD,CAhBC,CAAF,CAiBD,CA9hBD,CAgiBA+C,QAAQ,CAAC,gCAAD,CAAmC,UAAM,CAC/C/E,iBAAiB,CAACL,WAAD,CAAjB,CACD,CAFO,CAAR,CAGAoF,QAAQ,CAAC,iCAAD,CAAoC,UAAM,CAChD/E,iBAAiB,CAACN,YAAD,CAAjB,CACD,CAFO,CAAR,CAIA8B,EAAE,CAAC,+BAAD,CAAkC,UAAM,CACxC,GAAMwD,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMC,CAAAA,aAAa,CAAG,QAAhBA,CAAAA,aAAgB,SAAM,6EAAN,EAAtB,CACAA,aAAa,CAAC7E,MAAd,CAAuBV,YAAY,CAAC,CAClCoE,CAAC,CAAEkB,OAD+B,CAElCjB,CAAC,CAAEiB,OAF+B,CAGlChB,CAAC,CAAEgB,OAH+B,CAAD,CAAnC,CAKAC,aAAa,CAAC3E,IAAd,CAAqB,MAArB,CACA,GAAMF,CAAAA,MAAM,CAAGV,YAAY,CAAC,CAC1BwF,IAAI,CAAED,aADoB,CAE1BE,CAAC,CAAEH,OAFuB,CAAD,CAA3B,CAIA,GAAMnD,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,QAAjC,CAA2C,EAA3C,CAAf,CAEAC,MAAM,CAACF,MAAM,CAACgB,IAAR,CAAN,CAAoBb,OAApB,CAA4BnC,iBAAiB,CAACiD,QAA9C,EACAf,MAAM,CAACF,MAAM,CAACU,SAAR,CAAN,CAAyBP,OAAzB,CAAiC,MAAjC,EACAD,MAAM,CAACF,MAAM,CAACA,MAAP,CAAcgB,IAAf,CAAN,CAA2Bb,OAA3B,CAAmCnC,iBAAiB,CAACiD,QAArD,EACAf,MAAM,CAACF,MAAM,CAACA,MAAP,CAAcU,SAAf,CAAN,CAAgCP,OAAhC,CAAwC,GAAxC,EACD,CAnBC,CAAF,CAqBA,GAAMoD,CAAAA,kCAAkC,CAAG,QAArCA,CAAAA,kCAAqC,CAAAnF,gBAAgB,CAAI,CAC7D,GAAMoF,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,6EAAN,EAAhB,CACA,GAAMC,CAAAA,eAAe,CAAG,QAAlBA,CAAAA,eAAkB,SAAM,6EAAN,EAAxB,CACAA,eAAe,CAAClF,MAAhB,CAAyBH,gBAAgB,CAAC,CACxC8D,CAAC,CAAE,CACDxD,MAAM,CAAE8E,OADP,CAED/E,IAAI,CAAE,KAFL,CADqC,CAAD,CAAzC,CAMA,GAAMF,CAAAA,MAAM,CAAGH,gBAAgB,CAC7B,CACE6D,CAAC,CAAEwB,eADL,CAD6B,CAI7B,CAAEC,qBAAqB,CAAE,IAAzB,CAJ6B,CAA/B,CAOA/D,EAAE,CAAC,qFAAD,CAAwF,UAAM,CAC9F,GAAMK,CAAAA,MAAM,CAAGzB,MAAM,CAAC0B,yBAAP,CAAiC,KAAjC,CAAwC,EAAxC,CAAf,CAEAC,MAAM,CAACF,MAAM,CAACU,SAAR,CAAN,CAAyBkB,IAAzB,CAA8B,GAA9B,EACA1B,MAAM,CAACF,MAAM,CAACA,MAAP,CAAcU,SAAf,CAAN,CAAgCkB,IAAhC,CAAqC,GAArC,EACD,CALC,CAAF,CAMD,CAtBD,CAwBAsB,QAAQ,CAAC,4CAAD,CAA+C,UAAM,CAC3DK,kCAAkC,CAACzF,WAAD,CAAlC,CACD,CAFO,CAAR,CAIAoF,QAAQ,CAAC,6CAAD,CAAgD,UAAM,CAC5DK,kCAAkC,CAAC1F,YAAD,CAAlC,CACD,CAFO,CAAR,CAIAqF,QAAQ,CAAC,0CAAD,CAA6C,UAAM,CACzDK,kCAAkC,CAACxF,SAAD,CAAlC,CACD,CAFO,CAAR","sourcesContent":["/* eslint no-shadow:0, react/no-multi-comp:0, react/display-name:0 */\n\nimport React from 'react';\n\nimport SwitchRouter from '../SwitchRouter';\nimport StackRouter from '../StackRouter';\nimport TabRouter from '../TabRouter';\nimport * as NavigationActions from '../../NavigationActions';\nimport { _TESTING_ONLY_normalize_keys } from '../KeyGenerator.ts';\n\nbeforeEach(() => {\n _TESTING_ONLY_normalize_keys();\n});\n\nconst performRouterTest = createTestRouter => {\n const ListScreen = () => <div />;\n\n const ProfileNavigator = () => <div />;\n ProfileNavigator.router = StackRouter({\n list: {\n path: 'list/:id',\n screen: ListScreen,\n },\n });\n\n const MainNavigator = () => <div />;\n MainNavigator.router = StackRouter({\n profile: {\n path: 'p/:id',\n screen: ProfileNavigator,\n },\n });\n\n const LoginScreen = () => <div />;\n\n const AuthNavigator = () => <div />;\n AuthNavigator.router = StackRouter({\n login: {\n screen: LoginScreen,\n },\n });\n\n const BarScreen = () => <div />;\n\n class FooNavigator extends React.Component {\n static router = StackRouter({\n bar: {\n path: 'b/:barThing',\n screen: BarScreen,\n },\n });\n render() {\n return <div />;\n }\n }\n\n const PersonScreen = () => <div />;\n\n const testRouter = createTestRouter({\n main: {\n screen: MainNavigator,\n },\n baz: {\n path: null,\n screen: FooNavigator,\n },\n auth: {\n screen: AuthNavigator,\n },\n person: {\n path: 'people/:id',\n screen: PersonScreen,\n },\n foo: {\n path: 'fo/:fooThing',\n screen: FooNavigator,\n },\n });\n\n it('Handles empty URIs with empty action', () => {\n const router = createTestRouter(\n {\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n },\n },\n { initialRouteName: 'Bar', initialRouteParams: { foo: 42 } }\n );\n const action = router.getActionForPathAndParams('');\n expect(action).toEqual(null);\n const state = router.getStateForAction(action || NavigationActions.init());\n expect(state.routes[state.index]).toEqual(\n expect.objectContaining({\n routeName: 'Bar',\n params: { foo: 42 },\n })\n );\n });\n\n it('Handles paths with several params', () => {\n const router = createTestRouter({\n Person: {\n path: 'people/:person',\n screen: () => <div />,\n },\n Task: {\n path: 'people/:person/tasks/:task',\n screen: () => <div />,\n },\n ThingA: {\n path: 'things/:good',\n screen: () => <div />,\n },\n Thing: {\n path: 'things/:good/:thing',\n screen: () => <div />,\n },\n });\n const action = router.getActionForPathAndParams(\n 'people/brent/tasks/everything'\n );\n expect(action).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Task',\n params: { person: 'brent', task: 'everything' },\n });\n\n const action1 = router.getActionForPathAndParams('people/lucy');\n expect(action1).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Person',\n params: { person: 'lucy' },\n });\n\n const action2 = router.getActionForPathAndParams('things/foo/bar');\n expect(action2).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Thing',\n params: { good: 'foo', thing: 'bar' },\n });\n\n const action3 = router.getActionForPathAndParams('things/foo');\n expect(action3).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'ThingA',\n params: { good: 'foo' },\n });\n });\n\n it('Handles empty path configuration', () => {\n const router = createTestRouter({\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n path: '',\n },\n });\n const action = router.getActionForPathAndParams('');\n expect(action).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n params: {},\n });\n });\n\n it('Handles wildcard path configuration', () => {\n const router = createTestRouter({\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n path: ':something',\n },\n });\n const action = router.getActionForPathAndParams('');\n expect(action).toEqual(null);\n\n const action1 = router.getActionForPathAndParams('Foo');\n expect(action1).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Foo',\n params: {},\n });\n const action2 = router.getActionForPathAndParams('asdf');\n expect(action2).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n params: { something: 'asdf' },\n });\n });\n\n it('Null path behavior', () => {\n const ScreenA = () => <div />;\n const router = createTestRouter({\n Bar: {\n screen: ScreenA,\n },\n Foo: {\n path: null,\n screen: ScreenA,\n },\n Baz: {\n path: '',\n screen: ScreenA,\n },\n });\n const action0 = router.getActionForPathAndParams('test/random', {});\n expect(action0).toBe(null);\n\n const action1 = router.getActionForPathAndParams('', {});\n expect(action1.routeName).toBe('Baz');\n const state1 = router.getStateForAction(action1);\n expect(state1.routes[state1.index].routeName).toBe('Baz');\n });\n\n it('Multiple null path sub routers path behavior', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenB.router = createTestRouter({\n Foo: ScreenA,\n });\n const ScreenC = () => <div />;\n ScreenC.router = createTestRouter({\n Bar: {\n path: 'bar/:id',\n screen: ScreenA,\n },\n Empty: {\n path: '',\n screen: ScreenA,\n },\n });\n const router = createTestRouter({\n A: {\n screen: ScreenA,\n },\n B: {\n path: null,\n screen: ScreenB,\n },\n C: {\n path: null,\n screen: ScreenC,\n },\n });\n const action0 = router.getActionForPathAndParams('Foo', {});\n expect(action0.routeName).toBe('B');\n expect(action0.action.routeName).toBe('Foo');\n\n const action1 = router.getActionForPathAndParams('', {});\n expect(action1.routeName).toBe('C');\n expect(action1.action.routeName).toBe('Empty');\n\n const action2 = router.getActionForPathAndParams('A', {});\n expect(action2.routeName).toBe('A');\n\n const action3 = router.getActionForPathAndParams('bar/asdf', {});\n expect(action3.routeName).toBe('C');\n expect(action3.action.routeName).toBe('Bar');\n expect(action3.action.params.id).toBe('asdf');\n });\n\n it('Null and empty string path sub routers behavior', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenB.router = createTestRouter({\n Foo: ScreenA,\n Baz: {\n screen: ScreenA,\n path: '',\n },\n });\n const ScreenC = () => <div />;\n ScreenC.router = createTestRouter({\n Boo: ScreenA,\n Bar: ScreenA,\n Baz: {\n screen: ScreenA,\n path: '',\n },\n });\n const router = createTestRouter({\n B: {\n path: null,\n screen: ScreenB,\n },\n C: {\n path: '',\n screen: ScreenC,\n },\n });\n const action0 = router.getActionForPathAndParams('', {});\n expect(action0.routeName).toBe('C');\n expect(action0.action.routeName).toBe('Baz');\n\n const action1 = router.getActionForPathAndParams('Foo', {});\n expect(action1.routeName).toBe('B');\n expect(action1.action.routeName).toBe('Foo');\n\n const action2 = router.getActionForPathAndParams('Bar', {});\n expect(action2.routeName).toBe('C');\n expect(action2.action.routeName).toBe('Bar');\n\n const action3 = router.getActionForPathAndParams('unknown', {});\n expect(action3).toBe(null);\n });\n\n it('Empty path acts as wildcard for nested router', () => {\n const ScreenA = () => <div />;\n const Foo = () => <div />;\n const ScreenC = () => <div />;\n ScreenC.router = createTestRouter({\n Boo: ScreenA,\n Bar: ScreenA,\n });\n Foo.router = createTestRouter({\n Quo: ScreenA,\n Qux: {\n screen: ScreenC,\n path: '',\n },\n });\n const router = createTestRouter({\n Bar: {\n screen: ScreenA,\n },\n Foo,\n });\n const action0 = router.getActionForPathAndParams('Foo/Bar', {});\n expect(action0.routeName).toBe('Foo');\n expect(action0.action.routeName).toBe('Qux');\n expect(action0.action.action.routeName).toBe('Bar');\n });\n\n it('Gets deep path with pure wildcard match', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const ScreenC = () => <div />;\n ScreenA.router = createTestRouter({\n Boo: { path: 'boo', screen: ScreenC },\n Baz: { path: 'baz/:bazId', screen: ScreenB },\n });\n ScreenC.router = createTestRouter({\n Boo2: { path: '', screen: ScreenB },\n });\n const router = createTestRouter({\n Foo: {\n path: null,\n screen: ScreenA,\n },\n Bar: {\n screen: ScreenB,\n },\n });\n\n {\n const state = {\n index: 0,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n params: {\n id: '123',\n },\n routes: [\n {\n index: 0,\n key: 'Boo',\n routeName: 'Boo',\n routes: [{ key: 'Boo2', routeName: 'Boo2' }],\n },\n { key: 'Baz', routeName: 'Baz', params: { bazId: '321' } },\n ],\n },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n const { path, params } = router.getPathAndParamsForState(state);\n expect(path).toEqual('baz/321');\n expect(params.id).toEqual('123');\n }\n\n {\n const state = {\n index: 0,\n routes: [\n {\n index: 0,\n key: 'Foo',\n routeName: 'Foo',\n params: {\n id: '123',\n },\n routes: [\n {\n index: 0,\n key: 'Boo',\n routeName: 'Boo',\n routes: [{ key: 'Boo2', routeName: 'Boo2' }],\n },\n { key: 'Baz', routeName: 'Baz', params: { bazId: '321' } },\n ],\n },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n const { path, params } = router.getPathAndParamsForState(state);\n expect(path).toEqual('boo');\n expect(params).toEqual({ id: '123' });\n }\n });\n\n it('URI encoded string get passed to deep link', () => {\n const uri = 'people/2018%2F02%2F07';\n const action = testRouter.getActionForPathAndParams(uri);\n expect(action).toEqual({\n routeName: 'person',\n params: {\n id: '2018/02/07',\n },\n type: NavigationActions.NAVIGATE,\n });\n\n const malformedUri = 'people/%E0%A4%A';\n const action2 = testRouter.getActionForPathAndParams(malformedUri);\n expect(action2).toEqual({\n routeName: 'person',\n params: {\n id: '%E0%A4%A',\n },\n type: NavigationActions.NAVIGATE,\n });\n });\n\n it('URI encoded path param gets parsed and correctly printed', () => {\n const action = testRouter.getActionForPathAndParams('people/Henry%20L');\n expect(action).toEqual({\n routeName: 'person',\n params: {\n id: 'Henry L',\n },\n type: NavigationActions.NAVIGATE,\n });\n const s = testRouter.getStateForAction(action);\n const out = testRouter.getPathAndParamsForState(s);\n expect(out.path).toEqual('people/Henry%20L');\n expect(out.params).toEqual({});\n });\n\n it('Querystring params get passed to nested deep link', () => {\n const action = testRouter.getActionForPathAndParams(\n 'main/p/4/list/10259959195',\n { code: 'test', foo: 'bar' }\n );\n expect(action).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'main',\n params: {\n code: 'test',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'profile',\n params: {\n id: '4',\n code: 'test',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'list',\n params: {\n id: '10259959195',\n code: 'test',\n foo: 'bar',\n },\n },\n },\n });\n\n const action2 = testRouter.getActionForPathAndParams(\n 'main/p/4/list/10259959195',\n { code: '', foo: 'bar' }\n );\n expect(action2).toEqual({\n type: NavigationActions.NAVIGATE,\n routeName: 'main',\n params: {\n code: '',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'profile',\n params: {\n id: '4',\n code: '',\n foo: 'bar',\n },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'list',\n params: {\n id: '10259959195',\n code: '',\n foo: 'bar',\n },\n },\n },\n });\n });\n\n it('paths option on router overrides path from route config', () => {\n const router = createTestRouter(\n {\n main: {\n screen: MainNavigator,\n },\n baz: {\n path: null,\n screen: FooNavigator,\n },\n },\n { paths: { baz: 'overridden' } }\n );\n const action = router.getActionForPathAndParams('overridden', {});\n expect(action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.routeName).toEqual('baz');\n });\n\n it('paths option set as null on router overrides path from route config', () => {\n const router = createTestRouter(\n {\n main: {\n screen: MainNavigator,\n },\n baz: {\n path: 'bazPath',\n screen: FooNavigator,\n },\n },\n { paths: { baz: null } }\n );\n const action = router.getActionForPathAndParams('b/noBaz', {});\n expect(action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.routeName).toEqual('baz');\n });\n};\n\ndescribe('Path handling for stack router', () => {\n performRouterTest(StackRouter);\n});\ndescribe('Path handling for switch router', () => {\n performRouterTest(SwitchRouter);\n});\n\nit('Handles nested switch routers', () => {\n const AScreen = () => <div />;\n const DocsNavigator = () => <div />;\n DocsNavigator.router = SwitchRouter({\n A: AScreen,\n B: AScreen,\n C: AScreen,\n });\n DocsNavigator.path = 'docs';\n const router = SwitchRouter({\n Docs: DocsNavigator,\n D: AScreen,\n });\n const action = router.getActionForPathAndParams('docs/B', {});\n\n expect(action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.routeName).toEqual('Docs');\n expect(action.action.type).toEqual(NavigationActions.NAVIGATE);\n expect(action.action.routeName).toEqual('B');\n});\n\nconst performRouteNameAsPathDisabledTest = createTestRouter => {\n const BScreen = () => <div />;\n const NestedNavigator = () => <div />;\n NestedNavigator.router = createTestRouter({\n B: {\n screen: BScreen,\n path: 'baz',\n },\n });\n const router = createTestRouter(\n {\n A: NestedNavigator,\n },\n { disableRouteNamePaths: true }\n );\n\n it('disableRouteNamePaths option on router prevent the default path to be the routeName', () => {\n const action = router.getActionForPathAndParams('baz', {});\n\n expect(action.routeName).toBe('A');\n expect(action.action.routeName).toBe('B');\n });\n};\n\ndescribe('Stack router handles disableRouteNamePaths', () => {\n performRouteNameAsPathDisabledTest(StackRouter);\n});\n\ndescribe('Switch router handles disableRouteNamePaths', () => {\n performRouteNameAsPathDisabledTest(SwitchRouter);\n});\n\ndescribe('Tab router handles disableRouteNamePaths', () => {\n performRouteNameAsPathDisabledTest(TabRouter);\n});\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectSpread from"@babel/runtime/helpers/objectSpread";import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/brentvatne/coding/react-navigation-core/src/routers/__tests__/Routers-test.js";import React from'react';import StackRouter from'../StackRouter';import TabRouter from'../TabRouter';import SwitchRouter from'../SwitchRouter';import*as NavigationActions from'../../NavigationActions';import*as StackActions from'../StackActions';import{_TESTING_ONLY_normalize_keys}from'../KeyGenerator.ts';beforeEach(function(){_TESTING_ONLY_normalize_keys();});var ROUTERS={TabRouter:TabRouter,StackRouter:StackRouter,SwitchRouter:SwitchRouter};var dummyEventSubscriber=function dummyEventSubscriber(){return{remove:function remove(){}};};Object.keys(ROUTERS).forEach(function(routerName){var Router=ROUTERS[routerName];describe("General router features - "+routerName,function(){it("title is configurable using navigationOptions and getScreenOptions - "+routerName,function(){var FooView=function(_React$Component){_inherits(FooView,_React$Component);function FooView(){_classCallCheck(this,FooView);return _possibleConstructorReturn(this,_getPrototypeOf(FooView).apply(this,arguments));}_createClass(FooView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:34}});}}]);return FooView;}(React.Component);var BarView=function(_React$Component2){_inherits(BarView,_React$Component2);function BarView(){_classCallCheck(this,BarView);return _possibleConstructorReturn(this,_getPrototypeOf(BarView).apply(this,arguments));}_createClass(BarView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:39}});}}]);return BarView;}(React.Component);BarView.navigationOptions={title:'BarTitle'};var BazView=function(_React$Component3){_inherits(BazView,_React$Component3);function BazView(){_classCallCheck(this,BazView);return _possibleConstructorReturn(this,_getPrototypeOf(BazView).apply(this,arguments));}_createClass(BazView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:45}});}}]);return BazView;}(React.Component);BazView.navigationOptions=function(_ref){var navigation=_ref.navigation;return{title:"Baz-"+navigation.state.params.id};};var router=Router({Foo:{screen:FooView},Bar:{screen:BarView},Baz:{screen:BazView}});var routes=[{key:'A',routeName:'Foo'},{key:'B',routeName:'Bar'},{key:'A',routeName:'Baz',params:{id:'123'}}];expect(router.getScreenOptions({state:routes[0],dispatch:function dispatch(){return false;},addListener:dummyEventSubscriber},{}).title).toEqual(undefined);expect(router.getScreenOptions({state:routes[1],dispatch:function dispatch(){return false;},addListener:dummyEventSubscriber},{}).title).toEqual('BarTitle');expect(router.getScreenOptions({state:routes[2],dispatch:function dispatch(){return false;},addListener:dummyEventSubscriber},{}).title).toEqual('Baz-123');});it("set params works in "+routerName,function(){var FooView=function(_React$Component4){_inherits(FooView,_React$Component4);function FooView(){_classCallCheck(this,FooView);return _possibleConstructorReturn(this,_getPrototypeOf(FooView).apply(this,arguments));}_createClass(FooView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:96}});}}]);return FooView;}(React.Component);var router=Router({Foo:{screen:FooView},Bar:{screen:FooView}});var initState=router.getStateForAction(NavigationActions.init());var initRoute=initState.routes[initState.index];expect(initRoute.params).toEqual(undefined);var state0=router.getStateForAction(NavigationActions.setParams({params:{foo:42},key:initRoute.key}),initState);expect(state0.routes[state0.index].params.foo).toEqual(42);});});});it('Nested navigate behavior test',function(){var Leaf=function Leaf(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:121}});};var First=function First(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:123}});};First.router=StackRouter({First1:Leaf,First2:Leaf});var Second=function Second(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:129}});};Second.router=StackRouter({Second1:Leaf,Second2:Leaf});var Main=function Main(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:135}});};Main.router=StackRouter({First:First,Second:Second});var TestRouter=SwitchRouter({Login:Leaf,Main:Main});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'First'},state1);expect(state2.index).toEqual(1);expect(state2.routes[1].index).toEqual(0);expect(state2.routes[1].routes[0].index).toEqual(0);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Second2'},state2);expect(state3.index).toEqual(1);expect(state3.routes[1].index).toEqual(1);expect(state3.routes[1].routes[1].index).toEqual(1);var state4=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'First',action:{type:NavigationActions.NAVIGATE,routeName:'First2'}},state3,true);expect(state4.index).toEqual(1);expect(state4.routes[1].index).toEqual(0);expect(state4.routes[1].routes[0].index).toEqual(1);var state5=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'First',action:{type:NavigationActions.NAVIGATE,routeName:'First1'}},state3);expect(state5.index).toEqual(1);expect(state5.routes[1].index).toEqual(0);expect(state5.routes[1].routes[0].index).toEqual(0);});it('Handles no-op actions with tabs within stack router',function(){var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:190}});};var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:191}});};FooTabNavigator.router=TabRouter({Zap:{screen:BarView},Zoo:{screen:BarView}});var TestRouter=StackRouter({Foo:{screen:FooTabNavigator},Bar:{screen:BarView}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Qux'});expect(state1.routes[0].key).toEqual('id-0');expect(state2.routes[0].key).toEqual('id-1');state1.routes[0].key=state2.routes[0].key;expect(state1).toEqual(state2);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zap'},state2);expect(state2).toEqual(state3);});it('Handles deep action',function(){var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:221}});};var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:222}});};FooTabNavigator.router=TabRouter({Zap:{screen:BarView},Zoo:{screen:BarView}});var TestRouter=StackRouter({Bar:{screen:BarView},Foo:{screen:FooTabNavigator}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,isTransitioning:false,key:'StackRouterRoot',routes:[{key:'id-0',routeName:'Bar'}]};expect(state1).toEqual(expectedState);var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo',immediate:true,action:{type:NavigationActions.NAVIGATE,routeName:'Zoo'}},state1);expect(state2&&state2.index).toEqual(1);expect(state2&&state2.routes[1].index).toEqual(1);});it('Handles the navigate action with params',function(){var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:258}});};FooTabNavigator.router=TabRouter({Baz:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:260}});}},Boo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:261}});}}});var TestRouter=StackRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:265}});}},Bar:{screen:FooTabNavigator}});var state=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,immediate:true,routeName:'Bar',params:{foo:'42'}},state);expect(state2&&state2.routes[1].params).toEqual({foo:'42'});expect(state2&&state2.routes[1].routes).toEqual([{key:'Baz',routeName:'Baz',params:{foo:'42'}},{key:'Boo',routeName:'Boo',params:{foo:'42'}}]);});it('Handles the setParams action',function(){var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:294}});};FooTabNavigator.router=TabRouter({Baz:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:296}});}}});var TestRouter=StackRouter({Foo:{screen:FooTabNavigator},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:300}});}}});var state=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.SET_PARAMS,params:{name:'foobar'},key:'Baz'},state);expect(state2&&state2.index).toEqual(0);expect(state2&&state2.routes[0].routes).toEqual([{key:'Baz',routeName:'Baz',params:{name:'foobar'}}]);});it('Supports lazily-evaluated getScreen',function(){var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:322}});};var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:323}});};FooTabNavigator.router=TabRouter({Zap:{screen:BarView},Zoo:{screen:BarView}});var TestRouter=StackRouter({Foo:{screen:FooTabNavigator},Bar:{getScreen:function getScreen(){return BarView;}}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,immediate:true,routeName:'Qux'});expect(state1.routes[0].key).toEqual('id-0');expect(state2.routes[0].key).toEqual('id-1');state1.routes[0].key=state2.routes[0].key;expect(state1).toEqual(state2);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,immediate:true,routeName:'Zap'},state2);expect(state2).toEqual(state3);});it('Does not switch tab index when TabRouter child handles COMPLETE_NAVIGATION or SET_PARAMS',function(){var FooStackNavigator=function FooStackNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:358}});};var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:359}});};FooStackNavigator.router=StackRouter({Foo:{screen:BarView},Bar:{screen:BarView}});var TestRouter=TabRouter({Zap:{screen:FooStackNavigator},Zoo:{screen:FooStackNavigator}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state1);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zoo'},state2);var stateAfterCompleteTransition=TestRouter.getStateForAction({type:StackActions.COMPLETE_TRANSITION,preserveFocus:true,key:state2.routes[0].key},state3);var stateAfterSetParams=TestRouter.getStateForAction({type:NavigationActions.SET_PARAMS,preserveFocus:true,key:state1.routes[0].routes[0].key,params:{key:'value'}},state3);expect(stateAfterCompleteTransition.index).toEqual(1);expect(stateAfterSetParams.index).toEqual(1);});it('Inner actions are only unpacked if the current tab matches',function(){var PlainScreen=function PlainScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:417}});};var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:418}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:419}});};ScreenB.router=StackRouter({Baz:{screen:PlainScreen},Zoo:{screen:PlainScreen}});ScreenA.router=StackRouter({Bar:{screen:PlainScreen},Boo:{screen:ScreenB}});var TestRouter=TabRouter({Foo:{screen:ScreenA}});var screenApreState={index:0,key:'Init',isTransitioning:false,routeName:'Foo',routes:[{key:'Init',routeName:'Bar'}]};var preState={index:0,isTransitioning:false,routes:[screenApreState]};var comparable=function comparable(state){var result={};if(typeof state.routeName==='string'){result=_objectSpread({},result,{routeName:state.routeName});}if(state.routes instanceof Array){result=_objectSpread({},result,{routes:state.routes.map(comparable)});}return result;};var action=NavigationActions.navigate({routeName:'Boo',action:NavigationActions.navigate({routeName:'Zoo'})});var expectedState=ScreenA.router.getStateForAction(action,screenApreState);var state=TestRouter.getStateForAction(action,preState);var innerState=state?state.routes[0]:state;expect(expectedState&&comparable(expectedState)).toEqual(innerState&&comparable(innerState));});
|
|
1
|
+
import _objectSpread from"@babel/runtime/helpers/objectSpread";import _classCallCheck from"@babel/runtime/helpers/classCallCheck";import _createClass from"@babel/runtime/helpers/createClass";import _possibleConstructorReturn from"@babel/runtime/helpers/possibleConstructorReturn";import _getPrototypeOf from"@babel/runtime/helpers/getPrototypeOf";import _inherits from"@babel/runtime/helpers/inherits";var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-core/src/routers/__tests__/Routers-test.js";import React from'react';import StackRouter from'../StackRouter';import TabRouter from'../TabRouter';import SwitchRouter from'../SwitchRouter';import*as NavigationActions from'../../NavigationActions';import*as StackActions from'../StackActions';import{_TESTING_ONLY_normalize_keys}from'../KeyGenerator.ts';beforeEach(function(){_TESTING_ONLY_normalize_keys();});var ROUTERS={TabRouter:TabRouter,StackRouter:StackRouter,SwitchRouter:SwitchRouter};var dummyEventSubscriber=function dummyEventSubscriber(){return{remove:function remove(){}};};Object.keys(ROUTERS).forEach(function(routerName){var Router=ROUTERS[routerName];describe("General router features - "+routerName,function(){it("title is configurable using navigationOptions and getScreenOptions - "+routerName,function(){var FooView=function(_React$Component){_inherits(FooView,_React$Component);function FooView(){_classCallCheck(this,FooView);return _possibleConstructorReturn(this,_getPrototypeOf(FooView).apply(this,arguments));}_createClass(FooView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:34}});}}]);return FooView;}(React.Component);var BarView=function(_React$Component2){_inherits(BarView,_React$Component2);function BarView(){_classCallCheck(this,BarView);return _possibleConstructorReturn(this,_getPrototypeOf(BarView).apply(this,arguments));}_createClass(BarView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:39}});}}]);return BarView;}(React.Component);BarView.navigationOptions={title:'BarTitle'};var BazView=function(_React$Component3){_inherits(BazView,_React$Component3);function BazView(){_classCallCheck(this,BazView);return _possibleConstructorReturn(this,_getPrototypeOf(BazView).apply(this,arguments));}_createClass(BazView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:45}});}}]);return BazView;}(React.Component);BazView.navigationOptions=function(_ref){var navigation=_ref.navigation;return{title:"Baz-"+navigation.state.params.id};};var router=Router({Foo:{screen:FooView},Bar:{screen:BarView},Baz:{screen:BazView}});var routes=[{key:'A',routeName:'Foo'},{key:'B',routeName:'Bar'},{key:'A',routeName:'Baz',params:{id:'123'}}];expect(router.getScreenOptions({state:routes[0],dispatch:function dispatch(){return false;},addListener:dummyEventSubscriber},{}).title).toEqual(undefined);expect(router.getScreenOptions({state:routes[1],dispatch:function dispatch(){return false;},addListener:dummyEventSubscriber},{}).title).toEqual('BarTitle');expect(router.getScreenOptions({state:routes[2],dispatch:function dispatch(){return false;},addListener:dummyEventSubscriber},{}).title).toEqual('Baz-123');});it("set params works in "+routerName,function(){var FooView=function(_React$Component4){_inherits(FooView,_React$Component4);function FooView(){_classCallCheck(this,FooView);return _possibleConstructorReturn(this,_getPrototypeOf(FooView).apply(this,arguments));}_createClass(FooView,[{key:"render",value:function render(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:96}});}}]);return FooView;}(React.Component);var router=Router({Foo:{screen:FooView},Bar:{screen:FooView}});var initState=router.getStateForAction(NavigationActions.init());var initRoute=initState.routes[initState.index];expect(initRoute.params).toEqual(undefined);var state0=router.getStateForAction(NavigationActions.setParams({params:{foo:42},key:initRoute.key}),initState);expect(state0.routes[state0.index].params.foo).toEqual(42);});});});it('Nested navigate behavior test',function(){var Leaf=function Leaf(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:121}});};var First=function First(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:123}});};First.router=StackRouter({First1:Leaf,First2:Leaf});var Second=function Second(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:129}});};Second.router=StackRouter({Second1:Leaf,Second2:Leaf});var Main=function Main(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:135}});};Main.router=StackRouter({First:First,Second:Second});var TestRouter=SwitchRouter({Login:Leaf,Main:Main});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'First'},state1);expect(state2.index).toEqual(1);expect(state2.routes[1].index).toEqual(0);expect(state2.routes[1].routes[0].index).toEqual(0);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Second2'},state2);expect(state3.index).toEqual(1);expect(state3.routes[1].index).toEqual(1);expect(state3.routes[1].routes[1].index).toEqual(1);var state4=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'First',action:{type:NavigationActions.NAVIGATE,routeName:'First2'}},state3,true);expect(state4.index).toEqual(1);expect(state4.routes[1].index).toEqual(0);expect(state4.routes[1].routes[0].index).toEqual(1);var state5=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'First',action:{type:NavigationActions.NAVIGATE,routeName:'First1'}},state3);expect(state5.index).toEqual(1);expect(state5.routes[1].index).toEqual(0);expect(state5.routes[1].routes[0].index).toEqual(0);});it('Handles no-op actions with tabs within stack router',function(){var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:190}});};var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:191}});};FooTabNavigator.router=TabRouter({Zap:{screen:BarView},Zoo:{screen:BarView}});var TestRouter=StackRouter({Foo:{screen:FooTabNavigator},Bar:{screen:BarView}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Qux'});expect(state1.routes[0].key).toEqual('id-0');expect(state2.routes[0].key).toEqual('id-1');state1.routes[0].key=state2.routes[0].key;expect(state1).toEqual(state2);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zap'},state2);expect(state2).toEqual(state3);});it('Handles deep action',function(){var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:221}});};var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:222}});};FooTabNavigator.router=TabRouter({Zap:{screen:BarView},Zoo:{screen:BarView}});var TestRouter=StackRouter({Bar:{screen:BarView},Foo:{screen:FooTabNavigator}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,isTransitioning:false,key:'StackRouterRoot',routes:[{key:'id-0',routeName:'Bar'}]};expect(state1).toEqual(expectedState);var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo',immediate:true,action:{type:NavigationActions.NAVIGATE,routeName:'Zoo'}},state1);expect(state2&&state2.index).toEqual(1);expect(state2&&state2.routes[1].index).toEqual(1);});it('Handles the navigate action with params',function(){var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:258}});};FooTabNavigator.router=TabRouter({Baz:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:260}});}},Boo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:261}});}}});var TestRouter=StackRouter({Foo:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:265}});}},Bar:{screen:FooTabNavigator}});var state=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,immediate:true,routeName:'Bar',params:{foo:'42'}},state);expect(state2&&state2.routes[1].params).toEqual({foo:'42'});expect(state2&&state2.routes[1].routes).toEqual([{key:'Baz',routeName:'Baz',params:{foo:'42'}},{key:'Boo',routeName:'Boo',params:{foo:'42'}}]);});it('Handles the setParams action',function(){var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:294}});};FooTabNavigator.router=TabRouter({Baz:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:296}});}}});var TestRouter=StackRouter({Foo:{screen:FooTabNavigator},Bar:{screen:function screen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:300}});}}});var state=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.SET_PARAMS,params:{name:'foobar'},key:'Baz'},state);expect(state2&&state2.index).toEqual(0);expect(state2&&state2.routes[0].routes).toEqual([{key:'Baz',routeName:'Baz',params:{name:'foobar'}}]);});it('Supports lazily-evaluated getScreen',function(){var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:322}});};var FooTabNavigator=function FooTabNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:323}});};FooTabNavigator.router=TabRouter({Zap:{screen:BarView},Zoo:{screen:BarView}});var TestRouter=StackRouter({Foo:{screen:FooTabNavigator},Bar:{getScreen:function getScreen(){return BarView;}}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,immediate:true,routeName:'Qux'});expect(state1.routes[0].key).toEqual('id-0');expect(state2.routes[0].key).toEqual('id-1');state1.routes[0].key=state2.routes[0].key;expect(state1).toEqual(state2);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,immediate:true,routeName:'Zap'},state2);expect(state2).toEqual(state3);});it('Does not switch tab index when TabRouter child handles COMPLETE_NAVIGATION or SET_PARAMS',function(){var FooStackNavigator=function FooStackNavigator(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:358}});};var BarView=function BarView(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:359}});};FooStackNavigator.router=StackRouter({Foo:{screen:BarView},Bar:{screen:BarView}});var TestRouter=TabRouter({Zap:{screen:FooStackNavigator},Zoo:{screen:FooStackNavigator}});var state1=TestRouter.getStateForAction({type:NavigationActions.INIT});var state2=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state1);var state3=TestRouter.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zoo'},state2);var stateAfterCompleteTransition=TestRouter.getStateForAction({type:StackActions.COMPLETE_TRANSITION,preserveFocus:true,key:state2.routes[0].key},state3);var stateAfterSetParams=TestRouter.getStateForAction({type:NavigationActions.SET_PARAMS,preserveFocus:true,key:state1.routes[0].routes[0].key,params:{key:'value'}},state3);expect(stateAfterCompleteTransition.index).toEqual(1);expect(stateAfterSetParams.index).toEqual(1);});it('Inner actions are only unpacked if the current tab matches',function(){var PlainScreen=function PlainScreen(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:417}});};var ScreenA=function ScreenA(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:418}});};var ScreenB=function ScreenB(){return React.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:419}});};ScreenB.router=StackRouter({Baz:{screen:PlainScreen},Zoo:{screen:PlainScreen}});ScreenA.router=StackRouter({Bar:{screen:PlainScreen},Boo:{screen:ScreenB}});var TestRouter=TabRouter({Foo:{screen:ScreenA}});var screenApreState={index:0,key:'Init',isTransitioning:false,routeName:'Foo',routes:[{key:'Init',routeName:'Bar'}]};var preState={index:0,isTransitioning:false,routes:[screenApreState]};var comparable=function comparable(state){var result={};if(typeof state.routeName==='string'){result=_objectSpread({},result,{routeName:state.routeName});}if(state.routes instanceof Array){result=_objectSpread({},result,{routes:state.routes.map(comparable)});}return result;};var action=NavigationActions.navigate({routeName:'Boo',action:NavigationActions.navigate({routeName:'Zoo'})});var expectedState=ScreenA.router.getStateForAction(action,screenApreState);var state=TestRouter.getStateForAction(action,preState);var innerState=state?state.routes[0]:state;expect(expectedState&&comparable(expectedState)).toEqual(innerState&&comparable(innerState));});
|
|
2
2
|
//# sourceMappingURL=Routers-test.js.map
|