@ankhorage/navigator 1.0.0 → 1.2.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.
- package/CHANGELOG.md +12 -0
- package/README.md +3 -2
- package/dist/definitions/NavigatorPlan.d.ts +11 -0
- package/dist/definitions/NavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/createNavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/createNavigatorPlan.js +29 -14
- package/dist/expo-router/createNavigatorPlan.js.map +1 -1
- package/dist/expo-router/resolveNavigatorConfig.d.ts +7 -0
- package/dist/expo-router/resolveNavigatorConfig.d.ts.map +1 -1
- package/dist/expo-router/resolveNavigatorConfig.js +16 -3
- package/dist/expo-router/resolveNavigatorConfig.js.map +1 -1
- package/dist/expo-router/resolveTabsNavigatorPlan.d.ts.map +1 -1
- package/dist/expo-router/resolveTabsNavigatorPlan.js +17 -4
- package/dist/expo-router/resolveTabsNavigatorPlan.js.map +1 -1
- package/dist/generation/generateNavigatorFiles.d.ts.map +1 -1
- package/dist/generation/generateNavigatorFiles.js +5 -15
- package/dist/generation/generateNavigatorFiles.js.map +1 -1
- package/dist/generation/generateTabsLayoutFile.d.ts +4 -0
- package/dist/generation/generateTabsLayoutFile.d.ts.map +1 -0
- package/dist/generation/generateTabsLayoutFile.js +137 -0
- package/dist/generation/generateTabsLayoutFile.js.map +1 -0
- package/dist/generation/generationSafety.d.ts +6 -0
- package/dist/generation/generationSafety.d.ts.map +1 -0
- package/dist/generation/generationSafety.js +18 -0
- package/dist/generation/generationSafety.js.map +1 -0
- package/dist/metadata/index.d.ts +24 -2
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js +19 -2
- package/dist/metadata/index.js.map +1 -1
- package/dist/tabs/CustomTabsLayout.d.ts +39 -0
- package/dist/tabs/CustomTabsLayout.d.ts.map +1 -0
- package/dist/tabs/CustomTabsLayout.js +122 -0
- package/dist/tabs/CustomTabsLayout.js.map +1 -0
- package/dist/tabs/index.d.ts +3 -0
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/tabs/nativeIconFamilies.d.ts +16 -0
- package/dist/tabs/nativeIconFamilies.d.ts.map +1 -0
- package/dist/tabs/nativeIconFamilies.js +24 -0
- package/dist/tabs/nativeIconFamilies.js.map +1 -0
- package/dist/validation/validateExperimentalStack.d.ts +5 -0
- package/dist/validation/validateExperimentalStack.d.ts.map +1 -0
- package/dist/validation/validateExperimentalStack.js +81 -0
- package/dist/validation/validateExperimentalStack.js.map +1 -0
- package/dist/validation/validateNavigatorManifest.d.ts.map +1 -1
- package/dist/validation/validateNavigatorManifest.js +4 -44
- package/dist/validation/validateNavigatorManifest.js.map +1 -1
- package/dist/validation/validateTabsNavigator.d.ts +5 -0
- package/dist/validation/validateTabsNavigator.d.ts.map +1 -0
- package/dist/validation/validateTabsNavigator.js +140 -0
- package/dist/validation/validateTabsNavigator.js.map +1 -0
- package/package.json +34 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ankhorage/navigator
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8d4edc5: Add the gated Expo Router Experimental Stack adapter with strict option, version, Android mixing, predictive-back, and web-fallback diagnostics.
|
|
8
|
+
|
|
9
|
+
## 1.1.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 11f9f2e: Add native, JavaScript, and responsive Surface-owned headless Tabs generation.
|
|
14
|
+
|
|
3
15
|
## 1.0.0
|
|
4
16
|
|
|
5
17
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
# NAVIGATOR
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
|
-
Standalone
|
|
8
|
+
Standalone Navigator capability with topology configured independently from platform implementation and visual presentation. Adaptive tabs provide native and responsive web adapters; Experimental Stack stays testing-only, validates its narrow option surface, and uses the upstream web fallback.
|
|
9
9
|
|
|
10
10
|
## Generated documentation
|
|
11
11
|
|
|
@@ -15,5 +15,6 @@ Standalone manifest-driven navigator capability for Expo Router across React Nat
|
|
|
15
15
|
- [Architecture overview](././paradox/diagrams/architecture-overview.mmd)
|
|
16
16
|
- [Module relationships](././paradox/diagrams/module-relationships.mmd)
|
|
17
17
|
- [Export graph](././paradox/diagrams/export-graph.mmd)
|
|
18
|
+
- [CustomTabsLayout sequence](././paradox/diagrams/sequences/custom-tabs-layout.mmd)
|
|
18
19
|
- [resolveCustomTabsPresentation sequence](././paradox/diagrams/sequences/resolve-custom-tabs-presentation.mmd)
|
|
19
20
|
- [resolveTabsNavigatorPlan sequence](././paradox/diagrams/sequences/resolve-tabs-navigator-plan.mmd)
|
|
@@ -25,13 +25,22 @@ export interface NavigatorAdapterPlan {
|
|
|
25
25
|
}
|
|
26
26
|
export type ResolvedTabsImplementation = 'custom' | 'javascript' | 'native';
|
|
27
27
|
export type ResolvedTabsPresentation = 'bottom' | 'top' | 'rail' | 'sidebar' | 'custom';
|
|
28
|
+
/**
|
|
29
|
+
* Disposable adapter plan for a `tabs` topology.
|
|
30
|
+
*
|
|
31
|
+
* The implementation selects the Router runtime. Presentation only selects its visual chrome and
|
|
32
|
+
* never creates another route topology.
|
|
33
|
+
*/
|
|
28
34
|
export interface TabsNavigatorPlan {
|
|
29
35
|
implementation: ResolvedTabsImplementation;
|
|
30
36
|
module: ExpoRouterNavigatorModule;
|
|
31
37
|
exportName: string;
|
|
32
38
|
stability: NavigatorApiStability;
|
|
33
39
|
presentation?: ResolvedTabsPresentation;
|
|
40
|
+
presentations?: Readonly<Record<NavigatorResponsiveSize, ResolvedTabsPresentation>>;
|
|
34
41
|
customPresentationId?: string;
|
|
42
|
+
minimizeBehavior?: 'automatic' | 'never' | 'onScrollDown' | 'onScrollUp';
|
|
43
|
+
bottomAccessoryScreenId?: string;
|
|
35
44
|
}
|
|
36
45
|
export interface NavigatorRoutePlan {
|
|
37
46
|
name: string;
|
|
@@ -88,10 +97,12 @@ export interface NavigatorScreenModule {
|
|
|
88
97
|
export interface NavigatorGenerationBindings {
|
|
89
98
|
screens: Readonly<Record<string, NavigatorScreenModule>>;
|
|
90
99
|
guards: Readonly<Record<string, NavigatorScreenModule>>;
|
|
100
|
+
iconSourceResolver?: NavigatorScreenModule;
|
|
91
101
|
flows?: {
|
|
92
102
|
onboardingRoute?: string;
|
|
93
103
|
authenticationRoute?: string;
|
|
94
104
|
};
|
|
105
|
+
tabPresentations?: Readonly<Record<string, NavigatorScreenModule>>;
|
|
95
106
|
}
|
|
96
107
|
export interface NavigatorGeneratedFile {
|
|
97
108
|
path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AACjE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,yBAAyB,GACjC,aAAa,GACb,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,kCAAkC,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,cAAc,GACd,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,kBAAkB,CAAC;IACvB,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC;IAChC,SAAS,EAAE,qBAAqB,CAAC;IACjC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC5E,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExF,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,0BAA0B,CAAC;IAC3C,MAAM,EAAE,yBAAyB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,qBAAqB,CAAC;IACjC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAGV,aAAa,EACb,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,8BAA8B,CAAC;AAStC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C;
|
|
1
|
+
{"version":3,"file":"createNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAGV,aAAa,EACb,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,8BAA8B,CAAC;AAStC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAiQD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAmBf"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { validateNavigatorManifest } from '../validation/validateNavigatorManifest';
|
|
2
2
|
import { parseExpoRouterMajor, resolveEffectiveStackConfig, resolveEffectiveTabsConfig, } from './resolveNavigatorConfig';
|
|
3
3
|
import { resolveTabsNavigatorPlan } from './resolveTabsNavigatorPlan';
|
|
4
|
-
|
|
4
|
+
/*** Resolve a Stack implementation to its version- and platform-aware Expo Router adapter. */
|
|
5
|
+
function createStackAdapter(stack, platform, routerMajor) {
|
|
5
6
|
const implementation = stack?.implementation ?? 'native';
|
|
6
7
|
if (implementation === 'javascript') {
|
|
7
8
|
return {
|
|
@@ -16,9 +17,21 @@ function createStackAdapter(stack, routerMajor) {
|
|
|
16
17
|
if (implementation === 'experimental') {
|
|
17
18
|
return {
|
|
18
19
|
id: 'stack.experimental',
|
|
19
|
-
|
|
20
|
+
module: 'expo-router',
|
|
21
|
+
exportName: 'ExperimentalStack',
|
|
22
|
+
support: routerMajor !== undefined && routerMajor >= 56 ? 'supported' : 'unavailable',
|
|
20
23
|
stability: 'alpha',
|
|
21
|
-
limitations:
|
|
24
|
+
limitations: platform === 'web'
|
|
25
|
+
? ['Testing-only API; Expo Router falls back to the standard Stack on web.']
|
|
26
|
+
: [
|
|
27
|
+
'Testing-only API; supports only title and header visibility options.',
|
|
28
|
+
...(platform === 'android'
|
|
29
|
+
? [
|
|
30
|
+
'Cannot coexist with the standard native Stack on Android.',
|
|
31
|
+
'Requires android.predictiveBackGestureEnabled in app config.',
|
|
32
|
+
]
|
|
33
|
+
: []),
|
|
34
|
+
],
|
|
22
35
|
};
|
|
23
36
|
}
|
|
24
37
|
return {
|
|
@@ -30,22 +43,24 @@ function createStackAdapter(stack, routerMajor) {
|
|
|
30
43
|
limitations: [],
|
|
31
44
|
};
|
|
32
45
|
}
|
|
33
|
-
function createTabsAdapter(tabs) {
|
|
46
|
+
function createTabsAdapter(tabs, platform, routerMajor) {
|
|
47
|
+
const nativeUnavailable = tabs.implementation === 'native' &&
|
|
48
|
+
(platform === 'web' || routerMajor === undefined || routerMajor < 54);
|
|
49
|
+
const customUnavailable = tabs.implementation === 'custom' && platform !== 'web';
|
|
34
50
|
return {
|
|
35
51
|
id: `tabs.${tabs.implementation}`,
|
|
36
52
|
module: tabs.module,
|
|
37
53
|
exportName: tabs.exportName,
|
|
38
|
-
support: 'unavailable',
|
|
54
|
+
support: nativeUnavailable || customUnavailable ? 'unavailable' : 'supported',
|
|
39
55
|
stability: tabs.stability,
|
|
40
56
|
limitations: tabs.implementation === 'native'
|
|
41
|
-
? [
|
|
42
|
-
|
|
43
|
-
'
|
|
44
|
-
|
|
45
|
-
: ['Owned by the optional Tabs adapter.'],
|
|
57
|
+
? ['Alpha API; unavailable on web and requires Expo Router 54.0.0 or newer.']
|
|
58
|
+
: tabs.implementation === 'custom'
|
|
59
|
+
? ['Web-only Surface presentation over Expo Router headless tabs.']
|
|
60
|
+
: [],
|
|
46
61
|
};
|
|
47
62
|
}
|
|
48
|
-
function createAdapter(node, stack, tabs, routerMajor) {
|
|
63
|
+
function createAdapter(node, stack, tabs, platform, routerMajor) {
|
|
49
64
|
switch (node.type) {
|
|
50
65
|
case 'slot':
|
|
51
66
|
return {
|
|
@@ -57,7 +72,7 @@ function createAdapter(node, stack, tabs, routerMajor) {
|
|
|
57
72
|
limitations: [],
|
|
58
73
|
};
|
|
59
74
|
case 'stack':
|
|
60
|
-
return createStackAdapter(stack, routerMajor);
|
|
75
|
+
return createStackAdapter(stack, platform, routerMajor);
|
|
61
76
|
case 'drawer':
|
|
62
77
|
return {
|
|
63
78
|
id: 'drawer',
|
|
@@ -70,7 +85,7 @@ function createAdapter(node, stack, tabs, routerMajor) {
|
|
|
70
85
|
case 'tabs':
|
|
71
86
|
if (tabs === undefined)
|
|
72
87
|
throw new Error('Tabs planning did not resolve an adapter.');
|
|
73
|
-
return createTabsAdapter(tabs);
|
|
88
|
+
return createTabsAdapter(tabs, platform, routerMajor);
|
|
74
89
|
case 'split-view':
|
|
75
90
|
return {
|
|
76
91
|
id: 'split-view',
|
|
@@ -167,7 +182,7 @@ function createNodePlan(manifest, node, pointer, options, responsiveSize) {
|
|
|
167
182
|
return {
|
|
168
183
|
type: node.type,
|
|
169
184
|
pointer,
|
|
170
|
-
adapter: createAdapter(node, stack, tabs, parseExpoRouterMajor(options.expoRouterVersion)),
|
|
185
|
+
adapter: createAdapter(node, stack, tabs, options.platform, parseExpoRouterMajor(options.expoRouterVersion)),
|
|
171
186
|
...(node.initialRouteName === undefined ? {} : { initialRouteName: node.initialRouteName }),
|
|
172
187
|
routes,
|
|
173
188
|
...createNodeDetails(node, stack, tabs),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAQtE,SAAS,kBAAkB,CACzB,KAA4C,EAC5C,WAA+B;IAE/B,MAAM,cAAc,GAAG,KAAK,EAAE,cAAc,IAAI,QAAQ,CAAC;IACzD,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,kBAAkB;YACtB,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;YACrF,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,CAAC,uCAAuC,CAAC;SACvD,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,oBAAoB;YACxB,OAAO,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"createNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import type { AppNavigatorManifest, StackImplementationConfig, StackNavigatorNode, TabsImplementationConfig, TabsNavigatorNode } from '@ankhorage/contracts/navigator';
|
|
2
2
|
import type { NavigatorRuntimePlatform } from '../definitions/NavigatorPlan';
|
|
3
|
+
export interface ResolvedStackConfigSource {
|
|
4
|
+
config: StackImplementationConfig;
|
|
5
|
+
pointer: string;
|
|
6
|
+
}
|
|
3
7
|
export declare function parseExpoRouterMajor(version: string): number | undefined;
|
|
8
|
+
/*** Resolve effective Stack configuration using platform, node, default, and stable precedence. */
|
|
4
9
|
export declare function resolveEffectiveStackConfig(manifest: AppNavigatorManifest, node: StackNavigatorNode, platform: NavigatorRuntimePlatform): StackImplementationConfig;
|
|
10
|
+
/*** Resolve effective Stack configuration together with its authored diagnostic location. */
|
|
11
|
+
export declare function resolveEffectiveStackConfigSource(manifest: AppNavigatorManifest, node: StackNavigatorNode, platform: NavigatorRuntimePlatform, nodePointer: string): ResolvedStackConfigSource;
|
|
5
12
|
export declare function resolveEffectiveTabsConfig(manifest: AppNavigatorManifest, node: TabsNavigatorNode, platform: NavigatorRuntimePlatform): TabsImplementationConfig | undefined;
|
|
6
13
|
//# sourceMappingURL=resolveNavigatorConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveNavigatorConfig.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveNavigatorConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxE;AA2CD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,wBAAwB,GACjC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"resolveNavigatorConfig.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveNavigatorConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxE;AA2CD,mGAAmG;AACnG,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,wBAAwB,GACjC,yBAAyB,CAE3B;AAED,6FAA6F;AAC7F,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,MAAM,GAClB,yBAAyB,CAY3B;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,wBAAwB,GACjC,wBAAwB,GAAG,SAAS,CAMtC"}
|
|
@@ -35,10 +35,23 @@ function resolvePlatformTabsConfig(platforms, platform) {
|
|
|
35
35
|
return platforms?.web?.tabs;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
/*** Resolve effective Stack configuration using platform, node, default, and stable precedence. */
|
|
38
39
|
export function resolveEffectiveStackConfig(manifest, node, platform) {
|
|
39
|
-
return (
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
return resolveEffectiveStackConfigSource(manifest, node, platform, '').config;
|
|
41
|
+
}
|
|
42
|
+
/*** Resolve effective Stack configuration together with its authored diagnostic location. */
|
|
43
|
+
export function resolveEffectiveStackConfigSource(manifest, node, platform, nodePointer) {
|
|
44
|
+
const platformConfig = resolvePlatformStackConfig(manifest.platforms, platform);
|
|
45
|
+
if (platformConfig !== undefined) {
|
|
46
|
+
return { config: platformConfig, pointer: `/platforms/${platform}/stack` };
|
|
47
|
+
}
|
|
48
|
+
const nodeConfig = resolveNodeStackConfig(node);
|
|
49
|
+
if (nodeConfig !== undefined)
|
|
50
|
+
return { config: nodeConfig, pointer: nodePointer };
|
|
51
|
+
if (manifest.defaults?.stack !== undefined) {
|
|
52
|
+
return { config: manifest.defaults.stack, pointer: '/defaults/stack' };
|
|
53
|
+
}
|
|
54
|
+
return { config: { implementation: 'native' }, pointer: nodePointer };
|
|
42
55
|
}
|
|
43
56
|
export function resolveEffectiveTabsConfig(manifest, node, platform) {
|
|
44
57
|
return (resolvePlatformTabsConfig(manifest.platforms, platform) ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveNavigatorConfig.js","sourceRoot":"","sources":["../../src/expo-router/resolveNavigatorConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveNavigatorConfig.js","sourceRoot":"","sources":["../../src/expo-router/resolveNavigatorConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTabsNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveTabsNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAsFtC,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,QAAQ,EAAE,wBAAwB,EAClC,IAAI,EAAE,uBAAuB,GAC5B,iBAAiB,CAcnB"}
|
|
@@ -11,7 +11,7 @@ function resolveAdaptiveConfig(config) {
|
|
|
11
11
|
: undefined;
|
|
12
12
|
}
|
|
13
13
|
/*** Create the alpha native-tabs plan and reject unsupported Web usage. */
|
|
14
|
-
function createNativeTabsPlan(platform) {
|
|
14
|
+
function createNativeTabsPlan(platform, config) {
|
|
15
15
|
if (platform === 'web') {
|
|
16
16
|
throw new Error('Native tabs are not available for the Web navigator plan.');
|
|
17
17
|
}
|
|
@@ -20,6 +20,12 @@ function createNativeTabsPlan(platform) {
|
|
|
20
20
|
module: 'expo-router/unstable-native-tabs',
|
|
21
21
|
exportName: 'NativeTabs',
|
|
22
22
|
stability: 'alpha',
|
|
23
|
+
...(config?.minimizeBehavior === undefined
|
|
24
|
+
? {}
|
|
25
|
+
: { minimizeBehavior: config.minimizeBehavior }),
|
|
26
|
+
...(config?.bottomAccessory === undefined
|
|
27
|
+
? {}
|
|
28
|
+
: { bottomAccessoryScreenId: config.bottomAccessory.screenId }),
|
|
23
29
|
};
|
|
24
30
|
}
|
|
25
31
|
/*** Create the stable JavaScript tabs plan for bottom or top presentation. */
|
|
@@ -35,18 +41,25 @@ function createJavaScriptTabsPlan(config) {
|
|
|
35
41
|
}
|
|
36
42
|
/*** Create the stable headless custom-tabs plan for Web or explicit custom use. */
|
|
37
43
|
function createCustomTabsPlan(config, size) {
|
|
44
|
+
const resolved = resolveCustomTabsPresentation(config, size);
|
|
45
|
+
const presentations = {
|
|
46
|
+
compact: resolveCustomTabsPresentation(config, 'compact').presentation,
|
|
47
|
+
medium: resolveCustomTabsPresentation(config, 'medium').presentation,
|
|
48
|
+
expanded: resolveCustomTabsPresentation(config, 'expanded').presentation,
|
|
49
|
+
};
|
|
38
50
|
return {
|
|
39
51
|
implementation: 'custom',
|
|
40
52
|
module: 'expo-router/ui',
|
|
41
53
|
exportName: 'Tabs',
|
|
42
54
|
stability: 'stable',
|
|
43
|
-
...
|
|
55
|
+
...resolved,
|
|
56
|
+
presentations,
|
|
44
57
|
};
|
|
45
58
|
}
|
|
46
59
|
/*** Resolve the adaptive tabs plan for the selected runtime platform. */
|
|
47
60
|
function createAdaptiveTabsPlan(config, platform, size) {
|
|
48
61
|
if (platform !== 'web')
|
|
49
|
-
return createNativeTabsPlan(platform);
|
|
62
|
+
return createNativeTabsPlan(platform, resolveAdaptiveConfig(config)?.native);
|
|
50
63
|
return createCustomTabsPlan(resolveAdaptiveConfig(config)?.web ?? DEFAULT_WEB_CUSTOM_TABS, size);
|
|
51
64
|
}
|
|
52
65
|
/*** Resolve the Expo Router module/export and presentation for one tabs implementation. */
|
|
@@ -58,7 +71,7 @@ export function resolveTabsNavigatorPlan(config, platform, size) {
|
|
|
58
71
|
case 'adaptive':
|
|
59
72
|
return createAdaptiveTabsPlan(config, platform, size);
|
|
60
73
|
case 'native':
|
|
61
|
-
return createNativeTabsPlan(platform);
|
|
74
|
+
return createNativeTabsPlan(platform, config);
|
|
62
75
|
case 'javascript':
|
|
63
76
|
return createJavaScriptTabsPlan(config);
|
|
64
77
|
case 'custom':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveTabsNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAE9F,MAAM,uBAAuB,GAAG;IAC9B,YAAY,EAAE,YAAY;CAClB,CAAC;AAEX,mFAAmF;AACnF,SAAS,qBAAqB,CAC5B,MAA4C;IAE5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU;QAChF,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,2EAA2E;AAC3E,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"resolveTabsNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateNavigatorFiles.d.ts","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAE3B,aAAa,EAGd,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"generateNavigatorFiles.d.ts","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAE3B,aAAa,EAGd,MAAM,8BAA8B,CAAC;AAwMtC,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,2BAA2B,GACpC,SAAS,sBAAsB,EAAE,CAkBnC"}
|
|
@@ -1,20 +1,7 @@
|
|
|
1
1
|
const APP_DIRECTORY = 'src/app';
|
|
2
|
-
const SAFE_EXPORT_NAME = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
|
|
3
2
|
const SAFE_ROUTE_NAME = /^[A-Za-z0-9_.()[\]-]+$/u;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (!SAFE_MODULE.test(binding.module) ||
|
|
7
|
-
binding.module.includes('\\') ||
|
|
8
|
-
binding.module.split('/').slice(1).includes('..')) {
|
|
9
|
-
throw new Error(`${description} has an unsafe module specifier.`);
|
|
10
|
-
}
|
|
11
|
-
if (!SAFE_EXPORT_NAME.test(binding.exportName)) {
|
|
12
|
-
throw new Error(`${description} has an invalid exported symbol.`);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function quote(value) {
|
|
16
|
-
return JSON.stringify(value);
|
|
17
|
-
}
|
|
3
|
+
import { generateTabsLayoutFile } from './generateTabsLayoutFile';
|
|
4
|
+
import { assertModuleBinding, quote } from './generationSafety';
|
|
18
5
|
function assertRouteName(name) {
|
|
19
6
|
if (!SAFE_ROUTE_NAME.test(name) || name === '.' || name === '..') {
|
|
20
7
|
throw new Error(`Route name ${JSON.stringify(name)} is not a safe generated file segment.`);
|
|
@@ -91,6 +78,9 @@ function createLayoutFile(node, directory, bindings) {
|
|
|
91
78
|
node.adapter.exportName === undefined) {
|
|
92
79
|
throw new Error(`Cannot generate unavailable navigator adapter ${JSON.stringify(node.adapter.id)} at ${node.pointer || '/'}.`);
|
|
93
80
|
}
|
|
81
|
+
const tabsLayout = generateTabsLayoutFile(node, directory, bindings);
|
|
82
|
+
if (tabsLayout !== undefined)
|
|
83
|
+
return tabsLayout;
|
|
94
84
|
const componentName = node.adapter.exportName;
|
|
95
85
|
assertModuleBinding({ module: node.adapter.module, exportName: componentName }, `Adapter ${JSON.stringify(node.adapter.id)}`);
|
|
96
86
|
const guardAliases = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateNavigatorFiles.js","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"AASA,MAAM,aAAa,GAAG,SAAS,CAAC;AAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"generateNavigatorFiles.js","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigatorGeneratedFile, NavigatorGenerationBindings, NavigatorNodePlan } from '../definitions/NavigatorPlan';
|
|
2
|
+
/*** Generate the specialized layout file for a supported tabs implementation. */
|
|
3
|
+
export declare function generateTabsLayoutFile(node: NavigatorNodePlan, directory: string, bindings: NavigatorGenerationBindings): NavigatorGeneratedFile | undefined;
|
|
4
|
+
//# sourceMappingURL=generateTabsLayoutFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTabsLayoutFile.d.ts","sourceRoot":"","sources":["../../src/generation/generateTabsLayoutFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EAGlB,MAAM,8BAA8B,CAAC;AAoKtC,iFAAiF;AACjF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,2BAA2B,GACpC,sBAAsB,GAAG,SAAS,CASpC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { assertModuleBinding, quote } from './generationSafety';
|
|
2
|
+
/*** Resolve and validate the native vector-icon provider for one planned route icon. */
|
|
3
|
+
function nativeIconProvider(icon) {
|
|
4
|
+
if (icon === undefined || 'source' in icon) {
|
|
5
|
+
throw new Error('Native Tabs require a supported named icon.');
|
|
6
|
+
}
|
|
7
|
+
const provider = icon.provider ?? 'Ionicons';
|
|
8
|
+
switch (provider) {
|
|
9
|
+
case 'FontAwesome':
|
|
10
|
+
case 'FontAwesome5':
|
|
11
|
+
case 'FontAwesome6':
|
|
12
|
+
case 'Ionicons':
|
|
13
|
+
case 'MaterialDesignIcons':
|
|
14
|
+
return provider;
|
|
15
|
+
default:
|
|
16
|
+
throw new Error(`Native Tabs icon provider ${JSON.stringify(provider)} is unsupported.`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/*** Read the required native vector-icon name from one planned route icon. */
|
|
20
|
+
function nativeIconName(icon) {
|
|
21
|
+
if (icon === undefined || 'source' in icon) {
|
|
22
|
+
throw new Error('Native Tabs require a supported named icon.');
|
|
23
|
+
}
|
|
24
|
+
return icon.name;
|
|
25
|
+
}
|
|
26
|
+
/*** Map a supported provider to the Navigator-owned Native Tabs family export. */
|
|
27
|
+
function nativeIconFamily(provider) {
|
|
28
|
+
switch (provider) {
|
|
29
|
+
case 'FontAwesome':
|
|
30
|
+
return 'NativeFontAwesomeFamily';
|
|
31
|
+
case 'FontAwesome5':
|
|
32
|
+
return 'NativeFontAwesome5Family';
|
|
33
|
+
case 'FontAwesome6':
|
|
34
|
+
return 'NativeFontAwesome6Family';
|
|
35
|
+
case 'Ionicons':
|
|
36
|
+
return 'NativeIoniconsFamily';
|
|
37
|
+
case 'MaterialDesignIcons':
|
|
38
|
+
return 'NativeMaterialDesignIconsFamily';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/*** Render a complete Native Tabs layout module from one validated node plan. */
|
|
42
|
+
function createNativeTabsContents(node, componentName, imports, accessoryName) {
|
|
43
|
+
const initialRoute = node.initialRouteName === undefined
|
|
44
|
+
? ''
|
|
45
|
+
: `\n\nexport const unstable_settings = { initialRouteName: ${quote(node.initialRouteName)} };`;
|
|
46
|
+
const minimize = node.tabs?.minimizeBehavior === undefined
|
|
47
|
+
? ''
|
|
48
|
+
: ` minimizeBehavior=${quote(node.tabs.minimizeBehavior)}`;
|
|
49
|
+
const triggers = node.routes
|
|
50
|
+
.map((route) => {
|
|
51
|
+
const label = route.label ?? route.name;
|
|
52
|
+
const icon = route.icon === undefined
|
|
53
|
+
? ''
|
|
54
|
+
: `\n <${componentName}.Trigger.Icon src={<${componentName}.Trigger.VectorIcon family={${nativeIconFamily(nativeIconProvider(route.icon))}} name=${quote(nativeIconName(route.icon))} />} />`;
|
|
55
|
+
return ` <${componentName}.Trigger name=${quote(route.name)}>\n <${componentName}.Trigger.Label>{${quote(label)}}</${componentName}.Trigger.Label>${icon}\n </${componentName}.Trigger>`;
|
|
56
|
+
})
|
|
57
|
+
.join('\n');
|
|
58
|
+
const accessory = accessoryName === undefined
|
|
59
|
+
? ''
|
|
60
|
+
: `\n <${componentName}.BottomAccessory>\n <${accessoryName} />\n </${componentName}.BottomAccessory>`;
|
|
61
|
+
return `${imports}${initialRoute}\n\nexport default function NavigatorLayout() {\n return (\n <${componentName}${minimize}>\n${triggers}${accessory}\n </${componentName}>\n );\n}\n`;
|
|
62
|
+
}
|
|
63
|
+
/*** Create the generated Native Tabs layout file and its narrow runtime imports. */
|
|
64
|
+
function createNativeTabsFile(node, directory, bindings) {
|
|
65
|
+
const componentName = node.adapter.exportName ?? 'NativeTabs';
|
|
66
|
+
const imports = [`import { ${componentName} } from ${quote(node.adapter.module ?? '')};`];
|
|
67
|
+
const iconFamilies = [
|
|
68
|
+
...new Set(node.routes.flatMap((route) => route.icon === undefined ? [] : [nativeIconFamily(nativeIconProvider(route.icon))])),
|
|
69
|
+
].sort();
|
|
70
|
+
if (iconFamilies.length > 0) {
|
|
71
|
+
imports.push(`import { ${iconFamilies.join(', ')} } from "@ankhorage/navigator/tabs/native-icons";`);
|
|
72
|
+
}
|
|
73
|
+
let accessoryName;
|
|
74
|
+
if (node.tabs?.bottomAccessoryScreenId !== undefined) {
|
|
75
|
+
const binding = Reflect.get(bindings.screens, node.tabs.bottomAccessoryScreenId);
|
|
76
|
+
if (binding === undefined)
|
|
77
|
+
throw new Error('Missing Native Tabs bottom-accessory binding.');
|
|
78
|
+
assertModuleBinding(binding, 'Native Tabs bottom accessory');
|
|
79
|
+
accessoryName = 'NavigatorBottomAccessory';
|
|
80
|
+
imports.push(`import { ${binding.exportName} as ${accessoryName} } from ${quote(binding.module)};`);
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
path: `${directory}/_layout.tsx`,
|
|
84
|
+
contents: createNativeTabsContents(node, componentName, imports.join('\n'), accessoryName),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/*** Create the generated Web custom-tabs layout file and registered integration imports. */
|
|
88
|
+
function createCustomTabsFile(node, directory, bindings) {
|
|
89
|
+
const { tabs } = node;
|
|
90
|
+
if (tabs?.presentations === undefined) {
|
|
91
|
+
throw new Error('Custom Tabs planning did not preserve responsive presentations.');
|
|
92
|
+
}
|
|
93
|
+
const imports = ['import { CustomTabsLayout } from "@ankhorage/navigator/tabs";'];
|
|
94
|
+
let customPresentation = '';
|
|
95
|
+
let iconSourceResolver = '';
|
|
96
|
+
if (tabs.customPresentationId !== undefined) {
|
|
97
|
+
const binding = Reflect.get(bindings.tabPresentations ?? {}, tabs.customPresentationId);
|
|
98
|
+
if (binding === undefined)
|
|
99
|
+
throw new Error('Missing registered custom Tabs presentation.');
|
|
100
|
+
assertModuleBinding(binding, 'Custom Tabs presentation');
|
|
101
|
+
customPresentation = ' customPresentation={NavigatorCustomTabsPresentation}';
|
|
102
|
+
imports.push(`import { ${binding.exportName} as NavigatorCustomTabsPresentation } from ${quote(binding.module)};`);
|
|
103
|
+
}
|
|
104
|
+
if (node.routes.some((route) => route.icon !== undefined && 'source' in route.icon)) {
|
|
105
|
+
const binding = bindings.iconSourceResolver;
|
|
106
|
+
if (binding === undefined)
|
|
107
|
+
throw new Error('Missing registered Tabs icon-source resolver.');
|
|
108
|
+
assertModuleBinding(binding, 'Tabs icon-source resolver');
|
|
109
|
+
iconSourceResolver = ' resolveIconSource={NavigatorResolveTabsIconSource}';
|
|
110
|
+
imports.push(`import { ${binding.exportName} as NavigatorResolveTabsIconSource } from ${quote(binding.module)};`);
|
|
111
|
+
}
|
|
112
|
+
const routes = node.routes.map((route) => ({
|
|
113
|
+
name: route.name,
|
|
114
|
+
href: route.path,
|
|
115
|
+
label: route.label ?? route.name,
|
|
116
|
+
...(route.icon === undefined ? {} : { icon: route.icon }),
|
|
117
|
+
visible: route.showInPrimaryNavigation !== false,
|
|
118
|
+
}));
|
|
119
|
+
const initialRoute = node.initialRouteName === undefined ? '' : ` initialRouteName=${quote(node.initialRouteName)}`;
|
|
120
|
+
return {
|
|
121
|
+
path: `${directory}/_layout.tsx`,
|
|
122
|
+
contents: `${imports.join('\n')}\n\nconst routes = ${JSON.stringify(routes)} as const;\nconst presentations = ${JSON.stringify(tabs.presentations)} as const;\n\nexport default function NavigatorLayout() {\n return <CustomTabsLayout${customPresentation}${initialRoute} presentations={presentations}${iconSourceResolver} routes={routes} />;\n}\n`,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/*** Generate the specialized layout file for a supported tabs implementation. */
|
|
126
|
+
export function generateTabsLayoutFile(node, directory, bindings) {
|
|
127
|
+
if (node.type !== 'tabs')
|
|
128
|
+
return undefined;
|
|
129
|
+
if (node.tabs?.implementation === 'native') {
|
|
130
|
+
return createNativeTabsFile(node, directory, bindings);
|
|
131
|
+
}
|
|
132
|
+
if (node.tabs?.implementation === 'custom') {
|
|
133
|
+
return createCustomTabsFile(node, directory, bindings);
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=generateTabsLayoutFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTabsLayoutFile.js","sourceRoot":"","sources":["../../src/generation/generateTabsLayoutFile.ts"],"names":[],"mappings":"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"}
|