{"ast":null,"code":"\"use strict\";\n\nimport { CommonActions } from '@react-navigation/routers';\nimport * as React from 'react';\nimport { NavigationContext } from \"./NavigationContext.js\";\nimport { PrivateValueStore } from \"./types.js\";\nimport { UnhandledActionContext } from \"./UnhandledActionContext.js\";\nPrivateValueStore;\nexport function useNavigationHelpers({\n  id: navigatorId,\n  onAction,\n  getState,\n  emitter,\n  router,\n  stateRef\n}) {\n  const onUnhandledAction = React.useContext(UnhandledActionContext);\n  const parentNavigationHelpers = React.useContext(NavigationContext);\n  return React.useMemo(() => {\n    const dispatch = op => {\n      const action = typeof op === 'function' ? op(getState()) : op;\n      const handled = onAction(action);\n      if (!handled) {\n        onUnhandledAction?.(action);\n      }\n    };\n    const actions = Object.assign({}, router.actionCreators, CommonActions);\n    const helpers = Object.keys(actions).reduce((acc, name) => {\n      acc[name] = (...args) => dispatch(actions[name](...args));\n      return acc;\n    }, {});\n    const navigationHelpers = Object.assign({}, parentNavigationHelpers, helpers, {\n      dispatch,\n      emit: emitter.emit,\n      isFocused: parentNavigationHelpers ? parentNavigationHelpers.isFocused : () => true,\n      canGoBack: () => {\n        const state = getState();\n        return router.getStateForAction(state, CommonActions.goBack(), {\n          routeNames: state.routeNames,\n          routeParamList: {},\n          routeGetIdList: {}\n        }) !== null || parentNavigationHelpers?.canGoBack() || false;\n      },\n      getId: () => navigatorId,\n      getParent: id => {\n        if (id !== undefined) {\n          let current = navigationHelpers;\n          while (current && id !== current.getId()) {\n            current = current.getParent();\n          }\n          return current;\n        }\n        return parentNavigationHelpers;\n      },\n      getState: () => {\n        if (stateRef.current != null) {\n          return stateRef.current;\n        }\n        return getState();\n      }\n    });\n    return navigationHelpers;\n  }, [router, parentNavigationHelpers, emitter.emit, getState, onAction, onUnhandledAction, navigatorId, stateRef]);\n}","map":{"version":3,"names":["CommonActions","React","NavigationContext","PrivateValueStore","UnhandledActionContext","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","stateRef","onUnhandledAction","useContext","parentNavigationHelpers","useMemo","dispatch","op","action","handled","actions","Object","assign","actionCreators","helpers","keys","reduce","acc","name","args","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/useNavigationHelpers.tsx"],"sourcesContent":["import {\n  CommonActions,\n  type NavigationAction,\n  type NavigationState,\n  type ParamListBase,\n  type Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport { NavigationContext } from './NavigationContext';\nimport { type NavigationHelpers, PrivateValueStore } from './types';\nimport { UnhandledActionContext } from './UnhandledActionContext';\nimport type { NavigationEventEmitter } from './useEventEmitter';\n\n// This is to make TypeScript compiler happy\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\nPrivateValueStore;\n\ntype Options<State extends NavigationState, Action extends NavigationAction> = {\n  id: string | undefined;\n  onAction: (action: NavigationAction) => boolean;\n  getState: () => State;\n  emitter: NavigationEventEmitter<any>;\n  router: Router<State, Action>;\n  stateRef: React.RefObject<State | null>;\n};\n\n/**\n * Navigation object with helper methods to be used by a navigator.\n * This object includes methods for common actions as well as methods the parent screen's navigation object.\n */\nexport function useNavigationHelpers<\n  State extends NavigationState,\n  ActionHelpers extends Record<string, () => void>,\n  Action extends NavigationAction,\n  EventMap extends Record<string, any>,\n>({\n  id: navigatorId,\n  onAction,\n  getState,\n  emitter,\n  router,\n  stateRef,\n}: Options<State, Action>) {\n  const onUnhandledAction = React.useContext(UnhandledActionContext);\n  const parentNavigationHelpers = React.useContext(NavigationContext);\n\n  return React.useMemo(() => {\n    const dispatch = (op: Action | ((state: State) => Action)) => {\n      const action = typeof op === 'function' ? op(getState()) : op;\n\n      const handled = onAction(action);\n\n      if (!handled) {\n        onUnhandledAction?.(action);\n      }\n    };\n\n    const actions = {\n      ...router.actionCreators,\n      ...CommonActions,\n    };\n\n    const helpers = Object.keys(actions).reduce((acc, name) => {\n      // @ts-expect-error: name is a valid key, but TypeScript is dumb\n      acc[name] = (...args: any) => dispatch(actions[name](...args));\n      return acc;\n    }, {} as ActionHelpers);\n\n    const navigationHelpers = {\n      ...parentNavigationHelpers,\n      ...helpers,\n      dispatch,\n      emit: emitter.emit,\n      isFocused: parentNavigationHelpers\n        ? parentNavigationHelpers.isFocused\n        : () => true,\n      canGoBack: () => {\n        const state = getState();\n\n        return (\n          router.getStateForAction(state, CommonActions.goBack() as Action, {\n            routeNames: state.routeNames,\n            routeParamList: {},\n            routeGetIdList: {},\n          }) !== null ||\n          parentNavigationHelpers?.canGoBack() ||\n          false\n        );\n      },\n      getId: () => navigatorId,\n      getParent: (id?: string) => {\n        if (id !== undefined) {\n          let current = navigationHelpers;\n\n          while (current && id !== current.getId()) {\n            current = current.getParent();\n          }\n\n          return current;\n        }\n\n        return parentNavigationHelpers;\n      },\n      getState: (): State => {\n        // FIXME: Workaround for when the state is read during render\n        // By this time, we haven't committed the new state yet\n        // Without this `useSyncExternalStore` will keep reading the old state\n        // This may result in `useNavigationState` or `useIsFocused` returning wrong values\n        // Apart from `useSyncExternalStore`, `getState` should never be called during render\n        if (stateRef.current != null) {\n          return stateRef.current;\n        }\n\n        return getState();\n      },\n    } as NavigationHelpers<ParamListBase, EventMap> & ActionHelpers;\n\n    return navigationHelpers;\n  }, [\n    router,\n    parentNavigationHelpers,\n    emitter.emit,\n    getState,\n    onAction,\n    onUnhandledAction,\n    navigatorId,\n    stateRef,\n  ]);\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}