@react-navigation/native 7.0.0-alpha.16 → 7.0.0-alpha.18

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.
@@ -19,19 +19,31 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
19
19
  */
20
20
  function createStaticNavigation(tree) {
21
21
  const Component = (0, _core.createComponentForStaticNavigation)(tree, 'RootNavigator');
22
- const linkingConfig = {
23
- screens: tree.config.screens ? (0, _core.createPathConfigForStaticNavigation)(tree) : {}
24
- };
25
22
  function Navigation(_ref, ref) {
26
23
  let {
27
24
  linking,
28
25
  ...rest
29
26
  } = _ref;
27
+ const screens = React.useMemo(() => {
28
+ if (tree.config.screens) {
29
+ return (0, _core.createPathConfigForStaticNavigation)(tree, {
30
+ initialRouteName: linking?.config?.initialRouteName
31
+ }, linking?.enabled === 'auto');
32
+ }
33
+ return undefined;
34
+ }, [linking?.config, linking?.enabled]);
35
+ if (linking?.enabled === true && screens == null) {
36
+ throw new Error('Linking is enabled but no linking configuration was found for the screens.\n\n' + 'To solve this:\n' + "- Specify a 'linking' property for the screens you want to link to.\n" + "- Or set 'linking.enabled' to 'auto' to generate paths automatically.\n\n" + 'See usage guide: https://reactnavigation.org/docs/7.x/static-configuration#linking');
37
+ }
30
38
  return /*#__PURE__*/React.createElement(_NavigationContainer.NavigationContainer, _extends({}, rest, {
31
39
  ref: ref,
32
40
  linking: linking ? {
33
41
  ...linking,
34
- config: linkingConfig
42
+ enabled: typeof linking.enabled === 'boolean' ? linking.enabled : screens != null,
43
+ config: screens ? {
44
+ ...linking.config,
45
+ screens
46
+ } : undefined
35
47
  } : undefined
36
48
  }), /*#__PURE__*/React.createElement(Component, null));
37
49
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","React","_interopRequireWildcard","_NavigationContainer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","createStaticNavigation","tree","Component","createComponentForStaticNavigation","linkingConfig","screens","config","createPathConfigForStaticNavigation","Navigation","_ref","ref","linking","rest","createElement","NavigationContainer","undefined","forwardRef"],"sourceRoot":"../../src","sources":["createStaticNavigation.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["_core","require","React","_interopRequireWildcard","_NavigationContainer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","createStaticNavigation","tree","Component","createComponentForStaticNavigation","Navigation","_ref","ref","linking","rest","screens","useMemo","config","createPathConfigForStaticNavigation","initialRouteName","enabled","undefined","Error","createElement","NavigationContainer","forwardRef"],"sourceRoot":"../../src","sources":["createStaticNavigation.tsx"],"mappings":"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"}
@@ -11,19 +11,31 @@ import { NavigationContainer } from './NavigationContainer';
11
11
  */
12
12
  export function createStaticNavigation(tree) {
13
13
  const Component = createComponentForStaticNavigation(tree, 'RootNavigator');
14
- const linkingConfig = {
15
- screens: tree.config.screens ? createPathConfigForStaticNavigation(tree) : {}
16
- };
17
14
  function Navigation(_ref, ref) {
18
15
  let {
19
16
  linking,
20
17
  ...rest
21
18
  } = _ref;
19
+ const screens = React.useMemo(() => {
20
+ if (tree.config.screens) {
21
+ return createPathConfigForStaticNavigation(tree, {
22
+ initialRouteName: linking?.config?.initialRouteName
23
+ }, linking?.enabled === 'auto');
24
+ }
25
+ return undefined;
26
+ }, [linking?.config, linking?.enabled]);
27
+ if (linking?.enabled === true && screens == null) {
28
+ throw new Error('Linking is enabled but no linking configuration was found for the screens.\n\n' + 'To solve this:\n' + "- Specify a 'linking' property for the screens you want to link to.\n" + "- Or set 'linking.enabled' to 'auto' to generate paths automatically.\n\n" + 'See usage guide: https://reactnavigation.org/docs/7.x/static-configuration#linking');
29
+ }
22
30
  return /*#__PURE__*/React.createElement(NavigationContainer, _extends({}, rest, {
23
31
  ref: ref,
24
32
  linking: linking ? {
25
33
  ...linking,
26
- config: linkingConfig
34
+ enabled: typeof linking.enabled === 'boolean' ? linking.enabled : screens != null,
35
+ config: screens ? {
36
+ ...linking.config,
37
+ screens
38
+ } : undefined
27
39
  } : undefined
28
40
  }), /*#__PURE__*/React.createElement(Component, null));
29
41
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createComponentForStaticNavigation","createPathConfigForStaticNavigation","React","NavigationContainer","createStaticNavigation","tree","Component","linkingConfig","screens","config","Navigation","_ref","ref","linking","rest","createElement","_extends","undefined","forwardRef"],"sourceRoot":"../../src","sources":["createStaticNavigation.tsx"],"mappings":";AAAA,SACEA,kCAAkC,EAClCC,mCAAmC,QAI9B,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,mBAAmB,QAAQ,uBAAuB;AAa3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,IAAqC,EAAE;EAC5E,MAAMC,SAAS,GAAGN,kCAAkC,CAACK,IAAI,EAAE,eAAe,CAAC;EAC3E,MAAME,aAAa,GAAG;IACpBC,OAAO,EAAEH,IAAI,CAACI,MAAM,CAACD,OAAO,GACxBP,mCAAmC,CAACI,IAAI,CAAC,GACzC,CAAC;EACP,CAAC;EAED,SAASK,UAAUA,CAAAC,IAAA,EAEjBC,GAAqD,EACrD;IAAA,IAFA;MAAEC,OAAO;MAAE,GAAGC;IAAY,CAAC,GAAAH,IAAA;IAG3B,oBACET,KAAA,CAAAa,aAAA,CAACZ,mBAAmB,EAAAa,QAAA,KACdF,IAAI;MACRF,GAAG,EAAEA,GAAI;MACTC,OAAO,EAAEA,OAAO,GAAG;QAAE,GAAGA,OAAO;QAAEJ,MAAM,EAAEF;MAAc,CAAC,GAAGU;IAAU,iBAErEf,KAAA,CAAAa,aAAA,CAACT,SAAS,MAAE,CACO,CAAC;EAE1B;EAEA,oBAAOJ,KAAK,CAACgB,UAAU,CAACR,UAAU,CAAC;AACrC"}
1
+ {"version":3,"names":["createComponentForStaticNavigation","createPathConfigForStaticNavigation","React","NavigationContainer","createStaticNavigation","tree","Component","Navigation","_ref","ref","linking","rest","screens","useMemo","config","initialRouteName","enabled","undefined","Error","createElement","_extends","forwardRef"],"sourceRoot":"../../src","sources":["createStaticNavigation.tsx"],"mappings":";AAAA,SACEA,kCAAkC,EAClCC,mCAAmC,QAI9B,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,mBAAmB,QAAQ,uBAAuB;AA8B3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,IAAqC,EAAE;EAC5E,MAAMC,SAAS,GAAGN,kCAAkC,CAACK,IAAI,EAAE,eAAe,CAAC;EAE3E,SAASE,UAAUA,CAAAC,IAAA,EAEjBC,GAAqD,EACrD;IAAA,IAFA;MAAEC,OAAO;MAAE,GAAGC;IAAY,CAAC,GAAAH,IAAA;IAG3B,MAAMI,OAAO,GAAGV,KAAK,CAACW,OAAO,CAAC,MAAM;MAClC,IAAIR,IAAI,CAACS,MAAM,CAACF,OAAO,EAAE;QACvB,OAAOX,mCAAmC,CACxCI,IAAI,EACJ;UAAEU,gBAAgB,EAAEL,OAAO,EAAEI,MAAM,EAAEC;QAAiB,CAAC,EACvDL,OAAO,EAAEM,OAAO,KAAK,MACvB,CAAC;MACH;MAEA,OAAOC,SAAS;IAClB,CAAC,EAAE,CAACP,OAAO,EAAEI,MAAM,EAAEJ,OAAO,EAAEM,OAAO,CAAC,CAAC;IAEvC,IAAIN,OAAO,EAAEM,OAAO,KAAK,IAAI,IAAIJ,OAAO,IAAI,IAAI,EAAE;MAChD,MAAM,IAAIM,KAAK,CACb,gFAAgF,GAC9E,kBAAkB,GAClB,uEAAuE,GACvE,2EAA2E,GAC3E,oFACJ,CAAC;IACH;IAEA,oBACEhB,KAAA,CAAAiB,aAAA,CAAChB,mBAAmB,EAAAiB,QAAA,KACdT,IAAI;MACRF,GAAG,EAAEA,GAAI;MACTC,OAAO,EACLA,OAAO,GACH;QACE,GAAGA,OAAO;QACVM,OAAO,EACL,OAAON,OAAO,CAACM,OAAO,KAAK,SAAS,GAChCN,OAAO,CAACM,OAAO,GACfJ,OAAO,IAAI,IAAI;QACrBE,MAAM,EAAEF,OAAO,GAAG;UAAE,GAAGF,OAAO,CAACI,MAAM;UAAEF;QAAQ,CAAC,GAAGK;MACrD,CAAC,GACDA;IACL,iBAEDf,KAAA,CAAAiB,aAAA,CAACb,SAAS,MAAE,CACO,CAAC;EAE1B;EAEA,oBAAOJ,KAAK,CAACmB,UAAU,CAACd,UAAU,CAAC;AACrC"}
@@ -6,7 +6,21 @@ type Props = Omit<React.ComponentProps<typeof NavigationContainer>, 'linking' |
6
6
  /**
7
7
  * Options for deep linking.
8
8
  */
9
- linking?: Omit<LinkingOptions<ParamListBase>, 'config'>;
9
+ linking?: Omit<LinkingOptions<ParamListBase>, 'config' | 'enabled'> & {
10
+ /**
11
+ * Whether deep link handling should be enabled.
12
+ * Defaults to `true` if any `linking` options are specified, `false` otherwise.
13
+ *
14
+ * When 'auto' is specified, all leaf screens will get a autogenerated path.
15
+ * The generated path will be a kebab-case version of the screen name.
16
+ * This can be overridden for specific screens by specifying `linking` for the screen.
17
+ */
18
+ enabled?: 'auto' | true | false;
19
+ /**
20
+ * Additional configuration
21
+ */
22
+ config?: Omit<NonNullable<LinkingOptions<ParamListBase>['config']>, 'screens'>;
23
+ };
10
24
  };
11
25
  /**
12
26
  * Create a navigation component from a static navigation config.
@@ -1 +1 @@
1
- {"version":3,"file":"createStaticNavigation.d.ts","sourceRoot":"","sources":["../../../src/createStaticNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,KAAK,GAAG,IAAI,CACf,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,EAChD,SAAS,GAAG,UAAU,CACvB,GAAG;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;CACzD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,oHAwB3E"}
1
+ {"version":3,"file":"createStaticNavigation.d.ts","sourceRoot":"","sources":["../../../src/createStaticNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,KAAK,GAAG,IAAI,CACf,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,EAChD,SAAS,GAAG,UAAU,CACvB,GAAG;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG;QACpE;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;QAChC;;WAEG;QACH,MAAM,CAAC,EAAE,IAAI,CACX,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EACpD,SAAS,CACV,CAAC;KACH,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,oHAoD3E"}
@@ -1,31 +1,33 @@
1
1
  import type { getActionFromState as getActionFromStateDefault, getPathFromState as getPathFromStateDefault, getStateFromPath as getStateFromPathDefault, PathConfigMap, Route } from '@react-navigation/core';
2
2
  declare global {
3
3
  namespace ReactNavigation {
4
- interface Theme {
5
- dark: boolean;
6
- colors: {
7
- primary: string;
8
- background: string;
9
- card: string;
10
- text: string;
11
- border: string;
12
- notification: string;
13
- };
14
- fonts: {
15
- regular: FontStyle;
16
- medium: FontStyle;
17
- bold: FontStyle;
18
- heavy: FontStyle;
19
- };
4
+ interface Theme extends NativeTheme {
20
5
  }
21
6
  }
22
7
  }
23
- export type LocaleDirection = 'ltr' | 'rtl';
24
8
  type FontStyle = {
25
9
  fontFamily: string;
26
10
  fontWeight: 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
27
11
  };
28
- export type Theme = ReactNavigation.Theme;
12
+ interface NativeTheme {
13
+ dark: boolean;
14
+ colors: {
15
+ primary: string;
16
+ background: string;
17
+ card: string;
18
+ text: string;
19
+ border: string;
20
+ notification: string;
21
+ };
22
+ fonts: {
23
+ regular: FontStyle;
24
+ medium: FontStyle;
25
+ bold: FontStyle;
26
+ heavy: FontStyle;
27
+ };
28
+ }
29
+ export type Theme = NativeTheme;
30
+ export type LocaleDirection = 'ltr' | 'rtl';
29
31
  export type LinkingOptions<ParamList extends {}> = {
30
32
  /**
31
33
  * Whether deep link handling should be enabled.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,IAAI,yBAAyB,EAC/C,gBAAgB,IAAI,uBAAuB,EAC3C,gBAAgB,IAAI,uBAAuB,EAC3C,aAAa,EACb,KAAK,EACN,MAAM,wBAAwB,CAAC;AAEhC,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,eAAe,CAAC;QACxB,UAAU,KAAK;YACb,IAAI,EAAE,OAAO,CAAC;YACd,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAC;gBAChB,UAAU,EAAE,MAAM,CAAC;gBACnB,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC;gBACb,MAAM,EAAE,MAAM,CAAC;gBACf,YAAY,EAAE,MAAM,CAAC;aACtB,CAAC;YACF,KAAK,EAAE;gBACL,OAAO,EAAE,SAAS,CAAC;gBACnB,MAAM,EAAE,SAAS,CAAC;gBAClB,IAAI,EAAE,SAAS,CAAC;gBAChB,KAAK,EAAE,SAAS,CAAC;aAClB,CAAC;SACH;KACF;CACF;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5C,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EACN,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAE1C,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,EAAE,IAAI;IACjD;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE;QACP;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAClC;;WAEG;QACH,gBAAgB,CAAC,EAAE,MAAM,SAAS,CAAC;KACpC,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,MACZ,MAAM,GACN,IAAI,GACJ,SAAS,GACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACvC;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAC5B,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IACrC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAClD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAClD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,KAC7B,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CACtD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,IAAI,yBAAyB,EAC/C,gBAAgB,IAAI,uBAAuB,EAC3C,gBAAgB,IAAI,uBAAuB,EAC3C,aAAa,EACb,KAAK,EACN,MAAM,wBAAwB,CAAC;AAEhC,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,eAAe,CAAC;QACxB,UAAU,KAAM,SAAQ,WAAW;SAAG;KACvC;CACF;AAED,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EACN,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;CACX,CAAC;AAEF,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,SAAS,CAAC;QACnB,MAAM,EAAE,SAAS,CAAC;QAClB,IAAI,EAAE,SAAS,CAAC;QAChB,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC;AAEhC,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,EAAE,IAAI;IACjD;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE;QACP;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QAClC;;WAEG;QACH,gBAAgB,CAAC,EAAE,MAAM,SAAS,CAAC;KACpC,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,MACZ,MAAM,GACN,IAAI,GACJ,SAAS,GACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACvC;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAC5B,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IACrC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAClD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAClD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,CACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,KAC7B,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CACtD,CAAC"}
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.0-alpha.16",
4
+ "version": "7.0.0-alpha.18",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "react-navigation",
@@ -37,7 +37,7 @@
37
37
  "clean": "del lib"
38
38
  },
39
39
  "dependencies": {
40
- "@react-navigation/core": "^7.0.0-alpha.15",
40
+ "@react-navigation/core": "^7.0.0-alpha.17",
41
41
  "escape-string-regexp": "^4.0.0",
42
42
  "fast-deep-equal": "^3.1.3",
43
43
  "nanoid": "3.3.7",
@@ -72,5 +72,5 @@
72
72
  ]
73
73
  ]
74
74
  },
75
- "gitHead": "a601b72a5ae354900ab21f0e0293cb2c573ba8d0"
75
+ "gitHead": "7ed2bc19da336560ddd07002954a4ebba4d03929"
76
76
  }
@@ -17,7 +17,24 @@ type Props = Omit<
17
17
  /**
18
18
  * Options for deep linking.
19
19
  */
20
- linking?: Omit<LinkingOptions<ParamListBase>, 'config'>;
20
+ linking?: Omit<LinkingOptions<ParamListBase>, 'config' | 'enabled'> & {
21
+ /**
22
+ * Whether deep link handling should be enabled.
23
+ * Defaults to `true` if any `linking` options are specified, `false` otherwise.
24
+ *
25
+ * When 'auto' is specified, all leaf screens will get a autogenerated path.
26
+ * The generated path will be a kebab-case version of the screen name.
27
+ * This can be overridden for specific screens by specifying `linking` for the screen.
28
+ */
29
+ enabled?: 'auto' | true | false;
30
+ /**
31
+ * Additional configuration
32
+ */
33
+ config?: Omit<
34
+ NonNullable<LinkingOptions<ParamListBase>['config']>,
35
+ 'screens'
36
+ >;
37
+ };
21
38
  };
22
39
 
23
40
  /**
@@ -29,21 +46,49 @@ type Props = Omit<
29
46
  */
30
47
  export function createStaticNavigation(tree: StaticNavigation<any, any, any>) {
31
48
  const Component = createComponentForStaticNavigation(tree, 'RootNavigator');
32
- const linkingConfig = {
33
- screens: tree.config.screens
34
- ? createPathConfigForStaticNavigation(tree)
35
- : {},
36
- };
37
49
 
38
50
  function Navigation(
39
51
  { linking, ...rest }: Props,
40
52
  ref: React.Ref<NavigationContainerRef<ParamListBase>>
41
53
  ) {
54
+ const screens = React.useMemo(() => {
55
+ if (tree.config.screens) {
56
+ return createPathConfigForStaticNavigation(
57
+ tree,
58
+ { initialRouteName: linking?.config?.initialRouteName },
59
+ linking?.enabled === 'auto'
60
+ );
61
+ }
62
+
63
+ return undefined;
64
+ }, [linking?.config, linking?.enabled]);
65
+
66
+ if (linking?.enabled === true && screens == null) {
67
+ throw new Error(
68
+ 'Linking is enabled but no linking configuration was found for the screens.\n\n' +
69
+ 'To solve this:\n' +
70
+ "- Specify a 'linking' property for the screens you want to link to.\n" +
71
+ "- Or set 'linking.enabled' to 'auto' to generate paths automatically.\n\n" +
72
+ 'See usage guide: https://reactnavigation.org/docs/7.x/static-configuration#linking'
73
+ );
74
+ }
75
+
42
76
  return (
43
77
  <NavigationContainer
44
78
  {...rest}
45
79
  ref={ref}
46
- linking={linking ? { ...linking, config: linkingConfig } : undefined}
80
+ linking={
81
+ linking
82
+ ? {
83
+ ...linking,
84
+ enabled:
85
+ typeof linking.enabled === 'boolean'
86
+ ? linking.enabled
87
+ : screens != null,
88
+ config: screens ? { ...linking.config, screens } : undefined,
89
+ }
90
+ : undefined
91
+ }
47
92
  >
48
93
  <Component />
49
94
  </NavigationContainer>
package/src/types.tsx CHANGED
@@ -9,28 +9,10 @@ import type {
9
9
  declare global {
10
10
  // eslint-disable-next-line @typescript-eslint/no-namespace
11
11
  namespace ReactNavigation {
12
- interface Theme {
13
- dark: boolean;
14
- colors: {
15
- primary: string;
16
- background: string;
17
- card: string;
18
- text: string;
19
- border: string;
20
- notification: string;
21
- };
22
- fonts: {
23
- regular: FontStyle;
24
- medium: FontStyle;
25
- bold: FontStyle;
26
- heavy: FontStyle;
27
- };
28
- }
12
+ interface Theme extends NativeTheme {}
29
13
  }
30
14
  }
31
15
 
32
- export type LocaleDirection = 'ltr' | 'rtl';
33
-
34
16
  type FontStyle = {
35
17
  fontFamily: string;
36
18
  fontWeight:
@@ -47,7 +29,27 @@ type FontStyle = {
47
29
  | '900';
48
30
  };
49
31
 
50
- export type Theme = ReactNavigation.Theme;
32
+ interface NativeTheme {
33
+ dark: boolean;
34
+ colors: {
35
+ primary: string;
36
+ background: string;
37
+ card: string;
38
+ text: string;
39
+ border: string;
40
+ notification: string;
41
+ };
42
+ fonts: {
43
+ regular: FontStyle;
44
+ medium: FontStyle;
45
+ bold: FontStyle;
46
+ heavy: FontStyle;
47
+ };
48
+ }
49
+
50
+ export type Theme = NativeTheme;
51
+
52
+ export type LocaleDirection = 'ltr' | 'rtl';
51
53
 
52
54
  export type LinkingOptions<ParamList extends {}> = {
53
55
  /**