823f3bbf1205db776671d8155aee0267.json 11.5 KB
{"ast":null,"code":"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 _getChildEventSubscriber=_interopRequireDefault(require(\"./getChildEventSubscriber\"));var _getChildRouter=_interopRequireDefault(require(\"./getChildRouter\"));var _getNavigationActionCreators=_interopRequireDefault(require(\"./routers/getNavigationActionCreators\"));var _getChildrenNavigationCache=_interopRequireDefault(require(\"./getChildrenNavigationCache\"));var createParamGetter=function createParamGetter(route){return function(paramName,defaultValue){var params=route.params;if(params&&paramName in params){return params[paramName];}return defaultValue;};};function _getChildNavigation(navigation,childKey,getCurrentParentNavigation){var children=(0,_getChildrenNavigationCache.default)(navigation);var childRoute=navigation.state.routes.find(function(r){return r.key===childKey;});if(!childRoute){return null;}if(children[childKey]&&children[childKey].state===childRoute){return children[childKey];}var childRouter=(0,_getChildRouter.default)(navigation.router,childRoute.routeName);var focusedGrandChildRoute=childRoute.routes&&typeof childRoute.index==='number'?childRoute.routes[childRoute.index]:null;var actionCreators=(0,_objectSpread2.default)({},navigation.actions,navigation.router.getActionCreators(childRoute,navigation.state.key),childRouter?childRouter.getActionCreators(focusedGrandChildRoute,childRoute.key):{},(0,_getNavigationActionCreators.default)(childRoute));var actionHelpers={};Object.keys(actionCreators).forEach(function(actionName){actionHelpers[actionName]=function(){var actionCreator=actionCreators[actionName];var action=actionCreator.apply(void 0,arguments);return navigation.dispatch(action);};});var _isFirstRouteInParent=true;var parentNavigation=getCurrentParentNavigation();if(parentNavigation){_isFirstRouteInParent=parentNavigation.state.routes.indexOf(childRoute)===0;}if(children[childKey]&&children[childKey].isFirstRouteInParent()===_isFirstRouteInParent){children[childKey]=(0,_objectSpread2.default)({},children[childKey],actionHelpers,{state:childRoute,router:childRouter,actions:actionCreators,getParam:createParamGetter(childRoute)});return children[childKey];}else{var childSubscriber=(0,_getChildEventSubscriber.default)(navigation.addListener,childKey);children[childKey]=(0,_objectSpread2.default)({},actionHelpers,{state:childRoute,router:childRouter,actions:actionCreators,getParam:createParamGetter(childRoute),getChildNavigation:function getChildNavigation(grandChildKey){return _getChildNavigation(children[childKey],grandChildKey,function(){var nav=getCurrentParentNavigation();return nav&&nav.getChildNavigation(childKey);});},isFocused:function isFocused(){var currentNavigation=getCurrentParentNavigation();if(!currentNavigation){return false;}var _currentNavigation$st=currentNavigation.state,routes=_currentNavigation$st.routes,index=_currentNavigation$st.index;if(!currentNavigation.isFocused()){return false;}if(routes[index].key===childKey){return true;}return false;},isFirstRouteInParent:function isFirstRouteInParent(){return _isFirstRouteInParent;},dispatch:navigation.dispatch,getScreenProps:navigation.getScreenProps,dangerouslyGetParent:getCurrentParentNavigation,addListener:childSubscriber.addListener,emit:childSubscriber.emit});return children[childKey];}}var _default=_getChildNavigation;exports.default=_default;","map":{"version":3,"sources":["getChildNavigation.js"],"names":["createParamGetter","params","route","paramName","children","getChildrenNavigationCache","childRoute","navigation","r","childRouter","getChildRouter","focusedGrandChildRoute","actionCreators","getNavigationActionCreators","actionHelpers","Object","actionCreator","action","isFirstRouteInParent","parentNavigation","getCurrentParentNavigation","state","router","actions","getParam","childSubscriber","getChildEventSubscriber","getChildNavigation","nav","isFocused","currentNavigation","routes","index","dispatch","getScreenProps","dangerouslyGetParent","addListener","emit"],"mappings":"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","sourcesContent":["import getChildEventSubscriber from './getChildEventSubscriber';\nimport getChildRouter from './getChildRouter';\nimport getNavigationActionCreators from './routers/getNavigationActionCreators';\nimport getChildrenNavigationCache from './getChildrenNavigationCache';\n\nconst createParamGetter = route => (paramName, defaultValue) => {\n  const params = route.params;\n\n  if (params && paramName in params) {\n    return params[paramName];\n  }\n\n  return defaultValue;\n};\n\nfunction getChildNavigation(navigation, childKey, getCurrentParentNavigation) {\n  const children = getChildrenNavigationCache(navigation);\n  const childRoute = navigation.state.routes.find(r => r.key === childKey);\n\n  if (!childRoute) {\n    return null;\n  }\n\n  if (children[childKey] && children[childKey].state === childRoute) {\n    return children[childKey];\n  }\n\n  const childRouter = getChildRouter(navigation.router, childRoute.routeName);\n\n  // If the route has children, we'll use this to pass in to the action creators\n  // for the childRouter so that any action that depends on the active route will\n  // behave as expected. We don't explicitly require that routers implement routes\n  // and index properties, but if we did then we would put an invariant here to\n  // ensure that a focusedGrandChildRoute exists if childRouter is defined.\n  const focusedGrandChildRoute =\n    childRoute.routes && typeof childRoute.index === 'number'\n      ? childRoute.routes[childRoute.index]\n      : null;\n\n  const actionCreators = {\n    ...navigation.actions,\n    ...navigation.router.getActionCreators(childRoute, navigation.state.key),\n    ...(childRouter\n      ? childRouter.getActionCreators(focusedGrandChildRoute, childRoute.key)\n      : {}),\n    ...getNavigationActionCreators(childRoute),\n  };\n\n  const actionHelpers = {};\n  Object.keys(actionCreators).forEach(actionName => {\n    actionHelpers[actionName] = (...args) => {\n      const actionCreator = actionCreators[actionName];\n      const action = actionCreator(...args);\n      return navigation.dispatch(action);\n    };\n  });\n\n  let isFirstRouteInParent = true;\n\n  const parentNavigation = getCurrentParentNavigation();\n\n  if (parentNavigation) {\n    isFirstRouteInParent =\n      parentNavigation.state.routes.indexOf(childRoute) === 0;\n  }\n\n  if (\n    children[childKey] &&\n    children[childKey].isFirstRouteInParent() === isFirstRouteInParent\n  ) {\n    children[childKey] = {\n      ...children[childKey],\n      ...actionHelpers,\n      state: childRoute,\n      router: childRouter,\n      actions: actionCreators,\n      getParam: createParamGetter(childRoute),\n    };\n    return children[childKey];\n  } else {\n    const childSubscriber = getChildEventSubscriber(\n      navigation.addListener,\n      childKey\n    );\n\n    children[childKey] = {\n      ...actionHelpers,\n\n      state: childRoute,\n      router: childRouter,\n      actions: actionCreators,\n      getParam: createParamGetter(childRoute),\n\n      getChildNavigation: grandChildKey =>\n        getChildNavigation(children[childKey], grandChildKey, () => {\n          const nav = getCurrentParentNavigation();\n          return nav && nav.getChildNavigation(childKey);\n        }),\n\n      isFocused: () => {\n        const currentNavigation = getCurrentParentNavigation();\n        if (!currentNavigation) {\n          return false;\n        }\n        const { routes, index } = currentNavigation.state;\n        if (!currentNavigation.isFocused()) {\n          return false;\n        }\n        if (routes[index].key === childKey) {\n          return true;\n        }\n        return false;\n      },\n      isFirstRouteInParent: () => isFirstRouteInParent,\n      dispatch: navigation.dispatch,\n      getScreenProps: navigation.getScreenProps,\n      dangerouslyGetParent: getCurrentParentNavigation,\n      addListener: childSubscriber.addListener,\n      emit: childSubscriber.emit,\n    };\n    return children[childKey];\n  }\n}\n\nexport default getChildNavigation;\n"]},"metadata":{},"sourceType":"script"}