@react-navigation/core 8.0.0-alpha.27 → 8.0.0-alpha.28
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/module/useNavigationBuilder.js +43 -21
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useOnAction.js +20 -2
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/useNavigationBuilder.tsx +70 -30
- package/src/useOnAction.tsx +25 -0
|
@@ -9,7 +9,6 @@ import { ConsumedParamsContext } from "./ConsumedParamsContext.js";
|
|
|
9
9
|
import { deepFreeze } from "./deepFreeze.js";
|
|
10
10
|
import { Group } from "./Group.js";
|
|
11
11
|
import { isArrayEqual } from "./isArrayEqual.js";
|
|
12
|
-
import { isRecordEqual } from "./isRecordEqual.js";
|
|
13
12
|
import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
|
|
14
13
|
import { NavigationHelpersContext } from "./NavigationHelpersContext.js";
|
|
15
14
|
import { NavigationMetaContext } from "./NavigationMetaContext.js";
|
|
@@ -54,7 +53,7 @@ const isValidKey = key => key === undefined || typeof key === 'string' && key !=
|
|
|
54
53
|
*
|
|
55
54
|
* @param children React Elements to extract the config from.
|
|
56
55
|
*/
|
|
57
|
-
const getRouteConfigsFromChildren = (children,
|
|
56
|
+
const getRouteConfigsFromChildren = (children, groupKeys = [], groupOptions, groupLayout) => {
|
|
58
57
|
const configs = React.Children.toArray(children).reduce((acc, child) => {
|
|
59
58
|
if (/*#__PURE__*/React.isValidElement(child)) {
|
|
60
59
|
if (isScreen(child)) {
|
|
@@ -71,7 +70,7 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayo
|
|
|
71
70
|
throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the screen '${child.props.name}'. It must be a non-empty string or 'undefined'.`);
|
|
72
71
|
}
|
|
73
72
|
acc.push({
|
|
74
|
-
keys: [
|
|
73
|
+
keys: [...groupKeys, child.props.navigationKey],
|
|
75
74
|
options: groupOptions,
|
|
76
75
|
layout: groupLayout,
|
|
77
76
|
props: child.props
|
|
@@ -85,7 +84,7 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayo
|
|
|
85
84
|
|
|
86
85
|
// When we encounter a fragment or group, we need to dive into its children to extract the configs
|
|
87
86
|
// This is handy to conditionally define a group of screens
|
|
88
|
-
acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey,
|
|
87
|
+
acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey != null ? [...groupKeys, child.props.navigationKey] : groupKeys,
|
|
89
88
|
// FIXME
|
|
90
89
|
// @ts-expect-error: add validation
|
|
91
90
|
child.type !== Group ? groupOptions : groupOptions != null ? [...groupOptions, child.props.screenOptions] : [child.props.screenOptions], typeof child.props.screenLayout === 'function' ? child.props.screenLayout : groupLayout));
|
|
@@ -138,9 +137,15 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayo
|
|
|
138
137
|
}
|
|
139
138
|
return configs;
|
|
140
139
|
};
|
|
141
|
-
const getStateFromParams = params => {
|
|
140
|
+
const getStateFromParams = (params, type) => {
|
|
142
141
|
const state = params?.state;
|
|
143
142
|
if (isNavigationState(state)) {
|
|
143
|
+
if (state.type != null && state.type !== type) {
|
|
144
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
145
|
+
console.error(`The state passed in the params is for a navigator of type '${state.type}', but it was passed to a navigator of type '${type}'. This can happen if the state was meant for a different navigator. The state will be discarded.`);
|
|
146
|
+
}
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
144
149
|
return state;
|
|
145
150
|
} else if (typeof params?.screen === 'string' && params?.initial !== false) {
|
|
146
151
|
return {
|
|
@@ -204,7 +209,7 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
204
209
|
throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${name}')`);
|
|
205
210
|
}
|
|
206
211
|
screens[name] = config;
|
|
207
|
-
routeKeyList[name] = config.keys
|
|
212
|
+
routeKeyList[name] = config.keys;
|
|
208
213
|
routeParamList[name] = config.props.initialParams;
|
|
209
214
|
Object.assign(routeGetIdList, {
|
|
210
215
|
[name]: config.props.getId
|
|
@@ -271,7 +276,7 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
271
276
|
}), true, undefined];
|
|
272
277
|
} else {
|
|
273
278
|
const paramsForState = isNestedParamsConsumed ? undefined : route?.params;
|
|
274
|
-
const stateFromParams = paramsForState ? getStateFromParams(paramsForState) : undefined;
|
|
279
|
+
const stateFromParams = paramsForState ? getStateFromParams(paramsForState, router.type) : undefined;
|
|
275
280
|
const stateBeforeInitialization = stateFromParams ?? currentState;
|
|
276
281
|
const hydratedState = stateBeforeInitialization == null ? router.getInitialState({
|
|
277
282
|
routeNames,
|
|
@@ -282,7 +287,7 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
282
287
|
routeParamList: initialRouteParamList,
|
|
283
288
|
routeGetIdList
|
|
284
289
|
});
|
|
285
|
-
if (stateBeforeInitialization != null && options.routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)) {
|
|
290
|
+
if (stateBeforeInitialization != null && isStateValid(stateBeforeInitialization) && options.routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)) {
|
|
286
291
|
return [stateBeforeInitialization, hydratedState, true, paramsForState];
|
|
287
292
|
}
|
|
288
293
|
return [undefined, hydratedState, false,
|
|
@@ -302,6 +307,13 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
302
307
|
previousRouteKeyListRef.current = routeKeyList;
|
|
303
308
|
});
|
|
304
309
|
const previousRouteKeyList = previousRouteKeyListRef.current;
|
|
310
|
+
|
|
311
|
+
// Names of the screens whose navigation key changed since the last render
|
|
312
|
+
const routeKeyChanges = Object.keys(routeKeyList).filter(name => {
|
|
313
|
+
const current = routeKeyList[name];
|
|
314
|
+
const previous = previousRouteKeyList[name];
|
|
315
|
+
return current != null && previous != null && !isArrayEqual(current, previous);
|
|
316
|
+
});
|
|
305
317
|
const [unhandledState, setUnhandledState] = React.useState(stateBeforeInitialization);
|
|
306
318
|
|
|
307
319
|
// An unhandled state is state that didn't have any valid routes
|
|
@@ -318,44 +330,50 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
318
330
|
isStateInitialized(currentState) ? currentState : initializedState;
|
|
319
331
|
let nextState = state;
|
|
320
332
|
let shouldClearUnhandledState = false;
|
|
321
|
-
|
|
333
|
+
if (unhandledState != null && !isStateValid(unhandledState)) {
|
|
334
|
+
// The stored unhandled state is for a different type of navigator
|
|
335
|
+
// It can't be used with this navigator, so we discard it
|
|
336
|
+
setUnhandledState(undefined);
|
|
337
|
+
} else if (
|
|
322
338
|
// Previously unhandled state is now valid again
|
|
323
339
|
// And current state no longer has any valid routes
|
|
324
340
|
// We should reuse the unhandled state instead of re-calculating the state
|
|
325
|
-
|
|
341
|
+
unhandledState?.routes.every(r => routeNames.includes(r.name)) && state?.routes.every(r => !routeNames.includes(r.name))) {
|
|
326
342
|
shouldClearUnhandledState = true;
|
|
327
343
|
nextState = router.getRehydratedState(unhandledState, {
|
|
328
344
|
routeNames,
|
|
329
345
|
routeParamList,
|
|
330
346
|
routeGetIdList
|
|
331
347
|
});
|
|
332
|
-
} else if (!isArrayEqual(state.routeNames, routeNames) ||
|
|
348
|
+
} else if (!isArrayEqual(state.routeNames, routeNames) || routeKeyChanges.length !== 0) {
|
|
333
349
|
// When the list of route names change, the router should handle it to remove invalid routes
|
|
334
350
|
nextState = router.getStateForRouteNamesChange(state, {
|
|
335
351
|
routeNames,
|
|
336
352
|
routeParamList,
|
|
337
353
|
routeGetIdList,
|
|
338
|
-
routeKeyChanges
|
|
354
|
+
routeKeyChanges
|
|
339
355
|
});
|
|
340
356
|
}
|
|
341
357
|
let didConsumeNestedParams = route?.params === paramsUsedForInitialization;
|
|
342
358
|
if (route?.params && !didConsumeNestedParams) {
|
|
343
359
|
let action;
|
|
344
|
-
|
|
345
|
-
if (isNavigationState(stateFromParams) && !isNestedParamsConsumed) {
|
|
360
|
+
if (isNavigationState(route.params.state) && !isNestedParamsConsumed) {
|
|
346
361
|
didConsumeNestedParams = true;
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
362
|
+
const stateFromParams = getStateFromParams(route.params, router.type);
|
|
363
|
+
if (stateFromParams != null) {
|
|
364
|
+
if (options.routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateFromParams)) {
|
|
365
|
+
if (stateFromParams !== unhandledState) {
|
|
366
|
+
setUnhandledState(stateFromParams);
|
|
367
|
+
}
|
|
368
|
+
} else {
|
|
369
|
+
// If the route was updated with new state, we should reset to it
|
|
370
|
+
action = CommonActions.reset(stateFromParams);
|
|
350
371
|
}
|
|
351
|
-
} else {
|
|
352
|
-
// If the route was updated with new state, we should reset to it
|
|
353
|
-
action = CommonActions.reset(stateFromParams);
|
|
354
372
|
}
|
|
355
373
|
} else if (typeof route.params.screen === 'string' && (route.params.initial === false && isFirstStateInitialization || !isNestedParamsConsumed)) {
|
|
356
374
|
didConsumeNestedParams = true;
|
|
357
375
|
if (options.routeNamesChangeBehavior === 'lastUnhandled' && !routeNames.includes(route.params.screen)) {
|
|
358
|
-
const state = getStateFromParams(route.params);
|
|
376
|
+
const state = getStateFromParams(route.params, router.type);
|
|
359
377
|
if (state != null && !deepEqual(state, unhandledState)) {
|
|
360
378
|
setUnhandledState(state);
|
|
361
379
|
}
|
|
@@ -380,6 +398,10 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
380
398
|
routeParamList,
|
|
381
399
|
routeGetIdList
|
|
382
400
|
}) : null;
|
|
401
|
+
if (process.env.NODE_ENV !== 'production' && action != null && updatedState === null) {
|
|
402
|
+
const names = routeNames.map(name => `'${name}'`).join(', ');
|
|
403
|
+
console.error(`The 'state' or 'screen' passed in the params couldn't be applied to the navigator with the screens: ${names}. This can happen if the params contain names of screens that don't exist in the navigator. The navigation specified in the params will be ignored.`);
|
|
404
|
+
}
|
|
383
405
|
nextState = updatedState !== null ? router.getRehydratedState(updatedState, {
|
|
384
406
|
routeNames,
|
|
385
407
|
routeParamList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","deepEqual","React","isValidElementType","useLatestCallback","ConsumedParamsContext","deepFreeze","Group","isArrayEqual","isRecordEqual","NavigationBuilderContext","NavigationHelpersContext","NavigationMetaContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","UnhandledActionContext","useChildListeners","useComponent","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","FocusedRouteKeyContext","useKeyedChildListeners","useLazyValue","useNavigationHelpers","NavigationStateListenerProvider","useOnAction","useOnGetState","useOnRouteFocus","useRegisterNavigator","useScheduleUpdate","jsx","_jsx","isNavigationState","state","Array","isArray","routes","isScreen","child","type","isGroup","Fragment","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKey","groupOptions","groupLayout","configs","Children","toArray","reduce","acc","isValidElement","props","Error","name","JSON","stringify","navigationKey","push","keys","options","layout","screenOptions","screenLayout","String","process","env","NODE_ENV","forEach","config","component","getComponent","console","warn","test","getStateFromParams","params","screen","initial","path","useNavigationBuilder","createRouter","navigatorKey","route","use","consumedParams","isNestedParamsConsumed","has","screenListeners","router","routerOverrides","rest","routeConfigs","initialRouteName","every","original","overrides","routeNames","map","length","screens","routeKeyList","routeParamList","routeGetIdList","join","initialParams","Object","assign","getId","isStateValid","useCallback","isStateInitialized","stale","doesStateHaveOnlyInvalidRoutes","r","includes","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","stateCleanupRef","useRef","lastStateRef","current","stateBeforeInitialization","initializedState","isFirstStateInitialization","paramsUsedForInitialization","useMemo","getRehydratedState","initialRouteParamList","curr","initialParamsFromParams","getInitialState","paramsForState","stateFromParams","hydratedState","routeNamesChangeBehavior","previousRouteKeyListRef","useInsertionEffect","previousRouteKeyList","unhandledState","setUnhandledState","useState","nextState","shouldClearUnhandledState","getStateForRouteNamesChange","routeKeyChanges","filter","didConsumeNestedParams","action","reset","payload","merge","pop","updatedState","getStateForAction","useEffect","set","shouldUpdate","lastNotifiedStateRef","onEmitEvent","emitter","e","target","find","index","hasPerScreenListeners","some","listeners","descriptor","descriptors","navigation","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","onUnhandledActionParent","onUnhandledAction","focusedListeners","focus","getStateListeners","NavigationContent","focusedRoute","element","Provider","value"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CommonActions","deepEqual","React","isValidElementType","useLatestCallback","ConsumedParamsContext","deepFreeze","Group","isArrayEqual","NavigationBuilderContext","NavigationHelpersContext","NavigationMetaContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","UnhandledActionContext","useChildListeners","useComponent","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","FocusedRouteKeyContext","useKeyedChildListeners","useLazyValue","useNavigationHelpers","NavigationStateListenerProvider","useOnAction","useOnGetState","useOnRouteFocus","useRegisterNavigator","useScheduleUpdate","jsx","_jsx","isNavigationState","state","Array","isArray","routes","isScreen","child","type","isGroup","Fragment","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKeys","groupOptions","groupLayout","configs","Children","toArray","reduce","acc","isValidElement","props","Error","name","JSON","stringify","navigationKey","push","keys","options","layout","screenOptions","screenLayout","String","process","env","NODE_ENV","forEach","config","component","getComponent","console","warn","test","getStateFromParams","params","error","screen","initial","path","useNavigationBuilder","createRouter","navigatorKey","route","use","consumedParams","isNestedParamsConsumed","has","screenListeners","router","routerOverrides","rest","routeConfigs","initialRouteName","every","original","overrides","routeNames","map","length","screens","routeKeyList","routeParamList","routeGetIdList","initialParams","Object","assign","getId","isStateValid","useCallback","isStateInitialized","stale","doesStateHaveOnlyInvalidRoutes","r","includes","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","stateCleanupRef","useRef","lastStateRef","current","stateBeforeInitialization","initializedState","isFirstStateInitialization","paramsUsedForInitialization","useMemo","getRehydratedState","initialRouteParamList","curr","initialParamsFromParams","getInitialState","paramsForState","stateFromParams","hydratedState","routeNamesChangeBehavior","previousRouteKeyListRef","useInsertionEffect","previousRouteKeyList","routeKeyChanges","filter","previous","unhandledState","setUnhandledState","useState","nextState","shouldClearUnhandledState","getStateForRouteNamesChange","didConsumeNestedParams","action","reset","payload","merge","pop","updatedState","getStateForAction","names","join","useEffect","set","shouldUpdate","lastNotifiedStateRef","onEmitEvent","emitter","e","target","find","index","hasPerScreenListeners","some","listeners","descriptor","descriptors","navigation","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","onUnhandledActionParent","onUnhandledAction","focusedListeners","focus","getStateListeners","NavigationContent","focusedRoute","element","Provider","value"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -29,7 +29,8 @@ export function useOnAction({
|
|
|
29
29
|
onAction: onActionParent,
|
|
30
30
|
onRouteFocus: onRouteFocusParent,
|
|
31
31
|
addListener: addListenerParent,
|
|
32
|
-
onDispatchAction
|
|
32
|
+
onDispatchAction,
|
|
33
|
+
flushUpdates
|
|
33
34
|
} = React.use(NavigationBuilderContext);
|
|
34
35
|
const tree = React.use(StaticTreeContext);
|
|
35
36
|
const consumedParams = React.use(ConsumedParamsContext);
|
|
@@ -38,6 +39,10 @@ export function useOnAction({
|
|
|
38
39
|
routerConfigOptionsRef.current = routerConfigOptions;
|
|
39
40
|
});
|
|
40
41
|
const onAction = React.useCallback((action, visitedNavigators = new Set()) => {
|
|
42
|
+
// Apply any pending state updates scheduled during render before handling the action
|
|
43
|
+
// Otherwise the action will be handled with an outdated state,
|
|
44
|
+
// and the pending updates will overwrite the changes from the action
|
|
45
|
+
flushUpdates();
|
|
41
46
|
const state = getState();
|
|
42
47
|
|
|
43
48
|
// Since actions can bubble both up and down, they could come to the same navigator again
|
|
@@ -52,6 +57,13 @@ export function useOnAction({
|
|
|
52
57
|
// If a target is specified and set to current navigator, the action shouldn't bubble
|
|
53
58
|
// So instead of `null`, we use the state object for such cases to signal that action was handled
|
|
54
59
|
result = result === null && action.target === state.key ? state : result;
|
|
60
|
+
if (result !== null && result.stale !== false) {
|
|
61
|
+
// Some actions (e.g. `RESET`) may return a stale state from the router
|
|
62
|
+
// We rehydrate it before storing so the stored state is always usable
|
|
63
|
+
// Otherwise anything reading the state before the next render
|
|
64
|
+
// (e.g. another dispatch immediately after) would get an outdated state
|
|
65
|
+
result = router.getRehydratedState(result, routerConfigOptionsRef.current);
|
|
66
|
+
}
|
|
55
67
|
if (result !== null) {
|
|
56
68
|
if (state !== result) {
|
|
57
69
|
const isPrevented = shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, result.routes, action);
|
|
@@ -59,6 +71,12 @@ export function useOnAction({
|
|
|
59
71
|
onDispatchAction(action, true);
|
|
60
72
|
return true;
|
|
61
73
|
}
|
|
74
|
+
if (getState() !== state) {
|
|
75
|
+
// Listeners for 'beforeRemove' may dispatch actions that change the state
|
|
76
|
+
// Then the result we have is outdated and would overwrite those changes
|
|
77
|
+
// So we handle the action again to calculate the result with the latest state
|
|
78
|
+
return onAction(action, new Set());
|
|
79
|
+
}
|
|
62
80
|
onDispatchAction(action, false);
|
|
63
81
|
if (tree) {
|
|
64
82
|
const loader = getLoaderForStateChange(tree, result, state, consumedParams);
|
|
@@ -95,7 +113,7 @@ export function useOnAction({
|
|
|
95
113
|
}
|
|
96
114
|
}
|
|
97
115
|
return false;
|
|
98
|
-
}, [actionListeners, beforeRemoveListeners, consumedParams, emitter, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState, tree]);
|
|
116
|
+
}, [actionListeners, beforeRemoveListeners, consumedParams, emitter, flushUpdates, getState, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState, tree]);
|
|
99
117
|
useOnPreventRemove({
|
|
100
118
|
getState,
|
|
101
119
|
emitter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ConsumedParamsContext","getLoaderForStateChange","NavigationBuilderContext","StaticTreeContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","use","tree","consumedParams","routerConfigOptionsRef","useRef","useInsertionEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","loader","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":";;AAOA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,uBAAuB,QAAQ,kBAAe;AACvD,SAGEC,wBAAwB,QACnB,+BAA4B;AACnC,SAASC,iBAAiB,QAAQ,wBAAqB;AAGvD,SAASC,mBAAmB,EAAEC,kBAAkB,QAAQ,yBAAsB;AAa9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAgC;EACzDC,MAAM;EACNC,QAAQ;EACRC,QAAQ;EACRC,GAAG;EACHC,eAAe;EACfC,qBAAqB;EACrBC,mBAAmB;EACnBC;AACc,CAAC,EAAE;EACjB,MAAM;IACJC,QAAQ,EAAEC,cAAc;IACxBC,YAAY,EAAEC,kBAAkB;IAChCC,WAAW,EAAEC,iBAAiB;IAC9BC;EACF,CAAC,
|
|
1
|
+
{"version":3,"names":["React","ConsumedParamsContext","getLoaderForStateChange","NavigationBuilderContext","StaticTreeContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","flushUpdates","use","tree","consumedParams","routerConfigOptionsRef","useRef","useInsertionEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","stale","getRehydratedState","isPrevented","routes","loader","undefined","shouldFocus","shouldActionChangeFocus","i","length","listener"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EAIjB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EAIjB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,EACL,KAAK,uBAAuB,EAI5B,iBAAiB,EAElB,MAAM,YAAS,CAAC;AA8RjB;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,EAC5D,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EACnE,OAAO,EAAE,uBAAuB,CAC9B,aAAa,EACb,KAAK,EACL,aAAa,EACb,QAAQ,EACR,GAAG,CACJ,GACC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmtBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnAction.d.ts","sourceRoot":"","sources":["../../../src/useOnAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAE/B,MAAM,+BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAGhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,IAAI;IAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAC7E,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,eAAe,EAAE,EACzD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"useOnAction.d.ts","sourceRoot":"","sources":["../../../src/useOnAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAE/B,MAAM,+BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAGhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,IAAI;IAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAC7E,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,eAAe,EAAE,EACzD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,CAAC,YAqBH,gBAAgB,sBACL,GAAG,CAAC,MAAM,CAAC,aAgJnC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/core",
|
|
3
3
|
"description": "Core utilities for building navigators",
|
|
4
|
-
"version": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.28",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
7
7
|
"react-native",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"clean": "del lib"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@react-navigation/routers": "^8.0.0-alpha.
|
|
43
|
+
"@react-navigation/routers": "^8.0.0-alpha.15",
|
|
44
44
|
"escape-string-regexp": "^5.0.0",
|
|
45
45
|
"fast-deep-equal": "^3.1.3",
|
|
46
46
|
"nanoid": "^5.1.11",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
]
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "b0135879fbe4aa4a657798845483b7e78c307778"
|
|
88
88
|
}
|
|
@@ -19,7 +19,6 @@ import { ConsumedParamsContext } from './ConsumedParamsContext';
|
|
|
19
19
|
import { deepFreeze } from './deepFreeze';
|
|
20
20
|
import { Group } from './Group';
|
|
21
21
|
import { isArrayEqual } from './isArrayEqual';
|
|
22
|
-
import { isRecordEqual } from './isRecordEqual';
|
|
23
22
|
import { NavigationBuilderContext } from './NavigationBuilderContext';
|
|
24
23
|
import { NavigationHelpersContext } from './NavigationHelpersContext';
|
|
25
24
|
import { NavigationMetaContext } from './NavigationMetaContext';
|
|
@@ -104,7 +103,7 @@ const getRouteConfigsFromChildren = <
|
|
|
104
103
|
EventMap extends EventMapBase,
|
|
105
104
|
>(
|
|
106
105
|
children: React.ReactNode,
|
|
107
|
-
|
|
106
|
+
groupKeys: string[] = [],
|
|
108
107
|
groupOptions?: ScreenConfigWithParent<
|
|
109
108
|
State,
|
|
110
109
|
ScreenOptions,
|
|
@@ -147,7 +146,7 @@ const getRouteConfigsFromChildren = <
|
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
acc.push({
|
|
150
|
-
keys: [
|
|
149
|
+
keys: [...groupKeys, child.props.navigationKey],
|
|
151
150
|
options: groupOptions,
|
|
152
151
|
layout: groupLayout,
|
|
153
152
|
props: child.props as RouteConfig<
|
|
@@ -177,7 +176,9 @@ const getRouteConfigsFromChildren = <
|
|
|
177
176
|
acc.push(
|
|
178
177
|
...getRouteConfigsFromChildren<State, ScreenOptions, EventMap>(
|
|
179
178
|
child.props.children as React.ReactNode,
|
|
180
|
-
child.props.navigationKey
|
|
179
|
+
child.props.navigationKey != null
|
|
180
|
+
? [...groupKeys, child.props.navigationKey]
|
|
181
|
+
: groupKeys,
|
|
181
182
|
// FIXME
|
|
182
183
|
// @ts-expect-error: add validation
|
|
183
184
|
child.type !== Group
|
|
@@ -285,10 +286,23 @@ const getRouteConfigsFromChildren = <
|
|
|
285
286
|
return configs;
|
|
286
287
|
};
|
|
287
288
|
|
|
288
|
-
const getStateFromParams = (
|
|
289
|
+
const getStateFromParams = (
|
|
290
|
+
params: NavigatorRoute['params'],
|
|
291
|
+
type: string
|
|
292
|
+
): NavigationState | PartialState<NavigationState> | undefined => {
|
|
289
293
|
const state = params?.state;
|
|
290
294
|
|
|
291
295
|
if (isNavigationState(state)) {
|
|
296
|
+
if (state.type != null && state.type !== type) {
|
|
297
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
298
|
+
console.error(
|
|
299
|
+
`The state passed in the params is for a navigator of type '${state.type}', but it was passed to a navigator of type '${type}'. This can happen if the state was meant for a different navigator. The state will be discarded.`
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
|
|
292
306
|
return state;
|
|
293
307
|
} else if (typeof params?.screen === 'string' && params?.initial !== false) {
|
|
294
308
|
return {
|
|
@@ -395,7 +409,7 @@ export function useNavigationBuilder<
|
|
|
395
409
|
ScreenConfigWithParent<State, ScreenOptions, EventMap>
|
|
396
410
|
> = {};
|
|
397
411
|
|
|
398
|
-
const routeKeyList: Record<string,
|
|
412
|
+
const routeKeyList: Record<string, (string | undefined)[]> = {};
|
|
399
413
|
const routeParamList: Record<string, object | undefined> = {};
|
|
400
414
|
const routeGetIdList: RouterConfigOptions['routeGetIdList'] = {};
|
|
401
415
|
|
|
@@ -409,7 +423,7 @@ export function useNavigationBuilder<
|
|
|
409
423
|
}
|
|
410
424
|
|
|
411
425
|
screens[name] = config;
|
|
412
|
-
routeKeyList[name] = config.keys
|
|
426
|
+
routeKeyList[name] = config.keys;
|
|
413
427
|
routeParamList[name] = config.props.initialParams;
|
|
414
428
|
|
|
415
429
|
Object.assign(routeGetIdList, { [name]: config.props.getId });
|
|
@@ -543,7 +557,7 @@ export function useNavigationBuilder<
|
|
|
543
557
|
} else {
|
|
544
558
|
const paramsForState = isNestedParamsConsumed ? undefined : route?.params;
|
|
545
559
|
const stateFromParams = paramsForState
|
|
546
|
-
? getStateFromParams(paramsForState)
|
|
560
|
+
? getStateFromParams(paramsForState, router.type)
|
|
547
561
|
: undefined;
|
|
548
562
|
|
|
549
563
|
const stateBeforeInitialization = (stateFromParams ?? currentState) as
|
|
@@ -565,6 +579,7 @@ export function useNavigationBuilder<
|
|
|
565
579
|
|
|
566
580
|
if (
|
|
567
581
|
stateBeforeInitialization != null &&
|
|
582
|
+
isStateValid(stateBeforeInitialization) &&
|
|
568
583
|
options.routeNamesChangeBehavior === 'lastUnhandled' &&
|
|
569
584
|
doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)
|
|
570
585
|
) {
|
|
@@ -596,6 +611,16 @@ export function useNavigationBuilder<
|
|
|
596
611
|
|
|
597
612
|
const previousRouteKeyList = previousRouteKeyListRef.current;
|
|
598
613
|
|
|
614
|
+
// Names of the screens whose navigation key changed since the last render
|
|
615
|
+
const routeKeyChanges = Object.keys(routeKeyList).filter((name) => {
|
|
616
|
+
const current = routeKeyList[name];
|
|
617
|
+
const previous = previousRouteKeyList[name];
|
|
618
|
+
|
|
619
|
+
return (
|
|
620
|
+
current != null && previous != null && !isArrayEqual(current, previous)
|
|
621
|
+
);
|
|
622
|
+
});
|
|
623
|
+
|
|
599
624
|
const [unhandledState, setUnhandledState] = React.useState<
|
|
600
625
|
NavigationState | PartialState<NavigationState> | undefined
|
|
601
626
|
>(stateBeforeInitialization);
|
|
@@ -623,10 +648,14 @@ export function useNavigationBuilder<
|
|
|
623
648
|
let nextState: State = state;
|
|
624
649
|
let shouldClearUnhandledState = false;
|
|
625
650
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
651
|
+
if (unhandledState != null && !isStateValid(unhandledState)) {
|
|
652
|
+
// The stored unhandled state is for a different type of navigator
|
|
653
|
+
// It can't be used with this navigator, so we discard it
|
|
654
|
+
setUnhandledState(undefined);
|
|
655
|
+
} else if (
|
|
656
|
+
// Previously unhandled state is now valid again
|
|
657
|
+
// And current state no longer has any valid routes
|
|
658
|
+
// We should reuse the unhandled state instead of re-calculating the state
|
|
630
659
|
unhandledState?.routes.every((r) => routeNames.includes(r.name)) &&
|
|
631
660
|
state?.routes.every((r) => !routeNames.includes(r.name))
|
|
632
661
|
) {
|
|
@@ -641,18 +670,14 @@ export function useNavigationBuilder<
|
|
|
641
670
|
);
|
|
642
671
|
} else if (
|
|
643
672
|
!isArrayEqual(state.routeNames, routeNames) ||
|
|
644
|
-
|
|
673
|
+
routeKeyChanges.length !== 0
|
|
645
674
|
) {
|
|
646
675
|
// When the list of route names change, the router should handle it to remove invalid routes
|
|
647
676
|
nextState = router.getStateForRouteNamesChange(state, {
|
|
648
677
|
routeNames,
|
|
649
678
|
routeParamList,
|
|
650
679
|
routeGetIdList,
|
|
651
|
-
routeKeyChanges
|
|
652
|
-
(name) =>
|
|
653
|
-
name in previousRouteKeyList &&
|
|
654
|
-
routeKeyList[name] !== previousRouteKeyList[name]
|
|
655
|
-
),
|
|
680
|
+
routeKeyChanges,
|
|
656
681
|
});
|
|
657
682
|
}
|
|
658
683
|
|
|
@@ -660,21 +685,24 @@ export function useNavigationBuilder<
|
|
|
660
685
|
|
|
661
686
|
if (route?.params && !didConsumeNestedParams) {
|
|
662
687
|
let action: CommonActions.Action | undefined;
|
|
663
|
-
const stateFromParams = route.params.state;
|
|
664
688
|
|
|
665
|
-
if (isNavigationState(
|
|
689
|
+
if (isNavigationState(route.params.state) && !isNestedParamsConsumed) {
|
|
666
690
|
didConsumeNestedParams = true;
|
|
667
691
|
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
692
|
+
const stateFromParams = getStateFromParams(route.params, router.type);
|
|
693
|
+
|
|
694
|
+
if (stateFromParams != null) {
|
|
695
|
+
if (
|
|
696
|
+
options.routeNamesChangeBehavior === 'lastUnhandled' &&
|
|
697
|
+
doesStateHaveOnlyInvalidRoutes(stateFromParams)
|
|
698
|
+
) {
|
|
699
|
+
if (stateFromParams !== unhandledState) {
|
|
700
|
+
setUnhandledState(stateFromParams);
|
|
701
|
+
}
|
|
702
|
+
} else {
|
|
703
|
+
// If the route was updated with new state, we should reset to it
|
|
704
|
+
action = CommonActions.reset(stateFromParams);
|
|
674
705
|
}
|
|
675
|
-
} else {
|
|
676
|
-
// If the route was updated with new state, we should reset to it
|
|
677
|
-
action = CommonActions.reset(stateFromParams);
|
|
678
706
|
}
|
|
679
707
|
} else if (
|
|
680
708
|
typeof route.params.screen === 'string' &&
|
|
@@ -687,7 +715,7 @@ export function useNavigationBuilder<
|
|
|
687
715
|
options.routeNamesChangeBehavior === 'lastUnhandled' &&
|
|
688
716
|
!routeNames.includes(route.params.screen)
|
|
689
717
|
) {
|
|
690
|
-
const state = getStateFromParams(route.params);
|
|
718
|
+
const state = getStateFromParams(route.params, router.type);
|
|
691
719
|
|
|
692
720
|
if (state != null && !deepEqual(state, unhandledState)) {
|
|
693
721
|
setUnhandledState(state);
|
|
@@ -716,6 +744,18 @@ export function useNavigationBuilder<
|
|
|
716
744
|
})
|
|
717
745
|
: null;
|
|
718
746
|
|
|
747
|
+
if (
|
|
748
|
+
process.env.NODE_ENV !== 'production' &&
|
|
749
|
+
action != null &&
|
|
750
|
+
updatedState === null
|
|
751
|
+
) {
|
|
752
|
+
const names = routeNames.map((name) => `'${name}'`).join(', ');
|
|
753
|
+
|
|
754
|
+
console.error(
|
|
755
|
+
`The 'state' or 'screen' passed in the params couldn't be applied to the navigator with the screens: ${names}. This can happen if the params contain names of screens that don't exist in the navigator. The navigation specified in the params will be ignored.`
|
|
756
|
+
);
|
|
757
|
+
}
|
|
758
|
+
|
|
719
759
|
nextState =
|
|
720
760
|
updatedState !== null
|
|
721
761
|
? router.getRehydratedState(updatedState, {
|
package/src/useOnAction.tsx
CHANGED
|
@@ -54,6 +54,7 @@ export function useOnAction<State extends NavigationState>({
|
|
|
54
54
|
onRouteFocus: onRouteFocusParent,
|
|
55
55
|
addListener: addListenerParent,
|
|
56
56
|
onDispatchAction,
|
|
57
|
+
flushUpdates,
|
|
57
58
|
} = React.use(NavigationBuilderContext);
|
|
58
59
|
|
|
59
60
|
const tree = React.use(StaticTreeContext);
|
|
@@ -71,6 +72,11 @@ export function useOnAction<State extends NavigationState>({
|
|
|
71
72
|
action: NavigationAction,
|
|
72
73
|
visitedNavigators: Set<string> = new Set<string>()
|
|
73
74
|
) => {
|
|
75
|
+
// Apply any pending state updates scheduled during render before handling the action
|
|
76
|
+
// Otherwise the action will be handled with an outdated state,
|
|
77
|
+
// and the pending updates will overwrite the changes from the action
|
|
78
|
+
flushUpdates();
|
|
79
|
+
|
|
74
80
|
const state = getState();
|
|
75
81
|
|
|
76
82
|
// Since actions can bubble both up and down, they could come to the same navigator again
|
|
@@ -93,6 +99,17 @@ export function useOnAction<State extends NavigationState>({
|
|
|
93
99
|
result =
|
|
94
100
|
result === null && action.target === state.key ? state : result;
|
|
95
101
|
|
|
102
|
+
if (result !== null && result.stale !== false) {
|
|
103
|
+
// Some actions (e.g. `RESET`) may return a stale state from the router
|
|
104
|
+
// We rehydrate it before storing so the stored state is always usable
|
|
105
|
+
// Otherwise anything reading the state before the next render
|
|
106
|
+
// (e.g. another dispatch immediately after) would get an outdated state
|
|
107
|
+
result = router.getRehydratedState(
|
|
108
|
+
result,
|
|
109
|
+
routerConfigOptionsRef.current
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
96
113
|
if (result !== null) {
|
|
97
114
|
if (state !== result) {
|
|
98
115
|
const isPrevented = shouldPreventRemove(
|
|
@@ -109,6 +126,13 @@ export function useOnAction<State extends NavigationState>({
|
|
|
109
126
|
return true;
|
|
110
127
|
}
|
|
111
128
|
|
|
129
|
+
if (getState() !== state) {
|
|
130
|
+
// Listeners for 'beforeRemove' may dispatch actions that change the state
|
|
131
|
+
// Then the result we have is outdated and would overwrite those changes
|
|
132
|
+
// So we handle the action again to calculate the result with the latest state
|
|
133
|
+
return onAction(action, new Set<string>());
|
|
134
|
+
}
|
|
135
|
+
|
|
112
136
|
onDispatchAction(action, false);
|
|
113
137
|
|
|
114
138
|
if (tree) {
|
|
@@ -166,6 +190,7 @@ export function useOnAction<State extends NavigationState>({
|
|
|
166
190
|
beforeRemoveListeners,
|
|
167
191
|
consumedParams,
|
|
168
192
|
emitter,
|
|
193
|
+
flushUpdates,
|
|
169
194
|
getState,
|
|
170
195
|
key,
|
|
171
196
|
onActionParent,
|