import getNavigationActionCreators from './routers/getNavigationActionCreators';
import getChildNavigation from './getChildNavigation';
import getChildrenNavigationCache from './getChildrenNavigationCache';
export default function getNavigation(router, state, dispatch, actionSubscribers, getScreenProps, getCurrentNavigation) {
  const actions = router.getActionCreators(state, null);
  const navigation = {
    actions,
    router,
    state,
    dispatch,
    getScreenProps,
    getChildNavigation: childKey => getChildNavigation(navigation, childKey, getCurrentNavigation),
    isFocused: childKey => {
      const {
        routes,
        index
      } = getCurrentNavigation().state;

      if (childKey == null || routes[index].key === childKey) {
        return true;
      }

      return false;
    },
    addListener: (eventName, handler) => {
      if (eventName !== 'action') {
        return {
          remove: () => {}
        };
      }

      actionSubscribers.add(handler);
      return {
        remove: () => {
          actionSubscribers.delete(handler);
        }
      };
    },
    dangerouslyGetParent: () => null,
    isFirstRouteInParent: () => true,
    _childrenNavigation: getChildrenNavigationCache(getCurrentNavigation())
  };
  const actionCreators = { ...getNavigationActionCreators(navigation.state),
    ...actions
  };
  Object.keys(actionCreators).forEach(actionName => {
    navigation[actionName] = (...args) => navigation.dispatch(actionCreators[actionName](...args));
  });
  return navigation;
}
//# sourceMappingURL=getNavigation.js.map