@react-navigation/native 6.1.0 → 6.1.1

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 (136) hide show
  1. package/lib/commonjs/Link.js +2 -12
  2. package/lib/commonjs/Link.js.map +1 -1
  3. package/lib/commonjs/LinkingContext.js +0 -4
  4. package/lib/commonjs/LinkingContext.js.map +1 -1
  5. package/lib/commonjs/NavigationContainer.js +9 -31
  6. package/lib/commonjs/NavigationContainer.js.map +1 -1
  7. package/lib/commonjs/ServerContainer.js +2 -12
  8. package/lib/commonjs/ServerContainer.js.map +1 -1
  9. package/lib/commonjs/ServerContext.js +0 -4
  10. package/lib/commonjs/ServerContext.js.map +1 -1
  11. package/lib/commonjs/createMemoryHistory.js +29 -54
  12. package/lib/commonjs/createMemoryHistory.js.map +1 -1
  13. package/lib/commonjs/extractPathFromURL.js +2 -8
  14. package/lib/commonjs/extractPathFromURL.js.map +1 -1
  15. package/lib/commonjs/index.js +0 -17
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/theming/DarkTheme.js.map +1 -1
  18. package/lib/commonjs/theming/DefaultTheme.js.map +1 -1
  19. package/lib/commonjs/theming/ThemeContext.js +0 -6
  20. package/lib/commonjs/theming/ThemeContext.js.map +1 -1
  21. package/lib/commonjs/theming/ThemeProvider.js +0 -6
  22. package/lib/commonjs/theming/ThemeProvider.js.map +1 -1
  23. package/lib/commonjs/theming/useTheme.js +0 -6
  24. package/lib/commonjs/theming/useTheme.js.map +1 -1
  25. package/lib/commonjs/types.js.map +1 -1
  26. package/lib/commonjs/useBackButton.js +0 -9
  27. package/lib/commonjs/useBackButton.js.map +1 -1
  28. package/lib/commonjs/useDocumentTitle.js +1 -12
  29. package/lib/commonjs/useDocumentTitle.js.map +1 -1
  30. package/lib/commonjs/useDocumentTitle.native.js +2 -2
  31. package/lib/commonjs/useDocumentTitle.native.js.map +1 -1
  32. package/lib/commonjs/useLinkBuilder.js +5 -15
  33. package/lib/commonjs/useLinkBuilder.js.map +1 -1
  34. package/lib/commonjs/useLinkProps.js +8 -24
  35. package/lib/commonjs/useLinkProps.js.map +1 -1
  36. package/lib/commonjs/useLinkTo.js +0 -12
  37. package/lib/commonjs/useLinkTo.js.map +1 -1
  38. package/lib/commonjs/useLinking.js +35 -79
  39. package/lib/commonjs/useLinking.js.map +1 -1
  40. package/lib/commonjs/useLinking.native.js +9 -36
  41. package/lib/commonjs/useLinking.native.js.map +1 -1
  42. package/lib/commonjs/useScrollToTop.js +10 -17
  43. package/lib/commonjs/useScrollToTop.js.map +1 -1
  44. package/lib/commonjs/useThenable.js +2 -9
  45. package/lib/commonjs/useThenable.js.map +1 -1
  46. package/lib/module/Link.js +2 -6
  47. package/lib/module/Link.js.map +1 -1
  48. package/lib/module/LinkingContext.js.map +1 -1
  49. package/lib/module/NavigationContainer.js +9 -18
  50. package/lib/module/NavigationContainer.js.map +1 -1
  51. package/lib/module/ServerContainer.js +2 -5
  52. package/lib/module/ServerContainer.js.map +1 -1
  53. package/lib/module/ServerContext.js.map +1 -1
  54. package/lib/module/createMemoryHistory.js +29 -52
  55. package/lib/module/createMemoryHistory.js.map +1 -1
  56. package/lib/module/extractPathFromURL.js +2 -5
  57. package/lib/module/extractPathFromURL.js.map +1 -1
  58. package/lib/module/index.js.map +1 -1
  59. package/lib/module/theming/DarkTheme.js.map +1 -1
  60. package/lib/module/theming/DefaultTheme.js.map +1 -1
  61. package/lib/module/theming/ThemeContext.js.map +1 -1
  62. package/lib/module/theming/ThemeProvider.js.map +1 -1
  63. package/lib/module/theming/useTheme.js.map +1 -1
  64. package/lib/module/types.js.map +1 -1
  65. package/lib/module/useBackButton.js +0 -3
  66. package/lib/module/useBackButton.js.map +1 -1
  67. package/lib/module/useDocumentTitle.js +1 -9
  68. package/lib/module/useDocumentTitle.js.map +1 -1
  69. package/lib/module/useDocumentTitle.native.js +2 -1
  70. package/lib/module/useDocumentTitle.native.js.map +1 -1
  71. package/lib/module/useLinkBuilder.js +5 -9
  72. package/lib/module/useLinkBuilder.js.map +1 -1
  73. package/lib/module/useLinkProps.js +8 -16
  74. package/lib/module/useLinkProps.js.map +1 -1
  75. package/lib/module/useLinkTo.js +0 -5
  76. package/lib/module/useLinkTo.js.map +1 -1
  77. package/lib/module/useLinking.js +35 -70
  78. package/lib/module/useLinking.js.map +1 -1
  79. package/lib/module/useLinking.native.js +9 -26
  80. package/lib/module/useLinking.native.js.map +1 -1
  81. package/lib/module/useScrollToTop.js +10 -13
  82. package/lib/module/useScrollToTop.js.map +1 -1
  83. package/lib/module/useThenable.js +2 -5
  84. package/lib/module/useThenable.js.map +1 -1
  85. package/lib/typescript/src/Link.d.ts +1 -0
  86. package/lib/typescript/src/Link.d.ts.map +1 -0
  87. package/lib/typescript/src/LinkingContext.d.ts +1 -0
  88. package/lib/typescript/src/LinkingContext.d.ts.map +1 -0
  89. package/lib/typescript/src/NavigationContainer.d.ts +1 -0
  90. package/lib/typescript/src/NavigationContainer.d.ts.map +1 -0
  91. package/lib/typescript/src/ServerContainer.d.ts +1 -0
  92. package/lib/typescript/src/ServerContainer.d.ts.map +1 -0
  93. package/lib/typescript/src/ServerContext.d.ts +1 -0
  94. package/lib/typescript/src/ServerContext.d.ts.map +1 -0
  95. package/lib/typescript/src/__mocks__/window.d.ts +1 -0
  96. package/lib/typescript/src/__mocks__/window.d.ts.map +1 -0
  97. package/lib/typescript/src/createMemoryHistory.d.ts +1 -0
  98. package/lib/typescript/src/createMemoryHistory.d.ts.map +1 -0
  99. package/lib/typescript/src/extractPathFromURL.d.ts +1 -0
  100. package/lib/typescript/src/extractPathFromURL.d.ts.map +1 -0
  101. package/lib/typescript/src/index.d.ts +1 -0
  102. package/lib/typescript/src/index.d.ts.map +1 -0
  103. package/lib/typescript/src/theming/DarkTheme.d.ts +1 -0
  104. package/lib/typescript/src/theming/DarkTheme.d.ts.map +1 -0
  105. package/lib/typescript/src/theming/DefaultTheme.d.ts +1 -0
  106. package/lib/typescript/src/theming/DefaultTheme.d.ts.map +1 -0
  107. package/lib/typescript/src/theming/ThemeContext.d.ts +1 -0
  108. package/lib/typescript/src/theming/ThemeContext.d.ts.map +1 -0
  109. package/lib/typescript/src/theming/ThemeProvider.d.ts +1 -0
  110. package/lib/typescript/src/theming/ThemeProvider.d.ts.map +1 -0
  111. package/lib/typescript/src/theming/useTheme.d.ts +1 -0
  112. package/lib/typescript/src/theming/useTheme.d.ts.map +1 -0
  113. package/lib/typescript/src/types.d.ts +1 -0
  114. package/lib/typescript/src/types.d.ts.map +1 -0
  115. package/lib/typescript/src/useBackButton.d.ts +1 -0
  116. package/lib/typescript/src/useBackButton.d.ts.map +1 -0
  117. package/lib/typescript/src/useDocumentTitle.d.ts +1 -0
  118. package/lib/typescript/src/useDocumentTitle.d.ts.map +1 -0
  119. package/lib/typescript/src/useDocumentTitle.native.d.ts +1 -0
  120. package/lib/typescript/src/useDocumentTitle.native.d.ts.map +1 -0
  121. package/lib/typescript/src/useLinkBuilder.d.ts +1 -0
  122. package/lib/typescript/src/useLinkBuilder.d.ts.map +1 -0
  123. package/lib/typescript/src/useLinkProps.d.ts +1 -0
  124. package/lib/typescript/src/useLinkProps.d.ts.map +1 -0
  125. package/lib/typescript/src/useLinkTo.d.ts +1 -0
  126. package/lib/typescript/src/useLinkTo.d.ts.map +1 -0
  127. package/lib/typescript/src/useLinking.d.ts +1 -0
  128. package/lib/typescript/src/useLinking.d.ts.map +1 -0
  129. package/lib/typescript/src/useLinking.native.d.ts +1 -0
  130. package/lib/typescript/src/useLinking.native.d.ts.map +1 -0
  131. package/lib/typescript/src/useScrollToTop.d.ts +1 -0
  132. package/lib/typescript/src/useScrollToTop.d.ts.map +1 -0
  133. package/lib/typescript/src/useThenable.d.ts +1 -0
  134. package/lib/typescript/src/useThenable.d.ts.map +1 -0
  135. package/package.json +4 -4
  136. package/src/useScrollToTop.tsx +6 -1
@@ -3,12 +3,10 @@ import * as React from 'react';
3
3
  import { Platform } from 'react-native';
4
4
  import LinkingContext from './LinkingContext';
5
5
  import useLinkTo from './useLinkTo';
6
-
7
6
  const getStateFromParams = params => {
8
7
  if (params !== null && params !== void 0 && params.state) {
9
8
  return params.state;
10
9
  }
11
-
12
10
  if (params !== null && params !== void 0 && params.screen) {
13
11
  return {
14
12
  routes: [{
@@ -19,20 +17,16 @@ const getStateFromParams = params => {
19
17
  }]
20
18
  };
21
19
  }
22
-
23
20
  return undefined;
24
21
  };
22
+
25
23
  /**
26
24
  * Hook to get props for an anchor tag so it can work with in page navigation.
27
25
  *
28
26
  * @param props.to Absolute path to screen (e.g. `/feeds/hot`).
29
27
  * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.
30
28
  */
31
-
32
-
33
29
  export default function useLinkProps(_ref) {
34
- var _options$getPathFromS;
35
-
36
30
  let {
37
31
  to,
38
32
  action
@@ -43,26 +37,25 @@ export default function useLinkProps(_ref) {
43
37
  options
44
38
  } = React.useContext(LinkingContext);
45
39
  const linkTo = useLinkTo();
46
-
47
40
  const onPress = e => {
48
41
  var _e$currentTarget;
49
-
50
42
  let shouldHandle = false;
51
-
52
43
  if (Platform.OS !== 'web' || !e) {
53
44
  shouldHandle = e ? !e.defaultPrevented : true;
54
- } else if (!e.defaultPrevented && // onPress prevented default
45
+ } else if (!e.defaultPrevented &&
46
+ // onPress prevented default
55
47
  // @ts-expect-error: these properties exist on web, but not in React Native
56
- !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && ( // ignore clicks with modifier keys
48
+ !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && (
49
+ // ignore clicks with modifier keys
57
50
  // @ts-expect-error: these properties exist on web, but not in React Native
58
- e.button == null || e.button === 0) && // ignore everything but left clicks
51
+ e.button == null || e.button === 0) &&
52
+ // ignore everything but left clicks
59
53
  // @ts-expect-error: these properties exist on web, but not in React Native
60
54
  [undefined, null, '', 'self'].includes((_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.target) // let browser handle "target=_blank" etc.
61
55
  ) {
62
56
  e.preventDefault();
63
57
  shouldHandle = true;
64
58
  }
65
-
66
59
  if (shouldHandle) {
67
60
  if (action) {
68
61
  if (navigation) {
@@ -77,8 +70,7 @@ export default function useLinkProps(_ref) {
77
70
  }
78
71
  }
79
72
  };
80
-
81
- const getPathFromStateHelper = (_options$getPathFromS = options === null || options === void 0 ? void 0 : options.getPathFromState) !== null && _options$getPathFromS !== void 0 ? _options$getPathFromS : getPathFromState;
73
+ const getPathFromStateHelper = (options === null || options === void 0 ? void 0 : options.getPathFromState) ?? getPathFromState;
82
74
  const href = typeof to === 'string' ? to : getPathFromStateHelper({
83
75
  routes: [{
84
76
  name: to.screen,
@@ -1 +1 @@
1
- {"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","useLinkTo","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","to","action","root","useContext","navigation","options","linkTo","onPress","e","shouldHandle","OS","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","button","includes","currentTarget","target","preventDefault","dispatch","Error","getPathFromStateHelper","href","config","accessibilityRole"],"sources":["useLinkProps.tsx"],"sourcesContent":["import {\n getPathFromState,\n NavigationAction,\n NavigationContainerRefContext,\n NavigationHelpersContext,\n NavigatorScreenParams,\n ParamListBase,\n} from '@react-navigation/core';\nimport type { NavigationState, PartialState } from '@react-navigation/routers';\nimport * as React from 'react';\nimport { GestureResponderEvent, Platform } from 'react-native';\n\nimport LinkingContext from './LinkingContext';\nimport useLinkTo, { To } from './useLinkTo';\n\ntype Props<ParamList extends ReactNavigation.RootParamList> = {\n to: To<ParamList>;\n action?: NavigationAction;\n};\n\nconst getStateFromParams = (\n params: NavigatorScreenParams<ParamListBase, NavigationState> | undefined\n): PartialState<NavigationState> | NavigationState | undefined => {\n if (params?.state) {\n return params.state;\n }\n\n if (params?.screen) {\n return {\n routes: [\n {\n name: params.screen,\n params: params.params,\n // @ts-expect-error\n state: params.screen\n ? getStateFromParams(\n params.params as\n | NavigatorScreenParams<ParamListBase, NavigationState>\n | undefined\n )\n : undefined,\n },\n ],\n };\n }\n\n return undefined;\n};\n\n/**\n * Hook to get props for an anchor tag so it can work with in page navigation.\n *\n * @param props.to Absolute path to screen (e.g. `/feeds/hot`).\n * @param props.action Optional action to use for in-page navigation. By default, the path is parsed to an action based on linking config.\n */\nexport default function useLinkProps<\n ParamList extends ReactNavigation.RootParamList\n>({ to, action }: Props<ParamList>) {\n const root = React.useContext(NavigationContainerRefContext);\n const navigation = React.useContext(NavigationHelpersContext);\n const { options } = React.useContext(LinkingContext);\n const linkTo = useLinkTo<ParamList>();\n\n const onPress = (\n e?: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent\n ) => {\n let shouldHandle = false;\n\n if (Platform.OS !== 'web' || !e) {\n shouldHandle = e ? !e.defaultPrevented : true;\n } else if (\n !e.defaultPrevented && // onPress prevented default\n // @ts-expect-error: these properties exist on web, but not in React Native\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n // @ts-expect-error: these properties exist on web, but not in React Native\n (e.button == null || e.button === 0) && // ignore everything but left clicks\n // @ts-expect-error: these properties exist on web, but not in React Native\n [undefined, null, '', 'self'].includes(e.currentTarget?.target) // let browser handle \"target=_blank\" etc.\n ) {\n e.preventDefault();\n shouldHandle = true;\n }\n\n if (shouldHandle) {\n if (action) {\n if (navigation) {\n navigation.dispatch(action);\n } else if (root) {\n root.dispatch(action);\n } else {\n throw new Error(\n \"Couldn't find a navigation object. Is your component inside NavigationContainer?\"\n );\n }\n } else {\n linkTo(to);\n }\n }\n };\n\n const getPathFromStateHelper = options?.getPathFromState ?? getPathFromState;\n\n const href =\n typeof to === 'string'\n ? to\n : getPathFromStateHelper(\n {\n routes: [\n {\n name: to.screen,\n // @ts-expect-error\n params: to.params,\n // @ts-expect-error\n state: getStateFromParams(to.params),\n },\n ],\n },\n options?.config\n );\n\n return {\n href,\n accessibilityRole: 'link' as const,\n onPress,\n };\n}\n"],"mappings":"AAAA,SACEA,gBADF,EAGEC,6BAHF,EAIEC,wBAJF,QAOO,wBAPP;AASA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,SAAgCC,QAAhC,QAAgD,cAAhD;AAEA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,OAAOC,SAAP,MAA8B,aAA9B;;AAOA,MAAMC,kBAAkB,GACtBC,MADyB,IAEuC;EAChE,IAAIA,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEC,KAAZ,EAAmB;IACjB,OAAOD,MAAM,CAACC,KAAd;EACD;;EAED,IAAID,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEE,MAAZ,EAAoB;IAClB,OAAO;MACLC,MAAM,EAAE,CACN;QACEC,IAAI,EAAEJ,MAAM,CAACE,MADf;QAEEF,MAAM,EAAEA,MAAM,CAACA,MAFjB;QAGE;QACAC,KAAK,EAAED,MAAM,CAACE,MAAP,GACHH,kBAAkB,CAChBC,MAAM,CAACA,MADS,CADf,GAMHK;MAVN,CADM;IADH,CAAP;EAgBD;;EAED,OAAOA,SAAP;AACD,CA3BD;AA6BA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAe,SAASC,YAAT,OAEqB;EAAA;;EAAA,IAAlC;IAAEC,EAAF;IAAMC;EAAN,CAAkC;EAClC,MAAMC,IAAI,GAAGd,KAAK,CAACe,UAAN,CAAiBjB,6BAAjB,CAAb;EACA,MAAMkB,UAAU,GAAGhB,KAAK,CAACe,UAAN,CAAiBhB,wBAAjB,CAAnB;EACA,MAAM;IAAEkB;EAAF,IAAcjB,KAAK,CAACe,UAAN,CAAiBb,cAAjB,CAApB;EACA,MAAMgB,MAAM,GAAGf,SAAS,EAAxB;;EAEA,MAAMgB,OAAO,GACXC,CADc,IAEX;IAAA;;IACH,IAAIC,YAAY,GAAG,KAAnB;;IAEA,IAAIpB,QAAQ,CAACqB,EAAT,KAAgB,KAAhB,IAAyB,CAACF,CAA9B,EAAiC;MAC/BC,YAAY,GAAGD,CAAC,GAAG,CAACA,CAAC,CAACG,gBAAN,GAAyB,IAAzC;IACD,CAFD,MAEO,IACL,CAACH,CAAC,CAACG,gBAAH,IAAuB;IACvB;IACA,EAAEH,CAAC,CAACI,OAAF,IAAaJ,CAAC,CAACK,MAAf,IAAyBL,CAAC,CAACM,OAA3B,IAAsCN,CAAC,CAACO,QAA1C,CAFA,MAEuD;IACvD;IACCP,CAAC,CAACQ,MAAF,IAAY,IAAZ,IAAoBR,CAAC,CAACQ,MAAF,KAAa,CAJlC,KAIwC;IACxC;IACA,CAAClB,SAAD,EAAY,IAAZ,EAAkB,EAAlB,EAAsB,MAAtB,EAA8BmB,QAA9B,qBAAuCT,CAAC,CAACU,aAAzC,qDAAuC,iBAAiBC,MAAxD,CAPK,CAO2D;IAP3D,EAQL;MACAX,CAAC,CAACY,cAAF;MACAX,YAAY,GAAG,IAAf;IACD;;IAED,IAAIA,YAAJ,EAAkB;MAChB,IAAIR,MAAJ,EAAY;QACV,IAAIG,UAAJ,EAAgB;UACdA,UAAU,CAACiB,QAAX,CAAoBpB,MAApB;QACD,CAFD,MAEO,IAAIC,IAAJ,EAAU;UACfA,IAAI,CAACmB,QAAL,CAAcpB,MAAd;QACD,CAFM,MAEA;UACL,MAAM,IAAIqB,KAAJ,CACJ,kFADI,CAAN;QAGD;MACF,CAVD,MAUO;QACLhB,MAAM,CAACN,EAAD,CAAN;MACD;IACF;EACF,CAnCD;;EAqCA,MAAMuB,sBAAsB,4BAAGlB,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEpB,gBAAZ,yEAAgCA,gBAA5D;EAEA,MAAMuC,IAAI,GACR,OAAOxB,EAAP,KAAc,QAAd,GACIA,EADJ,GAEIuB,sBAAsB,CACpB;IACE3B,MAAM,EAAE,CACN;MACEC,IAAI,EAAEG,EAAE,CAACL,MADX;MAEE;MACAF,MAAM,EAAEO,EAAE,CAACP,MAHb;MAIE;MACAC,KAAK,EAAEF,kBAAkB,CAACQ,EAAE,CAACP,MAAJ;IAL3B,CADM;EADV,CADoB,EAYpBY,OAZoB,aAYpBA,OAZoB,uBAYpBA,OAAO,CAAEoB,MAZW,CAH5B;EAkBA,OAAO;IACLD,IADK;IAELE,iBAAiB,EAAE,MAFd;IAGLnB;EAHK,CAAP;AAKD"}
1
+ {"version":3,"names":["getPathFromState","NavigationContainerRefContext","NavigationHelpersContext","React","Platform","LinkingContext","useLinkTo","getStateFromParams","params","state","screen","routes","name","undefined","useLinkProps","to","action","root","useContext","navigation","options","linkTo","onPress","e","shouldHandle","OS","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","button","includes","currentTarget","target","preventDefault","dispatch","Error","getPathFromStateHelper","href","config","accessibilityRole"],"sourceRoot":"../../src","sources":["useLinkProps.tsx"],"mappings":"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"}
@@ -8,25 +8,20 @@ export default function useLinkTo() {
8
8
  if (navigation === undefined) {
9
9
  throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");
10
10
  }
11
-
12
11
  if (typeof to !== 'string') {
13
12
  // @ts-expect-error: This is fine
14
13
  navigation.navigate(to.screen, to.params);
15
14
  return;
16
15
  }
17
-
18
16
  if (!to.startsWith('/')) {
19
17
  throw new Error(`The path must start with '/' (${to}).`);
20
18
  }
21
-
22
19
  const {
23
20
  options
24
21
  } = linking;
25
22
  const state = options !== null && options !== void 0 && options.getStateFromPath ? options.getStateFromPath(to, options.config) : getStateFromPath(to, options === null || options === void 0 ? void 0 : options.config);
26
-
27
23
  if (state) {
28
24
  const action = getActionFromState(state, options === null || options === void 0 ? void 0 : options.config);
29
-
30
25
  if (action !== undefined) {
31
26
  navigation.dispatch(action);
32
27
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["getActionFromState","getStateFromPath","NavigationContainerRefContext","React","LinkingContext","useLinkTo","navigation","useContext","linking","linkTo","useCallback","to","undefined","Error","navigate","screen","params","startsWith","options","state","config","action","dispatch","reset"],"sources":["useLinkTo.tsx"],"sourcesContent":["import {\n getActionFromState,\n getStateFromPath,\n NavigationContainerRefContext,\n} from '@react-navigation/core';\nimport * as React from 'react';\n\nimport LinkingContext from './LinkingContext';\n\nexport type To<\n ParamList extends ReactNavigation.RootParamList = ReactNavigation.RootParamList,\n RouteName extends keyof ParamList = keyof ParamList\n> =\n | string\n | (undefined extends ParamList[RouteName]\n ? {\n screen: Extract<RouteName, string>;\n params?: ParamList[RouteName];\n }\n : {\n screen: Extract<RouteName, string>;\n params: ParamList[RouteName];\n });\n\nexport default function useLinkTo<\n ParamList extends ReactNavigation.RootParamList\n>() {\n const navigation = React.useContext(NavigationContainerRefContext);\n const linking = React.useContext(LinkingContext);\n\n const linkTo = React.useCallback(\n (to: To<ParamList>) => {\n if (navigation === undefined) {\n throw new Error(\n \"Couldn't find a navigation object. Is your component inside NavigationContainer?\"\n );\n }\n\n if (typeof to !== 'string') {\n // @ts-expect-error: This is fine\n navigation.navigate(to.screen, to.params);\n return;\n }\n\n if (!to.startsWith('/')) {\n throw new Error(`The path must start with '/' (${to}).`);\n }\n\n const { options } = linking;\n\n const state = options?.getStateFromPath\n ? options.getStateFromPath(to, options.config)\n : getStateFromPath(to, options?.config);\n\n if (state) {\n const action = getActionFromState(state, options?.config);\n\n if (action !== undefined) {\n navigation.dispatch(action);\n } else {\n navigation.reset(state);\n }\n } else {\n throw new Error('Failed to parse the path to a navigation state.');\n }\n },\n [linking, navigation]\n );\n\n return linkTo;\n}\n"],"mappings":"AAAA,SACEA,kBADF,EAEEC,gBAFF,EAGEC,6BAHF,QAIO,wBAJP;AAKA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,cAAP,MAA2B,kBAA3B;AAiBA,eAAe,SAASC,SAAT,GAEX;EACF,MAAMC,UAAU,GAAGH,KAAK,CAACI,UAAN,CAAiBL,6BAAjB,CAAnB;EACA,MAAMM,OAAO,GAAGL,KAAK,CAACI,UAAN,CAAiBH,cAAjB,CAAhB;EAEA,MAAMK,MAAM,GAAGN,KAAK,CAACO,WAAN,CACZC,EAAD,IAAuB;IACrB,IAAIL,UAAU,KAAKM,SAAnB,EAA8B;MAC5B,MAAM,IAAIC,KAAJ,CACJ,kFADI,CAAN;IAGD;;IAED,IAAI,OAAOF,EAAP,KAAc,QAAlB,EAA4B;MAC1B;MACAL,UAAU,CAACQ,QAAX,CAAoBH,EAAE,CAACI,MAAvB,EAA+BJ,EAAE,CAACK,MAAlC;MACA;IACD;;IAED,IAAI,CAACL,EAAE,CAACM,UAAH,CAAc,GAAd,CAAL,EAAyB;MACvB,MAAM,IAAIJ,KAAJ,CAAW,iCAAgCF,EAAG,IAA9C,CAAN;IACD;;IAED,MAAM;MAAEO;IAAF,IAAcV,OAApB;IAEA,MAAMW,KAAK,GAAGD,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEjB,gBAAT,GACViB,OAAO,CAACjB,gBAAR,CAAyBU,EAAzB,EAA6BO,OAAO,CAACE,MAArC,CADU,GAEVnB,gBAAgB,CAACU,EAAD,EAAKO,OAAL,aAAKA,OAAL,uBAAKA,OAAO,CAAEE,MAAd,CAFpB;;IAIA,IAAID,KAAJ,EAAW;MACT,MAAME,MAAM,GAAGrB,kBAAkB,CAACmB,KAAD,EAAQD,OAAR,aAAQA,OAAR,uBAAQA,OAAO,CAAEE,MAAjB,CAAjC;;MAEA,IAAIC,MAAM,KAAKT,SAAf,EAA0B;QACxBN,UAAU,CAACgB,QAAX,CAAoBD,MAApB;MACD,CAFD,MAEO;QACLf,UAAU,CAACiB,KAAX,CAAiBJ,KAAjB;MACD;IACF,CARD,MAQO;MACL,MAAM,IAAIN,KAAJ,CAAU,iDAAV,CAAN;IACD;EACF,CAnCY,EAoCb,CAACL,OAAD,EAAUF,UAAV,CApCa,CAAf;EAuCA,OAAOG,MAAP;AACD"}
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"}
@@ -3,7 +3,6 @@ import isEqual from 'fast-deep-equal';
3
3
  import * as React from 'react';
4
4
  import createMemoryHistory from './createMemoryHistory';
5
5
  import ServerContext from './ServerContext';
6
-
7
6
  /**
8
7
  * Find the matching navigation state that changed between 2 navigation states
9
8
  * e.g.: a -> b -> c -> d and a -> b -> c -> e -> f, if history in b changed, b is the matching state
@@ -11,36 +10,34 @@ import ServerContext from './ServerContext';
11
10
  const findMatchingState = (a, b) => {
12
11
  if (a === undefined || b === undefined || a.key !== b.key) {
13
12
  return [undefined, undefined];
14
- } // Tab and drawer will have `history` property, but stack will have history in `routes`
15
-
13
+ }
16
14
 
15
+ // Tab and drawer will have `history` property, but stack will have history in `routes`
17
16
  const aHistoryLength = a.history ? a.history.length : a.routes.length;
18
17
  const bHistoryLength = b.history ? b.history.length : b.routes.length;
19
18
  const aRoute = a.routes[a.index];
20
19
  const bRoute = b.routes[b.index];
21
20
  const aChildState = aRoute.state;
22
- const bChildState = bRoute.state; // Stop here if this is the state object that changed:
21
+ const bChildState = bRoute.state;
22
+
23
+ // Stop here if this is the state object that changed:
23
24
  // - history length is different
24
25
  // - focused routes are different
25
26
  // - one of them doesn't have child state
26
27
  // - child state keys are different
27
-
28
28
  if (aHistoryLength !== bHistoryLength || aRoute.key !== bRoute.key || aChildState === undefined || bChildState === undefined || aChildState.key !== bChildState.key) {
29
29
  return [a, b];
30
30
  }
31
-
32
31
  return findMatchingState(aChildState, bChildState);
33
32
  };
33
+
34
34
  /**
35
35
  * Run async function in series as it's called.
36
36
  */
37
-
38
-
39
37
  const series = cb => {
40
38
  // Whether we're currently handling a callback
41
39
  let handling = false;
42
40
  let queue = [];
43
-
44
41
  const callback = async () => {
45
42
  try {
46
43
  if (handling) {
@@ -49,12 +46,10 @@ const series = cb => {
49
46
  queue.unshift(callback);
50
47
  return;
51
48
  }
52
-
53
49
  handling = true;
54
50
  await cb();
55
51
  } finally {
56
52
  handling = false;
57
-
58
53
  if (queue.length) {
59
54
  // If we have queued items, handle the last one
60
55
  const last = queue.pop();
@@ -62,10 +57,8 @@ const series = cb => {
62
57
  }
63
58
  }
64
59
  };
65
-
66
60
  return callback;
67
61
  };
68
-
69
62
  let linkingHandlers = [];
70
63
  export default function useLinking(ref, _ref) {
71
64
  let {
@@ -80,33 +73,28 @@ export default function useLinking(ref, _ref) {
80
73
  if (process.env.NODE_ENV === 'production') {
81
74
  return undefined;
82
75
  }
83
-
84
76
  if (independent) {
85
77
  return undefined;
86
78
  }
87
-
88
79
  if (enabled !== false && linkingHandlers.length) {
89
80
  console.error(['Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:', "- You don't have multiple NavigationContainers in the app each with 'linking' enabled", '- Only a single instance of the root component is rendered'].join('\n').trim());
90
81
  }
91
-
92
82
  const handler = Symbol();
93
-
94
83
  if (enabled !== false) {
95
84
  linkingHandlers.push(handler);
96
85
  }
97
-
98
86
  return () => {
99
87
  const index = linkingHandlers.indexOf(handler);
100
-
101
88
  if (index > -1) {
102
89
  linkingHandlers.splice(index, 1);
103
90
  }
104
91
  };
105
92
  }, [enabled, independent]);
106
- const [history] = React.useState(createMemoryHistory); // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners
93
+ const [history] = React.useState(createMemoryHistory);
94
+
95
+ // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners
107
96
  // This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`
108
97
  // Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect
109
-
110
98
  const enabledRef = React.useRef(enabled);
111
99
  const configRef = React.useRef(config);
112
100
  const getStateFromPathRef = React.useRef(getStateFromPath);
@@ -122,29 +110,23 @@ export default function useLinking(ref, _ref) {
122
110
  const server = React.useContext(ServerContext);
123
111
  const getInitialState = React.useCallback(() => {
124
112
  let value;
125
-
126
113
  if (enabledRef.current) {
127
- var _server$location;
128
-
129
- const location = (_server$location = server === null || server === void 0 ? void 0 : server.location) !== null && _server$location !== void 0 ? _server$location : typeof window !== 'undefined' ? window.location : undefined;
114
+ const location = (server === null || server === void 0 ? void 0 : server.location) ?? (typeof window !== 'undefined' ? window.location : undefined);
130
115
  const path = location ? location.pathname + location.search : undefined;
131
-
132
116
  if (path) {
133
117
  value = getStateFromPathRef.current(path, configRef.current);
134
118
  }
135
119
  }
136
-
137
120
  const thenable = {
138
121
  then(onfulfilled) {
139
122
  return Promise.resolve(onfulfilled ? onfulfilled(value) : value);
140
123
  },
141
-
142
124
  catch() {
143
125
  return thenable;
144
126
  }
145
-
146
127
  };
147
- return thenable; // eslint-disable-next-line react-hooks/exhaustive-deps
128
+ return thenable;
129
+ // eslint-disable-next-line react-hooks/exhaustive-deps
148
130
  }, []);
149
131
  const previousIndexRef = React.useRef(undefined);
150
132
  const previousStateRef = React.useRef(undefined);
@@ -152,52 +134,46 @@ export default function useLinking(ref, _ref) {
152
134
  React.useEffect(() => {
153
135
  previousIndexRef.current = history.index;
154
136
  return history.listen(() => {
155
- var _previousIndexRef$cur;
156
-
157
137
  const navigation = ref.current;
158
-
159
138
  if (!navigation || !enabled) {
160
139
  return;
161
140
  }
162
-
163
141
  const path = location.pathname + location.search;
164
142
  const index = history.index;
165
- const previousIndex = (_previousIndexRef$cur = previousIndexRef.current) !== null && _previousIndexRef$cur !== void 0 ? _previousIndexRef$cur : 0;
143
+ const previousIndex = previousIndexRef.current ?? 0;
166
144
  previousIndexRef.current = index;
167
- pendingPopStatePathRef.current = path; // When browser back/forward is clicked, we first need to check if state object for this index exists
145
+ pendingPopStatePathRef.current = path;
146
+
147
+ // When browser back/forward is clicked, we first need to check if state object for this index exists
168
148
  // If it does we'll reset to that state object
169
149
  // Otherwise, we'll handle it like a regular deep link
170
-
171
150
  const record = history.get(index);
172
-
173
151
  if ((record === null || record === void 0 ? void 0 : record.path) === path && record !== null && record !== void 0 && record.state) {
174
152
  navigation.resetRoot(record.state);
175
153
  return;
176
154
  }
155
+ const state = getStateFromPathRef.current(path, configRef.current);
177
156
 
178
- const state = getStateFromPathRef.current(path, configRef.current); // We should only dispatch an action when going forward
157
+ // We should only dispatch an action when going forward
179
158
  // Otherwise the action will likely add items to history, which would mess things up
180
-
181
159
  if (state) {
182
160
  // Make sure that the routes in the state exist in the root navigator
183
161
  // Otherwise there's an error in the linking configuration
184
162
  const rootState = navigation.getRootState();
185
-
186
163
  if (state.routes.some(r => !(rootState !== null && rootState !== void 0 && rootState.routeNames.includes(r.name)))) {
187
164
  console.warn("The navigation state parsed from the URL contains routes not present in the root navigator. This usually means that the linking configuration doesn't match the navigation structure. See https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.");
188
165
  return;
189
166
  }
190
-
191
167
  if (index > previousIndex) {
192
168
  const action = getActionFromStateRef.current(state, configRef.current);
193
-
194
169
  if (action !== undefined) {
195
170
  try {
196
171
  navigation.dispatch(action);
197
172
  } catch (e) {
198
173
  // Ignore any errors from deep linking.
199
174
  // This could happen in case of malformed links, navigation object not being initialized etc.
200
- console.warn(`An error occurred when trying to handle the link '${path}': ${typeof e === 'object' && e != null && 'message' in e ? // @ts-expect-error: we're already checking for this
175
+ console.warn(`An error occurred when trying to handle the link '${path}': ${typeof e === 'object' && e != null && 'message' in e ?
176
+ // @ts-expect-error: we're already checking for this
201
177
  e.message : e}`);
202
178
  }
203
179
  } else {
@@ -214,79 +190,67 @@ export default function useLinking(ref, _ref) {
214
190
  }, [enabled, history, ref]);
215
191
  React.useEffect(() => {
216
192
  var _ref$current;
217
-
218
193
  if (!enabled) {
219
194
  return;
220
195
  }
221
-
222
196
  const getPathForRoute = (route, state) => {
223
197
  // If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match
224
198
  // This makes sure that we preserve the original URL for wildcard routes
225
199
  if (route !== null && route !== void 0 && route.path) {
226
200
  const stateForPath = getStateFromPathRef.current(route.path, configRef.current);
227
-
228
201
  if (stateForPath) {
229
202
  const focusedRoute = findFocusedRoute(stateForPath);
230
-
231
203
  if (focusedRoute && focusedRoute.name === route.name && isEqual(focusedRoute.params, route.params)) {
232
204
  return route.path;
233
205
  }
234
206
  }
235
207
  }
236
-
237
208
  return getPathFromStateRef.current(state, configRef.current);
238
209
  };
239
-
240
210
  if (ref.current) {
241
211
  // We need to record the current metadata on the first render if they aren't set
242
212
  // This will allow the initial state to be in the history entry
243
213
  const state = ref.current.getRootState();
244
-
245
214
  if (state) {
246
215
  const route = findFocusedRoute(state);
247
216
  const path = getPathForRoute(route, state);
248
-
249
217
  if (previousStateRef.current === undefined) {
250
218
  previousStateRef.current = state;
251
219
  }
252
-
253
220
  history.replace({
254
221
  path,
255
222
  state
256
223
  });
257
224
  }
258
225
  }
259
-
260
226
  const onStateChange = async () => {
261
227
  const navigation = ref.current;
262
-
263
228
  if (!navigation || !enabled) {
264
229
  return;
265
230
  }
266
-
267
231
  const previousState = previousStateRef.current;
268
- const state = navigation.getRootState(); // root state may not available, for example when root navigators switch inside the container
232
+ const state = navigation.getRootState();
269
233
 
234
+ // root state may not available, for example when root navigators switch inside the container
270
235
  if (!state) {
271
236
  return;
272
237
  }
273
-
274
238
  const pendingPath = pendingPopStatePathRef.current;
275
239
  const route = findFocusedRoute(state);
276
240
  const path = getPathForRoute(route, state);
277
241
  previousStateRef.current = state;
278
- pendingPopStatePathRef.current = undefined; // To detect the kind of state change, we need to:
242
+ pendingPopStatePathRef.current = undefined;
243
+
244
+ // To detect the kind of state change, we need to:
279
245
  // - Find the common focused navigation state in previous and current state
280
246
  // - If only the route keys changed, compare history/routes.length to check if we go back/forward/replace
281
247
  // - If no common focused navigation state found, it's a replace
282
-
283
248
  const [previousFocusedState, focusedState] = findMatchingState(previousState, state);
284
-
285
- if (previousFocusedState && focusedState && // We should only handle push/pop if path changed from what was in last `popstate`
249
+ if (previousFocusedState && focusedState &&
250
+ // We should only handle push/pop if path changed from what was in last `popstate`
286
251
  // Otherwise it's likely a change triggered by `popstate`
287
252
  path !== pendingPath) {
288
253
  const historyDelta = (focusedState.history ? focusedState.history.length : focusedState.routes.length) - (previousFocusedState.history ? previousFocusedState.history.length : previousFocusedState.routes.length);
289
-
290
254
  if (historyDelta > 0) {
291
255
  // If history length is increased, we should pushState
292
256
  // Note that path might not actually change here, for example, drawer open should pushState
@@ -296,11 +260,11 @@ export default function useLinking(ref, _ref) {
296
260
  });
297
261
  } else if (historyDelta < 0) {
298
262
  // If history length is decreased, i.e. entries were removed, we want to go back
263
+
299
264
  const nextIndex = history.backIndex({
300
265
  path
301
266
  });
302
267
  const currentIndex = history.index;
303
-
304
268
  try {
305
269
  if (nextIndex !== -1 && nextIndex < currentIndex) {
306
270
  // An existing entry for this path exists and it's less than current index, go back to that
@@ -310,14 +274,15 @@ export default function useLinking(ref, _ref) {
310
274
  // This won't be correct if multiple routes were pushed in one go before
311
275
  // Usually this shouldn't happen and this is a fallback for that
312
276
  await history.go(historyDelta);
313
- } // Store the updated state as well as fix the path if incorrect
314
-
277
+ }
315
278
 
279
+ // Store the updated state as well as fix the path if incorrect
316
280
  history.replace({
317
281
  path,
318
282
  state
319
283
  });
320
- } catch (e) {// The navigation was interrupted
284
+ } catch (e) {
285
+ // The navigation was interrupted
321
286
  }
322
287
  } else {
323
288
  // If history length is unchanged, we want to replaceState
@@ -334,11 +299,11 @@ export default function useLinking(ref, _ref) {
334
299
  state
335
300
  });
336
301
  }
337
- }; // We debounce onStateChange coz we don't want multiple state changes to be handled at one time
302
+ };
303
+
304
+ // We debounce onStateChange coz we don't want multiple state changes to be handled at one time
338
305
  // This could happen since `history.go(n)` is asynchronous
339
306
  // If `pushState` or `replaceState` were called before `history.go(n)` completes, it'll mess stuff up
340
-
341
-
342
307
  return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.addListener('state', series(onStateChange));
343
308
  });
344
309
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","isEqual","React","createMemoryHistory","ServerContext","findMatchingState","a","b","undefined","key","aHistoryLength","history","length","routes","bHistoryLength","aRoute","index","bRoute","aChildState","state","bChildState","series","cb","handling","queue","callback","unshift","last","pop","linkingHandlers","useLinking","ref","independent","enabled","config","useEffect","process","env","NODE_ENV","console","error","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","current","server","useContext","getInitialState","useCallback","value","location","window","path","pathname","search","thenable","then","onfulfilled","Promise","resolve","catch","previousIndexRef","previousStateRef","pendingPopStatePathRef","listen","navigation","previousIndex","record","get","resetRoot","rootState","getRootState","some","r","routeNames","includes","name","warn","action","dispatch","e","message","getPathForRoute","route","stateForPath","focusedRoute","params","replace","onStateChange","previousState","pendingPath","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex","go","addListener"],"sources":["useLinking.tsx"],"sourcesContent":["import {\n findFocusedRoute,\n getActionFromState as getActionFromStateDefault,\n getPathFromState as getPathFromStateDefault,\n getStateFromPath as getStateFromPathDefault,\n NavigationContainerRef,\n NavigationState,\n ParamListBase,\n} from '@react-navigation/core';\nimport isEqual from 'fast-deep-equal';\nimport * as React from 'react';\n\nimport createMemoryHistory from './createMemoryHistory';\nimport ServerContext from './ServerContext';\nimport type { LinkingOptions } from './types';\n\ntype ResultState = ReturnType<typeof getStateFromPathDefault>;\n\n/**\n * Find the matching navigation state that changed between 2 navigation states\n * e.g.: a -> b -> c -> d and a -> b -> c -> e -> f, if history in b changed, b is the matching state\n */\nconst findMatchingState = <T extends NavigationState>(\n a: T | undefined,\n b: T | undefined\n): [T | undefined, T | undefined] => {\n if (a === undefined || b === undefined || a.key !== b.key) {\n return [undefined, undefined];\n }\n\n // Tab and drawer will have `history` property, but stack will have history in `routes`\n const aHistoryLength = a.history ? a.history.length : a.routes.length;\n const bHistoryLength = b.history ? b.history.length : b.routes.length;\n\n const aRoute = a.routes[a.index];\n const bRoute = b.routes[b.index];\n\n const aChildState = aRoute.state as T | undefined;\n const bChildState = bRoute.state as T | undefined;\n\n // Stop here if this is the state object that changed:\n // - history length is different\n // - focused routes are different\n // - one of them doesn't have child state\n // - child state keys are different\n if (\n aHistoryLength !== bHistoryLength ||\n aRoute.key !== bRoute.key ||\n aChildState === undefined ||\n bChildState === undefined ||\n aChildState.key !== bChildState.key\n ) {\n return [a, b];\n }\n\n return findMatchingState(aChildState, bChildState);\n};\n\n/**\n * Run async function in series as it's called.\n */\nconst series = (cb: () => Promise<void>) => {\n // Whether we're currently handling a callback\n let handling = false;\n let queue: (() => Promise<void>)[] = [];\n\n const callback = async () => {\n try {\n if (handling) {\n // If we're currently handling a previous event, wait before handling this one\n // Add the callback to the beginning of the queue\n queue.unshift(callback);\n return;\n }\n\n handling = true;\n\n await cb();\n } finally {\n handling = false;\n\n if (queue.length) {\n // If we have queued items, handle the last one\n const last = queue.pop();\n\n last?.();\n }\n }\n };\n\n return callback;\n};\n\nlet linkingHandlers: Symbol[] = [];\n\ntype Options = LinkingOptions<ParamListBase> & {\n independent?: boolean;\n};\n\nexport default function useLinking(\n ref: React.RefObject<NavigationContainerRef<ParamListBase>>,\n {\n independent,\n enabled = true,\n config,\n getStateFromPath = getStateFromPathDefault,\n getPathFromState = getPathFromStateDefault,\n getActionFromState = getActionFromStateDefault,\n }: Options\n) {\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') {\n return undefined;\n }\n\n if (independent) {\n return undefined;\n }\n\n if (enabled !== false && linkingHandlers.length) {\n console.error(\n [\n 'Looks like you have configured linking in multiple places. This is likely an error since deep links should only be handled in one place to avoid conflicts. Make sure that:',\n \"- You don't have multiple NavigationContainers in the app each with 'linking' enabled\",\n '- Only a single instance of the root component is rendered',\n ]\n .join('\\n')\n .trim()\n );\n }\n\n const handler = Symbol();\n\n if (enabled !== false) {\n linkingHandlers.push(handler);\n }\n\n return () => {\n const index = linkingHandlers.indexOf(handler);\n\n if (index > -1) {\n linkingHandlers.splice(index, 1);\n }\n };\n }, [enabled, independent]);\n\n const [history] = React.useState(createMemoryHistory);\n\n // We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners\n // This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`\n // Not re-creating `getInitialState` is important coz it makes it easier for the user to use in an effect\n const enabledRef = React.useRef(enabled);\n const configRef = React.useRef(config);\n const getStateFromPathRef = React.useRef(getStateFromPath);\n const getPathFromStateRef = React.useRef(getPathFromState);\n const getActionFromStateRef = React.useRef(getActionFromState);\n\n React.useEffect(() => {\n enabledRef.current = enabled;\n configRef.current = config;\n getStateFromPathRef.current = getStateFromPath;\n getPathFromStateRef.current = getPathFromState;\n getActionFromStateRef.current = getActionFromState;\n });\n\n const server = React.useContext(ServerContext);\n\n const getInitialState = React.useCallback(() => {\n let value: ResultState | undefined;\n\n if (enabledRef.current) {\n const location =\n server?.location ??\n (typeof window !== 'undefined' ? window.location : undefined);\n\n const path = location ? location.pathname + location.search : undefined;\n\n if (path) {\n value = getStateFromPathRef.current(path, configRef.current);\n }\n }\n\n const thenable = {\n then(onfulfilled?: (state: ResultState | undefined) => void) {\n return Promise.resolve(onfulfilled ? onfulfilled(value) : value);\n },\n catch() {\n return thenable;\n },\n };\n\n return thenable as PromiseLike<ResultState | undefined>;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const previousIndexRef = React.useRef<number | undefined>(undefined);\n const previousStateRef = React.useRef<NavigationState | undefined>(undefined);\n const pendingPopStatePathRef = React.useRef<string | undefined>(undefined);\n\n React.useEffect(() => {\n previousIndexRef.current = history.index;\n\n return history.listen(() => {\n const navigation = ref.current;\n\n if (!navigation || !enabled) {\n return;\n }\n\n const path = location.pathname + location.search;\n const index = history.index;\n\n const previousIndex = previousIndexRef.current ?? 0;\n\n previousIndexRef.current = index;\n pendingPopStatePathRef.current = path;\n\n // When browser back/forward is clicked, we first need to check if state object for this index exists\n // If it does we'll reset to that state object\n // Otherwise, we'll handle it like a regular deep link\n const record = history.get(index);\n\n if (record?.path === path && record?.state) {\n navigation.resetRoot(record.state);\n return;\n }\n\n const state = getStateFromPathRef.current(path, configRef.current);\n\n // We should only dispatch an action when going forward\n // Otherwise the action will likely add items to history, which would mess things up\n if (state) {\n // Make sure that the routes in the state exist in the root navigator\n // Otherwise there's an error in the linking configuration\n const rootState = navigation.getRootState();\n\n if (state.routes.some((r) => !rootState?.routeNames.includes(r.name))) {\n console.warn(\n \"The navigation state parsed from the URL contains routes not present in the root navigator. This usually means that the linking configuration doesn't match the navigation structure. See https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.\"\n );\n return;\n }\n\n if (index > previousIndex) {\n const action = getActionFromStateRef.current(\n state,\n configRef.current\n );\n\n if (action !== undefined) {\n try {\n navigation.dispatch(action);\n } catch (e) {\n // Ignore any errors from deep linking.\n // This could happen in case of malformed links, navigation object not being initialized etc.\n console.warn(\n `An error occurred when trying to handle the link '${path}': ${\n typeof e === 'object' && e != null && 'message' in e\n ? // @ts-expect-error: we're already checking for this\n e.message\n : e\n }`\n );\n }\n } else {\n navigation.resetRoot(state);\n }\n } else {\n navigation.resetRoot(state);\n }\n } else {\n // if current path didn't return any state, we should revert to initial state\n navigation.resetRoot(state);\n }\n });\n }, [enabled, history, ref]);\n\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const getPathForRoute = (\n route: ReturnType<typeof findFocusedRoute>,\n state: NavigationState\n ): string => {\n // If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match\n // This makes sure that we preserve the original URL for wildcard routes\n if (route?.path) {\n const stateForPath = getStateFromPathRef.current(\n route.path,\n configRef.current\n );\n\n if (stateForPath) {\n const focusedRoute = findFocusedRoute(stateForPath);\n\n if (\n focusedRoute &&\n focusedRoute.name === route.name &&\n isEqual(focusedRoute.params, route.params)\n ) {\n return route.path;\n }\n }\n }\n\n return getPathFromStateRef.current(state, configRef.current);\n };\n\n if (ref.current) {\n // We need to record the current metadata on the first render if they aren't set\n // This will allow the initial state to be in the history entry\n const state = ref.current.getRootState();\n\n if (state) {\n const route = findFocusedRoute(state);\n const path = getPathForRoute(route, state);\n\n if (previousStateRef.current === undefined) {\n previousStateRef.current = state;\n }\n\n history.replace({ path, state });\n }\n }\n\n const onStateChange = async () => {\n const navigation = ref.current;\n\n if (!navigation || !enabled) {\n return;\n }\n\n const previousState = previousStateRef.current;\n const state = navigation.getRootState();\n\n // root state may not available, for example when root navigators switch inside the container\n if (!state) {\n return;\n }\n\n const pendingPath = pendingPopStatePathRef.current;\n const route = findFocusedRoute(state);\n const path = getPathForRoute(route, state);\n\n previousStateRef.current = state;\n pendingPopStatePathRef.current = undefined;\n\n // To detect the kind of state change, we need to:\n // - Find the common focused navigation state in previous and current state\n // - If only the route keys changed, compare history/routes.length to check if we go back/forward/replace\n // - If no common focused navigation state found, it's a replace\n const [previousFocusedState, focusedState] = findMatchingState(\n previousState,\n state\n );\n\n if (\n previousFocusedState &&\n focusedState &&\n // We should only handle push/pop if path changed from what was in last `popstate`\n // Otherwise it's likely a change triggered by `popstate`\n path !== pendingPath\n ) {\n const historyDelta =\n (focusedState.history\n ? focusedState.history.length\n : focusedState.routes.length) -\n (previousFocusedState.history\n ? previousFocusedState.history.length\n : previousFocusedState.routes.length);\n\n if (historyDelta > 0) {\n // If history length is increased, we should pushState\n // Note that path might not actually change here, for example, drawer open should pushState\n history.push({ path, state });\n } else if (historyDelta < 0) {\n // If history length is decreased, i.e. entries were removed, we want to go back\n\n const nextIndex = history.backIndex({ path });\n const currentIndex = history.index;\n\n try {\n if (nextIndex !== -1 && nextIndex < currentIndex) {\n // An existing entry for this path exists and it's less than current index, go back to that\n await history.go(nextIndex - currentIndex);\n } else {\n // We couldn't find an existing entry to go back to, so we'll go back by the delta\n // This won't be correct if multiple routes were pushed in one go before\n // Usually this shouldn't happen and this is a fallback for that\n await history.go(historyDelta);\n }\n\n // Store the updated state as well as fix the path if incorrect\n history.replace({ path, state });\n } catch (e) {\n // The navigation was interrupted\n }\n } else {\n // If history length is unchanged, we want to replaceState\n history.replace({ path, state });\n }\n } else {\n // If no common navigation state was found, assume it's a replace\n // This would happen if the user did a reset/conditionally changed navigators\n history.replace({ path, state });\n }\n };\n\n // We debounce onStateChange coz we don't want multiple state changes to be handled at one time\n // This could happen since `history.go(n)` is asynchronous\n // If `pushState` or `replaceState` were called before `history.go(n)` completes, it'll mess stuff up\n return ref.current?.addListener('state', series(onStateChange));\n });\n\n return {\n getInitialState,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["findFocusedRoute","getActionFromState","getActionFromStateDefault","getPathFromState","getPathFromStateDefault","getStateFromPath","getStateFromPathDefault","isEqual","React","createMemoryHistory","ServerContext","findMatchingState","a","b","undefined","key","aHistoryLength","history","length","routes","bHistoryLength","aRoute","index","bRoute","aChildState","state","bChildState","series","cb","handling","queue","callback","unshift","last","pop","linkingHandlers","useLinking","ref","independent","enabled","config","useEffect","process","env","NODE_ENV","console","error","join","trim","handler","Symbol","push","indexOf","splice","useState","enabledRef","useRef","configRef","getStateFromPathRef","getPathFromStateRef","getActionFromStateRef","current","server","useContext","getInitialState","useCallback","value","location","window","path","pathname","search","thenable","then","onfulfilled","Promise","resolve","catch","previousIndexRef","previousStateRef","pendingPopStatePathRef","listen","navigation","previousIndex","record","get","resetRoot","rootState","getRootState","some","r","routeNames","includes","name","warn","action","dispatch","e","message","getPathForRoute","route","stateForPath","focusedRoute","params","replace","onStateChange","previousState","pendingPath","previousFocusedState","focusedState","historyDelta","nextIndex","backIndex","currentIndex","go","addListener"],"sourceRoot":"../../src","sources":["useLinking.tsx"],"mappings":"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"}