@react-navigation/core 6.0.3 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/BaseNavigationContainer.js +13 -9
- package/lib/commonjs/BaseNavigationContainer.js.map +1 -1
- package/lib/commonjs/CurrentRenderContext.js.map +1 -1
- package/lib/commonjs/EnsureSingleNavigator.js +5 -4
- package/lib/commonjs/EnsureSingleNavigator.js.map +1 -1
- package/lib/commonjs/NavigationContainerRefContext.js.map +1 -1
- package/lib/commonjs/NavigationContext.js.map +1 -1
- package/lib/commonjs/NavigationHelpersContext.js.map +1 -1
- package/lib/commonjs/NavigationRouteContext.js.map +1 -1
- package/lib/commonjs/SceneView.js +11 -10
- package/lib/commonjs/SceneView.js.map +1 -1
- package/lib/commonjs/UnhandledActionContext.js.map +1 -1
- package/lib/commonjs/createNavigationContainerRef.js +11 -6
- package/lib/commonjs/createNavigationContainerRef.js.map +1 -1
- package/lib/commonjs/fromEntries.js +3 -1
- package/lib/commonjs/fromEntries.js.map +1 -1
- package/lib/commonjs/getActionFromState.js +2 -1
- package/lib/commonjs/getActionFromState.js.map +1 -1
- package/lib/commonjs/getPathFromState.js +13 -3
- package/lib/commonjs/getPathFromState.js.map +1 -1
- package/lib/commonjs/getStateFromPath.js +12 -2
- package/lib/commonjs/getStateFromPath.js.map +1 -1
- package/lib/commonjs/index.js +24 -24
- package/lib/commonjs/isArrayEqual.js +9 -1
- package/lib/commonjs/isArrayEqual.js.map +1 -1
- package/lib/commonjs/isRecordEqual.js +25 -0
- package/lib/commonjs/isRecordEqual.js.map +1 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useChildListeners.js.map +1 -1
- package/lib/commonjs/useCurrentRender.js +6 -5
- package/lib/commonjs/useCurrentRender.js.map +1 -1
- package/lib/commonjs/useDescriptors.js +18 -17
- package/lib/commonjs/useDescriptors.js.map +1 -1
- package/lib/commonjs/useEventEmitter.js +7 -6
- package/lib/commonjs/useEventEmitter.js.map +1 -1
- package/lib/commonjs/useFocusEvents.js +5 -4
- package/lib/commonjs/useFocusEvents.js.map +1 -1
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js +5 -4
- package/lib/commonjs/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/commonjs/useKeyedChildListeners.js.map +1 -1
- package/lib/commonjs/useNavigationBuilder.js +52 -20
- package/lib/commonjs/useNavigationBuilder.js.map +1 -1
- package/lib/commonjs/useNavigationCache.js +26 -10
- package/lib/commonjs/useNavigationCache.js.map +1 -1
- package/lib/commonjs/useNavigationHelpers.js +32 -10
- package/lib/commonjs/useNavigationHelpers.js.map +1 -1
- package/lib/commonjs/useOnAction.js +13 -11
- package/lib/commonjs/useOnAction.js.map +1 -1
- package/lib/commonjs/useOnGetState.js +5 -4
- package/lib/commonjs/useOnGetState.js.map +1 -1
- package/lib/commonjs/useOnPreventRemove.js +6 -5
- package/lib/commonjs/useOnPreventRemove.js.map +1 -1
- package/lib/commonjs/useOnRouteFocus.js +7 -6
- package/lib/commonjs/useOnRouteFocus.js.map +1 -1
- package/lib/commonjs/useOptionsGetters.js +6 -5
- package/lib/commonjs/useOptionsGetters.js.map +1 -1
- package/lib/commonjs/useRouteCache.js +1 -1
- package/lib/commonjs/useScheduleUpdate.js +1 -1
- package/lib/commonjs/validatePathConfig.js +5 -2
- package/lib/commonjs/validatePathConfig.js.map +1 -1
- package/lib/module/BaseNavigationContainer.js +13 -9
- package/lib/module/BaseNavigationContainer.js.map +1 -1
- package/lib/module/CurrentRenderContext.js.map +1 -1
- package/lib/module/EnsureSingleNavigator.js +4 -3
- package/lib/module/EnsureSingleNavigator.js.map +1 -1
- package/lib/module/NavigationContainerRefContext.js.map +1 -1
- package/lib/module/NavigationContext.js.map +1 -1
- package/lib/module/NavigationHelpersContext.js.map +1 -1
- package/lib/module/NavigationRouteContext.js.map +1 -1
- package/lib/module/SceneView.js +11 -10
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/UnhandledActionContext.js.map +1 -1
- package/lib/module/createNavigationContainerRef.js +10 -5
- package/lib/module/createNavigationContainerRef.js.map +1 -1
- package/lib/module/fromEntries.js +3 -1
- package/lib/module/fromEntries.js.map +1 -1
- package/lib/module/getActionFromState.js +2 -1
- package/lib/module/getActionFromState.js.map +1 -1
- package/lib/module/getPathFromState.js +13 -3
- package/lib/module/getPathFromState.js.map +1 -1
- package/lib/module/getStateFromPath.js +12 -2
- package/lib/module/getStateFromPath.js.map +1 -1
- package/lib/module/isArrayEqual.js +9 -1
- package/lib/module/isArrayEqual.js.map +1 -1
- package/lib/module/isRecordEqual.js +18 -0
- package/lib/module/isRecordEqual.js.map +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/useChildListeners.js.map +1 -1
- package/lib/module/useCurrentRender.js +6 -5
- package/lib/module/useCurrentRender.js.map +1 -1
- package/lib/module/useDescriptors.js +18 -17
- package/lib/module/useDescriptors.js.map +1 -1
- package/lib/module/useEventEmitter.js +7 -6
- package/lib/module/useEventEmitter.js.map +1 -1
- package/lib/module/useFocusEvents.js +5 -4
- package/lib/module/useFocusEvents.js.map +1 -1
- package/lib/module/useFocusedListenersChildrenAdapter.js +5 -4
- package/lib/module/useFocusedListenersChildrenAdapter.js.map +1 -1
- package/lib/module/useKeyedChildListeners.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +51 -20
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useNavigationCache.js +26 -10
- package/lib/module/useNavigationCache.js.map +1 -1
- package/lib/module/useNavigationHelpers.js +32 -10
- package/lib/module/useNavigationHelpers.js.map +1 -1
- package/lib/module/useOnAction.js +13 -11
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/module/useOnGetState.js +5 -4
- package/lib/module/useOnGetState.js.map +1 -1
- package/lib/module/useOnPreventRemove.js +6 -5
- package/lib/module/useOnPreventRemove.js.map +1 -1
- package/lib/module/useOnRouteFocus.js +7 -6
- package/lib/module/useOnRouteFocus.js.map +1 -1
- package/lib/module/useOptionsGetters.js +6 -5
- package/lib/module/useOptionsGetters.js.map +1 -1
- package/lib/module/validatePathConfig.js +5 -2
- package/lib/module/validatePathConfig.js.map +1 -1
- package/lib/typescript/src/NavigationContext.d.ts +1 -1
- package/lib/typescript/src/SceneView.d.ts +1 -1
- package/lib/typescript/src/isRecordEqual.d.ts +4 -0
- package/lib/typescript/src/types.d.ts +50 -18
- package/lib/typescript/src/useDescriptors.d.ts +13 -10
- package/lib/typescript/src/useNavigationBuilder.d.ts +12 -73
- package/lib/typescript/src/useNavigationCache.d.ts +1 -1
- package/lib/typescript/src/useNavigationHelpers.d.ts +7 -69
- package/package.json +5 -5
- package/src/CurrentRenderContext.tsx +3 -2
- package/src/EnsureSingleNavigator.tsx +7 -8
- package/src/NavigationContainerRefContext.tsx +3 -4
- package/src/NavigationContext.tsx +3 -2
- package/src/NavigationHelpersContext.tsx +3 -2
- package/src/NavigationRouteContext.tsx +3 -2
- package/src/SceneView.tsx +7 -1
- package/src/UnhandledActionContext.tsx +3 -4
- package/src/createNavigationContainerRef.tsx +3 -1
- package/src/isArrayEqual.tsx +9 -1
- package/src/isRecordEqual.tsx +20 -0
- package/src/types.tsx +70 -21
- package/src/useChildListeners.tsx +3 -5
- package/src/useDescriptors.tsx +16 -8
- package/src/useKeyedChildListeners.tsx +6 -8
- package/src/useNavigationBuilder.tsx +90 -27
- package/src/useNavigationCache.tsx +17 -1
- package/src/useNavigationHelpers.tsx +39 -15
|
@@ -29,12 +29,14 @@ _types.PrivateValueStore;
|
|
|
29
29
|
* Navigation object with helper methods to be used by a navigator.
|
|
30
30
|
* This object includes methods for common actions as well as methods the parent screen's navigation object.
|
|
31
31
|
*/
|
|
32
|
-
function useNavigationHelpers({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
function useNavigationHelpers(_ref) {
|
|
33
|
+
let {
|
|
34
|
+
id: navigatorId,
|
|
35
|
+
onAction,
|
|
36
|
+
getState,
|
|
37
|
+
emitter,
|
|
38
|
+
router
|
|
39
|
+
} = _ref;
|
|
38
40
|
const onUnhandledAction = React.useContext(_UnhandledActionContext.default);
|
|
39
41
|
const parentNavigationHelpers = React.useContext(_NavigationContext.default);
|
|
40
42
|
return React.useMemo(() => {
|
|
@@ -52,11 +54,13 @@ function useNavigationHelpers({
|
|
|
52
54
|
};
|
|
53
55
|
const helpers = Object.keys(actions).reduce((acc, name) => {
|
|
54
56
|
// @ts-expect-error: name is a valid key, but TypeScript is dumb
|
|
55
|
-
acc[name] = (
|
|
57
|
+
acc[name] = function () {
|
|
58
|
+
return dispatch(actions[name](...arguments));
|
|
59
|
+
};
|
|
56
60
|
|
|
57
61
|
return acc;
|
|
58
62
|
}, {});
|
|
59
|
-
|
|
63
|
+
const navigationHelpers = { ...parentNavigationHelpers,
|
|
60
64
|
...helpers,
|
|
61
65
|
dispatch,
|
|
62
66
|
emit: emitter.emit,
|
|
@@ -69,9 +73,27 @@ function useNavigationHelpers({
|
|
|
69
73
|
routeGetIdList: {}
|
|
70
74
|
}) !== null || (parentNavigationHelpers === null || parentNavigationHelpers === void 0 ? void 0 : parentNavigationHelpers.canGoBack()) || false;
|
|
71
75
|
},
|
|
72
|
-
|
|
76
|
+
getId: () => navigatorId,
|
|
77
|
+
getParent: id => {
|
|
78
|
+
if (id !== undefined) {
|
|
79
|
+
let current = navigationHelpers;
|
|
80
|
+
|
|
81
|
+
while (current && id !== current.getId()) {
|
|
82
|
+
current = current.getParent();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (current == null) {
|
|
86
|
+
throw new Error(`Couldn't find a parent navigator with the ID "${id}". Is this navigator nested under another navigator with this ID?`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return current;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return parentNavigationHelpers;
|
|
93
|
+
},
|
|
73
94
|
getState
|
|
74
95
|
};
|
|
75
|
-
|
|
96
|
+
return navigationHelpers;
|
|
97
|
+
}, [navigatorId, emitter.emit, getState, onAction, onUnhandledAction, parentNavigationHelpers, router]);
|
|
76
98
|
}
|
|
77
99
|
//# sourceMappingURL=useNavigationHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useNavigationHelpers.tsx"],"names":["PrivateValueStore","useNavigationHelpers","onAction","getState","emitter","router","onUnhandledAction","React","useContext","UnhandledActionContext","parentNavigationHelpers","NavigationContext","useMemo","dispatch","op","action","handled","actions","actionCreators","CommonActions","helpers","Object","keys","reduce","acc","name","
|
|
1
|
+
{"version":3,"sources":["useNavigationHelpers.tsx"],"names":["PrivateValueStore","useNavigationHelpers","id","navigatorId","onAction","getState","emitter","router","onUnhandledAction","React","useContext","UnhandledActionContext","parentNavigationHelpers","NavigationContext","useMemo","dispatch","op","action","handled","actions","actionCreators","CommonActions","helpers","Object","keys","reduce","acc","name","navigationHelpers","emit","isFocused","canGoBack","state","getStateForAction","goBack","routeNames","routeParamList","routeGetIdList","getId","getParent","undefined","current","Error"],"mappings":"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","sourcesContent":["import {\n CommonActions,\n NavigationAction,\n NavigationState,\n ParamListBase,\n Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationContext from './NavigationContext';\nimport { 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 babel/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};\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 default 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}: 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 if (current == null) {\n throw new Error(\n `Couldn't find a parent navigator with the ID \"${id}\". Is this navigator nested under another navigator with this ID?`\n );\n }\n\n return current;\n }\n\n return parentNavigationHelpers;\n },\n getState,\n } as NavigationHelpers<ParamListBase, EventMap> & ActionHelpers;\n\n return navigationHelpers;\n }, [\n navigatorId,\n emitter.emit,\n getState,\n onAction,\n onUnhandledAction,\n parentNavigationHelpers,\n router,\n ]);\n}\n"]}
|
|
@@ -26,16 +26,17 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
26
26
|
*
|
|
27
27
|
* When the action handler handles as action, it returns `true`, otherwise `false`.
|
|
28
28
|
*/
|
|
29
|
-
function useOnAction({
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
function useOnAction(_ref) {
|
|
30
|
+
let {
|
|
31
|
+
router,
|
|
32
|
+
getState,
|
|
33
|
+
setState,
|
|
34
|
+
key,
|
|
35
|
+
actionListeners,
|
|
36
|
+
beforeRemoveListeners,
|
|
37
|
+
routerConfigOptions,
|
|
38
|
+
emitter
|
|
39
|
+
} = _ref;
|
|
39
40
|
const {
|
|
40
41
|
onAction: onActionParent,
|
|
41
42
|
onRouteFocus: onRouteFocusParent,
|
|
@@ -46,7 +47,8 @@ function useOnAction({
|
|
|
46
47
|
React.useEffect(() => {
|
|
47
48
|
routerConfigOptionsRef.current = routerConfigOptions;
|
|
48
49
|
});
|
|
49
|
-
const onAction = React.useCallback((action
|
|
50
|
+
const onAction = React.useCallback(function (action) {
|
|
51
|
+
let visitedNavigators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
|
|
50
52
|
const state = getState(); // Since actions can bubble both up and down, they could come to the same navigator again
|
|
51
53
|
// We keep track of navigators which have already tried to handle the action and return if it's already visited
|
|
52
54
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOnAction.tsx"],"names":["useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","React","useContext","NavigationBuilderContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"mappings":";;;;;;;AAOA;;AAEA;;AAMA;;;;;;;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAT,
|
|
1
|
+
{"version":3,"sources":["useOnAction.tsx"],"names":["useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","React","useContext","NavigationBuilderContext","routerConfigOptionsRef","useRef","useEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"mappings":";;;;;;;AAOA;;AAEA;;AAMA;;;;;;;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAT,OASH;AAAA,MATwB;AAClCC,IAAAA,MADkC;AAElCC,IAAAA,QAFkC;AAGlCC,IAAAA,QAHkC;AAIlCC,IAAAA,GAJkC;AAKlCC,IAAAA,eALkC;AAMlCC,IAAAA,qBANkC;AAOlCC,IAAAA,mBAPkC;AAQlCC,IAAAA;AARkC,GASxB;AACV,QAAM;AACJC,IAAAA,QAAQ,EAAEC,cADN;AAEJC,IAAAA,YAAY,EAAEC,kBAFV;AAGJC,IAAAA,WAAW,EAAEC,iBAHT;AAIJC,IAAAA;AAJI,MAKFC,KAAK,CAACC,UAAN,CAAiBC,iCAAjB,CALJ;AAOA,QAAMC,sBAAsB,GAC1BH,KAAK,CAACI,MAAN,CAAkCb,mBAAlC,CADF;AAGAS,EAAAA,KAAK,CAACK,SAAN,CAAgB,MAAM;AACpBF,IAAAA,sBAAsB,CAACG,OAAvB,GAAiCf,mBAAjC;AACD,GAFD;AAIA,QAAME,QAAQ,GAAGO,KAAK,CAACO,WAAN,CACf,UACEC,MADF,EAGK;AAAA,QADHC,iBACG,uEAD8B,IAAIC,GAAJ,EAC9B;AACH,UAAMC,KAAK,GAAGzB,QAAQ,EAAtB,CADG,CAGH;AACA;;AACA,QAAIuB,iBAAiB,CAACG,GAAlB,CAAsBD,KAAK,CAACvB,GAA5B,CAAJ,EAAsC;AACpC,aAAO,KAAP;AACD;;AAEDqB,IAAAA,iBAAiB,CAACI,GAAlB,CAAsBF,KAAK,CAACvB,GAA5B;;AAEA,QAAI,OAAOoB,MAAM,CAACM,MAAd,KAAyB,QAAzB,IAAqCN,MAAM,CAACM,MAAP,KAAkBH,KAAK,CAACvB,GAAjE,EAAsE;AACpE,UAAI2B,MAAM,GAAG9B,MAAM,CAAC+B,iBAAP,CACXL,KADW,EAEXH,MAFW,EAGXL,sBAAsB,CAACG,OAHZ,CAAb,CADoE,CAOpE;AACA;;AACAS,MAAAA,MAAM,GACJA,MAAM,KAAK,IAAX,IAAmBP,MAAM,CAACM,MAAP,KAAkBH,KAAK,CAACvB,GAA3C,GAAiDuB,KAAjD,GAAyDI,MAD3D;;AAGA,UAAIA,MAAM,KAAK,IAAf,EAAqB;AACnBhB,QAAAA,gBAAgB,CAACS,MAAD,EAASG,KAAK,KAAKI,MAAnB,CAAhB;;AAEA,YAAIJ,KAAK,KAAKI,MAAd,EAAsB;AACpB,gBAAME,WAAW,GAAG,6CAClBzB,OADkB,EAElBF,qBAFkB,EAGlBqB,KAAK,CAACO,MAHY,EAIlBH,MAAM,CAACG,MAJW,EAKlBV,MALkB,CAApB;;AAQA,cAAIS,WAAJ,EAAiB;AACf,mBAAO,IAAP;AACD;;AAED9B,UAAAA,QAAQ,CAAC4B,MAAD,CAAR;AACD;;AAED,YAAInB,kBAAkB,KAAKuB,SAA3B,EAAsC;AACpC;AACA;AACA,gBAAMC,WAAW,GAAGnC,MAAM,CAACoC,uBAAP,CAA+Bb,MAA/B,CAApB;;AAEA,cAAIY,WAAW,IAAIhC,GAAG,KAAK+B,SAA3B,EAAsC;AACpCvB,YAAAA,kBAAkB,CAACR,GAAD,CAAlB;AACD;AACF;;AAED,eAAO,IAAP;AACD;AACF;;AAED,QAAIM,cAAc,KAAKyB,SAAvB,EAAkC;AAChC;AACA,UAAIzB,cAAc,CAACc,MAAD,EAASC,iBAAT,CAAlB,EAA+C;AAC7C,eAAO,IAAP;AACD;AACF,KA7DE,CA+DH;;;AACA,SAAK,IAAIa,CAAC,GAAGjC,eAAe,CAACkC,MAAhB,GAAyB,CAAtC,EAAyCD,CAAC,IAAI,CAA9C,EAAiDA,CAAC,EAAlD,EAAsD;AACpD,YAAME,QAAQ,GAAGnC,eAAe,CAACiC,CAAD,CAAhC;;AAEA,UAAIE,QAAQ,CAAChB,MAAD,EAASC,iBAAT,CAAZ,EAAyC;AACvC,eAAO,IAAP;AACD;AACF;;AAED,WAAO,KAAP;AACD,GA7Ec,EA8Ef,CACEpB,eADF,EAEEC,qBAFF,EAGEE,OAHF,EAIEN,QAJF,EAKEE,GALF,EAMEM,cANF,EAOEK,gBAPF,EAQEH,kBARF,EASEX,MATF,EAUEE,QAVF,CA9Ee,CAAjB;AA4FA,mCAAmB;AACjBD,IAAAA,QADiB;AAEjBM,IAAAA,OAFiB;AAGjBF,IAAAA;AAHiB,GAAnB;AAMAU,EAAAA,KAAK,CAACK,SAAN,CACE,MAAMP,iBAAN,aAAMA,iBAAN,uBAAMA,iBAAiB,CAAG,QAAH,EAAaL,QAAb,CADzB,EAEE,CAACK,iBAAD,EAAoBL,QAApB,CAFF;AAKA,SAAOA,QAAP;AACD","sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n PartialState,\n Router,\n RouterConfigOptions,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext, {\n ChildActionListener,\n ChildBeforeRemoveListener,\n} from './NavigationBuilderContext';\nimport type { EventMapCore } from './types';\nimport type { NavigationEventEmitter } from './useEventEmitter';\nimport useOnPreventRemove, { shouldPreventRemove } from './useOnPreventRemove';\n\ntype Options = {\n router: Router<NavigationState, NavigationAction>;\n key?: string;\n getState: () => NavigationState;\n setState: (state: NavigationState | PartialState<NavigationState>) => void;\n actionListeners: ChildActionListener[];\n beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;\n routerConfigOptions: RouterConfigOptions;\n emitter: NavigationEventEmitter<EventMapCore<any>>;\n};\n\n/**\n * Hook to handle actions for a navigator, including state updates and bubbling.\n *\n * Bubbling an action is achieved in 2 ways:\n * 1. To bubble action to parent, we expose the action handler in context and then access the parent context\n * 2. To bubble action to child, child adds event listeners subscribing to actions from parent\n *\n * When the action handler handles as action, it returns `true`, otherwise `false`.\n */\nexport default function useOnAction({\n router,\n getState,\n setState,\n key,\n actionListeners,\n beforeRemoveListeners,\n routerConfigOptions,\n emitter,\n}: Options) {\n const {\n onAction: onActionParent,\n onRouteFocus: onRouteFocusParent,\n addListener: addListenerParent,\n onDispatchAction,\n } = React.useContext(NavigationBuilderContext);\n\n const routerConfigOptionsRef =\n React.useRef<RouterConfigOptions>(routerConfigOptions);\n\n React.useEffect(() => {\n routerConfigOptionsRef.current = routerConfigOptions;\n });\n\n const onAction = React.useCallback(\n (\n action: NavigationAction,\n visitedNavigators: Set<string> = new Set<string>()\n ) => {\n const state = getState();\n\n // Since actions can bubble both up and down, they could come to the same navigator again\n // We keep track of navigators which have already tried to handle the action and return if it's already visited\n if (visitedNavigators.has(state.key)) {\n return false;\n }\n\n visitedNavigators.add(state.key);\n\n if (typeof action.target !== 'string' || action.target === state.key) {\n let result = router.getStateForAction(\n state,\n action,\n routerConfigOptionsRef.current\n );\n\n // If a target is specified and set to current navigator, the action shouldn't bubble\n // So instead of `null`, we use the state object for such cases to signal that action was handled\n result =\n result === null && action.target === state.key ? state : result;\n\n if (result !== null) {\n onDispatchAction(action, state === result);\n\n if (state !== result) {\n const isPrevented = shouldPreventRemove(\n emitter,\n beforeRemoveListeners,\n state.routes,\n result.routes,\n action\n );\n\n if (isPrevented) {\n return true;\n }\n\n setState(result);\n }\n\n if (onRouteFocusParent !== undefined) {\n // Some actions such as `NAVIGATE` also want to bring the navigated route to focus in the whole tree\n // This means we need to focus all of the parent navigators of this navigator as well\n const shouldFocus = router.shouldActionChangeFocus(action);\n\n if (shouldFocus && key !== undefined) {\n onRouteFocusParent(key);\n }\n }\n\n return true;\n }\n }\n\n if (onActionParent !== undefined) {\n // Bubble action to the parent if the current navigator didn't handle it\n if (onActionParent(action, visitedNavigators)) {\n return true;\n }\n }\n\n // If the action wasn't handled by current navigator or a parent navigator, let children handle it\n for (let i = actionListeners.length - 1; i >= 0; i--) {\n const listener = actionListeners[i];\n\n if (listener(action, visitedNavigators)) {\n return true;\n }\n }\n\n return false;\n },\n [\n actionListeners,\n beforeRemoveListeners,\n emitter,\n getState,\n key,\n onActionParent,\n onDispatchAction,\n onRouteFocusParent,\n router,\n setState,\n ]\n );\n\n useOnPreventRemove({\n getState,\n emitter,\n beforeRemoveListeners,\n });\n\n React.useEffect(\n () => addListenerParent?.('action', onAction),\n [addListenerParent, onAction]\n );\n\n return onAction;\n}\n"]}
|
|
@@ -19,10 +19,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
19
19
|
|
|
20
20
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
21
|
|
|
22
|
-
function useOnGetState({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
function useOnGetState(_ref) {
|
|
23
|
+
let {
|
|
24
|
+
getState,
|
|
25
|
+
getStateListeners
|
|
26
|
+
} = _ref;
|
|
26
27
|
const {
|
|
27
28
|
addKeyedListener
|
|
28
29
|
} = React.useContext(_NavigationBuilderContext.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOnGetState.tsx"],"names":["useOnGetState","getState","getStateListeners","addKeyedListener","React","useContext","NavigationBuilderContext","route","NavigationRouteContext","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AAGA;;;;;;;;AAOe,SAASA,aAAT,
|
|
1
|
+
{"version":3,"sources":["useOnGetState.tsx"],"names":["useOnGetState","getState","getStateListeners","addKeyedListener","React","useContext","NavigationBuilderContext","route","NavigationRouteContext","key","getRehydratedState","useCallback","state","routes","map","childState","useEffect"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AAGA;;;;;;;;AAOe,SAASA,aAAT,OAGH;AAAA,MAH0B;AACpCC,IAAAA,QADoC;AAEpCC,IAAAA;AAFoC,GAG1B;AACV,QAAM;AAAEC,IAAAA;AAAF,MAAuBC,KAAK,CAACC,UAAN,CAAiBC,iCAAjB,CAA7B;AACA,QAAMC,KAAK,GAAGH,KAAK,CAACC,UAAN,CAAiBG,+BAAjB,CAAd;AACA,QAAMC,GAAG,GAAGF,KAAK,GAAGA,KAAK,CAACE,GAAT,GAAe,MAAhC;AAEA,QAAMC,kBAAkB,GAAGN,KAAK,CAACO,WAAN,CAAkB,MAAM;AACjD,UAAMC,KAAK,GAAGX,QAAQ,EAAtB,CADiD,CAGjD;;AACA,UAAMY,MAAM,GAAGD,KAAK,CAACC,MAAN,CAAaC,GAAb,CAAkBP,KAAD,IAAW;AAAA;;AACzC,YAAMQ,UAAU,4BAAGb,iBAAiB,CAACK,KAAK,CAACE,GAAP,CAApB,0DAAG,2BAAAP,iBAAiB,CAApC;;AAEA,UAAIK,KAAK,CAACK,KAAN,KAAgBG,UAApB,EAAgC;AAC9B,eAAOR,KAAP;AACD;;AAED,aAAO,EAAE,GAAGA,KAAL;AAAYK,QAAAA,KAAK,EAAEG;AAAnB,OAAP;AACD,KARc,CAAf;;AAUA,QAAI,2BAAaH,KAAK,CAACC,MAAnB,EAA2BA,MAA3B,CAAJ,EAAwC;AACtC,aAAOD,KAAP;AACD;;AAED,WAAO,EAAE,GAAGA,KAAL;AAAYC,MAAAA;AAAZ,KAAP;AACD,GAnB0B,EAmBxB,CAACZ,QAAD,EAAWC,iBAAX,CAnBwB,CAA3B;AAqBAE,EAAAA,KAAK,CAACY,SAAN,CAAgB,MAAM;AACpB,WAAOb,gBAAP,aAAOA,gBAAP,uBAAOA,gBAAgB,CAAG,UAAH,EAAeM,GAAf,EAAoBC,kBAApB,CAAvB;AACD,GAFD,EAEG,CAACP,gBAAD,EAAmBO,kBAAnB,EAAuCD,GAAvC,CAFH;AAGD","sourcesContent":["import type { NavigationState } from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport isArrayEqual from './isArrayEqual';\nimport NavigationBuilderContext, {\n GetStateListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\n\ntype Options = {\n getState: () => NavigationState;\n getStateListeners: Record<string, GetStateListener | undefined>;\n};\n\nexport default function useOnGetState({\n getState,\n getStateListeners,\n}: Options) {\n const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n const route = React.useContext(NavigationRouteContext);\n const key = route ? route.key : 'root';\n\n const getRehydratedState = React.useCallback(() => {\n const state = getState();\n\n // Avoid returning new route objects if we don't need to\n const routes = state.routes.map((route) => {\n const childState = getStateListeners[route.key]?.();\n\n if (route.state === childState) {\n return route;\n }\n\n return { ...route, state: childState };\n });\n\n if (isArrayEqual(state.routes, routes)) {\n return state;\n }\n\n return { ...state, routes };\n }, [getState, getStateListeners]);\n\n React.useEffect(() => {\n return addKeyedListener?.('getState', key, getRehydratedState);\n }, [addKeyedListener, getRehydratedState, key]);\n}\n"]}
|
|
@@ -67,11 +67,12 @@ const shouldPreventRemove = (emitter, beforeRemoveListeners, currentRoutes, next
|
|
|
67
67
|
|
|
68
68
|
exports.shouldPreventRemove = shouldPreventRemove;
|
|
69
69
|
|
|
70
|
-
function useOnPreventRemove({
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
function useOnPreventRemove(_ref) {
|
|
71
|
+
let {
|
|
72
|
+
getState,
|
|
73
|
+
emitter,
|
|
74
|
+
beforeRemoveListeners
|
|
75
|
+
} = _ref;
|
|
75
76
|
const {
|
|
76
77
|
addKeyedListener
|
|
77
78
|
} = React.useContext(_NavigationBuilderContext.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOnPreventRemove.tsx"],"names":["VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","React","useContext","NavigationBuilderContext","NavigationRouteContext","routeKey","useEffect","state","routes"],"mappings":";;;;;;;;AAIA;;AAEA;;AAGA;;;;;;;;AAUA,MAAMA,kBAAkB,GAAGC,MAAM,CAAC,oBAAD,CAAjC;;AAEO,MAAMC,mBAAmB,GAAG,CACjCC,OADiC,EAEjCC,qBAFiC,EAGjCC,aAHiC,EAIjCC,UAJiC,EAKjCC,MALiC,KAM9B;AAAA;;AACH,QAAMC,aAAa,GAAGF,UAAU,CAACG,GAAX,CAAgBC,KAAD,IAAWA,KAAK,CAACC,GAAhC,CAAtB,CADG,CAGH;;AACA,QAAMC,aAAa,GAAGP,aAAa,CAChCQ,MADmB,CACXH,KAAD,IAAW,CAACF,aAAa,CAACM,QAAd,CAAuBJ,KAAK,CAACC,GAA7B,CADA,EAEnBI,OAFmB,EAAtB;AAIA,QAAMC,gBAA6B,GACjC;AADiC,2BAEjCT,MAAM,CAACP,kBAAD,CAF2B,yEAEH,IAAIiB,GAAJ,EAFhC;AAIA,QAAMC,kBAAkB,GAAG,EACzB,GAAGX,MADsB;AAEzB,KAACP,kBAAD,GAAsBgB;AAFG,GAA3B;;AAKA,OAAK,MAAMN,KAAX,IAAoBE,aAApB,EAAmC;AAAA;;AACjC,QAAII,gBAAgB,CAACG,GAAjB,CAAqBT,KAAK,CAACC,GAA3B,CAAJ,EAAqC;AACnC;AACA;AACD,KAJgC,CAMjC;;;AACA,UAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAP,CAAxB,0DAAG,2BAAAP,qBAAqB,EAAcc,kBAAd,CAAzC;;AAEA,QAAIE,WAAJ,EAAiB;AACf,aAAO,IAAP;AACD;;AAEDJ,IAAAA,gBAAgB,CAACK,GAAjB,CAAqBX,KAAK,CAACC,GAA3B;AAEA,UAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAR,CAAa;AACzBC,MAAAA,IAAI,EAAE,cADmB;AAEzBC,MAAAA,MAAM,EAAEf,KAAK,CAACC,GAFW;AAGzBe,MAAAA,IAAI,EAAE;AAAEnB,QAAAA,MAAM,EAAEW;AAAV,OAHmB;AAIzBS,MAAAA,iBAAiB,EAAE;AAJM,KAAb,CAAd;;AAOA,QAAIL,KAAK,CAACM,gBAAV,EAA4B;AAC1B,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,CAnDM;;;;AAqDQ,SAASC,kBAAT,
|
|
1
|
+
{"version":3,"sources":["useOnPreventRemove.tsx"],"names":["VISITED_ROUTE_KEYS","Symbol","shouldPreventRemove","emitter","beforeRemoveListeners","currentRoutes","nextRoutes","action","nextRouteKeys","map","route","key","removedRoutes","filter","includes","reverse","visitedRouteKeys","Set","beforeRemoveAction","has","isPrevented","add","event","emit","type","target","data","canPreventDefault","defaultPrevented","useOnPreventRemove","getState","addKeyedListener","React","useContext","NavigationBuilderContext","NavigationRouteContext","routeKey","useEffect","state","routes"],"mappings":";;;;;;;;AAIA;;AAEA;;AAGA;;;;;;;;AAUA,MAAMA,kBAAkB,GAAGC,MAAM,CAAC,oBAAD,CAAjC;;AAEO,MAAMC,mBAAmB,GAAG,CACjCC,OADiC,EAEjCC,qBAFiC,EAGjCC,aAHiC,EAIjCC,UAJiC,EAKjCC,MALiC,KAM9B;AAAA;;AACH,QAAMC,aAAa,GAAGF,UAAU,CAACG,GAAX,CAAgBC,KAAD,IAAWA,KAAK,CAACC,GAAhC,CAAtB,CADG,CAGH;;AACA,QAAMC,aAAa,GAAGP,aAAa,CAChCQ,MADmB,CACXH,KAAD,IAAW,CAACF,aAAa,CAACM,QAAd,CAAuBJ,KAAK,CAACC,GAA7B,CADA,EAEnBI,OAFmB,EAAtB;AAIA,QAAMC,gBAA6B,GACjC;AADiC,2BAEjCT,MAAM,CAACP,kBAAD,CAF2B,yEAEH,IAAIiB,GAAJ,EAFhC;AAIA,QAAMC,kBAAkB,GAAG,EACzB,GAAGX,MADsB;AAEzB,KAACP,kBAAD,GAAsBgB;AAFG,GAA3B;;AAKA,OAAK,MAAMN,KAAX,IAAoBE,aAApB,EAAmC;AAAA;;AACjC,QAAII,gBAAgB,CAACG,GAAjB,CAAqBT,KAAK,CAACC,GAA3B,CAAJ,EAAqC;AACnC;AACA;AACD,KAJgC,CAMjC;;;AACA,UAAMS,WAAW,4BAAGhB,qBAAqB,CAACM,KAAK,CAACC,GAAP,CAAxB,0DAAG,2BAAAP,qBAAqB,EAAcc,kBAAd,CAAzC;;AAEA,QAAIE,WAAJ,EAAiB;AACf,aAAO,IAAP;AACD;;AAEDJ,IAAAA,gBAAgB,CAACK,GAAjB,CAAqBX,KAAK,CAACC,GAA3B;AAEA,UAAMW,KAAK,GAAGnB,OAAO,CAACoB,IAAR,CAAa;AACzBC,MAAAA,IAAI,EAAE,cADmB;AAEzBC,MAAAA,MAAM,EAAEf,KAAK,CAACC,GAFW;AAGzBe,MAAAA,IAAI,EAAE;AAAEnB,QAAAA,MAAM,EAAEW;AAAV,OAHmB;AAIzBS,MAAAA,iBAAiB,EAAE;AAJM,KAAb,CAAd;;AAOA,QAAIL,KAAK,CAACM,gBAAV,EAA4B;AAC1B,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,CAnDM;;;;AAqDQ,SAASC,kBAAT,OAIH;AAAA,MAJ+B;AACzCC,IAAAA,QADyC;AAEzC3B,IAAAA,OAFyC;AAGzCC,IAAAA;AAHyC,GAI/B;AACV,QAAM;AAAE2B,IAAAA;AAAF,MAAuBC,KAAK,CAACC,UAAN,CAAiBC,iCAAjB,CAA7B;AACA,QAAMxB,KAAK,GAAGsB,KAAK,CAACC,UAAN,CAAiBE,+BAAjB,CAAd;AACA,QAAMC,QAAQ,GAAG1B,KAAH,aAAGA,KAAH,uBAAGA,KAAK,CAAEC,GAAxB;AAEAqB,EAAAA,KAAK,CAACK,SAAN,CAAgB,MAAM;AACpB,QAAID,QAAJ,EAAc;AACZ,aAAOL,gBAAP,aAAOA,gBAAP,uBAAOA,gBAAgB,CAAG,cAAH,EAAmBK,QAAnB,EAA8B7B,MAAD,IAAY;AAC9D,cAAM+B,KAAK,GAAGR,QAAQ,EAAtB;AAEA,eAAO5B,mBAAmB,CACxBC,OADwB,EAExBC,qBAFwB,EAGxBkC,KAAK,CAACC,MAHkB,EAIxB,EAJwB,EAKxBhC,MALwB,CAA1B;AAOD,OAVsB,CAAvB;AAWD;AACF,GAdD,EAcG,CAACwB,gBAAD,EAAmB3B,qBAAnB,EAA0CD,OAA1C,EAAmD2B,QAAnD,EAA6DM,QAA7D,CAdH;AAeD","sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext, {\n ChildBeforeRemoveListener,\n} from './NavigationBuilderContext';\nimport NavigationRouteContext from './NavigationRouteContext';\nimport type { EventMapCore } from './types';\nimport type { NavigationEventEmitter } from './useEventEmitter';\n\ntype Options = {\n getState: () => NavigationState;\n emitter: NavigationEventEmitter<EventMapCore<any>>;\n beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>;\n};\n\nconst VISITED_ROUTE_KEYS = Symbol('VISITED_ROUTE_KEYS');\n\nexport const shouldPreventRemove = (\n emitter: NavigationEventEmitter<EventMapCore<any>>,\n beforeRemoveListeners: Record<string, ChildBeforeRemoveListener | undefined>,\n currentRoutes: { key: string }[],\n nextRoutes: { key?: string | undefined }[],\n action: NavigationAction\n) => {\n const nextRouteKeys = nextRoutes.map((route) => route.key);\n\n // Call these in reverse order so last screens handle the event first\n const removedRoutes = currentRoutes\n .filter((route) => !nextRouteKeys.includes(route.key))\n .reverse();\n\n const visitedRouteKeys: Set<string> =\n // @ts-expect-error: add this property to mark that we've already emitted this action\n action[VISITED_ROUTE_KEYS] ?? new Set<string>();\n\n const beforeRemoveAction = {\n ...action,\n [VISITED_ROUTE_KEYS]: visitedRouteKeys,\n };\n\n for (const route of removedRoutes) {\n if (visitedRouteKeys.has(route.key)) {\n // Skip if we've already emitted this action for this screen\n continue;\n }\n\n // First, we need to check if any child screens want to prevent it\n const isPrevented = beforeRemoveListeners[route.key]?.(beforeRemoveAction);\n\n if (isPrevented) {\n return true;\n }\n\n visitedRouteKeys.add(route.key);\n\n const event = emitter.emit({\n type: 'beforeRemove',\n target: route.key,\n data: { action: beforeRemoveAction },\n canPreventDefault: true,\n });\n\n if (event.defaultPrevented) {\n return true;\n }\n }\n\n return false;\n};\n\nexport default function useOnPreventRemove({\n getState,\n emitter,\n beforeRemoveListeners,\n}: Options) {\n const { addKeyedListener } = React.useContext(NavigationBuilderContext);\n const route = React.useContext(NavigationRouteContext);\n const routeKey = route?.key;\n\n React.useEffect(() => {\n if (routeKey) {\n return addKeyedListener?.('beforeRemove', routeKey, (action) => {\n const state = getState();\n\n return shouldPreventRemove(\n emitter,\n beforeRemoveListeners,\n state.routes,\n [],\n action\n );\n });\n }\n }, [addKeyedListener, beforeRemoveListeners, emitter, getState, routeKey]);\n}\n"]}
|
|
@@ -20,12 +20,13 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
20
20
|
* Focus action needs to be treated specially, coz when a nested route is focused,
|
|
21
21
|
* the parent navigators also needs to be focused.
|
|
22
22
|
*/
|
|
23
|
-
function useOnRouteFocus({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
function useOnRouteFocus(_ref) {
|
|
24
|
+
let {
|
|
25
|
+
router,
|
|
26
|
+
getState,
|
|
27
|
+
key: sourceRouteKey,
|
|
28
|
+
setState
|
|
29
|
+
} = _ref;
|
|
29
30
|
const {
|
|
30
31
|
onRouteFocus: onRouteFocusParent
|
|
31
32
|
} = React.useContext(_NavigationBuilderContext.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOnRouteFocus.tsx"],"names":["useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","React","useContext","NavigationBuilderContext","useCallback","state","result","getStateForRouteFocus","undefined"],"mappings":";;;;;;;AAKA;;AAEA;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACe,SAASA,eAAT,
|
|
1
|
+
{"version":3,"sources":["useOnRouteFocus.tsx"],"names":["useOnRouteFocus","router","getState","key","sourceRouteKey","setState","onRouteFocus","onRouteFocusParent","React","useContext","NavigationBuilderContext","useCallback","state","result","getStateForRouteFocus","undefined"],"mappings":";;;;;;;AAKA;;AAEA;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACe,SAASA,eAAT,OAKK;AAAA,MALqD;AACvEC,IAAAA,MADuE;AAEvEC,IAAAA,QAFuE;AAGvEC,IAAAA,GAAG,EAAEC,cAHkE;AAIvEC,IAAAA;AAJuE,GAKrD;AAClB,QAAM;AAAEC,IAAAA,YAAY,EAAEC;AAAhB,MAAuCC,KAAK,CAACC,UAAN,CAC3CC,iCAD2C,CAA7C;AAIA,SAAOF,KAAK,CAACG,WAAN,CACJR,GAAD,IAAiB;AACf,UAAMS,KAAK,GAAGV,QAAQ,EAAtB;AACA,UAAMW,MAAM,GAAGZ,MAAM,CAACa,qBAAP,CAA6BF,KAA7B,EAAoCT,GAApC,CAAf;;AAEA,QAAIU,MAAM,KAAKD,KAAf,EAAsB;AACpBP,MAAAA,QAAQ,CAACQ,MAAD,CAAR;AACD;;AAED,QAAIN,kBAAkB,KAAKQ,SAAvB,IAAoCX,cAAc,KAAKW,SAA3D,EAAsE;AACpER,MAAAA,kBAAkB,CAACH,cAAD,CAAlB;AACD;AACF,GAZI,EAaL,CAACF,QAAD,EAAWK,kBAAX,EAA+BN,MAA/B,EAAuCI,QAAvC,EAAiDD,cAAjD,CAbK,CAAP;AAeD","sourcesContent":["import type {\n NavigationAction,\n NavigationState,\n Router,\n} from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext from './NavigationBuilderContext';\n\ntype Options<Action extends NavigationAction> = {\n router: Router<NavigationState, Action>;\n getState: () => NavigationState;\n setState: (state: NavigationState) => void;\n key?: string;\n};\n\n/**\n * Hook to handle focus actions for a route.\n * Focus action needs to be treated specially, coz when a nested route is focused,\n * the parent navigators also needs to be focused.\n */\nexport default function useOnRouteFocus<Action extends NavigationAction>({\n router,\n getState,\n key: sourceRouteKey,\n setState,\n}: Options<Action>) {\n const { onRouteFocus: onRouteFocusParent } = React.useContext(\n NavigationBuilderContext\n );\n\n return React.useCallback(\n (key: string) => {\n const state = getState();\n const result = router.getStateForRouteFocus(state, key);\n\n if (result !== state) {\n setState(result);\n }\n\n if (onRouteFocusParent !== undefined && sourceRouteKey !== undefined) {\n onRouteFocusParent(sourceRouteKey);\n }\n },\n [getState, onRouteFocusParent, router, setState, sourceRouteKey]\n );\n}\n"]}
|
|
@@ -17,11 +17,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
19
|
|
|
20
|
-
function useOptionsGetters({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
function useOptionsGetters(_ref) {
|
|
21
|
+
let {
|
|
22
|
+
key,
|
|
23
|
+
options,
|
|
24
|
+
navigation
|
|
25
|
+
} = _ref;
|
|
25
26
|
const optionsRef = React.useRef(options);
|
|
26
27
|
const optionsGettersFromChildRef = React.useRef({});
|
|
27
28
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useOptionsGetters.tsx"],"names":["useOptionsGetters","key","options","navigation","optionsRef","React","useRef","optionsGettersFromChildRef","onOptionsChange","useContext","NavigationBuilderContext","addOptionsGetter","parentAddOptionsGetter","NavigationStateContext","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","hasOwnProperty","result","getCurrentOptions","optionsFromListener","getter"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;;;;;;;AASe,SAASA,iBAAT,
|
|
1
|
+
{"version":3,"sources":["useOptionsGetters.tsx"],"names":["useOptionsGetters","key","options","navigation","optionsRef","React","useRef","optionsGettersFromChildRef","onOptionsChange","useContext","NavigationBuilderContext","addOptionsGetter","parentAddOptionsGetter","NavigationStateContext","optionsChangeListener","useCallback","isFocused","hasChildren","Object","keys","current","length","useEffect","addListener","getOptionsFromListener","hasOwnProperty","result","getCurrentOptions","optionsFromListener","getter"],"mappings":"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","sourcesContent":["import type { ParamListBase } from '@react-navigation/routers';\nimport * as React from 'react';\n\nimport NavigationBuilderContext from './NavigationBuilderContext';\nimport NavigationStateContext from './NavigationStateContext';\nimport type { NavigationProp } from './types';\n\ntype Options = {\n key?: string;\n navigation?: NavigationProp<ParamListBase>;\n options?: object | undefined;\n};\n\nexport default function useOptionsGetters({\n key,\n options,\n navigation,\n}: Options) {\n const optionsRef = React.useRef<object | undefined>(options);\n const optionsGettersFromChildRef = React.useRef<\n Record<string, () => object | undefined | null>\n >({});\n\n const { onOptionsChange } = React.useContext(NavigationBuilderContext);\n const { addOptionsGetter: parentAddOptionsGetter } = React.useContext(\n NavigationStateContext\n );\n\n const optionsChangeListener = React.useCallback(() => {\n const isFocused = navigation?.isFocused() ?? true;\n const hasChildren = Object.keys(optionsGettersFromChildRef.current).length;\n\n if (isFocused && !hasChildren) {\n onOptionsChange(optionsRef.current ?? {});\n }\n }, [navigation, onOptionsChange]);\n\n React.useEffect(() => {\n optionsRef.current = options;\n optionsChangeListener();\n\n return navigation?.addListener('focus', optionsChangeListener);\n }, [navigation, options, optionsChangeListener]);\n\n const getOptionsFromListener = React.useCallback(() => {\n for (let key in optionsGettersFromChildRef.current) {\n if (optionsGettersFromChildRef.current.hasOwnProperty(key)) {\n const result = optionsGettersFromChildRef.current[key]?.();\n\n // null means unfocused route\n if (result !== null) {\n return result;\n }\n }\n }\n\n return null;\n }, []);\n\n const getCurrentOptions = React.useCallback(() => {\n const isFocused = navigation?.isFocused() ?? true;\n\n if (!isFocused) {\n return null;\n }\n\n const optionsFromListener = getOptionsFromListener();\n\n if (optionsFromListener !== null) {\n return optionsFromListener;\n }\n\n return optionsRef.current;\n }, [navigation, getOptionsFromListener]);\n\n React.useEffect(() => {\n return parentAddOptionsGetter?.(key!, getCurrentOptions);\n }, [getCurrentOptions, parentAddOptionsGetter, key]);\n\n const addOptionsGetter = React.useCallback(\n (key: string, getter: () => object | undefined | null) => {\n optionsGettersFromChildRef.current[key] = getter;\n optionsChangeListener();\n\n return () => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete optionsGettersFromChildRef.current[key];\n optionsChangeListener();\n };\n },\n [optionsChangeListener]\n );\n\n return {\n addOptionsGetter,\n getCurrentOptions,\n };\n}\n"]}
|
|
@@ -7,7 +7,8 @@ exports.default = validatePathConfig;
|
|
|
7
7
|
|
|
8
8
|
const formatToList = items => items.map(key => `- ${key}`).join('\n');
|
|
9
9
|
|
|
10
|
-
function validatePathConfig(config
|
|
10
|
+
function validatePathConfig(config) {
|
|
11
|
+
let root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
11
12
|
const validKeys = ['initialRouteName', 'screens'];
|
|
12
13
|
|
|
13
14
|
if (!root) {
|
|
@@ -21,7 +22,9 @@ function validatePathConfig(config, root = true) {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
if (config.screens) {
|
|
24
|
-
Object.entries(config.screens).forEach(
|
|
25
|
+
Object.entries(config.screens).forEach(_ref => {
|
|
26
|
+
let [_, value] = _ref;
|
|
27
|
+
|
|
25
28
|
if (typeof value !== 'string') {
|
|
26
29
|
validatePathConfig(value, false);
|
|
27
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["validatePathConfig.tsx"],"names":["formatToList","items","map","key","join","validatePathConfig","config","root","validKeys","push","invalidKeys","Object","keys","filter","includes","length","Error","screens","entries","forEach","_","value"],"mappings":";;;;;;;AAAA,MAAMA,YAAY,GAAIC,KAAD,IACnBA,KAAK,CAACC,GAAN,CAAWC,GAAD,IAAU,KAAIA,GAAI,EAA5B,EAA+BC,IAA/B,CAAoC,IAApC,CADF;;AAGe,SAASC,kBAAT,CAA4BC,MAA5B,
|
|
1
|
+
{"version":3,"sources":["validatePathConfig.tsx"],"names":["formatToList","items","map","key","join","validatePathConfig","config","root","validKeys","push","invalidKeys","Object","keys","filter","includes","length","Error","screens","entries","forEach","_","value"],"mappings":";;;;;;;AAAA,MAAMA,YAAY,GAAIC,KAAD,IACnBA,KAAK,CAACC,GAAN,CAAWC,GAAD,IAAU,KAAIA,GAAI,EAA5B,EAA+BC,IAA/B,CAAoC,IAApC,CADF;;AAGe,SAASC,kBAAT,CAA4BC,MAA5B,EAAsD;AAAA,MAAbC,IAAa,uEAAN,IAAM;AACnE,QAAMC,SAAS,GAAG,CAAC,kBAAD,EAAqB,SAArB,CAAlB;;AAEA,MAAI,CAACD,IAAL,EAAW;AACTC,IAAAA,SAAS,CAACC,IAAV,CAAe,MAAf,EAAuB,OAAvB,EAAgC,WAAhC,EAA6C,OAA7C;AACD;;AAED,QAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYN,MAAZ,EAAoBO,MAApB,CACjBV,GAAD,IAAS,CAACK,SAAS,CAACM,QAAV,CAAmBX,GAAnB,CADQ,CAApB;;AAIA,MAAIO,WAAW,CAACK,MAAhB,EAAwB;AACtB,UAAM,IAAIC,KAAJ,CACH,mDAAkDhB,YAAY,CAC7DU,WAD6D,CAE7D,qHAAoHV,YAAY,CAChIQ,SADgI,CAEhI,wHALE,CAAN;AAOD;;AAED,MAAIF,MAAM,CAACW,OAAX,EAAoB;AAClBN,IAAAA,MAAM,CAACO,OAAP,CAAeZ,MAAM,CAACW,OAAtB,EAA+BE,OAA/B,CAAuC,QAAgB;AAAA,UAAf,CAACC,CAAD,EAAIC,KAAJ,CAAe;;AACrD,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BhB,QAAAA,kBAAkB,CAACgB,KAAD,EAAQ,KAAR,CAAlB;AACD;AACF,KAJD;AAKD;AACF","sourcesContent":["const formatToList = (items: string[]) =>\n items.map((key) => `- ${key}`).join('\\n');\n\nexport default function validatePathConfig(config: any, root = true) {\n const validKeys = ['initialRouteName', 'screens'];\n\n if (!root) {\n validKeys.push('path', 'exact', 'stringify', 'parse');\n }\n\n const invalidKeys = Object.keys(config).filter(\n (key) => !validKeys.includes(key)\n );\n\n if (invalidKeys.length) {\n throw new Error(\n `Found invalid properties in the configuration:\\n${formatToList(\n invalidKeys\n )}\\n\\nDid you forget to specify them under a 'screens' property?\\n\\nYou can only specify the following properties:\\n${formatToList(\n validKeys\n )}\\n\\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`\n );\n }\n\n if (config.screens) {\n Object.entries(config.screens).forEach(([_, value]) => {\n if (typeof value !== 'string') {\n validatePathConfig(value, false);\n }\n });\n }\n}\n"]}
|
|
@@ -60,13 +60,14 @@ const getPartialState = state => {
|
|
|
60
60
|
*/
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavigationContainer({
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavigationContainer(_ref, ref) {
|
|
64
|
+
let {
|
|
65
|
+
initialState,
|
|
66
|
+
onStateChange,
|
|
67
|
+
onUnhandledAction,
|
|
68
|
+
independent,
|
|
69
|
+
children
|
|
70
|
+
} = _ref;
|
|
70
71
|
const parent = React.useContext(NavigationStateContext);
|
|
71
72
|
|
|
72
73
|
if (!parent.isDefault && !independent) {
|
|
@@ -145,8 +146,11 @@ const BaseNavigationContainer = /*#__PURE__*/React.forwardRef(function BaseNavig
|
|
|
145
146
|
getCurrentOptions
|
|
146
147
|
} = useOptionsGetters({});
|
|
147
148
|
const navigation = React.useMemo(() => ({ ...Object.keys(CommonActions).reduce((acc, name) => {
|
|
148
|
-
acc[name] = (
|
|
149
|
-
|
|
149
|
+
acc[name] = function () {
|
|
150
|
+
return (// @ts-expect-error: this is ok
|
|
151
|
+
dispatch(CommonActions[name](...arguments))
|
|
152
|
+
);
|
|
153
|
+
};
|
|
150
154
|
|
|
151
155
|
return acc;
|
|
152
156
|
}, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BaseNavigationContainer.tsx"],"names":["CommonActions","React","checkDuplicateRouteNames","checkSerializable","NOT_INITIALIZED_ERROR","EnsureSingleNavigator","findFocusedRoute","NavigationBuilderContext","NavigationContainerRefContext","NavigationContext","NavigationRouteContext","NavigationStateContext","UnhandledActionContext","useChildListeners","useEventEmitter","useKeyedChildListeners","useOptionsGetters","ScheduleUpdateContext","useSyncState","serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","forwardRef","initialState","onStateChange","onUnhandledAction","independent","children","ref","parent","useContext","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","keyedListeners","addKeyedListener","dispatch","action","focus","console","error","navigation","canGoBack","result","handled","resetRoot","target","root","reset","getRootState","getCurrentRoute","emitter","addOptionsGetter","getCurrentOptions","useMemo","Object","keys","reduce","acc","name","args","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","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","locations","join","defaultOnUnhandledAction","payload","element"],"mappings":"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","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) => {\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"]}
|
|
1
|
+
{"version":3,"sources":["BaseNavigationContainer.tsx"],"names":["CommonActions","React","checkDuplicateRouteNames","checkSerializable","NOT_INITIALIZED_ERROR","EnsureSingleNavigator","findFocusedRoute","NavigationBuilderContext","NavigationContainerRefContext","NavigationContext","NavigationRouteContext","NavigationStateContext","UnhandledActionContext","useChildListeners","useEventEmitter","useKeyedChildListeners","useOptionsGetters","ScheduleUpdateContext","useSyncState","serializableWarnings","duplicateNameWarnings","getPartialState","state","undefined","key","routeNames","partialState","stale","routes","map","route","BaseNavigationContainer","forwardRef","ref","initialState","onStateChange","onUnhandledAction","independent","children","parent","useContext","isDefault","Error","getState","setState","scheduleUpdate","flushUpdates","isFirstMountRef","useRef","navigatorKeyRef","getKey","useCallback","current","setKey","listeners","addListener","keyedListeners","addKeyedListener","dispatch","action","focus","console","error","navigation","canGoBack","result","handled","resetRoot","target","root","reset","getRootState","getCurrentRoute","emitter","addOptionsGetter","getCurrentOptions","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","serializable","location","reason","path","pointer","params","i","length","curr","prev","test","JSON","stringify","message","includes","push","warn","duplicateRouteNamesResult","locations","join","defaultOnUnhandledAction","payload","element"],"mappings":"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","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) => {\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CurrentRenderContext.tsx"],"names":["React","CurrentRenderContext","createContext","undefined"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA;AACA;AACA;AACA;;AACA,MAAMC,oBAAoB,
|
|
1
|
+
{"version":3,"sources":["CurrentRenderContext.tsx"],"names":["React","CurrentRenderContext","createContext","undefined"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA;AACA;AACA;AACA;;AACA,MAAMC,oBAAoB,gBAAGD,KAAK,CAACE,aAAN,CAE3BC,SAF2B,CAA7B;AAIA,eAAeF,oBAAf","sourcesContent":["import * as React from 'react';\n\n/**\n * Context which holds the values for the current navigation tree.\n * Intended for use in SSR. This is not safe to use on the client.\n */\nconst CurrentRenderContext = React.createContext<\n { options?: object } | undefined\n>(undefined);\n\nexport default CurrentRenderContext;\n"]}
|