@react-navigation/native 6.1.0 → 6.1.2
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/Link.js +2 -12
- package/lib/commonjs/Link.js.map +1 -1
- package/lib/commonjs/LinkingContext.js +0 -4
- package/lib/commonjs/LinkingContext.js.map +1 -1
- package/lib/commonjs/NavigationContainer.js +9 -31
- package/lib/commonjs/NavigationContainer.js.map +1 -1
- package/lib/commonjs/ServerContainer.js +2 -12
- package/lib/commonjs/ServerContainer.js.map +1 -1
- package/lib/commonjs/ServerContext.js +0 -4
- package/lib/commonjs/ServerContext.js.map +1 -1
- package/lib/commonjs/createMemoryHistory.js +29 -54
- package/lib/commonjs/createMemoryHistory.js.map +1 -1
- package/lib/commonjs/extractPathFromURL.js +2 -8
- package/lib/commonjs/extractPathFromURL.js.map +1 -1
- package/lib/commonjs/index.js +0 -17
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/theming/DarkTheme.js.map +1 -1
- package/lib/commonjs/theming/DefaultTheme.js.map +1 -1
- package/lib/commonjs/theming/ThemeContext.js +0 -6
- package/lib/commonjs/theming/ThemeContext.js.map +1 -1
- package/lib/commonjs/theming/ThemeProvider.js +0 -6
- package/lib/commonjs/theming/ThemeProvider.js.map +1 -1
- package/lib/commonjs/theming/useTheme.js +0 -6
- package/lib/commonjs/theming/useTheme.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useBackButton.js +0 -9
- package/lib/commonjs/useBackButton.js.map +1 -1
- package/lib/commonjs/useDocumentTitle.js +1 -12
- package/lib/commonjs/useDocumentTitle.js.map +1 -1
- package/lib/commonjs/useDocumentTitle.native.js +2 -2
- package/lib/commonjs/useDocumentTitle.native.js.map +1 -1
- package/lib/commonjs/useLinkBuilder.js +5 -15
- package/lib/commonjs/useLinkBuilder.js.map +1 -1
- package/lib/commonjs/useLinkProps.js +8 -24
- package/lib/commonjs/useLinkProps.js.map +1 -1
- package/lib/commonjs/useLinkTo.js +0 -12
- package/lib/commonjs/useLinkTo.js.map +1 -1
- package/lib/commonjs/useLinking.js +35 -79
- package/lib/commonjs/useLinking.js.map +1 -1
- package/lib/commonjs/useLinking.native.js +9 -36
- package/lib/commonjs/useLinking.native.js.map +1 -1
- package/lib/commonjs/useScrollToTop.js +10 -17
- package/lib/commonjs/useScrollToTop.js.map +1 -1
- package/lib/commonjs/useThenable.js +2 -9
- package/lib/commonjs/useThenable.js.map +1 -1
- package/lib/module/Link.js +2 -6
- package/lib/module/Link.js.map +1 -1
- package/lib/module/LinkingContext.js.map +1 -1
- package/lib/module/NavigationContainer.js +9 -18
- package/lib/module/NavigationContainer.js.map +1 -1
- package/lib/module/ServerContainer.js +2 -5
- package/lib/module/ServerContainer.js.map +1 -1
- package/lib/module/ServerContext.js.map +1 -1
- package/lib/module/createMemoryHistory.js +29 -52
- package/lib/module/createMemoryHistory.js.map +1 -1
- package/lib/module/extractPathFromURL.js +2 -5
- package/lib/module/extractPathFromURL.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/theming/DarkTheme.js.map +1 -1
- package/lib/module/theming/DefaultTheme.js.map +1 -1
- package/lib/module/theming/ThemeContext.js.map +1 -1
- package/lib/module/theming/ThemeProvider.js.map +1 -1
- package/lib/module/theming/useTheme.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useBackButton.js +0 -3
- package/lib/module/useBackButton.js.map +1 -1
- package/lib/module/useDocumentTitle.js +1 -9
- package/lib/module/useDocumentTitle.js.map +1 -1
- package/lib/module/useDocumentTitle.native.js +2 -1
- package/lib/module/useDocumentTitle.native.js.map +1 -1
- package/lib/module/useLinkBuilder.js +5 -9
- package/lib/module/useLinkBuilder.js.map +1 -1
- package/lib/module/useLinkProps.js +8 -16
- package/lib/module/useLinkProps.js.map +1 -1
- package/lib/module/useLinkTo.js +0 -5
- package/lib/module/useLinkTo.js.map +1 -1
- package/lib/module/useLinking.js +35 -70
- package/lib/module/useLinking.js.map +1 -1
- package/lib/module/useLinking.native.js +9 -26
- package/lib/module/useLinking.native.js.map +1 -1
- package/lib/module/useScrollToTop.js +10 -13
- package/lib/module/useScrollToTop.js.map +1 -1
- package/lib/module/useThenable.js +2 -5
- package/lib/module/useThenable.js.map +1 -1
- package/lib/typescript/src/Link.d.ts +1 -0
- package/lib/typescript/src/Link.d.ts.map +1 -0
- package/lib/typescript/src/LinkingContext.d.ts +1 -0
- package/lib/typescript/src/LinkingContext.d.ts.map +1 -0
- package/lib/typescript/src/NavigationContainer.d.ts +1 -0
- package/lib/typescript/src/NavigationContainer.d.ts.map +1 -0
- package/lib/typescript/src/ServerContainer.d.ts +1 -0
- package/lib/typescript/src/ServerContainer.d.ts.map +1 -0
- package/lib/typescript/src/ServerContext.d.ts +1 -0
- package/lib/typescript/src/ServerContext.d.ts.map +1 -0
- package/lib/typescript/src/__mocks__/window.d.ts +1 -0
- package/lib/typescript/src/__mocks__/window.d.ts.map +1 -0
- package/lib/typescript/src/createMemoryHistory.d.ts +1 -0
- package/lib/typescript/src/createMemoryHistory.d.ts.map +1 -0
- package/lib/typescript/src/extractPathFromURL.d.ts +1 -0
- package/lib/typescript/src/extractPathFromURL.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/theming/DarkTheme.d.ts +1 -0
- package/lib/typescript/src/theming/DarkTheme.d.ts.map +1 -0
- package/lib/typescript/src/theming/DefaultTheme.d.ts +1 -0
- package/lib/typescript/src/theming/DefaultTheme.d.ts.map +1 -0
- package/lib/typescript/src/theming/ThemeContext.d.ts +1 -0
- package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -0
- package/lib/typescript/src/theming/ThemeProvider.d.ts +1 -0
- package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/src/theming/useTheme.d.ts +1 -0
- package/lib/typescript/src/theming/useTheme.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +1 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/useBackButton.d.ts +1 -0
- package/lib/typescript/src/useBackButton.d.ts.map +1 -0
- package/lib/typescript/src/useDocumentTitle.d.ts +1 -0
- package/lib/typescript/src/useDocumentTitle.d.ts.map +1 -0
- package/lib/typescript/src/useDocumentTitle.native.d.ts +1 -0
- package/lib/typescript/src/useDocumentTitle.native.d.ts.map +1 -0
- package/lib/typescript/src/useLinkBuilder.d.ts +1 -0
- package/lib/typescript/src/useLinkBuilder.d.ts.map +1 -0
- package/lib/typescript/src/useLinkProps.d.ts +1 -0
- package/lib/typescript/src/useLinkProps.d.ts.map +1 -0
- package/lib/typescript/src/useLinkTo.d.ts +1 -0
- package/lib/typescript/src/useLinkTo.d.ts.map +1 -0
- package/lib/typescript/src/useLinking.d.ts +1 -0
- package/lib/typescript/src/useLinking.d.ts.map +1 -0
- package/lib/typescript/src/useLinking.native.d.ts +1 -0
- package/lib/typescript/src/useLinking.native.d.ts.map +1 -0
- package/lib/typescript/src/useScrollToTop.d.ts +1 -0
- package/lib/typescript/src/useScrollToTop.d.ts.map +1 -0
- package/lib/typescript/src/useThenable.d.ts +1 -0
- package/lib/typescript/src/useThenable.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/useScrollToTop.tsx +6 -1
|
@@ -3,12 +3,10 @@ import * as React from 'react';
|
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
4
|
import LinkingContext from './LinkingContext';
|
|
5
5
|
import useLinkTo from './useLinkTo';
|
|
6
|
-
|
|
7
6
|
const getStateFromParams = params => {
|
|
8
7
|
if (params !== null && params !== void 0 && params.state) {
|
|
9
8
|
return params.state;
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
if (params !== null && params !== void 0 && params.screen) {
|
|
13
11
|
return {
|
|
14
12
|
routes: [{
|
|
@@ -19,20 +17,16 @@ const getStateFromParams = params => {
|
|
|
19
17
|
}]
|
|
20
18
|
};
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
return undefined;
|
|
24
21
|
};
|
|
22
|
+
|
|
25
23
|
/**
|
|
26
24
|
* Hook to get props for an anchor tag so it can work with in page navigation.
|
|
27
25
|
*
|
|
28
26
|
* @param props.to Absolute path to screen (e.g. `/feeds/hot`).
|
|
29
27
|
* @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
|
|
30
28
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
29
|
export default function useLinkProps(_ref) {
|
|
34
|
-
var _options$getPathFromS;
|
|
35
|
-
|
|
36
30
|
let {
|
|
37
31
|
to,
|
|
38
32
|
action
|
|
@@ -43,26 +37,25 @@ export default function useLinkProps(_ref) {
|
|
|
43
37
|
options
|
|
44
38
|
} = React.useContext(LinkingContext);
|
|
45
39
|
const linkTo = useLinkTo();
|
|
46
|
-
|
|
47
40
|
const onPress = e => {
|
|
48
41
|
var _e$currentTarget;
|
|
49
|
-
|
|
50
42
|
let shouldHandle = false;
|
|
51
|
-
|
|
52
43
|
if (Platform.OS !== 'web' || !e) {
|
|
53
44
|
shouldHandle = e ? !e.defaultPrevented : true;
|
|
54
|
-
} else if (!e.defaultPrevented &&
|
|
45
|
+
} else if (!e.defaultPrevented &&
|
|
46
|
+
// onPress prevented default
|
|
55
47
|
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
56
|
-
!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && (
|
|
48
|
+
!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && (
|
|
49
|
+
// ignore clicks with modifier keys
|
|
57
50
|
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
58
|
-
e.button == null || e.button === 0) &&
|
|
51
|
+
e.button == null || e.button === 0) &&
|
|
52
|
+
// ignore everything but left clicks
|
|
59
53
|
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
60
54
|
[undefined, null, '', 'self'].includes((_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.target) // let browser handle "target=_blank" etc.
|
|
61
55
|
) {
|
|
62
56
|
e.preventDefault();
|
|
63
57
|
shouldHandle = true;
|
|
64
58
|
}
|
|
65
|
-
|
|
66
59
|
if (shouldHandle) {
|
|
67
60
|
if (action) {
|
|
68
61
|
if (navigation) {
|
|
@@ -77,8 +70,7 @@ export default function useLinkProps(_ref) {
|
|
|
77
70
|
}
|
|
78
71
|
}
|
|
79
72
|
};
|
|
80
|
-
|
|
81
|
-
const getPathFromStateHelper = (_options$getPathFromS = options === null || options === void 0 ? void 0 : options.getPathFromState) !== null && _options$getPathFromS !== void 0 ? _options$getPathFromS : getPathFromState;
|
|
73
|
+
const getPathFromStateHelper = (options === null || options === void 0 ? void 0 : options.getPathFromState) ?? getPathFromState;
|
|
82
74
|
const href = typeof to === 'string' ? to : getPathFromStateHelper({
|
|
83
75
|
routes: [{
|
|
84
76
|
name: to.screen,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","useLinkTo","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","to","action","root","useContext","navigation","options","linkTo","onPress","e","shouldHandle","OS","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","button","includes","currentTarget","target","preventDefault","dispatch","Error","getPathFromStateHelper","href","config","accessibilityRole"],"
|
|
1
|
+
{"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","useLinkTo","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","to","action","root","useContext","navigation","options","linkTo","onPress","e","shouldHandle","OS","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","button","includes","currentTarget","target","preventDefault","dispatch","Error","getPathFromStateHelper","href","config","accessibilityRole"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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"}
|
package/lib/module/useLinkTo.js
CHANGED
|
@@ -8,25 +8,20 @@ export default function useLinkTo() {
|
|
|
8
8
|
if (navigation === undefined) {
|
|
9
9
|
throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
if (typeof to !== 'string') {
|
|
13
12
|
// @ts-expect-error: This is fine
|
|
14
13
|
navigation.navigate(to.screen, to.params);
|
|
15
14
|
return;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
if (!to.startsWith('/')) {
|
|
19
17
|
throw new Error(`The path must start with '/' (${to}).`);
|
|
20
18
|
}
|
|
21
|
-
|
|
22
19
|
const {
|
|
23
20
|
options
|
|
24
21
|
} = linking;
|
|
25
22
|
const state = options !== null && options !== void 0 && options.getStateFromPath ? options.getStateFromPath(to, options.config) : getStateFromPath(to, options === null || options === void 0 ? void 0 : options.config);
|
|
26
|
-
|
|
27
23
|
if (state) {
|
|
28
24
|
const action = getActionFromState(state, options === null || options === void 0 ? void 0 : options.config);
|
|
29
|
-
|
|
30
25
|
if (action !== undefined) {
|
|
31
26
|
navigation.dispatch(action);
|
|
32
27
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getActionFromState","getStateFromPath","NavigationContainerRefContext","React","LinkingContext","useLinkTo","navigation","useContext","linking","linkTo","useCallback","to","undefined","Error","navigate","screen","params","startsWith","options","state","config","action","dispatch","reset"],"
|
|
1
|
+
{"version":3,"names":["getActionFromState","getStateFromPath","NavigationContainerRefContext","React","LinkingContext","useLinkTo","navigation","useContext","linking","linkTo","useCallback","to","undefined","Error","navigate","screen","params","startsWith","options","state","config","action","dispatch","reset"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,gBAAgB,EAChBC,6BAA6B,QACxB,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAOC,cAAc,MAAM,kBAAkB;AAiB7C,eAAe,SAASC,SAAS,GAE7B;EACF,MAAMC,UAAU,GAAGH,KAAK,CAACI,UAAU,CAACL,6BAA6B,CAAC;EAClE,MAAMM,OAAO,GAAGL,KAAK,CAACI,UAAU,CAACH,cAAc,CAAC;EAEhD,MAAMK,MAAM,GAAGN,KAAK,CAACO,WAAW,CAC7BC,EAAiB,IAAK;IACrB,IAAIL,UAAU,KAAKM,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFAAkF,CACnF;IACH;IAEA,IAAI,OAAOF,EAAE,KAAK,QAAQ,EAAE;MAC1B;MACAL,UAAU,CAACQ,QAAQ,CAACH,EAAE,CAACI,MAAM,EAAEJ,EAAE,CAACK,MAAM,CAAC;MACzC;IACF;IAEA,IAAI,CAACL,EAAE,CAACM,UAAU,CAAC,GAAG,CAAC,EAAE;MACvB,MAAM,IAAIJ,KAAK,CAAE,iCAAgCF,EAAG,IAAG,CAAC;IAC1D;IAEA,MAAM;MAAEO;IAAQ,CAAC,GAAGV,OAAO;IAE3B,MAAMW,KAAK,GAAGD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEjB,gBAAgB,GACnCiB,OAAO,CAACjB,gBAAgB,CAACU,EAAE,EAAEO,OAAO,CAACE,MAAM,CAAC,GAC5CnB,gBAAgB,CAACU,EAAE,EAAEO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,MAAM,CAAC;IAEzC,IAAID,KAAK,EAAE;MACT,MAAME,MAAM,GAAGrB,kBAAkB,CAACmB,KAAK,EAAED,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,MAAM,CAAC;MAEzD,IAAIC,MAAM,KAAKT,SAAS,EAAE;QACxBN,UAAU,CAACgB,QAAQ,CAACD,MAAM,CAAC;MAC7B,CAAC,MAAM;QACLf,UAAU,CAACiB,KAAK,CAACJ,KAAK,CAAC;MACzB;IACF,CAAC,MAAM;MACL,MAAM,IAAIN,KAAK,CAAC,iDAAiD,CAAC;IACpE;EACF,CAAC,EACD,CAACL,OAAO,EAAEF,UAAU,CAAC,CACtB;EAED,OAAOG,MAAM;AACf"}
|
package/lib/module/useLinking.js
CHANGED
|
@@ -3,7 +3,6 @@ import isEqual from 'fast-deep-equal';
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import createMemoryHistory from './createMemoryHistory';
|
|
5
5
|
import ServerContext from './ServerContext';
|
|
6
|
-
|
|
7
6
|
/**
|
|
8
7
|
* Find the matching navigation state that changed between 2 navigation states
|
|
9
8
|
* e.g.: a -> b -> c -> d and a -> b -> c -> e -> f, if history in b changed, b is the matching state
|
|
@@ -11,36 +10,34 @@ import ServerContext from './ServerContext';
|
|
|
11
10
|
const findMatchingState = (a, b) => {
|
|
12
11
|
if (a === undefined || b === undefined || a.key !== b.key) {
|
|
13
12
|
return [undefined, undefined];
|
|
14
|
-
}
|
|
15
|
-
|
|
13
|
+
}
|
|
16
14
|
|
|
15
|
+
// Tab and drawer will have `history` property, but stack will have history in `routes`
|
|
17
16
|
const aHistoryLength = a.history ? a.history.length : a.routes.length;
|
|
18
17
|
const bHistoryLength = b.history ? b.history.length : b.routes.length;
|
|
19
18
|
const aRoute = a.routes[a.index];
|
|
20
19
|
const bRoute = b.routes[b.index];
|
|
21
20
|
const aChildState = aRoute.state;
|
|
22
|
-
const bChildState = bRoute.state;
|
|
21
|
+
const bChildState = bRoute.state;
|
|
22
|
+
|
|
23
|
+
// Stop here if this is the state object that changed:
|
|
23
24
|
// - history length is different
|
|
24
25
|
// - focused routes are different
|
|
25
26
|
// - one of them doesn't have child state
|
|
26
27
|
// - child state keys are different
|
|
27
|
-
|
|
28
28
|
if (aHistoryLength !== bHistoryLength || aRoute.key !== bRoute.key || aChildState === undefined || bChildState === undefined || aChildState.key !== bChildState.key) {
|
|
29
29
|
return [a, b];
|
|
30
30
|
}
|
|
31
|
-
|
|
32
31
|
return findMatchingState(aChildState, bChildState);
|
|
33
32
|
};
|
|
33
|
+
|
|
34
34
|
/**
|
|
35
35
|
* Run async function in series as it's called.
|
|
36
36
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
37
|
const series = cb => {
|
|
40
38
|
// Whether we're currently handling a callback
|
|
41
39
|
let handling = false;
|
|
42
40
|
let queue = [];
|
|
43
|
-
|
|
44
41
|
const callback = async () => {
|
|
45
42
|
try {
|
|
46
43
|
if (handling) {
|
|
@@ -49,12 +46,10 @@ const series = cb => {
|
|
|
49
46
|
queue.unshift(callback);
|
|
50
47
|
return;
|
|
51
48
|
}
|
|
52
|
-
|
|
53
49
|
handling = true;
|
|
54
50
|
await cb();
|
|
55
51
|
} finally {
|
|
56
52
|
handling = false;
|
|
57
|
-
|
|
58
53
|
if (queue.length) {
|
|
59
54
|
// If we have queued items, handle the last one
|
|
60
55
|
const last = queue.pop();
|
|
@@ -62,10 +57,8 @@ const series = cb => {
|
|
|
62
57
|
}
|
|
63
58
|
}
|
|
64
59
|
};
|
|
65
|
-
|
|
66
60
|
return callback;
|
|
67
61
|
};
|
|
68
|
-
|
|
69
62
|
let linkingHandlers = [];
|
|
70
63
|
export default function useLinking(ref, _ref) {
|
|
71
64
|
let {
|
|
@@ -80,33 +73,28 @@ export default function useLinking(ref, _ref) {
|
|
|
80
73
|
if (process.env.NODE_ENV === 'production') {
|
|
81
74
|
return undefined;
|
|
82
75
|
}
|
|
83
|
-
|
|
84
76
|
if (independent) {
|
|
85
77
|
return undefined;
|
|
86
78
|
}
|
|
87
|
-
|
|
88
79
|
if (enabled !== false && linkingHandlers.length) {
|
|
89
80
|
console.error(['Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:', "- You don't have multiple NavigationContainers in the app each with 'linking' enabled", '- Only a single instance of the root component is rendered'].join('\n').trim());
|
|
90
81
|
}
|
|
91
|
-
|
|
92
82
|
const handler = Symbol();
|
|
93
|
-
|
|
94
83
|
if (enabled !== false) {
|
|
95
84
|
linkingHandlers.push(handler);
|
|
96
85
|
}
|
|
97
|
-
|
|
98
86
|
return () => {
|
|
99
87
|
const index = linkingHandlers.indexOf(handler);
|
|
100
|
-
|
|
101
88
|
if (index > -1) {
|
|
102
89
|
linkingHandlers.splice(index, 1);
|
|
103
90
|
}
|
|
104
91
|
};
|
|
105
92
|
}, [enabled, independent]);
|
|
106
|
-
const [history] = React.useState(createMemoryHistory);
|
|
93
|
+
const [history] = React.useState(createMemoryHistory);
|
|
94
|
+
|
|
95
|
+
// We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners
|
|
107
96
|
// This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`
|
|
108
97
|
// Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect
|
|
109
|
-
|
|
110
98
|
const enabledRef = React.useRef(enabled);
|
|
111
99
|
const configRef = React.useRef(config);
|
|
112
100
|
const getStateFromPathRef = React.useRef(getStateFromPath);
|
|
@@ -122,29 +110,23 @@ export default function useLinking(ref, _ref) {
|
|
|
122
110
|
const server = React.useContext(ServerContext);
|
|
123
111
|
const getInitialState = React.useCallback(() => {
|
|
124
112
|
let value;
|
|
125
|
-
|
|
126
113
|
if (enabledRef.current) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const location = (_server$location = server === null || server === void 0 ? void 0 : server.location) !== null && _server$location !== void 0 ? _server$location : typeof window !== 'undefined' ? window.location : undefined;
|
|
114
|
+
const location = (server === null || server === void 0 ? void 0 : server.location) ?? (typeof window !== 'undefined' ? window.location : undefined);
|
|
130
115
|
const path = location ? location.pathname + location.search : undefined;
|
|
131
|
-
|
|
132
116
|
if (path) {
|
|
133
117
|
value = getStateFromPathRef.current(path, configRef.current);
|
|
134
118
|
}
|
|
135
119
|
}
|
|
136
|
-
|
|
137
120
|
const thenable = {
|
|
138
121
|
then(onfulfilled) {
|
|
139
122
|
return Promise.resolve(onfulfilled ? onfulfilled(value) : value);
|
|
140
123
|
},
|
|
141
|
-
|
|
142
124
|
catch() {
|
|
143
125
|
return thenable;
|
|
144
126
|
}
|
|
145
|
-
|
|
146
127
|
};
|
|
147
|
-
return thenable;
|
|
128
|
+
return thenable;
|
|
129
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
148
130
|
}, []);
|
|
149
131
|
const previousIndexRef = React.useRef(undefined);
|
|
150
132
|
const previousStateRef = React.useRef(undefined);
|
|
@@ -152,52 +134,46 @@ export default function useLinking(ref, _ref) {
|
|
|
152
134
|
React.useEffect(() => {
|
|
153
135
|
previousIndexRef.current = history.index;
|
|
154
136
|
return history.listen(() => {
|
|
155
|
-
var _previousIndexRef$cur;
|
|
156
|
-
|
|
157
137
|
const navigation = ref.current;
|
|
158
|
-
|
|
159
138
|
if (!navigation || !enabled) {
|
|
160
139
|
return;
|
|
161
140
|
}
|
|
162
|
-
|
|
163
141
|
const path = location.pathname + location.search;
|
|
164
142
|
const index = history.index;
|
|
165
|
-
const previousIndex =
|
|
143
|
+
const previousIndex = previousIndexRef.current ?? 0;
|
|
166
144
|
previousIndexRef.current = index;
|
|
167
|
-
pendingPopStatePathRef.current = path;
|
|
145
|
+
pendingPopStatePathRef.current = path;
|
|
146
|
+
|
|
147
|
+
// When browser back/forward is clicked, we first need to check if state object for this index exists
|
|
168
148
|
// If it does we'll reset to that state object
|
|
169
149
|
// Otherwise, we'll handle it like a regular deep link
|
|
170
|
-
|
|
171
150
|
const record = history.get(index);
|
|
172
|
-
|
|
173
151
|
if ((record === null || record === void 0 ? void 0 : record.path) === path && record !== null && record !== void 0 && record.state) {
|
|
174
152
|
navigation.resetRoot(record.state);
|
|
175
153
|
return;
|
|
176
154
|
}
|
|
155
|
+
const state = getStateFromPathRef.current(path, configRef.current);
|
|
177
156
|
|
|
178
|
-
|
|
157
|
+
// We should only dispatch an action when going forward
|
|
179
158
|
// Otherwise the action will likely add items to history, which would mess things up
|
|
180
|
-
|
|
181
159
|
if (state) {
|
|
182
160
|
// Make sure that the routes in the state exist in the root navigator
|
|
183
161
|
// Otherwise there's an error in the linking configuration
|
|
184
162
|
const rootState = navigation.getRootState();
|
|
185
|
-
|
|
186
163
|
if (state.routes.some(r => !(rootState !== null && rootState !== void 0 && rootState.routeNames.includes(r.name)))) {
|
|
187
164
|
console.warn("The navigation state parsed from the URL contains routes not present in the root navigator. This usually means that the linking configuration doesn't match the navigation structure. See https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.");
|
|
188
165
|
return;
|
|
189
166
|
}
|
|
190
|
-
|
|
191
167
|
if (index > previousIndex) {
|
|
192
168
|
const action = getActionFromStateRef.current(state, configRef.current);
|
|
193
|
-
|
|
194
169
|
if (action !== undefined) {
|
|
195
170
|
try {
|
|
196
171
|
navigation.dispatch(action);
|
|
197
172
|
} catch (e) {
|
|
198
173
|
// Ignore any errors from deep linking.
|
|
199
174
|
// This could happen in case of malformed links, navigation object not being initialized etc.
|
|
200
|
-
console.warn(`An error occurred when trying to handle the link '${path}': ${typeof e === 'object' && e != null && 'message' in e ?
|
|
175
|
+
console.warn(`An error occurred when trying to handle the link '${path}': ${typeof e === 'object' && e != null && 'message' in e ?
|
|
176
|
+
// @ts-expect-error: we're already checking for this
|
|
201
177
|
e.message : e}`);
|
|
202
178
|
}
|
|
203
179
|
} else {
|
|
@@ -214,79 +190,67 @@ export default function useLinking(ref, _ref) {
|
|
|
214
190
|
}, [enabled, history, ref]);
|
|
215
191
|
React.useEffect(() => {
|
|
216
192
|
var _ref$current;
|
|
217
|
-
|
|
218
193
|
if (!enabled) {
|
|
219
194
|
return;
|
|
220
195
|
}
|
|
221
|
-
|
|
222
196
|
const getPathForRoute = (route, state) => {
|
|
223
197
|
// If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match
|
|
224
198
|
// This makes sure that we preserve the original URL for wildcard routes
|
|
225
199
|
if (route !== null && route !== void 0 && route.path) {
|
|
226
200
|
const stateForPath = getStateFromPathRef.current(route.path, configRef.current);
|
|
227
|
-
|
|
228
201
|
if (stateForPath) {
|
|
229
202
|
const focusedRoute = findFocusedRoute(stateForPath);
|
|
230
|
-
|
|
231
203
|
if (focusedRoute && focusedRoute.name === route.name && isEqual(focusedRoute.params, route.params)) {
|
|
232
204
|
return route.path;
|
|
233
205
|
}
|
|
234
206
|
}
|
|
235
207
|
}
|
|
236
|
-
|
|
237
208
|
return getPathFromStateRef.current(state, configRef.current);
|
|
238
209
|
};
|
|
239
|
-
|
|
240
210
|
if (ref.current) {
|
|
241
211
|
// We need to record the current metadata on the first render if they aren't set
|
|
242
212
|
// This will allow the initial state to be in the history entry
|
|
243
213
|
const state = ref.current.getRootState();
|
|
244
|
-
|
|
245
214
|
if (state) {
|
|
246
215
|
const route = findFocusedRoute(state);
|
|
247
216
|
const path = getPathForRoute(route, state);
|
|
248
|
-
|
|
249
217
|
if (previousStateRef.current === undefined) {
|
|
250
218
|
previousStateRef.current = state;
|
|
251
219
|
}
|
|
252
|
-
|
|
253
220
|
history.replace({
|
|
254
221
|
path,
|
|
255
222
|
state
|
|
256
223
|
});
|
|
257
224
|
}
|
|
258
225
|
}
|
|
259
|
-
|
|
260
226
|
const onStateChange = async () => {
|
|
261
227
|
const navigation = ref.current;
|
|
262
|
-
|
|
263
228
|
if (!navigation || !enabled) {
|
|
264
229
|
return;
|
|
265
230
|
}
|
|
266
|
-
|
|
267
231
|
const previousState = previousStateRef.current;
|
|
268
|
-
const state = navigation.getRootState();
|
|
232
|
+
const state = navigation.getRootState();
|
|
269
233
|
|
|
234
|
+
// root state may not available, for example when root navigators switch inside the container
|
|
270
235
|
if (!state) {
|
|
271
236
|
return;
|
|
272
237
|
}
|
|
273
|
-
|
|
274
238
|
const pendingPath = pendingPopStatePathRef.current;
|
|
275
239
|
const route = findFocusedRoute(state);
|
|
276
240
|
const path = getPathForRoute(route, state);
|
|
277
241
|
previousStateRef.current = state;
|
|
278
|
-
pendingPopStatePathRef.current = undefined;
|
|
242
|
+
pendingPopStatePathRef.current = undefined;
|
|
243
|
+
|
|
244
|
+
// To detect the kind of state change, we need to:
|
|
279
245
|
// - Find the common focused navigation state in previous and current state
|
|
280
246
|
// - If only the route keys changed, compare history/routes.length to check if we go back/forward/replace
|
|
281
247
|
// - If no common focused navigation state found, it's a replace
|
|
282
|
-
|
|
283
248
|
const [previousFocusedState, focusedState] = findMatchingState(previousState, state);
|
|
284
|
-
|
|
285
|
-
|
|
249
|
+
if (previousFocusedState && focusedState &&
|
|
250
|
+
// We should only handle push/pop if path changed from what was in last `popstate`
|
|
286
251
|
// Otherwise it's likely a change triggered by `popstate`
|
|
287
252
|
path !== pendingPath) {
|
|
288
253
|
const historyDelta = (focusedState.history ? focusedState.history.length : focusedState.routes.length) - (previousFocusedState.history ? previousFocusedState.history.length : previousFocusedState.routes.length);
|
|
289
|
-
|
|
290
254
|
if (historyDelta > 0) {
|
|
291
255
|
// If history length is increased, we should pushState
|
|
292
256
|
// Note that path might not actually change here, for example, drawer open should pushState
|
|
@@ -296,11 +260,11 @@ export default function useLinking(ref, _ref) {
|
|
|
296
260
|
});
|
|
297
261
|
} else if (historyDelta < 0) {
|
|
298
262
|
// If history length is decreased, i.e. entries were removed, we want to go back
|
|
263
|
+
|
|
299
264
|
const nextIndex = history.backIndex({
|
|
300
265
|
path
|
|
301
266
|
});
|
|
302
267
|
const currentIndex = history.index;
|
|
303
|
-
|
|
304
268
|
try {
|
|
305
269
|
if (nextIndex !== -1 && nextIndex < currentIndex) {
|
|
306
270
|
// An existing entry for this path exists and it's less than current index, go back to that
|
|
@@ -310,14 +274,15 @@ export default function useLinking(ref, _ref) {
|
|
|
310
274
|
// This won't be correct if multiple routes were pushed in one go before
|
|
311
275
|
// Usually this shouldn't happen and this is a fallback for that
|
|
312
276
|
await history.go(historyDelta);
|
|
313
|
-
}
|
|
314
|
-
|
|
277
|
+
}
|
|
315
278
|
|
|
279
|
+
// Store the updated state as well as fix the path if incorrect
|
|
316
280
|
history.replace({
|
|
317
281
|
path,
|
|
318
282
|
state
|
|
319
283
|
});
|
|
320
|
-
} catch (e) {
|
|
284
|
+
} catch (e) {
|
|
285
|
+
// The navigation was interrupted
|
|
321
286
|
}
|
|
322
287
|
} else {
|
|
323
288
|
// If history length is unchanged, we want to replaceState
|
|
@@ -334,11 +299,11 @@ export default function useLinking(ref, _ref) {
|
|
|
334
299
|
state
|
|
335
300
|
});
|
|
336
301
|
}
|
|
337
|
-
};
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
// We debounce onStateChange coz we don't want multiple state changes to be handled at one time
|
|
338
305
|
// This could happen since `history.go(n)` is asynchronous
|
|
339
306
|
// If `pushState` or `replaceState` were called before `history.go(n)` completes, it'll mess stuff up
|
|
340
|
-
|
|
341
|
-
|
|
342
307
|
return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.addListener('state', series(onStateChange));
|
|
343
308
|
});
|
|
344
309
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","isEqual","React","createMemoryHistory","ServerContext","findMatchingState","a","b","undefined","key","aHistoryLength","history","length","routes","bHistoryLength","aRoute","index","bRoute","aChildState","state","bChildState","series","cb","handling","queue","callback","unshift","last","pop","linkingHandlers","useLinking","ref","independent","enabled","config","useEffect","process","env","NODE_ENV","console","error","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","current","server","useContext","getInitialState","useCallback","value","location","window","path","pathname","search","thenable","then","onfulfilled","Promise","resolve","catch","previousIndexRef","previousStateRef","pendingPopStatePathRef","listen","navigation","previousIndex","record","get","resetRoot","rootState","getRootState","some","r","routeNames","includes","name","warn","action","dispatch","e","message","getPathForRoute","route","stateForPath","focusedRoute","params","replace","onStateChange","previousState","pendingPath","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex","go","addListener"],"sources":["useLinking.tsx"],"sourcesContent":["import {\n findFocusedRoute,\n getActionFromState as getActionFromStateDefault,\n getPathFromState as getPathFromStateDefault,\n getStateFromPath as getStateFromPathDefault,\n NavigationContainerRef,\n NavigationState,\n ParamListBase,\n} from '@react-navigation/core';\nimport isEqual from 'fast-deep-equal';\nimport * as React from 'react';\n\nimport createMemoryHistory from './createMemoryHistory';\nimport ServerContext from './ServerContext';\nimport type { LinkingOptions } from './types';\n\ntype ResultState = ReturnType<typeof getStateFromPathDefault>;\n\n/**\n * Find the matching navigation state that changed between 2 navigation states\n * e.g.: a -> b -> c -> d and a -> b -> c -> e -> f, if history in b changed, b is the matching state\n */\nconst findMatchingState = <T extends NavigationState>(\n a: T | undefined,\n b: T | undefined\n): [T | undefined, T | undefined] => {\n if (a === undefined || b === undefined || a.key !== b.key) {\n return [undefined, undefined];\n }\n\n // Tab and drawer will have `history` property, but stack will have history in `routes`\n const aHistoryLength = a.history ? a.history.length : a.routes.length;\n const bHistoryLength = b.history ? b.history.length : b.routes.length;\n\n const aRoute = a.routes[a.index];\n const bRoute = b.routes[b.index];\n\n const aChildState = aRoute.state as T | undefined;\n const bChildState = bRoute.state as T | undefined;\n\n // Stop here if this is the state object that changed:\n // - history length is different\n // - focused routes are different\n // - one of them doesn't have child state\n // - child state keys are different\n if (\n aHistoryLength !== bHistoryLength ||\n aRoute.key !== bRoute.key ||\n aChildState === undefined ||\n bChildState === undefined ||\n aChildState.key !== bChildState.key\n ) {\n return [a, b];\n }\n\n return findMatchingState(aChildState, bChildState);\n};\n\n/**\n * Run async function in series as it's called.\n */\nconst series = (cb: () => Promise<void>) => {\n // Whether we're currently handling a callback\n let handling = false;\n let queue: (() => Promise<void>)[] = [];\n\n const callback = async () => {\n try {\n if (handling) {\n // If we're currently handling a previous event, wait before handling this one\n // Add the callback to the beginning of the queue\n queue.unshift(callback);\n return;\n }\n\n handling = true;\n\n await cb();\n } finally {\n handling = false;\n\n if (queue.length) {\n // If we have queued items, handle the last one\n const last = queue.pop();\n\n last?.();\n }\n }\n };\n\n return callback;\n};\n\nlet linkingHandlers: Symbol[] = [];\n\ntype Options = LinkingOptions<ParamListBase> & {\n independent?: boolean;\n};\n\nexport default function useLinking(\n ref: React.RefObject<NavigationContainerRef<ParamListBase>>,\n {\n independent,\n enabled = true,\n config,\n getStateFromPath = getStateFromPathDefault,\n getPathFromState = getPathFromStateDefault,\n getActionFromState = getActionFromStateDefault,\n }: Options\n) {\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') {\n return undefined;\n }\n\n if (independent) {\n return undefined;\n }\n\n if (enabled !== false && linkingHandlers.length) {\n console.error(\n [\n 'Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:',\n \"- You don't have multiple NavigationContainers in the app each with 'linking' enabled\",\n '- Only a single instance of the root component is rendered',\n ]\n .join('\\n')\n .trim()\n );\n }\n\n const handler = Symbol();\n\n if (enabled !== false) {\n linkingHandlers.push(handler);\n }\n\n return () => {\n const index = linkingHandlers.indexOf(handler);\n\n if (index > -1) {\n linkingHandlers.splice(index, 1);\n }\n };\n }, [enabled, independent]);\n\n const [history] = React.useState(createMemoryHistory);\n\n // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners\n // This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`\n // Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect\n const enabledRef = React.useRef(enabled);\n const configRef = React.useRef(config);\n const getStateFromPathRef = React.useRef(getStateFromPath);\n const getPathFromStateRef = React.useRef(getPathFromState);\n const getActionFromStateRef = React.useRef(getActionFromState);\n\n React.useEffect(() => {\n enabledRef.current = enabled;\n configRef.current = config;\n getStateFromPathRef.current = getStateFromPath;\n getPathFromStateRef.current = getPathFromState;\n getActionFromStateRef.current = getActionFromState;\n });\n\n const server = React.useContext(ServerContext);\n\n const getInitialState = React.useCallback(() => {\n let value: ResultState | undefined;\n\n if (enabledRef.current) {\n const location =\n server?.location ??\n (typeof window !== 'undefined' ? window.location : undefined);\n\n const path = location ? location.pathname + location.search : undefined;\n\n if (path) {\n value = getStateFromPathRef.current(path, configRef.current);\n }\n }\n\n const thenable = {\n then(onfulfilled?: (state: ResultState | undefined) => void) {\n return Promise.resolve(onfulfilled ? onfulfilled(value) : value);\n },\n catch() {\n return thenable;\n },\n };\n\n return thenable as PromiseLike<ResultState | undefined>;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const previousIndexRef = React.useRef<number | undefined>(undefined);\n const previousStateRef = React.useRef<NavigationState | undefined>(undefined);\n const pendingPopStatePathRef = React.useRef<string | undefined>(undefined);\n\n React.useEffect(() => {\n previousIndexRef.current = history.index;\n\n return history.listen(() => {\n const navigation = ref.current;\n\n if (!navigation || !enabled) {\n return;\n }\n\n const path = location.pathname + location.search;\n const index = history.index;\n\n const previousIndex = previousIndexRef.current ?? 0;\n\n previousIndexRef.current = index;\n pendingPopStatePathRef.current = path;\n\n // When browser back/forward is clicked, we first need to check if state object for this index exists\n // If it does we'll reset to that state object\n // Otherwise, we'll handle it like a regular deep link\n const record = history.get(index);\n\n if (record?.path === path && record?.state) {\n navigation.resetRoot(record.state);\n return;\n }\n\n const state = getStateFromPathRef.current(path, configRef.current);\n\n // We should only dispatch an action when going forward\n // Otherwise the action will likely add items to history, which would mess things up\n if (state) {\n // Make sure that the routes in the state exist in the root navigator\n // Otherwise there's an error in the linking configuration\n const rootState = navigation.getRootState();\n\n if (state.routes.some((r) => !rootState?.routeNames.includes(r.name))) {\n console.warn(\n \"The navigation state parsed from the URL contains routes not present in the root navigator. This usually means that the linking configuration doesn't match the navigation structure. See https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.\"\n );\n return;\n }\n\n if (index > previousIndex) {\n const action = getActionFromStateRef.current(\n state,\n configRef.current\n );\n\n if (action !== undefined) {\n try {\n navigation.dispatch(action);\n } catch (e) {\n // Ignore any errors from deep linking.\n // This could happen in case of malformed links, navigation object not being initialized etc.\n console.warn(\n `An error occurred when trying to handle the link '${path}': ${\n typeof e === 'object' && e != null && 'message' in e\n ? // @ts-expect-error: we're already checking for this\n e.message\n : e\n }`\n );\n }\n } else {\n navigation.resetRoot(state);\n }\n } else {\n navigation.resetRoot(state);\n }\n } else {\n // if current path didn't return any state, we should revert to initial state\n navigation.resetRoot(state);\n }\n });\n }, [enabled, history, ref]);\n\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const getPathForRoute = (\n route: ReturnType<typeof findFocusedRoute>,\n state: NavigationState\n ): string => {\n // If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match\n // This makes sure that we preserve the original URL for wildcard routes\n if (route?.path) {\n const stateForPath = getStateFromPathRef.current(\n route.path,\n configRef.current\n );\n\n if (stateForPath) {\n const focusedRoute = findFocusedRoute(stateForPath);\n\n if (\n focusedRoute &&\n focusedRoute.name === route.name &&\n isEqual(focusedRoute.params, route.params)\n ) {\n return route.path;\n }\n }\n }\n\n return getPathFromStateRef.current(state, configRef.current);\n };\n\n if (ref.current) {\n // We need to record the current metadata on the first render if they aren't set\n // This will allow the initial state to be in the history entry\n const state = ref.current.getRootState();\n\n if (state) {\n const route = findFocusedRoute(state);\n const path = getPathForRoute(route, state);\n\n if (previousStateRef.current === undefined) {\n previousStateRef.current = state;\n }\n\n history.replace({ path, state });\n }\n }\n\n const onStateChange = async () => {\n const navigation = ref.current;\n\n if (!navigation || !enabled) {\n return;\n }\n\n const previousState = previousStateRef.current;\n const state = navigation.getRootState();\n\n // root state may not available, for example when root navigators switch inside the container\n if (!state) {\n return;\n }\n\n const pendingPath = pendingPopStatePathRef.current;\n const route = findFocusedRoute(state);\n const path = getPathForRoute(route, state);\n\n previousStateRef.current = state;\n pendingPopStatePathRef.current = undefined;\n\n // To detect the kind of state change, we need to:\n // - Find the common focused navigation state in previous and current state\n // - If only the route keys changed, compare history/routes.length to check if we go back/forward/replace\n // - If no common focused navigation state found, it's a replace\n const [previousFocusedState, focusedState] = findMatchingState(\n previousState,\n state\n );\n\n if (\n previousFocusedState &&\n focusedState &&\n // We should only handle push/pop if path changed from what was in last `popstate`\n // Otherwise it's likely a change triggered by `popstate`\n path !== pendingPath\n ) {\n const historyDelta =\n (focusedState.history\n ? focusedState.history.length\n : focusedState.routes.length) -\n (previousFocusedState.history\n ? previousFocusedState.history.length\n : previousFocusedState.routes.length);\n\n if (historyDelta > 0) {\n // If history length is increased, we should pushState\n // Note that path might not actually change here, for example, drawer open should pushState\n history.push({ path, state });\n } else if (historyDelta < 0) {\n // If history length is decreased, i.e. entries were removed, we want to go back\n\n const nextIndex = history.backIndex({ path });\n const currentIndex = history.index;\n\n try {\n if (nextIndex !== -1 && nextIndex < currentIndex) {\n // An existing entry for this path exists and it's less than current index, go back to that\n await history.go(nextIndex - currentIndex);\n } else {\n // We couldn't find an existing entry to go back to, so we'll go back by the delta\n // This won't be correct if multiple routes were pushed in one go before\n // Usually this shouldn't happen and this is a fallback for that\n await history.go(historyDelta);\n }\n\n // Store the updated state as well as fix the path if incorrect\n history.replace({ path, state });\n } catch (e) {\n // The navigation was interrupted\n }\n } else {\n // If history length is unchanged, we want to replaceState\n history.replace({ path, state });\n }\n } else {\n // If no common navigation state was found, assume it's a replace\n // This would happen if the user did a reset/conditionally changed navigators\n history.replace({ path, state });\n }\n };\n\n // We debounce onStateChange coz we don't want multiple state changes to be handled at one time\n // This could happen since `history.go(n)` is asynchronous\n // If `pushState` or `replaceState` were called before `history.go(n)` completes, it'll mess stuff up\n return ref.current?.addListener('state', series(onStateChange));\n });\n\n return {\n getInitialState,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","isEqual","React","createMemoryHistory","ServerContext","findMatchingState","a","b","undefined","key","aHistoryLength","history","length","routes","bHistoryLength","aRoute","index","bRoute","aChildState","state","bChildState","series","cb","handling","queue","callback","unshift","last","pop","linkingHandlers","useLinking","ref","independent","enabled","config","useEffect","process","env","NODE_ENV","console","error","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","current","server","useContext","getInitialState","useCallback","value","location","window","path","pathname","search","thenable","then","onfulfilled","Promise","resolve","catch","previousIndexRef","previousStateRef","pendingPopStatePathRef","listen","navigation","previousIndex","record","get","resetRoot","rootState","getRootState","some","r","routeNames","includes","name","warn","action","dispatch","e","message","getPathForRoute","route","stateForPath","focusedRoute","params","replace","onStateChange","previousState","pendingPath","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex","go","addListener"],"sourceRoot":"../../src","sources":["useLinking.tsx"],"mappings":"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"}
|