@react-navigation/native 7.2.6 → 7.3.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 (36) hide show
  1. package/lib/module/createStandardNavigationFactories.js +97 -0
  2. package/lib/module/createStandardNavigationFactories.js.map +1 -0
  3. package/lib/module/index.js +1 -0
  4. package/lib/module/index.js.map +1 -1
  5. package/lib/module/useMemoArray.js +25 -0
  6. package/lib/module/useMemoArray.js.map +1 -0
  7. package/lib/typescript/src/Link.d.ts +1 -1
  8. package/lib/typescript/src/Link.d.ts.map +1 -1
  9. package/lib/typescript/src/LinkingContext.d.ts +1 -1
  10. package/lib/typescript/src/LinkingContext.d.ts.map +1 -1
  11. package/lib/typescript/src/LocaleDirContext.d.ts +1 -1
  12. package/lib/typescript/src/LocaleDirContext.d.ts.map +1 -1
  13. package/lib/typescript/src/NavigationContainer.d.ts +1 -1
  14. package/lib/typescript/src/NavigationContainer.d.ts.map +1 -1
  15. package/lib/typescript/src/ServerContainer.d.ts +2 -2
  16. package/lib/typescript/src/ServerContainer.d.ts.map +1 -1
  17. package/lib/typescript/src/createStandardNavigationFactories.d.ts +47 -0
  18. package/lib/typescript/src/createStandardNavigationFactories.d.ts.map +1 -0
  19. package/lib/typescript/src/createStaticNavigation.d.ts +2 -2
  20. package/lib/typescript/src/createStaticNavigation.d.ts.map +1 -1
  21. package/lib/typescript/src/index.d.ts +17 -16
  22. package/lib/typescript/src/index.d.ts.map +1 -1
  23. package/lib/typescript/src/useDocumentTitle.d.ts +1 -1
  24. package/lib/typescript/src/useDocumentTitle.d.ts.map +1 -1
  25. package/lib/typescript/src/useLinkBuilder.d.ts.map +1 -1
  26. package/lib/typescript/src/useLinking.d.ts +1 -1
  27. package/lib/typescript/src/useLinking.d.ts.map +1 -1
  28. package/lib/typescript/src/useLinking.native.d.ts +1 -1
  29. package/lib/typescript/src/useLinking.native.d.ts.map +1 -1
  30. package/lib/typescript/src/useLocale.d.ts +1 -1
  31. package/lib/typescript/src/useMemoArray.d.ts +2 -0
  32. package/lib/typescript/src/useMemoArray.d.ts.map +1 -0
  33. package/package.json +5 -4
  34. package/src/createStandardNavigationFactories.tsx +294 -0
  35. package/src/index.tsx +5 -0
  36. package/src/useMemoArray.tsx +41 -0
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ import { CommonActions, createNavigatorFactory, createScreenFactory, useNavigationBuilder } from '@react-navigation/core';
4
+ import * as React from 'react';
5
+ import { useBuildHref } from "./useLinkBuilder.js";
6
+ import { useMemoArray } from "./useMemoArray.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export function createStandardNavigationFactories(navigator, router, mapper) {
9
+ const {
10
+ type,
11
+ version,
12
+ NavigatorContent
13
+ } = navigator;
14
+ if (type !== 'standard') {
15
+ throw new Error(`createStandardNavigationFactories only works with standard navigator objects, but got navigator of ${typeof type === 'string' ? `type "${type}".` : 'unknown type.'}`);
16
+ }
17
+ if (version !== 1) {
18
+ throw new Error(`createStandardNavigationFactories only works with version 1 of standard navigator objects, but got version ${version}.`);
19
+ }
20
+ function StandardNavigationNavigator(props) {
21
+ const builder = useNavigationBuilder(router, props);
22
+ const buildHref = useBuildHref();
23
+ const routes = useMemoArray(('preloadedRoutes' in builder.state && Array.isArray(builder.state.preloadedRoutes) ? builder.state.routes.concat(builder.state.preloadedRoutes) : builder.state.routes).map(route => {
24
+ const href = buildHref(route.name, route.params);
25
+ return [{
26
+ key: route.key,
27
+ name: route.name,
28
+ params: route.params,
29
+ href
30
+ }, [route.key, route.name, route.params, href]];
31
+ }));
32
+ const state = React.useMemo(() => ({
33
+ index: builder.state.index,
34
+ routes
35
+ }), [builder.state.index, routes]);
36
+ const descriptors = {};
37
+ for (const route of state.routes) {
38
+ const descriptor = builder.descriptors[route.key] ?? builder.describe(route, true);
39
+ descriptors[route.key] = {
40
+ options: descriptor.options,
41
+ render: descriptor.render
42
+ };
43
+ }
44
+ const actions = React.useMemo(() => ({
45
+ navigate(name, params) {
46
+ builder.navigation.dispatch({
47
+ ...CommonActions.navigate(name, params),
48
+ target: builder.state.key
49
+ });
50
+ },
51
+ back() {
52
+ builder.navigation.goBack();
53
+ }
54
+ }), [builder.navigation, builder.state.key]);
55
+ const emitter = React.useMemo(() => ({
56
+ // @ts-expect-error - they are compatible
57
+ emit: builder.navigation.emit
58
+ }), [builder.navigation]);
59
+ const mapped = mapper?.({
60
+ state: builder.state,
61
+ navigation: builder.navigation
62
+ });
63
+
64
+ // Omit props used by useNavigationBuilder and routers internally
65
+ const {
66
+ /* eslint-disable @typescript-eslint/no-unused-vars */
67
+ children,
68
+ id,
69
+ initialRouteName,
70
+ layout,
71
+ screenLayout,
72
+ screenListeners,
73
+ screenOptions,
74
+ UNSTABLE_routeNamesChangeBehavior,
75
+ UNSTABLE_router,
76
+ /* eslint-enable @typescript-eslint/no-unused-vars */
77
+ ...rest
78
+ } = props;
79
+ return /*#__PURE__*/_jsx(builder.NavigationContent, {
80
+ children: /*#__PURE__*/_jsx(NavigatorContent, {
81
+ ...rest,
82
+ ...mapped,
83
+ state: state,
84
+ descriptors: descriptors,
85
+ actions: actions,
86
+ emitter: emitter
87
+ })
88
+ });
89
+ }
90
+ const createNavigator = createNavigatorFactory(StandardNavigationNavigator);
91
+ const createScreen = createScreenFactory();
92
+ return {
93
+ createNavigator,
94
+ createScreen
95
+ };
96
+ }
97
+ //# sourceMappingURL=createStandardNavigationFactories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CommonActions","createNavigatorFactory","createScreenFactory","useNavigationBuilder","React","useBuildHref","useMemoArray","jsx","_jsx","createStandardNavigationFactories","navigator","router","mapper","type","version","NavigatorContent","Error","StandardNavigationNavigator","props","builder","buildHref","routes","state","Array","isArray","preloadedRoutes","concat","map","route","href","name","params","key","useMemo","index","descriptors","descriptor","describe","options","render","actions","navigate","navigation","dispatch","target","back","goBack","emitter","emit","mapped","children","id","initialRouteName","layout","screenLayout","screenListeners","screenOptions","UNSTABLE_routeNamesChangeBehavior","UNSTABLE_router","rest","NavigationContent","createNavigator","createScreen"],"sourceRoot":"../../src","sources":["createStandardNavigationFactories.tsx"],"mappings":";;AAAA,SACEA,aAAa,EACbC,sBAAsB,EACtBC,mBAAmB,EAanBC,oBAAoB,QACf,wBAAwB;AAC/B,OAAO,KAAKC,KAAK,MAAM,OAAO;AAM9B,SAASC,YAAY,QAAQ,qBAAkB;AAC/C,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA4G9C,OAAO,SAASC,iCAAiCA,CAI/CC,SAMC,EACDC,MAIC,EACDC,MAA+D,EACzB;EACtC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC;EAAiB,CAAC,GAAGL,SAAS;EAErD,IAAIG,IAAI,KAAK,UAAU,EAAE;IACvB,MAAM,IAAIG,KAAK,CACb,sGAAsG,OAAOH,IAAI,KAAK,QAAQ,GAAG,SAASA,IAAI,IAAI,GAAG,eAAe,EACtK,CAAC;EACH;EAEA,IAAIC,OAAO,KAAK,CAAC,EAAE;IACjB,MAAM,IAAIE,KAAK,CACb,8GAA8GF,OAAO,GACvH,CAAC;EACH;EAQA,SAASG,2BAA2BA,CAClCC,KAAgD,EAChD;IACA,MAAMC,OAAO,GAAGhB,oBAAoB,CAMlCQ,MAAM,EAAEO,KAAK,CAAC;IAEhB,MAAME,SAAS,GAAGf,YAAY,CAAC,CAAC;IAEhC,MAAMgB,MAAM,GAAGf,YAAY,CACzB,CAAC,iBAAiB,IAAIa,OAAO,CAACG,KAAK,IACnCC,KAAK,CAACC,OAAO,CAACL,OAAO,CAACG,KAAK,CAACG,eAAe,CAAC,GACxCN,OAAO,CAACG,KAAK,CAACD,MAAM,CAACK,MAAM,CAACP,OAAO,CAACG,KAAK,CAACG,eAAe,CAAC,GAC1DN,OAAO,CAACG,KAAK,CAACD,MAAM,EACtBM,GAAG,CAAEC,KAAK,IAAK;MACf,MAAMC,IAAI,GAAGT,SAAS,CAACQ,KAAK,CAACE,IAAI,EAAEF,KAAK,CAACG,MAAM,CAAC;MAEhD,OAAO,CACL;QACEC,GAAG,EAAEJ,KAAK,CAACI,GAAG;QACdF,IAAI,EAAEF,KAAK,CAACE,IAAI;QAChBC,MAAM,EAAEH,KAAK,CAACG,MAAM;QACpBF;MACF,CAAC,EACD,CAACD,KAAK,CAACI,GAAG,EAAEJ,KAAK,CAACE,IAAI,EAAEF,KAAK,CAACG,MAAM,EAAEF,IAAI,CAAC,CAC5C;IACH,CAAC,CACH,CAAC;IAED,MAAMP,KAAK,GAAGlB,KAAK,CAAC6B,OAAO,CACzB,OAA8B;MAC5BC,KAAK,EAAEf,OAAO,CAACG,KAAK,CAACY,KAAK;MAC1Bb;IACF,CAAC,CAAC,EACF,CAACF,OAAO,CAACG,KAAK,CAACY,KAAK,EAAEb,MAAM,CAC9B,CAAC;IAED,MAAMc,WAAwC,GAAG,CAAC,CAAC;IAEnD,KAAK,MAAMP,KAAK,IAAIN,KAAK,CAACD,MAAM,EAAE;MAChC,MAAMe,UAAU,GACdjB,OAAO,CAACgB,WAAW,CAACP,KAAK,CAACI,GAAG,CAAC,IAAIb,OAAO,CAACkB,QAAQ,CAACT,KAAK,EAAE,IAAI,CAAC;MAEjEO,WAAW,CAACP,KAAK,CAACI,GAAG,CAAC,GAAG;QACvBM,OAAO,EAAEF,UAAU,CAACE,OAAO;QAC3BC,MAAM,EAAEH,UAAU,CAACG;MACrB,CAAC;IACH;IAEA,MAAMC,OAAO,GAAGpC,KAAK,CAAC6B,OAAO,CAC3B,OAAO;MACLQ,QAAQA,CAACX,IAAI,EAAEC,MAAM,EAAE;QACrBZ,OAAO,CAACuB,UAAU,CAACC,QAAQ,CAAC;UAC1B,GAAG3C,aAAa,CAACyC,QAAQ,CAACX,IAAI,EAAEC,MAAM,CAAC;UACvCa,MAAM,EAAEzB,OAAO,CAACG,KAAK,CAACU;QACxB,CAAC,CAAC;MACJ,CAAC;MACDa,IAAIA,CAAA,EAAG;QACL1B,OAAO,CAACuB,UAAU,CAACI,MAAM,CAAC,CAAC;MAC7B;IACF,CAAC,CAAC,EACF,CAAC3B,OAAO,CAACuB,UAAU,EAAEvB,OAAO,CAACG,KAAK,CAACU,GAAG,CACxC,CAAC;IAED,MAAMe,OAAO,GAAG3C,KAAK,CAAC6B,OAAO,CAC3B,OAAO;MACL;MACAe,IAAI,EAAE7B,OAAO,CAACuB,UAAU,CAACM;IAC3B,CAAC,CAAC,EACF,CAAC7B,OAAO,CAACuB,UAAU,CACrB,CAAC;IAED,MAAMO,MAAM,GAAGrC,MAAM,GAAG;MACtBU,KAAK,EAAEH,OAAO,CAACG,KAAK;MACpBoB,UAAU,EAAEvB,OAAO,CAACuB;IACtB,CAAC,CAAC;;IAEF;IACA,MAAM;MACJ;MACAQ,QAAQ;MACRC,EAAE;MACFC,gBAAgB;MAChBC,MAAM;MACNC,YAAY;MACZC,eAAe;MACfC,aAAa;MACbC,iCAAiC;MACjCC,eAAe;MACf;MACA,GAAGC;IACL,CAAC,GAAGzC,KAAK;IAET,oBACEV,IAAA,CAACW,OAAO,CAACyC,iBAAiB;MAAAV,QAAA,eACxB1C,IAAA,CAACO,gBAAgB;QAAA,GACV4C,IAAI;QAAA,GACLV,MAAM;QACV3B,KAAK,EAAEA,KAAM;QACba,WAAW,EAAEA,WAAY;QACzBK,OAAO,EAAEA,OAAQ;QACjBO,OAAO,EAAEA;MAAQ,CAClB;IAAC,CACuB,CAAC;EAEhC;EAEA,MAAMc,eAAe,GAAG5D,sBAAsB,CAC5CgB,2BACF,CAA+C;EAE/C,MAAM6C,YAAY,GAChB5D,mBAAmB,CAAwC,CAAC;EAE9D,OAAO;IACL2D,eAAe;IACfC;EACF,CAAC;AACH","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ export { createStandardNavigationFactories } from "./createStandardNavigationFactories.js";
3
4
  export { createStaticNavigation } from "./createStaticNavigation.js";
4
5
  export { Link } from "./Link.js";
5
6
  export { LinkingContext } from "./LinkingContext.js";
@@ -1 +1 @@
1
- {"version":3,"names":["createStaticNavigation","Link","LinkingContext","LocaleDirContext","NavigationContainer","ServerContainer","DarkTheme","DefaultTheme","UnhandledLinkingContext","UNSTABLE_UnhandledLinkingContext","useLinkBuilder","useLinkProps","useLinkTo","useLocale","useRoutePath","useScrollToTop"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,IAAI,QAAQ,WAAQ;AAC7B,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,SAAS,QAAQ,wBAAqB;AAC/C,SAASC,YAAY,QAAQ,2BAAwB;AACrD,cAAc,YAAS;AACvB,SAASC,uBAAuB,IAAIC,gCAAgC,QAAQ,8BAA2B;AACvG,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAAyBC,YAAY,QAAQ,mBAAgB;AAC7D,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,cAAc,wBAAwB","ignoreList":[]}
1
+ {"version":3,"names":["createStandardNavigationFactories","createStaticNavigation","Link","LinkingContext","LocaleDirContext","NavigationContainer","ServerContainer","DarkTheme","DefaultTheme","UnhandledLinkingContext","UNSTABLE_UnhandledLinkingContext","useLinkBuilder","useLinkProps","useLinkTo","useLocale","useRoutePath","useScrollToTop"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SACEA,iCAAiC,QAG5B,wCAAqC;AAC5C,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,IAAI,QAAQ,WAAQ;AAC7B,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,SAAS,QAAQ,wBAAqB;AAC/C,SAASC,YAAY,QAAQ,2BAAwB;AACrD,cAAc,YAAS;AACvB,SAASC,uBAAuB,IAAIC,gCAAgC,QAAQ,8BAA2B;AACvG,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAAyBC,YAAY,QAAQ,mBAAgB;AAC7D,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,cAAc,wBAAwB","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ import * as React from 'react';
4
+ export function useMemoArray(entries) {
5
+ const previousRef = React.useRef(undefined);
6
+ const previous = previousRef.current;
7
+ const next = entries.map(([item, deps], index) => {
8
+ const previousEntry = previous?.entries[index];
9
+ const depsEqual = previousEntry && previousEntry.deps.length === deps.length && previousEntry.deps.every((it, index) => Object.is(it, deps[index]));
10
+ return depsEqual ? previousEntry : {
11
+ item,
12
+ deps
13
+ };
14
+ });
15
+ if (previous && previous.entries.length === next.length && next.every((entry, index) => entry === previous.entries[index])) {
16
+ return previous.items;
17
+ }
18
+ const items = next.map(entry => entry.item);
19
+ previousRef.current = {
20
+ entries: next,
21
+ items
22
+ };
23
+ return items;
24
+ }
25
+ //# sourceMappingURL=useMemoArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemoArray","entries","previousRef","useRef","undefined","previous","current","next","map","item","deps","index","previousEntry","depsEqual","length","every","it","Object","is","entry","items"],"sourceRoot":"../../src","sources":["useMemoArray.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAO,SAASC,YAAYA,CAC1BC,OAA8C,EACzC;EACL,MAAMC,WAAW,GAAGH,KAAK,CAACI,MAAM,CAM9BC,SAAS,CAAC;EAEZ,MAAMC,QAAQ,GAAGH,WAAW,CAACI,OAAO;EACpC,MAAMC,IAAI,GAAGN,OAAO,CAACO,GAAG,CAAC,CAAC,CAACC,IAAI,EAAEC,IAAI,CAAC,EAAEC,KAAK,KAAK;IAChD,MAAMC,aAAa,GAAGP,QAAQ,EAAEJ,OAAO,CAACU,KAAK,CAAC;IAC9C,MAAME,SAAS,GACbD,aAAa,IACbA,aAAa,CAACF,IAAI,CAACI,MAAM,KAAKJ,IAAI,CAACI,MAAM,IACzCF,aAAa,CAACF,IAAI,CAACK,KAAK,CAAC,CAACC,EAAE,EAAEL,KAAK,KAAKM,MAAM,CAACC,EAAE,CAACF,EAAE,EAAEN,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC;IAErE,OAAOE,SAAS,GAAGD,aAAa,GAAG;MAAEH,IAAI;MAAEC;IAAK,CAAC;EACnD,CAAC,CAAC;EAEF,IACEL,QAAQ,IACRA,QAAQ,CAACJ,OAAO,CAACa,MAAM,KAAKP,IAAI,CAACO,MAAM,IACvCP,IAAI,CAACQ,KAAK,CAAC,CAACI,KAAK,EAAER,KAAK,KAAKQ,KAAK,KAAKd,QAAQ,CAACJ,OAAO,CAACU,KAAK,CAAC,CAAC,EAC/D;IACA,OAAON,QAAQ,CAACe,KAAK;EACvB;EAEA,MAAMA,KAAK,GAAGb,IAAI,CAACC,GAAG,CAAEW,KAAK,IAAKA,KAAK,CAACV,IAAI,CAAC;EAE7CP,WAAW,CAACI,OAAO,GAAG;IACpBL,OAAO,EAAEM,IAAI;IACba;EACF,CAAC;EAED,OAAOA,KAAK;AACd","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { type GestureResponderEvent, Text, type TextProps } from 'react-native';
3
- import { type LinkProps } from './useLinkProps';
3
+ import { type LinkProps } from './useLinkProps.js';
4
4
  type Props<ParamList extends ReactNavigation.RootParamList> = LinkProps<ParamList> & Omit<TextProps, 'disabled'> & {
5
5
  target?: string;
6
6
  onPress?: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent> | GestureResponderEvent) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/Link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,qBAAqB,EAE1B,IAAI,EACJ,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AAE9D,KAAK,KAAK,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,IACxD,SAAS,CAAC,SAAS,CAAC,GAClB,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CACR,CAAC,EACG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAC/C,qBAAqB,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEN;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,EAAE,EACpE,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,EACR,EAAE,KAAK,CAAC,SAAS,CAAC,mCA2BlB"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/Link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,qBAAqB,EAE1B,IAAI,EACJ,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,mBAAgB,CAAC;AAE9D,KAAK,KAAK,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,IACxD,SAAS,CAAC,SAAS,CAAC,GAClB,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CACR,CAAC,EACG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAC/C,qBAAqB,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEN;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,SAAS,SAAS,eAAe,CAAC,aAAa,EAAE,EACpE,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,GAAG,IAAI,EACR,EAAE,KAAK,CAAC,SAAS,CAAC,mCA2BlB"}
@@ -1,6 +1,6 @@
1
1
  import type { ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { LinkingOptions } from './types';
3
+ import type { LinkingOptions } from './types.js';
4
4
  export declare const LinkingContext: React.Context<{
5
5
  options?: LinkingOptions<ParamListBase>;
6
6
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"LinkingContext.d.ts","sourceRoot":"","sources":["../../../src/LinkingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,eAAO,MAAM,cAAc;cACf,cAAc,CAAC,aAAa,CAAC;EAKvC,CAAC"}
1
+ {"version":3,"file":"LinkingContext.d.ts","sourceRoot":"","sources":["../../../src/LinkingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAI9C,eAAO,MAAM,cAAc;cACf,cAAc,CAAC,aAAa,CAAC;EAKvC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
- import type { LocaleDirection } from './types';
2
+ import type { LocaleDirection } from './types.js';
3
3
  export declare const LocaleDirContext: React.Context<LocaleDirection>;
4
4
  //# sourceMappingURL=LocaleDirContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocaleDirContext.d.ts","sourceRoot":"","sources":["../../../src/LocaleDirContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,gBAAgB,gCAA8C,CAAC"}
1
+ {"version":3,"file":"LocaleDirContext.d.ts","sourceRoot":"","sources":["../../../src/LocaleDirContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAS,CAAC;AAE/C,eAAO,MAAM,gBAAgB,gCAA8C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type NavigationContainerProps, type NavigationContainerRef } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { DocumentTitleOptions, LinkingOptions, LocaleDirection } from './types';
3
+ import type { DocumentTitleOptions, LinkingOptions, LocaleDirection } from './types.js';
4
4
  declare global {
5
5
  var REACT_NAVIGATION_DEVTOOLS: WeakMap<NavigationContainerRef<any>, {
6
6
  readonly linking: LinkingOptions<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/NavigationContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAI5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAC;AAMjB,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,yBAAyB,EAAE,OAAO,CACpC,sBAAsB,CAAC,GAAG,CAAC,EAC3B;QAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;KAAE,CAC1C,CAAC;CACH;AAID,KAAK,KAAK,CAAC,SAAS,SAAS,EAAE,IAAI,wBAAwB,GAAG;IAC5D;;;;OAIG;IACH,YAAY,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACxD;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC,CAAC;AAsFF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAE3B,CAAC,aAAa,SAAS,EAAE,GAAG,eAAe,CAAC,aAAa,EAC5D,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;CACxD,KACE,KAAK,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"NavigationContainer.d.ts","sourceRoot":"","sources":["../../../src/NavigationContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAI5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,eAAe,EAChB,MAAM,YAAS,CAAC;AAMjB,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,yBAAyB,EAAE,OAAO,CACpC,sBAAsB,CAAC,GAAG,CAAC,EAC3B;QAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;KAAE,CAC1C,CAAC;CACH;AAID,KAAK,KAAK,CAAC,SAAS,SAAS,EAAE,IAAI,wBAAwB,GAAG;IAC5D;;;;OAIG;IACH,YAAY,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACxD;;OAEG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC,CAAC;AAsFF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAE3B,CAAC,aAAa,SAAS,EAAE,GAAG,eAAe,CAAC,aAAa,EAC5D,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;CACxD,KACE,KAAK,CAAC,YAAY,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { type ServerContextType } from './ServerContext';
3
- import type { ServerContainerRef } from './types';
2
+ import { type ServerContextType } from './ServerContext.js';
3
+ import type { ServerContainerRef } from './types.js';
4
4
  /**
5
5
  * Container component for server rendering.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ServerContainer.d.ts","sourceRoot":"","sources":["../../../src/ServerContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAMlD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;cAVhB,KAAK,CAAC,SAAS;4CAiDzB,CAAC"}
1
+ {"version":3,"file":"ServerContainer.d.ts","sourceRoot":"","sources":["../../../src/ServerContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,oBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAS,CAAC;AAMlD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;cAVhB,KAAK,CAAC,SAAS;4CAiDzB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { type DefaultRouterOptions, type EventMapBase, type NavigationAction, type NavigationProp, type NavigatorTypeBagBase, type ParamListBase, type RouterFactory, type StaticConfig, type StaticParamList, type StaticScreenFactory, type TypedNavigator } from '@react-navigation/core';
2
+ import * as React from 'react';
3
+ import type { createStandardNavigator } from 'standard-navigation';
4
+ type StandardEventMap<EventMap extends EventMapBase> = {
5
+ [EventName in keyof EventMap]: {
6
+ data: EventMap[EventName] extends {
7
+ data?: infer Data;
8
+ } ? Data extends object | undefined ? Data : object | undefined : undefined;
9
+ canPreventDefault: EventMap[EventName] extends {
10
+ canPreventDefault: true;
11
+ } ? true : false;
12
+ };
13
+ };
14
+ type ActionHelpersOf<T> = T extends Record<string, (...args: never[]) => unknown> ? T : {};
15
+ type StandardNavigationTypeBagFor<TypeBag extends StandardNavigationTypeBagBase, ParamList extends ParamListBase, NavigatorID extends string | undefined = string | undefined> = TypeBag & {
16
+ ParamList: ParamList;
17
+ NavigatorID: NavigatorID;
18
+ };
19
+ type StandardNavigation<TypeBag extends StandardNavigationTypeBagBase> = StandardNavigationTypeBagFor<TypeBag, ParamListBase>['NavigationList'][keyof StandardNavigationTypeBagFor<TypeBag, ParamListBase>['NavigationList']];
20
+ type StandardNavigationPropsMapper<TypeBag extends StandardNavigationTypeBagBase, NavigatorProps extends object> = (props: {
21
+ state: StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'];
22
+ navigation: StandardNavigation<TypeBag>;
23
+ }) => Partial<NavigatorProps>;
24
+ type StandardNavigationDefaultBag<TypeBag extends StandardNavigationTypeBagBase> = StandardNavigationTypeBagFor<TypeBag, ParamListBase, string | undefined>;
25
+ type StandardNavigationFactories<TypeBag extends StandardNavigationTypeBagBase> = {
26
+ createNavigator: StandardNavigationCreateNavigator<TypeBag>;
27
+ createScreen: StaticScreenFactory<StandardNavigationDefaultBag<TypeBag>>;
28
+ };
29
+ export type StandardNavigationCreateNavigator<TypeBag extends StandardNavigationTypeBagBase> = {
30
+ <const ParamList extends ParamListBase, const NavigatorID extends string | undefined = string | undefined>(): TypedNavigator<StandardNavigationTypeBagFor<TypeBag, ParamList, NavigatorID>, undefined>;
31
+ <const Config extends StaticConfig<StandardNavigationDefaultBag<TypeBag>>>(config: Config & StaticConfig<StandardNavigationDefaultBag<TypeBag>>): TypedNavigator<StandardNavigationTypeBagFor<TypeBag, StaticParamList<{
32
+ config: Config;
33
+ }> & ParamListBase, string | undefined>, Config>;
34
+ };
35
+ export interface StandardNavigationTypeBagBase extends NavigatorTypeBagBase {
36
+ ActionHelpers: {};
37
+ ScreenOptions: {};
38
+ EventMap: EventMapBase;
39
+ RouterOptions: DefaultRouterOptions;
40
+ NavigationList: {
41
+ [RouteName in keyof this['ParamList']]: NavigationProp<this['ParamList'], RouteName, this['NavigatorID'], this['State'], this['ScreenOptions'], this['EventMap']> & ActionHelpersOf<this['ActionHelpers']>;
42
+ };
43
+ Navigator: React.ComponentType<{}>;
44
+ }
45
+ export declare function createStandardNavigationFactories<TypeBag extends StandardNavigationTypeBagBase, NavigatorProps extends object = {}>(navigator: ReturnType<typeof createStandardNavigator<TypeBag['ScreenOptions'], StandardEventMap<TypeBag['EventMap']>, NavigatorProps>>, router: RouterFactory<StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'], NavigationAction, TypeBag['RouterOptions']>, mapper?: StandardNavigationPropsMapper<TypeBag, NavigatorProps>): StandardNavigationFactories<TypeBag>;
46
+ export {};
47
+ //# sourceMappingURL=createStandardNavigationFactories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStandardNavigationFactories.d.ts","sourceRoot":"","sources":["../../../src/createStandardNavigationFactories.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type NavigationContainerRef, type ParamListBase, type StaticNavigation } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import { NavigationContainer } from './NavigationContainer';
4
- import type { LinkingOptions } from './types';
3
+ import { NavigationContainer } from './NavigationContainer.js';
4
+ import type { LinkingOptions } from './types.js';
5
5
  type Props = Omit<React.ComponentProps<typeof NavigationContainer>, 'linking' | 'children'> & {
6
6
  /**
7
7
  * Options for deep linking.
@@ -1 +1 @@
1
- {"version":3,"file":"createStaticNavigation.d.ts","sourceRoot":"","sources":["../../../src/createStaticNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,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,oHA8D3E"}
1
+ {"version":3,"file":"createStaticNavigation.d.ts","sourceRoot":"","sources":["../../../src/createStaticNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,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,0BAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,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,oHA8D3E"}
@@ -1,18 +1,19 @@
1
- export { createStaticNavigation } from './createStaticNavigation';
2
- export { Link } from './Link';
3
- export { LinkingContext } from './LinkingContext';
4
- export { LocaleDirContext } from './LocaleDirContext';
5
- export { NavigationContainer } from './NavigationContainer';
6
- export { ServerContainer } from './ServerContainer';
7
- export { DarkTheme } from './theming/DarkTheme';
8
- export { DefaultTheme } from './theming/DefaultTheme';
9
- export * from './types';
10
- export { UnhandledLinkingContext as UNSTABLE_UnhandledLinkingContext } from './UnhandledLinkingContext';
11
- export { useLinkBuilder } from './useLinkBuilder';
12
- export { type LinkProps, useLinkProps } from './useLinkProps';
13
- export { useLinkTo } from './useLinkTo';
14
- export { useLocale } from './useLocale';
15
- export { useRoutePath } from './useRoutePath';
16
- export { useScrollToTop } from './useScrollToTop';
1
+ export { createStandardNavigationFactories, type StandardNavigationCreateNavigator, type StandardNavigationTypeBagBase, } from './createStandardNavigationFactories.js';
2
+ export { createStaticNavigation } from './createStaticNavigation.js';
3
+ export { Link } from './Link.js';
4
+ export { LinkingContext } from './LinkingContext.js';
5
+ export { LocaleDirContext } from './LocaleDirContext.js';
6
+ export { NavigationContainer } from './NavigationContainer.js';
7
+ export { ServerContainer } from './ServerContainer.js';
8
+ export { DarkTheme } from './theming/DarkTheme.js';
9
+ export { DefaultTheme } from './theming/DefaultTheme.js';
10
+ export * from './types.js';
11
+ export { UnhandledLinkingContext as UNSTABLE_UnhandledLinkingContext } from './UnhandledLinkingContext.js';
12
+ export { useLinkBuilder } from './useLinkBuilder.js';
13
+ export { type LinkProps, useLinkProps } from './useLinkProps.js';
14
+ export { useLinkTo } from './useLinkTo.js';
15
+ export { useLocale } from './useLocale.js';
16
+ export { useRoutePath } from './useRoutePath.js';
17
+ export { useScrollToTop } from './useScrollToTop.js';
17
18
  export * from '@react-navigation/core';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,GACnC,MAAM,wCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA0B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAAwB,CAAC;AACtD,cAAc,YAAS,CAAC;AACxB,OAAO,EAAE,uBAAuB,IAAI,gCAAgC,EAAE,MAAM,8BAA2B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAkB,CAAC;AAClD,cAAc,wBAAwB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { NavigationContainerRef, ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { DocumentTitleOptions } from './types';
3
+ import type { DocumentTitleOptions } from './types.js';
4
4
  /**
5
5
  * Set the document title for the active screen
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentTitle.d.ts","sourceRoot":"","sources":["../../../src/useDocumentTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,SAA6D,GAC9D,GAAE,oBAAyB,QAwB7B"}
1
+ {"version":3,"file":"useDocumentTitle.d.ts","sourceRoot":"","sources":["../../../src/useDocumentTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAS,CAAC;AAEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,SAA6D,GAC9D,GAAE,oBAAyB,QAwB7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,YAAY,WAWjB,MAAM,WAAW,MAAM,wBAmEjC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,eAQhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;cA7FV,CAAC;YAAsB,CAAC;aAAuB,CAAC;WAEnD,CAAC;;;;;;;;cAIwB,CAAC;aAAuB,CAAC;;;;;;;cAS3C,CAAC;;;;;;;cAKgD,CAAC;;;;;;;;cAIrD,CAAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc;sBA1GnB,MAAM,WAAW,MAAM;wBAgFvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;kBA7FV,CAAC;gBAAsB,CAAC;iBAAuB,CAAC;eAEnD,CAAC;;;;;;;;kBAIwB,CAAC;iBAAuB,CAAC;;;;;;;kBAS3C,CAAC;;;;;;;kBAKgD,CAAC;;;;;;;;kBAIrD,CAAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuGD"}
1
+ {"version":3,"file":"useLinkBuilder.d.ts","sourceRoot":"","sources":["../../../src/useLinkBuilder.tsx"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,YAAY,WAWjB,MAAM,WAAW,MAAM,wBAmEjC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,eAQhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;cA7FP,CAAC;YAAsB,CAAC;aAAuB,CAAC;WAEnD,CAAC;;;;;;;;cAIwB,CAAC;aAE/B,CAAF;;;;;;;cAOe,CAAA;;;;;;;cAKgD,CAAC;;;;;;;;cAIxD,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFJ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc;sBA1GnB,MAAM,WAAW,MAAM;wBAgFvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;kBA7FP,CAAC;gBAAsB,CAAC;iBAAuB,CAAC;eAEnD,CAAC;;;;;;;;kBAIwB,CAAC;iBAE/B,CAAF;;;;;;;kBAOe,CAAA;;;;;;;kBAKgD,CAAC;;;;;;;;kBAIxD,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuGJ"}
@@ -1,6 +1,6 @@
1
1
  import { getStateFromPath as getStateFromPathDefault, type NavigationContainerRef, type ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { LinkingOptions } from './types';
3
+ import type { LinkingOptions } from './types.js';
4
4
  type ResultState = ReturnType<typeof getStateFromPathDefault>;
5
5
  /**
6
6
  * Run async function in series as it's called.
@@ -1 +1 @@
1
- {"version":3,"file":"useLinking.d.ts","sourceRoot":"","sources":["../../../src/useLinking.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAuE9D;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,eAO7C,CAAC;AAIF,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,MAAM,EACN,gBAA0C,EAC1C,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;2BAsGW,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;EA6R1D"}
1
+ {"version":3,"file":"useLinking.d.ts","sourceRoot":"","sources":["../../../src/useLinking.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,gBAAgB,IAAI,uBAAuB,EAC3C,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAE9C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAuE9D;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,eAO7C,CAAC;AAIF,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,MAAM,EACN,gBAA0C,EAC1C,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;2BAsGW,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;EA6R1D"}
@@ -1,6 +1,6 @@
1
1
  import { type NavigationContainerRef, type ParamListBase } from '@react-navigation/core';
2
2
  import * as React from 'react';
3
- import type { LinkingOptions } from './types';
3
+ import type { LinkingOptions } from './types.js';
4
4
  type Options = LinkingOptions<ParamListBase>;
5
5
  export declare function useLinking(ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>, { enabled, prefixes, filter, config, getInitialURL, subscribe, getStateFromPath, getActionFromState, }: Options): {
6
6
  getInitialState: () => PromiseLike<(Partial<Omit<Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"useLinking.native.d.ts","sourceRoot":"","sources":["../../../src/useLinking.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAI7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,QAAQ,EACR,MAAM,EACN,MAAM,EACN,aAQI,EACJ,SAmBC,EACD,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EAsKX"}
1
+ {"version":3,"file":"useLinking.native.d.ts","sourceRoot":"","sources":["../../../src/useLinking.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAI9C,KAAK,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAI7C,wBAAgB,UAAU,CACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,EAClE,EACE,OAAc,EACd,QAAQ,EACR,MAAM,EACN,MAAM,EACN,aAQI,EACJ,SAmBC,EACD,gBAA0C,EAC1C,kBAA8C,GAC/C,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EAsKX"}
@@ -2,6 +2,6 @@
2
2
  * Hook to access the text direction specified in the `NavigationContainer`.
3
3
  */
4
4
  export declare function useLocale(): {
5
- direction: import("./types").LocaleDirection;
5
+ direction: import("./types.js").LocaleDirection;
6
6
  };
7
7
  //# sourceMappingURL=useLocale.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function useMemoArray<T>(entries: [item: T, deps: readonly unknown[]][]): T[];
2
+ //# sourceMappingURL=useMemoArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMemoArray.d.ts","sourceRoot":"","sources":["../../../src/useMemoArray.tsx"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC,EAAE,GAC7C,CAAC,EAAE,CAoCL"}
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.2.6",
4
+ "version": "7.3.0",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "react-navigation",
@@ -42,10 +42,11 @@
42
42
  "clean": "del lib"
43
43
  },
44
44
  "dependencies": {
45
- "@react-navigation/core": "^7.18.0",
45
+ "@react-navigation/core": "^7.19.0",
46
46
  "escape-string-regexp": "^4.0.0",
47
47
  "fast-deep-equal": "^3.1.3",
48
48
  "nanoid": "^3.3.11",
49
+ "standard-navigation": "^0.0.7",
49
50
  "use-latest-callback": "^0.2.4"
50
51
  },
51
52
  "devDependencies": {
@@ -57,7 +58,7 @@
57
58
  "react": "19.1.0",
58
59
  "react-dom": "19.1.0",
59
60
  "react-native": "0.81.5",
60
- "react-native-builder-bob": "^0.40.17",
61
+ "react-native-builder-bob": "^0.42.1",
61
62
  "react-test-renderer": "19.1.0",
62
63
  "typescript": "^5.9.2"
63
64
  },
@@ -83,5 +84,5 @@
83
84
  ]
84
85
  ]
85
86
  },
86
- "gitHead": "a1039139c8dfc1fdf7ceef96640eaa6ee9c4a411"
87
+ "gitHead": "dd325d641ccae08a61fd25710270abb85865482f"
87
88
  }
@@ -0,0 +1,294 @@
1
+ import {
2
+ CommonActions,
3
+ createNavigatorFactory,
4
+ createScreenFactory,
5
+ type DefaultNavigatorOptions,
6
+ type DefaultRouterOptions,
7
+ type EventMapBase,
8
+ type NavigationAction,
9
+ type NavigationProp,
10
+ type NavigatorTypeBagBase,
11
+ type ParamListBase,
12
+ type RouterFactory,
13
+ type StaticConfig,
14
+ type StaticParamList,
15
+ type StaticScreenFactory,
16
+ type TypedNavigator,
17
+ useNavigationBuilder,
18
+ } from '@react-navigation/core';
19
+ import * as React from 'react';
20
+ import type {
21
+ createStandardNavigator,
22
+ NavigatorArgs as StandardNavigationArgs,
23
+ } from 'standard-navigation';
24
+
25
+ import { useBuildHref } from './useLinkBuilder';
26
+ import { useMemoArray } from './useMemoArray';
27
+
28
+ type StandardEventMap<EventMap extends EventMapBase> = {
29
+ [EventName in keyof EventMap]: {
30
+ data: EventMap[EventName] extends { data?: infer Data }
31
+ ? Data extends object | undefined
32
+ ? Data
33
+ : object | undefined
34
+ : undefined;
35
+ canPreventDefault: EventMap[EventName] extends { canPreventDefault: true }
36
+ ? true
37
+ : false;
38
+ };
39
+ };
40
+
41
+ type ActionHelpersOf<T> =
42
+ T extends Record<string, (...args: never[]) => unknown> ? T : {};
43
+
44
+ type StandardNavigationNavigatorProps<
45
+ TypeBag extends StandardNavigationTypeBagBase,
46
+ > = TypeBag['RouterOptions'] &
47
+ DefaultNavigatorOptions<
48
+ ParamListBase,
49
+ string | undefined,
50
+ StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'],
51
+ TypeBag['ScreenOptions'],
52
+ TypeBag['EventMap'],
53
+ StandardNavigation<TypeBag>
54
+ >;
55
+
56
+ type StandardNavigationTypeBagFor<
57
+ TypeBag extends StandardNavigationTypeBagBase,
58
+ ParamList extends ParamListBase,
59
+ NavigatorID extends string | undefined = string | undefined,
60
+ > = TypeBag & {
61
+ ParamList: ParamList;
62
+ NavigatorID: NavigatorID;
63
+ };
64
+
65
+ type StandardNavigation<TypeBag extends StandardNavigationTypeBagBase> =
66
+ StandardNavigationTypeBagFor<
67
+ TypeBag,
68
+ ParamListBase
69
+ >['NavigationList'][keyof StandardNavigationTypeBagFor<
70
+ TypeBag,
71
+ ParamListBase
72
+ >['NavigationList']];
73
+
74
+ type StandardNavigationPropsMapper<
75
+ TypeBag extends StandardNavigationTypeBagBase,
76
+ NavigatorProps extends object,
77
+ > = (props: {
78
+ state: StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'];
79
+ navigation: StandardNavigation<TypeBag>;
80
+ }) => Partial<NavigatorProps>;
81
+
82
+ type StandardNavigationDefaultBag<
83
+ TypeBag extends StandardNavigationTypeBagBase,
84
+ > = StandardNavigationTypeBagFor<TypeBag, ParamListBase, string | undefined>;
85
+
86
+ type StandardNavigationFactories<
87
+ TypeBag extends StandardNavigationTypeBagBase,
88
+ > = {
89
+ createNavigator: StandardNavigationCreateNavigator<TypeBag>;
90
+ createScreen: StaticScreenFactory<StandardNavigationDefaultBag<TypeBag>>;
91
+ };
92
+
93
+ export type StandardNavigationCreateNavigator<
94
+ TypeBag extends StandardNavigationTypeBagBase,
95
+ > = {
96
+ <
97
+ const ParamList extends ParamListBase,
98
+ const NavigatorID extends string | undefined = string | undefined,
99
+ >(): TypedNavigator<
100
+ StandardNavigationTypeBagFor<TypeBag, ParamList, NavigatorID>,
101
+ undefined
102
+ >;
103
+ <const Config extends StaticConfig<StandardNavigationDefaultBag<TypeBag>>>(
104
+ config: Config & StaticConfig<StandardNavigationDefaultBag<TypeBag>>
105
+ ): TypedNavigator<
106
+ StandardNavigationTypeBagFor<
107
+ TypeBag,
108
+ StaticParamList<{ config: Config }> & ParamListBase,
109
+ string | undefined
110
+ >,
111
+ Config
112
+ >;
113
+ };
114
+
115
+ export interface StandardNavigationTypeBagBase extends NavigatorTypeBagBase {
116
+ ActionHelpers: {};
117
+ ScreenOptions: {};
118
+ EventMap: EventMapBase;
119
+ RouterOptions: DefaultRouterOptions;
120
+ NavigationList: {
121
+ [RouteName in keyof this['ParamList']]: NavigationProp<
122
+ this['ParamList'],
123
+ RouteName,
124
+ this['NavigatorID'],
125
+ this['State'],
126
+ this['ScreenOptions'],
127
+ this['EventMap']
128
+ > &
129
+ ActionHelpersOf<this['ActionHelpers']>;
130
+ };
131
+ Navigator: React.ComponentType<{}>;
132
+ }
133
+
134
+ export function createStandardNavigationFactories<
135
+ TypeBag extends StandardNavigationTypeBagBase,
136
+ NavigatorProps extends object = {},
137
+ >(
138
+ navigator: ReturnType<
139
+ typeof createStandardNavigator<
140
+ TypeBag['ScreenOptions'],
141
+ StandardEventMap<TypeBag['EventMap']>,
142
+ NavigatorProps
143
+ >
144
+ >,
145
+ router: RouterFactory<
146
+ StandardNavigationTypeBagFor<TypeBag, ParamListBase>['State'],
147
+ NavigationAction,
148
+ TypeBag['RouterOptions']
149
+ >,
150
+ mapper?: StandardNavigationPropsMapper<TypeBag, NavigatorProps>
151
+ ): StandardNavigationFactories<TypeBag> {
152
+ const { type, version, NavigatorContent } = navigator;
153
+
154
+ if (type !== 'standard') {
155
+ throw new Error(
156
+ `createStandardNavigationFactories only works with standard navigator objects, but got navigator of ${typeof type === 'string' ? `type "${type}".` : 'unknown type.'}`
157
+ );
158
+ }
159
+
160
+ if (version !== 1) {
161
+ throw new Error(
162
+ `createStandardNavigationFactories only works with version 1 of standard navigator objects, but got version ${version}.`
163
+ );
164
+ }
165
+
166
+ type Bag = StandardNavigationTypeBagFor<TypeBag, ParamListBase>;
167
+ type StandardArgs = StandardNavigationArgs<
168
+ TypeBag['ScreenOptions'],
169
+ StandardEventMap<TypeBag['EventMap']>
170
+ >;
171
+
172
+ function StandardNavigationNavigator(
173
+ props: StandardNavigationNavigatorProps<TypeBag>
174
+ ) {
175
+ const builder = useNavigationBuilder<
176
+ Bag['State'],
177
+ TypeBag['RouterOptions'],
178
+ ActionHelpersOf<Bag['ActionHelpers']>,
179
+ TypeBag['ScreenOptions'],
180
+ TypeBag['EventMap']
181
+ >(router, props);
182
+
183
+ const buildHref = useBuildHref();
184
+
185
+ const routes = useMemoArray(
186
+ ('preloadedRoutes' in builder.state &&
187
+ Array.isArray(builder.state.preloadedRoutes)
188
+ ? builder.state.routes.concat(builder.state.preloadedRoutes)
189
+ : builder.state.routes
190
+ ).map((route) => {
191
+ const href = buildHref(route.name, route.params);
192
+
193
+ return [
194
+ {
195
+ key: route.key,
196
+ name: route.name,
197
+ params: route.params,
198
+ href,
199
+ },
200
+ [route.key, route.name, route.params, href],
201
+ ];
202
+ })
203
+ );
204
+
205
+ const state = React.useMemo(
206
+ (): StandardArgs['state'] => ({
207
+ index: builder.state.index,
208
+ routes,
209
+ }),
210
+ [builder.state.index, routes]
211
+ );
212
+
213
+ const descriptors: StandardArgs['descriptors'] = {};
214
+
215
+ for (const route of state.routes) {
216
+ const descriptor =
217
+ builder.descriptors[route.key] ?? builder.describe(route, true);
218
+
219
+ descriptors[route.key] = {
220
+ options: descriptor.options,
221
+ render: descriptor.render,
222
+ };
223
+ }
224
+
225
+ const actions = React.useMemo<StandardArgs['actions']>(
226
+ () => ({
227
+ navigate(name, params) {
228
+ builder.navigation.dispatch({
229
+ ...CommonActions.navigate(name, params),
230
+ target: builder.state.key,
231
+ });
232
+ },
233
+ back() {
234
+ builder.navigation.goBack();
235
+ },
236
+ }),
237
+ [builder.navigation, builder.state.key]
238
+ );
239
+
240
+ const emitter = React.useMemo<StandardArgs['emitter']>(
241
+ () => ({
242
+ // @ts-expect-error - they are compatible
243
+ emit: builder.navigation.emit,
244
+ }),
245
+ [builder.navigation]
246
+ );
247
+
248
+ const mapped = mapper?.({
249
+ state: builder.state,
250
+ navigation: builder.navigation as StandardNavigation<TypeBag>,
251
+ });
252
+
253
+ // Omit props used by useNavigationBuilder and routers internally
254
+ const {
255
+ /* eslint-disable @typescript-eslint/no-unused-vars */
256
+ children,
257
+ id,
258
+ initialRouteName,
259
+ layout,
260
+ screenLayout,
261
+ screenListeners,
262
+ screenOptions,
263
+ UNSTABLE_routeNamesChangeBehavior,
264
+ UNSTABLE_router,
265
+ /* eslint-enable @typescript-eslint/no-unused-vars */
266
+ ...rest
267
+ } = props;
268
+
269
+ return (
270
+ <builder.NavigationContent>
271
+ <NavigatorContent
272
+ {...(rest as NavigatorProps)}
273
+ {...mapped}
274
+ state={state}
275
+ descriptors={descriptors}
276
+ actions={actions}
277
+ emitter={emitter}
278
+ />
279
+ </builder.NavigationContent>
280
+ );
281
+ }
282
+
283
+ const createNavigator = createNavigatorFactory(
284
+ StandardNavigationNavigator
285
+ ) as StandardNavigationCreateNavigator<TypeBag>;
286
+
287
+ const createScreen =
288
+ createScreenFactory<StandardNavigationDefaultBag<TypeBag>>();
289
+
290
+ return {
291
+ createNavigator,
292
+ createScreen,
293
+ };
294
+ }
package/src/index.tsx CHANGED
@@ -1,3 +1,8 @@
1
+ export {
2
+ createStandardNavigationFactories,
3
+ type StandardNavigationCreateNavigator,
4
+ type StandardNavigationTypeBagBase,
5
+ } from './createStandardNavigationFactories';
1
6
  export { createStaticNavigation } from './createStaticNavigation';
2
7
  export { Link } from './Link';
3
8
  export { LinkingContext } from './LinkingContext';
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+
3
+ export function useMemoArray<T>(
4
+ entries: [item: T, deps: readonly unknown[]][]
5
+ ): T[] {
6
+ const previousRef = React.useRef<
7
+ | {
8
+ entries: { item: T; deps: readonly unknown[] }[];
9
+ items: T[];
10
+ }
11
+ | undefined
12
+ >(undefined);
13
+
14
+ const previous = previousRef.current;
15
+ const next = entries.map(([item, deps], index) => {
16
+ const previousEntry = previous?.entries[index];
17
+ const depsEqual =
18
+ previousEntry &&
19
+ previousEntry.deps.length === deps.length &&
20
+ previousEntry.deps.every((it, index) => Object.is(it, deps[index]));
21
+
22
+ return depsEqual ? previousEntry : { item, deps };
23
+ });
24
+
25
+ if (
26
+ previous &&
27
+ previous.entries.length === next.length &&
28
+ next.every((entry, index) => entry === previous.entries[index])
29
+ ) {
30
+ return previous.items;
31
+ }
32
+
33
+ const items = next.map((entry) => entry.item);
34
+
35
+ previousRef.current = {
36
+ entries: next,
37
+ items,
38
+ };
39
+
40
+ return items;
41
+ }