@react-navigation/native 6.1.4 → 7.0.0-alpha.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 (81) hide show
  1. package/lib/commonjs/Link.js +16 -5
  2. package/lib/commonjs/Link.js.map +1 -1
  3. package/lib/commonjs/NavigationContainer.js +3 -14
  4. package/lib/commonjs/NavigationContainer.js.map +1 -1
  5. package/lib/commonjs/createStaticNavigation.js +39 -0
  6. package/lib/commonjs/createStaticNavigation.js.map +1 -0
  7. package/lib/commonjs/index.js +8 -8
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/useLinkProps.js +17 -15
  10. package/lib/commonjs/useLinkProps.js.map +1 -1
  11. package/lib/commonjs/{useLinkBuilder.js → useLinkTools.js} +23 -5
  12. package/lib/commonjs/useLinkTools.js.map +1 -0
  13. package/lib/commonjs/useLinking.js +2 -4
  14. package/lib/commonjs/useLinking.js.map +1 -1
  15. package/lib/commonjs/useLinking.native.js +3 -4
  16. package/lib/commonjs/useLinking.native.js.map +1 -1
  17. package/lib/module/Link.js +16 -5
  18. package/lib/module/Link.js.map +1 -1
  19. package/lib/module/NavigationContainer.js +3 -14
  20. package/lib/module/NavigationContainer.js.map +1 -1
  21. package/lib/module/createStaticNavigation.js +30 -0
  22. package/lib/module/createStaticNavigation.js.map +1 -0
  23. package/lib/module/index.js +2 -2
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/module/useLinkProps.js +17 -15
  26. package/lib/module/useLinkProps.js.map +1 -1
  27. package/lib/module/{useLinkBuilder.js → useLinkTools.js} +23 -5
  28. package/lib/module/useLinkTools.js.map +1 -0
  29. package/lib/module/useLinking.js +3 -5
  30. package/lib/module/useLinking.js.map +1 -1
  31. package/lib/module/useLinking.native.js +4 -5
  32. package/lib/module/useLinking.native.js.map +1 -1
  33. package/lib/typescript/src/Link.d.ts +8 -9
  34. package/lib/typescript/src/Link.d.ts.map +1 -1
  35. package/lib/typescript/src/NavigationContainer.d.ts +1 -3
  36. package/lib/typescript/src/NavigationContainer.d.ts.map +1 -1
  37. package/lib/typescript/src/ServerContext.d.ts +1 -1
  38. package/lib/typescript/src/ServerContext.d.ts.map +1 -1
  39. package/lib/typescript/src/__mocks__/createStackNavigator.d.ts +57 -0
  40. package/lib/typescript/src/__mocks__/createStackNavigator.d.ts.map +1 -0
  41. package/lib/typescript/src/createMemoryHistory.d.ts +1 -1
  42. package/lib/typescript/src/createMemoryHistory.d.ts.map +1 -1
  43. package/lib/typescript/src/createStaticNavigation.d.ts +20 -0
  44. package/lib/typescript/src/createStaticNavigation.d.ts.map +1 -0
  45. package/lib/typescript/src/index.d.ts +2 -2
  46. package/lib/typescript/src/index.d.ts.map +1 -1
  47. package/lib/typescript/src/theming/ThemeProvider.d.ts +1 -1
  48. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -1
  49. package/lib/typescript/src/types.d.ts +4 -4
  50. package/lib/typescript/src/types.d.ts.map +1 -1
  51. package/lib/typescript/src/useLinkProps.d.ts +17 -7
  52. package/lib/typescript/src/useLinkProps.d.ts.map +1 -1
  53. package/lib/typescript/src/useLinkTools.d.ts +33 -0
  54. package/lib/typescript/src/useLinkTools.d.ts.map +1 -0
  55. package/lib/typescript/src/useLinking.d.ts +2 -4
  56. package/lib/typescript/src/useLinking.d.ts.map +1 -1
  57. package/lib/typescript/src/useLinking.native.d.ts +2 -4
  58. package/lib/typescript/src/useLinking.native.d.ts.map +1 -1
  59. package/lib/typescript/src/useScrollToTop.d.ts +3 -3
  60. package/lib/typescript/src/useScrollToTop.d.ts.map +1 -1
  61. package/package.json +11 -11
  62. package/src/Link.tsx +25 -15
  63. package/src/NavigationContainer.tsx +4 -17
  64. package/src/__mocks__/createStackNavigator.tsx +21 -0
  65. package/src/createStaticNavigation.tsx +49 -0
  66. package/src/index.tsx +2 -2
  67. package/src/useLinkProps.tsx +43 -30
  68. package/src/{useLinkBuilder.tsx → useLinkTools.tsx} +32 -3
  69. package/src/useLinking.native.tsx +6 -6
  70. package/src/useLinking.tsx +5 -6
  71. package/lib/commonjs/useLinkBuilder.js.map +0 -1
  72. package/lib/commonjs/useLinkTo.js +0 -45
  73. package/lib/commonjs/useLinkTo.js.map +0 -1
  74. package/lib/module/useLinkBuilder.js.map +0 -1
  75. package/lib/module/useLinkTo.js +0 -36
  76. package/lib/module/useLinkTo.js.map +0 -1
  77. package/lib/typescript/src/useLinkBuilder.d.ts +0 -6
  78. package/lib/typescript/src/useLinkBuilder.d.ts.map +0 -1
  79. package/lib/typescript/src/useLinkTo.d.ts +0 -9
  80. package/lib/typescript/src/useLinkTo.d.ts.map +0 -1
  81. package/src/useLinkTo.tsx +0 -71
@@ -3,6 +3,7 @@ import {
3
3
  getStateFromPath as getStateFromPathDefault,
4
4
  NavigationContainerRef,
5
5
  ParamListBase,
6
+ useNavigationIndependentTree,
6
7
  } from '@react-navigation/core';
7
8
  import * as React from 'react';
8
9
  import { Linking, Platform } from 'react-native';
@@ -12,16 +13,13 @@ import type { LinkingOptions } from './types';
12
13
 
13
14
  type ResultState = ReturnType<typeof getStateFromPathDefault>;
14
15
 
15
- type Options = LinkingOptions<ParamListBase> & {
16
- independent?: boolean;
17
- };
16
+ type Options = LinkingOptions<ParamListBase>;
18
17
 
19
18
  let linkingHandlers: Symbol[] = [];
20
19
 
21
20
  export default function useLinking(
22
21
  ref: React.RefObject<NavigationContainerRef<ParamListBase>>,
23
22
  {
24
- independent,
25
23
  enabled = true,
26
24
  prefixes,
27
25
  filter,
@@ -43,6 +41,7 @@ export default function useLinking(
43
41
  | undefined;
44
42
 
45
43
  // Storing this in a local variable stops Jest from complaining about import after teardown
44
+ // @ts-expect-error: removeEventListener is not present in newer RN versions
46
45
  const removeEventListener = Linking.removeEventListener?.bind(Linking);
47
46
 
48
47
  return () => {
@@ -58,6 +57,8 @@ export default function useLinking(
58
57
  getActionFromState = getActionFromStateDefault,
59
58
  }: Options
60
59
  ) {
60
+ const independent = useNavigationIndependentTree();
61
+
61
62
  React.useEffect(() => {
62
63
  if (process.env.NODE_ENV === 'production') {
63
64
  return undefined;
@@ -194,8 +195,7 @@ export default function useLinking(
194
195
  console.warn(
195
196
  `An error occurred when trying to handle the link '${url}': ${
196
197
  typeof e === 'object' && e != null && 'message' in e
197
- ? // @ts-expect-error: we're already checking for this
198
- e.message
198
+ ? e.message
199
199
  : e
200
200
  }`
201
201
  );
@@ -6,6 +6,7 @@ import {
6
6
  NavigationContainerRef,
7
7
  NavigationState,
8
8
  ParamListBase,
9
+ useNavigationIndependentTree,
9
10
  } from '@react-navigation/core';
10
11
  import isEqual from 'fast-deep-equal';
11
12
  import * as React from 'react';
@@ -93,14 +94,11 @@ const series = (cb: () => Promise<void>) => {
93
94
 
94
95
  let linkingHandlers: Symbol[] = [];
95
96
 
96
- type Options = LinkingOptions<ParamListBase> & {
97
- independent?: boolean;
98
- };
97
+ type Options = LinkingOptions<ParamListBase>;
99
98
 
100
99
  export default function useLinking(
101
100
  ref: React.RefObject<NavigationContainerRef<ParamListBase>>,
102
101
  {
103
- independent,
104
102
  enabled = true,
105
103
  config,
106
104
  getStateFromPath = getStateFromPathDefault,
@@ -108,6 +106,8 @@ export default function useLinking(
108
106
  getActionFromState = getActionFromStateDefault,
109
107
  }: Options
110
108
  ) {
109
+ const independent = useNavigationIndependentTree();
110
+
111
111
  React.useEffect(() => {
112
112
  if (process.env.NODE_ENV === 'production') {
113
113
  return undefined;
@@ -256,8 +256,7 @@ export default function useLinking(
256
256
  console.warn(
257
257
  `An error occurred when trying to handle the link '${path}': ${
258
258
  typeof e === 'object' && e != null && 'message' in e
259
- ? // @ts-expect-error: we're already checking for this
260
- e.message
259
+ ? e.message
261
260
  : e
262
261
  }`
263
262
  );
@@ -1 +0,0 @@
1
- {"version":3,"names":["getRootStateForNavigate","navigation","state","parent","getParent","parentState","getState","index","routes","useLinkBuilder","React","useContext","NavigationHelpersContext","linking","LinkingContext","buildLink","useCallback","name","params","options","enabled","undefined","path","getPathFromState","config"],"sourceRoot":"../../src","sources":["useLinkBuilder.tsx"],"mappings":";;;;;;AAAA;AAOA;AAEA;AAA8C;AAAA;AAAA;AAW9C,MAAMA,uBAAuB,GAAG,CAC9BC,UAA4B,EAC5BC,KAAmB,KACF;EACjB,MAAMC,MAAM,GAAGF,UAAU,CAACG,SAAS,EAAE;EAErC,IAAID,MAAM,EAAE;IACV,MAAME,WAAW,GAAGF,MAAM,CAACG,QAAQ,EAAE;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;AACe,SAASO,cAAc,GAAG;EACvC,MAAMR,UAAU,GAAGS,KAAK,CAACC,UAAU,CAACC,8BAAwB,CAAC;EAC7D,MAAMC,OAAO,GAAGH,KAAK,CAACC,UAAU,CAACG,uBAAc,CAAC;EAEhD,MAAMC,SAAS,GAAGL,KAAK,CAACM,WAAW,CACjC,CAACC,IAAY,EAAEC,MAAe,KAAK;IACjC,MAAM;MAAEC;IAAQ,CAAC,GAAGN,OAAO;IAE3B,IAAI,CAAAM,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,OAAO,MAAK,KAAK,EAAE;MAC9B,OAAOC,SAAS;IAClB;IAEA,MAAMnB,KAAK,GAAGD,UAAU,GACpBD,uBAAuB,CAACC,UAAU,EAAE;MAClCM,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;QAAES,IAAI;QAAEC;MAAO,CAAC;IAC3B,CAAC,CAAC;IACF;IACA;IACA;MACEX,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;QAAES,IAAI;QAAEC;MAAO,CAAC;IAC3B,CAAC;IAEL,MAAMI,IAAI,GAAGH,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEI,gBAAgB,GAClCJ,OAAO,CAACI,gBAAgB,CAACrB,KAAK,EAAEiB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,MAAM,CAAC,GAChD,IAAAD,sBAAgB,EAACrB,KAAK,EAAEiB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,MAAM,CAAC;IAE5C,OAAOF,IAAI;EACb,CAAC,EACD,CAACT,OAAO,EAAEZ,UAAU,CAAC,CACtB;EAED,OAAOc,SAAS;AAClB"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = useLinkTo;
7
- var _core = require("@react-navigation/core");
8
- var React = _interopRequireWildcard(require("react"));
9
- var _LinkingContext = _interopRequireDefault(require("./LinkingContext"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
- function useLinkTo() {
14
- const navigation = React.useContext(_core.NavigationContainerRefContext);
15
- const linking = React.useContext(_LinkingContext.default);
16
- const linkTo = React.useCallback(to => {
17
- if (navigation === undefined) {
18
- throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
19
- }
20
- if (typeof to !== 'string') {
21
- // @ts-expect-error: This is fine
22
- navigation.navigate(to.screen, to.params);
23
- return;
24
- }
25
- if (!to.startsWith('/')) {
26
- throw new Error(`The path must start with '/' (${to}).`);
27
- }
28
- const {
29
- options
30
- } = linking;
31
- const state = options !== null && options !== void 0 && options.getStateFromPath ? options.getStateFromPath(to, options.config) : (0, _core.getStateFromPath)(to, options === null || options === void 0 ? void 0 : options.config);
32
- if (state) {
33
- const action = (0, _core.getActionFromState)(state, options === null || options === void 0 ? void 0 : options.config);
34
- if (action !== undefined) {
35
- navigation.dispatch(action);
36
- } else {
37
- navigation.reset(state);
38
- }
39
- } else {
40
- throw new Error('Failed to parse the path to a navigation state.');
41
- }
42
- }, [linking, navigation]);
43
- return linkTo;
44
- }
45
- //# sourceMappingURL=useLinkTo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useLinkTo","navigation","React","useContext","NavigationContainerRefContext","linking","LinkingContext","linkTo","useCallback","to","undefined","Error","navigate","screen","params","startsWith","options","state","getStateFromPath","config","action","getActionFromState","dispatch","reset"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":";;;;;;AAAA;AAKA;AAEA;AAA8C;AAAA;AAAA;AAiB/B,SAASA,SAAS,GAE7B;EACF,MAAMC,UAAU,GAAGC,KAAK,CAACC,UAAU,CAACC,mCAA6B,CAAC;EAClE,MAAMC,OAAO,GAAGH,KAAK,CAACC,UAAU,CAACG,uBAAc,CAAC;EAEhD,MAAMC,MAAM,GAAGL,KAAK,CAACM,WAAW,CAC7BC,EAAiB,IAAK;IACrB,IAAIR,UAAU,KAAKS,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFAAkF,CACnF;IACH;IAEA,IAAI,OAAOF,EAAE,KAAK,QAAQ,EAAE;MAC1B;MACAR,UAAU,CAACW,QAAQ,CAACH,EAAE,CAACI,MAAM,EAAEJ,EAAE,CAACK,MAAM,CAAC;MACzC;IACF;IAEA,IAAI,CAACL,EAAE,CAACM,UAAU,CAAC,GAAG,CAAC,EAAE;MACvB,MAAM,IAAIJ,KAAK,CAAE,iCAAgCF,EAAG,IAAG,CAAC;IAC1D;IAEA,MAAM;MAAEO;IAAQ,CAAC,GAAGX,OAAO;IAE3B,MAAMY,KAAK,GAAGD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,gBAAgB,GACnCF,OAAO,CAACE,gBAAgB,CAACT,EAAE,EAAEO,OAAO,CAACG,MAAM,CAAC,GAC5C,IAAAD,sBAAgB,EAACT,EAAE,EAAEO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,MAAM,CAAC;IAEzC,IAAIF,KAAK,EAAE;MACT,MAAMG,MAAM,GAAG,IAAAC,wBAAkB,EAACJ,KAAK,EAAED,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,MAAM,CAAC;MAEzD,IAAIC,MAAM,KAAKV,SAAS,EAAE;QACxBT,UAAU,CAACqB,QAAQ,CAACF,MAAM,CAAC;MAC7B,CAAC,MAAM;QACLnB,UAAU,CAACsB,KAAK,CAACN,KAAK,CAAC;MACzB;IACF,CAAC,MAAM;MACL,MAAM,IAAIN,KAAK,CAAC,iDAAiD,CAAC;IACpE;EACF,CAAC,EACD,CAACN,OAAO,EAAEJ,UAAU,CAAC,CACtB;EAED,OAAOM,MAAM;AACf"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["getPathFromState","NavigationHelpersContext","React","LinkingContext","getRootStateForNavigate","navigation","state","parent","getParent","parentState","getState","index","routes","useLinkBuilder","useContext","linking","buildLink","useCallback","name","params","options","enabled","undefined","path","config"],"sourceRoot":"../../src","sources":["useLinkBuilder.tsx"],"mappings":"AAAA,SACEA,gBAAgB,EAEhBC,wBAAwB,QAGnB,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAOC,cAAc,MAAM,kBAAkB;AAW7C,MAAMC,uBAAuB,GAAG,CAC9BC,UAA4B,EAC5BC,KAAmB,KACF;EACjB,MAAMC,MAAM,GAAGF,UAAU,CAACG,SAAS,EAAE;EAErC,IAAID,MAAM,EAAE;IACV,MAAME,WAAW,GAAGF,MAAM,CAACG,QAAQ,EAAE;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,eAAe,SAASO,cAAc,GAAG;EACvC,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,IAAI,CAAAK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,OAAO,MAAK,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,aAAPA,OAAO,eAAPA,OAAO,CAAEpB,gBAAgB,GAClCoB,OAAO,CAACpB,gBAAgB,CAACM,KAAK,EAAEc,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,MAAM,CAAC,GAChDxB,gBAAgB,CAACM,KAAK,EAAEc,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,MAAM,CAAC;IAE5C,OAAOD,IAAI;EACb,CAAC,EACD,CAACR,OAAO,EAAEV,UAAU,CAAC,CACtB;EAED,OAAOW,SAAS;AAClB"}
@@ -1,36 +0,0 @@
1
- import { getActionFromState, getStateFromPath, NavigationContainerRefContext } from '@react-navigation/core';
2
- import * as React from 'react';
3
- import LinkingContext from './LinkingContext';
4
- export default function useLinkTo() {
5
- const navigation = React.useContext(NavigationContainerRefContext);
6
- const linking = React.useContext(LinkingContext);
7
- const linkTo = React.useCallback(to => {
8
- if (navigation === undefined) {
9
- throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
10
- }
11
- if (typeof to !== 'string') {
12
- // @ts-expect-error: This is fine
13
- navigation.navigate(to.screen, to.params);
14
- return;
15
- }
16
- if (!to.startsWith('/')) {
17
- throw new Error(`The path must start with '/' (${to}).`);
18
- }
19
- const {
20
- options
21
- } = linking;
22
- const state = options !== null && options !== void 0 && options.getStateFromPath ? options.getStateFromPath(to, options.config) : getStateFromPath(to, options === null || options === void 0 ? void 0 : options.config);
23
- if (state) {
24
- const action = getActionFromState(state, options === null || options === void 0 ? void 0 : options.config);
25
- if (action !== undefined) {
26
- navigation.dispatch(action);
27
- } else {
28
- navigation.reset(state);
29
- }
30
- } else {
31
- throw new Error('Failed to parse the path to a navigation state.');
32
- }
33
- }, [linking, navigation]);
34
- return linkTo;
35
- }
36
- //# sourceMappingURL=useLinkTo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["getActionFromState","getStateFromPath","NavigationContainerRefContext","React","LinkingContext","useLinkTo","navigation","useContext","linking","linkTo","useCallback","to","undefined","Error","navigate","screen","params","startsWith","options","state","config","action","dispatch","reset"],"sourceRoot":"../../src","sources":["useLinkTo.tsx"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,gBAAgB,EAChBC,6BAA6B,QACxB,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,OAAOC,cAAc,MAAM,kBAAkB;AAiB7C,eAAe,SAASC,SAAS,GAE7B;EACF,MAAMC,UAAU,GAAGH,KAAK,CAACI,UAAU,CAACL,6BAA6B,CAAC;EAClE,MAAMM,OAAO,GAAGL,KAAK,CAACI,UAAU,CAACH,cAAc,CAAC;EAEhD,MAAMK,MAAM,GAAGN,KAAK,CAACO,WAAW,CAC7BC,EAAiB,IAAK;IACrB,IAAIL,UAAU,KAAKM,SAAS,EAAE;MAC5B,MAAM,IAAIC,KAAK,CACb,kFAAkF,CACnF;IACH;IAEA,IAAI,OAAOF,EAAE,KAAK,QAAQ,EAAE;MAC1B;MACAL,UAAU,CAACQ,QAAQ,CAACH,EAAE,CAACI,MAAM,EAAEJ,EAAE,CAACK,MAAM,CAAC;MACzC;IACF;IAEA,IAAI,CAACL,EAAE,CAACM,UAAU,CAAC,GAAG,CAAC,EAAE;MACvB,MAAM,IAAIJ,KAAK,CAAE,iCAAgCF,EAAG,IAAG,CAAC;IAC1D;IAEA,MAAM;MAAEO;IAAQ,CAAC,GAAGV,OAAO;IAE3B,MAAMW,KAAK,GAAGD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEjB,gBAAgB,GACnCiB,OAAO,CAACjB,gBAAgB,CAACU,EAAE,EAAEO,OAAO,CAACE,MAAM,CAAC,GAC5CnB,gBAAgB,CAACU,EAAE,EAAEO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,MAAM,CAAC;IAEzC,IAAID,KAAK,EAAE;MACT,MAAME,MAAM,GAAGrB,kBAAkB,CAACmB,KAAK,EAAED,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,MAAM,CAAC;MAEzD,IAAIC,MAAM,KAAKT,SAAS,EAAE;QACxBN,UAAU,CAACgB,QAAQ,CAACD,MAAM,CAAC;MAC7B,CAAC,MAAM;QACLf,UAAU,CAACiB,KAAK,CAACJ,KAAK,CAAC;MACzB;IACF,CAAC,MAAM;MACL,MAAM,IAAIN,KAAK,CAAC,iDAAiD,CAAC;IACpE;EACF,CAAC,EACD,CAACL,OAAO,EAAEF,UAAU,CAAC,CACtB;EAED,OAAOG,MAAM;AACf"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Build destination link for a navigate action.
3
- * Useful for showing anchor tags on the web for buttons that perform navigation.
4
- */
5
- export default function useLinkBuilder(): (name: string, params?: object) => string | undefined;
6
- //# sourceMappingURL=useLinkBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AA2CA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,WAK3B,MAAM,WAAW,MAAM,wBA6BjC"}
@@ -1,9 +0,0 @@
1
- export declare type To<ParamList extends ReactNavigation.RootParamList = ReactNavigation.RootParamList, RouteName extends keyof ParamList = keyof ParamList> = string | (undefined extends ParamList[RouteName] ? {
2
- screen: Extract<RouteName, string>;
3
- params?: ParamList[RouteName];
4
- } : {
5
- screen: Extract<RouteName, string>;
6
- params: ParamList[RouteName];
7
- });
8
- export default function useLinkTo<ParamList extends ReactNavigation.RootParamList>(): (to: To<ParamList>) => void;
9
- //# sourceMappingURL=useLinkTo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLinkTo.d.ts","sourceRoot":"","sources":["../../../src/useLinkTo.tsx"],"names":[],"mappings":"AASA,oBAAY,EAAE,CACZ,SAAS,SAAS,eAAe,CAAC,aAAa,GAAG,eAAe,CAAC,aAAa,EAC/E,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAEjD,MAAM,GACN,CAAC,SAAS,SAAS,SAAS,CAAC,SAAS,CAAC,GACnC;IACE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC/B,GACD;IACE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEX,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,SAAS,SAAS,eAAe,CAAC,aAAa,UAMxC,GAAG,SAAS,CAAC,UAuCrB"}
package/src/useLinkTo.tsx DELETED
@@ -1,71 +0,0 @@
1
- import {
2
- getActionFromState,
3
- getStateFromPath,
4
- NavigationContainerRefContext,
5
- } from '@react-navigation/core';
6
- import * as React from 'react';
7
-
8
- import LinkingContext from './LinkingContext';
9
-
10
- export type To<
11
- ParamList extends ReactNavigation.RootParamList = ReactNavigation.RootParamList,
12
- RouteName extends keyof ParamList = keyof ParamList
13
- > =
14
- | string
15
- | (undefined extends ParamList[RouteName]
16
- ? {
17
- screen: Extract<RouteName, string>;
18
- params?: ParamList[RouteName];
19
- }
20
- : {
21
- screen: Extract<RouteName, string>;
22
- params: ParamList[RouteName];
23
- });
24
-
25
- export default function useLinkTo<
26
- ParamList extends ReactNavigation.RootParamList
27
- >() {
28
- const navigation = React.useContext(NavigationContainerRefContext);
29
- const linking = React.useContext(LinkingContext);
30
-
31
- const linkTo = React.useCallback(
32
- (to: To<ParamList>) => {
33
- if (navigation === undefined) {
34
- throw new Error(
35
- "Couldn't find a navigation object. Is your component inside NavigationContainer?"
36
- );
37
- }
38
-
39
- if (typeof to !== 'string') {
40
- // @ts-expect-error: This is fine
41
- navigation.navigate(to.screen, to.params);
42
- return;
43
- }
44
-
45
- if (!to.startsWith('/')) {
46
- throw new Error(`The path must start with '/' (${to}).`);
47
- }
48
-
49
- const { options } = linking;
50
-
51
- const state = options?.getStateFromPath
52
- ? options.getStateFromPath(to, options.config)
53
- : getStateFromPath(to, options?.config);
54
-
55
- if (state) {
56
- const action = getActionFromState(state, options?.config);
57
-
58
- if (action !== undefined) {
59
- navigation.dispatch(action);
60
- } else {
61
- navigation.reset(state);
62
- }
63
- } else {
64
- throw new Error('Failed to parse the path to a navigation state.');
65
- }
66
- },
67
- [linking, navigation]
68
- );
69
-
70
- return linkTo;
71
- }