@react-navigation/native 7.0.19 → 7.1.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/useBackButton.js +0 -1
- package/lib/commonjs/useBackButton.js.map +1 -1
- package/lib/commonjs/useDocumentTitle.native.js +0 -1
- package/lib/commonjs/useDocumentTitle.native.js.map +1 -1
- package/lib/commonjs/useLinkBuilder.js +30 -46
- package/lib/commonjs/useLinkBuilder.js.map +1 -1
- package/lib/commonjs/useLinkProps.js +14 -11
- package/lib/commonjs/useLinkProps.js.map +1 -1
- package/lib/commonjs/useLinkTo.js +1 -0
- package/lib/commonjs/useLinkTo.js.map +1 -1
- package/lib/commonjs/useRoutePath.js +32 -0
- package/lib/commonjs/useRoutePath.js.map +1 -0
- package/lib/module/useBackButton.js +0 -1
- package/lib/module/useBackButton.js.map +1 -1
- package/lib/module/useDocumentTitle.native.js +0 -1
- package/lib/module/useDocumentTitle.native.js.map +1 -1
- package/lib/module/useLinkBuilder.js +31 -47
- package/lib/module/useLinkBuilder.js.map +1 -1
- package/lib/module/useLinkProps.js +14 -11
- package/lib/module/useLinkProps.js.map +1 -1
- package/lib/module/useLinkTo.js +1 -0
- package/lib/module/useLinkTo.js.map +1 -1
- package/lib/module/useRoutePath.js +27 -0
- package/lib/module/useRoutePath.js.map +1 -0
- package/lib/typescript/commonjs/src/useBackButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/useDocumentTitle.native.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/useLinkBuilder.d.ts +4 -3
- package/lib/typescript/commonjs/src/useLinkBuilder.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/useLinkProps.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/useLinkTo.d.ts +1 -0
- package/lib/typescript/commonjs/src/useLinkTo.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/useRoutePath.d.ts +7 -0
- package/lib/typescript/commonjs/src/useRoutePath.d.ts.map +1 -0
- package/lib/typescript/module/src/useBackButton.d.ts.map +1 -1
- package/lib/typescript/module/src/useDocumentTitle.native.d.ts.map +1 -1
- package/lib/typescript/module/src/useLinkBuilder.d.ts +4 -3
- package/lib/typescript/module/src/useLinkBuilder.d.ts.map +1 -1
- package/lib/typescript/module/src/useLinkProps.d.ts.map +1 -1
- package/lib/typescript/module/src/useLinkTo.d.ts +1 -0
- package/lib/typescript/module/src/useLinkTo.d.ts.map +1 -1
- package/lib/typescript/module/src/useRoutePath.d.ts +7 -0
- package/lib/typescript/module/src/useRoutePath.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/useBackButton.tsx +0 -1
- package/src/useDocumentTitle.native.tsx +0 -1
- package/src/useLinkBuilder.tsx +36 -62
- package/src/useLinkProps.tsx +23 -12
- package/src/useLinkTo.tsx +1 -0
- package/src/useRoutePath.tsx +30 -0
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useBackButton = useBackButton;
|
|
7
|
-
// eslint-disable-next-line @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
|
|
8
7
|
function useBackButton(_) {
|
|
9
8
|
// No-op
|
|
10
9
|
// BackHandler is not available on web
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useBackButton","_"],"sourceRoot":"../../src","sources":["useBackButton.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["useBackButton","_"],"sourceRoot":"../../src","sources":["useBackButton.tsx"],"mappings":";;;;;;AAKO,SAASA,aAAaA,CAC3BC,CAAyD,EACzD;EACA;EACA;AAAA","ignoreList":[]}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useDocumentTitle = useDocumentTitle;
|
|
7
|
-
// eslint-disable-next-line @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
|
|
8
7
|
function useDocumentTitle() {
|
|
9
8
|
// Noop for native platforms
|
|
10
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDocumentTitle"],"sourceRoot":"../../src","sources":["useDocumentTitle.native.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["useDocumentTitle"],"sourceRoot":"../../src","sources":["useDocumentTitle.native.tsx"],"mappings":";;;;;;AAAO,SAASA,gBAAgBA,CAAA,EAAG;EACjC;AAAA","ignoreList":[]}
|
|
@@ -9,69 +9,53 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _LinkingContext = require("./LinkingContext.js");
|
|
10
10
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
11
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
-
const getRootStateForNavigate = (navigation, state) => {
|
|
13
|
-
const parent = navigation.getParent();
|
|
14
|
-
if (parent) {
|
|
15
|
-
const parentState = parent.getState();
|
|
16
|
-
return getRootStateForNavigate(parent, {
|
|
17
|
-
index: 0,
|
|
18
|
-
routes: [{
|
|
19
|
-
...parentState.routes[parentState.index],
|
|
20
|
-
state: state
|
|
21
|
-
}]
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
return state;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
12
|
/**
|
|
28
13
|
* Helpers to build href or action based on the linking options.
|
|
14
|
+
*
|
|
29
15
|
* @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.
|
|
30
16
|
*/
|
|
31
17
|
function useLinkBuilder() {
|
|
32
|
-
const
|
|
33
|
-
|
|
18
|
+
const {
|
|
19
|
+
options
|
|
20
|
+
} = React.useContext(_LinkingContext.LinkingContext);
|
|
21
|
+
const focusedRouteState = (0, _core.useStateForPath)();
|
|
22
|
+
const getPathFromStateHelper = options?.getPathFromState ?? _core.getPathFromState;
|
|
23
|
+
const getStateFromPathHelper = options?.getStateFromPath ?? _core.getStateFromPath;
|
|
24
|
+
const getActionFromStateHelper = options?.getActionFromState ?? _core.getActionFromState;
|
|
34
25
|
const buildHref = React.useCallback((name, params) => {
|
|
35
|
-
const {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
index: 0,
|
|
52
|
-
routes: [{
|
|
53
|
-
name,
|
|
54
|
-
params
|
|
55
|
-
}]
|
|
26
|
+
const addStateToInnermostRoute = state => {
|
|
27
|
+
const route = state?.routes[0];
|
|
28
|
+
if (route?.state) {
|
|
29
|
+
return {
|
|
30
|
+
routes: [{
|
|
31
|
+
...route,
|
|
32
|
+
state: addStateToInnermostRoute(route.state)
|
|
33
|
+
}]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
routes: [{
|
|
38
|
+
name,
|
|
39
|
+
params
|
|
40
|
+
}]
|
|
41
|
+
};
|
|
56
42
|
};
|
|
57
|
-
const
|
|
43
|
+
const state = addStateToInnermostRoute(focusedRouteState);
|
|
44
|
+
const path = getPathFromStateHelper(state, options?.config);
|
|
58
45
|
return path;
|
|
59
|
-
}, [
|
|
46
|
+
}, [options?.config, getPathFromStateHelper, focusedRouteState]);
|
|
60
47
|
const buildAction = React.useCallback(href => {
|
|
61
48
|
if (!href.startsWith('/')) {
|
|
62
49
|
throw new Error(`The href must start with '/' (${href}).`);
|
|
63
50
|
}
|
|
64
|
-
const
|
|
65
|
-
options
|
|
66
|
-
} = linking;
|
|
67
|
-
const state = options?.getStateFromPath ? options.getStateFromPath(href, options.config) : (0, _core.getStateFromPath)(href, options?.config);
|
|
51
|
+
const state = getStateFromPathHelper(href, options?.config);
|
|
68
52
|
if (state) {
|
|
69
|
-
const action = (
|
|
53
|
+
const action = getActionFromStateHelper(state, options?.config);
|
|
70
54
|
return action ?? _core.CommonActions.reset(state);
|
|
71
55
|
} else {
|
|
72
56
|
throw new Error('Failed to parse the href to a navigation state.');
|
|
73
57
|
}
|
|
74
|
-
}, [
|
|
58
|
+
}, [options?.config, getStateFromPathHelper, getActionFromStateHelper]);
|
|
75
59
|
return {
|
|
76
60
|
buildHref,
|
|
77
61
|
buildAction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_LinkingContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","
|
|
1
|
+
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_LinkingContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useLinkBuilder","options","useContext","LinkingContext","focusedRouteState","useStateForPath","getPathFromStateHelper","getPathFromState","getStateFromPathHelper","getStateFromPath","getActionFromStateHelper","getActionFromState","buildHref","useCallback","name","params","addStateToInnermostRoute","state","route","routes","path","config","buildAction","href","startsWith","Error","action","CommonActions","reset"],"sourceRoot":"../../src","sources":["useLinkBuilder.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -47,20 +47,23 @@ function useLinkProps({
|
|
|
47
47
|
options
|
|
48
48
|
} = React.useContext(_LinkingContext.LinkingContext);
|
|
49
49
|
const onPress = e => {
|
|
50
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
51
|
-
const hasModifierKey = e.metaKey || e.altKey || e.ctrlKey || e.shiftKey; // ignore clicks with modifier keys
|
|
52
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
53
|
-
const isLeftClick = e.button == null || e.button === 0; // only handle left clicks
|
|
54
|
-
const isSelfTarget = [undefined, null, '', 'self'].includes(
|
|
55
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
56
|
-
e.currentTarget?.target); // let browser handle "target=_blank" etc.
|
|
57
|
-
|
|
58
50
|
let shouldHandle = false;
|
|
59
51
|
if (_reactNative.Platform.OS !== 'web' || !e) {
|
|
52
|
+
e?.preventDefault?.();
|
|
60
53
|
shouldHandle = true;
|
|
61
|
-
} else
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
} else {
|
|
55
|
+
// ignore clicks with modifier keys
|
|
56
|
+
const hasModifierKey = 'metaKey' in e && e.metaKey || 'altKey' in e && e.altKey || 'ctrlKey' in e && e.ctrlKey || 'shiftKey' in e && e.shiftKey;
|
|
57
|
+
|
|
58
|
+
// only handle left clicks
|
|
59
|
+
const isLeftClick = 'button' in e ? e.button == null || e.button === 0 : true;
|
|
60
|
+
|
|
61
|
+
// let browser handle "target=_blank" etc.
|
|
62
|
+
const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', 'self'].includes(e.currentTarget.target) : true;
|
|
63
|
+
if (!hasModifierKey && isLeftClick && isSelfTarget) {
|
|
64
|
+
e.preventDefault?.();
|
|
65
|
+
shouldHandle = true;
|
|
66
|
+
}
|
|
64
67
|
}
|
|
65
68
|
if (shouldHandle) {
|
|
66
69
|
if (action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_reactNative","_LinkingContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","href","action","root","useContext","NavigationContainerRefContext","navigation","NavigationHelpersContext","options","LinkingContext","onPress","
|
|
1
|
+
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_reactNative","_LinkingContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","href","action","root","useContext","NavigationContainerRefContext","navigation","NavigationHelpersContext","options","LinkingContext","onPress","shouldHandle","Platform","OS","preventDefault","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","currentTarget","includes","target","dispatch","Error","navigate","getPathFromStateHelper","getPathFromState","config","accessibilityRole"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
11
11
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
12
|
/**
|
|
13
13
|
* Helper to navigate to a screen using a href based on the linking options.
|
|
14
|
+
*
|
|
14
15
|
* @returns function that receives the href to navigate to.
|
|
15
16
|
*/
|
|
16
17
|
function useLinkTo() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_useLinkBuilder","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useLinkTo","navigation","useContext","NavigationContainerRefContext","buildAction","useLinkBuilder","linkTo","useCallback","href","undefined","Error","action","dispatch"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AAAkD,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAElD;AACA;AACA;AACA;AACO,SAASW,SAASA,CAAA,EAAG;EAC1B,MAAMC,UAAU,GAAGxB,KAAK,CAACyB,UAAU,CAACC,mCAA6B,CAAC;EAClE,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,8BAAc,EAAC,CAAC;EAExC,MAAMC,MAAM,GAAG7B,KAAK,CAAC8B,WAAW,CAC7BC,IAAY,IAAK;IAChB,IAAIP,UAAU,KAAKQ,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFACF,CAAC;IACH;IAEA,MAAMC,MAAM,GAAGP,WAAW,CAACI,IAAI,CAAC;IAEhCP,UAAU,CAACW,QAAQ,CAACD,MAAM,CAAC;EAC7B,CAAC,EACD,CAACP,WAAW,EAAEH,UAAU,CAC1B,CAAC;EAED,OAAOK,MAAM;AACf","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_useLinkBuilder","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useLinkTo","navigation","useContext","NavigationContainerRefContext","buildAction","useLinkBuilder","linkTo","useCallback","href","undefined","Error","action","dispatch"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AAAkD,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAElD;AACA;AACA;AACA;AACA;AACO,SAASW,SAASA,CAAA,EAAG;EAC1B,MAAMC,UAAU,GAAGxB,KAAK,CAACyB,UAAU,CAACC,mCAA6B,CAAC;EAClE,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,8BAAc,EAAC,CAAC;EAExC,MAAMC,MAAM,GAAG7B,KAAK,CAAC8B,WAAW,CAC7BC,IAAY,IAAK;IAChB,IAAIP,UAAU,KAAKQ,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFACF,CAAC;IACH;IAEA,MAAMC,MAAM,GAAGP,WAAW,CAACI,IAAI,CAAC;IAEhCP,UAAU,CAACW,QAAQ,CAACD,MAAM,CAAC;EAC7B,CAAC,EACD,CAACP,WAAW,EAAEH,UAAU,CAC1B,CAAC;EAED,OAAOK,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useRoutePath = useRoutePath;
|
|
7
|
+
var _core = require("@react-navigation/core");
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _LinkingContext = require("./LinkingContext.js");
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
/**
|
|
13
|
+
* Hook to get the path for the current route based on linking options.
|
|
14
|
+
*
|
|
15
|
+
* @returns Path for the current route.
|
|
16
|
+
*/
|
|
17
|
+
function useRoutePath() {
|
|
18
|
+
const {
|
|
19
|
+
options
|
|
20
|
+
} = React.useContext(_LinkingContext.LinkingContext);
|
|
21
|
+
const state = (0, _core.useStateForPath)();
|
|
22
|
+
if (state === undefined) {
|
|
23
|
+
throw new Error("Couldn't find a state for the route object. Is your component inside a screen in a navigator?");
|
|
24
|
+
}
|
|
25
|
+
const getPathFromStateHelper = options?.getPathFromState ?? _core.getPathFromState;
|
|
26
|
+
const path = React.useMemo(() => {
|
|
27
|
+
const path = getPathFromStateHelper(state, options?.config);
|
|
28
|
+
return path;
|
|
29
|
+
}, [state, options?.config, getPathFromStateHelper]);
|
|
30
|
+
return path;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=useRoutePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_core","require","React","_interopRequireWildcard","_LinkingContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useRoutePath","options","useContext","LinkingContext","state","useStateForPath","undefined","Error","getPathFromStateHelper","getPathFromState","path","useMemo","config"],"sourceRoot":"../../src","sources":["useRoutePath.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AAAkD,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAElD;AACA;AACA;AACA;AACA;AACO,SAASW,YAAYA,CAAA,EAAG;EAC7B,MAAM;IAAEC;EAAQ,CAAC,GAAGxB,KAAK,CAACyB,UAAU,CAACC,8BAAc,CAAC;EACpD,MAAMC,KAAK,GAAG,IAAAC,qBAAe,EAAC,CAAC;EAE/B,IAAID,KAAK,KAAKE,SAAS,EAAE;IACvB,MAAM,IAAIC,KAAK,CACb,+FACF,CAAC;EACH;EAEA,MAAMC,sBAAsB,GAAGP,OAAO,EAAEQ,gBAAgB,IAAIA,sBAAgB;EAE5E,MAAMC,IAAI,GAAGjC,KAAK,CAACkC,OAAO,CAAC,MAAM;IAC/B,MAAMD,IAAI,GAAGF,sBAAsB,CAACJ,KAAK,EAAEH,OAAO,EAAEW,MAAM,CAAC;IAE3D,OAAOF,IAAI;EACb,CAAC,EAAE,CAACN,KAAK,EAAEH,OAAO,EAAEW,MAAM,EAAEJ,sBAAsB,CAAC,CAAC;EAEpD,OAAOE,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useBackButton","_"],"sourceRoot":"../../src","sources":["useBackButton.tsx"],"mappings":";;AAKA
|
|
1
|
+
{"version":3,"names":["useBackButton","_"],"sourceRoot":"../../src","sources":["useBackButton.tsx"],"mappings":";;AAKA,OAAO,SAASA,aAAaA,CAC3BC,CAAyD,EACzD;EACA;EACA;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDocumentTitle"],"sourceRoot":"../../src","sources":["useDocumentTitle.native.tsx"],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"names":["useDocumentTitle"],"sourceRoot":"../../src","sources":["useDocumentTitle.native.tsx"],"mappings":";;AAAA,OAAO,SAASA,gBAAgBA,CAAA,EAAG;EACjC;AAAA","ignoreList":[]}
|
|
@@ -1,71 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { CommonActions, getActionFromState, getPathFromState, getStateFromPath,
|
|
3
|
+
import { CommonActions, getActionFromState, getPathFromState, getStateFromPath, useStateForPath } from '@react-navigation/core';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { LinkingContext } from "./LinkingContext.js";
|
|
6
|
-
const getRootStateForNavigate = (navigation, state) => {
|
|
7
|
-
const parent = navigation.getParent();
|
|
8
|
-
if (parent) {
|
|
9
|
-
const parentState = parent.getState();
|
|
10
|
-
return getRootStateForNavigate(parent, {
|
|
11
|
-
index: 0,
|
|
12
|
-
routes: [{
|
|
13
|
-
...parentState.routes[parentState.index],
|
|
14
|
-
state: state
|
|
15
|
-
}]
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
return state;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
6
|
/**
|
|
22
7
|
* Helpers to build href or action based on the linking options.
|
|
8
|
+
*
|
|
23
9
|
* @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.
|
|
24
10
|
*/
|
|
25
11
|
export function useLinkBuilder() {
|
|
26
|
-
const
|
|
27
|
-
|
|
12
|
+
const {
|
|
13
|
+
options
|
|
14
|
+
} = React.useContext(LinkingContext);
|
|
15
|
+
const focusedRouteState = useStateForPath();
|
|
16
|
+
const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
|
|
17
|
+
const getStateFromPathHelper = options?.getStateFromPath ?? getStateFromPath;
|
|
18
|
+
const getActionFromStateHelper = options?.getActionFromState ?? getActionFromState;
|
|
28
19
|
const buildHref = React.useCallback((name, params) => {
|
|
29
|
-
const {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
index: 0,
|
|
46
|
-
routes: [{
|
|
47
|
-
name,
|
|
48
|
-
params
|
|
49
|
-
}]
|
|
20
|
+
const addStateToInnermostRoute = state => {
|
|
21
|
+
const route = state?.routes[0];
|
|
22
|
+
if (route?.state) {
|
|
23
|
+
return {
|
|
24
|
+
routes: [{
|
|
25
|
+
...route,
|
|
26
|
+
state: addStateToInnermostRoute(route.state)
|
|
27
|
+
}]
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
routes: [{
|
|
32
|
+
name,
|
|
33
|
+
params
|
|
34
|
+
}]
|
|
35
|
+
};
|
|
50
36
|
};
|
|
51
|
-
const
|
|
37
|
+
const state = addStateToInnermostRoute(focusedRouteState);
|
|
38
|
+
const path = getPathFromStateHelper(state, options?.config);
|
|
52
39
|
return path;
|
|
53
|
-
}, [
|
|
40
|
+
}, [options?.config, getPathFromStateHelper, focusedRouteState]);
|
|
54
41
|
const buildAction = React.useCallback(href => {
|
|
55
42
|
if (!href.startsWith('/')) {
|
|
56
43
|
throw new Error(`The href must start with '/' (${href}).`);
|
|
57
44
|
}
|
|
58
|
-
const
|
|
59
|
-
options
|
|
60
|
-
} = linking;
|
|
61
|
-
const state = options?.getStateFromPath ? options.getStateFromPath(href, options.config) : getStateFromPath(href, options?.config);
|
|
45
|
+
const state = getStateFromPathHelper(href, options?.config);
|
|
62
46
|
if (state) {
|
|
63
|
-
const action =
|
|
47
|
+
const action = getActionFromStateHelper(state, options?.config);
|
|
64
48
|
return action ?? CommonActions.reset(state);
|
|
65
49
|
} else {
|
|
66
50
|
throw new Error('Failed to parse the href to a navigation state.');
|
|
67
51
|
}
|
|
68
|
-
}, [
|
|
52
|
+
}, [options?.config, getStateFromPathHelper, getActionFromStateHelper]);
|
|
69
53
|
return {
|
|
70
54
|
buildHref,
|
|
71
55
|
buildAction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","getActionFromState","getPathFromState","getStateFromPath","
|
|
1
|
+
{"version":3,"names":["CommonActions","getActionFromState","getPathFromState","getStateFromPath","useStateForPath","React","LinkingContext","useLinkBuilder","options","useContext","focusedRouteState","getPathFromStateHelper","getStateFromPathHelper","getActionFromStateHelper","buildHref","useCallback","name","params","addStateToInnermostRoute","state","route","routes","path","config","buildAction","href","startsWith","Error","action","reset"],"sourceRoot":"../../src","sources":["useLinkBuilder.tsx"],"mappings":";;AAAA,SACEA,aAAa,EACbC,kBAAkB,EAClBC,gBAAgB,EAChBC,gBAAgB,EAChBC,eAAe,QACV,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,cAAc,QAAQ,qBAAkB;AAMjD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAC/B,MAAM;IAAEC;EAAQ,CAAC,GAAGH,KAAK,CAACI,UAAU,CAACH,cAAc,CAAC;EAEpD,MAAMI,iBAAiB,GAAGN,eAAe,CAAC,CAAC;EAE3C,MAAMO,sBAAsB,GAAGH,OAAO,EAAEN,gBAAgB,IAAIA,gBAAgB;EAC5E,MAAMU,sBAAsB,GAAGJ,OAAO,EAAEL,gBAAgB,IAAIA,gBAAgB;EAC5E,MAAMU,wBAAwB,GAC5BL,OAAO,EAAEP,kBAAkB,IAAIA,kBAAkB;EAEnD,MAAMa,SAAS,GAAGT,KAAK,CAACU,WAAW,CACjC,CAACC,IAAY,EAAEC,MAAe,KAAK;IACjC,MAAMC,wBAAwB,GAC5BC,KAA+B,IACd;MACjB,MAAMC,KAAK,GAAGD,KAAK,EAAEE,MAAM,CAAC,CAAC,CAAC;MAE9B,IAAID,KAAK,EAAED,KAAK,EAAE;QAChB,OAAO;UACLE,MAAM,EAAE,CACN;YACE,GAAGD,KAAK;YACRD,KAAK,EAAED,wBAAwB,CAACE,KAAK,CAACD,KAAK;UAC7C,CAAC;QAEL,CAAC;MACH;MAEA,OAAO;QACLE,MAAM,EAAE,CAAC;UAAEL,IAAI;UAAEC;QAAO,CAAC;MAC3B,CAAC;IACH,CAAC;IAED,MAAME,KAAK,GAAGD,wBAAwB,CAACR,iBAAiB,CAAC;IACzD,MAAMY,IAAI,GAAGX,sBAAsB,CAACQ,KAAK,EAAEX,OAAO,EAAEe,MAAM,CAAC;IAE3D,OAAOD,IAAI;EACb,CAAC,EACD,CAACd,OAAO,EAAEe,MAAM,EAAEZ,sBAAsB,EAAED,iBAAiB,CAC7D,CAAC;EAED,MAAMc,WAAW,GAAGnB,KAAK,CAACU,WAAW,CAClCU,IAAY,IAAK;IAChB,IAAI,CAACA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC,iCAAiCF,IAAI,IAAI,CAAC;IAC5D;IAEA,MAAMN,KAAK,GAAGP,sBAAsB,CAACa,IAAI,EAAEjB,OAAO,EAAEe,MAAM,CAAC;IAE3D,IAAIJ,KAAK,EAAE;MACT,MAAMS,MAAM,GAAGf,wBAAwB,CAACM,KAAK,EAAEX,OAAO,EAAEe,MAAM,CAAC;MAE/D,OAAOK,MAAM,IAAI5B,aAAa,CAAC6B,KAAK,CAACV,KAAK,CAAC;IAC7C,CAAC,MAAM;MACL,MAAM,IAAIQ,KAAK,CAAC,iDAAiD,CAAC;IACpE;EACF,CAAC,EACD,CAACnB,OAAO,EAAEe,MAAM,EAAEX,sBAAsB,EAAEC,wBAAwB,CACpE,CAAC;EAED,OAAO;IACLC,SAAS;IACTU;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -41,20 +41,23 @@ export function useLinkProps({
|
|
|
41
41
|
options
|
|
42
42
|
} = React.useContext(LinkingContext);
|
|
43
43
|
const onPress = e => {
|
|
44
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
45
|
-
const hasModifierKey = e.metaKey || e.altKey || e.ctrlKey || e.shiftKey; // ignore clicks with modifier keys
|
|
46
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
47
|
-
const isLeftClick = e.button == null || e.button === 0; // only handle left clicks
|
|
48
|
-
const isSelfTarget = [undefined, null, '', 'self'].includes(
|
|
49
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
50
|
-
e.currentTarget?.target); // let browser handle "target=_blank" etc.
|
|
51
|
-
|
|
52
44
|
let shouldHandle = false;
|
|
53
45
|
if (Platform.OS !== 'web' || !e) {
|
|
46
|
+
e?.preventDefault?.();
|
|
54
47
|
shouldHandle = true;
|
|
55
|
-
} else
|
|
56
|
-
|
|
57
|
-
|
|
48
|
+
} else {
|
|
49
|
+
// ignore clicks with modifier keys
|
|
50
|
+
const hasModifierKey = 'metaKey' in e && e.metaKey || 'altKey' in e && e.altKey || 'ctrlKey' in e && e.ctrlKey || 'shiftKey' in e && e.shiftKey;
|
|
51
|
+
|
|
52
|
+
// only handle left clicks
|
|
53
|
+
const isLeftClick = 'button' in e ? e.button == null || e.button === 0 : true;
|
|
54
|
+
|
|
55
|
+
// let browser handle "target=_blank" etc.
|
|
56
|
+
const isSelfTarget = e.currentTarget && 'target' in e.currentTarget ? [undefined, null, '', 'self'].includes(e.currentTarget.target) : true;
|
|
57
|
+
if (!hasModifierKey && isLeftClick && isSelfTarget) {
|
|
58
|
+
e.preventDefault?.();
|
|
59
|
+
shouldHandle = true;
|
|
60
|
+
}
|
|
58
61
|
}
|
|
59
62
|
if (shouldHandle) {
|
|
60
63
|
if (action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","href","action","root","useContext","navigation","options","onPress","e","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","
|
|
1
|
+
{"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","href","action","root","useContext","navigation","options","onPress","e","shouldHandle","OS","preventDefault","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","currentTarget","includes","target","dispatch","Error","navigate","getPathFromStateHelper","config","accessibilityRole"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":";;AAAA,SACEA,gBAAgB,EAEhBC,6BAA6B,EAC7BC,wBAAwB,QAGnB,wBAAwB;AAE/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAAqCC,QAAQ,QAAQ,cAAc;AAEnE,SAASC,cAAc,QAAQ,qBAAkB;AAqBjD,MAAMC,kBAAkB,GACtBC,MAAwD,IACQ;EAChE,IAAIA,MAAM,EAAEC,KAAK,EAAE;IACjB,OAAOD,MAAM,CAACC,KAAK;EACrB;EAEA,IAAID,MAAM,EAAEE,MAAM,EAAE;IAClB,OAAO;MACLC,MAAM,EAAE,CACN;QACEC,IAAI,EAAEJ,MAAM,CAACE,MAAM;QACnBF,MAAM,EAAEA,MAAM,CAACA,MAAM;QACrB;QACAC,KAAK,EAAED,MAAM,CAACE,MAAM,GAChBH,kBAAkB,CAChBC,MAAM,CAACA,MAGT,CAAC,GACDK;MACN,CAAC;IAEL,CAAC;EACH;EAEA,OAAOA,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAAkD;EAC5EJ,MAAM;EACNF,MAAM;EACNO,IAAI;EACJC;AACoB,CAAC,EAAE;EACvB,MAAMC,IAAI,GAAGb,KAAK,CAACc,UAAU,CAAChB,6BAA6B,CAAC;EAC5D,MAAMiB,UAAU,GAAGf,KAAK,CAACc,UAAU,CAACf,wBAAwB,CAAC;EAC7D,MAAM;IAAEiB;EAAQ,CAAC,GAAGhB,KAAK,CAACc,UAAU,CAACZ,cAAc,CAAC;EAEpD,MAAMe,OAAO,GACXC,CAA2E,IACxE;IACH,IAAIC,YAAY,GAAG,KAAK;IAExB,IAAIlB,QAAQ,CAACmB,EAAE,KAAK,KAAK,IAAI,CAACF,CAAC,EAAE;MAC/BA,CAAC,EAAEG,cAAc,GAAG,CAAC;MACrBF,YAAY,GAAG,IAAI;IACrB,CAAC,MAAM;MACL;MACA,MAAMG,cAAc,GACjB,SAAS,IAAIJ,CAAC,IAAIA,CAAC,CAACK,OAAO,IAC3B,QAAQ,IAAIL,CAAC,IAAIA,CAAC,CAACM,MAAO,IAC1B,SAAS,IAAIN,CAAC,IAAIA,CAAC,CAACO,OAAQ,IAC5B,UAAU,IAAIP,CAAC,IAAIA,CAAC,CAACQ,QAAS;;MAEjC;MACA,MAAMC,WAAW,GACf,QAAQ,IAAIT,CAAC,GAAGA,CAAC,CAACU,MAAM,IAAI,IAAI,IAAIV,CAAC,CAACU,MAAM,KAAK,CAAC,GAAG,IAAI;;MAE3D;MACA,MAAMC,YAAY,GAChBX,CAAC,CAACY,aAAa,IAAI,QAAQ,IAAIZ,CAAC,CAACY,aAAa,GAC1C,CAACrB,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAACsB,QAAQ,CAACb,CAAC,CAACY,aAAa,CAACE,MAAM,CAAC,GAC9D,IAAI;MAEV,IAAI,CAACV,cAAc,IAAIK,WAAW,IAAIE,YAAY,EAAE;QAClDX,CAAC,CAACG,cAAc,GAAG,CAAC;QACpBF,YAAY,GAAG,IAAI;MACrB;IACF;IAEA,IAAIA,YAAY,EAAE;MAChB,IAAIP,MAAM,EAAE;QACV,IAAIG,UAAU,EAAE;UACdA,UAAU,CAACkB,QAAQ,CAACrB,MAAM,CAAC;QAC7B,CAAC,MAAM,IAAIC,IAAI,EAAE;UACfA,IAAI,CAACoB,QAAQ,CAACrB,MAAM,CAAC;QACvB,CAAC,MAAM;UACL,MAAM,IAAIsB,KAAK,CACb,kFACF,CAAC;QACH;MACF,CAAC,MAAM;QACL;QACAnB,UAAU,EAAEoB,QAAQ,CAAC7B,MAAM,EAAEF,MAAM,CAAC;MACtC;IACF;EACF,CAAC;EAED,MAAMgC,sBAAsB,GAAGpB,OAAO,EAAEnB,gBAAgB,IAAIA,gBAAgB;EAE5E,OAAO;IACLc,IAAI,EACFA,IAAI,KACHV,QAAQ,CAACmB,EAAE,KAAK,KAAK,IAAId,MAAM,IAAI,IAAI,GACpC8B,sBAAsB,CACpB;MACE7B,MAAM,EAAE,CACN;QACE;QACAC,IAAI,EAAEF,MAAM;QACZ;QACAF,MAAM,EAAEA,MAAM;QACd;QACAC,KAAK,EAAEF,kBAAkB,CAACC,MAAM;MAClC,CAAC;IAEL,CAAC,EACDY,OAAO,EAAEqB,MACX,CAAC,GACD5B,SAAS,CAAC;IAChB6B,iBAAiB,EAAE,MAAe;IAClCrB;EACF,CAAC;AACH","ignoreList":[]}
|
package/lib/module/useLinkTo.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NavigationContainerRefContext","React","useLinkBuilder","useLinkTo","navigation","useContext","buildAction","linkTo","useCallback","href","undefined","Error","action","dispatch"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":";;AAAA,SAASA,6BAA6B,QAAQ,wBAAwB;AACtE,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,cAAc,QAAQ,qBAAkB;;AAEjD;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,MAAMC,UAAU,GAAGH,KAAK,CAACI,UAAU,CAACL,6BAA6B,CAAC;EAClE,MAAM;IAAEM;EAAY,CAAC,GAAGJ,cAAc,CAAC,CAAC;EAExC,MAAMK,MAAM,GAAGN,KAAK,CAACO,WAAW,CAC7BC,IAAY,IAAK;IAChB,IAAIL,UAAU,KAAKM,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFACF,CAAC;IACH;IAEA,MAAMC,MAAM,GAAGN,WAAW,CAACG,IAAI,CAAC;IAEhCL,UAAU,CAACS,QAAQ,CAACD,MAAM,CAAC;EAC7B,CAAC,EACD,CAACN,WAAW,EAAEF,UAAU,CAC1B,CAAC;EAED,OAAOG,MAAM;AACf","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["NavigationContainerRefContext","React","useLinkBuilder","useLinkTo","navigation","useContext","buildAction","linkTo","useCallback","href","undefined","Error","action","dispatch"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":";;AAAA,SAASA,6BAA6B,QAAQ,wBAAwB;AACtE,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,cAAc,QAAQ,qBAAkB;;AAEjD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,MAAMC,UAAU,GAAGH,KAAK,CAACI,UAAU,CAACL,6BAA6B,CAAC;EAClE,MAAM;IAAEM;EAAY,CAAC,GAAGJ,cAAc,CAAC,CAAC;EAExC,MAAMK,MAAM,GAAGN,KAAK,CAACO,WAAW,CAC7BC,IAAY,IAAK;IAChB,IAAIL,UAAU,KAAKM,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFACF,CAAC;IACH;IAEA,MAAMC,MAAM,GAAGN,WAAW,CAACG,IAAI,CAAC;IAEhCL,UAAU,CAACS,QAAQ,CAACD,MAAM,CAAC;EAC7B,CAAC,EACD,CAACN,WAAW,EAAEF,UAAU,CAC1B,CAAC;EAED,OAAOG,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { getPathFromState, useStateForPath } from '@react-navigation/core';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { LinkingContext } from "./LinkingContext.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Hook to get the path for the current route based on linking options.
|
|
9
|
+
*
|
|
10
|
+
* @returns Path for the current route.
|
|
11
|
+
*/
|
|
12
|
+
export function useRoutePath() {
|
|
13
|
+
const {
|
|
14
|
+
options
|
|
15
|
+
} = React.useContext(LinkingContext);
|
|
16
|
+
const state = useStateForPath();
|
|
17
|
+
if (state === undefined) {
|
|
18
|
+
throw new Error("Couldn't find a state for the route object. Is your component inside a screen in a navigator?");
|
|
19
|
+
}
|
|
20
|
+
const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
|
|
21
|
+
const path = React.useMemo(() => {
|
|
22
|
+
const path = getPathFromStateHelper(state, options?.config);
|
|
23
|
+
return path;
|
|
24
|
+
}, [state, options?.config, getPathFromStateHelper]);
|
|
25
|
+
return path;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=useRoutePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getPathFromState","useStateForPath","React","LinkingContext","useRoutePath","options","useContext","state","undefined","Error","getPathFromStateHelper","path","useMemo","config"],"sourceRoot":"../../src","sources":["useRoutePath.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,EAAEC,eAAe,QAAQ,wBAAwB;AAC1E,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,cAAc,QAAQ,qBAAkB;;AAEjD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAAA,EAAG;EAC7B,MAAM;IAAEC;EAAQ,CAAC,GAAGH,KAAK,CAACI,UAAU,CAACH,cAAc,CAAC;EACpD,MAAMI,KAAK,GAAGN,eAAe,CAAC,CAAC;EAE/B,IAAIM,KAAK,KAAKC,SAAS,EAAE;IACvB,MAAM,IAAIC,KAAK,CACb,+FACF,CAAC;EACH;EAEA,MAAMC,sBAAsB,GAAGL,OAAO,EAAEL,gBAAgB,IAAIA,gBAAgB;EAE5E,MAAMW,IAAI,GAAGT,KAAK,CAACU,OAAO,CAAC,MAAM;IAC/B,MAAMD,IAAI,GAAGD,sBAAsB,CAACH,KAAK,EAAEF,OAAO,EAAEQ,MAAM,CAAC;IAE3D,OAAOF,IAAI;EACb,CAAC,EAAE,CAACJ,KAAK,EAAEF,OAAO,EAAEQ,MAAM,EAAEH,sBAAsB,CAAC,CAAC;EAEpD,OAAOC,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBackButton.d.ts","sourceRoot":"","sources":["../../../../src/useBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useBackButton.d.ts","sourceRoot":"","sources":["../../../../src/useBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,aAAa,CAC3B,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,QAI1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentTitle.native.d.ts","sourceRoot":"","sources":["../../../../src/useDocumentTitle.native.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDocumentTitle.native.d.ts","sourceRoot":"","sources":["../../../../src/useDocumentTitle.native.tsx"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,SAE/B"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { CommonActions
|
|
1
|
+
import { CommonActions } from '@react-navigation/core';
|
|
2
2
|
/**
|
|
3
3
|
* Helpers to build href or action based on the linking options.
|
|
4
|
+
*
|
|
4
5
|
* @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.
|
|
5
6
|
*/
|
|
6
7
|
export declare function useLinkBuilder(): {
|
|
7
|
-
buildHref: (name: string, params?: object) => string
|
|
8
|
+
buildHref: (name: string, params?: object) => string;
|
|
8
9
|
buildAction: (href: string) => {
|
|
9
10
|
type: "NAVIGATE";
|
|
10
11
|
payload: {
|
|
@@ -14,7 +15,7 @@ export declare function useLinkBuilder(): {
|
|
|
14
15
|
index: number;
|
|
15
16
|
routeNames: string[];
|
|
16
17
|
history?: unknown[];
|
|
17
|
-
routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
|
|
18
|
+
routes: import("@react-navigation/routers").NavigationRoute<import("@react-navigation/routers").ParamListBase, string>[];
|
|
18
19
|
type: string;
|
|
19
20
|
stale: false;
|
|
20
21
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,
|
|
1
|
+
{"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAKd,MAAM,wBAAwB,CAAC;AAShC;;;;GAIG;AACH,wBAAgB,cAAc;sBAWnB,MAAM,WAAW,MAAM;wBA+BvB,MAAM;;;;;;;;;;;;;;;;EAsBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkProps.d.ts","sourceRoot":"","sources":["../../../../src/useLinkProps.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAKtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAY,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,SAAS,CACnB,SAAS,SAAS,eAAe,CAAC,aAAa,EAC/C,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAEjD,CAAC;IACC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,CAAC,SAAS,SAAS,OAAO,GAC1B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACrD,KAAK,CAAC,CAAC,GACX;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AA+BN;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,EAAE,EAC5E,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,GACP,EAAE,SAAS,CAAC,SAAS,CAAC;;;kBAMf,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB;
|
|
1
|
+
{"version":3,"file":"useLinkProps.d.ts","sourceRoot":"","sources":["../../../../src/useLinkProps.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAKtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAY,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,SAAS,CACnB,SAAS,SAAS,eAAe,CAAC,aAAa,EAC/C,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAEjD,CAAC;IACC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,CAAC,SAAS,SAAS,OAAO,GAC1B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACrD,KAAK,CAAC,CAAC,GACX;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AA+BN;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,EAAE,EAC5E,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,GACP,EAAE,SAAS,CAAC,SAAS,CAAC;;;kBAMf,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB;EA0E9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../../src/useLinkTo.tsx"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../../src/useLinkTo.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,SAAS,WAKd,MAAM,UAehB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRoutePath.d.ts","sourceRoot":"","sources":["../../../../src/useRoutePath.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,YAAY,WAmB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBackButton.d.ts","sourceRoot":"","sources":["../../../../src/useBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useBackButton.d.ts","sourceRoot":"","sources":["../../../../src/useBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,aAAa,CAC3B,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,QAI1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentTitle.native.d.ts","sourceRoot":"","sources":["../../../../src/useDocumentTitle.native.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDocumentTitle.native.d.ts","sourceRoot":"","sources":["../../../../src/useDocumentTitle.native.tsx"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,SAE/B"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { CommonActions
|
|
1
|
+
import { CommonActions } from '@react-navigation/core';
|
|
2
2
|
/**
|
|
3
3
|
* Helpers to build href or action based on the linking options.
|
|
4
|
+
*
|
|
4
5
|
* @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.
|
|
5
6
|
*/
|
|
6
7
|
export declare function useLinkBuilder(): {
|
|
7
|
-
buildHref: (name: string, params?: object) => string
|
|
8
|
+
buildHref: (name: string, params?: object) => string;
|
|
8
9
|
buildAction: (href: string) => {
|
|
9
10
|
type: "NAVIGATE";
|
|
10
11
|
payload: {
|
|
@@ -14,7 +15,7 @@ export declare function useLinkBuilder(): {
|
|
|
14
15
|
index: number;
|
|
15
16
|
routeNames: string[];
|
|
16
17
|
history?: unknown[];
|
|
17
|
-
routes: import("@react-navigation/routers").NavigationRoute<ParamListBase, string>[];
|
|
18
|
+
routes: import("@react-navigation/routers").NavigationRoute<import("@react-navigation/routers").ParamListBase, string>[];
|
|
18
19
|
type: string;
|
|
19
20
|
stale: false;
|
|
20
21
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,
|
|
1
|
+
{"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAKd,MAAM,wBAAwB,CAAC;AAShC;;;;GAIG;AACH,wBAAgB,cAAc;sBAWnB,MAAM,WAAW,MAAM;wBA+BvB,MAAM;;;;;;;;;;;;;;;;EAsBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkProps.d.ts","sourceRoot":"","sources":["../../../../src/useLinkProps.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAKtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAY,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,SAAS,CACnB,SAAS,SAAS,eAAe,CAAC,aAAa,EAC/C,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAEjD,CAAC;IACC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,CAAC,SAAS,SAAS,OAAO,GAC1B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACrD,KAAK,CAAC,CAAC,GACX;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AA+BN;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,EAAE,EAC5E,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,GACP,EAAE,SAAS,CAAC,SAAS,CAAC;;;kBAMf,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB;
|
|
1
|
+
{"version":3,"file":"useLinkProps.d.ts","sourceRoot":"","sources":["../../../../src/useLinkProps.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAKtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAY,MAAM,cAAc,CAAC;AAIpE,MAAM,MAAM,SAAS,CACnB,SAAS,SAAS,eAAe,CAAC,aAAa,EAC/C,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAEjD,CAAC;IACC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,CAAC,SAAS,SAAS,OAAO,GAC1B,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,GACrD,KAAK,CAAC,CAAC,GACX;IACE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AA+BN;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,EAAE,EAC5E,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,GACP,EAAE,SAAS,CAAC,SAAS,CAAC;;;kBAMf,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,qBAAqB;EA0E9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../../src/useLinkTo.tsx"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../../src/useLinkTo.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,SAAS,WAKd,MAAM,UAehB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRoutePath.d.ts","sourceRoot":"","sources":["../../../../src/useRoutePath.tsx"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,YAAY,WAmB3B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/native",
|
|
3
3
|
"description": "React Native integration for React Navigation",
|
|
4
|
-
"version": "7.0
|
|
4
|
+
"version": "7.1.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
7
7
|
"react-navigation",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"clean": "del lib"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@react-navigation/core": "^7.
|
|
51
|
+
"@react-navigation/core": "^7.8.0",
|
|
52
52
|
"escape-string-regexp": "^4.0.0",
|
|
53
53
|
"fast-deep-equal": "^3.1.3",
|
|
54
54
|
"nanoid": "3.3.8",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"react": "18.3.1",
|
|
64
64
|
"react-dom": "18.3.1",
|
|
65
65
|
"react-native": "0.76.2",
|
|
66
|
-
"react-native-builder-bob": "^0.
|
|
66
|
+
"react-native-builder-bob": "^0.39.0",
|
|
67
67
|
"typescript": "^5.5.2"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
@@ -95,5 +95,5 @@
|
|
|
95
95
|
]
|
|
96
96
|
]
|
|
97
97
|
},
|
|
98
|
-
"gitHead": "
|
|
98
|
+
"gitHead": "2a3ce56d2366f2699af31daeb50307dd97ec950d"
|
|
99
99
|
}
|
package/src/useBackButton.tsx
CHANGED
package/src/useLinkBuilder.tsx
CHANGED
|
@@ -3,82 +3,60 @@ import {
|
|
|
3
3
|
getActionFromState,
|
|
4
4
|
getPathFromState,
|
|
5
5
|
getStateFromPath,
|
|
6
|
-
|
|
7
|
-
NavigationHelpersContext,
|
|
8
|
-
type NavigationProp,
|
|
9
|
-
type ParamListBase,
|
|
6
|
+
useStateForPath,
|
|
10
7
|
} from '@react-navigation/core';
|
|
11
8
|
import * as React from 'react';
|
|
12
9
|
|
|
13
10
|
import { LinkingContext } from './LinkingContext';
|
|
14
11
|
|
|
15
|
-
type NavigationObject =
|
|
16
|
-
| NavigationHelpers<ParamListBase>
|
|
17
|
-
| NavigationProp<ParamListBase>;
|
|
18
|
-
|
|
19
12
|
type MinimalState = {
|
|
20
|
-
|
|
21
|
-
routes: { name: string; params?: object; state?: MinimalState }[];
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const getRootStateForNavigate = (
|
|
25
|
-
navigation: NavigationObject,
|
|
26
|
-
state: MinimalState
|
|
27
|
-
): MinimalState => {
|
|
28
|
-
const parent = navigation.getParent();
|
|
29
|
-
|
|
30
|
-
if (parent) {
|
|
31
|
-
const parentState = parent.getState();
|
|
32
|
-
|
|
33
|
-
return getRootStateForNavigate(parent, {
|
|
34
|
-
index: 0,
|
|
35
|
-
routes: [
|
|
36
|
-
{
|
|
37
|
-
...parentState.routes[parentState.index],
|
|
38
|
-
state: state,
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return state;
|
|
13
|
+
routes: [{ name: string; params?: object; state?: MinimalState }];
|
|
45
14
|
};
|
|
46
15
|
|
|
47
16
|
/**
|
|
48
17
|
* Helpers to build href or action based on the linking options.
|
|
18
|
+
*
|
|
49
19
|
* @returns `buildHref` to build an `href` for screen and `buildAction` to build an action from an `href`.
|
|
50
20
|
*/
|
|
51
21
|
export function useLinkBuilder() {
|
|
52
|
-
const
|
|
53
|
-
const linking = React.useContext(LinkingContext);
|
|
22
|
+
const { options } = React.useContext(LinkingContext);
|
|
54
23
|
|
|
55
|
-
const
|
|
56
|
-
(name: string, params?: object) => {
|
|
57
|
-
const { options } = linking;
|
|
24
|
+
const focusedRouteState = useStateForPath();
|
|
58
25
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
26
|
+
const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
|
|
27
|
+
const getStateFromPathHelper = options?.getStateFromPath ?? getStateFromPath;
|
|
28
|
+
const getActionFromStateHelper =
|
|
29
|
+
options?.getActionFromState ?? getActionFromState;
|
|
62
30
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
routes: [
|
|
31
|
+
const buildHref = React.useCallback(
|
|
32
|
+
(name: string, params?: object) => {
|
|
33
|
+
const addStateToInnermostRoute = (
|
|
34
|
+
state: MinimalState | undefined
|
|
35
|
+
): MinimalState => {
|
|
36
|
+
const route = state?.routes[0];
|
|
37
|
+
|
|
38
|
+
if (route?.state) {
|
|
39
|
+
return {
|
|
40
|
+
routes: [
|
|
41
|
+
{
|
|
42
|
+
...route,
|
|
43
|
+
state: addStateToInnermostRoute(route.state),
|
|
44
|
+
},
|
|
45
|
+
],
|
|
73
46
|
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
routes: [{ name, params }],
|
|
51
|
+
};
|
|
52
|
+
};
|
|
74
53
|
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
: getPathFromState(state, options?.config);
|
|
54
|
+
const state = addStateToInnermostRoute(focusedRouteState);
|
|
55
|
+
const path = getPathFromStateHelper(state, options?.config);
|
|
78
56
|
|
|
79
57
|
return path;
|
|
80
58
|
},
|
|
81
|
-
[
|
|
59
|
+
[options?.config, getPathFromStateHelper, focusedRouteState]
|
|
82
60
|
);
|
|
83
61
|
|
|
84
62
|
const buildAction = React.useCallback(
|
|
@@ -87,21 +65,17 @@ export function useLinkBuilder() {
|
|
|
87
65
|
throw new Error(`The href must start with '/' (${href}).`);
|
|
88
66
|
}
|
|
89
67
|
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
const state = options?.getStateFromPath
|
|
93
|
-
? options.getStateFromPath(href, options.config)
|
|
94
|
-
: getStateFromPath(href, options?.config);
|
|
68
|
+
const state = getStateFromPathHelper(href, options?.config);
|
|
95
69
|
|
|
96
70
|
if (state) {
|
|
97
|
-
const action =
|
|
71
|
+
const action = getActionFromStateHelper(state, options?.config);
|
|
98
72
|
|
|
99
73
|
return action ?? CommonActions.reset(state);
|
|
100
74
|
} else {
|
|
101
75
|
throw new Error('Failed to parse the href to a navigation state.');
|
|
102
76
|
}
|
|
103
77
|
},
|
|
104
|
-
[
|
|
78
|
+
[options?.config, getStateFromPathHelper, getActionFromStateHelper]
|
|
105
79
|
);
|
|
106
80
|
|
|
107
81
|
return {
|
package/src/useLinkProps.tsx
CHANGED
|
@@ -81,22 +81,33 @@ export function useLinkProps<ParamList extends ReactNavigation.RootParamList>({
|
|
|
81
81
|
const onPress = (
|
|
82
82
|
e?: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent
|
|
83
83
|
) => {
|
|
84
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
85
|
-
const hasModifierKey = e.metaKey || e.altKey || e.ctrlKey || e.shiftKey; // ignore clicks with modifier keys
|
|
86
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
87
|
-
const isLeftClick = e.button == null || e.button === 0; // only handle left clicks
|
|
88
|
-
const isSelfTarget = [undefined, null, '', 'self'].includes(
|
|
89
|
-
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
90
|
-
e.currentTarget?.target
|
|
91
|
-
); // let browser handle "target=_blank" etc.
|
|
92
|
-
|
|
93
84
|
let shouldHandle = false;
|
|
94
85
|
|
|
95
86
|
if (Platform.OS !== 'web' || !e) {
|
|
87
|
+
e?.preventDefault?.();
|
|
96
88
|
shouldHandle = true;
|
|
97
|
-
} else
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
} else {
|
|
90
|
+
// ignore clicks with modifier keys
|
|
91
|
+
const hasModifierKey =
|
|
92
|
+
('metaKey' in e && e.metaKey) ||
|
|
93
|
+
('altKey' in e && e.altKey) ||
|
|
94
|
+
('ctrlKey' in e && e.ctrlKey) ||
|
|
95
|
+
('shiftKey' in e && e.shiftKey);
|
|
96
|
+
|
|
97
|
+
// only handle left clicks
|
|
98
|
+
const isLeftClick =
|
|
99
|
+
'button' in e ? e.button == null || e.button === 0 : true;
|
|
100
|
+
|
|
101
|
+
// let browser handle "target=_blank" etc.
|
|
102
|
+
const isSelfTarget =
|
|
103
|
+
e.currentTarget && 'target' in e.currentTarget
|
|
104
|
+
? [undefined, null, '', 'self'].includes(e.currentTarget.target)
|
|
105
|
+
: true;
|
|
106
|
+
|
|
107
|
+
if (!hasModifierKey && isLeftClick && isSelfTarget) {
|
|
108
|
+
e.preventDefault?.();
|
|
109
|
+
shouldHandle = true;
|
|
110
|
+
}
|
|
100
111
|
}
|
|
101
112
|
|
|
102
113
|
if (shouldHandle) {
|
package/src/useLinkTo.tsx
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getPathFromState, useStateForPath } from '@react-navigation/core';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
import { LinkingContext } from './LinkingContext';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Hook to get the path for the current route based on linking options.
|
|
8
|
+
*
|
|
9
|
+
* @returns Path for the current route.
|
|
10
|
+
*/
|
|
11
|
+
export function useRoutePath() {
|
|
12
|
+
const { options } = React.useContext(LinkingContext);
|
|
13
|
+
const state = useStateForPath();
|
|
14
|
+
|
|
15
|
+
if (state === undefined) {
|
|
16
|
+
throw new Error(
|
|
17
|
+
"Couldn't find a state for the route object. Is your component inside a screen in a navigator?"
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
|
|
22
|
+
|
|
23
|
+
const path = React.useMemo(() => {
|
|
24
|
+
const path = getPathFromStateHelper(state, options?.config);
|
|
25
|
+
|
|
26
|
+
return path;
|
|
27
|
+
}, [state, options?.config, getPathFromStateHelper]);
|
|
28
|
+
|
|
29
|
+
return path;
|
|
30
|
+
}
|