UNPKG

26.1 kBSource Map (JSON)View Raw
1{"version":3,"names":["serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","React","forwardRef","ref","initialState","onStateChange","onUnhandledAction","independent","children","parent","useContext","NavigationStateContext","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","useSyncState","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","useChildListeners","keyedListeners","addKeyedListener","useKeyedChildListeners","dispatch","action","focus","console","error","NOT_INITIALIZED_ERROR","navigation","canGoBack","result","handled","resetRoot","target","root","CommonActions","reset","getRootState","getCurrentRoute","findFocusedRoute","emitter","useEventEmitter","addOptionsGetter","getCurrentOptions","useOptionsGetters","useMemo","Object","keys","reduce","acc","name","create","isFocused","getParent","stateRef","isReady","useImperativeHandle","onDispatchAction","noop","emit","type","data","stack","stackRef","lastEmittedOptionsRef","onOptionsChange","options","builderContext","scheduleContext","isInitialRef","getIsInitial","context","onStateChangeRef","useEffect","hydratedState","process","env","NODE_ENV","serializableResult","checkSerializable","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","checkDuplicateRouteNames","locations","join","defaultOnUnhandledAction","payload","element"],"sources":["BaseNavigationContainer.tsx"],"sourcesContent":["import {\n CommonActions,\n InitialState,\n NavigationAction,\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport checkDuplicateRouteNames from './checkDuplicateRouteNames';\nimport checkSerializable from './checkSerializable';\nimport { NOT_INITIALIZED_ERROR } from './createNavigationContainerRef';\nimport EnsureSingleNavigator from './EnsureSingleNavigator';\nimport findFocusedRoute from './findFocusedRoute';\nimport NavigationBuilderContext from './NavigationBuilderContext';\nimport NavigationContainerRefContext from './NavigationContainerRefContext';\nimport NavigationContext from './NavigationContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport NavigationStateContext from './NavigationStateContext';\nimport type {\n NavigationContainerEventMap,\n NavigationContainerProps,\n NavigationContainerRef,\n} from './types';\nimport UnhandledActionContext from './UnhandledActionContext';\nimport useChildListeners from './useChildListeners';\nimport useEventEmitter from './useEventEmitter';\nimport useKeyedChildListeners from './useKeyedChildListeners';\nimport useOptionsGetters from './useOptionsGetters';\nimport { ScheduleUpdateContext } from './useScheduleUpdate';\nimport useSyncState from './useSyncState';\n\ntype State = NavigationState | PartialState<NavigationState> | undefined;\n\nconst serializableWarnings: string[] = [];\nconst duplicateNameWarnings: string[] = [];\n\n/**\n * Remove `key` and `routeNames` from the state objects recursively to get partial state.\n *\n * @param state Initial state object.\n */\nconst getPartialState = (\n state: InitialState | undefined\n): PartialState<NavigationState> | undefined => {\n if (state === undefined) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, routeNames, ...partialState } = state;\n\n return {\n ...partialState,\n stale: true,\n routes: state.routes.map((route) => {\n if (route.state === undefined) {\n return route as Route<string> & {\n state?: PartialState<NavigationState>;\n };\n }\n\n return { ...route, state: getPartialState(route.state) };\n }),\n };\n};\n\n/**\n * Container component which holds the navigation state.\n * This should be rendered at the root wrapping the whole app.\n *\n * @param props.initialState Initial state object for the navigation tree.\n * @param props.onStateChange Callback which is called with the latest navigation state when it changes.\n * @param props.children Child elements to render the content.\n * @param props.ref Ref object which refers to the navigation object containing helper methods.\n */\nconst BaseNavigationContainer = React.forwardRef(\n function BaseNavigationContainer(\n {\n initialState,\n onStateChange,\n onUnhandledAction,\n independent,\n children,\n }: NavigationContainerProps,\n ref?: React.Ref<NavigationContainerRef<ParamListBase>>\n ) {\n const parent = React.useContext(NavigationStateContext);\n\n if (!parent.isDefault && !independent) {\n throw new Error(\n \"Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.\"\n );\n }\n\n const [state, getState, setState, scheduleUpdate, flushUpdates] =\n useSyncState<State>(() =>\n getPartialState(initialState == null ? undefined : initialState)\n );\n\n const isFirstMountRef = React.useRef<boolean>(true);\n\n const navigatorKeyRef = React.useRef<string | undefined>();\n\n const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n\n const setKey = React.useCallback((key: string) => {\n navigatorKeyRef.current = key;\n }, []);\n\n const { listeners, addListener } = useChildListeners();\n\n const { keyedListeners, addKeyedListener } = useKeyedChildListeners();\n\n const dispatch = React.useCallback(\n (\n action:\n | NavigationAction\n | ((state: NavigationState) => NavigationAction)\n ) => {\n if (listeners.focus[0] == null) {\n console.error(NOT_INITIALIZED_ERROR);\n } else {\n listeners.focus[0]((navigation) => navigation.dispatch(action));\n }\n },\n [listeners.focus]\n );\n\n const canGoBack = React.useCallback(() => {\n if (listeners.focus[0] == null) {\n return false;\n }\n\n const { result, handled } = listeners.focus[0]((navigation) =>\n navigation.canGoBack()\n );\n\n if (handled) {\n return result;\n } else {\n return false;\n }\n }, [listeners.focus]);\n\n const resetRoot = React.useCallback(\n (state?: PartialState<NavigationState> | NavigationState) => {\n const target = state?.key ?? keyedListeners.getState.root?.().key;\n\n if (target == null) {\n console.error(NOT_INITIALIZED_ERROR);\n } else {\n listeners.focus[0]((navigation) =>\n navigation.dispatch({\n ...CommonActions.reset(state),\n target,\n })\n );\n }\n },\n [keyedListeners.getState, listeners.focus]\n );\n\n const getRootState = React.useCallback(() => {\n return keyedListeners.getState.root?.();\n }, [keyedListeners.getState]);\n\n const getCurrentRoute = React.useCallback(() => {\n const state = getRootState();\n\n if (state == null) {\n return undefined;\n }\n\n const route = findFocusedRoute(state);\n\n return route as Route<string> | undefined;\n }, [getRootState]);\n\n const emitter = useEventEmitter<NavigationContainerEventMap>();\n\n const { addOptionsGetter, getCurrentOptions } = useOptionsGetters({});\n\n const navigation: NavigationContainerRef<ParamListBase> = React.useMemo(\n () => ({\n ...Object.keys(CommonActions).reduce<any>((acc, name) => {\n acc[name] = (...args: any[]) =>\n // @ts-expect-error: this is ok\n dispatch(CommonActions[name](...args));\n return acc;\n }, {}),\n ...emitter.create('root'),\n dispatch,\n resetRoot,\n isFocused: () => true,\n canGoBack,\n getParent: () => undefined,\n getState: () => stateRef.current,\n getRootState,\n getCurrentRoute,\n getCurrentOptions,\n isReady: () => listeners.focus[0] != null,\n }),\n [\n canGoBack,\n dispatch,\n emitter,\n getCurrentOptions,\n getCurrentRoute,\n getRootState,\n listeners.focus,\n resetRoot,\n ]\n );\n\n React.useImperativeHandle(ref, () => navigation, [navigation]);\n\n const onDispatchAction = React.useCallback(\n (action: NavigationAction, noop: boolean) => {\n emitter.emit({\n type: '__unsafe_action__',\n data: { action, noop, stack: stackRef.current },\n });\n },\n [emitter]\n );\n\n const lastEmittedOptionsRef = React.useRef<object | undefined>();\n\n const onOptionsChange = React.useCallback(\n (options: object) => {\n if (lastEmittedOptionsRef.current === options) {\n return;\n }\n\n lastEmittedOptionsRef.current = options;\n\n emitter.emit({\n type: 'options',\n data: { options },\n });\n },\n [emitter]\n );\n\n const stackRef = React.useRef<string | undefined>();\n\n const builderContext = React.useMemo(\n () => ({\n addListener,\n addKeyedListener,\n onDispatchAction,\n onOptionsChange,\n stackRef,\n }),\n [addListener, addKeyedListener, onDispatchAction, onOptionsChange]\n );\n\n const scheduleContext = React.useMemo(\n () => ({ scheduleUpdate, flushUpdates }),\n [scheduleUpdate, flushUpdates]\n );\n\n const isInitialRef = React.useRef(true);\n\n const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n\n const context = React.useMemo(\n () => ({\n state,\n getState,\n setState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n }),\n [\n state,\n getState,\n setState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n ]\n );\n\n const onStateChangeRef = React.useRef(onStateChange);\n const stateRef = React.useRef(state);\n\n React.useEffect(() => {\n isInitialRef.current = false;\n onStateChangeRef.current = onStateChange;\n stateRef.current = state;\n });\n\n React.useEffect(() => {\n const hydratedState = getRootState();\n\n if (process.env.NODE_ENV !== 'production') {\n if (hydratedState !== undefined) {\n const serializableResult = checkSerializable(hydratedState);\n\n if (!serializableResult.serializable) {\n const { location, reason } = serializableResult;\n\n let path = '';\n let pointer: Record<any, any> = hydratedState;\n let params = false;\n\n for (let i = 0; i < location.length; i++) {\n const curr = location[i];\n const prev = location[i - 1];\n\n pointer = pointer[curr];\n\n if (!params && curr === 'state') {\n continue;\n } else if (!params && curr === 'routes') {\n if (path) {\n path += ' > ';\n }\n } else if (\n !params &&\n typeof curr === 'number' &&\n prev === 'routes'\n ) {\n path += pointer?.name;\n } else if (!params) {\n path += ` > ${curr}`;\n params = true;\n } else {\n if (typeof curr === 'number' || /^[0-9]+$/.test(curr)) {\n path += `[${curr}]`;\n } else if (/^[a-z$_]+$/i.test(curr)) {\n path += `.${curr}`;\n } else {\n path += `[${JSON.stringify(curr)}]`;\n }\n }\n }\n\n const message = `Non-serializable values were found in the navigation state. Check:\\n\\n${path} (${reason})\\n\\nThis can break usage such as persisting and restoring state. This might happen if you passed non-serializable values such as function, class instances etc. in params. If you need to use components with callbacks in your options, you can use 'navigation.setOptions' instead. See https://reactnavigation.org/docs/troubleshooting#i-get-the-warning-non-serializable-values-were-found-in-the-navigation-state for more details.`;\n\n if (!serializableWarnings.includes(message)) {\n serializableWarnings.push(message);\n console.warn(message);\n }\n }\n\n const duplicateRouteNamesResult =\n checkDuplicateRouteNames(hydratedState);\n\n if (duplicateRouteNamesResult.length) {\n const message = `Found screens with the same name nested inside one another. Check:\\n${duplicateRouteNamesResult.map(\n (locations) => `\\n${locations.join(', ')}`\n )}\\n\\nThis can cause confusing behavior during navigation. Consider using unique names for each screen instead.`;\n\n if (!duplicateNameWarnings.includes(message)) {\n duplicateNameWarnings.push(message);\n console.warn(message);\n }\n }\n }\n }\n\n emitter.emit({ type: 'state', data: { state } });\n\n if (!isFirstMountRef.current && onStateChangeRef.current) {\n onStateChangeRef.current(hydratedState);\n }\n\n isFirstMountRef.current = false;\n }, [getRootState, emitter, state]);\n\n const defaultOnUnhandledAction = React.useCallback(\n (action: NavigationAction) => {\n if (process.env.NODE_ENV === 'production') {\n return;\n }\n\n const payload: Record<string, any> | undefined = action.payload;\n\n let message = `The action '${action.type}'${\n payload ? ` with payload ${JSON.stringify(action.payload)}` : ''\n } was not handled by any navigator.`;\n\n switch (action.type) {\n case 'NAVIGATE':\n case 'PUSH':\n case 'REPLACE':\n case 'JUMP_TO':\n if (payload?.name) {\n message += `\\n\\nDo you have a screen named '${payload.name}'?\\n\\nIf you're trying to navigate to a screen in a nested navigator, see https://reactnavigation.org/docs/nesting-navigators#navigating-to-a-screen-in-a-nested-navigator.`;\n } else {\n message += `\\n\\nYou need to pass the name of the screen to navigate to.\\n\\nSee https://reactnavigation.org/docs/navigation-actions for usage.`;\n }\n\n break;\n case 'GO_BACK':\n case 'POP':\n case 'POP_TO_TOP':\n message += `\\n\\nIs there any screen to go back to?`;\n break;\n case 'OPEN_DRAWER':\n case 'CLOSE_DRAWER':\n case 'TOGGLE_DRAWER':\n message += `\\n\\nIs your screen inside a Drawer navigator?`;\n break;\n }\n\n message += `\\n\\nThis is a development-only warning and won't be shown in production.`;\n\n console.error(message);\n },\n []\n );\n\n let element = (\n <NavigationContainerRefContext.Provider value={navigation}>\n <ScheduleUpdateContext.Provider value={scheduleContext}>\n <NavigationBuilderContext.Provider value={builderContext}>\n <NavigationStateContext.Provider value={context}>\n <UnhandledActionContext.Provider\n value={onUnhandledAction ?? defaultOnUnhandledAction}\n >\n <EnsureSingleNavigator>{children}</EnsureSingleNavigator>\n </UnhandledActionContext.Provider>\n </NavigationStateContext.Provider>\n </NavigationBuilderContext.Provider>\n </ScheduleUpdateContext.Provider>\n </NavigationContainerRefContext.Provider>\n );\n\n if (independent) {\n // We need to clear any existing contexts for nested independent container to work correctly\n element = (\n <NavigationRouteContext.Provider value={undefined}>\n <NavigationContext.Provider value={undefined}>\n {element}\n </NavigationContext.Provider>\n </NavigationRouteContext.Provider>\n );\n }\n\n return element;\n }\n);\n\nexport default BaseNavigationContainer;\n"],"mappings":"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"}
\No newline at end of file