@ankhorage/studio 2.0.26 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/app/workspace/WorkspacePrimitives.d.ts +1 -0
- package/dist/app/workspace/WorkspacePrimitives.d.ts.map +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts +3 -3
- package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts.map +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js +18 -7
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -1
- package/dist/host/layout/layoutGenerator.d.ts +0 -4
- package/dist/host/layout/layoutGenerator.d.ts.map +1 -1
- package/dist/host/layout/layoutGenerator.js +36 -110
- package/dist/host/layout/layoutGenerator.js.map +1 -1
- package/dist/host/layout/navigator/createNavigatorGenerationBindings.d.ts +20 -0
- package/dist/host/layout/navigator/createNavigatorGenerationBindings.d.ts.map +1 -0
- package/dist/host/layout/navigator/createNavigatorGenerationBindings.js +183 -0
- package/dist/host/layout/navigator/createNavigatorGenerationBindings.js.map +1 -0
- package/dist/host/layout/navigator/generateNavigatorLayoutFiles.d.ts +17 -0
- package/dist/host/layout/navigator/generateNavigatorLayoutFiles.d.ts.map +1 -0
- package/dist/host/layout/navigator/generateNavigatorLayoutFiles.js +107 -0
- package/dist/host/layout/navigator/generateNavigatorLayoutFiles.js.map +1 -0
- package/dist/host/layout/templates/index.d.ts +1 -3
- package/dist/host/layout/templates/index.d.ts.map +1 -1
- package/dist/host/layout/templates/index.js +0 -2
- package/dist/host/layout/templates/index.js.map +1 -1
- package/dist/host/layout/templates/rootLayout.d.ts +6 -2
- package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
- package/dist/host/layout/templates/rootLayout.js +5 -5
- package/dist/host/layout/templates/rootLayout.js.map +1 -1
- package/dist/host/layout/templates/utils/strings.d.ts +0 -5
- package/dist/host/layout/templates/utils/strings.d.ts.map +1 -1
- package/dist/host/layout/templates/utils/strings.js +0 -7
- package/dist/host/layout/templates/utils/strings.js.map +1 -1
- package/dist/host/orchestrator/GeneratedRouteFileOwnership.d.ts.map +1 -1
- package/dist/host/orchestrator/GeneratedRouteFileOwnership.js +8 -1
- package/dist/host/orchestrator/GeneratedRouteFileOwnership.js.map +1 -1
- package/dist/host/orchestrator/templates.d.ts +4 -0
- package/dist/host/orchestrator/templates.d.ts.map +1 -1
- package/dist/host/orchestrator/templates.js +7 -1
- package/dist/host/orchestrator/templates.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/manifestState.d.ts +5 -5
- package/dist/manifestState.d.ts.map +1 -1
- package/dist/manifestState.js +41 -4
- package/dist/manifestState.js.map +1 -1
- package/dist/routeUtils.d.ts +2 -2
- package/package.json +13 -12
- package/dist/host/layout/templates/navigation.d.ts +0 -19
- package/dist/host/layout/templates/navigation.d.ts.map +0 -1
- package/dist/host/layout/templates/navigation.js +0 -392
- package/dist/host/layout/templates/navigation.js.map +0 -1
- package/dist/host/layout/templates/nestedLayout.d.ts +0 -8
- package/dist/host/layout/templates/nestedLayout.d.ts.map +0 -1
- package/dist/host/layout/templates/nestedLayout.js +0 -63
- package/dist/host/layout/templates/nestedLayout.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Studio authoring package for Ankhorage apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/studio#readme",
|
|
@@ -212,13 +212,14 @@
|
|
|
212
212
|
],
|
|
213
213
|
"dependencies": {
|
|
214
214
|
"@ankhorage/color-theory": "^0.3.0",
|
|
215
|
-
"@ankhorage/contracts": "^
|
|
215
|
+
"@ankhorage/contracts": "^11.0.0",
|
|
216
216
|
"@ankhorage/data-sources": "^2.0.0",
|
|
217
217
|
"@ankhorage/deploy": "^0.12.0",
|
|
218
|
-
"@ankhorage/expo-runtime": "^3.2.
|
|
218
|
+
"@ankhorage/expo-runtime": "^3.2.12",
|
|
219
219
|
"@ankhorage/infra": "^4.1.6",
|
|
220
|
+
"@ankhorage/navigator": "^1.5.2",
|
|
220
221
|
"@ankhorage/orchestrator": "^0.3.1",
|
|
221
|
-
"@ankhorage/orchestrator-module-expo-google-fonts": "^0.2.
|
|
222
|
+
"@ankhorage/orchestrator-module-expo-google-fonts": "^0.2.4",
|
|
222
223
|
"@ankhorage/orchestrator-module-expo-localization": "^0.6.0",
|
|
223
224
|
"@ankhorage/permissions": "^0.2.3",
|
|
224
225
|
"@ankhorage/react-native-reanimated-dnd-web": "^0.4.0",
|
|
@@ -226,15 +227,15 @@
|
|
|
226
227
|
"@ankhorage/supabase-auth": "^1.2.7",
|
|
227
228
|
"@ankhorage/supabase-storage": "^0.2.0",
|
|
228
229
|
"@ankhorage/supabase-vault": "^0.2.5",
|
|
229
|
-
"@ankhorage/templates": "^9.
|
|
230
|
+
"@ankhorage/templates": "^9.3.2",
|
|
230
231
|
"@ankhorage/utility": "^0.3.0",
|
|
231
|
-
"@ankhorage/zora": "^4.
|
|
232
|
+
"@ankhorage/zora": "^4.2.0",
|
|
232
233
|
"@ankhorage/zora-chess": "^0.1.2",
|
|
233
234
|
"@ankhorage/zora-tabletop": "^0.0.5",
|
|
234
235
|
"@fastify/cors": "^11.2.0",
|
|
235
236
|
"expo-document-picker": "~57.0.1",
|
|
236
237
|
"expo-file-system": "~57.0.6",
|
|
237
|
-
"expo-image-picker": "~57.0.
|
|
238
|
+
"expo-image-picker": "~57.0.16",
|
|
238
239
|
"fastify": "^5.7.4"
|
|
239
240
|
},
|
|
240
241
|
"peerDependencies": {
|
|
@@ -243,9 +244,9 @@
|
|
|
243
244
|
"@react-native-vector-icons/fontawesome5": "^13.1.3",
|
|
244
245
|
"@react-native-vector-icons/fontawesome6": "^13.1.3",
|
|
245
246
|
"@react-native-vector-icons/ionicons": "^13.1.3",
|
|
246
|
-
"expo": "57.0.
|
|
247
|
+
"expo": "57.0.20",
|
|
247
248
|
"expo-constants": "~57.0.17",
|
|
248
|
-
"expo-router": "~57.0.
|
|
249
|
+
"expo-router": "~57.0.19",
|
|
249
250
|
"expo-status-bar": "~57.0.1",
|
|
250
251
|
"react": "19.2.3",
|
|
251
252
|
"react-dom": "19.2.3",
|
|
@@ -259,9 +260,9 @@
|
|
|
259
260
|
},
|
|
260
261
|
"devDependencies": {
|
|
261
262
|
"@ankhorage/ankh": "^0.8.9",
|
|
262
|
-
"@ankhorage/devtools": "^1.
|
|
263
|
+
"@ankhorage/devtools": "^1.11.6",
|
|
263
264
|
"@ankhorage/paradox": "^0.1.24",
|
|
264
|
-
"@types/bun": "^1.4.
|
|
265
|
+
"@types/bun": "^1.4.1",
|
|
265
266
|
"@types/node": "^24.13.3",
|
|
266
267
|
"@types/react": "^19.2.14",
|
|
267
268
|
"typescript": "~6.0.3"
|
|
@@ -269,5 +270,5 @@
|
|
|
269
270
|
"overrides": {
|
|
270
271
|
"@ankhorage/contracts": "$@ankhorage/contracts"
|
|
271
272
|
},
|
|
272
|
-
"packageManager": "bun@1.4.
|
|
273
|
+
"packageManager": "bun@1.4.2"
|
|
273
274
|
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { AppManifest, NavigatorSpec } from '@ankhorage/contracts';
|
|
2
|
-
export interface BuiltNavigatorJsx {
|
|
3
|
-
declarations: string;
|
|
4
|
-
jsx: string;
|
|
5
|
-
usesTheme: boolean;
|
|
6
|
-
usesIcon: boolean;
|
|
7
|
-
usesZoraTabBar: boolean;
|
|
8
|
-
usesZoraDrawerContent: boolean;
|
|
9
|
-
usesZoraNavigationRouteMap: boolean;
|
|
10
|
-
}
|
|
11
|
-
/***
|
|
12
|
-
* Generate the declaration and JSX fragments required for the manifest navigator type and report which generated runtime imports it needs.
|
|
13
|
-
*/
|
|
14
|
-
export declare function buildNavigatorJsx(args: {
|
|
15
|
-
navigator: NavigatorSpec;
|
|
16
|
-
manifest: AppManifest;
|
|
17
|
-
includeStudio: boolean;
|
|
18
|
-
}): BuiltNavigatorJsx;
|
|
19
|
-
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/host/layout/templates/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAIxF,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,0BAA0B,EAAE,OAAO,CAAC;CACrC;AAmDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,iBAAiB,CAYpB"}
|
|
@@ -1,392 +0,0 @@
|
|
|
1
|
-
import { escapeStringLiteral } from '../utils/escapeStringLiteral';
|
|
2
|
-
/***
|
|
3
|
-
* Build the generated header-visibility expression for a navigator, hiding headers in Studio development mode when Studio integration is included.
|
|
4
|
-
*/
|
|
5
|
-
function getNavigatorHeaderShownTsx(includeStudio) {
|
|
6
|
-
return includeStudio ? '__DEV__ ? false : true' : 'true';
|
|
7
|
-
}
|
|
8
|
-
/***
|
|
9
|
-
* Build generated tab navigator screen options with Studio-aware header visibility and theme-driven colors.
|
|
10
|
-
*/
|
|
11
|
-
function getTabsOptionsTsx(includeStudio) {
|
|
12
|
-
return `{
|
|
13
|
-
headerShown: ${getNavigatorHeaderShownTsx(includeStudio)},
|
|
14
|
-
tabBarActiveTintColor: theme.colors.primary,
|
|
15
|
-
tabBarInactiveTintColor: theme.colors.textSecondary,
|
|
16
|
-
tabBarStyle: {
|
|
17
|
-
backgroundColor: theme.colors.surface,
|
|
18
|
-
borderTopColor: theme.colors.border,
|
|
19
|
-
},
|
|
20
|
-
}`;
|
|
21
|
-
}
|
|
22
|
-
/***
|
|
23
|
-
* Build generated drawer navigator screen options with Studio-aware header visibility and theme-driven colors.
|
|
24
|
-
*/
|
|
25
|
-
function getDrawerOptionsTsx(includeStudio) {
|
|
26
|
-
return `{
|
|
27
|
-
headerShown: ${getNavigatorHeaderShownTsx(includeStudio)},
|
|
28
|
-
drawerActiveTintColor: theme.colors.primary,
|
|
29
|
-
drawerInactiveTintColor: theme.colors.textSecondary,
|
|
30
|
-
drawerStyle: {
|
|
31
|
-
backgroundColor: theme.colors.background,
|
|
32
|
-
},
|
|
33
|
-
headerStyle: {
|
|
34
|
-
backgroundColor: theme.colors.surface,
|
|
35
|
-
},
|
|
36
|
-
headerTintColor: theme.colors.text,
|
|
37
|
-
}`;
|
|
38
|
-
}
|
|
39
|
-
/***
|
|
40
|
-
* Build generated stack navigator screen options with Studio-aware header visibility.
|
|
41
|
-
*/
|
|
42
|
-
function getStackOptionsTsx(includeStudio) {
|
|
43
|
-
return `{
|
|
44
|
-
headerShown: ${getNavigatorHeaderShownTsx(includeStudio)},
|
|
45
|
-
}`;
|
|
46
|
-
}
|
|
47
|
-
/***
|
|
48
|
-
* Generate the declaration and JSX fragments required for the manifest navigator type and report which generated runtime imports it needs.
|
|
49
|
-
*/
|
|
50
|
-
export function buildNavigatorJsx(args) {
|
|
51
|
-
const { navigator, manifest, includeStudio } = args;
|
|
52
|
-
if (navigator.type === 'tabs') {
|
|
53
|
-
return buildTabsNavigatorJsx({ navigator, manifest, includeStudio });
|
|
54
|
-
}
|
|
55
|
-
if (navigator.type === 'drawer') {
|
|
56
|
-
return buildDrawerNavigatorJsx({ navigator, manifest, includeStudio });
|
|
57
|
-
}
|
|
58
|
-
return buildStackNavigatorJsx({ navigator, manifest, includeStudio });
|
|
59
|
-
}
|
|
60
|
-
/***
|
|
61
|
-
* Generate tab-navigator declarations and JSX, preferring the ZORA route-map integration when every route belongs in primary navigation and falling back to Expo Router options otherwise.
|
|
62
|
-
*/
|
|
63
|
-
function buildTabsNavigatorJsx(args) {
|
|
64
|
-
const { navigator, manifest, includeStudio } = args;
|
|
65
|
-
const hasHiddenRoutes = navigator.routes.some((route) => route.showInPrimaryNavigation === false);
|
|
66
|
-
const headerShown = getNavigatorHeaderShownTsx(includeStudio);
|
|
67
|
-
if (!hasHiddenRoutes) {
|
|
68
|
-
const routeMapDeclaration = buildRouteMapDeclaration({ routes: navigator.routes, manifest });
|
|
69
|
-
const screenTemplates = navigator.routes.map((route, index) => buildTabsScreenJsx(route, manifest, index));
|
|
70
|
-
const declarations = [
|
|
71
|
-
routeMapDeclaration,
|
|
72
|
-
`const tabsNavigatorScreenOptions = {
|
|
73
|
-
headerShown: ${headerShown},
|
|
74
|
-
};`,
|
|
75
|
-
`function renderZoraTabBar(props: BottomTabBarProps) {
|
|
76
|
-
return <ZoraTabBar {...props} routeMap={routeMap} />;
|
|
77
|
-
}`,
|
|
78
|
-
...screenTemplates.map((screen) => screen.declaration),
|
|
79
|
-
]
|
|
80
|
-
.filter(Boolean)
|
|
81
|
-
.join('\n');
|
|
82
|
-
const screens = screenTemplates.map((screen) => screen.jsx).join('\n');
|
|
83
|
-
return {
|
|
84
|
-
declarations,
|
|
85
|
-
jsx: `<Tabs tabBar={renderZoraTabBar} screenOptions={tabsNavigatorScreenOptions}>
|
|
86
|
-
${screens}
|
|
87
|
-
</Tabs>`,
|
|
88
|
-
usesTheme: false,
|
|
89
|
-
usesIcon: false,
|
|
90
|
-
usesZoraTabBar: true,
|
|
91
|
-
usesZoraDrawerContent: false,
|
|
92
|
-
usesZoraNavigationRouteMap: true,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
const screenTemplates = navigator.routes.map((route, index) => buildTabsScreenFallbackJsx(route, manifest, index));
|
|
96
|
-
const declarations = screenTemplates
|
|
97
|
-
.map((screen) => screen.declaration)
|
|
98
|
-
.filter(Boolean)
|
|
99
|
-
.join('\n');
|
|
100
|
-
const screens = screenTemplates.map((screen) => screen.jsx).join('\n');
|
|
101
|
-
const usesIcon = navigator.routes.some((route) => Boolean(route.icon));
|
|
102
|
-
return {
|
|
103
|
-
declarations: [
|
|
104
|
-
`const tabsNavigatorScreenOptions = ${getTabsOptionsTsx(includeStudio)};`,
|
|
105
|
-
declarations,
|
|
106
|
-
]
|
|
107
|
-
.filter(Boolean)
|
|
108
|
-
.join('\n'),
|
|
109
|
-
jsx: `<Tabs screenOptions={tabsNavigatorScreenOptions}>
|
|
110
|
-
${screens}
|
|
111
|
-
</Tabs>`,
|
|
112
|
-
usesTheme: true,
|
|
113
|
-
usesIcon,
|
|
114
|
-
usesZoraTabBar: false,
|
|
115
|
-
usesZoraDrawerContent: false,
|
|
116
|
-
usesZoraNavigationRouteMap: false,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
/***
|
|
120
|
-
* Generate drawer-navigator declarations and JSX, preferring the ZORA route-map integration when every route belongs in primary navigation and falling back to Expo Router options otherwise.
|
|
121
|
-
*/
|
|
122
|
-
function buildDrawerNavigatorJsx(args) {
|
|
123
|
-
const { navigator, manifest, includeStudio } = args;
|
|
124
|
-
const hasHiddenRoutes = navigator.routes.some((route) => route.showInPrimaryNavigation === false);
|
|
125
|
-
const headerShown = getNavigatorHeaderShownTsx(includeStudio);
|
|
126
|
-
if (!hasHiddenRoutes) {
|
|
127
|
-
const routeMapDeclaration = buildRouteMapDeclaration({ routes: navigator.routes, manifest });
|
|
128
|
-
const screenTemplates = navigator.routes.map((route, index) => buildDrawerScreenJsx(route, manifest, index));
|
|
129
|
-
const declarations = [
|
|
130
|
-
routeMapDeclaration,
|
|
131
|
-
`const drawerNavigatorScreenOptions = {
|
|
132
|
-
headerShown: ${headerShown},
|
|
133
|
-
};`,
|
|
134
|
-
`function renderZoraDrawerContent(props: DrawerContentComponentProps) {
|
|
135
|
-
return <ZoraDrawerContent {...props} routeMap={routeMap} />;
|
|
136
|
-
}`,
|
|
137
|
-
...screenTemplates.map((screen) => screen.declaration),
|
|
138
|
-
]
|
|
139
|
-
.filter(Boolean)
|
|
140
|
-
.join('\n');
|
|
141
|
-
const screens = screenTemplates.map((screen) => screen.jsx).join('\n');
|
|
142
|
-
return {
|
|
143
|
-
declarations,
|
|
144
|
-
jsx: `<Drawer drawerContent={renderZoraDrawerContent} screenOptions={drawerNavigatorScreenOptions}>
|
|
145
|
-
${screens}
|
|
146
|
-
</Drawer>`,
|
|
147
|
-
usesTheme: false,
|
|
148
|
-
usesIcon: false,
|
|
149
|
-
usesZoraTabBar: false,
|
|
150
|
-
usesZoraDrawerContent: true,
|
|
151
|
-
usesZoraNavigationRouteMap: true,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
const screenTemplates = navigator.routes.map((route, index) => buildDrawerScreenFallbackJsx(route, manifest, index));
|
|
155
|
-
const declarations = screenTemplates
|
|
156
|
-
.map((screen) => screen.declaration)
|
|
157
|
-
.filter(Boolean)
|
|
158
|
-
.join('\n');
|
|
159
|
-
const screens = screenTemplates.map((screen) => screen.jsx).join('\n');
|
|
160
|
-
const usesIcon = navigator.routes.some((route) => Boolean(route.icon));
|
|
161
|
-
return {
|
|
162
|
-
declarations: [
|
|
163
|
-
`const drawerNavigatorScreenOptions = ${getDrawerOptionsTsx(includeStudio)};`,
|
|
164
|
-
declarations,
|
|
165
|
-
]
|
|
166
|
-
.filter(Boolean)
|
|
167
|
-
.join('\n'),
|
|
168
|
-
jsx: `<Drawer screenOptions={drawerNavigatorScreenOptions}>
|
|
169
|
-
${screens}
|
|
170
|
-
</Drawer>`,
|
|
171
|
-
usesTheme: true,
|
|
172
|
-
usesIcon,
|
|
173
|
-
usesZoraTabBar: false,
|
|
174
|
-
usesZoraDrawerContent: false,
|
|
175
|
-
usesZoraNavigationRouteMap: false,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
/***
|
|
179
|
-
* Generate stack-navigator declarations and JSX for the manifest routes.
|
|
180
|
-
*/
|
|
181
|
-
function buildStackNavigatorJsx(args) {
|
|
182
|
-
const { navigator, manifest, includeStudio } = args;
|
|
183
|
-
const screenTemplates = navigator.routes.map((route, index) => buildStackScreenJsx(route, manifest, index));
|
|
184
|
-
const declarations = screenTemplates
|
|
185
|
-
.map((screen) => screen.declaration)
|
|
186
|
-
.filter(Boolean)
|
|
187
|
-
.join('\n');
|
|
188
|
-
const screens = screenTemplates.map((screen) => screen.jsx).join('\n');
|
|
189
|
-
return {
|
|
190
|
-
declarations: [
|
|
191
|
-
`const stackNavigatorScreenOptions = ${getStackOptionsTsx(includeStudio)};`,
|
|
192
|
-
declarations,
|
|
193
|
-
]
|
|
194
|
-
.filter(Boolean)
|
|
195
|
-
.join('\n'),
|
|
196
|
-
jsx: `<Stack screenOptions={stackNavigatorScreenOptions}>
|
|
197
|
-
${screens}
|
|
198
|
-
</Stack>`,
|
|
199
|
-
usesTheme: false,
|
|
200
|
-
usesIcon: false,
|
|
201
|
-
usesZoraTabBar: false,
|
|
202
|
-
usesZoraDrawerContent: false,
|
|
203
|
-
usesZoraNavigationRouteMap: false,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
/***
|
|
207
|
-
* Generate one ZORA-integrated tab screen declaration and JSX reference from a manifest route.
|
|
208
|
-
*/
|
|
209
|
-
function buildTabsScreenJsx(route, manifest, index) {
|
|
210
|
-
const label = resolveRouteLabel(route, manifest);
|
|
211
|
-
const optionsConstName = buildScreenOptionsConstName(route, index);
|
|
212
|
-
const headerVisibilityLine = route.navigator ? `\n headerShown: false,` : '';
|
|
213
|
-
return {
|
|
214
|
-
declaration: `const ${optionsConstName} = {
|
|
215
|
-
title: '${label}',
|
|
216
|
-
tabBarLabel: '${label}',${headerVisibilityLine}
|
|
217
|
-
};`,
|
|
218
|
-
jsx: ` <Tabs.Screen key="${route.name}" name="${route.name}" options={${optionsConstName}} />`,
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
/***
|
|
222
|
-
* Generate one fallback tab screen declaration and JSX reference, including hidden-route and icon options when required.
|
|
223
|
-
*/
|
|
224
|
-
function buildTabsScreenFallbackJsx(route, manifest, index) {
|
|
225
|
-
const label = resolveRouteLabel(route, manifest);
|
|
226
|
-
const hideHrefOption = route.showInPrimaryNavigation === false ? 'href: null,' : '';
|
|
227
|
-
const optionsConstName = buildScreenOptionsConstName(route, index);
|
|
228
|
-
const iconFunctionName = buildScreenIconFunctionName(route, index);
|
|
229
|
-
const optionLines = [
|
|
230
|
-
`title: '${label}',`,
|
|
231
|
-
`tabBarLabel: '${label}',`,
|
|
232
|
-
route.icon ? `tabBarIcon: ${iconFunctionName},` : '',
|
|
233
|
-
hideHrefOption,
|
|
234
|
-
]
|
|
235
|
-
.filter(Boolean)
|
|
236
|
-
.map((line) => ` ${line}`)
|
|
237
|
-
.join('\n');
|
|
238
|
-
const iconProvider = route.icon?.provider
|
|
239
|
-
? ` provider="${escapeStringLiteral(resolveIconProvider(route.icon.provider))}"`
|
|
240
|
-
: '';
|
|
241
|
-
return {
|
|
242
|
-
declaration: [
|
|
243
|
-
route.icon
|
|
244
|
-
? `function ${iconFunctionName}({ color, size }: { color: string; size: number }) {
|
|
245
|
-
return (
|
|
246
|
-
<Icon name="${escapeStringLiteral(route.icon.name)}"${iconProvider} color={color} size={size} />
|
|
247
|
-
);
|
|
248
|
-
}`
|
|
249
|
-
: '',
|
|
250
|
-
`const ${optionsConstName} = {\n${optionLines}\n};`,
|
|
251
|
-
]
|
|
252
|
-
.filter(Boolean)
|
|
253
|
-
.join('\n'),
|
|
254
|
-
jsx: ` <Tabs.Screen key="${route.name}" name="${route.name}" options={${optionsConstName}} />`,
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
/***
|
|
258
|
-
* Generate one ZORA-integrated drawer screen declaration and JSX reference from a manifest route.
|
|
259
|
-
*/
|
|
260
|
-
function buildDrawerScreenJsx(route, manifest, index) {
|
|
261
|
-
const label = resolveRouteLabel(route, manifest);
|
|
262
|
-
const optionsConstName = buildScreenOptionsConstName(route, index);
|
|
263
|
-
const headerVisibilityLine = route.navigator ? `\n headerShown: false,` : '';
|
|
264
|
-
return {
|
|
265
|
-
declaration: `const ${optionsConstName} = {
|
|
266
|
-
title: '${label}',
|
|
267
|
-
drawerLabel: '${label}',${headerVisibilityLine}
|
|
268
|
-
};`,
|
|
269
|
-
jsx: ` <Drawer.Screen key="${route.name}" name="${route.name}" options={${optionsConstName}} />`,
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
/***
|
|
273
|
-
* Generate one fallback drawer screen declaration and JSX reference, including hidden-route and icon options when required.
|
|
274
|
-
*/
|
|
275
|
-
function buildDrawerScreenFallbackJsx(route, manifest, index) {
|
|
276
|
-
const label = resolveRouteLabel(route, manifest);
|
|
277
|
-
const hideDrawerOption = route.showInPrimaryNavigation === false ? "drawerItemStyle: { display: 'none' }," : '';
|
|
278
|
-
const optionsConstName = buildScreenOptionsConstName(route, index);
|
|
279
|
-
const iconFunctionName = buildScreenIconFunctionName(route, index);
|
|
280
|
-
const optionLines = [
|
|
281
|
-
`title: '${label}',`,
|
|
282
|
-
`drawerLabel: '${label}',`,
|
|
283
|
-
route.icon ? `drawerIcon: ${iconFunctionName},` : '',
|
|
284
|
-
hideDrawerOption,
|
|
285
|
-
]
|
|
286
|
-
.filter(Boolean)
|
|
287
|
-
.map((line) => ` ${line}`)
|
|
288
|
-
.join('\n');
|
|
289
|
-
return {
|
|
290
|
-
declaration: [
|
|
291
|
-
route.icon
|
|
292
|
-
? `function ${iconFunctionName}({ color, size }: { color: string; size: number }) {
|
|
293
|
-
return (
|
|
294
|
-
<Icon name="${escapeStringLiteral(route.icon.name)}"${route.icon.provider ? ` provider="${escapeStringLiteral(route.icon.provider)}"` : ''} color={color} size={size} />
|
|
295
|
-
);
|
|
296
|
-
}`
|
|
297
|
-
: '',
|
|
298
|
-
`const ${optionsConstName} = {\n${optionLines}\n};`,
|
|
299
|
-
]
|
|
300
|
-
.filter(Boolean)
|
|
301
|
-
.join('\n'),
|
|
302
|
-
jsx: ` <Drawer.Screen key="${route.name}" name="${route.name}" options={${optionsConstName}} />`,
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
/***
|
|
306
|
-
* Generate one stack screen declaration and JSX reference, adding only the route-specific options that are required.
|
|
307
|
-
*/
|
|
308
|
-
function buildStackScreenJsx(route, manifest, index) {
|
|
309
|
-
const label = resolveRouteLabel(route, manifest);
|
|
310
|
-
const options = [];
|
|
311
|
-
if (route.name === 'index') {
|
|
312
|
-
options.push(`headerTitle: '${label}'`);
|
|
313
|
-
}
|
|
314
|
-
if (route.navigator) {
|
|
315
|
-
options.push('headerShown: false');
|
|
316
|
-
}
|
|
317
|
-
if (options.length === 0) {
|
|
318
|
-
return {
|
|
319
|
-
declaration: '',
|
|
320
|
-
jsx: ` <Stack.Screen key="${route.name}" name="${route.name}" />`,
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
const optionsConstName = buildScreenOptionsConstName(route, index);
|
|
324
|
-
return {
|
|
325
|
-
declaration: `const ${optionsConstName} = { ${options.join(', ')} };`,
|
|
326
|
-
jsx: ` <Stack.Screen key="${route.name}" name="${route.name}" options={${optionsConstName}} />`,
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
/***
|
|
330
|
-
* Resolve and escape the display label for a route, preferring explicit route metadata before screen metadata and the route name.
|
|
331
|
-
*/
|
|
332
|
-
function resolveRouteLabel(route, manifest) {
|
|
333
|
-
const screen = route.screenId ? manifest.screens[route.screenId] : undefined;
|
|
334
|
-
return escapeStringLiteral(route.label ?? screen?.title ?? screen?.name ?? route.name);
|
|
335
|
-
}
|
|
336
|
-
/***
|
|
337
|
-
* Generate the ZORA navigation route-map declaration for the manifest routes, including optional icon metadata.
|
|
338
|
-
*/
|
|
339
|
-
function buildRouteMapDeclaration(args) {
|
|
340
|
-
const { routes, manifest } = args;
|
|
341
|
-
const entries = routes
|
|
342
|
-
.map((route) => {
|
|
343
|
-
const label = resolveRouteLabel(route, manifest);
|
|
344
|
-
const key = escapeStringLiteral(route.name);
|
|
345
|
-
const routeKey = /^[A-Za-z_$][A-Za-z0-9_$]*$/u.test(key) ? key : `'${key}'`;
|
|
346
|
-
const iconSpec = route.icon ? buildRouteIconLiteral(route.icon) : '';
|
|
347
|
-
const iconLine = iconSpec.length > 0 ? `\n icon: ${iconSpec},` : '';
|
|
348
|
-
return ` ${routeKey}: {\n label: '${label}',${iconLine}\n }`;
|
|
349
|
-
})
|
|
350
|
-
.join(',\n');
|
|
351
|
-
return `const routeMap: ZoraNavigationRouteMap = {\n${entries},\n};\n`;
|
|
352
|
-
}
|
|
353
|
-
/***
|
|
354
|
-
* Generate a serialized ZORA route-icon object literal from manifest icon metadata.
|
|
355
|
-
*/
|
|
356
|
-
function buildRouteIconLiteral(icon) {
|
|
357
|
-
const provider = icon.provider
|
|
358
|
-
? `, provider: '${escapeStringLiteral(resolveIconProvider(icon.provider))}'`
|
|
359
|
-
: '';
|
|
360
|
-
const size = icon.size === undefined
|
|
361
|
-
? ''
|
|
362
|
-
: `, size: ${typeof icon.size === 'number' ? icon.size : `'${escapeStringLiteral(String(icon.size))}'`}`;
|
|
363
|
-
const color = icon.color ? `, color: '${escapeStringLiteral(icon.color)}'` : '';
|
|
364
|
-
return `{ name: '${escapeStringLiteral(icon.name)}'${provider}${size}${color} }`;
|
|
365
|
-
}
|
|
366
|
-
/***
|
|
367
|
-
* Translate the manifest's legacy material-community provider identifier to the runtime ZORA provider name while preserving every other provider.
|
|
368
|
-
* @todo Move provider-name normalization to the icon/navigation owner instead of keeping contract-to-runtime mapping inside a layout template.
|
|
369
|
-
*/
|
|
370
|
-
function resolveIconProvider(provider) {
|
|
371
|
-
return provider === 'material-community' ? 'MaterialDesignIcons' : provider;
|
|
372
|
-
}
|
|
373
|
-
/***
|
|
374
|
-
* Build a stable generated screen-options constant name from the route name and route index.
|
|
375
|
-
*/
|
|
376
|
-
function buildScreenOptionsConstName(route, index) {
|
|
377
|
-
const normalizedName = route.name.replace(/[^a-zA-Z0-9]+/g, ' ').trim();
|
|
378
|
-
const parts = normalizedName.length > 0 ? normalizedName.split(/\s+/) : [];
|
|
379
|
-
const [firstPart = 'route', ...remainingParts] = parts;
|
|
380
|
-
const camelName = [
|
|
381
|
-
firstPart.toLowerCase(),
|
|
382
|
-
...remainingParts.map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()),
|
|
383
|
-
].join('');
|
|
384
|
-
return `route${index}${camelName.charAt(0).toUpperCase() + camelName.slice(1)}ScreenOptions`;
|
|
385
|
-
}
|
|
386
|
-
/***
|
|
387
|
-
* Derive the generated route-icon render-function name from the corresponding screen-options constant name.
|
|
388
|
-
*/
|
|
389
|
-
function buildScreenIconFunctionName(route, index) {
|
|
390
|
-
return buildScreenOptionsConstName(route, index).replace(/ScreenOptions$/, 'Icon');
|
|
391
|
-
}
|
|
392
|
-
//# sourceMappingURL=navigation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/host/layout/templates/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { NavigatorSpec } from '@ankhorage/contracts';
|
|
2
|
-
import type { BuiltNavigatorJsx } from './navigation';
|
|
3
|
-
/*** Generate a nested Expo Router layout around one already-built navigator source fragment. */
|
|
4
|
-
export declare function getNestedLayoutTsx(args: {
|
|
5
|
-
node: NavigatorSpec;
|
|
6
|
-
navigator: BuiltNavigatorJsx;
|
|
7
|
-
}): string;
|
|
8
|
-
//# sourceMappingURL=nestedLayout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nestedLayout.d.ts","sourceRoot":"","sources":["../../../../src/host/layout/templates/nestedLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,UAqD7F"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { joinNonEmptyLines } from './utils/strings';
|
|
2
|
-
/*** Generate a nested Expo Router layout around one already-built navigator source fragment. */
|
|
3
|
-
export function getNestedLayoutTsx(args) {
|
|
4
|
-
const { node, navigator } = args;
|
|
5
|
-
const themeHook = navigator.usesTheme ? ' const { theme } = useZoraTheme();\n' : '';
|
|
6
|
-
const moduleDeclarations = navigator.usesTheme ? '' : navigator.declarations;
|
|
7
|
-
const scopedDeclarations = navigator.usesTheme
|
|
8
|
-
? navigator.declarations
|
|
9
|
-
.split('\n')
|
|
10
|
-
.map((line) => (line.length > 0 ? ` ${line}` : line))
|
|
11
|
-
.join('\n')
|
|
12
|
-
: '';
|
|
13
|
-
const imports = joinNonEmptyLines([
|
|
14
|
-
navigator.usesZoraNavigationRouteMap
|
|
15
|
-
? `import type { ZoraNavigationRouteMap } from '@ankhorage/zora';`
|
|
16
|
-
: '',
|
|
17
|
-
navigator.usesTheme ||
|
|
18
|
-
navigator.usesIcon ||
|
|
19
|
-
navigator.usesZoraTabBar ||
|
|
20
|
-
navigator.usesZoraDrawerContent
|
|
21
|
-
? `import { ${[
|
|
22
|
-
navigator.usesIcon ? 'Icon' : '',
|
|
23
|
-
navigator.usesTheme ? 'useZoraTheme' : '',
|
|
24
|
-
navigator.usesZoraTabBar ? 'ZoraTabBar' : '',
|
|
25
|
-
navigator.usesZoraDrawerContent ? 'ZoraDrawerContent' : '',
|
|
26
|
-
]
|
|
27
|
-
.filter(Boolean)
|
|
28
|
-
.join(', ')} } from '@ankhorage/zora';`
|
|
29
|
-
: '',
|
|
30
|
-
navigator.usesZoraTabBar ? `import type { BottomTabBarProps } from 'expo-router/js-tabs';` : '',
|
|
31
|
-
navigator.usesZoraDrawerContent
|
|
32
|
-
? `import type { DrawerContentComponentProps } from 'expo-router/drawer';`
|
|
33
|
-
: '',
|
|
34
|
-
node.type === 'drawer'
|
|
35
|
-
? `import { Drawer } from 'expo-router/drawer';`
|
|
36
|
-
: node.type === 'tabs'
|
|
37
|
-
? `import { Tabs } from 'expo-router/js-tabs';`
|
|
38
|
-
: `import { Stack } from 'expo-router';`,
|
|
39
|
-
]);
|
|
40
|
-
return `${imports}
|
|
41
|
-
|
|
42
|
-
export const unstable_settings = {
|
|
43
|
-
initialRouteName: '${resolveGeneratedInitialRouteName(node)}',
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
${moduleDeclarations}
|
|
47
|
-
|
|
48
|
-
export default function Layout() {
|
|
49
|
-
${themeHook}${scopedDeclarations ? `${scopedDeclarations}\n` : ''} return (
|
|
50
|
-
${navigator.jsx}
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
`;
|
|
54
|
-
}
|
|
55
|
-
/*** Resolve a valid generated initial route from a navigator, falling back to its first route or index. */
|
|
56
|
-
function resolveGeneratedInitialRouteName(node) {
|
|
57
|
-
const routeNames = new Set(node.routes.map((route) => route.name));
|
|
58
|
-
if (node.initialRouteName && routeNames.has(node.initialRouteName)) {
|
|
59
|
-
return node.initialRouteName;
|
|
60
|
-
}
|
|
61
|
-
return node.routes[0]?.name ?? 'index';
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=nestedLayout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nestedLayout.js","sourceRoot":"","sources":["../../../../src/host/layout/templates/nestedLayout.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAAC,IAA2D;IAC5F,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;IAC7E,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS;QAC5C,CAAC,CAAC,SAAS,CAAC,YAAY;aACnB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACrD,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,iBAAiB,CAAC;QAChC,SAAS,CAAC,0BAA0B;YAClC,CAAC,CAAC,gEAAgE;YAClE,CAAC,CAAC,EAAE;QACN,SAAS,CAAC,SAAS;YACnB,SAAS,CAAC,QAAQ;YAClB,SAAS,CAAC,cAAc;YACxB,SAAS,CAAC,qBAAqB;YAC7B,CAAC,CAAC,YAAY;gBACV,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAChC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACzC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBAC5C,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;aAC3D;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,4BAA4B;YAC3C,CAAC,CAAC,EAAE;QACN,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;QAC/F,SAAS,CAAC,qBAAqB;YAC7B,CAAC,CAAC,wEAAwE;YAC1E,CAAC,CAAC,EAAE;QACN,IAAI,CAAC,IAAI,KAAK,QAAQ;YACpB,CAAC,CAAC,8CAA8C;YAChD,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,sCAAsC;KAC7C,CAAC,CAAC;IAEH,OAAO,GAAG,OAAO;;;uBAGI,gCAAgC,CAAC,IAAI,CAAC;;;EAG3D,kBAAkB;;;EAGlB,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,IAAI,CAAC,CAAC,CAAC,EAAE;MAC3D,SAAS,CAAC,GAAG;;;CAGlB,CAAC;AACF,CAAC;AAED,2GAA2G;AAC3G,SAAS,gCAAgC,CAAC,IAAmB;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC;AACzC,CAAC"}
|