UNPKG

6.93 kBSource Map (JSON)View Raw
1{"version":3,"names":["React","EnsureSingleNavigator","NavigationStateContext","StaticContainer","useOptionsGetters","SceneView","screen","route","navigation","routeState","getState","setState","options","clearOptions","navigatorKeyRef","useRef","getKey","useCallback","current","addOptionsGetter","key","setKey","getCurrentState","state","currentRoute","routes","find","r","undefined","setCurrentState","child","map","isInitialRef","useEffect","getIsInitial","context","useMemo","ScreenComponent","getComponent","component","name","children"],"sources":["SceneView.tsx"],"sourcesContent":["import type {\n NavigationState,\n ParamListBase,\n PartialState,\n Route,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport EnsureSingleNavigator from './EnsureSingleNavigator';\nimport NavigationStateContext from './NavigationStateContext';\nimport StaticContainer from './StaticContainer';\nimport type { NavigationProp, RouteConfigComponent } from './types';\nimport useOptionsGetters from './useOptionsGetters';\n\ntype Props<State extends NavigationState, ScreenOptions extends {}> = {\n screen: RouteConfigComponent<ParamListBase, string> & { name: string };\n navigation: NavigationProp<\n ParamListBase,\n string,\n string | undefined,\n State,\n ScreenOptions\n >;\n route: Route<string>;\n routeState: NavigationState | PartialState<NavigationState> | undefined;\n getState: () => State;\n setState: (state: State) => void;\n options: object;\n clearOptions: () => void;\n};\n\n/**\n * Component which takes care of rendering the screen for a route.\n * It provides all required contexts and applies optimizations when applicable.\n */\nexport default function SceneView<\n State extends NavigationState,\n ScreenOptions extends {}\n>({\n screen,\n route,\n navigation,\n routeState,\n getState,\n setState,\n options,\n clearOptions,\n}: Props<State, ScreenOptions>) {\n const navigatorKeyRef = React.useRef<string | undefined>();\n const getKey = React.useCallback(() => navigatorKeyRef.current, []);\n\n const { addOptionsGetter } = useOptionsGetters({\n key: route.key,\n options,\n navigation,\n });\n\n const setKey = React.useCallback((key: string) => {\n navigatorKeyRef.current = key;\n }, []);\n\n const getCurrentState = React.useCallback(() => {\n const state = getState();\n const currentRoute = state.routes.find((r) => r.key === route.key);\n\n return currentRoute ? currentRoute.state : undefined;\n }, [getState, route.key]);\n\n const setCurrentState = React.useCallback(\n (child: NavigationState | PartialState<NavigationState> | undefined) => {\n const state = getState();\n\n setState({\n ...state,\n routes: state.routes.map((r) =>\n r.key === route.key ? { ...r, state: child } : r\n ),\n });\n },\n [getState, route.key, setState]\n );\n\n const isInitialRef = React.useRef(true);\n\n React.useEffect(() => {\n isInitialRef.current = false;\n });\n\n // Clear options set by this screen when it is unmounted\n React.useEffect(() => {\n return clearOptions;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const getIsInitial = React.useCallback(() => isInitialRef.current, []);\n\n const context = React.useMemo(\n () => ({\n state: routeState,\n getState: getCurrentState,\n setState: setCurrentState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n }),\n [\n routeState,\n getCurrentState,\n setCurrentState,\n getKey,\n setKey,\n getIsInitial,\n addOptionsGetter,\n ]\n );\n\n const ScreenComponent = screen.getComponent\n ? screen.getComponent()\n : screen.component;\n\n return (\n <NavigationStateContext.Provider value={context}>\n <EnsureSingleNavigator>\n <StaticContainer\n name={screen.name}\n render={ScreenComponent || screen.children}\n navigation={navigation}\n route={route}\n >\n {ScreenComponent !== undefined ? (\n <ScreenComponent navigation={navigation} route={route} />\n ) : screen.children !== undefined ? (\n screen.children({ navigation, route })\n ) : null}\n </StaticContainer>\n </EnsureSingleNavigator>\n </NavigationStateContext.Provider>\n );\n}\n"],"mappings":"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"}
\No newline at end of file