@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
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _react=_interopRequireDefault(require("react"));var _SwitchRouter=_interopRequireDefault(require("../SwitchRouter"));var _StackRouter=_interopRequireDefault(require("../StackRouter"));var SwitchActions=_interopRequireWildcard(require("../SwitchActions"));var NavigationActions=_interopRequireWildcard(require("../../NavigationActions"));var _jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _react=_interopRequireDefault(require("react"));var _SwitchRouter=_interopRequireDefault(require("../SwitchRouter"));var _StackRouter=_interopRequireDefault(require("../StackRouter"));var SwitchActions=_interopRequireWildcard(require("../SwitchActions"));var NavigationActions=_interopRequireWildcard(require("../../NavigationActions"));var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-core/src/routers/__tests__/SwitchRouter-test.js";describe('SwitchRouter',function(){it('resets the route when unfocusing a tab by default',function(){var router=getExampleRouter();var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'A2'},state);expect(state2.routes[0].index).toEqual(1);expect(state2.routes[0].routes.length).toEqual(2);var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'B'},state2);expect(state3.routes[0].index).toEqual(0);expect(state3.routes[0].routes.length).toEqual(1);});it('does not reset the route on unfocus if resetOnBlur is false',function(){var router=getExampleRouter({resetOnBlur:false});var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'A2'},state);expect(state2.routes[0].index).toEqual(1);expect(state2.routes[0].routes.length).toEqual(2);var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'B'},state2);expect(state3.routes[0].index).toEqual(1);expect(state3.routes[0].routes.length).toEqual(2);});it('ignores back by default',function(){var router=getExampleRouter();var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:SwitchActions.JUMP_TO,routeName:'B'},state);expect(state2.index).toEqual(1);var state3=router.getStateForAction({type:NavigationActions.BACK},state2);expect(state3.index).toEqual(1);});it('handles initialRoute backBehavior',function(){var router=getExampleRouter({backBehavior:'initialRoute'});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state.routeKeyHistory).toBeUndefined();var state2=router.getStateForAction({type:SwitchActions.JUMP_TO,routeName:'B'},state);expect(state2.index).toEqual(1);var state3=router.getStateForAction({type:NavigationActions.BACK},state2);expect(state3.index).toEqual(0);});it('handles order backBehavior',function(){var routerHelper=new ExampleRouterHelper({backBehavior:'order'});expect(routerHelper.getCurrentState().routeKeyHistory).toBeUndefined();expect(routerHelper.applyAction({type:SwitchActions.JUMP_TO,routeName:'C'})).toMatchObject({index:2});expect(routerHelper.applyAction({type:NavigationActions.BACK})).toMatchObject({index:1});expect(routerHelper.applyAction({type:NavigationActions.BACK})).toMatchObject({index:0});expect(routerHelper.applyAction({type:NavigationActions.BACK})).toMatchObject({index:0});});it('handles history backBehavior',function(){var routerHelper=new ExampleRouterHelper({backBehavior:'history'});expect(routerHelper.getCurrentState().routeKeyHistory).toMatchObject(['A']);expect(routerHelper.applyAction({type:NavigationActions.NAVIGATE,routeName:'B'})).toMatchObject({index:1,routeKeyHistory:['A','B']});expect(routerHelper.applyAction({type:NavigationActions.NAVIGATE,routeName:'A'})).toMatchObject({index:0,routeKeyHistory:['B','A']});expect(routerHelper.applyAction({type:NavigationActions.NAVIGATE,routeName:'C'})).toMatchObject({index:2,routeKeyHistory:['B','A','C']});expect(routerHelper.applyAction({type:NavigationActions.NAVIGATE,routeName:'A'})).toMatchObject({index:0,routeKeyHistory:['B','C','A']});expect(routerHelper.applyAction({type:NavigationActions.BACK})).toMatchObject({index:2,routeKeyHistory:['B','C']});expect(routerHelper.applyAction({type:NavigationActions.BACK})).toMatchObject({index:1,routeKeyHistory:['B']});expect(routerHelper.applyAction({type:NavigationActions.BACK})).toMatchObject({index:1,routeKeyHistory:['B']});});it('handles nested actions',function(){var router=getExampleRouter();var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'B',action:{type:NavigationActions.NAVIGATE,routeName:'B2'}},state);var subState=state2.routes[state2.index];var activeGrandChildRoute=subState.routes[subState.index];expect(activeGrandChildRoute.routeName).toEqual('B2');});it('handles nested actions and params simultaneously',function(){var router=getExampleRouter();var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'B',params:{foo:'bar'},action:{type:NavigationActions.NAVIGATE,routeName:'B2'}},state);var subState=state2.routes[state2.index];var activeGrandChildRoute=subState.routes[subState.index];expect(subState.params.foo).toEqual('bar');expect(activeGrandChildRoute.routeName).toEqual('B2');});it('order of handling navigate action is correct for nested switchrouters',function(){var Screen=function Screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:192}});};var NestedSwitch=function NestedSwitch(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:193}});};var OtherNestedSwitch=function OtherNestedSwitch(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:194}});};var nestedRouter=(0,_SwitchRouter.default)({Foo:Screen,Bar:Screen});var otherNestedRouter=(0,_SwitchRouter.default)({Foo:Screen});NestedSwitch.router=nestedRouter;OtherNestedSwitch.router=otherNestedRouter;var router=(0,_SwitchRouter.default)({NestedSwitch:NestedSwitch,OtherNestedSwitch:OtherNestedSwitch,Bar:Screen},{initialRouteName:'OtherNestedSwitch'});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state.routes[state.index].routeName).toEqual('OtherNestedSwitch');var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);expect(state2.routes[state2.index].routeName).toEqual('Bar');var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'NestedSwitch'},state2);var state4=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state3);var activeState4=state4.routes[state4.index];expect(activeState4.routeName).toEqual('NestedSwitch');expect(activeState4.routes[activeState4.index].routeName).toEqual('Bar');});it('order of handling navigate action is correct for nested stackrouters',function(){var Screen=function Screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:245}});};var MainStack=function MainStack(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:246}});};var LoginStack=function LoginStack(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:247}});};MainStack.router=(0,_StackRouter.default)({Home:Screen,Profile:Screen});LoginStack.router=(0,_StackRouter.default)({Form:Screen,ForgotPassword:Screen});var router=(0,_SwitchRouter.default)({Home:Screen,Login:LoginStack,Main:MainStack},{initialRouteName:'Login'});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state.routes[state.index].routeName).toEqual('Login');var state2=router.getStateForAction({type:SwitchActions.JUMP_TO,routeName:'Home'},state);expect(state2.routes[state2.index].routeName).toEqual('Home');});});var ExampleRouterHelper=function ExampleRouterHelper(config){var _this=this;(0,_classCallCheck2.default)(this,ExampleRouterHelper);this.applyAction=function(action){_this._currentState=_this._router.getStateForAction(action,_this._currentState);return _this._currentState;};this.getCurrentState=function(){return _this._currentState;};this._router=getExampleRouter(config);this._currentState=this._router.getStateForAction({type:NavigationActions.INIT});};var getExampleRouter=function getExampleRouter(){var config=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var PlainScreen=function PlainScreen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:299}});};var StackA=function StackA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:300}});};var StackB=function StackB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:301}});};var StackC=function StackC(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:302}});};StackA.router=(0,_StackRouter.default)({A1:PlainScreen,A2:PlainScreen});StackB.router=(0,_StackRouter.default)({B1:PlainScreen,B2:PlainScreen});StackC.router=(0,_StackRouter.default)({C1:PlainScreen,C2:PlainScreen});var router=(0,_SwitchRouter.default)({A:{screen:StackA,path:''},B:{screen:StackB,path:'great/path'},C:{screen:StackC,path:'pathC'}},(0,_objectSpread2.default)({initialRouteName:'A'},config));return router;};
|
|
2
2
|
//# sourceMappingURL=SwitchRouter-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SwitchRouter-test.js"],"names":["describe","it","router","getExampleRouter","state","getStateForAction","type","NavigationActions","INIT","state2","NAVIGATE","routeName","expect","routes","index","toEqual","length","state3","resetOnBlur","SwitchActions","JUMP_TO","BACK","backBehavior","routeKeyHistory","toBeUndefined","routerHelper","ExampleRouterHelper","getCurrentState","applyAction","toMatchObject","action","subState","activeGrandChildRoute","params","foo","Screen","NestedSwitch","OtherNestedSwitch","nestedRouter","Foo","Bar","otherNestedRouter","initialRouteName","state4","activeState4","MainStack","LoginStack","Home","Profile","Form","ForgotPassword","Login","Main","config","_currentState","_router","PlainScreen","StackA","StackB","StackC","A1","A2","B1","B2","C1","C2","A","screen","path","B","C"],"mappings":"gWAEA,oDACA,qEACA,mEACA,uEACA,kF,6GAEAA,QAAQ,CAAC,cAAD,CAAiB,UAAM,CAC7BC,EAAE,CAAC,mDAAD,CAAsD,UAAM,CAC5D,GAAMC,CAAAA,MAAM,CAAGC,gBAAgB,EAA/B,CACA,GAAMC,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMC,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEC,iBAAiB,CAACG,QAA1B,CAAoCC,SAAS,CAAE,IAA/C,CADa,CAEbP,KAFa,CAAf,CAIAQ,MAAM,CAACH,MAAM,CAACI,MAAP,CAAc,CAAd,EAAiBC,KAAlB,CAAN,CAA+BC,OAA/B,CAAuC,CAAvC,EACAH,MAAM,CAACH,MAAM,CAACI,MAAP,CAAc,CAAd,EAAiBA,MAAjB,CAAwBG,MAAzB,CAAN,CAAuCD,OAAvC,CAA+C,CAA/C,EAEA,GAAME,CAAAA,MAAM,CAAGf,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEC,iBAAiB,CAACG,QAA1B,CAAoCC,SAAS,CAAE,GAA/C,CADa,CAEbF,MAFa,CAAf,CAKAG,MAAM,CAACK,MAAM,CAACJ,MAAP,CAAc,CAAd,EAAiBC,KAAlB,CAAN,CAA+BC,OAA/B,CAAuC,CAAvC,EACAH,MAAM,CAACK,MAAM,CAACJ,MAAP,CAAc,CAAd,EAAiBA,MAAjB,CAAwBG,MAAzB,CAAN,CAAuCD,OAAvC,CAA+C,CAA/C,EACD,CAjBC,CAAF,CAmBAd,EAAE,CAAC,6DAAD,CAAgE,UAAM,CACtE,GAAMC,CAAAA,MAAM,CAAGC,gBAAgB,CAAC,CAAEe,WAAW,CAAE,KAAf,CAAD,CAA/B,CACA,GAAMd,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMC,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEC,iBAAiB,CAACG,QAA1B,CAAoCC,SAAS,CAAE,IAA/C,CADa,CAEbP,KAFa,CAAf,CAIAQ,MAAM,CAACH,MAAM,CAACI,MAAP,CAAc,CAAd,EAAiBC,KAAlB,CAAN,CAA+BC,OAA/B,CAAuC,CAAvC,EACAH,MAAM,CAACH,MAAM,CAACI,MAAP,CAAc,CAAd,EAAiBA,MAAjB,CAAwBG,MAAzB,CAAN,CAAuCD,OAAvC,CAA+C,CAA/C,EAEA,GAAME,CAAAA,MAAM,CAAGf,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEC,iBAAiB,CAACG,QAA1B,CAAoCC,SAAS,CAAE,GAA/C,CADa,CAEbF,MAFa,CAAf,CAKAG,MAAM,CAACK,MAAM,CAACJ,MAAP,CAAc,CAAd,EAAiBC,KAAlB,CAAN,CAA+BC,OAA/B,CAAuC,CAAvC,EACAH,MAAM,CAACK,MAAM,CAACJ,MAAP,CAAc,CAAd,EAAiBA,MAAjB,CAAwBG,MAAzB,CAAN,CAAuCD,OAAvC,CAA+C,CAA/C,EACD,CAjBC,CAAF,CAmBAd,EAAE,CAAC,yBAAD,CAA4B,UAAM,CAClC,GAAMC,CAAAA,MAAM,CAAGC,gBAAgB,EAA/B,CACA,GAAMC,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMC,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEa,aAAa,CAACC,OAAtB,CAA+BT,SAAS,CAAE,GAA1C,CADa,CAEbP,KAFa,CAAf,CAIAQ,MAAM,CAACH,MAAM,CAACK,KAAR,CAAN,CAAqBC,OAArB,CAA6B,CAA7B,EAEA,GAAME,CAAAA,MAAM,CAAGf,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CADa,CAEbZ,MAFa,CAAf,CAKAG,MAAM,CAACK,MAAM,CAACH,KAAR,CAAN,CAAqBC,OAArB,CAA6B,CAA7B,EACD,CAfC,CAAF,CAiBAd,EAAE,CAAC,mCAAD,CAAsC,UAAM,CAC5C,GAAMC,CAAAA,MAAM,CAAGC,gBAAgB,CAAC,CAAEmB,YAAY,CAAE,cAAhB,CAAD,CAA/B,CAEA,GAAMlB,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACAI,MAAM,CAACR,KAAK,CAACmB,eAAP,CAAN,CAA8BC,aAA9B,GAEA,GAAMf,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEa,aAAa,CAACC,OAAtB,CAA+BT,SAAS,CAAE,GAA1C,CADa,CAEbP,KAFa,CAAf,CAIAQ,MAAM,CAACH,MAAM,CAACK,KAAR,CAAN,CAAqBC,OAArB,CAA6B,CAA7B,EAEA,GAAME,CAAAA,MAAM,CAAGf,MAAM,CAACG,iBAAP,CACb,CAAEC,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CADa,CAEbZ,MAFa,CAAf,CAKAG,MAAM,CAACK,MAAM,CAACH,KAAR,CAAN,CAAqBC,OAArB,CAA6B,CAA7B,EACD,CAlBC,CAAF,CAoBAd,EAAE,CAAC,4BAAD,CAA+B,UAAM,CACrC,GAAMwB,CAAAA,YAAY,CAAG,GAAIC,CAAAA,mBAAJ,CAAwB,CAAEJ,YAAY,CAAE,OAAhB,CAAxB,CAArB,CACAV,MAAM,CAACa,YAAY,CAACE,eAAb,GAA+BJ,eAAhC,CAAN,CAAuDC,aAAvD,GAEAZ,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CACvBtB,IAAI,CAAEa,aAAa,CAACC,OADG,CAEvBT,SAAS,CAAE,GAFY,CAAzB,CADI,CAAN,CAKEkB,aALF,CAKgB,CAAEf,KAAK,CAAE,CAAT,CALhB,EAOAF,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CAAEtB,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CAAzB,CADI,CAAN,CAEEQ,aAFF,CAEgB,CAAEf,KAAK,CAAE,CAAT,CAFhB,EAIAF,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CAAEtB,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CAAzB,CADI,CAAN,CAEEQ,aAFF,CAEgB,CAAEf,KAAK,CAAE,CAAT,CAFhB,EAIAF,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CAAEtB,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CAAzB,CADI,CAAN,CAEEQ,aAFF,CAEgB,CAAEf,KAAK,CAAE,CAAT,CAFhB,EAGD,CAtBC,CAAF,CAwBAb,EAAE,CAAC,8BAAD,CAAiC,UAAM,CACvC,GAAMwB,CAAAA,YAAY,CAAG,GAAIC,CAAAA,mBAAJ,CAAwB,CAAEJ,YAAY,CAAE,SAAhB,CAAxB,CAArB,CACAV,MAAM,CAACa,YAAY,CAACE,eAAb,GAA+BJ,eAAhC,CAAN,CAAuDM,aAAvD,CAAqE,CAAC,GAAD,CAArE,EAEAjB,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CACvBtB,IAAI,CAAEC,iBAAiB,CAACG,QADD,CAEvBC,SAAS,CAAE,GAFY,CAAzB,CADI,CAAN,CAKEkB,aALF,CAKgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAAM,GAAN,CAA7B,CALhB,EAOAX,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CACvBtB,IAAI,CAAEC,iBAAiB,CAACG,QADD,CAEvBC,SAAS,CAAE,GAFY,CAAzB,CADI,CAAN,CAKEkB,aALF,CAKgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAAM,GAAN,CAA7B,CALhB,EAOAX,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CACvBtB,IAAI,CAAEC,iBAAiB,CAACG,QADD,CAEvBC,SAAS,CAAE,GAFY,CAAzB,CADI,CAAN,CAKEkB,aALF,CAKgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAAM,GAAN,CAAW,GAAX,CAA7B,CALhB,EAOAX,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CACvBtB,IAAI,CAAEC,iBAAiB,CAACG,QADD,CAEvBC,SAAS,CAAE,GAFY,CAAzB,CADI,CAAN,CAKEkB,aALF,CAKgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAAM,GAAN,CAAW,GAAX,CAA7B,CALhB,EAOAX,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CAAEtB,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CAAzB,CADI,CAAN,CAEEQ,aAFF,CAEgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAAM,GAAN,CAA7B,CAFhB,EAIAX,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CAAEtB,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CAAzB,CADI,CAAN,CAEEQ,aAFF,CAEgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAA7B,CAFhB,EAIAX,MAAM,CACJa,YAAY,CAACG,WAAb,CAAyB,CAAEtB,IAAI,CAAEC,iBAAiB,CAACc,IAA1B,CAAzB,CADI,CAAN,CAEEQ,aAFF,CAEgB,CAAEf,KAAK,CAAE,CAAT,CAAYS,eAAe,CAAE,CAAC,GAAD,CAA7B,CAFhB,EAGD,CA3CC,CAAF,CA6CAtB,EAAE,CAAC,wBAAD,CAA2B,UAAM,CACjC,GAAMC,CAAAA,MAAM,CAAGC,gBAAgB,EAA/B,CACA,GAAMC,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMC,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CACEC,IAAI,CAAEC,iBAAiB,CAACG,QAD1B,CAEEC,SAAS,CAAE,GAFb,CAGEmB,MAAM,CAAE,CAAExB,IAAI,CAAEC,iBAAiB,CAACG,QAA1B,CAAoCC,SAAS,CAAE,IAA/C,CAHV,CADa,CAMbP,KANa,CAAf,CAQA,GAAM2B,CAAAA,QAAQ,CAAGtB,MAAM,CAACI,MAAP,CAAcJ,MAAM,CAACK,KAArB,CAAjB,CACA,GAAMkB,CAAAA,qBAAqB,CAAGD,QAAQ,CAAClB,MAAT,CAAgBkB,QAAQ,CAACjB,KAAzB,CAA9B,CACAF,MAAM,CAACoB,qBAAqB,CAACrB,SAAvB,CAAN,CAAwCI,OAAxC,CAAgD,IAAhD,EACD,CAdC,CAAF,CAgBAd,EAAE,CAAC,kDAAD,CAAqD,UAAM,CAC3D,GAAMC,CAAAA,MAAM,CAAGC,gBAAgB,EAA/B,CACA,GAAMC,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMC,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CACEC,IAAI,CAAEC,iBAAiB,CAACG,QAD1B,CAEEC,SAAS,CAAE,GAFb,CAGEsB,MAAM,CAAE,CAAEC,GAAG,CAAE,KAAP,CAHV,CAIEJ,MAAM,CAAE,CAAExB,IAAI,CAAEC,iBAAiB,CAACG,QAA1B,CAAoCC,SAAS,CAAE,IAA/C,CAJV,CADa,CAObP,KAPa,CAAf,CASA,GAAM2B,CAAAA,QAAQ,CAAGtB,MAAM,CAACI,MAAP,CAAcJ,MAAM,CAACK,KAArB,CAAjB,CACA,GAAMkB,CAAAA,qBAAqB,CAAGD,QAAQ,CAAClB,MAAT,CAAgBkB,QAAQ,CAACjB,KAAzB,CAA9B,CACAF,MAAM,CAACmB,QAAQ,CAACE,MAAT,CAAgBC,GAAjB,CAAN,CAA4BnB,OAA5B,CAAoC,KAApC,EACAH,MAAM,CAACoB,qBAAqB,CAACrB,SAAvB,CAAN,CAAwCI,OAAxC,CAAgD,IAAhD,EACD,CAhBC,CAAF,CAkBAd,EAAE,CAAC,uEAAD,CAA0E,UAAM,CAIhF,GAAMkC,CAAAA,MAAM,CAAG,QAATA,CAAAA,MAAS,SAAM,sFAAN,EAAf,CACA,GAAMC,CAAAA,YAAY,CAAG,QAAfA,CAAAA,YAAe,SAAM,sFAAN,EAArB,CACA,GAAMC,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,SAAM,sFAAN,EAA1B,CAEA,GAAIC,CAAAA,YAAY,CAAG,0BAAa,CAAEC,GAAG,CAAEJ,MAAP,CAAeK,GAAG,CAAEL,MAApB,CAAb,CAAnB,CACA,GAAIM,CAAAA,iBAAiB,CAAG,0BAAa,CAAEF,GAAG,CAAEJ,MAAP,CAAb,CAAxB,CACAC,YAAY,CAAClC,MAAb,CAAsBoC,YAAtB,CACAD,iBAAiB,CAACnC,MAAlB,CAA2BuC,iBAA3B,CAEA,GAAIvC,CAAAA,MAAM,CAAG,0BACX,CACEkC,YAAY,CAAZA,YADF,CAEEC,iBAAiB,CAAjBA,iBAFF,CAGEG,GAAG,CAAEL,MAHP,CADW,CAMX,CACEO,gBAAgB,CAAE,mBADpB,CANW,CAAb,CAWA,GAAMtC,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACAI,MAAM,CAACR,KAAK,CAACS,MAAN,CAAaT,KAAK,CAACU,KAAnB,EAA0BH,SAA3B,CAAN,CAA4CI,OAA5C,CAAoD,mBAApD,EAEA,GAAMN,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CACEC,IAAI,CAAEC,iBAAiB,CAACG,QAD1B,CAEEC,SAAS,CAAE,KAFb,CADa,CAKbP,KALa,CAAf,CAOAQ,MAAM,CAACH,MAAM,CAACI,MAAP,CAAcJ,MAAM,CAACK,KAArB,EAA4BH,SAA7B,CAAN,CAA8CI,OAA9C,CAAsD,KAAtD,EAEA,GAAME,CAAAA,MAAM,CAAGf,MAAM,CAACG,iBAAP,CACb,CACEC,IAAI,CAAEC,iBAAiB,CAACG,QAD1B,CAEEC,SAAS,CAAE,cAFb,CADa,CAKbF,MALa,CAAf,CAOA,GAAMkC,CAAAA,MAAM,CAAGzC,MAAM,CAACG,iBAAP,CACb,CACEC,IAAI,CAAEC,iBAAiB,CAACG,QAD1B,CAEEC,SAAS,CAAE,KAFb,CADa,CAKbM,MALa,CAAf,CAOA,GAAI2B,CAAAA,YAAY,CAAGD,MAAM,CAAC9B,MAAP,CAAc8B,MAAM,CAAC7B,KAArB,CAAnB,CACAF,MAAM,CAACgC,YAAY,CAACjC,SAAd,CAAN,CAA+BI,OAA/B,CAAuC,cAAvC,EACAH,MAAM,CAACgC,YAAY,CAAC/B,MAAb,CAAoB+B,YAAY,CAAC9B,KAAjC,EAAwCH,SAAzC,CAAN,CAA0DI,OAA1D,CAAkE,KAAlE,EACD,CArDC,CAAF,CAwDAd,EAAE,CAAC,sEAAD,CAAyE,UAAM,CAC/E,GAAMkC,CAAAA,MAAM,CAAG,QAATA,CAAAA,MAAS,SAAM,sFAAN,EAAf,CACA,GAAMU,CAAAA,SAAS,CAAG,QAAZA,CAAAA,SAAY,SAAM,sFAAN,EAAlB,CACA,GAAMC,CAAAA,UAAU,CAAG,QAAbA,CAAAA,UAAa,SAAM,sFAAN,EAAnB,CACAD,SAAS,CAAC3C,MAAV,CAAmB,yBAAY,CAAE6C,IAAI,CAAEZ,MAAR,CAAgBa,OAAO,CAAEb,MAAzB,CAAZ,CAAnB,CACAW,UAAU,CAAC5C,MAAX,CAAoB,yBAAY,CAAE+C,IAAI,CAAEd,MAAR,CAAgBe,cAAc,CAAEf,MAAhC,CAAZ,CAApB,CAEA,GAAIjC,CAAAA,MAAM,CAAG,0BACX,CACE6C,IAAI,CAAEZ,MADR,CAEEgB,KAAK,CAAEL,UAFT,CAGEM,IAAI,CAAEP,SAHR,CADW,CAMX,CACEH,gBAAgB,CAAE,OADpB,CANW,CAAb,CAWA,GAAMtC,CAAAA,KAAK,CAAGF,MAAM,CAACG,iBAAP,CAAyB,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACAI,MAAM,CAACR,KAAK,CAACS,MAAN,CAAaT,KAAK,CAACU,KAAnB,EAA0BH,SAA3B,CAAN,CAA4CI,OAA5C,CAAoD,OAApD,EAEA,GAAMN,CAAAA,MAAM,CAAGP,MAAM,CAACG,iBAAP,CACb,CACEC,IAAI,CAAEa,aAAa,CAACC,OADtB,CAEET,SAAS,CAAE,MAFb,CADa,CAKbP,KALa,CAAf,CAOAQ,MAAM,CAACH,MAAM,CAACI,MAAP,CAAcJ,MAAM,CAACK,KAArB,EAA4BH,SAA7B,CAAN,CAA8CI,OAA9C,CAAsD,MAAtD,EACD,CA7BC,CAAF,CA8BD,CAzQO,CAAR,C,GA8QMW,CAAAA,mB,CACJ,6BAAY2B,MAAZ,CAAoB,4EAOpBzB,WAPoB,CAON,SAAAE,MAAM,CAAI,CACtB,KAAI,CAACwB,aAAL,CAAqB,KAAI,CAACC,OAAL,CAAalD,iBAAb,CACnByB,MADmB,CAEnB,KAAI,CAACwB,aAFc,CAArB,CAIA,MAAO,CAAA,KAAI,CAACA,aAAZ,CACD,CAbmB,MAepB3B,eAfoB,CAeF,iBAAM,CAAA,KAAI,CAAC2B,aAAX,EAfE,CAClB,KAAKC,OAAL,CAAepD,gBAAgB,CAACkD,MAAD,CAA/B,CACA,KAAKC,aAAL,CAAqB,KAAKC,OAAL,CAAalD,iBAAb,CAA+B,CAClDC,IAAI,CAAEC,iBAAiB,CAACC,IAD0B,CAA/B,CAArB,CAGD,C,CAaH,GAAML,CAAAA,gBAAgB,CAAG,QAAnBA,CAAAA,gBAAmB,EAAiB,IAAhBkD,CAAAA,MAAgB,2DAAP,EAAO,CACxC,GAAMG,CAAAA,WAAW,CAAG,QAAdA,CAAAA,WAAc,SAAM,sFAAN,EAApB,CACA,GAAMC,CAAAA,MAAM,CAAG,QAATA,CAAAA,MAAS,SAAM,sFAAN,EAAf,CACA,GAAMC,CAAAA,MAAM,CAAG,QAATA,CAAAA,MAAS,SAAM,sFAAN,EAAf,CACA,GAAMC,CAAAA,MAAM,CAAG,QAATA,CAAAA,MAAS,SAAM,sFAAN,EAAf,CAEAF,MAAM,CAACvD,MAAP,CAAgB,yBAAY,CAC1B0D,EAAE,CAAEJ,WADsB,CAE1BK,EAAE,CAAEL,WAFsB,CAAZ,CAAhB,CAKAE,MAAM,CAACxD,MAAP,CAAgB,yBAAY,CAC1B4D,EAAE,CAAEN,WADsB,CAE1BO,EAAE,CAAEP,WAFsB,CAAZ,CAAhB,CAKAG,MAAM,CAACzD,MAAP,CAAgB,yBAAY,CAC1B8D,EAAE,CAAER,WADsB,CAE1BS,EAAE,CAAET,WAFsB,CAAZ,CAAhB,CAKA,GAAMtD,CAAAA,MAAM,CAAG,0BACb,CACEgE,CAAC,CAAE,CACDC,MAAM,CAAEV,MADP,CAEDW,IAAI,CAAE,EAFL,CADL,CAKEC,CAAC,CAAE,CACDF,MAAM,CAAET,MADP,CAEDU,IAAI,CAAE,YAFL,CALL,CASEE,CAAC,CAAE,CACDH,MAAM,CAAER,MADP,CAEDS,IAAI,CAAE,OAFL,CATL,CADa,6BAgBX1B,gBAAgB,CAAE,GAhBP,EAiBRW,MAjBQ,EAAf,CAqBA,MAAOnD,CAAAA,MAAP,CACD,CA3CD","sourcesContent":["/* eslint react/display-name:0 */\n\nimport React from 'react';\nimport SwitchRouter from '../SwitchRouter';\nimport StackRouter from '../StackRouter';\nimport * as SwitchActions from '../SwitchActions';\nimport * as NavigationActions from '../../NavigationActions';\n\ndescribe('SwitchRouter', () => {\n it('resets the route when unfocusing a tab by default', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'A2' },\n state\n );\n expect(state2.routes[0].index).toEqual(1);\n expect(state2.routes[0].routes.length).toEqual(2);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'B' },\n state2\n );\n\n expect(state3.routes[0].index).toEqual(0);\n expect(state3.routes[0].routes.length).toEqual(1);\n });\n\n it('does not reset the route on unfocus if resetOnBlur is false', () => {\n const router = getExampleRouter({ resetOnBlur: false });\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'A2' },\n state\n );\n expect(state2.routes[0].index).toEqual(1);\n expect(state2.routes[0].routes.length).toEqual(2);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'B' },\n state2\n );\n\n expect(state3.routes[0].index).toEqual(1);\n expect(state3.routes[0].routes.length).toEqual(2);\n });\n\n it('ignores back by default', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: SwitchActions.JUMP_TO, routeName: 'B' },\n state\n );\n expect(state2.index).toEqual(1);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state2\n );\n\n expect(state3.index).toEqual(1);\n });\n\n it('handles initialRoute backBehavior', () => {\n const router = getExampleRouter({ backBehavior: 'initialRoute' });\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state.routeKeyHistory).toBeUndefined();\n\n const state2 = router.getStateForAction(\n { type: SwitchActions.JUMP_TO, routeName: 'B' },\n state\n );\n expect(state2.index).toEqual(1);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state2\n );\n\n expect(state3.index).toEqual(0);\n });\n\n it('handles order backBehavior', () => {\n const routerHelper = new ExampleRouterHelper({ backBehavior: 'order' });\n expect(routerHelper.getCurrentState().routeKeyHistory).toBeUndefined();\n\n expect(\n routerHelper.applyAction({\n type: SwitchActions.JUMP_TO,\n routeName: 'C',\n })\n ).toMatchObject({ index: 2 });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 1 });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 0 });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 0 });\n });\n\n it('handles history backBehavior', () => {\n const routerHelper = new ExampleRouterHelper({ backBehavior: 'history' });\n expect(routerHelper.getCurrentState().routeKeyHistory).toMatchObject(['A']);\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'B',\n })\n ).toMatchObject({ index: 1, routeKeyHistory: ['A', 'B'] });\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'A',\n })\n ).toMatchObject({ index: 0, routeKeyHistory: ['B', 'A'] });\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'C',\n })\n ).toMatchObject({ index: 2, routeKeyHistory: ['B', 'A', 'C'] });\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'A',\n })\n ).toMatchObject({ index: 0, routeKeyHistory: ['B', 'C', 'A'] });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 2, routeKeyHistory: ['B', 'C'] });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 1, routeKeyHistory: ['B'] });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 1, routeKeyHistory: ['B'] });\n });\n\n it('handles nested actions', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'B',\n action: { type: NavigationActions.NAVIGATE, routeName: 'B2' },\n },\n state\n );\n const subState = state2.routes[state2.index];\n const activeGrandChildRoute = subState.routes[subState.index];\n expect(activeGrandChildRoute.routeName).toEqual('B2');\n });\n\n it('handles nested actions and params simultaneously', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'B',\n params: { foo: 'bar' },\n action: { type: NavigationActions.NAVIGATE, routeName: 'B2' },\n },\n state\n );\n const subState = state2.routes[state2.index];\n const activeGrandChildRoute = subState.routes[subState.index];\n expect(subState.params.foo).toEqual('bar');\n expect(activeGrandChildRoute.routeName).toEqual('B2');\n });\n\n it('order of handling navigate action is correct for nested switchrouters', () => {\n // router = switch({ Nested: switch({ Foo, Bar }), Other: switch({ Foo }), Bar })\n // if we are focused on Other and navigate to Bar, what should happen?\n\n const Screen = () => <div />;\n const NestedSwitch = () => <div />;\n const OtherNestedSwitch = () => <div />;\n\n let nestedRouter = SwitchRouter({ Foo: Screen, Bar: Screen });\n let otherNestedRouter = SwitchRouter({ Foo: Screen });\n NestedSwitch.router = nestedRouter;\n OtherNestedSwitch.router = otherNestedRouter;\n\n let router = SwitchRouter(\n {\n NestedSwitch,\n OtherNestedSwitch,\n Bar: Screen,\n },\n {\n initialRouteName: 'OtherNestedSwitch',\n }\n );\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state.routes[state.index].routeName).toEqual('OtherNestedSwitch');\n\n const state2 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n },\n state\n );\n expect(state2.routes[state2.index].routeName).toEqual('Bar');\n\n const state3 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'NestedSwitch',\n },\n state2\n );\n const state4 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n },\n state3\n );\n let activeState4 = state4.routes[state4.index];\n expect(activeState4.routeName).toEqual('NestedSwitch');\n expect(activeState4.routes[activeState4.index].routeName).toEqual('Bar');\n });\n\n // https://github.com/react-navigation/react-navigation.github.io/issues/117#issuecomment-385597628\n it('order of handling navigate action is correct for nested stackrouters', () => {\n const Screen = () => <div />;\n const MainStack = () => <div />;\n const LoginStack = () => <div />;\n MainStack.router = StackRouter({ Home: Screen, Profile: Screen });\n LoginStack.router = StackRouter({ Form: Screen, ForgotPassword: Screen });\n\n let router = SwitchRouter(\n {\n Home: Screen,\n Login: LoginStack,\n Main: MainStack,\n },\n {\n initialRouteName: 'Login',\n }\n );\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state.routes[state.index].routeName).toEqual('Login');\n\n const state2 = router.getStateForAction(\n {\n type: SwitchActions.JUMP_TO,\n routeName: 'Home',\n },\n state\n );\n expect(state2.routes[state2.index].routeName).toEqual('Home');\n });\n});\n\n// A simple helper that makes it easier to write basic routing tests\n// As we generally want to apply one action after the other,\n// it's often convenient to manipulate a structure that keeps the router state\nclass ExampleRouterHelper {\n constructor(config) {\n this._router = getExampleRouter(config);\n this._currentState = this._router.getStateForAction({\n type: NavigationActions.INIT,\n });\n }\n\n applyAction = action => {\n this._currentState = this._router.getStateForAction(\n action,\n this._currentState\n );\n return this._currentState;\n };\n\n getCurrentState = () => this._currentState;\n}\n\nconst getExampleRouter = (config = {}) => {\n const PlainScreen = () => <div />;\n const StackA = () => <div />;\n const StackB = () => <div />;\n const StackC = () => <div />;\n\n StackA.router = StackRouter({\n A1: PlainScreen,\n A2: PlainScreen,\n });\n\n StackB.router = StackRouter({\n B1: PlainScreen,\n B2: PlainScreen,\n });\n\n StackC.router = StackRouter({\n C1: PlainScreen,\n C2: PlainScreen,\n });\n\n const router = SwitchRouter(\n {\n A: {\n screen: StackA,\n path: '',\n },\n B: {\n screen: StackB,\n path: 'great/path',\n },\n C: {\n screen: StackC,\n path: 'pathC',\n },\n },\n {\n initialRouteName: 'A',\n ...config,\n }\n );\n\n return router;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["SwitchRouter-test.js"],"names":["describe","it","router","getExampleRouter","state","getStateForAction","type","NavigationActions","INIT","state2","NAVIGATE","routeName","expect","routes","index","toEqual","length","state3","resetOnBlur","SwitchActions","JUMP_TO","BACK","backBehavior","routeKeyHistory","toBeUndefined","routerHelper","ExampleRouterHelper","getCurrentState","applyAction","toMatchObject","action","subState","activeGrandChildRoute","params","foo","Screen","NestedSwitch","OtherNestedSwitch","nestedRouter","Foo","Bar","otherNestedRouter","initialRouteName","state4","activeState4","MainStack","LoginStack","Home","Profile","Form","ForgotPassword","Login","Main","config","_currentState","_router","PlainScreen","StackA","StackB","StackC","A1","A2","B1","B2","C1","C2","A","screen","path","B","C"],"mappings":"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","sourcesContent":["/* eslint react/display-name:0 */\n\nimport React from 'react';\nimport SwitchRouter from '../SwitchRouter';\nimport StackRouter from '../StackRouter';\nimport * as SwitchActions from '../SwitchActions';\nimport * as NavigationActions from '../../NavigationActions';\n\ndescribe('SwitchRouter', () => {\n it('resets the route when unfocusing a tab by default', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'A2' },\n state\n );\n expect(state2.routes[0].index).toEqual(1);\n expect(state2.routes[0].routes.length).toEqual(2);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'B' },\n state2\n );\n\n expect(state3.routes[0].index).toEqual(0);\n expect(state3.routes[0].routes.length).toEqual(1);\n });\n\n it('does not reset the route on unfocus if resetOnBlur is false', () => {\n const router = getExampleRouter({ resetOnBlur: false });\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'A2' },\n state\n );\n expect(state2.routes[0].index).toEqual(1);\n expect(state2.routes[0].routes.length).toEqual(2);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'B' },\n state2\n );\n\n expect(state3.routes[0].index).toEqual(1);\n expect(state3.routes[0].routes.length).toEqual(2);\n });\n\n it('ignores back by default', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: SwitchActions.JUMP_TO, routeName: 'B' },\n state\n );\n expect(state2.index).toEqual(1);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state2\n );\n\n expect(state3.index).toEqual(1);\n });\n\n it('handles initialRoute backBehavior', () => {\n const router = getExampleRouter({ backBehavior: 'initialRoute' });\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state.routeKeyHistory).toBeUndefined();\n\n const state2 = router.getStateForAction(\n { type: SwitchActions.JUMP_TO, routeName: 'B' },\n state\n );\n expect(state2.index).toEqual(1);\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state2\n );\n\n expect(state3.index).toEqual(0);\n });\n\n it('handles order backBehavior', () => {\n const routerHelper = new ExampleRouterHelper({ backBehavior: 'order' });\n expect(routerHelper.getCurrentState().routeKeyHistory).toBeUndefined();\n\n expect(\n routerHelper.applyAction({\n type: SwitchActions.JUMP_TO,\n routeName: 'C',\n })\n ).toMatchObject({ index: 2 });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 1 });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 0 });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 0 });\n });\n\n it('handles history backBehavior', () => {\n const routerHelper = new ExampleRouterHelper({ backBehavior: 'history' });\n expect(routerHelper.getCurrentState().routeKeyHistory).toMatchObject(['A']);\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'B',\n })\n ).toMatchObject({ index: 1, routeKeyHistory: ['A', 'B'] });\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'A',\n })\n ).toMatchObject({ index: 0, routeKeyHistory: ['B', 'A'] });\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'C',\n })\n ).toMatchObject({ index: 2, routeKeyHistory: ['B', 'A', 'C'] });\n\n expect(\n routerHelper.applyAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'A',\n })\n ).toMatchObject({ index: 0, routeKeyHistory: ['B', 'C', 'A'] });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 2, routeKeyHistory: ['B', 'C'] });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 1, routeKeyHistory: ['B'] });\n\n expect(\n routerHelper.applyAction({ type: NavigationActions.BACK })\n ).toMatchObject({ index: 1, routeKeyHistory: ['B'] });\n });\n\n it('handles nested actions', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'B',\n action: { type: NavigationActions.NAVIGATE, routeName: 'B2' },\n },\n state\n );\n const subState = state2.routes[state2.index];\n const activeGrandChildRoute = subState.routes[subState.index];\n expect(activeGrandChildRoute.routeName).toEqual('B2');\n });\n\n it('handles nested actions and params simultaneously', () => {\n const router = getExampleRouter();\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'B',\n params: { foo: 'bar' },\n action: { type: NavigationActions.NAVIGATE, routeName: 'B2' },\n },\n state\n );\n const subState = state2.routes[state2.index];\n const activeGrandChildRoute = subState.routes[subState.index];\n expect(subState.params.foo).toEqual('bar');\n expect(activeGrandChildRoute.routeName).toEqual('B2');\n });\n\n it('order of handling navigate action is correct for nested switchrouters', () => {\n // router = switch({ Nested: switch({ Foo, Bar }), Other: switch({ Foo }), Bar })\n // if we are focused on Other and navigate to Bar, what should happen?\n\n const Screen = () => <div />;\n const NestedSwitch = () => <div />;\n const OtherNestedSwitch = () => <div />;\n\n let nestedRouter = SwitchRouter({ Foo: Screen, Bar: Screen });\n let otherNestedRouter = SwitchRouter({ Foo: Screen });\n NestedSwitch.router = nestedRouter;\n OtherNestedSwitch.router = otherNestedRouter;\n\n let router = SwitchRouter(\n {\n NestedSwitch,\n OtherNestedSwitch,\n Bar: Screen,\n },\n {\n initialRouteName: 'OtherNestedSwitch',\n }\n );\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state.routes[state.index].routeName).toEqual('OtherNestedSwitch');\n\n const state2 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n },\n state\n );\n expect(state2.routes[state2.index].routeName).toEqual('Bar');\n\n const state3 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'NestedSwitch',\n },\n state2\n );\n const state4 = router.getStateForAction(\n {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n },\n state3\n );\n let activeState4 = state4.routes[state4.index];\n expect(activeState4.routeName).toEqual('NestedSwitch');\n expect(activeState4.routes[activeState4.index].routeName).toEqual('Bar');\n });\n\n // https://github.com/react-navigation/react-navigation.github.io/issues/117#issuecomment-385597628\n it('order of handling navigate action is correct for nested stackrouters', () => {\n const Screen = () => <div />;\n const MainStack = () => <div />;\n const LoginStack = () => <div />;\n MainStack.router = StackRouter({ Home: Screen, Profile: Screen });\n LoginStack.router = StackRouter({ Form: Screen, ForgotPassword: Screen });\n\n let router = SwitchRouter(\n {\n Home: Screen,\n Login: LoginStack,\n Main: MainStack,\n },\n {\n initialRouteName: 'Login',\n }\n );\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state.routes[state.index].routeName).toEqual('Login');\n\n const state2 = router.getStateForAction(\n {\n type: SwitchActions.JUMP_TO,\n routeName: 'Home',\n },\n state\n );\n expect(state2.routes[state2.index].routeName).toEqual('Home');\n });\n});\n\n// A simple helper that makes it easier to write basic routing tests\n// As we generally want to apply one action after the other,\n// it's often convenient to manipulate a structure that keeps the router state\nclass ExampleRouterHelper {\n constructor(config) {\n this._router = getExampleRouter(config);\n this._currentState = this._router.getStateForAction({\n type: NavigationActions.INIT,\n });\n }\n\n applyAction = action => {\n this._currentState = this._router.getStateForAction(\n action,\n this._currentState\n );\n return this._currentState;\n };\n\n getCurrentState = () => this._currentState;\n}\n\nconst getExampleRouter = (config = {}) => {\n const PlainScreen = () => <div />;\n const StackA = () => <div />;\n const StackB = () => <div />;\n const StackC = () => <div />;\n\n StackA.router = StackRouter({\n A1: PlainScreen,\n A2: PlainScreen,\n });\n\n StackB.router = StackRouter({\n B1: PlainScreen,\n B2: PlainScreen,\n });\n\n StackC.router = StackRouter({\n C1: PlainScreen,\n C2: PlainScreen,\n });\n\n const router = SwitchRouter(\n {\n A: {\n screen: StackA,\n path: '',\n },\n B: {\n screen: StackB,\n path: 'great/path',\n },\n C: {\n screen: StackC,\n path: 'pathC',\n },\n },\n {\n initialRouteName: 'A',\n ...config,\n }\n );\n\n return router;\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _react=_interopRequireDefault(require("react"));var _TabRouter=_interopRequireDefault(require("../TabRouter"));var NavigationActions=_interopRequireWildcard(require("../../NavigationActions"));var _jsxFileName="/Users/brentvatne/coding/react-navigation-core/src/routers/__tests__/TabRouter-test.js";var INIT_ACTION={type:NavigationActions.INIT};var BareLeafRouteConfig={screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:11}});}};describe('TabRouter',function(){it('Handles basic tab logic',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:16}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:17}});};var router=(0,_TabRouter.default)({Foo:{screen:ScreenA},Bar:{screen:ScreenB}});var state=router.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state).toEqual(expectedState);var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);var expectedState2={index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state2).toEqual(expectedState2);expect(router.getComponentForState(expectedState)).toEqual(ScreenA);expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state2);expect(state3).toEqual(null);});it('Handles getScreen',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:55}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:56}});};var router=(0,_TabRouter.default)({Foo:{getScreen:function getScreen(){return ScreenA;}},Bar:{getScreen:function getScreen(){return ScreenB;}}});var state=router.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state).toEqual(expectedState);var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);var expectedState2={index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state2).toEqual(expectedState2);expect(router.getComponentForState(expectedState)).toEqual(ScreenA);expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state2);expect(state3).toEqual(null);});it('Can set the initial tab',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig},{initialRouteName:'Bar'});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state).toEqual({index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false});});it('Can set the initial params',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig},{initialRouteName:'Bar',initialRouteParams:{name:'Qux'}});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state).toEqual({index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar',params:{name:'Qux'}}],isTransitioning:false});});it('Handles the SetParams action',function(){var router=(0,_TabRouter.default)({Foo:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:128}});}},Bar:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:131}});}}});var state2=router.getStateForAction({type:NavigationActions.SET_PARAMS,params:{name:'Qux'},key:'Foo'});expect(state2&&state2.routes[0].params).toEqual({name:'Qux'});});it('Handles the SetParams action for inactive routes',function(){var router=(0,_TabRouter.default)({Foo:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:146}});}},Bar:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:149}});}}},{initialRouteName:'Bar'});var initialState={index:1,routes:[{key:'RouteA',routeName:'Foo',params:{name:'InitialParam',other:'Unchanged'}},{key:'RouteB',routeName:'Bar',params:{}}]};var state=router.getStateForAction({type:NavigationActions.SET_PARAMS,params:{name:'NewParam'},key:'RouteA'},initialState);expect(state.index).toEqual(1);expect(state.routes[0].params).toEqual({name:'NewParam',other:'Unchanged'});});it('getStateForAction returns null when navigating to same tab',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig},{initialRouteName:'Bar'});var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);expect(state2).toEqual(null);});it('getStateForAction returns initial navigate',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo'});expect(state&&state.index).toEqual(0);});it('Handles nested tabs and nested actions',function(){var ChildTabNavigator=function ChildTabNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:208}});};ChildTabNavigator.router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Baz:{screen:ChildTabNavigator},Boo:BareLeafRouteConfig});var action=router.getActionForPathAndParams('Baz/Bar',{foo:'42'});var navAction={type:NavigationActions.NAVIGATE,routeName:'Baz',params:{foo:'42'},action:{type:NavigationActions.NAVIGATE,routeName:'Bar',params:{foo:'42'}}};expect(action).toEqual(navAction);var state=router.getStateForAction(navAction);expect(state).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:1,isTransitioning:false,key:'Baz',routeName:'Baz',params:{foo:'42'},routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar',params:{foo:'42'}}]},{key:'Boo',routeName:'Boo'}]});});it('Handles passing params to nested tabs',function(){var ChildTabNavigator=function ChildTabNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:268}});};ChildTabNavigator.router=(0,_TabRouter.default)({Boo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Baz:{screen:ChildTabNavigator}});var navAction={type:NavigationActions.NAVIGATE,routeName:'Baz'};var state=router.getStateForAction(navAction);expect(state).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:0,key:'Baz',routeName:'Baz',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Bar',routeName:'Bar'}]}]});state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Boo'},state);expect(state&&state.routes[1]).toEqual({index:0,isTransitioning:false,key:'Baz',routeName:'Baz',routes:[{key:'Boo',routeName:'Boo'},{key:'Bar',routeName:'Bar'}]});});it('Handles initial deep linking into nested tabs',function(){var ChildTabNavigator=function ChildTabNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:322}});};ChildTabNavigator.router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Baz:{screen:ChildTabNavigator},Boo:BareLeafRouteConfig});var state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'});expect(state).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:1,key:'Baz',routeName:'Baz',isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}]},{key:'Boo',routeName:'Boo'}]});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo'},state);expect(state2).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:0,key:'Baz',routeName:'Baz',isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}]},{key:'Boo',routeName:'Boo'}]});var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo'},state2);expect(state3).toEqual(null);});it('Handles linking across of deeply nested tabs',function(){var ChildNavigator0=function ChildNavigator0(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:384}});};ChildNavigator0.router=(0,_TabRouter.default)({Boo:BareLeafRouteConfig,Baz:BareLeafRouteConfig});var ChildNavigator1=function ChildNavigator1(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:389}});};ChildNavigator1.router=(0,_TabRouter.default)({Zoo:BareLeafRouteConfig,Zap:BareLeafRouteConfig});var MidNavigator=function MidNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:394}});};MidNavigator.router=(0,_TabRouter.default)({Fee:{screen:ChildNavigator0},Bar:{screen:ChildNavigator1}});var router=(0,_TabRouter.default)({Foo:{screen:MidNavigator},Gah:BareLeafRouteConfig});var state=router.getStateForAction(INIT_ACTION);expect(state).toEqual({index:0,isTransitioning:false,routes:[{index:0,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{index:0,key:'Fee',routeName:'Fee',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{index:0,key:'Bar',routeName:'Bar',isTransitioning:false,routes:[{key:'Zoo',routeName:'Zoo'},{key:'Zap',routeName:'Zap'}]}]},{key:'Gah',routeName:'Gah'}]});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zap'},state);expect(state2).toEqual({index:0,isTransitioning:false,routes:[{index:1,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{index:0,key:'Fee',routeName:'Fee',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{index:1,key:'Bar',routeName:'Bar',isTransitioning:false,routes:[{key:'Zoo',routeName:'Zoo'},{key:'Zap',routeName:'Zap'}]}]},{key:'Gah',routeName:'Gah'}]});var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zap'},state2);expect(state3).toEqual(null);var state4=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo',action:{type:NavigationActions.NAVIGATE,routeName:'Bar',action:{type:NavigationActions.NAVIGATE,routeName:'Zap'}}});expect(state4).toEqual({index:0,isTransitioning:false,routes:[{index:1,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{index:0,key:'Fee',routeName:'Fee',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{index:1,key:'Bar',routeName:'Bar',isTransitioning:false,routes:[{key:'Zoo',routeName:'Zoo'},{key:'Zap',routeName:'Zap'}]}]},{key:'Gah',routeName:'Gah'}]});});it('Handles path configuration',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:533}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:534}});};var router=(0,_TabRouter.default)({Foo:{path:'f',screen:ScreenA},Bar:{path:'b/:great',screen:ScreenB}});var params={foo:'42'};var action=router.getActionForPathAndParams('b/anything',params);var expectedAction={params:{foo:'42',great:'anything'},routeName:'Bar',type:NavigationActions.NAVIGATE};expect(action).toEqual(expectedAction);var state=router.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}]};expect(state).toEqual(expectedState);var state2=router.getStateForAction(expectedAction,state);var expectedState2={index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo',params:undefined},{key:'Bar',routeName:'Bar',params:{foo:'42',great:'anything'}}]};expect(state2).toEqual(expectedState2);expect(router.getComponentForState(expectedState)).toEqual(ScreenA);expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);expect(router.getPathAndParamsForState(expectedState).path).toEqual('f');expect(router.getPathAndParamsForState(expectedState2).path).toEqual('b/anything');});it('Handles default configuration',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:590}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:591}});};var router=(0,_TabRouter.default)({Foo:{path:'',screen:ScreenA},Bar:{path:'b',screen:ScreenB}});var action=router.getActionForPathAndParams('',{foo:'42'});expect(action).toEqual({params:{foo:'42'},routeName:'Foo',type:NavigationActions.NAVIGATE});});it('Gets deep path',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:613}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:614}});};ScreenA.router=(0,_TabRouter.default)({Boo:{screen:ScreenB},Baz:{screen:ScreenB}});var router=(0,_TabRouter.default)({Foo:{path:'f',screen:ScreenA},Bar:{screen:ScreenB}});var state={index:0,isTransitioning:false,routes:[{index:1,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{key:'Bar',routeName:'Bar'}]};var _router$getPathAndPar=router.getPathAndParamsForState(state),path=_router$getPathAndPar.path;expect(path).toEqual('f/Baz');});it('Can navigate to other tab (no router) with params',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:651}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:652}});};var router=(0,_TabRouter.default)({a:{screen:ScreenA},b:{screen:ScreenB}});var state0=router.getStateForAction(INIT_ACTION);expect(state0).toEqual({index:0,isTransitioning:false,routes:[{key:'a',routeName:'a'},{key:'b',routeName:'b'}]});var params={key:'value'};var state1=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'b',params:params},state0);expect(state1).toEqual({index:1,isTransitioning:false,routes:[{key:'a',routeName:'a'},{key:'b',routeName:'b',params:params}]});});it('Back actions are not propagated to inactive children',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:685}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:686}});};var ScreenC=function ScreenC(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:687}});};var InnerNavigator=function InnerNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:688}});};InnerNavigator.router=(0,_TabRouter.default)({a:{screen:ScreenA},b:{screen:ScreenB}});var router=(0,_TabRouter.default)({inner:{screen:InnerNavigator},c:{screen:ScreenC}},{backBehavior:'none'});var state0=router.getStateForAction(INIT_ACTION);var state1=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'b'},state0);var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'c'},state1);var state3=router.getStateForAction({type:NavigationActions.BACK},state2);expect(state3).toEqual(state2);});it('Back behavior initialRoute works',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:725}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:726}});};var router=(0,_TabRouter.default)({a:{screen:ScreenA},b:{screen:ScreenB}});var state0=router.getStateForAction(INIT_ACTION);var state1=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'b'},state0);var state2=router.getStateForAction({type:NavigationActions.BACK},state1);expect(state2).toEqual(state0);});it('Inner actions are only unpacked if the current tab matches',function(){var PlainScreen=function PlainScreen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:748}});};var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:749}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:750}});};ScreenB.router=(0,_TabRouter.default)({Baz:{screen:PlainScreen},Zoo:{screen:PlainScreen}});ScreenA.router=(0,_TabRouter.default)({Bar:{screen:PlainScreen},Boo:{screen:ScreenB}});var router=(0,_TabRouter.default)({Foo:{screen:ScreenA}});var screenApreState={index:0,key:'Foo',isTransitioning:false,routeName:'Foo',routes:[{key:'Bar',routeName:'Bar'}]};var preState={index:0,isTransitioning:false,routes:[screenApreState]};var comparable=function comparable(state){var result={};if(typeof state.routeName==='string'){result=(0,_objectSpread2.default)({},result,{routeName:state.routeName});}if(state.routes instanceof Array){result=(0,_objectSpread2.default)({},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=router.getStateForAction(action,preState);var innerState=state?state.routes[0]:state;expect(innerState.routes[1].index).toEqual(1);expect(expectedState&&comparable(expectedState)).toEqual(innerState&&comparable(innerState));var noMatchAction=NavigationActions.navigate({routeName:'Qux',action:NavigationActions.navigate({routeName:'Zoo'})});var expectedState2=ScreenA.router.getStateForAction(noMatchAction,screenApreState);var state2=router.getStateForAction(noMatchAction,preState);var innerState2=state2?state2.routes[0]:state2;expect(innerState2.routes[1].index).toEqual(0);expect(expectedState2&&comparable(expectedState2)).toEqual(innerState2&&comparable(innerState2));});});
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _react=_interopRequireDefault(require("react"));var _TabRouter=_interopRequireDefault(require("../TabRouter"));var NavigationActions=_interopRequireWildcard(require("../../NavigationActions"));var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-core/src/routers/__tests__/TabRouter-test.js";var INIT_ACTION={type:NavigationActions.INIT};var BareLeafRouteConfig={screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:11}});}};describe('TabRouter',function(){it('Handles basic tab logic',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:16}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:17}});};var router=(0,_TabRouter.default)({Foo:{screen:ScreenA},Bar:{screen:ScreenB}});var state=router.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state).toEqual(expectedState);var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);var expectedState2={index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state2).toEqual(expectedState2);expect(router.getComponentForState(expectedState)).toEqual(ScreenA);expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state2);expect(state3).toEqual(null);});it('Handles getScreen',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:55}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:56}});};var router=(0,_TabRouter.default)({Foo:{getScreen:function getScreen(){return ScreenA;}},Bar:{getScreen:function getScreen(){return ScreenB;}}});var state=router.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state).toEqual(expectedState);var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);var expectedState2={index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false};expect(state2).toEqual(expectedState2);expect(router.getComponentForState(expectedState)).toEqual(ScreenA);expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state2);expect(state3).toEqual(null);});it('Can set the initial tab',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig},{initialRouteName:'Bar'});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state).toEqual({index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}],isTransitioning:false});});it('Can set the initial params',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig},{initialRouteName:'Bar',initialRouteParams:{name:'Qux'}});var state=router.getStateForAction({type:NavigationActions.INIT});expect(state).toEqual({index:1,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar',params:{name:'Qux'}}],isTransitioning:false});});it('Handles the SetParams action',function(){var router=(0,_TabRouter.default)({Foo:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:128}});}},Bar:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:131}});}}});var state2=router.getStateForAction({type:NavigationActions.SET_PARAMS,params:{name:'Qux'},key:'Foo'});expect(state2&&state2.routes[0].params).toEqual({name:'Qux'});});it('Handles the SetParams action for inactive routes',function(){var router=(0,_TabRouter.default)({Foo:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:146}});}},Bar:{screen:function screen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:149}});}}},{initialRouteName:'Bar'});var initialState={index:1,routes:[{key:'RouteA',routeName:'Foo',params:{name:'InitialParam',other:'Unchanged'}},{key:'RouteB',routeName:'Bar',params:{}}]};var state=router.getStateForAction({type:NavigationActions.SET_PARAMS,params:{name:'NewParam'},key:'RouteA'},initialState);expect(state.index).toEqual(1);expect(state.routes[0].params).toEqual({name:'NewParam',other:'Unchanged'});});it('getStateForAction returns null when navigating to same tab',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig},{initialRouteName:'Bar'});var state=router.getStateForAction({type:NavigationActions.INIT});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);expect(state2).toEqual(null);});it('getStateForAction returns initial navigate',function(){var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo'});expect(state&&state.index).toEqual(0);});it('Handles nested tabs and nested actions',function(){var ChildTabNavigator=function ChildTabNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:208}});};ChildTabNavigator.router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Baz:{screen:ChildTabNavigator},Boo:BareLeafRouteConfig});var action=router.getActionForPathAndParams('Baz/Bar',{foo:'42'});var navAction={type:NavigationActions.NAVIGATE,routeName:'Baz',params:{foo:'42'},action:{type:NavigationActions.NAVIGATE,routeName:'Bar',params:{foo:'42'}}};expect(action).toEqual(navAction);var state=router.getStateForAction(navAction);expect(state).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:1,isTransitioning:false,key:'Baz',routeName:'Baz',params:{foo:'42'},routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar',params:{foo:'42'}}]},{key:'Boo',routeName:'Boo'}]});});it('Handles passing params to nested tabs',function(){var ChildTabNavigator=function ChildTabNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:268}});};ChildTabNavigator.router=(0,_TabRouter.default)({Boo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Baz:{screen:ChildTabNavigator}});var navAction={type:NavigationActions.NAVIGATE,routeName:'Baz'};var state=router.getStateForAction(navAction);expect(state).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:0,key:'Baz',routeName:'Baz',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Bar',routeName:'Bar'}]}]});state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'},state);state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Boo'},state);expect(state&&state.routes[1]).toEqual({index:0,isTransitioning:false,key:'Baz',routeName:'Baz',routes:[{key:'Boo',routeName:'Boo'},{key:'Bar',routeName:'Bar'}]});});it('Handles initial deep linking into nested tabs',function(){var ChildTabNavigator=function ChildTabNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:322}});};ChildTabNavigator.router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Bar:BareLeafRouteConfig});var router=(0,_TabRouter.default)({Foo:BareLeafRouteConfig,Baz:{screen:ChildTabNavigator},Boo:BareLeafRouteConfig});var state=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Bar'});expect(state).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:1,key:'Baz',routeName:'Baz',isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}]},{key:'Boo',routeName:'Boo'}]});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo'},state);expect(state2).toEqual({index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{index:0,key:'Baz',routeName:'Baz',isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}]},{key:'Boo',routeName:'Boo'}]});var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo'},state2);expect(state3).toEqual(null);});it('Handles linking across of deeply nested tabs',function(){var ChildNavigator0=function ChildNavigator0(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:384}});};ChildNavigator0.router=(0,_TabRouter.default)({Boo:BareLeafRouteConfig,Baz:BareLeafRouteConfig});var ChildNavigator1=function ChildNavigator1(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:389}});};ChildNavigator1.router=(0,_TabRouter.default)({Zoo:BareLeafRouteConfig,Zap:BareLeafRouteConfig});var MidNavigator=function MidNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:394}});};MidNavigator.router=(0,_TabRouter.default)({Fee:{screen:ChildNavigator0},Bar:{screen:ChildNavigator1}});var router=(0,_TabRouter.default)({Foo:{screen:MidNavigator},Gah:BareLeafRouteConfig});var state=router.getStateForAction(INIT_ACTION);expect(state).toEqual({index:0,isTransitioning:false,routes:[{index:0,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{index:0,key:'Fee',routeName:'Fee',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{index:0,key:'Bar',routeName:'Bar',isTransitioning:false,routes:[{key:'Zoo',routeName:'Zoo'},{key:'Zap',routeName:'Zap'}]}]},{key:'Gah',routeName:'Gah'}]});var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zap'},state);expect(state2).toEqual({index:0,isTransitioning:false,routes:[{index:1,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{index:0,key:'Fee',routeName:'Fee',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{index:1,key:'Bar',routeName:'Bar',isTransitioning:false,routes:[{key:'Zoo',routeName:'Zoo'},{key:'Zap',routeName:'Zap'}]}]},{key:'Gah',routeName:'Gah'}]});var state3=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Zap'},state2);expect(state3).toEqual(null);var state4=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'Foo',action:{type:NavigationActions.NAVIGATE,routeName:'Bar',action:{type:NavigationActions.NAVIGATE,routeName:'Zap'}}});expect(state4).toEqual({index:0,isTransitioning:false,routes:[{index:1,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{index:0,key:'Fee',routeName:'Fee',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{index:1,key:'Bar',routeName:'Bar',isTransitioning:false,routes:[{key:'Zoo',routeName:'Zoo'},{key:'Zap',routeName:'Zap'}]}]},{key:'Gah',routeName:'Gah'}]});});it('Handles path configuration',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:533}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:534}});};var router=(0,_TabRouter.default)({Foo:{path:'f',screen:ScreenA},Bar:{path:'b/:great',screen:ScreenB}});var params={foo:'42'};var action=router.getActionForPathAndParams('b/anything',params);var expectedAction={params:{foo:'42',great:'anything'},routeName:'Bar',type:NavigationActions.NAVIGATE};expect(action).toEqual(expectedAction);var state=router.getStateForAction({type:NavigationActions.INIT});var expectedState={index:0,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo'},{key:'Bar',routeName:'Bar'}]};expect(state).toEqual(expectedState);var state2=router.getStateForAction(expectedAction,state);var expectedState2={index:1,isTransitioning:false,routes:[{key:'Foo',routeName:'Foo',params:undefined},{key:'Bar',routeName:'Bar',params:{foo:'42',great:'anything'}}]};expect(state2).toEqual(expectedState2);expect(router.getComponentForState(expectedState)).toEqual(ScreenA);expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);expect(router.getPathAndParamsForState(expectedState).path).toEqual('f');expect(router.getPathAndParamsForState(expectedState2).path).toEqual('b/anything');});it('Handles default configuration',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:590}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:591}});};var router=(0,_TabRouter.default)({Foo:{path:'',screen:ScreenA},Bar:{path:'b',screen:ScreenB}});var action=router.getActionForPathAndParams('',{foo:'42'});expect(action).toEqual({params:{foo:'42'},routeName:'Foo',type:NavigationActions.NAVIGATE});});it('Gets deep path',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:613}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:614}});};ScreenA.router=(0,_TabRouter.default)({Boo:{screen:ScreenB},Baz:{screen:ScreenB}});var router=(0,_TabRouter.default)({Foo:{path:'f',screen:ScreenA},Bar:{screen:ScreenB}});var state={index:0,isTransitioning:false,routes:[{index:1,key:'Foo',routeName:'Foo',isTransitioning:false,routes:[{key:'Boo',routeName:'Boo'},{key:'Baz',routeName:'Baz'}]},{key:'Bar',routeName:'Bar'}]};var _router$getPathAndPar=router.getPathAndParamsForState(state),path=_router$getPathAndPar.path;expect(path).toEqual('f/Baz');});it('Can navigate to other tab (no router) with params',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:651}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:652}});};var router=(0,_TabRouter.default)({a:{screen:ScreenA},b:{screen:ScreenB}});var state0=router.getStateForAction(INIT_ACTION);expect(state0).toEqual({index:0,isTransitioning:false,routes:[{key:'a',routeName:'a'},{key:'b',routeName:'b'}]});var params={key:'value'};var state1=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'b',params:params},state0);expect(state1).toEqual({index:1,isTransitioning:false,routes:[{key:'a',routeName:'a'},{key:'b',routeName:'b',params:params}]});});it('Back actions are not propagated to inactive children',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:685}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:686}});};var ScreenC=function ScreenC(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:687}});};var InnerNavigator=function InnerNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:688}});};InnerNavigator.router=(0,_TabRouter.default)({a:{screen:ScreenA},b:{screen:ScreenB}});var router=(0,_TabRouter.default)({inner:{screen:InnerNavigator},c:{screen:ScreenC}},{backBehavior:'none'});var state0=router.getStateForAction(INIT_ACTION);var state1=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'b'},state0);var state2=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'c'},state1);var state3=router.getStateForAction({type:NavigationActions.BACK},state2);expect(state3).toEqual(state2);});it('Back behavior initialRoute works',function(){var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:725}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:726}});};var router=(0,_TabRouter.default)({a:{screen:ScreenA},b:{screen:ScreenB}});var state0=router.getStateForAction(INIT_ACTION);var state1=router.getStateForAction({type:NavigationActions.NAVIGATE,routeName:'b'},state0);var state2=router.getStateForAction({type:NavigationActions.BACK},state1);expect(state2).toEqual(state0);});it('Inner actions are only unpacked if the current tab matches',function(){var PlainScreen=function PlainScreen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:748}});};var ScreenA=function ScreenA(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:749}});};var ScreenB=function ScreenB(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:750}});};ScreenB.router=(0,_TabRouter.default)({Baz:{screen:PlainScreen},Zoo:{screen:PlainScreen}});ScreenA.router=(0,_TabRouter.default)({Bar:{screen:PlainScreen},Boo:{screen:ScreenB}});var router=(0,_TabRouter.default)({Foo:{screen:ScreenA}});var screenApreState={index:0,key:'Foo',isTransitioning:false,routeName:'Foo',routes:[{key:'Bar',routeName:'Bar'}]};var preState={index:0,isTransitioning:false,routes:[screenApreState]};var comparable=function comparable(state){var result={};if(typeof state.routeName==='string'){result=(0,_objectSpread2.default)({},result,{routeName:state.routeName});}if(state.routes instanceof Array){result=(0,_objectSpread2.default)({},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=router.getStateForAction(action,preState);var innerState=state?state.routes[0]:state;expect(innerState.routes[1].index).toEqual(1);expect(expectedState&&comparable(expectedState)).toEqual(innerState&&comparable(innerState));var noMatchAction=NavigationActions.navigate({routeName:'Qux',action:NavigationActions.navigate({routeName:'Zoo'})});var expectedState2=ScreenA.router.getStateForAction(noMatchAction,screenApreState);var state2=router.getStateForAction(noMatchAction,preState);var innerState2=state2?state2.routes[0]:state2;expect(innerState2.routes[1].index).toEqual(0);expect(expectedState2&&comparable(expectedState2)).toEqual(innerState2&&comparable(innerState2));});});
|
|
2
2
|
//# sourceMappingURL=TabRouter-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["TabRouter-test.js"],"names":["INIT_ACTION","type","NavigationActions","INIT","BareLeafRouteConfig","screen","describe","it","ScreenA","ScreenB","router","Foo","Bar","state","getStateForAction","expectedState","index","routes","key","routeName","isTransitioning","expect","toEqual","state2","NAVIGATE","expectedState2","getComponentForState","state3","getScreen","initialRouteName","initialRouteParams","name","params","SET_PARAMS","initialState","other","ChildTabNavigator","Baz","Boo","action","getActionForPathAndParams","foo","navAction","ChildNavigator0","ChildNavigator1","Zoo","Zap","MidNavigator","Fee","Gah","state4","path","expectedAction","great","undefined","getPathAndParamsForState","a","b","state0","state1","ScreenC","InnerNavigator","inner","c","backBehavior","BACK","PlainScreen","screenApreState","preState","comparable","result","Array","map","navigate","innerState","noMatchAction","innerState2"],"mappings":"kQAEA,oDACA,+DAEA,kF,0GAEA,GAAMA,CAAAA,WAAW,CAAG,CAAEC,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAApB,CAEA,GAAMC,CAAAA,mBAAmB,CAAG,CAC1BC,MAAM,CAAE,wBAAM,qFAAN,EADkB,CAA5B,CAIAC,QAAQ,CAAC,WAAD,CAAc,UAAM,CAC1BC,EAAE,CAAC,yBAAD,CAA4B,UAAM,CAClC,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,qFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,qFAAN,EAAhB,CACA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CAAEN,MAAM,CAAEG,OAAV,CADkB,CAEvBI,GAAG,CAAE,CAAEP,MAAM,CAAEI,OAAV,CAFkB,CAAV,CAAf,CAIA,GAAMI,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CAAEb,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMY,CAAAA,aAAa,CAAG,CACpBC,KAAK,CAAE,CADa,CAEpBC,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAFY,CAMpBC,eAAe,CAAE,KANG,CAAtB,CAQAC,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsBP,aAAtB,EACA,GAAMQ,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbN,KAFa,CAAf,CAIA,GAAMY,CAAAA,cAAc,CAAG,CACrBT,KAAK,CAAE,CADc,CAErBC,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAFa,CAMrBC,eAAe,CAAE,KANI,CAAvB,CAQAC,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuBG,cAAvB,EACAJ,MAAM,CAACX,MAAM,CAACgB,oBAAP,CAA4BX,aAA5B,CAAD,CAAN,CAAmDO,OAAnD,CAA2Dd,OAA3D,EACAa,MAAM,CAACX,MAAM,CAACgB,oBAAP,CAA4BD,cAA5B,CAAD,CAAN,CAAoDH,OAApD,CAA4Db,OAA5D,EACA,GAAMkB,CAAAA,MAAM,CAAGjB,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbI,MAFa,CAAf,CAIAF,MAAM,CAACM,MAAD,CAAN,CAAeL,OAAf,CAAuB,IAAvB,EACD,CArCC,CAAF,CAuCAf,EAAE,CAAC,mBAAD,CAAsB,UAAM,CAC5B,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,qFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,qFAAN,EAAhB,CACA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CAAEiB,SAAS,CAAE,2BAAMpB,CAAAA,OAAN,EAAb,CADkB,CAEvBI,GAAG,CAAE,CAAEgB,SAAS,CAAE,2BAAMnB,CAAAA,OAAN,EAAb,CAFkB,CAAV,CAAf,CAIA,GAAMI,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CAAEb,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMY,CAAAA,aAAa,CAAG,CACpBC,KAAK,CAAE,CADa,CAEpBC,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAFY,CAMpBC,eAAe,CAAE,KANG,CAAtB,CAQAC,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsBP,aAAtB,EACA,GAAMQ,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbN,KAFa,CAAf,CAIA,GAAMY,CAAAA,cAAc,CAAG,CACrBT,KAAK,CAAE,CADc,CAErBC,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAFa,CAMrBC,eAAe,CAAE,KANI,CAAvB,CAQAC,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuBG,cAAvB,EACAJ,MAAM,CAACX,MAAM,CAACgB,oBAAP,CAA4BX,aAA5B,CAAD,CAAN,CAAmDO,OAAnD,CAA2Dd,OAA3D,EACAa,MAAM,CAACX,MAAM,CAACgB,oBAAP,CAA4BD,cAA5B,CAAD,CAAN,CAAoDH,OAApD,CAA4Db,OAA5D,EACA,GAAMkB,CAAAA,MAAM,CAAGjB,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbI,MAFa,CAAf,CAIAF,MAAM,CAACM,MAAD,CAAN,CAAeL,OAAf,CAAuB,IAAvB,EACD,CArCC,CAAF,CAuCAf,EAAE,CAAC,yBAAD,CAA4B,UAAM,CAClC,GAAMG,CAAAA,MAAM,CAAG,uBACb,CAAEC,GAAG,CAAEP,mBAAP,CAA4BQ,GAAG,CAAER,mBAAjC,CADa,CAEb,CAAEyB,gBAAgB,CAAE,KAApB,CAFa,CAAf,CAIA,GAAMhB,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CAAEb,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACAkB,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsB,CACpBN,KAAK,CAAE,CADa,CAEpBC,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAFY,CAMpBC,eAAe,CAAE,KANG,CAAtB,EAQD,CAdC,CAAF,CAgBAb,EAAE,CAAC,4BAAD,CAA+B,UAAM,CACrC,GAAMG,CAAAA,MAAM,CAAG,uBACb,CAAEC,GAAG,CAAEP,mBAAP,CAA4BQ,GAAG,CAAER,mBAAjC,CADa,CAEb,CAAEyB,gBAAgB,CAAE,KAApB,CAA2BC,kBAAkB,CAAE,CAAEC,IAAI,CAAE,KAAR,CAA/C,CAFa,CAAf,CAIA,GAAMlB,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CAAEb,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACAkB,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsB,CACpBN,KAAK,CAAE,CADa,CAEpBC,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAAgCa,MAAM,CAAE,CAAED,IAAI,CAAE,KAAR,CAAxC,CAFM,CAFY,CAMpBX,eAAe,CAAE,KANG,CAAtB,EAQD,CAdC,CAAF,CAgBAb,EAAE,CAAC,8BAAD,CAAiC,UAAM,CACvC,GAAMG,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CACHN,MAAM,CAAE,wBAAM,sFAAN,EADL,CADkB,CAIvBO,GAAG,CAAE,CACHP,MAAM,CAAE,wBAAM,sFAAN,EADL,CAJkB,CAAV,CAAf,CAQA,GAAMkB,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CAAyB,CACtCb,IAAI,CAAEC,iBAAiB,CAAC+B,UADc,CAEtCD,MAAM,CAAE,CAAED,IAAI,CAAE,KAAR,CAF8B,CAGtCb,GAAG,CAAE,KAHiC,CAAzB,CAAf,CAKAG,MAAM,CAACE,MAAM,EAAIA,MAAM,CAACN,MAAP,CAAc,CAAd,EAAiBe,MAA5B,CAAN,CAA0CV,OAA1C,CAAkD,CAAES,IAAI,CAAE,KAAR,CAAlD,EACD,CAfC,CAAF,CAiBAxB,EAAE,CAAC,kDAAD,CAAqD,UAAM,CAC3D,GAAMG,CAAAA,MAAM,CAAG,uBACb,CACEC,GAAG,CAAE,CACHN,MAAM,CAAE,wBAAM,sFAAN,EADL,CADP,CAIEO,GAAG,CAAE,CACHP,MAAM,CAAE,wBAAM,sFAAN,EADL,CAJP,CADa,CASb,CACEwB,gBAAgB,CAAE,KADpB,CATa,CAAf,CAaA,GAAMK,CAAAA,YAAY,CAAG,CACnBlB,KAAK,CAAE,CADY,CAEnBC,MAAM,CAAE,CACN,CACEC,GAAG,CAAE,QADP,CAEEC,SAAS,CAAE,KAFb,CAGEa,MAAM,CAAE,CAAED,IAAI,CAAE,cAAR,CAAwBI,KAAK,CAAE,WAA/B,CAHV,CADM,CAMN,CAAEjB,GAAG,CAAE,QAAP,CAAiBC,SAAS,CAAE,KAA5B,CAAmCa,MAAM,CAAE,EAA3C,CANM,CAFW,CAArB,CAWA,GAAMnB,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CACZ,CACEb,IAAI,CAAEC,iBAAiB,CAAC+B,UAD1B,CAEED,MAAM,CAAE,CAAED,IAAI,CAAE,UAAR,CAFV,CAGEb,GAAG,CAAE,QAHP,CADY,CAMZgB,YANY,CAAd,CAQAb,MAAM,CAACR,KAAK,CAACG,KAAP,CAAN,CAAoBM,OAApB,CAA4B,CAA5B,EACAD,MAAM,CAACR,KAAK,CAACI,MAAN,CAAa,CAAb,EAAgBe,MAAjB,CAAN,CAA+BV,OAA/B,CAAuC,CACrCS,IAAI,CAAE,UAD+B,CAErCI,KAAK,CAAE,WAF8B,CAAvC,EAID,CAtCC,CAAF,CAwCA5B,EAAE,CAAC,4DAAD,CAA+D,UAAM,CACrE,GAAMG,CAAAA,MAAM,CAAG,uBACb,CAAEC,GAAG,CAAEP,mBAAP,CAA4BQ,GAAG,CAAER,mBAAjC,CADa,CAEb,CAAEyB,gBAAgB,CAAE,KAApB,CAFa,CAAf,CAIA,GAAMhB,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CAAEb,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMoB,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbN,KAFa,CAAf,CAIAQ,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuB,IAAvB,EACD,CAXC,CAAF,CAaAf,EAAE,CAAC,4CAAD,CAA+C,UAAM,CACrD,GAAMG,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAEP,mBADkB,CAEvBQ,GAAG,CAAER,mBAFkB,CAAV,CAAf,CAIA,GAAMS,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CACrCb,IAAI,CAAEC,iBAAiB,CAACsB,QADa,CAErCL,SAAS,CAAE,KAF0B,CAAzB,CAAd,CAIAE,MAAM,CAACR,KAAK,EAAIA,KAAK,CAACG,KAAhB,CAAN,CAA6BM,OAA7B,CAAqC,CAArC,EACD,CAVC,CAAF,CAYAf,EAAE,CAAC,wCAAD,CAA2C,UAAM,CACjD,GAAM6B,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,SAAM,sFAAN,EAA1B,CACAA,iBAAiB,CAAC1B,MAAlB,CAA2B,uBAAU,CACnCC,GAAG,CAAEP,mBAD8B,CAEnCQ,GAAG,CAAER,mBAF8B,CAAV,CAA3B,CAIA,GAAMM,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAEP,mBADkB,CAEvBiC,GAAG,CAAE,CAAEhC,MAAM,CAAE+B,iBAAV,CAFkB,CAGvBE,GAAG,CAAElC,mBAHkB,CAAV,CAAf,CAKA,GAAMmC,CAAAA,MAAM,CAAG7B,MAAM,CAAC8B,yBAAP,CAAiC,SAAjC,CAA4C,CAAEC,GAAG,CAAE,IAAP,CAA5C,CAAf,CACA,GAAMC,CAAAA,SAAS,CAAG,CAChBzC,IAAI,CAAEC,iBAAiB,CAACsB,QADR,CAEhBL,SAAS,CAAE,KAFK,CAGhBa,MAAM,CAAE,CAAES,GAAG,CAAE,IAAP,CAHQ,CAIhBF,MAAM,CAAE,CACNtC,IAAI,CAAEC,iBAAiB,CAACsB,QADlB,CAENL,SAAS,CAAE,KAFL,CAGNa,MAAM,CAAE,CAAES,GAAG,CAAE,IAAP,CAHF,CAJQ,CAAlB,CAUApB,MAAM,CAACkB,MAAD,CAAN,CAAejB,OAAf,CAAuBoB,SAAvB,EACA,GAAM7B,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB4B,SAAzB,CAAd,CACArB,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsB,CACpBN,KAAK,CAAE,CADa,CAEpBI,eAAe,CAAE,KAFG,CAGpBH,MAAM,CAAE,CACN,CACEC,GAAG,CAAE,KADP,CAEEC,SAAS,CAAE,KAFb,CADM,CAKN,CACEH,KAAK,CAAE,CADT,CAEEI,eAAe,CAAE,KAFnB,CAGEF,GAAG,CAAE,KAHP,CAIEC,SAAS,CAAE,KAJb,CAKEa,MAAM,CAAE,CAAES,GAAG,CAAE,IAAP,CALV,CAMExB,MAAM,CAAE,CACN,CACEC,GAAG,CAAE,KADP,CAEEC,SAAS,CAAE,KAFb,CADM,CAKN,CACED,GAAG,CAAE,KADP,CAEEC,SAAS,CAAE,KAFb,CAGEa,MAAM,CAAE,CACNS,GAAG,CAAE,IADC,CAHV,CALM,CANV,CALM,CAyBN,CACEvB,GAAG,CAAE,KADP,CAEEC,SAAS,CAAE,KAFb,CAzBM,CAHY,CAAtB,EAkCD,CA1DC,CAAF,CA4DAZ,EAAE,CAAC,uCAAD,CAA0C,UAAM,CAChD,GAAM6B,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,SAAM,sFAAN,EAA1B,CACAA,iBAAiB,CAAC1B,MAAlB,CAA2B,uBAAU,CACnC4B,GAAG,CAAElC,mBAD8B,CAEnCQ,GAAG,CAAER,mBAF8B,CAAV,CAA3B,CAIA,GAAMM,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAEP,mBADkB,CAEvBiC,GAAG,CAAE,CAAEhC,MAAM,CAAE+B,iBAAV,CAFkB,CAAV,CAAf,CAIA,GAAMM,CAAAA,SAAS,CAAG,CAChBzC,IAAI,CAAEC,iBAAiB,CAACsB,QADR,CAEhBL,SAAS,CAAE,KAFK,CAAlB,CAIA,GAAIN,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB4B,SAAzB,CAAZ,CACArB,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsB,CACpBN,KAAK,CAAE,CADa,CAEpBI,eAAe,CAAE,KAFG,CAGpBH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CACEH,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CAFM,CAHY,CAAtB,EAmBAN,KAAK,CAAGH,MAAM,CAACI,iBAAP,CACN,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADM,CAENN,KAFM,CAAR,CAIAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CACN,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADM,CAENN,KAFM,CAAR,CAIAQ,MAAM,CAACR,KAAK,EAAIA,KAAK,CAACI,MAAN,CAAa,CAAb,CAAV,CAAN,CAAiCK,OAAjC,CAAyC,CACvCN,KAAK,CAAE,CADgC,CAEvCI,eAAe,CAAE,KAFsB,CAGvCF,GAAG,CAAE,KAHkC,CAIvCC,SAAS,CAAE,KAJ4B,CAKvCF,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAL+B,CAAzC,EAUD,CApDC,CAAF,CAsDAZ,EAAE,CAAC,+CAAD,CAAkD,UAAM,CACxD,GAAM6B,CAAAA,iBAAiB,CAAG,QAApBA,CAAAA,iBAAoB,SAAM,sFAAN,EAA1B,CACAA,iBAAiB,CAAC1B,MAAlB,CAA2B,uBAAU,CACnCC,GAAG,CAAEP,mBAD8B,CAEnCQ,GAAG,CAAER,mBAF8B,CAAV,CAA3B,CAIA,GAAMM,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAEP,mBADkB,CAEvBiC,GAAG,CAAE,CAAEhC,MAAM,CAAE+B,iBAAV,CAFkB,CAGvBE,GAAG,CAAElC,mBAHkB,CAAV,CAAf,CAKA,GAAMS,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CACrCb,IAAI,CAAEC,iBAAiB,CAACsB,QADa,CAErCL,SAAS,CAAE,KAF0B,CAAzB,CAAd,CAIAE,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsB,CACpBN,KAAK,CAAE,CADa,CAEpBI,eAAe,CAAE,KAFG,CAGpBH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CACEH,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CAFM,CAYN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAZM,CAHY,CAAtB,EAkBA,GAAMI,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbN,KAFa,CAAf,CAIAQ,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuB,CACrBN,KAAK,CAAE,CADc,CAErBI,eAAe,CAAE,KAFI,CAGrBH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CACEH,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CAFM,CAYN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAZM,CAHa,CAAvB,EAkBA,GAAMQ,CAAAA,MAAM,CAAGjB,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbI,MAFa,CAAf,CAIAF,MAAM,CAACM,MAAD,CAAN,CAAeL,OAAf,CAAuB,IAAvB,EACD,CA5DC,CAAF,CA8DAf,EAAE,CAAC,8CAAD,CAAiD,UAAM,CACvD,GAAMoC,CAAAA,eAAe,CAAG,QAAlBA,CAAAA,eAAkB,SAAM,sFAAN,EAAxB,CACAA,eAAe,CAACjC,MAAhB,CAAyB,uBAAU,CACjC4B,GAAG,CAAElC,mBAD4B,CAEjCiC,GAAG,CAAEjC,mBAF4B,CAAV,CAAzB,CAIA,GAAMwC,CAAAA,eAAe,CAAG,QAAlBA,CAAAA,eAAkB,SAAM,sFAAN,EAAxB,CACAA,eAAe,CAAClC,MAAhB,CAAyB,uBAAU,CACjCmC,GAAG,CAAEzC,mBAD4B,CAEjC0C,GAAG,CAAE1C,mBAF4B,CAAV,CAAzB,CAIA,GAAM2C,CAAAA,YAAY,CAAG,QAAfA,CAAAA,YAAe,SAAM,sFAAN,EAArB,CACAA,YAAY,CAACrC,MAAb,CAAsB,uBAAU,CAC9BsC,GAAG,CAAE,CAAE3C,MAAM,CAAEsC,eAAV,CADyB,CAE9B/B,GAAG,CAAE,CAAEP,MAAM,CAAEuC,eAAV,CAFyB,CAAV,CAAtB,CAIA,GAAMlC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CAAEN,MAAM,CAAE0C,YAAV,CADkB,CAEvBE,GAAG,CAAE7C,mBAFkB,CAAV,CAAf,CAIA,GAAMS,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyBd,WAAzB,CAAd,CACAqB,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsB,CACpBN,KAAK,CAAE,CADa,CAEpBI,eAAe,CAAE,KAFG,CAGpBH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CADM,CAWN,CACEH,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CAXM,CALV,CADM,CA6BN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CA7BM,CAHY,CAAtB,EAmCA,GAAMI,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbN,KAFa,CAAf,CAIAQ,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuB,CACrBN,KAAK,CAAE,CADc,CAErBI,eAAe,CAAE,KAFI,CAGrBH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CADM,CAWN,CACEH,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CAXM,CALV,CADM,CA6BN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CA7BM,CAHa,CAAvB,EAmCA,GAAMQ,CAAAA,MAAM,CAAGjB,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,KAA/C,CADa,CAEbI,MAFa,CAAf,CAIAF,MAAM,CAACM,MAAD,CAAN,CAAeL,OAAf,CAAuB,IAAvB,EACA,GAAM4B,CAAAA,MAAM,CAAGxC,MAAM,CAACI,iBAAP,CAAyB,CACtCb,IAAI,CAAEC,iBAAiB,CAACsB,QADc,CAEtCL,SAAS,CAAE,KAF2B,CAGtCoB,MAAM,CAAE,CACNtC,IAAI,CAAEC,iBAAiB,CAACsB,QADlB,CAENL,SAAS,CAAE,KAFL,CAGNoB,MAAM,CAAE,CACNtC,IAAI,CAAEC,iBAAiB,CAACsB,QADlB,CAENL,SAAS,CAAE,KAFL,CAHF,CAH8B,CAAzB,CAAf,CAYAE,MAAM,CAAC6B,MAAD,CAAN,CAAe5B,OAAf,CAAuB,CACrBN,KAAK,CAAE,CADc,CAErBI,eAAe,CAAE,KAFI,CAGrBH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CADM,CAWN,CACEH,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CAXM,CALV,CADM,CA6BN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CA7BM,CAHa,CAAvB,EAmCD,CAnJC,CAAF,CAqJAZ,EAAE,CAAC,4BAAD,CAA+B,UAAM,CACrC,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CACHwC,IAAI,CAAE,GADH,CAEH9C,MAAM,CAAEG,OAFL,CADkB,CAKvBI,GAAG,CAAE,CACHuC,IAAI,CAAE,UADH,CAEH9C,MAAM,CAAEI,OAFL,CALkB,CAAV,CAAf,CAUA,GAAMuB,CAAAA,MAAM,CAAG,CAAES,GAAG,CAAE,IAAP,CAAf,CACA,GAAMF,CAAAA,MAAM,CAAG7B,MAAM,CAAC8B,yBAAP,CAAiC,YAAjC,CAA+CR,MAA/C,CAAf,CACA,GAAMoB,CAAAA,cAAc,CAAG,CACrBpB,MAAM,CAAE,CACNS,GAAG,CAAE,IADC,CAENY,KAAK,CAAE,UAFD,CADa,CAKrBlC,SAAS,CAAE,KALU,CAMrBlB,IAAI,CAAEC,iBAAiB,CAACsB,QANH,CAAvB,CAQAH,MAAM,CAACkB,MAAD,CAAN,CAAejB,OAAf,CAAuB8B,cAAvB,EAEA,GAAMvC,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyB,CAAEb,IAAI,CAAEC,iBAAiB,CAACC,IAA1B,CAAzB,CAAd,CACA,GAAMY,CAAAA,aAAa,CAAG,CACpBC,KAAK,CAAE,CADa,CAEpBI,eAAe,CAAE,KAFG,CAGpBH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CAHY,CAAtB,CAQAE,MAAM,CAACR,KAAD,CAAN,CAAcS,OAAd,CAAsBP,aAAtB,EACA,GAAMQ,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CAAyBsC,cAAzB,CAAyCvC,KAAzC,CAAf,CACA,GAAMY,CAAAA,cAAc,CAAG,CACrBT,KAAK,CAAE,CADc,CAErBI,eAAe,CAAE,KAFI,CAGrBH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAAgCa,MAAM,CAAEsB,SAAxC,CADM,CAEN,CACEpC,GAAG,CAAE,KADP,CAEEC,SAAS,CAAE,KAFb,CAGEa,MAAM,CAAE,CAAES,GAAG,CAAE,IAAP,CAAaY,KAAK,CAAE,UAApB,CAHV,CAFM,CAHa,CAAvB,CAYAhC,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuBG,cAAvB,EACAJ,MAAM,CAACX,MAAM,CAACgB,oBAAP,CAA4BX,aAA5B,CAAD,CAAN,CAAmDO,OAAnD,CAA2Dd,OAA3D,EACAa,MAAM,CAACX,MAAM,CAACgB,oBAAP,CAA4BD,cAA5B,CAAD,CAAN,CAAoDH,OAApD,CAA4Db,OAA5D,EACAY,MAAM,CAACX,MAAM,CAAC6C,wBAAP,CAAgCxC,aAAhC,EAA+CoC,IAAhD,CAAN,CAA4D7B,OAA5D,CAAoE,GAApE,EACAD,MAAM,CAACX,MAAM,CAAC6C,wBAAP,CAAgC9B,cAAhC,EAAgD0B,IAAjD,CAAN,CAA6D7B,OAA7D,CACE,YADF,EAGD,CAvDC,CAAF,CAyDAf,EAAE,CAAC,+BAAD,CAAkC,UAAM,CACxC,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CACHwC,IAAI,CAAE,EADH,CAEH9C,MAAM,CAAEG,OAFL,CADkB,CAKvBI,GAAG,CAAE,CACHuC,IAAI,CAAE,GADH,CAEH9C,MAAM,CAAEI,OAFL,CALkB,CAAV,CAAf,CAUA,GAAM8B,CAAAA,MAAM,CAAG7B,MAAM,CAAC8B,yBAAP,CAAiC,EAAjC,CAAqC,CAAEC,GAAG,CAAE,IAAP,CAArC,CAAf,CACApB,MAAM,CAACkB,MAAD,CAAN,CAAejB,OAAf,CAAuB,CACrBU,MAAM,CAAE,CACNS,GAAG,CAAE,IADC,CADa,CAIrBtB,SAAS,CAAE,KAJU,CAKrBlB,IAAI,CAAEC,iBAAiB,CAACsB,QALH,CAAvB,EAOD,CArBC,CAAF,CAuBAjB,EAAE,CAAC,gBAAD,CAAmB,UAAM,CACzB,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACAD,OAAO,CAACE,MAAR,CAAiB,uBAAU,CACzB4B,GAAG,CAAE,CAAEjC,MAAM,CAAEI,OAAV,CADoB,CAEzB4B,GAAG,CAAE,CAAEhC,MAAM,CAAEI,OAAV,CAFoB,CAAV,CAAjB,CAIA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CACHwC,IAAI,CAAE,GADH,CAEH9C,MAAM,CAAEG,OAFL,CADkB,CAKvBI,GAAG,CAAE,CACHP,MAAM,CAAEI,OADL,CALkB,CAAV,CAAf,CAUA,GAAMI,CAAAA,KAAK,CAAG,CACZG,KAAK,CAAE,CADK,CAEZI,eAAe,CAAE,KAFL,CAGZH,MAAM,CAAE,CACN,CACED,KAAK,CAAE,CADT,CAEEE,GAAG,CAAE,KAFP,CAGEC,SAAS,CAAE,KAHb,CAIEC,eAAe,CAAE,KAJnB,CAKEH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CADM,CAEN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAFM,CALV,CADM,CAWN,CAAED,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAXM,CAHI,CAAd,CAjByB,0BAkCRT,MAAM,CAAC6C,wBAAP,CAAgC1C,KAAhC,CAlCQ,CAkCjBsC,IAlCiB,uBAkCjBA,IAlCiB,CAmCzB9B,MAAM,CAAC8B,IAAD,CAAN,CAAa7B,OAAb,CAAqB,OAArB,EACD,CApCC,CAAF,CAsCAf,EAAE,CAAC,mDAAD,CAAsD,UAAM,CAC5D,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CAEA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvB8C,CAAC,CAAE,CAAEnD,MAAM,CAAEG,OAAV,CADoB,CAEvBiD,CAAC,CAAE,CAAEpD,MAAM,CAAEI,OAAV,CAFoB,CAAV,CAAf,CAKA,GAAMiD,CAAAA,MAAM,CAAGhD,MAAM,CAACI,iBAAP,CAAyBd,WAAzB,CAAf,CAEAqB,MAAM,CAACqC,MAAD,CAAN,CAAepC,OAAf,CAAuB,CACrBN,KAAK,CAAE,CADc,CAErBI,eAAe,CAAE,KAFI,CAGrBH,MAAM,CAAE,CAAC,CAAEC,GAAG,CAAE,GAAP,CAAYC,SAAS,CAAE,GAAvB,CAAD,CAA+B,CAAED,GAAG,CAAE,GAAP,CAAYC,SAAS,CAAE,GAAvB,CAA/B,CAHa,CAAvB,EAMA,GAAMa,CAAAA,MAAM,CAAG,CAAEd,GAAG,CAAE,OAAP,CAAf,CAEA,GAAMyC,CAAAA,MAAM,CAAGjD,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,GAA/C,CAAoDa,MAAM,CAANA,MAApD,CADa,CAEb0B,MAFa,CAAf,CAKArC,MAAM,CAACsC,MAAD,CAAN,CAAerC,OAAf,CAAuB,CACrBN,KAAK,CAAE,CADc,CAErBI,eAAe,CAAE,KAFI,CAGrBH,MAAM,CAAE,CACN,CAAEC,GAAG,CAAE,GAAP,CAAYC,SAAS,CAAE,GAAvB,CADM,CAEN,CAAED,GAAG,CAAE,GAAP,CAAYC,SAAS,CAAE,GAAvB,CAA4Ba,MAAM,CAANA,MAA5B,CAFM,CAHa,CAAvB,EAQD,CAhCC,CAAF,CAkCAzB,EAAE,CAAC,sDAAD,CAAyD,UAAM,CAC/D,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMmD,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,cAAc,CAAG,QAAjBA,CAAAA,cAAiB,SAAM,sFAAN,EAAvB,CACAA,cAAc,CAACnD,MAAf,CAAwB,uBAAU,CAChC8C,CAAC,CAAE,CAAEnD,MAAM,CAAEG,OAAV,CAD6B,CAEhCiD,CAAC,CAAE,CAAEpD,MAAM,CAAEI,OAAV,CAF6B,CAAV,CAAxB,CAKA,GAAMC,CAAAA,MAAM,CAAG,uBACb,CACEoD,KAAK,CAAE,CAAEzD,MAAM,CAAEwD,cAAV,CADT,CAEEE,CAAC,CAAE,CAAE1D,MAAM,CAAEuD,OAAV,CAFL,CADa,CAKb,CACEI,YAAY,CAAE,MADhB,CALa,CAAf,CAUA,GAAMN,CAAAA,MAAM,CAAGhD,MAAM,CAACI,iBAAP,CAAyBd,WAAzB,CAAf,CAEA,GAAM2D,CAAAA,MAAM,CAAGjD,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,GAA/C,CADa,CAEbuC,MAFa,CAAf,CAKA,GAAMnC,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,GAA/C,CADa,CAEbwC,MAFa,CAAf,CAKA,GAAMhC,CAAAA,MAAM,CAAGjB,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAAC+D,IAA1B,CADa,CAEb1C,MAFa,CAAf,CAKAF,MAAM,CAACM,MAAD,CAAN,CAAeL,OAAf,CAAuBC,MAAvB,EACD,CAtCC,CAAF,CAwCAhB,EAAE,CAAC,kCAAD,CAAqC,UAAM,CAC3C,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvB8C,CAAC,CAAE,CAAEnD,MAAM,CAAEG,OAAV,CADoB,CAEvBiD,CAAC,CAAE,CAAEpD,MAAM,CAAEI,OAAV,CAFoB,CAAV,CAAf,CAKA,GAAMiD,CAAAA,MAAM,CAAGhD,MAAM,CAACI,iBAAP,CAAyBd,WAAzB,CAAf,CAEA,GAAM2D,CAAAA,MAAM,CAAGjD,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAACsB,QAA1B,CAAoCL,SAAS,CAAE,GAA/C,CADa,CAEbuC,MAFa,CAAf,CAKA,GAAMnC,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CACb,CAAEb,IAAI,CAAEC,iBAAiB,CAAC+D,IAA1B,CADa,CAEbN,MAFa,CAAf,CAKAtC,MAAM,CAACE,MAAD,CAAN,CAAeD,OAAf,CAAuBoC,MAAvB,EACD,CArBC,CAAF,CAuBAnD,EAAE,CAAC,4DAAD,CAA+D,UAAM,CACrE,GAAM2D,CAAAA,WAAW,CAAG,QAAdA,CAAAA,WAAc,SAAM,sFAAN,EAApB,CACA,GAAM1D,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACA,GAAMC,CAAAA,OAAO,CAAG,QAAVA,CAAAA,OAAU,SAAM,sFAAN,EAAhB,CACAA,OAAO,CAACC,MAAR,CAAiB,uBAAU,CACzB2B,GAAG,CAAE,CAAEhC,MAAM,CAAE6D,WAAV,CADoB,CAEzBrB,GAAG,CAAE,CAAExC,MAAM,CAAE6D,WAAV,CAFoB,CAAV,CAAjB,CAIA1D,OAAO,CAACE,MAAR,CAAiB,uBAAU,CACzBE,GAAG,CAAE,CAAEP,MAAM,CAAE6D,WAAV,CADoB,CAEzB5B,GAAG,CAAE,CAAEjC,MAAM,CAAEI,OAAV,CAFoB,CAAV,CAAjB,CAIA,GAAMC,CAAAA,MAAM,CAAG,uBAAU,CACvBC,GAAG,CAAE,CAAEN,MAAM,CAAEG,OAAV,CADkB,CAAV,CAAf,CAGA,GAAM2D,CAAAA,eAAe,CAAG,CACtBnD,KAAK,CAAE,CADe,CAEtBE,GAAG,CAAE,KAFiB,CAGtBE,eAAe,CAAE,KAHK,CAItBD,SAAS,CAAE,KAJW,CAKtBF,MAAM,CAAE,CAAC,CAAEC,GAAG,CAAE,KAAP,CAAcC,SAAS,CAAE,KAAzB,CAAD,CALc,CAAxB,CAOA,GAAMiD,CAAAA,QAAQ,CAAG,CACfpD,KAAK,CAAE,CADQ,CAEfI,eAAe,CAAE,KAFF,CAGfH,MAAM,CAAE,CAACkD,eAAD,CAHO,CAAjB,CAMA,GAAME,CAAAA,UAAU,CAAG,QAAbA,CAAAA,UAAa,CAAAxD,KAAK,CAAI,CAC1B,GAAIyD,CAAAA,MAAM,CAAG,EAAb,CACA,GAAI,MAAOzD,CAAAA,KAAK,CAACM,SAAb,GAA2B,QAA/B,CAAyC,CACvCmD,MAAM,+BAAQA,MAAR,EAAgBnD,SAAS,CAAEN,KAAK,CAACM,SAAjC,EAAN,CACD,CACD,GAAIN,KAAK,CAACI,MAAN,WAAwBsD,CAAAA,KAA5B,CAAmC,CACjCD,MAAM,+BACDA,MADC,EAEJrD,MAAM,CAAEJ,KAAK,CAACI,MAAN,CAAauD,GAAb,CAAiBH,UAAjB,CAFJ,EAAN,CAID,CACD,MAAOC,CAAAA,MAAP,CACD,CAZD,CAcA,GAAM/B,CAAAA,MAAM,CAAGrC,iBAAiB,CAACuE,QAAlB,CAA2B,CACxCtD,SAAS,CAAE,KAD6B,CAExCoB,MAAM,CAAErC,iBAAiB,CAACuE,QAAlB,CAA2B,CAAEtD,SAAS,CAAE,KAAb,CAA3B,CAFgC,CAA3B,CAAf,CAIA,GAAMJ,CAAAA,aAAa,CAAGP,OAAO,CAACE,MAAR,CAAeI,iBAAf,CACpByB,MADoB,CAEpB4B,eAFoB,CAAtB,CAIA,GAAMtD,CAAAA,KAAK,CAAGH,MAAM,CAACI,iBAAP,CAAyByB,MAAzB,CAAiC6B,QAAjC,CAAd,CACA,GAAMM,CAAAA,UAAU,CAAG7D,KAAK,CAAGA,KAAK,CAACI,MAAN,CAAa,CAAb,CAAH,CAAqBJ,KAA7C,CAEAQ,MAAM,CAACqD,UAAU,CAACzD,MAAX,CAAkB,CAAlB,EAAqBD,KAAtB,CAAN,CAAmCM,OAAnC,CAA2C,CAA3C,EACAD,MAAM,CAACN,aAAa,EAAIsD,UAAU,CAACtD,aAAD,CAA5B,CAAN,CAAmDO,OAAnD,CACEoD,UAAU,EAAIL,UAAU,CAACK,UAAD,CAD1B,EAIA,GAAMC,CAAAA,aAAa,CAAGzE,iBAAiB,CAACuE,QAAlB,CAA2B,CAC/CtD,SAAS,CAAE,KADoC,CAE/CoB,MAAM,CAAErC,iBAAiB,CAACuE,QAAlB,CAA2B,CAAEtD,SAAS,CAAE,KAAb,CAA3B,CAFuC,CAA3B,CAAtB,CAIA,GAAMM,CAAAA,cAAc,CAAGjB,OAAO,CAACE,MAAR,CAAeI,iBAAf,CACrB6D,aADqB,CAErBR,eAFqB,CAAvB,CAIA,GAAM5C,CAAAA,MAAM,CAAGb,MAAM,CAACI,iBAAP,CAAyB6D,aAAzB,CAAwCP,QAAxC,CAAf,CACA,GAAMQ,CAAAA,WAAW,CAAGrD,MAAM,CAAGA,MAAM,CAACN,MAAP,CAAc,CAAd,CAAH,CAAsBM,MAAhD,CAEAF,MAAM,CAACuD,WAAW,CAAC3D,MAAZ,CAAmB,CAAnB,EAAsBD,KAAvB,CAAN,CAAoCM,OAApC,CAA4C,CAA5C,EACAD,MAAM,CAACI,cAAc,EAAI4C,UAAU,CAAC5C,cAAD,CAA7B,CAAN,CAAqDH,OAArD,CACEsD,WAAW,EAAIP,UAAU,CAACO,WAAD,CAD3B,EAGD,CAzEC,CAAF,CA0ED,CAvyBO,CAAR","sourcesContent":["/* eslint react/display-name:0 */\n\nimport React from 'react';\nimport TabRouter from '../TabRouter';\n\nimport * as NavigationActions from '../../NavigationActions';\n\nconst INIT_ACTION = { type: NavigationActions.INIT };\n\nconst BareLeafRouteConfig = {\n screen: () => <div />,\n};\n\ndescribe('TabRouter', () => {\n it('Handles basic tab logic', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: { screen: ScreenA },\n Bar: { screen: ScreenB },\n });\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const expectedState = {\n index: 0,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state).toEqual(expectedState);\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n const expectedState2 = {\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state2).toEqual(expectedState2);\n expect(router.getComponentForState(expectedState)).toEqual(ScreenA);\n expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state2\n );\n expect(state3).toEqual(null);\n });\n\n it('Handles getScreen', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: { getScreen: () => ScreenA },\n Bar: { getScreen: () => ScreenB },\n });\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const expectedState = {\n index: 0,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state).toEqual(expectedState);\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n const expectedState2 = {\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state2).toEqual(expectedState2);\n expect(router.getComponentForState(expectedState)).toEqual(ScreenA);\n expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state2\n );\n expect(state3).toEqual(null);\n });\n\n it('Can set the initial tab', () => {\n const router = TabRouter(\n { Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },\n { initialRouteName: 'Bar' }\n );\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state).toEqual({\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n });\n });\n\n it('Can set the initial params', () => {\n const router = TabRouter(\n { Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },\n { initialRouteName: 'Bar', initialRouteParams: { name: 'Qux' } }\n );\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state).toEqual({\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar', params: { name: 'Qux' } },\n ],\n isTransitioning: false,\n });\n });\n\n it('Handles the SetParams action', () => {\n const router = TabRouter({\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n },\n });\n const state2 = router.getStateForAction({\n type: NavigationActions.SET_PARAMS,\n params: { name: 'Qux' },\n key: 'Foo',\n });\n expect(state2 && state2.routes[0].params).toEqual({ name: 'Qux' });\n });\n\n it('Handles the SetParams action for inactive routes', () => {\n const router = TabRouter(\n {\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n },\n },\n {\n initialRouteName: 'Bar',\n }\n );\n const initialState = {\n index: 1,\n routes: [\n {\n key: 'RouteA',\n routeName: 'Foo',\n params: { name: 'InitialParam', other: 'Unchanged' },\n },\n { key: 'RouteB', routeName: 'Bar', params: {} },\n ],\n };\n const state = router.getStateForAction(\n {\n type: NavigationActions.SET_PARAMS,\n params: { name: 'NewParam' },\n key: 'RouteA',\n },\n initialState\n );\n expect(state.index).toEqual(1);\n expect(state.routes[0].params).toEqual({\n name: 'NewParam',\n other: 'Unchanged',\n });\n });\n\n it('getStateForAction returns null when navigating to same tab', () => {\n const router = TabRouter(\n { Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },\n { initialRouteName: 'Bar' }\n );\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n expect(state2).toEqual(null);\n });\n\n it('getStateForAction returns initial navigate', () => {\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const state = router.getStateForAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'Foo',\n });\n expect(state && state.index).toEqual(0);\n });\n\n it('Handles nested tabs and nested actions', () => {\n const ChildTabNavigator = () => <div />;\n ChildTabNavigator.router = TabRouter({\n Foo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Baz: { screen: ChildTabNavigator },\n Boo: BareLeafRouteConfig,\n });\n const action = router.getActionForPathAndParams('Baz/Bar', { foo: '42' });\n const navAction = {\n type: NavigationActions.NAVIGATE,\n routeName: 'Baz',\n params: { foo: '42' },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n params: { foo: '42' },\n },\n };\n expect(action).toEqual(navAction);\n const state = router.getStateForAction(navAction);\n expect(state).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n {\n key: 'Foo',\n routeName: 'Foo',\n },\n {\n index: 1,\n isTransitioning: false,\n key: 'Baz',\n routeName: 'Baz',\n params: { foo: '42' },\n routes: [\n {\n key: 'Foo',\n routeName: 'Foo',\n },\n {\n key: 'Bar',\n routeName: 'Bar',\n params: {\n foo: '42',\n },\n },\n ],\n },\n {\n key: 'Boo',\n routeName: 'Boo',\n },\n ],\n });\n });\n\n it('Handles passing params to nested tabs', () => {\n const ChildTabNavigator = () => <div />;\n ChildTabNavigator.router = TabRouter({\n Boo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Baz: { screen: ChildTabNavigator },\n });\n const navAction = {\n type: NavigationActions.NAVIGATE,\n routeName: 'Baz',\n };\n let state = router.getStateForAction(navAction);\n expect(state).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n {\n index: 0,\n key: 'Baz',\n routeName: 'Baz',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n },\n ],\n });\n\n // Ensure that navigating back and forth doesn't overwrite\n state = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n state = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Boo' },\n state\n );\n expect(state && state.routes[1]).toEqual({\n index: 0,\n isTransitioning: false,\n key: 'Baz',\n routeName: 'Baz',\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n });\n });\n\n it('Handles initial deep linking into nested tabs', () => {\n const ChildTabNavigator = () => <div />;\n ChildTabNavigator.router = TabRouter({\n Foo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Baz: { screen: ChildTabNavigator },\n Boo: BareLeafRouteConfig,\n });\n const state = router.getStateForAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n });\n expect(state).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n {\n index: 1,\n key: 'Baz',\n routeName: 'Baz',\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n },\n { key: 'Boo', routeName: 'Boo' },\n ],\n });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Foo' },\n state\n );\n expect(state2).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n {\n index: 0,\n key: 'Baz',\n routeName: 'Baz',\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n },\n { key: 'Boo', routeName: 'Boo' },\n ],\n });\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Foo' },\n state2\n );\n expect(state3).toEqual(null);\n });\n\n it('Handles linking across of deeply nested tabs', () => {\n const ChildNavigator0 = () => <div />;\n ChildNavigator0.router = TabRouter({\n Boo: BareLeafRouteConfig,\n Baz: BareLeafRouteConfig,\n });\n const ChildNavigator1 = () => <div />;\n ChildNavigator1.router = TabRouter({\n Zoo: BareLeafRouteConfig,\n Zap: BareLeafRouteConfig,\n });\n const MidNavigator = () => <div />;\n MidNavigator.router = TabRouter({\n Fee: { screen: ChildNavigator0 },\n Bar: { screen: ChildNavigator1 },\n });\n const router = TabRouter({\n Foo: { screen: MidNavigator },\n Gah: BareLeafRouteConfig,\n });\n const state = router.getStateForAction(INIT_ACTION);\n expect(state).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Fee',\n routeName: 'Fee',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n {\n index: 0,\n key: 'Bar',\n routeName: 'Bar',\n isTransitioning: false,\n routes: [\n { key: 'Zoo', routeName: 'Zoo' },\n { key: 'Zap', routeName: 'Zap' },\n ],\n },\n ],\n },\n { key: 'Gah', routeName: 'Gah' },\n ],\n });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Zap' },\n state\n );\n expect(state2).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Fee',\n routeName: 'Fee',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n {\n index: 1,\n key: 'Bar',\n routeName: 'Bar',\n isTransitioning: false,\n routes: [\n { key: 'Zoo', routeName: 'Zoo' },\n { key: 'Zap', routeName: 'Zap' },\n ],\n },\n ],\n },\n { key: 'Gah', routeName: 'Gah' },\n ],\n });\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Zap' },\n state2\n );\n expect(state3).toEqual(null);\n const state4 = router.getStateForAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'Foo',\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'Zap',\n },\n },\n });\n expect(state4).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Fee',\n routeName: 'Fee',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n {\n index: 1,\n key: 'Bar',\n routeName: 'Bar',\n isTransitioning: false,\n routes: [\n { key: 'Zoo', routeName: 'Zoo' },\n { key: 'Zap', routeName: 'Zap' },\n ],\n },\n ],\n },\n { key: 'Gah', routeName: 'Gah' },\n ],\n });\n });\n\n it('Handles path configuration', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: {\n path: 'f',\n screen: ScreenA,\n },\n Bar: {\n path: 'b/:great',\n screen: ScreenB,\n },\n });\n const params = { foo: '42' };\n const action = router.getActionForPathAndParams('b/anything', params);\n const expectedAction = {\n params: {\n foo: '42',\n great: 'anything',\n },\n routeName: 'Bar',\n type: NavigationActions.NAVIGATE,\n };\n expect(action).toEqual(expectedAction);\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const expectedState = {\n index: 0,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n expect(state).toEqual(expectedState);\n const state2 = router.getStateForAction(expectedAction, state);\n const expectedState2 = {\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo', params: undefined },\n {\n key: 'Bar',\n routeName: 'Bar',\n params: { foo: '42', great: 'anything' },\n },\n ],\n };\n expect(state2).toEqual(expectedState2);\n expect(router.getComponentForState(expectedState)).toEqual(ScreenA);\n expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);\n expect(router.getPathAndParamsForState(expectedState).path).toEqual('f');\n expect(router.getPathAndParamsForState(expectedState2).path).toEqual(\n 'b/anything'\n );\n });\n\n it('Handles default configuration', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: {\n path: '',\n screen: ScreenA,\n },\n Bar: {\n path: 'b',\n screen: ScreenB,\n },\n });\n const action = router.getActionForPathAndParams('', { foo: '42' });\n expect(action).toEqual({\n params: {\n foo: '42',\n },\n routeName: 'Foo',\n type: NavigationActions.NAVIGATE,\n });\n });\n\n it('Gets deep path', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenA.router = TabRouter({\n Boo: { screen: ScreenB },\n Baz: { screen: ScreenB },\n });\n const router = TabRouter({\n Foo: {\n path: 'f',\n screen: ScreenA,\n },\n Bar: {\n screen: ScreenB,\n },\n });\n\n const state = {\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n const { path } = router.getPathAndParamsForState(state);\n expect(path).toEqual('f/Baz');\n });\n\n it('Can navigate to other tab (no router) with params', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n\n const router = TabRouter({\n a: { screen: ScreenA },\n b: { screen: ScreenB },\n });\n\n const state0 = router.getStateForAction(INIT_ACTION);\n\n expect(state0).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [{ key: 'a', routeName: 'a' }, { key: 'b', routeName: 'b' }],\n });\n\n const params = { key: 'value' };\n\n const state1 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'b', params },\n state0\n );\n\n expect(state1).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'a', routeName: 'a' },\n { key: 'b', routeName: 'b', params },\n ],\n });\n });\n\n it('Back actions are not propagated to inactive children', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const ScreenC = () => <div />;\n const InnerNavigator = () => <div />;\n InnerNavigator.router = TabRouter({\n a: { screen: ScreenA },\n b: { screen: ScreenB },\n });\n\n const router = TabRouter(\n {\n inner: { screen: InnerNavigator },\n c: { screen: ScreenC },\n },\n {\n backBehavior: 'none',\n }\n );\n\n const state0 = router.getStateForAction(INIT_ACTION);\n\n const state1 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'b' },\n state0\n );\n\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'c' },\n state1\n );\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state2\n );\n\n expect(state3).toEqual(state2);\n });\n\n it('Back behavior initialRoute works', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n a: { screen: ScreenA },\n b: { screen: ScreenB },\n });\n\n const state0 = router.getStateForAction(INIT_ACTION);\n\n const state1 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'b' },\n state0\n );\n\n const state2 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state1\n );\n\n expect(state2).toEqual(state0);\n });\n\n it('Inner actions are only unpacked if the current tab matches', () => {\n const PlainScreen = () => <div />;\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenB.router = TabRouter({\n Baz: { screen: PlainScreen },\n Zoo: { screen: PlainScreen },\n });\n ScreenA.router = TabRouter({\n Bar: { screen: PlainScreen },\n Boo: { screen: ScreenB },\n });\n const router = TabRouter({\n Foo: { screen: ScreenA },\n });\n const screenApreState = {\n index: 0,\n key: 'Foo',\n isTransitioning: false,\n routeName: 'Foo',\n routes: [{ key: 'Bar', routeName: 'Bar' }],\n };\n const preState = {\n index: 0,\n isTransitioning: false,\n routes: [screenApreState],\n };\n\n const comparable = state => {\n let result = {};\n if (typeof state.routeName === 'string') {\n result = { ...result, routeName: state.routeName };\n }\n if (state.routes instanceof Array) {\n result = {\n ...result,\n routes: state.routes.map(comparable),\n };\n }\n return result;\n };\n\n const action = NavigationActions.navigate({\n routeName: 'Boo',\n action: NavigationActions.navigate({ routeName: 'Zoo' }),\n });\n const expectedState = ScreenA.router.getStateForAction(\n action,\n screenApreState\n );\n const state = router.getStateForAction(action, preState);\n const innerState = state ? state.routes[0] : state;\n\n expect(innerState.routes[1].index).toEqual(1);\n expect(expectedState && comparable(expectedState)).toEqual(\n innerState && comparable(innerState)\n );\n\n const noMatchAction = NavigationActions.navigate({\n routeName: 'Qux',\n action: NavigationActions.navigate({ routeName: 'Zoo' }),\n });\n const expectedState2 = ScreenA.router.getStateForAction(\n noMatchAction,\n screenApreState\n );\n const state2 = router.getStateForAction(noMatchAction, preState);\n const innerState2 = state2 ? state2.routes[0] : state2;\n\n expect(innerState2.routes[1].index).toEqual(0);\n expect(expectedState2 && comparable(expectedState2)).toEqual(\n innerState2 && comparable(innerState2)\n );\n });\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["TabRouter-test.js"],"names":["INIT_ACTION","type","NavigationActions","INIT","BareLeafRouteConfig","screen","describe","it","ScreenA","ScreenB","router","Foo","Bar","state","getStateForAction","expectedState","index","routes","key","routeName","isTransitioning","expect","toEqual","state2","NAVIGATE","expectedState2","getComponentForState","state3","getScreen","initialRouteName","initialRouteParams","name","params","SET_PARAMS","initialState","other","ChildTabNavigator","Baz","Boo","action","getActionForPathAndParams","foo","navAction","ChildNavigator0","ChildNavigator1","Zoo","Zap","MidNavigator","Fee","Gah","state4","path","expectedAction","great","undefined","getPathAndParamsForState","a","b","state0","state1","ScreenC","InnerNavigator","inner","c","backBehavior","BACK","PlainScreen","screenApreState","preState","comparable","result","Array","map","navigate","innerState","noMatchAction","innerState2"],"mappings":"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","sourcesContent":["/* eslint react/display-name:0 */\n\nimport React from 'react';\nimport TabRouter from '../TabRouter';\n\nimport * as NavigationActions from '../../NavigationActions';\n\nconst INIT_ACTION = { type: NavigationActions.INIT };\n\nconst BareLeafRouteConfig = {\n screen: () => <div />,\n};\n\ndescribe('TabRouter', () => {\n it('Handles basic tab logic', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: { screen: ScreenA },\n Bar: { screen: ScreenB },\n });\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const expectedState = {\n index: 0,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state).toEqual(expectedState);\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n const expectedState2 = {\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state2).toEqual(expectedState2);\n expect(router.getComponentForState(expectedState)).toEqual(ScreenA);\n expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state2\n );\n expect(state3).toEqual(null);\n });\n\n it('Handles getScreen', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: { getScreen: () => ScreenA },\n Bar: { getScreen: () => ScreenB },\n });\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const expectedState = {\n index: 0,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state).toEqual(expectedState);\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n const expectedState2 = {\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n };\n expect(state2).toEqual(expectedState2);\n expect(router.getComponentForState(expectedState)).toEqual(ScreenA);\n expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state2\n );\n expect(state3).toEqual(null);\n });\n\n it('Can set the initial tab', () => {\n const router = TabRouter(\n { Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },\n { initialRouteName: 'Bar' }\n );\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state).toEqual({\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n isTransitioning: false,\n });\n });\n\n it('Can set the initial params', () => {\n const router = TabRouter(\n { Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },\n { initialRouteName: 'Bar', initialRouteParams: { name: 'Qux' } }\n );\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n expect(state).toEqual({\n index: 1,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar', params: { name: 'Qux' } },\n ],\n isTransitioning: false,\n });\n });\n\n it('Handles the SetParams action', () => {\n const router = TabRouter({\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n },\n });\n const state2 = router.getStateForAction({\n type: NavigationActions.SET_PARAMS,\n params: { name: 'Qux' },\n key: 'Foo',\n });\n expect(state2 && state2.routes[0].params).toEqual({ name: 'Qux' });\n });\n\n it('Handles the SetParams action for inactive routes', () => {\n const router = TabRouter(\n {\n Foo: {\n screen: () => <div />,\n },\n Bar: {\n screen: () => <div />,\n },\n },\n {\n initialRouteName: 'Bar',\n }\n );\n const initialState = {\n index: 1,\n routes: [\n {\n key: 'RouteA',\n routeName: 'Foo',\n params: { name: 'InitialParam', other: 'Unchanged' },\n },\n { key: 'RouteB', routeName: 'Bar', params: {} },\n ],\n };\n const state = router.getStateForAction(\n {\n type: NavigationActions.SET_PARAMS,\n params: { name: 'NewParam' },\n key: 'RouteA',\n },\n initialState\n );\n expect(state.index).toEqual(1);\n expect(state.routes[0].params).toEqual({\n name: 'NewParam',\n other: 'Unchanged',\n });\n });\n\n it('getStateForAction returns null when navigating to same tab', () => {\n const router = TabRouter(\n { Foo: BareLeafRouteConfig, Bar: BareLeafRouteConfig },\n { initialRouteName: 'Bar' }\n );\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n expect(state2).toEqual(null);\n });\n\n it('getStateForAction returns initial navigate', () => {\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const state = router.getStateForAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'Foo',\n });\n expect(state && state.index).toEqual(0);\n });\n\n it('Handles nested tabs and nested actions', () => {\n const ChildTabNavigator = () => <div />;\n ChildTabNavigator.router = TabRouter({\n Foo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Baz: { screen: ChildTabNavigator },\n Boo: BareLeafRouteConfig,\n });\n const action = router.getActionForPathAndParams('Baz/Bar', { foo: '42' });\n const navAction = {\n type: NavigationActions.NAVIGATE,\n routeName: 'Baz',\n params: { foo: '42' },\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n params: { foo: '42' },\n },\n };\n expect(action).toEqual(navAction);\n const state = router.getStateForAction(navAction);\n expect(state).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n {\n key: 'Foo',\n routeName: 'Foo',\n },\n {\n index: 1,\n isTransitioning: false,\n key: 'Baz',\n routeName: 'Baz',\n params: { foo: '42' },\n routes: [\n {\n key: 'Foo',\n routeName: 'Foo',\n },\n {\n key: 'Bar',\n routeName: 'Bar',\n params: {\n foo: '42',\n },\n },\n ],\n },\n {\n key: 'Boo',\n routeName: 'Boo',\n },\n ],\n });\n });\n\n it('Handles passing params to nested tabs', () => {\n const ChildTabNavigator = () => <div />;\n ChildTabNavigator.router = TabRouter({\n Boo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Baz: { screen: ChildTabNavigator },\n });\n const navAction = {\n type: NavigationActions.NAVIGATE,\n routeName: 'Baz',\n };\n let state = router.getStateForAction(navAction);\n expect(state).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n {\n index: 0,\n key: 'Baz',\n routeName: 'Baz',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n },\n ],\n });\n\n // Ensure that navigating back and forth doesn't overwrite\n state = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Bar' },\n state\n );\n state = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Boo' },\n state\n );\n expect(state && state.routes[1]).toEqual({\n index: 0,\n isTransitioning: false,\n key: 'Baz',\n routeName: 'Baz',\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n });\n });\n\n it('Handles initial deep linking into nested tabs', () => {\n const ChildTabNavigator = () => <div />;\n ChildTabNavigator.router = TabRouter({\n Foo: BareLeafRouteConfig,\n Bar: BareLeafRouteConfig,\n });\n const router = TabRouter({\n Foo: BareLeafRouteConfig,\n Baz: { screen: ChildTabNavigator },\n Boo: BareLeafRouteConfig,\n });\n const state = router.getStateForAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n });\n expect(state).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n {\n index: 1,\n key: 'Baz',\n routeName: 'Baz',\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n },\n { key: 'Boo', routeName: 'Boo' },\n ],\n });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Foo' },\n state\n );\n expect(state2).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n {\n index: 0,\n key: 'Baz',\n routeName: 'Baz',\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n },\n { key: 'Boo', routeName: 'Boo' },\n ],\n });\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Foo' },\n state2\n );\n expect(state3).toEqual(null);\n });\n\n it('Handles linking across of deeply nested tabs', () => {\n const ChildNavigator0 = () => <div />;\n ChildNavigator0.router = TabRouter({\n Boo: BareLeafRouteConfig,\n Baz: BareLeafRouteConfig,\n });\n const ChildNavigator1 = () => <div />;\n ChildNavigator1.router = TabRouter({\n Zoo: BareLeafRouteConfig,\n Zap: BareLeafRouteConfig,\n });\n const MidNavigator = () => <div />;\n MidNavigator.router = TabRouter({\n Fee: { screen: ChildNavigator0 },\n Bar: { screen: ChildNavigator1 },\n });\n const router = TabRouter({\n Foo: { screen: MidNavigator },\n Gah: BareLeafRouteConfig,\n });\n const state = router.getStateForAction(INIT_ACTION);\n expect(state).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Fee',\n routeName: 'Fee',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n {\n index: 0,\n key: 'Bar',\n routeName: 'Bar',\n isTransitioning: false,\n routes: [\n { key: 'Zoo', routeName: 'Zoo' },\n { key: 'Zap', routeName: 'Zap' },\n ],\n },\n ],\n },\n { key: 'Gah', routeName: 'Gah' },\n ],\n });\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Zap' },\n state\n );\n expect(state2).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Fee',\n routeName: 'Fee',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n {\n index: 1,\n key: 'Bar',\n routeName: 'Bar',\n isTransitioning: false,\n routes: [\n { key: 'Zoo', routeName: 'Zoo' },\n { key: 'Zap', routeName: 'Zap' },\n ],\n },\n ],\n },\n { key: 'Gah', routeName: 'Gah' },\n ],\n });\n const state3 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'Zap' },\n state2\n );\n expect(state3).toEqual(null);\n const state4 = router.getStateForAction({\n type: NavigationActions.NAVIGATE,\n routeName: 'Foo',\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'Bar',\n action: {\n type: NavigationActions.NAVIGATE,\n routeName: 'Zap',\n },\n },\n });\n expect(state4).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n {\n index: 0,\n key: 'Fee',\n routeName: 'Fee',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n {\n index: 1,\n key: 'Bar',\n routeName: 'Bar',\n isTransitioning: false,\n routes: [\n { key: 'Zoo', routeName: 'Zoo' },\n { key: 'Zap', routeName: 'Zap' },\n ],\n },\n ],\n },\n { key: 'Gah', routeName: 'Gah' },\n ],\n });\n });\n\n it('Handles path configuration', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: {\n path: 'f',\n screen: ScreenA,\n },\n Bar: {\n path: 'b/:great',\n screen: ScreenB,\n },\n });\n const params = { foo: '42' };\n const action = router.getActionForPathAndParams('b/anything', params);\n const expectedAction = {\n params: {\n foo: '42',\n great: 'anything',\n },\n routeName: 'Bar',\n type: NavigationActions.NAVIGATE,\n };\n expect(action).toEqual(expectedAction);\n\n const state = router.getStateForAction({ type: NavigationActions.INIT });\n const expectedState = {\n index: 0,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo' },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n expect(state).toEqual(expectedState);\n const state2 = router.getStateForAction(expectedAction, state);\n const expectedState2 = {\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'Foo', routeName: 'Foo', params: undefined },\n {\n key: 'Bar',\n routeName: 'Bar',\n params: { foo: '42', great: 'anything' },\n },\n ],\n };\n expect(state2).toEqual(expectedState2);\n expect(router.getComponentForState(expectedState)).toEqual(ScreenA);\n expect(router.getComponentForState(expectedState2)).toEqual(ScreenB);\n expect(router.getPathAndParamsForState(expectedState).path).toEqual('f');\n expect(router.getPathAndParamsForState(expectedState2).path).toEqual(\n 'b/anything'\n );\n });\n\n it('Handles default configuration', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n Foo: {\n path: '',\n screen: ScreenA,\n },\n Bar: {\n path: 'b',\n screen: ScreenB,\n },\n });\n const action = router.getActionForPathAndParams('', { foo: '42' });\n expect(action).toEqual({\n params: {\n foo: '42',\n },\n routeName: 'Foo',\n type: NavigationActions.NAVIGATE,\n });\n });\n\n it('Gets deep path', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenA.router = TabRouter({\n Boo: { screen: ScreenB },\n Baz: { screen: ScreenB },\n });\n const router = TabRouter({\n Foo: {\n path: 'f',\n screen: ScreenA,\n },\n Bar: {\n screen: ScreenB,\n },\n });\n\n const state = {\n index: 0,\n isTransitioning: false,\n routes: [\n {\n index: 1,\n key: 'Foo',\n routeName: 'Foo',\n isTransitioning: false,\n routes: [\n { key: 'Boo', routeName: 'Boo' },\n { key: 'Baz', routeName: 'Baz' },\n ],\n },\n { key: 'Bar', routeName: 'Bar' },\n ],\n };\n const { path } = router.getPathAndParamsForState(state);\n expect(path).toEqual('f/Baz');\n });\n\n it('Can navigate to other tab (no router) with params', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n\n const router = TabRouter({\n a: { screen: ScreenA },\n b: { screen: ScreenB },\n });\n\n const state0 = router.getStateForAction(INIT_ACTION);\n\n expect(state0).toEqual({\n index: 0,\n isTransitioning: false,\n routes: [{ key: 'a', routeName: 'a' }, { key: 'b', routeName: 'b' }],\n });\n\n const params = { key: 'value' };\n\n const state1 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'b', params },\n state0\n );\n\n expect(state1).toEqual({\n index: 1,\n isTransitioning: false,\n routes: [\n { key: 'a', routeName: 'a' },\n { key: 'b', routeName: 'b', params },\n ],\n });\n });\n\n it('Back actions are not propagated to inactive children', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const ScreenC = () => <div />;\n const InnerNavigator = () => <div />;\n InnerNavigator.router = TabRouter({\n a: { screen: ScreenA },\n b: { screen: ScreenB },\n });\n\n const router = TabRouter(\n {\n inner: { screen: InnerNavigator },\n c: { screen: ScreenC },\n },\n {\n backBehavior: 'none',\n }\n );\n\n const state0 = router.getStateForAction(INIT_ACTION);\n\n const state1 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'b' },\n state0\n );\n\n const state2 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'c' },\n state1\n );\n\n const state3 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state2\n );\n\n expect(state3).toEqual(state2);\n });\n\n it('Back behavior initialRoute works', () => {\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n const router = TabRouter({\n a: { screen: ScreenA },\n b: { screen: ScreenB },\n });\n\n const state0 = router.getStateForAction(INIT_ACTION);\n\n const state1 = router.getStateForAction(\n { type: NavigationActions.NAVIGATE, routeName: 'b' },\n state0\n );\n\n const state2 = router.getStateForAction(\n { type: NavigationActions.BACK },\n state1\n );\n\n expect(state2).toEqual(state0);\n });\n\n it('Inner actions are only unpacked if the current tab matches', () => {\n const PlainScreen = () => <div />;\n const ScreenA = () => <div />;\n const ScreenB = () => <div />;\n ScreenB.router = TabRouter({\n Baz: { screen: PlainScreen },\n Zoo: { screen: PlainScreen },\n });\n ScreenA.router = TabRouter({\n Bar: { screen: PlainScreen },\n Boo: { screen: ScreenB },\n });\n const router = TabRouter({\n Foo: { screen: ScreenA },\n });\n const screenApreState = {\n index: 0,\n key: 'Foo',\n isTransitioning: false,\n routeName: 'Foo',\n routes: [{ key: 'Bar', routeName: 'Bar' }],\n };\n const preState = {\n index: 0,\n isTransitioning: false,\n routes: [screenApreState],\n };\n\n const comparable = state => {\n let result = {};\n if (typeof state.routeName === 'string') {\n result = { ...result, routeName: state.routeName };\n }\n if (state.routes instanceof Array) {\n result = {\n ...result,\n routes: state.routes.map(comparable),\n };\n }\n return result;\n };\n\n const action = NavigationActions.navigate({\n routeName: 'Boo',\n action: NavigationActions.navigate({ routeName: 'Zoo' }),\n });\n const expectedState = ScreenA.router.getStateForAction(\n action,\n screenApreState\n );\n const state = router.getStateForAction(action, preState);\n const innerState = state ? state.routes[0] : state;\n\n expect(innerState.routes[1].index).toEqual(1);\n expect(expectedState && comparable(expectedState)).toEqual(\n innerState && comparable(innerState)\n );\n\n const noMatchAction = NavigationActions.navigate({\n routeName: 'Qux',\n action: NavigationActions.navigate({ routeName: 'Zoo' }),\n });\n const expectedState2 = ScreenA.router.getStateForAction(\n noMatchAction,\n screenApreState\n );\n const state2 = router.getStateForAction(noMatchAction, preState);\n const innerState2 = state2 ? state2.routes[0] : state2;\n\n expect(innerState2.routes[1].index).toEqual(0);\n expect(expectedState2 && comparable(expectedState2)).toEqual(\n innerState2 && comparable(innerState2)\n );\n });\n});\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _pathUtils=require("../pathUtils");it('urlToPathAndParams empty',function(){var _urlToPathAndParams=(0,_pathUtils.urlToPathAndParams)('foo://'),path=_urlToPathAndParams.path,params=_urlToPathAndParams.params;expect(path).toBe('');expect(params).toEqual({});});it('urlToPathAndParams empty params',function(){var _urlToPathAndParams2=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar/b'),path=_urlToPathAndParams2.path,params=_urlToPathAndParams2.params;expect(path).toBe('foo/bar/b');expect(params).toEqual({});});it('urlToPathAndParams trailing slash',function(){var _urlToPathAndParams3=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar/'),path=_urlToPathAndParams3.path,params=_urlToPathAndParams3.params;expect(path).toBe('foo/bar');expect(params).toEqual({});});it('urlToPathAndParams with params',function(){var _urlToPathAndParams4=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar?asdf=1&dude=foo'),path=_urlToPathAndParams4.path,params=_urlToPathAndParams4.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1',dude:'foo'});});it('urlToPathAndParams with custom delimeter',function(){var _urlToPathAndParams5=(0,_pathUtils.urlToPathAndParams)('https://example.com/foo/bar?asdf=1','https://example.com/'),path=_urlToPathAndParams5.path,params=_urlToPathAndParams5.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1'});});
|
|
1
|
+
var _pathUtils=require("../pathUtils");it('urlToPathAndParams empty',function(){var _urlToPathAndParams=(0,_pathUtils.urlToPathAndParams)('foo://'),path=_urlToPathAndParams.path,params=_urlToPathAndParams.params;expect(path).toBe('');expect(params).toEqual({});});it('urlToPathAndParams empty params',function(){var _urlToPathAndParams2=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar/b'),path=_urlToPathAndParams2.path,params=_urlToPathAndParams2.params;expect(path).toBe('foo/bar/b');expect(params).toEqual({});});it('urlToPathAndParams trailing slash',function(){var _urlToPathAndParams3=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar/'),path=_urlToPathAndParams3.path,params=_urlToPathAndParams3.params;expect(path).toBe('foo/bar');expect(params).toEqual({});});it('urlToPathAndParams with params',function(){var _urlToPathAndParams4=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar?asdf=1&dude=foo'),path=_urlToPathAndParams4.path,params=_urlToPathAndParams4.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1',dude:'foo'});});it('urlToPathAndParams with custom delimeter string',function(){var _urlToPathAndParams5=(0,_pathUtils.urlToPathAndParams)('https://example.com/foo/bar?asdf=1','https://example.com/'),path=_urlToPathAndParams5.path,params=_urlToPathAndParams5.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1'});});it('urlToPathAndParams with custom delimeter RegExp',function(){var _urlToPathAndParams6=(0,_pathUtils.urlToPathAndParams)('https://example.com/foo/bar?asdf=1',new RegExp('https://example.com/')),path=_urlToPathAndParams6.path,params=_urlToPathAndParams6.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1'});});it('urlToPathAndParams with duplicate prefix in query parameters',function(){var _urlToPathAndParams7=(0,_pathUtils.urlToPathAndParams)('example://whatever?related=example://something','example://'),path=_urlToPathAndParams7.path,params=_urlToPathAndParams7.params;expect(path).toBe('whatever');expect(params).toEqual({related:'example://something'});});it('urlToPathAndParams with array of custom delimiters, should use first match',function(){var _urlToPathAndParams8=(0,_pathUtils.urlToPathAndParams)('https://example.com/foo/bar?asdf=1',['baz','https://example.com/','https://example.com/foo']),path=_urlToPathAndParams8.path,params=_urlToPathAndParams8.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1'});});it('urlToPathAndParams with array of custom delimiters where none match, should resort to default delimiter',function(){var _urlToPathAndParams9=(0,_pathUtils.urlToPathAndParams)('foo://foo/bar?asdf=1',['baz','bazzlefraz']),path=_urlToPathAndParams9.path,params=_urlToPathAndParams9.params;expect(path).toBe('foo/bar');expect(params).toEqual({asdf:'1'});});
|
|
2
2
|
//# sourceMappingURL=pathUtils-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["pathUtils-test.js"],"names":["it","path","params","expect","toBe","toEqual","asdf","dude"],"mappings":"AAAA,uCAEAA,EAAE,CAAC,0BAAD,CAA6B,UAAM,yBACV,kCAAmB,QAAnB,CADU,CAC3BC,IAD2B,qBAC3BA,IAD2B,CACrBC,MADqB,qBACrBA,MADqB,CAEnCC,MAAM,CAACF,IAAD,CAAN,CAAaG,IAAb,CAAkB,EAAlB,EACAD,MAAM,CAACD,MAAD,CAAN,CAAeG,OAAf,CAAuB,EAAvB,EACD,CAJC,CAAF,CAMAL,EAAE,CAAC,iCAAD,CAAoC,UAAM,0BACjB,kCAAmB,iBAAnB,CADiB,CAClCC,IADkC,sBAClCA,IADkC,CAC5BC,MAD4B,sBAC5BA,MAD4B,CAE1CC,MAAM,CAACF,IAAD,CAAN,CAAaG,IAAb,CAAkB,WAAlB,EACAD,MAAM,CAACD,MAAD,CAAN,CAAeG,OAAf,CAAuB,EAAvB,EACD,CAJC,CAAF,CAMAL,EAAE,CAAC,mCAAD,CAAsC,UAAM,0BACnB,kCAAmB,gBAAnB,CADmB,CACpCC,IADoC,sBACpCA,IADoC,CAC9BC,MAD8B,sBAC9BA,MAD8B,CAE5CC,MAAM,CAACF,IAAD,CAAN,CAAaG,IAAb,CAAkB,SAAlB,EACAD,MAAM,CAACD,MAAD,CAAN,CAAeG,OAAf,CAAuB,EAAvB,EACD,CAJC,CAAF,CAMAL,EAAE,CAAC,gCAAD,CAAmC,UAAM,0BAChB,kCAAmB,+BAAnB,CADgB,CACjCC,IADiC,sBACjCA,IADiC,CAC3BC,MAD2B,sBAC3BA,MAD2B,CAEzCC,MAAM,CAACF,IAAD,CAAN,CAAaG,IAAb,CAAkB,SAAlB,EACAD,MAAM,CAACD,MAAD,CAAN,CAAeG,OAAf,CAAuB,CAAEC,IAAI,CAAE,GAAR,CAAaC,IAAI,CAAE,KAAnB,CAAvB,EACD,CAJC,CAAF,CAMAP,EAAE,CAAC,
|
|
1
|
+
{"version":3,"sources":["pathUtils-test.js"],"names":["it","path","params","expect","toBe","toEqual","asdf","dude","RegExp","related"],"mappings":"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","sourcesContent":["import { urlToPathAndParams } from '../pathUtils';\n\nit('urlToPathAndParams empty', () => {\n const { path, params } = urlToPathAndParams('foo://');\n expect(path).toBe('');\n expect(params).toEqual({});\n});\n\nit('urlToPathAndParams empty params', () => {\n const { path, params } = urlToPathAndParams('foo://foo/bar/b');\n expect(path).toBe('foo/bar/b');\n expect(params).toEqual({});\n});\n\nit('urlToPathAndParams trailing slash', () => {\n const { path, params } = urlToPathAndParams('foo://foo/bar/');\n expect(path).toBe('foo/bar');\n expect(params).toEqual({});\n});\n\nit('urlToPathAndParams with params', () => {\n const { path, params } = urlToPathAndParams('foo://foo/bar?asdf=1&dude=foo');\n expect(path).toBe('foo/bar');\n expect(params).toEqual({ asdf: '1', dude: 'foo' });\n});\n\nit('urlToPathAndParams with custom delimeter string', () => {\n const { path, params } = urlToPathAndParams(\n 'https://example.com/foo/bar?asdf=1',\n 'https://example.com/'\n );\n expect(path).toBe('foo/bar');\n expect(params).toEqual({ asdf: '1' });\n});\n\nit('urlToPathAndParams with custom delimeter RegExp', () => {\n const { path, params } = urlToPathAndParams(\n 'https://example.com/foo/bar?asdf=1',\n new RegExp('https://example.com/')\n );\n expect(path).toBe('foo/bar');\n expect(params).toEqual({ asdf: '1' });\n});\n\nit('urlToPathAndParams with duplicate prefix in query parameters', () => {\n const { path, params } = urlToPathAndParams(\n 'example://whatever?related=example://something',\n 'example://'\n );\n expect(path).toBe('whatever');\n expect(params).toEqual({ related: 'example://something' });\n});\n\nit('urlToPathAndParams with array of custom delimiters, should use first match', () => {\n const { path, params } = urlToPathAndParams(\n 'https://example.com/foo/bar?asdf=1',\n ['baz', 'https://example.com/', 'https://example.com/foo']\n );\n expect(path).toBe('foo/bar');\n expect(params).toEqual({ asdf: '1' });\n});\n\nit('urlToPathAndParams with array of custom delimiters where none match, should resort to default delimiter', () => {\n const { path, params } = urlToPathAndParams('foo://foo/bar?asdf=1', [\n 'baz',\n 'bazzlefraz',\n ]);\n expect(path).toBe('foo/bar');\n expect(params).toEqual({ asdf: '1' });\n});\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _react=_interopRequireDefault(require("react"));var _validateRouteConfigMap=_interopRequireDefault(require("../validateRouteConfigMap"));var _StackRouter=_interopRequireDefault(require("../StackRouter"));var _jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _react=_interopRequireDefault(require("react"));var _validateRouteConfigMap=_interopRequireDefault(require("../validateRouteConfigMap"));var _StackRouter=_interopRequireDefault(require("../StackRouter"));var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-core/src/routers/__tests__/validateRouteConfigMap-test.js";var ListScreen=function ListScreen(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:6}});};var ProfileNavigator=function ProfileNavigator(){return _react.default.createElement("div",{__source:{fileName:_jsxFileName,lineNumber:8}});};ProfileNavigator.router=(0,_StackRouter.default)({list:{screen:ListScreen}});describe('validateRouteConfigMap',function(){it('Fails on empty bare screen',function(){var invalidMap={Home:undefined};expect(function(){return(0,_validateRouteConfigMap.default)(invalidMap);}).toThrowErrorMatchingSnapshot();});it('Fails on empty config',function(){var invalidMap={};expect(function(){return(0,_validateRouteConfigMap.default)(invalidMap);}).toThrowErrorMatchingSnapshot();});it('Fails on bad object',function(){var invalidMap={Home:{foo:'bar'}};expect(function(){return(0,_validateRouteConfigMap.default)(invalidMap);}).toThrowErrorMatchingSnapshot();});it('Fails if both screen and getScreen are defined',function(){var invalidMap={Home:{screen:ListScreen,getScreen:function getScreen(){return ListScreen;}}};expect(function(){return(0,_validateRouteConfigMap.default)(invalidMap);}).toThrowErrorMatchingSnapshot();});it('Succeeds on a valid config',function(){var validMap={Home:{screen:ProfileNavigator},Chat:ListScreen};(0,_validateRouteConfigMap.default)(validMap);});});
|
|
2
2
|
//# sourceMappingURL=validateRouteConfigMap-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["validateRouteConfigMap-test.js"],"names":["ListScreen","ProfileNavigator","router","list","screen","describe","it","invalidMap","Home","undefined","expect","toThrowErrorMatchingSnapshot","foo","getScreen","validMap","Chat"],"mappings":"mFAAA,oDAEA,yFACA,mE,
|
|
1
|
+
{"version":3,"sources":["validateRouteConfigMap-test.js"],"names":["ListScreen","ProfileNavigator","router","list","screen","describe","it","invalidMap","Home","undefined","expect","toThrowErrorMatchingSnapshot","foo","getScreen","validMap","Chat"],"mappings":"mFAAA,oDAEA,yFACA,mE,+HAEA,GAAMA,CAAAA,UAAU,CAAG,QAAbA,CAAAA,UAAa,SAAM,oFAAN,EAAnB,CAEA,GAAMC,CAAAA,gBAAgB,CAAG,QAAnBA,CAAAA,gBAAmB,SAAM,oFAAN,EAAzB,CACAA,gBAAgB,CAACC,MAAjB,CAA0B,yBAAY,CACpCC,IAAI,CAAE,CACJC,MAAM,CAAEJ,UADJ,CAD8B,CAAZ,CAA1B,CAMAK,QAAQ,CAAC,wBAAD,CAA2B,UAAM,CACvCC,EAAE,CAAC,4BAAD,CAA+B,UAAM,CACrC,GAAMC,CAAAA,UAAU,CAAG,CACjBC,IAAI,CAAEC,SADW,CAAnB,CAGAC,MAAM,CAAC,iBACL,oCAAuBH,UAAvB,CADK,EAAD,CAAN,CAEEI,4BAFF,GAGD,CAPC,CAAF,CAQAL,EAAE,CAAC,uBAAD,CAA0B,UAAM,CAChC,GAAMC,CAAAA,UAAU,CAAG,EAAnB,CACAG,MAAM,CAAC,iBACL,oCAAuBH,UAAvB,CADK,EAAD,CAAN,CAEEI,4BAFF,GAGD,CALC,CAAF,CAMAL,EAAE,CAAC,qBAAD,CAAwB,UAAM,CAC9B,GAAMC,CAAAA,UAAU,CAAG,CACjBC,IAAI,CAAE,CACJI,GAAG,CAAE,KADD,CADW,CAAnB,CAKAF,MAAM,CAAC,iBACL,oCAAuBH,UAAvB,CADK,EAAD,CAAN,CAEEI,4BAFF,GAGD,CATC,CAAF,CAUAL,EAAE,CAAC,gDAAD,CAAmD,UAAM,CACzD,GAAMC,CAAAA,UAAU,CAAG,CACjBC,IAAI,CAAE,CACJJ,MAAM,CAAEJ,UADJ,CAEJa,SAAS,CAAE,2BAAMb,CAAAA,UAAN,EAFP,CADW,CAAnB,CAMAU,MAAM,CAAC,iBACL,oCAAuBH,UAAvB,CADK,EAAD,CAAN,CAEEI,4BAFF,GAGD,CAVC,CAAF,CAWAL,EAAE,CAAC,4BAAD,CAA+B,UAAM,CACrC,GAAMQ,CAAAA,QAAQ,CAAG,CACfN,IAAI,CAAE,CACJJ,MAAM,CAAEH,gBADJ,CADS,CAIfc,IAAI,CAAEf,UAJS,CAAjB,CAMA,oCAAuBc,QAAvB,EACD,CARC,CAAF,CASD,CA7CO,CAAR","sourcesContent":["import React from 'react';\n\nimport validateRouteConfigMap from '../validateRouteConfigMap';\nimport StackRouter from '../StackRouter';\n\nconst ListScreen = () => <div />;\n\nconst ProfileNavigator = () => <div />;\nProfileNavigator.router = StackRouter({\n list: {\n screen: ListScreen,\n },\n});\n\ndescribe('validateRouteConfigMap', () => {\n it('Fails on empty bare screen', () => {\n const invalidMap = {\n Home: undefined,\n };\n expect(() =>\n validateRouteConfigMap(invalidMap)\n ).toThrowErrorMatchingSnapshot();\n });\n it('Fails on empty config', () => {\n const invalidMap = {};\n expect(() =>\n validateRouteConfigMap(invalidMap)\n ).toThrowErrorMatchingSnapshot();\n });\n it('Fails on bad object', () => {\n const invalidMap = {\n Home: {\n foo: 'bar',\n },\n };\n expect(() =>\n validateRouteConfigMap(invalidMap)\n ).toThrowErrorMatchingSnapshot();\n });\n it('Fails if both screen and getScreen are defined', () => {\n const invalidMap = {\n Home: {\n screen: ListScreen,\n getScreen: () => ListScreen,\n },\n };\n expect(() =>\n validateRouteConfigMap(invalidMap)\n ).toThrowErrorMatchingSnapshot();\n });\n it('Succeeds on a valid config', () => {\n const validMap = {\n Home: {\n screen: ProfileNavigator,\n },\n Chat: ListScreen,\n };\n validateRouteConfigMap(validMap);\n });\n});\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _invariant=_interopRequireDefault(require("../utils/invariant"));var _getScreenForRouteName=_interopRequireDefault(require("./getScreenForRouteName"));var _validateScreenOptions=_interopRequireDefault(require("./validateScreenOptions"));function applyConfig(configurer,navigationOptions,configProps){if(typeof configurer==='function'){return(0,_objectSpread2.default)({},navigationOptions,configurer((0,_objectSpread2.default)({},configProps,{navigationOptions:navigationOptions})));}if(typeof configurer==='object'){return(0,_objectSpread2.default)({},navigationOptions,configurer);}return navigationOptions;}var _default=function _default(routeConfigs,navigatorScreenConfig){return function(navigation,screenProps){var state=navigation.state;var route=state;(0,_invariant.default)(route.routeName&&typeof route.routeName==='string','Cannot get config because the route does not have a routeName.');var Component=(0,_getScreenForRouteName.default)(routeConfigs,route.routeName);var routeConfig=routeConfigs[route.routeName];var routeScreenConfig=routeConfig===Component?null:routeConfig.navigationOptions;var componentScreenConfig=Component.navigationOptions;var configOptions={navigation:navigation,screenProps:screenProps||{}};var outputConfig=applyConfig(navigatorScreenConfig,{},configOptions);outputConfig=applyConfig(componentScreenConfig,outputConfig,configOptions);outputConfig=applyConfig(routeScreenConfig,outputConfig,configOptions);(0,_validateScreenOptions.default)(outputConfig,route);return outputConfig;};};exports.default=_default;
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _objectSpread2=_interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));var _invariant=_interopRequireDefault(require("../utils/invariant"));var _getScreenForRouteName=_interopRequireDefault(require("./getScreenForRouteName"));var _validateScreenOptions=_interopRequireDefault(require("./validateScreenOptions"));function applyConfig(configurer,navigationOptions,configProps){if(typeof configurer==='function'){return(0,_objectSpread2.default)({},navigationOptions,configurer((0,_objectSpread2.default)({},configProps,{navigationOptions:navigationOptions})));}if(typeof configurer==='object'){return(0,_objectSpread2.default)({},navigationOptions,configurer);}return navigationOptions;}var _default=function _default(routeConfigs,navigatorScreenConfig){return function(navigation,screenProps,theme){var state=navigation.state;var route=state;(0,_invariant.default)(route.routeName&&typeof route.routeName==='string','Cannot get config because the route does not have a routeName.');var Component=(0,_getScreenForRouteName.default)(routeConfigs,route.routeName);var routeConfig=routeConfigs[route.routeName];var routeScreenConfig=routeConfig===Component?null:routeConfig.navigationOptions;var componentScreenConfig=Component.navigationOptions;var configOptions={navigation:navigation,screenProps:screenProps||{},theme:theme};var outputConfig=applyConfig(navigatorScreenConfig,{},configOptions);outputConfig=applyConfig(componentScreenConfig,outputConfig,configOptions);outputConfig=applyConfig(routeScreenConfig,outputConfig,configOptions);(0,_validateScreenOptions.default)(outputConfig,route);return outputConfig;};};exports.default=_default;
|
|
2
2
|
//# sourceMappingURL=createConfigGetter.js.map
|