@react-navigation/native 7.0.18 → 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.
Files changed (49) hide show
  1. package/lib/commonjs/useBackButton.js +0 -1
  2. package/lib/commonjs/useBackButton.js.map +1 -1
  3. package/lib/commonjs/useDocumentTitle.native.js +0 -1
  4. package/lib/commonjs/useDocumentTitle.native.js.map +1 -1
  5. package/lib/commonjs/useLinkBuilder.js +30 -46
  6. package/lib/commonjs/useLinkBuilder.js.map +1 -1
  7. package/lib/commonjs/useLinkProps.js +14 -11
  8. package/lib/commonjs/useLinkProps.js.map +1 -1
  9. package/lib/commonjs/useLinkTo.js +1 -0
  10. package/lib/commonjs/useLinkTo.js.map +1 -1
  11. package/lib/commonjs/useRoutePath.js +32 -0
  12. package/lib/commonjs/useRoutePath.js.map +1 -0
  13. package/lib/module/useBackButton.js +0 -1
  14. package/lib/module/useBackButton.js.map +1 -1
  15. package/lib/module/useDocumentTitle.native.js +0 -1
  16. package/lib/module/useDocumentTitle.native.js.map +1 -1
  17. package/lib/module/useLinkBuilder.js +31 -47
  18. package/lib/module/useLinkBuilder.js.map +1 -1
  19. package/lib/module/useLinkProps.js +14 -11
  20. package/lib/module/useLinkProps.js.map +1 -1
  21. package/lib/module/useLinkTo.js +1 -0
  22. package/lib/module/useLinkTo.js.map +1 -1
  23. package/lib/module/useRoutePath.js +27 -0
  24. package/lib/module/useRoutePath.js.map +1 -0
  25. package/lib/typescript/commonjs/src/useBackButton.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/src/useDocumentTitle.native.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/src/useLinkBuilder.d.ts +4 -3
  28. package/lib/typescript/commonjs/src/useLinkBuilder.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/src/useLinkProps.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/src/useLinkTo.d.ts +1 -0
  31. package/lib/typescript/commonjs/src/useLinkTo.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/src/useRoutePath.d.ts +7 -0
  33. package/lib/typescript/commonjs/src/useRoutePath.d.ts.map +1 -0
  34. package/lib/typescript/module/src/useBackButton.d.ts.map +1 -1
  35. package/lib/typescript/module/src/useDocumentTitle.native.d.ts.map +1 -1
  36. package/lib/typescript/module/src/useLinkBuilder.d.ts +4 -3
  37. package/lib/typescript/module/src/useLinkBuilder.d.ts.map +1 -1
  38. package/lib/typescript/module/src/useLinkProps.d.ts.map +1 -1
  39. package/lib/typescript/module/src/useLinkTo.d.ts +1 -0
  40. package/lib/typescript/module/src/useLinkTo.d.ts.map +1 -1
  41. package/lib/typescript/module/src/useRoutePath.d.ts +7 -0
  42. package/lib/typescript/module/src/useRoutePath.d.ts.map +1 -0
  43. package/package.json +4 -4
  44. package/src/useBackButton.tsx +0 -1
  45. package/src/useDocumentTitle.native.tsx +0 -1
  46. package/src/useLinkBuilder.tsx +36 -62
  47. package/src/useLinkProps.tsx +23 -12
  48. package/src/useLinkTo.tsx +1 -0
  49. 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":";;;;;;AAKA;AACO,SAASA,aAAaA,CAC3BC,CAAyD,EACzD;EACA;EACA;AAAA","ignoreList":[]}
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":";;;;;;AAAA;AACO,SAASA,gBAAgBA,CAAA,EAAG;EACjC;AAAA","ignoreList":[]}
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 navigation = React.useContext(_core.NavigationHelpersContext);
33
- const linking = React.useContext(_LinkingContext.LinkingContext);
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
- options
37
- } = linking;
38
- if (options?.enabled === false) {
39
- return undefined;
40
- }
41
- const state = navigation ? getRootStateForNavigate(navigation, {
42
- index: 0,
43
- routes: [{
44
- name,
45
- params
46
- }]
47
- }) :
48
- // If we couldn't find a navigation object in context, we're at root
49
- // So we'll construct a basic state object to use
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 path = options?.getPathFromState ? options.getPathFromState(state, options?.config) : (0, _core.getPathFromState)(state, options?.config);
43
+ const state = addStateToInnermostRoute(focusedRouteState);
44
+ const path = getPathFromStateHelper(state, options?.config);
58
45
  return path;
59
- }, [linking, navigation]);
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 = (0, _core.getActionFromState)(state, options?.config);
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
- }, [linking]);
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","getRootStateForNavigate","navigation","state","parent","getParent","parentState","getState","index","routes","useLinkBuilder","useContext","NavigationHelpersContext","linking","LinkingContext","buildHref","useCallback","name","params","options","enabled","undefined","path","getPathFromState","config","buildAction","href","startsWith","Error","getStateFromPath","action","getActionFromState","CommonActions","reset"],"sourceRoot":"../../src","sources":["useLinkBuilder.tsx"],"mappings":"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","ignoreList":[]}
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 if (!hasModifierKey && isLeftClick && isSelfTarget) {
62
- e.preventDefault();
63
- shouldHandle = true;
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","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","includes","currentTarget","target","shouldHandle","Platform","OS","preventDefault","dispatch","Error","navigate","getPathFromStateHelper","getPathFromState","config","accessibilityRole"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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","ignoreList":[]}
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,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- // eslint-disable-next-line @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
4
3
  export function useBackButton(_) {
5
4
  // No-op
6
5
  // BackHandler is not available on web
@@ -1 +1 @@
1
- {"version":3,"names":["useBackButton","_"],"sourceRoot":"../../src","sources":["useBackButton.tsx"],"mappings":";;AAKA;AACA,OAAO,SAASA,aAAaA,CAC3BC,CAAyD,EACzD;EACA;EACA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["useBackButton","_"],"sourceRoot":"../../src","sources":["useBackButton.tsx"],"mappings":";;AAKA,OAAO,SAASA,aAAaA,CAC3BC,CAAyD,EACzD;EACA;EACA;AAAA","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- // eslint-disable-next-line @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
4
3
  export function useDocumentTitle() {
5
4
  // Noop for native platforms
6
5
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useDocumentTitle"],"sourceRoot":"../../src","sources":["useDocumentTitle.native.tsx"],"mappings":";;AAAA;AACA,OAAO,SAASA,gBAAgBA,CAAA,EAAG;EACjC;AAAA","ignoreList":[]}
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, NavigationHelpersContext } from '@react-navigation/core';
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 navigation = React.useContext(NavigationHelpersContext);
27
- const linking = React.useContext(LinkingContext);
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
- options
31
- } = linking;
32
- if (options?.enabled === false) {
33
- return undefined;
34
- }
35
- const state = navigation ? getRootStateForNavigate(navigation, {
36
- index: 0,
37
- routes: [{
38
- name,
39
- params
40
- }]
41
- }) :
42
- // If we couldn't find a navigation object in context, we're at root
43
- // So we'll construct a basic state object to use
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 path = options?.getPathFromState ? options.getPathFromState(state, options?.config) : getPathFromState(state, options?.config);
37
+ const state = addStateToInnermostRoute(focusedRouteState);
38
+ const path = getPathFromStateHelper(state, options?.config);
52
39
  return path;
53
- }, [linking, navigation]);
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 = getActionFromState(state, options?.config);
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
- }, [linking]);
52
+ }, [options?.config, getStateFromPathHelper, getActionFromStateHelper]);
69
53
  return {
70
54
  buildHref,
71
55
  buildAction
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","getActionFromState","getPathFromState","getStateFromPath","NavigationHelpersContext","React","LinkingContext","getRootStateForNavigate","navigation","state","parent","getParent","parentState","getState","index","routes","useLinkBuilder","useContext","linking","buildHref","useCallback","name","params","options","enabled","undefined","path","config","buildAction","href","startsWith","Error","action","reset"],"sourceRoot":"../../src","sources":["useLinkBuilder.tsx"],"mappings":";;AAAA,SACEA,aAAa,EACbC,kBAAkB,EAClBC,gBAAgB,EAChBC,gBAAgB,EAEhBC,wBAAwB,QAGnB,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,cAAc,QAAQ,qBAAkB;AAWjD,MAAMC,uBAAuB,GAAGA,CAC9BC,UAA4B,EAC5BC,KAAmB,KACF;EACjB,MAAMC,MAAM,GAAGF,UAAU,CAACG,SAAS,CAAC,CAAC;EAErC,IAAID,MAAM,EAAE;IACV,MAAME,WAAW,GAAGF,MAAM,CAACG,QAAQ,CAAC,CAAC;IAErC,OAAON,uBAAuB,CAACG,MAAM,EAAE;MACrCI,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CACN;QACE,GAAGH,WAAW,CAACG,MAAM,CAACH,WAAW,CAACE,KAAK,CAAC;QACxCL,KAAK,EAAEA;MACT,CAAC;IAEL,CAAC,CAAC;EACJ;EAEA,OAAOA,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASO,cAAcA,CAAA,EAAG;EAC/B,MAAMR,UAAU,GAAGH,KAAK,CAACY,UAAU,CAACb,wBAAwB,CAAC;EAC7D,MAAMc,OAAO,GAAGb,KAAK,CAACY,UAAU,CAACX,cAAc,CAAC;EAEhD,MAAMa,SAAS,GAAGd,KAAK,CAACe,WAAW,CACjC,CAACC,IAAY,EAAEC,MAAe,KAAK;IACjC,MAAM;MAAEC;IAAQ,CAAC,GAAGL,OAAO;IAE3B,IAAIK,OAAO,EAAEC,OAAO,KAAK,KAAK,EAAE;MAC9B,OAAOC,SAAS;IAClB;IAEA,MAAMhB,KAAK,GAAGD,UAAU,GACpBD,uBAAuB,CAACC,UAAU,EAAE;MAClCM,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;QAAEM,IAAI;QAAEC;MAAO,CAAC;IAC3B,CAAC,CAAC;IACF;IACA;IACA;MACER,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;QAAEM,IAAI;QAAEC;MAAO,CAAC;IAC3B,CAAC;IAEL,MAAMI,IAAI,GAAGH,OAAO,EAAErB,gBAAgB,GAClCqB,OAAO,CAACrB,gBAAgB,CAACO,KAAK,EAAEc,OAAO,EAAEI,MAAM,CAAC,GAChDzB,gBAAgB,CAACO,KAAK,EAAEc,OAAO,EAAEI,MAAM,CAAC;IAE5C,OAAOD,IAAI;EACb,CAAC,EACD,CAACR,OAAO,EAAEV,UAAU,CACtB,CAAC;EAED,MAAMoB,WAAW,GAAGvB,KAAK,CAACe,WAAW,CAClCS,IAAY,IAAK;IAChB,IAAI,CAACA,IAAI,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC,iCAAiCF,IAAI,IAAI,CAAC;IAC5D;IAEA,MAAM;MAAEN;IAAQ,CAAC,GAAGL,OAAO;IAE3B,MAAMT,KAAK,GAAGc,OAAO,EAAEpB,gBAAgB,GACnCoB,OAAO,CAACpB,gBAAgB,CAAC0B,IAAI,EAAEN,OAAO,CAACI,MAAM,CAAC,GAC9CxB,gBAAgB,CAAC0B,IAAI,EAAEN,OAAO,EAAEI,MAAM,CAAC;IAE3C,IAAIlB,KAAK,EAAE;MACT,MAAMuB,MAAM,GAAG/B,kBAAkB,CAACQ,KAAK,EAAEc,OAAO,EAAEI,MAAM,CAAC;MAEzD,OAAOK,MAAM,IAAIhC,aAAa,CAACiC,KAAK,CAACxB,KAAK,CAAC;IAC7C,CAAC,MAAM;MACL,MAAM,IAAIsB,KAAK,CAAC,iDAAiD,CAAC;IACpE;EACF,CAAC,EACD,CAACb,OAAO,CACV,CAAC;EAED,OAAO;IACLC,SAAS;IACTS;EACF,CAAC;AACH","ignoreList":[]}
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 if (!hasModifierKey && isLeftClick && isSelfTarget) {
56
- e.preventDefault();
57
- shouldHandle = true;
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","includes","currentTarget","target","shouldHandle","OS","preventDefault","dispatch","Error","navigate","getPathFromStateHelper","config","accessibilityRole"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ import { useLinkBuilder } from "./useLinkBuilder.js";
6
6
 
7
7
  /**
8
8
  * Helper to navigate to a screen using a href based on the linking options.
9
+ *
9
10
  * @returns function that receives the href to navigate to.
10
11
  */
11
12
  export function useLinkTo() {
@@ -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;AAGhC,wBAAgB,aAAa,CAC3B,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,QAI1D"}
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":"AACA,wBAAgB,gBAAgB,SAE/B"}
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, type ParamListBase } from '@react-navigation/core';
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 | undefined;
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,EAOb,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAqChC;;;GAGG;AACH,wBAAgB,cAAc;sBAKnB,MAAM,WAAW,MAAM;wBA6BvB,MAAM;;;;;;;;;;;;;;;;EA0BhB"}
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;EA+D9E"}
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,5 +1,6 @@
1
1
  /**
2
2
  * Helper to navigate to a screen using a href based on the linking options.
3
+ *
3
4
  * @returns function that receives the href to navigate to.
4
5
  */
5
6
  export declare function useLinkTo(): (href: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../../src/useLinkTo.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,SAAS,WAKd,MAAM,UAehB"}
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,7 @@
1
+ /**
2
+ * Hook to get the path for the current route based on linking options.
3
+ *
4
+ * @returns Path for the current route.
5
+ */
6
+ export declare function useRoutePath(): string;
7
+ //# sourceMappingURL=useRoutePath.d.ts.map
@@ -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;AAGhC,wBAAgB,aAAa,CAC3B,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,QAI1D"}
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":"AACA,wBAAgB,gBAAgB,SAE/B"}
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, type ParamListBase } from '@react-navigation/core';
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 | undefined;
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,EAOb,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAqChC;;;GAGG;AACH,wBAAgB,cAAc;sBAKnB,MAAM,WAAW,MAAM;wBA6BvB,MAAM;;;;;;;;;;;;;;;;EA0BhB"}
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;EA+D9E"}
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,5 +1,6 @@
1
1
  /**
2
2
  * Helper to navigate to a screen using a href based on the linking options.
3
+ *
3
4
  * @returns function that receives the href to navigate to.
4
5
  */
5
6
  export declare function useLinkTo(): (href: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../../src/useLinkTo.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,SAAS,WAKd,MAAM,UAehB"}
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,7 @@
1
+ /**
2
+ * Hook to get the path for the current route based on linking options.
3
+ *
4
+ * @returns Path for the current route.
5
+ */
6
+ export declare function useRoutePath(): string;
7
+ //# sourceMappingURL=useRoutePath.d.ts.map
@@ -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.18",
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.6.1",
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.38.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": "a656331009fcb534e0bef535e6df65ae07a228a4"
98
+ "gitHead": "2a3ce56d2366f2699af31daeb50307dd97ec950d"
99
99
  }
@@ -3,7 +3,6 @@ import type {
3
3
  ParamListBase,
4
4
  } from '@react-navigation/core';
5
5
 
6
- // eslint-disable-next-line @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
7
6
  export function useBackButton(
8
7
  _: React.RefObject<NavigationContainerRef<ParamListBase>>
9
8
  ) {
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
2
1
  export function useDocumentTitle() {
3
2
  // Noop for native platforms
4
3
  }
@@ -3,82 +3,60 @@ import {
3
3
  getActionFromState,
4
4
  getPathFromState,
5
5
  getStateFromPath,
6
- type NavigationHelpers,
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
- index: number;
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 navigation = React.useContext(NavigationHelpersContext);
53
- const linking = React.useContext(LinkingContext);
22
+ const { options } = React.useContext(LinkingContext);
54
23
 
55
- const buildHref = React.useCallback(
56
- (name: string, params?: object) => {
57
- const { options } = linking;
24
+ const focusedRouteState = useStateForPath();
58
25
 
59
- if (options?.enabled === false) {
60
- return undefined;
61
- }
26
+ const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;
27
+ const getStateFromPathHelper = options?.getStateFromPath ?? getStateFromPath;
28
+ const getActionFromStateHelper =
29
+ options?.getActionFromState ?? getActionFromState;
62
30
 
63
- const state = navigation
64
- ? getRootStateForNavigate(navigation, {
65
- index: 0,
66
- routes: [{ name, params }],
67
- })
68
- : // If we couldn't find a navigation object in context, we're at root
69
- // So we'll construct a basic state object to use
70
- {
71
- index: 0,
72
- routes: [{ name, params }],
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 path = options?.getPathFromState
76
- ? options.getPathFromState(state, options?.config)
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
- [linking, navigation]
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 { options } = linking;
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 = getActionFromState(state, options?.config);
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
- [linking]
78
+ [options?.config, getStateFromPathHelper, getActionFromStateHelper]
105
79
  );
106
80
 
107
81
  return {
@@ -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 if (!hasModifierKey && isLeftClick && isSelfTarget) {
98
- e.preventDefault();
99
- shouldHandle = true;
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
@@ -5,6 +5,7 @@ import { useLinkBuilder } from './useLinkBuilder';
5
5
 
6
6
  /**
7
7
  * Helper to navigate to a screen using a href based on the linking options.
8
+ *
8
9
  * @returns function that receives the href to navigate to.
9
10
  */
10
11
  export function useLinkTo() {
@@ -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
+ }