@ankhorage/studio 0.0.4 → 0.0.5
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 +1 -1
- package/dist/manifestState.d.ts +88 -0
- package/dist/manifestState.d.ts.map +1 -0
- package/dist/manifestState.js +858 -0
- package/dist/manifestState.js.map +1 -0
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/studio
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Standalone Studio authoring package for Ankhorage apps.
|
|
9
9
|
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { AppDataManifest, AuthOAuthProviderConfig, ComponentDataBindingRegistry, DataSourceRegistry, NavigatorSpec, NavigatorType, RouteDefinition, ThemeConfig, UiNode } from '@ankhorage/contracts';
|
|
2
|
+
import type { NodePlacement, StudioComponentMetaRegistry, StudioIdGenerator, StudioManifest, StudioMode, ThemeUpdates } from './index';
|
|
3
|
+
export interface ScreenRouteEntry {
|
|
4
|
+
route: RouteDefinition;
|
|
5
|
+
screenId: string;
|
|
6
|
+
parentPath: string[];
|
|
7
|
+
routePath: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface ScreenRouteGroup {
|
|
10
|
+
id: string;
|
|
11
|
+
parentPath: string[];
|
|
12
|
+
entries: ScreenRouteEntry[];
|
|
13
|
+
}
|
|
14
|
+
export interface StudioManifestScreenMutationResult {
|
|
15
|
+
manifest: StudioManifest;
|
|
16
|
+
activeScreenId: string | null;
|
|
17
|
+
}
|
|
18
|
+
export interface StudioManifestNodeInsertResult {
|
|
19
|
+
manifest: StudioManifest;
|
|
20
|
+
insertedNodeId: string;
|
|
21
|
+
}
|
|
22
|
+
export interface StudioManifestNodeMoveResult {
|
|
23
|
+
manifest: StudioManifest;
|
|
24
|
+
movedNodeId: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const DEFAULT_STUDIO_SCREEN_TEMPLATE: UiNode;
|
|
27
|
+
export declare const generateManifestStateId: StudioIdGenerator;
|
|
28
|
+
export declare function createStudioManifestFingerprint(manifest: StudioManifest | null): string;
|
|
29
|
+
export declare function pathToKey(path: string[]): string;
|
|
30
|
+
export declare function isRouteGroupSegment(segment: string): boolean;
|
|
31
|
+
export declare function collectScreenRouteEntries(routes: RouteDefinition[], parentPath?: string[], routePathPrefix?: string[]): ScreenRouteEntry[];
|
|
32
|
+
export declare function groupScreenRouteEntries(entries: ScreenRouteEntry[]): ScreenRouteGroup[];
|
|
33
|
+
export declare function listScreenIdsInRouteOrder(routes: RouteDefinition[]): string[];
|
|
34
|
+
export declare function resolveInitialActiveScreenId(manifest: StudioManifest | null): string | null;
|
|
35
|
+
export declare function resolveActiveRootNode(manifest: StudioManifest | null, activeScreenId: string | null): UiNode | null;
|
|
36
|
+
export declare function findNodeInManifest(root: UiNode, id: string): UiNode | null;
|
|
37
|
+
export declare function resolveSafeSelectedNodeId(rootNode: UiNode | null, selectedNodeId: string | null): string | null;
|
|
38
|
+
export declare function findScreenIdForNode(manifest: StudioManifest, nodeId: string): string | null;
|
|
39
|
+
export declare function updateStudioManifestNode(manifest: StudioManifest, activeScreenId: string | null, nodeId: string, newProps: Record<string, unknown>): StudioManifest;
|
|
40
|
+
export declare function deleteStudioManifestNode(manifest: StudioManifest, activeScreenId: string | null, nodeId: string): StudioManifest;
|
|
41
|
+
export declare function moveStudioManifestNode(manifest: StudioManifest, activeScreenId: string | null, nodeId: string, direction: 'up' | 'down'): StudioManifest;
|
|
42
|
+
export declare function insertStudioManifestNodeAtPlacement(args: {
|
|
43
|
+
manifest: StudioManifest;
|
|
44
|
+
activeScreenId: string | null;
|
|
45
|
+
placement: NodePlacement;
|
|
46
|
+
newNode: UiNode;
|
|
47
|
+
componentMeta: StudioComponentMetaRegistry;
|
|
48
|
+
}): StudioManifestNodeInsertResult | null;
|
|
49
|
+
export declare function moveStudioManifestNodeToPlacement(args: {
|
|
50
|
+
manifest: StudioManifest;
|
|
51
|
+
activeScreenId: string | null;
|
|
52
|
+
nodeId: string;
|
|
53
|
+
placement: NodePlacement;
|
|
54
|
+
componentMeta: StudioComponentMetaRegistry;
|
|
55
|
+
}): StudioManifestNodeMoveResult | null;
|
|
56
|
+
export declare function updateStudioManifestAppData(manifest: StudioManifest, data: AppDataManifest): StudioManifest;
|
|
57
|
+
export declare function updateStudioManifestDataBindings(manifest: StudioManifest, dataBindings: ComponentDataBindingRegistry): StudioManifest;
|
|
58
|
+
export declare function updateStudioManifestDataSources(manifest: StudioManifest, dataSources: DataSourceRegistry): StudioManifest;
|
|
59
|
+
export declare function createDefaultThemeConfig(themeIndex: number, id?: string): ThemeConfig;
|
|
60
|
+
export declare function addStudioManifestTheme(manifest: StudioManifest, theme?: ThemeConfig): StudioManifest;
|
|
61
|
+
export declare function updateStudioManifestTheme(manifest: StudioManifest, themeId: string, updates: ThemeUpdates): StudioManifest;
|
|
62
|
+
export declare function deleteStudioManifestTheme(manifest: StudioManifest, themeId: string): StudioManifest;
|
|
63
|
+
export declare function setStudioManifestActiveThemeId(manifest: StudioManifest, activeThemeId: string): StudioManifest;
|
|
64
|
+
export declare function setStudioManifestActiveThemeMode(manifest: StudioManifest, activeThemeMode: StudioMode): StudioManifest;
|
|
65
|
+
export declare function updateStudioManifestModuleConfig(manifest: StudioManifest, moduleId: string, config: Record<string, unknown>): StudioManifest;
|
|
66
|
+
export declare function updateStudioManifestOAuthProviders(manifest: StudioManifest, providers: AuthOAuthProviderConfig[]): StudioManifest;
|
|
67
|
+
export declare function getPrimaryNavigatorPath(routes: RouteDefinition[]): string[];
|
|
68
|
+
export declare function findParentPathForScreenId(routes: RouteDefinition[], screenId: string, parentPath?: string[], routePathPrefix?: string[]): string[] | null;
|
|
69
|
+
export declare function findRoutesAtParentPath(routes: RouteDefinition[], parentPath: string[]): RouteDefinition[] | null;
|
|
70
|
+
export declare function insertRouteAtParentPath(routes: RouteDefinition[], parentPath: string[], newRoute: RouteDefinition): RouteDefinition[];
|
|
71
|
+
export declare function findNavigatorAtPath(navigator: NavigatorSpec, parentPath: string[]): NavigatorSpec | null;
|
|
72
|
+
export declare function updateNavigatorAtPath(navigator: NavigatorSpec, parentPath: string[], updater: (current: NavigatorSpec) => NavigatorSpec): NavigatorSpec;
|
|
73
|
+
export declare function setStudioManifestNavigatorType(manifest: StudioManifest, type: NavigatorType): StudioManifest;
|
|
74
|
+
export declare function setStudioManifestNavigatorInitialRoute(manifest: StudioManifest, routeName: string): StudioManifest;
|
|
75
|
+
export declare function addStudioManifestScreen(args: {
|
|
76
|
+
manifest: StudioManifest;
|
|
77
|
+
name: string;
|
|
78
|
+
activeScreenId: string | null;
|
|
79
|
+
createId?: StudioIdGenerator;
|
|
80
|
+
screenTemplate?: UiNode;
|
|
81
|
+
}): StudioManifestScreenMutationResult;
|
|
82
|
+
export declare function deleteStudioManifestScreen(manifest: StudioManifest, screenId: string, activeScreenId: string | null): StudioManifestScreenMutationResult;
|
|
83
|
+
export declare function reorderStudioManifestScreens(manifest: StudioManifest, newRoutes: RouteDefinition[]): StudioManifest;
|
|
84
|
+
export declare function removeScreenIdFromRoutes(routes: RouteDefinition[], screenId: string): RouteDefinition[];
|
|
85
|
+
export declare function makeUniqueSiblingRouteName(base: string, siblingRoutes: RouteDefinition[]): string;
|
|
86
|
+
export declare function toCanonicalRoutePattern(routePath: string[]): string;
|
|
87
|
+
export declare function makeUniqueRouteNameForParent(baseRouteName: string, siblingRoutes: RouteDefinition[], parentPath: string[], existingPatterns: Set<string>): string;
|
|
88
|
+
//# sourceMappingURL=manifestState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifestState.d.ts","sourceRoot":"","sources":["../src/manifestState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,858 @@
|
|
|
1
|
+
export const DEFAULT_STUDIO_SCREEN_TEMPLATE = {
|
|
2
|
+
id: 'tpl-screen-empty',
|
|
3
|
+
type: 'Screen',
|
|
4
|
+
props: {
|
|
5
|
+
width: 'wide',
|
|
6
|
+
},
|
|
7
|
+
children: [
|
|
8
|
+
{
|
|
9
|
+
id: 'tpl-screen-empty-header',
|
|
10
|
+
type: 'SectionHeader',
|
|
11
|
+
props: {
|
|
12
|
+
title: 'New Screen',
|
|
13
|
+
description: 'Start authoring with ZORA layouts and patterns.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'tpl-screen-empty-section',
|
|
18
|
+
type: 'ScreenSection',
|
|
19
|
+
props: {
|
|
20
|
+
title: 'Build the first section',
|
|
21
|
+
description: 'Insert panels, forms, or content patterns to start authoring.',
|
|
22
|
+
},
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
id: 'tpl-screen-empty-state',
|
|
26
|
+
type: 'EmptyState',
|
|
27
|
+
props: {
|
|
28
|
+
title: 'Canvas is ready',
|
|
29
|
+
description: 'Use Insert to add components and layouts.',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'tpl-screen-empty-action',
|
|
36
|
+
type: 'Button',
|
|
37
|
+
props: {
|
|
38
|
+
children: 'Add first section',
|
|
39
|
+
tone: 'primary',
|
|
40
|
+
emphasis: 'solid',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
export const generateManifestStateId = (prefix) => {
|
|
46
|
+
const timestamp = Date.now().toString(36);
|
|
47
|
+
const random = Math.random().toString(36).substring(2, 11);
|
|
48
|
+
const id = `${timestamp}-${random}`;
|
|
49
|
+
return prefix ? `${prefix.toLowerCase()}-${id}` : id;
|
|
50
|
+
};
|
|
51
|
+
export function createStudioManifestFingerprint(manifest) {
|
|
52
|
+
if (!manifest)
|
|
53
|
+
return '';
|
|
54
|
+
return JSON.stringify({
|
|
55
|
+
navigator: manifest.navigator,
|
|
56
|
+
screens: Object.keys(manifest.screens),
|
|
57
|
+
data: manifest.data ?? {},
|
|
58
|
+
dataBindings: Object.keys(manifest.dataBindings ?? {}),
|
|
59
|
+
dataSources: Object.keys(manifest.dataSources ?? {}),
|
|
60
|
+
themes: manifest.themes.map((theme) => theme.id),
|
|
61
|
+
activeThemeId: manifest.activeThemeId,
|
|
62
|
+
activeThemeMode: manifest.activeThemeMode,
|
|
63
|
+
settings: manifest.settings,
|
|
64
|
+
infra: manifest.infra,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export function pathToKey(path) {
|
|
68
|
+
return path.length === 0 ? '__root__' : path.join('/');
|
|
69
|
+
}
|
|
70
|
+
export function isRouteGroupSegment(segment) {
|
|
71
|
+
return /^\(.*\)$/.test(segment);
|
|
72
|
+
}
|
|
73
|
+
export function collectScreenRouteEntries(routes, parentPath = [], routePathPrefix = []) {
|
|
74
|
+
const entries = [];
|
|
75
|
+
for (const route of routes) {
|
|
76
|
+
const routePath = [...routePathPrefix, route.name];
|
|
77
|
+
if (route.screenId) {
|
|
78
|
+
entries.push({
|
|
79
|
+
route,
|
|
80
|
+
screenId: route.screenId,
|
|
81
|
+
parentPath,
|
|
82
|
+
routePath,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (route.navigator?.routes.length) {
|
|
86
|
+
entries.push(...collectScreenRouteEntries(route.navigator.routes, routePath, routePath));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return entries;
|
|
90
|
+
}
|
|
91
|
+
export function groupScreenRouteEntries(entries) {
|
|
92
|
+
const groups = new Map();
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
const key = pathToKey(entry.parentPath);
|
|
95
|
+
if (!groups.has(key)) {
|
|
96
|
+
groups.set(key, {
|
|
97
|
+
id: key,
|
|
98
|
+
parentPath: entry.parentPath,
|
|
99
|
+
entries: [],
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
groups.get(key)?.entries.push(entry);
|
|
103
|
+
}
|
|
104
|
+
return Array.from(groups.values());
|
|
105
|
+
}
|
|
106
|
+
export function listScreenIdsInRouteOrder(routes) {
|
|
107
|
+
return collectScreenRouteEntries(routes).map((entry) => entry.screenId);
|
|
108
|
+
}
|
|
109
|
+
export function resolveInitialActiveScreenId(manifest) {
|
|
110
|
+
if (!manifest)
|
|
111
|
+
return null;
|
|
112
|
+
const firstRoutedScreenId = listScreenIdsInRouteOrder(manifest.navigator.routes).find((screenId) => !!manifest.screens[screenId]);
|
|
113
|
+
const [firstScreenId] = Object.keys(manifest.screens);
|
|
114
|
+
return firstRoutedScreenId ?? firstScreenId ?? null;
|
|
115
|
+
}
|
|
116
|
+
export function resolveActiveRootNode(manifest, activeScreenId) {
|
|
117
|
+
if (!manifest || !activeScreenId)
|
|
118
|
+
return null;
|
|
119
|
+
return manifest.screens[activeScreenId]?.root ?? null;
|
|
120
|
+
}
|
|
121
|
+
export function findNodeInManifest(root, id) {
|
|
122
|
+
if (root.id === id)
|
|
123
|
+
return root;
|
|
124
|
+
for (const child of root.children ?? []) {
|
|
125
|
+
const nested = findNodeInManifest(child, id);
|
|
126
|
+
if (nested)
|
|
127
|
+
return nested;
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
export function resolveSafeSelectedNodeId(rootNode, selectedNodeId) {
|
|
132
|
+
if (!selectedNodeId || !rootNode)
|
|
133
|
+
return null;
|
|
134
|
+
return findNodeInManifest(rootNode, selectedNodeId) ? selectedNodeId : null;
|
|
135
|
+
}
|
|
136
|
+
export function findScreenIdForNode(manifest, nodeId) {
|
|
137
|
+
for (const [screenId, screen] of Object.entries(manifest.screens)) {
|
|
138
|
+
if (findNodeInManifest(screen.root, nodeId)) {
|
|
139
|
+
return screenId;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
export function updateStudioManifestNode(manifest, activeScreenId, nodeId, newProps) {
|
|
145
|
+
if (!activeScreenId)
|
|
146
|
+
return manifest;
|
|
147
|
+
const screen = manifest.screens[activeScreenId];
|
|
148
|
+
if (!screen)
|
|
149
|
+
return manifest;
|
|
150
|
+
const newRoot = updateNodeInManifestTree(screen.root, nodeId, newProps);
|
|
151
|
+
if (newRoot === screen.root)
|
|
152
|
+
return manifest;
|
|
153
|
+
return {
|
|
154
|
+
...manifest,
|
|
155
|
+
screens: {
|
|
156
|
+
...manifest.screens,
|
|
157
|
+
[activeScreenId]: {
|
|
158
|
+
...screen,
|
|
159
|
+
root: newRoot,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function deleteStudioManifestNode(manifest, activeScreenId, nodeId) {
|
|
165
|
+
if (!activeScreenId)
|
|
166
|
+
return manifest;
|
|
167
|
+
const screen = manifest.screens[activeScreenId];
|
|
168
|
+
if (!screen || screen.root.id === nodeId)
|
|
169
|
+
return manifest;
|
|
170
|
+
const newRoot = removeNodeFromManifestTree(screen.root, nodeId);
|
|
171
|
+
if (!newRoot || newRoot === screen.root)
|
|
172
|
+
return manifest;
|
|
173
|
+
const nextDataBindings = Object.fromEntries(Object.entries(manifest.dataBindings ?? {}).filter(([componentId]) => componentId !== nodeId));
|
|
174
|
+
return {
|
|
175
|
+
...manifest,
|
|
176
|
+
dataBindings: nextDataBindings,
|
|
177
|
+
screens: {
|
|
178
|
+
...manifest.screens,
|
|
179
|
+
[activeScreenId]: {
|
|
180
|
+
...screen,
|
|
181
|
+
root: newRoot,
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export function moveStudioManifestNode(manifest, activeScreenId, nodeId, direction) {
|
|
187
|
+
if (!activeScreenId)
|
|
188
|
+
return manifest;
|
|
189
|
+
const screen = manifest.screens[activeScreenId];
|
|
190
|
+
if (!screen)
|
|
191
|
+
return manifest;
|
|
192
|
+
const newRoot = moveNodeInManifestTree(screen.root, nodeId, direction);
|
|
193
|
+
if (newRoot === screen.root)
|
|
194
|
+
return manifest;
|
|
195
|
+
return {
|
|
196
|
+
...manifest,
|
|
197
|
+
screens: {
|
|
198
|
+
...manifest.screens,
|
|
199
|
+
[activeScreenId]: {
|
|
200
|
+
...screen,
|
|
201
|
+
root: newRoot,
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
export function insertStudioManifestNodeAtPlacement(args) {
|
|
207
|
+
const { manifest, activeScreenId, placement, newNode, componentMeta } = args;
|
|
208
|
+
if (!activeScreenId)
|
|
209
|
+
return null;
|
|
210
|
+
const screen = manifest.screens[activeScreenId];
|
|
211
|
+
if (!screen)
|
|
212
|
+
return null;
|
|
213
|
+
if (!validateManifestNodePlacement(screen.root, placement, newNode.type, componentMeta))
|
|
214
|
+
return null;
|
|
215
|
+
const insertion = insertChildAtIndex({
|
|
216
|
+
node: screen.root,
|
|
217
|
+
parentId: placement.parentId,
|
|
218
|
+
index: placement.index,
|
|
219
|
+
newNode,
|
|
220
|
+
});
|
|
221
|
+
if (!insertion.inserted)
|
|
222
|
+
return null;
|
|
223
|
+
return {
|
|
224
|
+
manifest: {
|
|
225
|
+
...manifest,
|
|
226
|
+
screens: {
|
|
227
|
+
...manifest.screens,
|
|
228
|
+
[activeScreenId]: {
|
|
229
|
+
...screen,
|
|
230
|
+
root: insertion.node,
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
insertedNodeId: newNode.id,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
export function moveStudioManifestNodeToPlacement(args) {
|
|
238
|
+
const { manifest, activeScreenId, nodeId, placement, componentMeta } = args;
|
|
239
|
+
if (!activeScreenId)
|
|
240
|
+
return null;
|
|
241
|
+
const screen = manifest.screens[activeScreenId];
|
|
242
|
+
if (!screen)
|
|
243
|
+
return null;
|
|
244
|
+
const source = findNodeWithParent(screen.root, nodeId);
|
|
245
|
+
if (!source?.parent)
|
|
246
|
+
return null;
|
|
247
|
+
if (placement.parentId === nodeId)
|
|
248
|
+
return null;
|
|
249
|
+
if (isDescendantNode(source.node, placement.parentId))
|
|
250
|
+
return null;
|
|
251
|
+
const adjustedPlacement = adjustMovePlacement({ source, placement });
|
|
252
|
+
if (!adjustedPlacement)
|
|
253
|
+
return null;
|
|
254
|
+
const removed = removeNodeForMove({ node: screen.root, nodeId });
|
|
255
|
+
if (!removed.removedNode)
|
|
256
|
+
return null;
|
|
257
|
+
if (!validateManifestNodePlacement(removed.node, adjustedPlacement, removed.removedNode.type, componentMeta)) {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
const inserted = insertChildAtIndex({
|
|
261
|
+
node: removed.node,
|
|
262
|
+
parentId: adjustedPlacement.parentId,
|
|
263
|
+
index: adjustedPlacement.index,
|
|
264
|
+
newNode: removed.removedNode,
|
|
265
|
+
});
|
|
266
|
+
if (!inserted.inserted)
|
|
267
|
+
return null;
|
|
268
|
+
return {
|
|
269
|
+
manifest: {
|
|
270
|
+
...manifest,
|
|
271
|
+
screens: {
|
|
272
|
+
...manifest.screens,
|
|
273
|
+
[activeScreenId]: {
|
|
274
|
+
...screen,
|
|
275
|
+
root: inserted.node,
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
movedNodeId: removed.removedNode.id,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
export function updateStudioManifestAppData(manifest, data) {
|
|
283
|
+
return { ...manifest, data };
|
|
284
|
+
}
|
|
285
|
+
export function updateStudioManifestDataBindings(manifest, dataBindings) {
|
|
286
|
+
return { ...manifest, dataBindings };
|
|
287
|
+
}
|
|
288
|
+
export function updateStudioManifestDataSources(manifest, dataSources) {
|
|
289
|
+
return { ...manifest, dataSources };
|
|
290
|
+
}
|
|
291
|
+
export function createDefaultThemeConfig(themeIndex, id = generateManifestStateId('theme')) {
|
|
292
|
+
return {
|
|
293
|
+
id,
|
|
294
|
+
name: `New Theme ${themeIndex + 1}`,
|
|
295
|
+
light: {
|
|
296
|
+
primaryColor: '#3B82F6',
|
|
297
|
+
harmony: 'monochromatic',
|
|
298
|
+
},
|
|
299
|
+
dark: {
|
|
300
|
+
primaryColor: '#3B82F6',
|
|
301
|
+
harmony: 'monochromatic',
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
export function addStudioManifestTheme(manifest, theme = createDefaultThemeConfig(manifest.themes.length)) {
|
|
306
|
+
return { ...manifest, themes: [...manifest.themes, theme] };
|
|
307
|
+
}
|
|
308
|
+
export function updateStudioManifestTheme(manifest, themeId, updates) {
|
|
309
|
+
return {
|
|
310
|
+
...manifest,
|
|
311
|
+
themes: manifest.themes.map((theme) => {
|
|
312
|
+
if (theme.id !== themeId)
|
|
313
|
+
return theme;
|
|
314
|
+
return {
|
|
315
|
+
...theme,
|
|
316
|
+
...(updates.name ? { name: updates.name } : {}),
|
|
317
|
+
...(updates.light ? { light: { ...theme.light, ...updates.light } } : {}),
|
|
318
|
+
...(updates.dark ? { dark: { ...theme.dark, ...updates.dark } } : {}),
|
|
319
|
+
};
|
|
320
|
+
}),
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
export function deleteStudioManifestTheme(manifest, themeId) {
|
|
324
|
+
if (manifest.themes.length <= 1)
|
|
325
|
+
return manifest;
|
|
326
|
+
const themes = manifest.themes.filter((theme) => theme.id !== themeId);
|
|
327
|
+
const activeThemeId = manifest.activeThemeId === themeId
|
|
328
|
+
? (themes[0]?.id ?? manifest.activeThemeId)
|
|
329
|
+
: manifest.activeThemeId;
|
|
330
|
+
return { ...manifest, themes, activeThemeId };
|
|
331
|
+
}
|
|
332
|
+
export function setStudioManifestActiveThemeId(manifest, activeThemeId) {
|
|
333
|
+
return { ...manifest, activeThemeId };
|
|
334
|
+
}
|
|
335
|
+
export function setStudioManifestActiveThemeMode(manifest, activeThemeMode) {
|
|
336
|
+
return { ...manifest, activeThemeMode };
|
|
337
|
+
}
|
|
338
|
+
export function updateStudioManifestModuleConfig(manifest, moduleId, config) {
|
|
339
|
+
const previousModuleConfig = manifest.infra.modulesConfig?.[moduleId];
|
|
340
|
+
const updatedModuleConfig = {
|
|
341
|
+
...manifest.infra.modulesConfig,
|
|
342
|
+
[moduleId]: {
|
|
343
|
+
...(typeof previousModuleConfig === 'object' && previousModuleConfig !== null
|
|
344
|
+
? previousModuleConfig
|
|
345
|
+
: {}),
|
|
346
|
+
...config,
|
|
347
|
+
},
|
|
348
|
+
};
|
|
349
|
+
let nextManifest = {
|
|
350
|
+
...manifest,
|
|
351
|
+
infra: {
|
|
352
|
+
...manifest.infra,
|
|
353
|
+
modulesConfig: updatedModuleConfig,
|
|
354
|
+
},
|
|
355
|
+
};
|
|
356
|
+
if (moduleId === 'expo-localization') {
|
|
357
|
+
const previousLocalization = manifest.settings.localization;
|
|
358
|
+
const nextLocalization = { ...previousLocalization };
|
|
359
|
+
let hasLocalizationUpdate = false;
|
|
360
|
+
if (typeof config.defaultLocale === 'string') {
|
|
361
|
+
nextLocalization.defaultLocale = config.defaultLocale;
|
|
362
|
+
hasLocalizationUpdate = true;
|
|
363
|
+
}
|
|
364
|
+
if (Array.isArray(config.locales) &&
|
|
365
|
+
config.locales.every((locale) => typeof locale === 'string')) {
|
|
366
|
+
nextLocalization.locales = config.locales;
|
|
367
|
+
hasLocalizationUpdate = true;
|
|
368
|
+
}
|
|
369
|
+
if (hasLocalizationUpdate) {
|
|
370
|
+
nextManifest = {
|
|
371
|
+
...nextManifest,
|
|
372
|
+
settings: {
|
|
373
|
+
...manifest.settings,
|
|
374
|
+
localization: nextLocalization,
|
|
375
|
+
},
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return nextManifest;
|
|
380
|
+
}
|
|
381
|
+
export function updateStudioManifestOAuthProviders(manifest, providers) {
|
|
382
|
+
const previousAuth = manifest.infra.auth ?? {
|
|
383
|
+
provider: 'supabase',
|
|
384
|
+
scope: 'global',
|
|
385
|
+
authorization: { kind: 'ABAC', engine: 'cerbos' },
|
|
386
|
+
};
|
|
387
|
+
const previousOauth = previousAuth.oauth ?? {
|
|
388
|
+
enabled: true,
|
|
389
|
+
callbackRoute: '/auth/callback',
|
|
390
|
+
providers: [],
|
|
391
|
+
};
|
|
392
|
+
return {
|
|
393
|
+
...manifest,
|
|
394
|
+
infra: {
|
|
395
|
+
...manifest.infra,
|
|
396
|
+
auth: {
|
|
397
|
+
...previousAuth,
|
|
398
|
+
oauth: {
|
|
399
|
+
...previousOauth,
|
|
400
|
+
enabled: providers.length > 0,
|
|
401
|
+
providers,
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
export function getPrimaryNavigatorPath(routes) {
|
|
408
|
+
const appGroupRoute = routes.find((route) => route.name === '(app)' && route.navigator?.routes);
|
|
409
|
+
if (appGroupRoute)
|
|
410
|
+
return ['(app)'];
|
|
411
|
+
const appRoute = routes.find((route) => route.name === 'app' && route.navigator?.routes);
|
|
412
|
+
if (appRoute)
|
|
413
|
+
return ['app'];
|
|
414
|
+
return [];
|
|
415
|
+
}
|
|
416
|
+
export function findParentPathForScreenId(routes, screenId, parentPath = [], routePathPrefix = []) {
|
|
417
|
+
for (const route of routes) {
|
|
418
|
+
const routePath = [...routePathPrefix, route.name];
|
|
419
|
+
if (route.screenId === screenId)
|
|
420
|
+
return parentPath;
|
|
421
|
+
if (route.navigator?.routes.length) {
|
|
422
|
+
const nested = findParentPathForScreenId(route.navigator.routes, screenId, routePath, routePath);
|
|
423
|
+
if (nested)
|
|
424
|
+
return nested;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
export function findRoutesAtParentPath(routes, parentPath) {
|
|
430
|
+
if (parentPath.length === 0)
|
|
431
|
+
return routes;
|
|
432
|
+
const [segment, ...rest] = parentPath;
|
|
433
|
+
if (!segment)
|
|
434
|
+
return null;
|
|
435
|
+
const route = routes.find((item) => item.name === segment);
|
|
436
|
+
if (!route?.navigator?.routes)
|
|
437
|
+
return null;
|
|
438
|
+
return findRoutesAtParentPath(route.navigator.routes, rest);
|
|
439
|
+
}
|
|
440
|
+
export function insertRouteAtParentPath(routes, parentPath, newRoute) {
|
|
441
|
+
if (parentPath.length === 0)
|
|
442
|
+
return [...routes, newRoute];
|
|
443
|
+
const [segment, ...rest] = parentPath;
|
|
444
|
+
return routes.map((route) => {
|
|
445
|
+
if (route.name !== segment || !route.navigator?.routes)
|
|
446
|
+
return route;
|
|
447
|
+
return {
|
|
448
|
+
...route,
|
|
449
|
+
navigator: {
|
|
450
|
+
...route.navigator,
|
|
451
|
+
routes: insertRouteAtParentPath(route.navigator.routes, rest, newRoute),
|
|
452
|
+
},
|
|
453
|
+
};
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
export function findNavigatorAtPath(navigator, parentPath) {
|
|
457
|
+
if (parentPath.length === 0)
|
|
458
|
+
return navigator;
|
|
459
|
+
const [segment, ...rest] = parentPath;
|
|
460
|
+
if (!segment)
|
|
461
|
+
return null;
|
|
462
|
+
const route = navigator.routes.find((item) => item.name === segment);
|
|
463
|
+
if (!route?.navigator)
|
|
464
|
+
return null;
|
|
465
|
+
return findNavigatorAtPath(route.navigator, rest);
|
|
466
|
+
}
|
|
467
|
+
export function updateNavigatorAtPath(navigator, parentPath, updater) {
|
|
468
|
+
if (parentPath.length === 0)
|
|
469
|
+
return updater(navigator);
|
|
470
|
+
const [segment, ...rest] = parentPath;
|
|
471
|
+
return {
|
|
472
|
+
...navigator,
|
|
473
|
+
routes: navigator.routes.map((route) => {
|
|
474
|
+
if (route.name !== segment || !route.navigator)
|
|
475
|
+
return route;
|
|
476
|
+
return {
|
|
477
|
+
...route,
|
|
478
|
+
navigator: updateNavigatorAtPath(route.navigator, rest, updater),
|
|
479
|
+
};
|
|
480
|
+
}),
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
export function setStudioManifestNavigatorType(manifest, type) {
|
|
484
|
+
const primaryNavigatorPath = getPrimaryNavigatorPath(manifest.navigator.routes);
|
|
485
|
+
const currentNavigator = findNavigatorAtPath(manifest.navigator, primaryNavigatorPath);
|
|
486
|
+
if (!currentNavigator || currentNavigator.type === type)
|
|
487
|
+
return manifest;
|
|
488
|
+
return {
|
|
489
|
+
...manifest,
|
|
490
|
+
navigator: updateNavigatorAtPath(manifest.navigator, primaryNavigatorPath, (current) => ({
|
|
491
|
+
...current,
|
|
492
|
+
type,
|
|
493
|
+
})),
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
export function setStudioManifestNavigatorInitialRoute(manifest, routeName) {
|
|
497
|
+
const normalizedRoute = routeName.trim();
|
|
498
|
+
if (!normalizedRoute)
|
|
499
|
+
return manifest;
|
|
500
|
+
const primaryNavigatorPath = getPrimaryNavigatorPath(manifest.navigator.routes);
|
|
501
|
+
const currentNavigator = findNavigatorAtPath(manifest.navigator, primaryNavigatorPath);
|
|
502
|
+
if (!currentNavigator)
|
|
503
|
+
return manifest;
|
|
504
|
+
if (!currentNavigator.routes.some((route) => route.name === normalizedRoute))
|
|
505
|
+
return manifest;
|
|
506
|
+
if (currentNavigator.initialRouteName === normalizedRoute)
|
|
507
|
+
return manifest;
|
|
508
|
+
return {
|
|
509
|
+
...manifest,
|
|
510
|
+
navigator: updateNavigatorAtPath(manifest.navigator, primaryNavigatorPath, (current) => ({
|
|
511
|
+
...current,
|
|
512
|
+
initialRouteName: normalizedRoute,
|
|
513
|
+
})),
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
export function addStudioManifestScreen(args) {
|
|
517
|
+
const { manifest, activeScreenId, createId = generateManifestStateId } = args;
|
|
518
|
+
const trimmedName = args.name.trim();
|
|
519
|
+
if (!trimmedName)
|
|
520
|
+
return { manifest, activeScreenId };
|
|
521
|
+
const baseRouteName = normalizeRouteName(trimmedName);
|
|
522
|
+
const activeParentPath = activeScreenId
|
|
523
|
+
? findParentPathForScreenId(manifest.navigator.routes, activeScreenId)
|
|
524
|
+
: null;
|
|
525
|
+
const fallbackParentPath = getPrimaryNavigatorPath(manifest.navigator.routes);
|
|
526
|
+
const activeParentRoutes = activeParentPath !== null
|
|
527
|
+
? findRoutesAtParentPath(manifest.navigator.routes, activeParentPath)
|
|
528
|
+
: null;
|
|
529
|
+
const parentPath = activeParentPath && activeParentRoutes ? activeParentPath : fallbackParentPath;
|
|
530
|
+
const siblingRoutes = findRoutesAtParentPath(manifest.navigator.routes, parentPath) ?? [];
|
|
531
|
+
let screenId = createId('Screen');
|
|
532
|
+
while (manifest.screens[screenId]) {
|
|
533
|
+
screenId = createId('Screen');
|
|
534
|
+
}
|
|
535
|
+
const existingPatterns = new Set(collectScreenRouteEntries(manifest.navigator.routes).map((entry) => toCanonicalRoutePattern(entry.routePath)));
|
|
536
|
+
const routeName = makeUniqueRouteNameForParent(baseRouteName, siblingRoutes, parentPath, existingPatterns);
|
|
537
|
+
const newScreen = {
|
|
538
|
+
id: screenId,
|
|
539
|
+
name: trimmedName,
|
|
540
|
+
title: trimmedName,
|
|
541
|
+
root: cloneNodeWithNewIds(args.screenTemplate ?? DEFAULT_STUDIO_SCREEN_TEMPLATE, createId),
|
|
542
|
+
};
|
|
543
|
+
return {
|
|
544
|
+
activeScreenId: screenId,
|
|
545
|
+
manifest: {
|
|
546
|
+
...manifest,
|
|
547
|
+
screens: {
|
|
548
|
+
...manifest.screens,
|
|
549
|
+
[screenId]: newScreen,
|
|
550
|
+
},
|
|
551
|
+
navigator: {
|
|
552
|
+
...manifest.navigator,
|
|
553
|
+
routes: insertRouteAtParentPath(manifest.navigator.routes, parentPath, {
|
|
554
|
+
name: routeName,
|
|
555
|
+
label: trimmedName,
|
|
556
|
+
screenId,
|
|
557
|
+
}),
|
|
558
|
+
},
|
|
559
|
+
},
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
export function deleteStudioManifestScreen(manifest, screenId, activeScreenId) {
|
|
563
|
+
if (Object.keys(manifest.screens).length <= 1)
|
|
564
|
+
return { manifest, activeScreenId };
|
|
565
|
+
const { [screenId]: _deletedScreen, ...remainingScreens } = manifest.screens;
|
|
566
|
+
const remainingScreenIds = Object.keys(remainingScreens);
|
|
567
|
+
let safeRoutes = removeScreenIdFromRoutes(manifest.navigator.routes, screenId);
|
|
568
|
+
if (safeRoutes.length === 0 && remainingScreenIds.length > 0) {
|
|
569
|
+
const [fallbackScreenId] = remainingScreenIds;
|
|
570
|
+
if (!fallbackScreenId)
|
|
571
|
+
return { manifest, activeScreenId };
|
|
572
|
+
const fallbackScreen = remainingScreens[fallbackScreenId];
|
|
573
|
+
safeRoutes = [
|
|
574
|
+
{
|
|
575
|
+
name: makeUniqueSiblingRouteName('screen', []),
|
|
576
|
+
label: fallbackScreen?.name ?? 'Screen',
|
|
577
|
+
screenId: fallbackScreenId,
|
|
578
|
+
},
|
|
579
|
+
];
|
|
580
|
+
}
|
|
581
|
+
const orderedScreenIds = listScreenIdsInRouteOrder(safeRoutes).filter((id) => !!remainingScreens[id]);
|
|
582
|
+
const nextActiveScreenId = !activeScreenId || activeScreenId === screenId || !remainingScreens[activeScreenId]
|
|
583
|
+
? (orderedScreenIds[0] ?? remainingScreenIds[0] ?? null)
|
|
584
|
+
: activeScreenId;
|
|
585
|
+
return {
|
|
586
|
+
activeScreenId: nextActiveScreenId,
|
|
587
|
+
manifest: {
|
|
588
|
+
...manifest,
|
|
589
|
+
screens: remainingScreens,
|
|
590
|
+
navigator: {
|
|
591
|
+
...manifest.navigator,
|
|
592
|
+
routes: safeRoutes,
|
|
593
|
+
},
|
|
594
|
+
},
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
export function reorderStudioManifestScreens(manifest, newRoutes) {
|
|
598
|
+
return {
|
|
599
|
+
...manifest,
|
|
600
|
+
navigator: {
|
|
601
|
+
...manifest.navigator,
|
|
602
|
+
routes: newRoutes,
|
|
603
|
+
},
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
export function removeScreenIdFromRoutes(routes, screenId) {
|
|
607
|
+
const nextRoutes = [];
|
|
608
|
+
for (const route of routes) {
|
|
609
|
+
const nextRoute = { ...route };
|
|
610
|
+
if (nextRoute.screenId === screenId) {
|
|
611
|
+
delete nextRoute.screenId;
|
|
612
|
+
}
|
|
613
|
+
if (nextRoute.navigator?.routes) {
|
|
614
|
+
const nextNested = removeScreenIdFromRoutes(nextRoute.navigator.routes, screenId);
|
|
615
|
+
if (nextNested.length === 0) {
|
|
616
|
+
delete nextRoute.navigator;
|
|
617
|
+
}
|
|
618
|
+
else {
|
|
619
|
+
nextRoute.navigator = normalizeNavigatorAfterRouteUpdate({
|
|
620
|
+
...nextRoute.navigator,
|
|
621
|
+
routes: nextNested,
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
if (!nextRoute.screenId && !nextRoute.navigator)
|
|
626
|
+
continue;
|
|
627
|
+
nextRoutes.push(nextRoute);
|
|
628
|
+
}
|
|
629
|
+
return nextRoutes;
|
|
630
|
+
}
|
|
631
|
+
export function makeUniqueSiblingRouteName(base, siblingRoutes) {
|
|
632
|
+
const normalized = normalizeRouteName(base);
|
|
633
|
+
const existingNames = new Set(siblingRoutes.map((route) => route.name));
|
|
634
|
+
if (!existingNames.has(normalized))
|
|
635
|
+
return normalized;
|
|
636
|
+
let suffix = 2;
|
|
637
|
+
while (existingNames.has(`${normalized}-${suffix}`)) {
|
|
638
|
+
suffix += 1;
|
|
639
|
+
}
|
|
640
|
+
return `${normalized}-${suffix}`;
|
|
641
|
+
}
|
|
642
|
+
export function toCanonicalRoutePattern(routePath) {
|
|
643
|
+
const normalized = routePath.filter((segment) => !isRouteGroupSegment(segment));
|
|
644
|
+
while (normalized[0] === 'index')
|
|
645
|
+
normalized.shift();
|
|
646
|
+
while (normalized.at(-1) === 'index')
|
|
647
|
+
normalized.pop();
|
|
648
|
+
return normalized.length ? `/${normalized.join('/')}` : '/';
|
|
649
|
+
}
|
|
650
|
+
export function makeUniqueRouteNameForParent(baseRouteName, siblingRoutes, parentPath, existingPatterns) {
|
|
651
|
+
const siblingNames = new Set(siblingRoutes.map((route) => route.name));
|
|
652
|
+
let candidate = baseRouteName;
|
|
653
|
+
let suffix = 2;
|
|
654
|
+
while (siblingNames.has(candidate) ||
|
|
655
|
+
existingPatterns.has(toCanonicalRoutePattern([...parentPath, candidate]))) {
|
|
656
|
+
candidate = `${baseRouteName}-${suffix}`;
|
|
657
|
+
suffix += 1;
|
|
658
|
+
}
|
|
659
|
+
return candidate;
|
|
660
|
+
}
|
|
661
|
+
function normalizeRouteName(value) {
|
|
662
|
+
return (value
|
|
663
|
+
.trim()
|
|
664
|
+
.toLowerCase()
|
|
665
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
666
|
+
.replace(/^-+|-+$/g, '') || 'screen');
|
|
667
|
+
}
|
|
668
|
+
function cloneNodeWithNewIds(node, createId) {
|
|
669
|
+
const clonedNode = {
|
|
670
|
+
...node,
|
|
671
|
+
id: createId(node.type),
|
|
672
|
+
props: node.props ? { ...node.props } : node.props,
|
|
673
|
+
};
|
|
674
|
+
if (node.children) {
|
|
675
|
+
clonedNode.children = node.children.map((child) => cloneNodeWithNewIds(child, createId));
|
|
676
|
+
}
|
|
677
|
+
return clonedNode;
|
|
678
|
+
}
|
|
679
|
+
function updateNodeInManifestTree(root, id, newProps) {
|
|
680
|
+
if (root.id === id) {
|
|
681
|
+
const { alias, style, ...rest } = newProps;
|
|
682
|
+
const aliasUpdate = typeof alias === 'string' ? { alias } : {};
|
|
683
|
+
const styleUpdate = isStyleRecord(style) ? { style } : {};
|
|
684
|
+
return {
|
|
685
|
+
...root,
|
|
686
|
+
...aliasUpdate,
|
|
687
|
+
...styleUpdate,
|
|
688
|
+
props: { ...(root.props ?? {}), ...rest },
|
|
689
|
+
};
|
|
690
|
+
}
|
|
691
|
+
if (!root.children)
|
|
692
|
+
return root;
|
|
693
|
+
const nextChildren = root.children.map((child) => updateNodeInManifestTree(child, id, newProps));
|
|
694
|
+
const hasChanged = nextChildren.some((child, index) => child !== root.children?.[index]);
|
|
695
|
+
return hasChanged ? { ...root, children: nextChildren } : root;
|
|
696
|
+
}
|
|
697
|
+
function removeNodeFromManifestTree(root, nodeId) {
|
|
698
|
+
if (root.id === nodeId)
|
|
699
|
+
return null;
|
|
700
|
+
if (!root.children)
|
|
701
|
+
return root;
|
|
702
|
+
const filteredChildren = root.children.filter((child) => child.id !== nodeId);
|
|
703
|
+
if (filteredChildren.length !== root.children.length) {
|
|
704
|
+
return { ...root, children: filteredChildren };
|
|
705
|
+
}
|
|
706
|
+
const nextChildren = root.children.map((child) => removeNodeFromManifestTree(child, nodeId) ?? child);
|
|
707
|
+
const hasChanged = nextChildren.some((child, index) => child !== root.children?.[index]);
|
|
708
|
+
return hasChanged ? { ...root, children: nextChildren } : root;
|
|
709
|
+
}
|
|
710
|
+
function moveNodeInManifestTree(root, nodeId, direction) {
|
|
711
|
+
if (root.id === nodeId || !root.children)
|
|
712
|
+
return root;
|
|
713
|
+
const index = root.children.findIndex((child) => child.id === nodeId);
|
|
714
|
+
if (index !== -1) {
|
|
715
|
+
const targetIndex = direction === 'up' ? index - 1 : index + 1;
|
|
716
|
+
if (targetIndex < 0 || targetIndex >= root.children.length)
|
|
717
|
+
return root;
|
|
718
|
+
const currentNode = root.children[index];
|
|
719
|
+
const targetNode = root.children[targetIndex];
|
|
720
|
+
if (!currentNode || !targetNode)
|
|
721
|
+
return root;
|
|
722
|
+
const nextChildren = [...root.children];
|
|
723
|
+
nextChildren[index] = targetNode;
|
|
724
|
+
nextChildren[targetIndex] = currentNode;
|
|
725
|
+
return { ...root, children: nextChildren };
|
|
726
|
+
}
|
|
727
|
+
const nextChildren = root.children.map((child) => moveNodeInManifestTree(child, nodeId, direction));
|
|
728
|
+
const hasChanged = nextChildren.some((child, childIndex) => child !== root.children?.[childIndex]);
|
|
729
|
+
return hasChanged ? { ...root, children: nextChildren } : root;
|
|
730
|
+
}
|
|
731
|
+
function findNodeWithParent(root, nodeId) {
|
|
732
|
+
if (root.id === nodeId)
|
|
733
|
+
return { node: root, parent: null, index: -1 };
|
|
734
|
+
const visit = (node) => {
|
|
735
|
+
const children = node.children ?? [];
|
|
736
|
+
for (const [index, child] of children.entries()) {
|
|
737
|
+
if (child.id === nodeId)
|
|
738
|
+
return { node: child, parent: node, index };
|
|
739
|
+
const nested = visit(child);
|
|
740
|
+
if (nested)
|
|
741
|
+
return nested;
|
|
742
|
+
}
|
|
743
|
+
return null;
|
|
744
|
+
};
|
|
745
|
+
return visit(root);
|
|
746
|
+
}
|
|
747
|
+
function validateManifestNodePlacement(root, placement, childType, componentMeta) {
|
|
748
|
+
const parent = findNodeInManifest(root, placement.parentId);
|
|
749
|
+
if (!parent)
|
|
750
|
+
return false;
|
|
751
|
+
const meta = componentMeta[parent.type];
|
|
752
|
+
if (!meta?.allowedChildren.includes(childType))
|
|
753
|
+
return false;
|
|
754
|
+
const children = parent.children ?? [];
|
|
755
|
+
if (placement.referenceId && !children.some((child) => child.id === placement.referenceId)) {
|
|
756
|
+
return false;
|
|
757
|
+
}
|
|
758
|
+
return placement.index >= 0 && placement.index <= children.length;
|
|
759
|
+
}
|
|
760
|
+
function insertChildAtIndex(args) {
|
|
761
|
+
const { node, parentId, index, newNode } = args;
|
|
762
|
+
if (node.id === parentId) {
|
|
763
|
+
const children = node.children ?? [];
|
|
764
|
+
if (index < 0 || index > children.length)
|
|
765
|
+
return { node, inserted: false };
|
|
766
|
+
return {
|
|
767
|
+
node: {
|
|
768
|
+
...node,
|
|
769
|
+
children: [...children.slice(0, index), newNode, ...children.slice(index)],
|
|
770
|
+
},
|
|
771
|
+
inserted: true,
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
if (!node.children?.length)
|
|
775
|
+
return { node, inserted: false };
|
|
776
|
+
const results = node.children.map((child) => insertChildAtIndex({ node: child, parentId, index, newNode }));
|
|
777
|
+
const inserted = results.some((result) => result.inserted);
|
|
778
|
+
return inserted
|
|
779
|
+
? { node: { ...node, children: results.map((result) => result.node) }, inserted }
|
|
780
|
+
: { node, inserted };
|
|
781
|
+
}
|
|
782
|
+
function isDescendantNode(node, descendantId) {
|
|
783
|
+
for (const child of node.children ?? []) {
|
|
784
|
+
if (child.id === descendantId || isDescendantNode(child, descendantId))
|
|
785
|
+
return true;
|
|
786
|
+
}
|
|
787
|
+
return false;
|
|
788
|
+
}
|
|
789
|
+
function removeNodeForMove(args) {
|
|
790
|
+
const { node, nodeId } = args;
|
|
791
|
+
const children = node.children ?? [];
|
|
792
|
+
const directIndex = children.findIndex((child) => child.id === nodeId);
|
|
793
|
+
if (directIndex !== -1) {
|
|
794
|
+
const removedNode = children[directIndex];
|
|
795
|
+
if (!removedNode)
|
|
796
|
+
return { node, removedNode: null };
|
|
797
|
+
return {
|
|
798
|
+
node: {
|
|
799
|
+
...node,
|
|
800
|
+
children: children.filter((child) => child.id !== nodeId),
|
|
801
|
+
},
|
|
802
|
+
removedNode,
|
|
803
|
+
};
|
|
804
|
+
}
|
|
805
|
+
const nextChildren = [];
|
|
806
|
+
let removedNode = null;
|
|
807
|
+
for (const child of children) {
|
|
808
|
+
if (removedNode) {
|
|
809
|
+
nextChildren.push(child);
|
|
810
|
+
continue;
|
|
811
|
+
}
|
|
812
|
+
const { node: nextChild, removedNode: nextRemovedNode } = removeNodeForMove({
|
|
813
|
+
node: child,
|
|
814
|
+
nodeId,
|
|
815
|
+
});
|
|
816
|
+
if (nextRemovedNode)
|
|
817
|
+
removedNode = nextRemovedNode;
|
|
818
|
+
nextChildren.push(nextChild);
|
|
819
|
+
}
|
|
820
|
+
if (!removedNode)
|
|
821
|
+
return { node, removedNode: null };
|
|
822
|
+
return { node: { ...node, children: nextChildren }, removedNode };
|
|
823
|
+
}
|
|
824
|
+
function adjustMovePlacement(args) {
|
|
825
|
+
const { source, placement } = args;
|
|
826
|
+
if (!source.parent)
|
|
827
|
+
return null;
|
|
828
|
+
if (placement.referenceId === source.node.id)
|
|
829
|
+
return null;
|
|
830
|
+
if (placement.parentId !== source.parent.id)
|
|
831
|
+
return placement;
|
|
832
|
+
const adjustedIndex = source.index < placement.index ? placement.index - 1 : placement.index;
|
|
833
|
+
if (adjustedIndex === source.index)
|
|
834
|
+
return null;
|
|
835
|
+
return { ...placement, index: adjustedIndex };
|
|
836
|
+
}
|
|
837
|
+
function normalizeNavigatorAfterRouteUpdate(navigator) {
|
|
838
|
+
const nextRoutes = navigator.routes;
|
|
839
|
+
let nextInitialRouteName = navigator.initialRouteName;
|
|
840
|
+
if (nextRoutes.length === 0) {
|
|
841
|
+
nextInitialRouteName = undefined;
|
|
842
|
+
}
|
|
843
|
+
else if (nextInitialRouteName &&
|
|
844
|
+
!nextRoutes.some((route) => route.name === nextInitialRouteName)) {
|
|
845
|
+
nextInitialRouteName = nextRoutes[0]?.name;
|
|
846
|
+
}
|
|
847
|
+
if (nextInitialRouteName === undefined) {
|
|
848
|
+
const { initialRouteName: _omit, ...restNavigator } = navigator;
|
|
849
|
+
return { ...restNavigator, routes: nextRoutes };
|
|
850
|
+
}
|
|
851
|
+
return { ...navigator, routes: nextRoutes, initialRouteName: nextInitialRouteName };
|
|
852
|
+
}
|
|
853
|
+
function isStyleRecord(value) {
|
|
854
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
855
|
+
return false;
|
|
856
|
+
return Object.values(value).every((entry) => typeof entry === 'string' || typeof entry === 'number');
|
|
857
|
+
}
|
|
858
|
+
//# sourceMappingURL=manifestState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifestState.js","sourceRoot":"","sources":["../src/manifestState.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Studio authoring package for Ankhorage apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/studio#readme",
|
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
".": {
|
|
28
28
|
"types": "./dist/index.d.ts",
|
|
29
29
|
"import": "./dist/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./manifestState": {
|
|
32
|
+
"types": "./dist/manifestState.d.ts",
|
|
33
|
+
"import": "./dist/manifestState.js"
|
|
30
34
|
}
|
|
31
35
|
},
|
|
32
36
|
"scripts": {
|