@ankhorage/studio 0.14.0 → 0.16.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/README.md +2 -2
- package/dist/canvasDragModel.d.ts +24 -0
- package/dist/canvasDragModel.d.ts.map +1 -1
- package/dist/canvasDragModel.js +58 -0
- package/dist/canvasDragModel.js.map +1 -1
- package/dist/canvasDropZones.d.ts +2 -2
- package/dist/canvasDropZones.d.ts.map +1 -1
- package/dist/canvasDropZones.js +20 -4
- package/dist/canvasDropZones.js.map +1 -1
- package/dist/contractGuards.d.ts.map +1 -1
- package/dist/contractGuards.js +4 -2
- package/dist/contractGuards.js.map +1 -1
- package/dist/core/StudioProvider.d.ts +3 -2
- package/dist/core/StudioProvider.d.ts.map +1 -1
- package/dist/core/StudioProvider.js +150 -17
- package/dist/core/StudioProvider.js.map +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js +2 -2
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -1
- package/dist/host/layout/layoutGenerator.d.ts.map +1 -1
- package/dist/host/layout/layoutGenerator.js +5 -3
- package/dist/host/layout/layoutGenerator.js.map +1 -1
- package/dist/host/layout/templates/navigation.js +4 -10
- package/dist/host/layout/templates/navigation.js.map +1 -1
- package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
- package/dist/host/layout/templates/rootLayout.js +25 -7
- package/dist/host/layout/templates/rootLayout.js.map +1 -1
- package/dist/host/orchestrator/templates.d.ts.map +1 -1
- package/dist/host/orchestrator/templates.js +1 -11
- package/dist/host/orchestrator/templates.js.map +1 -1
- package/dist/host/templateRegistry/index.d.ts.map +1 -1
- package/dist/host/templateRegistry/index.js +2 -17
- package/dist/host/templateRegistry/index.js.map +1 -1
- package/dist/index.d.ts +9 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -59
- package/dist/index.js.map +1 -1
- package/dist/manifestNavigatorPreviewModel.js +1 -1
- package/dist/manifestNavigatorPreviewModel.js.map +1 -1
- package/dist/manifestState.d.ts +59 -3
- package/dist/manifestState.d.ts.map +1 -1
- package/dist/manifestState.js +364 -229
- package/dist/manifestState.js.map +1 -1
- package/dist/routeUtils.d.ts +1 -2
- package/dist/routeUtils.d.ts.map +1 -1
- package/dist/routeUtils.js +6 -44
- package/dist/routeUtils.js.map +1 -1
- package/dist/runtime/runtimeNodeMeasurement.d.ts +6 -3
- package/dist/runtime/runtimeNodeMeasurement.d.ts.map +1 -1
- package/dist/runtime/runtimeNodeMeasurement.js +26 -11
- package/dist/runtime/runtimeNodeMeasurement.js.map +1 -1
- package/dist/runtime/stationarySelection.d.ts +10 -0
- package/dist/runtime/stationarySelection.d.ts.map +1 -1
- package/dist/runtime/stationarySelection.js +69 -20
- package/dist/runtime/stationarySelection.js.map +1 -1
- package/dist/studioAdminRouteModel.d.ts +7 -1
- package/dist/studioAdminRouteModel.d.ts.map +1 -1
- package/dist/studioAdminRouteModel.js +54 -0
- package/dist/studioAdminRouteModel.js.map +1 -1
- package/dist/ui/StudioDeleteDialog.d.ts +9 -0
- package/dist/ui/StudioDeleteDialog.d.ts.map +1 -0
- package/dist/ui/StudioDeleteDialog.js +7 -0
- package/dist/ui/StudioDeleteDialog.js.map +1 -0
- package/dist/ui/StudioInsertDialog.d.ts +14 -0
- package/dist/ui/StudioInsertDialog.d.ts.map +1 -0
- package/dist/ui/StudioInsertDialog.js +28 -0
- package/dist/ui/StudioInsertDialog.js.map +1 -0
- package/dist/ui/admin/AnkhAdminPage.d.ts.map +1 -1
- package/dist/ui/admin/AnkhAdminPage.js +5 -1
- package/dist/ui/admin/AnkhAdminPage.js.map +1 -1
- package/dist/ui/admin/AnkhAdminShell.d.ts.map +1 -1
- package/dist/ui/admin/AnkhAdminShell.js +5 -2
- package/dist/ui/admin/AnkhAdminShell.js.map +1 -1
- package/dist/ui/admin/pages/ScreenDetailAdminPage.d.ts +6 -0
- package/dist/ui/admin/pages/ScreenDetailAdminPage.d.ts.map +1 -0
- package/dist/ui/admin/pages/ScreenDetailAdminPage.js +86 -0
- package/dist/ui/admin/pages/ScreenDetailAdminPage.js.map +1 -0
- package/dist/ui/admin/pages/ScreensAdminPage.d.ts +3 -0
- package/dist/ui/admin/pages/ScreensAdminPage.d.ts.map +1 -0
- package/dist/ui/admin/pages/ScreensAdminPage.js +99 -0
- package/dist/ui/admin/pages/ScreensAdminPage.js.map +1 -0
- package/dist/ui/admin/pages/screens/screensAdminActions.d.ts +28 -0
- package/dist/ui/admin/pages/screens/screensAdminActions.d.ts.map +1 -0
- package/dist/ui/admin/pages/screens/screensAdminActions.js +22 -0
- package/dist/ui/admin/pages/screens/screensAdminActions.js.map +1 -0
- package/dist/ui/canvas/StudioCanvasDndOverlay.d.ts +15 -0
- package/dist/ui/canvas/StudioCanvasDndOverlay.d.ts.map +1 -0
- package/dist/ui/canvas/StudioCanvasDndOverlay.js +128 -0
- package/dist/ui/canvas/StudioCanvasDndOverlay.js.map +1 -0
- package/dist/ui/canvas/canvasDndInteraction.d.ts +20 -0
- package/dist/ui/canvas/canvasDndInteraction.d.ts.map +1 -0
- package/dist/ui/canvas/canvasDndInteraction.js +32 -0
- package/dist/ui/canvas/canvasDndInteraction.js.map +1 -0
- package/dist/ui/studioAppBarModel.d.ts +4 -1
- package/dist/ui/studioAppBarModel.d.ts.map +1 -1
- package/dist/ui/studioAppBarModel.js +6 -0
- package/dist/ui/studioAppBarModel.js.map +1 -1
- package/dist/ui/useStudioAppBarAugmentation.d.ts +1 -0
- package/dist/ui/useStudioAppBarAugmentation.d.ts.map +1 -1
- package/dist/ui/useStudioAppBarAugmentation.js +86 -15
- package/dist/ui/useStudioAppBarAugmentation.js.map +1 -1
- package/dist/utils/treeUtils.d.ts +2 -2
- package/dist/utils/treeUtils.d.ts.map +1 -1
- package/dist/utils/treeUtils.js +2 -2
- package/dist/utils/treeUtils.js.map +1 -1
- package/package.json +3 -15
- package/dist/dnd/index.d.ts +0 -3
- package/dist/dnd/index.d.ts.map +0 -1
- package/dist/dnd/index.js +0 -3
- package/dist/dnd/index.js.map +0 -1
- package/dist/dnd/primitives.d.ts +0 -2
- package/dist/dnd/primitives.d.ts.map +0 -1
- package/dist/dnd/primitives.js +0 -2
- package/dist/dnd/primitives.js.map +0 -1
- package/dist/dnd/state.d.ts +0 -6
- package/dist/dnd/state.d.ts.map +0 -1
- package/dist/dnd/state.js +0 -5
- package/dist/dnd/state.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnkhAdminPage.js","sourceRoot":"","sources":["../../../src/ui/admin/AnkhAdminPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"AnkhAdminPage.js","sourceRoot":"","sources":["../../../src/ui/admin/AnkhAdminPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnkhAdminShell.d.ts","sourceRoot":"","sources":["../../../src/ui/admin/AnkhAdminShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AnkhAdminShell.d.ts","sourceRoot":"","sources":["../../../src/ui/admin/AnkhAdminShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAgBxC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,qBAsF/D"}
|
|
@@ -5,7 +5,7 @@ import React, { useState } from 'react';
|
|
|
5
5
|
import { Pressable, ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
6
6
|
import { SafeAreaView } from 'react-native-safe-area-context';
|
|
7
7
|
import { useStudio } from '../../core/StudioContext';
|
|
8
|
-
import { createStudioAdminRoutePath, getStudioAdminRouteDefinition, isStudioAdminRouteActive, isStudioAdminRouteAvailable, resolveStudioAdminActiveRouteId, STUDIO_ADMIN_ROUTE_REGISTRY, } from '../../studioAdminRouteModel';
|
|
8
|
+
import { createStudioAdminRoutePath, getStudioAdminRouteDefinition, isStudioAdminRouteActive, isStudioAdminRouteAvailable, resolveStudioAdminActiveRouteId, resolveStudioScreenId, STUDIO_ADMIN_ROUTE_REGISTRY, } from '../../studioAdminRouteModel';
|
|
9
9
|
export function AnkhAdminShell({ children }) {
|
|
10
10
|
const studio = useStudio();
|
|
11
11
|
const pathname = usePathname();
|
|
@@ -14,12 +14,14 @@ export function AnkhAdminShell({ children }) {
|
|
|
14
14
|
const { theme } = useZoraTheme();
|
|
15
15
|
const [drawerOpen, setDrawerOpen] = useState(false);
|
|
16
16
|
const activeRouteId = resolveStudioAdminActiveRouteId(pathname);
|
|
17
|
+
const contextualScreenId = resolveStudioScreenId(pathname) ?? studio.activeScreenId;
|
|
17
18
|
const activeDefinition = getStudioAdminRouteDefinition(activeRouteId);
|
|
18
19
|
const compact = width < 900;
|
|
19
20
|
const openRoute = (routeId) => {
|
|
20
21
|
const path = createStudioAdminRoutePath({
|
|
21
22
|
routeId,
|
|
22
23
|
selectedNodeId: studio.selectedNodeId,
|
|
24
|
+
screenId: contextualScreenId,
|
|
23
25
|
});
|
|
24
26
|
if (!path)
|
|
25
27
|
return;
|
|
@@ -30,7 +32,7 @@ export function AnkhAdminShell({ children }) {
|
|
|
30
32
|
const goBackToApp = () => {
|
|
31
33
|
router.replace(studio.lastNonAdminLocation || '/');
|
|
32
34
|
};
|
|
33
|
-
const nav = (_jsx(AdminNavigation, { activeRouteId: activeRouteId, selectedNodeId: studio.selectedNodeId, onRoutePress: openRoute }));
|
|
35
|
+
const nav = (_jsx(AdminNavigation, { activeRouteId: activeRouteId, selectedNodeId: studio.selectedNodeId, screenId: contextualScreenId, onRoutePress: openRoute }));
|
|
34
36
|
return (_jsxs(SafeAreaView, { style: [styles.shell, { backgroundColor: theme.colors.background }], children: [_jsx(AppBar, { title: activeDefinition.label, subtitle: activeDefinition.description, leading: _jsx(IconButton, { icon: { name: 'arrow-back-outline' }, label: "Back to app", variant: "ghost", color: "neutral", onPress: goBackToApp }), actions: compact ? (_jsx(IconButton, { icon: { name: 'menu-outline' }, label: "Open administration navigation", variant: "ghost", color: "neutral", onPress: () => setDrawerOpen(true) })) : null }), compact ? (_jsx(Drawer, { visible: drawerOpen, position: "left", title: "Administration", closeOnBackdrop: true, onDismiss: () => setDrawerOpen(false), children: nav })) : null, _jsx(View, { style: styles.body, children: compact ? (_jsx(View, { style: styles.contentOnly, children: children ?? _jsx(Slot, {}) })) : (_jsx(SidebarLayout, { sidebar: nav, sidebarWidth: 260, children: _jsx(View, { style: styles.contentOnly, children: children ?? _jsx(Slot, {}) }) })) })] }));
|
|
35
37
|
}
|
|
36
38
|
function AdminNavigation(props) {
|
|
@@ -38,6 +40,7 @@ function AdminNavigation(props) {
|
|
|
38
40
|
return (_jsxs(ScrollView, { contentContainerStyle: styles.navigationContent, children: [_jsx(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: "Administration" }), STUDIO_ADMIN_ROUTE_REGISTRY.map((route) => {
|
|
39
41
|
const available = isStudioAdminRouteAvailable(route.id, {
|
|
40
42
|
selectedNodeId: props.selectedNodeId,
|
|
43
|
+
screenId: props.screenId,
|
|
41
44
|
});
|
|
42
45
|
const active = isStudioAdminRouteActive({
|
|
43
46
|
currentRouteId: props.activeRouteId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnkhAdminShell.js","sourceRoot":"","sources":["../../../src/ui/admin/AnkhAdminShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,2BAA2B,EAC3B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAMrC,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAuB;IAC9D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,aAAa,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC;IAE5B,MAAM,SAAS,GAAG,CAAC,OAA2B,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,0BAA0B,CAAC;YACtC,OAAO;YACP,cAAc,EAAE,MAAM,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"AnkhAdminShell.js","sourceRoot":"","sources":["../../../src/ui/admin/AnkhAdminShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ScreenDetailAdminPageProps {
|
|
3
|
+
readonly screenId: string | null;
|
|
4
|
+
}
|
|
5
|
+
export declare function ScreenDetailAdminPage({ screenId }: ScreenDetailAdminPageProps): React.JSX.Element;
|
|
6
|
+
//# sourceMappingURL=ScreenDetailAdminPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenDetailAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/ScreenDetailAdminPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAavC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,0BAA0B,qBAgI7E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, ButtonGroup, Card, ListRow, ListSection, Text } from '@ankhorage/zora';
|
|
3
|
+
import { useRouter } from 'expo-router';
|
|
4
|
+
import React, { useMemo } from 'react';
|
|
5
|
+
import { StyleSheet, View } from 'react-native';
|
|
6
|
+
import { useStudio } from '../../../core/StudioContext';
|
|
7
|
+
import { deriveStudioScreenNavigationModel, resolveStudioScreenAppPath, } from '../../../manifestState';
|
|
8
|
+
import { createStudioAdminRoutePath } from '../../../studioAdminRouteModel';
|
|
9
|
+
import { AdminHeader, AdminScroll } from '../adminPagePrimitives';
|
|
10
|
+
export function ScreenDetailAdminPage({ screenId }) {
|
|
11
|
+
const studio = useStudio();
|
|
12
|
+
const router = useRouter();
|
|
13
|
+
const model = useMemo(() => (studio.manifest ? deriveStudioScreenNavigationModel(studio.manifest) : null), [studio.manifest]);
|
|
14
|
+
const screensPath = createStudioAdminRoutePath({ routeId: 'screens' });
|
|
15
|
+
const openScreens = () => {
|
|
16
|
+
if (screensPath)
|
|
17
|
+
router.push(screensPath);
|
|
18
|
+
};
|
|
19
|
+
if (!screenId) {
|
|
20
|
+
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Invalid screen route", description: "This URL does not contain one valid encoded ScreenSpec.id." }), _jsx(Button, { variant: "outline", onPress: openScreens, children: "Back to Screens" })] }));
|
|
21
|
+
}
|
|
22
|
+
if (!model) {
|
|
23
|
+
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Screen detail", description: "Canonical screen metadata is unavailable until the manifest loads." }), _jsx(Card, { compact: true, title: "Requested screen ID", children: _jsx(Text, { children: screenId }) })] }));
|
|
24
|
+
}
|
|
25
|
+
const matchingEntries = model.screens.filter((candidate) => candidate.screenId === screenId);
|
|
26
|
+
if (matchingEntries.length > 1) {
|
|
27
|
+
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Screen identity is ambiguous", description: "Multiple screen registry entries use this stable ScreenSpec.id. Studio will not select one arbitrarily." }), _jsx(Card, { compact: true, title: "Ambiguous stable screen ID", children: _jsx(Text, { children: screenId }) }), _jsx(Button, { variant: "outline", onPress: openScreens, children: "Back to Screens" })] }));
|
|
28
|
+
}
|
|
29
|
+
const [entry] = matchingEntries;
|
|
30
|
+
if (!entry) {
|
|
31
|
+
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Screen not found", description: "The requested screen is missing or was deleted from the canonical manifest." }), _jsx(Card, { compact: true, title: "Requested stable screen ID", children: _jsx(Text, { children: screenId }) }), _jsx(Button, { variant: "outline", onPress: openScreens, children: "Back to Screens" })] }));
|
|
32
|
+
}
|
|
33
|
+
const appPath = resolveStudioScreenAppPath(model, entry.screenId);
|
|
34
|
+
const label = entry.screen.title ?? entry.screen.name;
|
|
35
|
+
const openAppScreen = () => {
|
|
36
|
+
if (appPath)
|
|
37
|
+
router.replace(appPath);
|
|
38
|
+
};
|
|
39
|
+
return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: label, description: "Canonical screen metadata and every manifest route reference for this stable screen ID." }), _jsxs(Card, { title: "Screen metadata", description: "Identity comes only from ScreenSpec.id.", children: [_jsx(MetadataFact, { label: "Stable screen ID", value: entry.screen.id }), _jsx(MetadataFact, { label: "Name", value: entry.screen.name }), _jsx(MetadataFact, { label: "Title", value: entry.screen.title ?? 'Not set' }), _jsx(MetadataFact, { label: "Description", value: entry.screen.description ?? 'Not set' })] }), _jsxs(ButtonGroup, { orientation: "responsive", align: "start", children: [_jsx(Button, { variant: "outline", onPress: openScreens, children: "Back to Screens" }), appPath ? _jsx(Button, { onPress: openAppScreen, children: "Open app screen" }) : null] }), !appPath ? _jsx(AppPathUnavailable, { entry: entry }) : null, _jsx(ListSection, { title: "Route references", description: formatRouteReferenceSummary(entry.routeReferences.length), children: entry.routeReferences.length === 0 ? (_jsx(ListRow, { title: "Unrouted screen", description: "This screen exists canonically but has no navigator route reference.", variant: "card" })) : (entry.routeReferences.map((reference, index) => (_jsx(RouteReferenceRow, { reference: reference, index: index }, `${formatRoutePath(reference.parentPath)}:${reference.route.name}:${index}`)))) })] }));
|
|
40
|
+
}
|
|
41
|
+
function MetadataFact(props) {
|
|
42
|
+
return (_jsxs(View, { style: styles.fact, children: [_jsx(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: props.label }), _jsx(Text, { children: props.value })] }));
|
|
43
|
+
}
|
|
44
|
+
function AppPathUnavailable({ entry }) {
|
|
45
|
+
let description = 'This screen has no route reference, so there is no app pathname to open.';
|
|
46
|
+
if (entry.routeReferences.length > 1) {
|
|
47
|
+
description = `This screen has ${entry.routeReferences.length} route references. Studio will not choose one arbitrarily.`;
|
|
48
|
+
}
|
|
49
|
+
else if (entry.routeReferences.length === 1) {
|
|
50
|
+
description =
|
|
51
|
+
'The canonical route reference does not resolve to one concrete, unambiguous app pathname because it is dynamic or collides with another route pattern.';
|
|
52
|
+
}
|
|
53
|
+
return _jsx(Card, { compact: true, title: "Open app screen unavailable", description: description });
|
|
54
|
+
}
|
|
55
|
+
function RouteReferenceRow(props) {
|
|
56
|
+
const { reference } = props;
|
|
57
|
+
const primaryVisibility = reference.isPrimaryNavigatorMember
|
|
58
|
+
? `${reference.showInPrimaryNavigation ? 'Visible' : 'Hidden'}${reference.navigatorType === 'stack' ? ' (Stack has no primary-navigation chrome)' : ''}`
|
|
59
|
+
: 'Not applicable to this nested navigator reference';
|
|
60
|
+
const initialRoute = reference.isPrimaryNavigatorMember
|
|
61
|
+
? reference.isPrimaryInitialRoute
|
|
62
|
+
? 'Yes'
|
|
63
|
+
: 'No'
|
|
64
|
+
: 'Not applicable outside the primary navigator';
|
|
65
|
+
return (_jsx(ListRow, { title: reference.route.label ?? reference.route.name, meta: `Reference ${props.index + 1}`, variant: "card", description: _jsxs(View, { style: styles.referenceFacts, children: [_jsx(MetadataFact, { label: "Route key", value: reference.route.name }), _jsx(MetadataFact, { label: "Declared route path", value: reference.route.path ?? 'Derived from route key' }), _jsx(MetadataFact, { label: "Canonical pathname/pattern", value: reference.pathnamePattern }), _jsx(MetadataFact, { label: "Navigator parent", value: formatRoutePath(reference.parentPath) }), _jsx(MetadataFact, { label: "Navigator type", value: reference.navigatorType }), _jsx(MetadataFact, { label: "Sibling order", value: String(reference.siblingIndex + 1) }), _jsx(MetadataFact, { label: "Primary navigator member", value: reference.isPrimaryNavigatorMember ? 'Yes' : 'No' }), _jsx(MetadataFact, { label: "Primary-navigation visibility", value: primaryVisibility }), _jsx(MetadataFact, { label: "Primary initial route", value: initialRoute })] }) }));
|
|
66
|
+
}
|
|
67
|
+
function formatRouteReferenceSummary(count) {
|
|
68
|
+
if (count === 0)
|
|
69
|
+
return 'No route references resolve to this screen.';
|
|
70
|
+
if (count === 1)
|
|
71
|
+
return 'One canonical route reference resolves to this screen.';
|
|
72
|
+
return `${count} canonical route references resolve to this screen; each is shown separately.`;
|
|
73
|
+
}
|
|
74
|
+
function formatRoutePath(routePath) {
|
|
75
|
+
return routePath.length === 0 ? 'root' : routePath.join('/');
|
|
76
|
+
}
|
|
77
|
+
const styles = StyleSheet.create({
|
|
78
|
+
fact: {
|
|
79
|
+
gap: 2,
|
|
80
|
+
},
|
|
81
|
+
referenceFacts: {
|
|
82
|
+
gap: 10,
|
|
83
|
+
paddingTop: 4,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=ScreenDetailAdminPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenDetailAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/ScreenDetailAdminPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreensAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/ScreensAdminPage.tsx"],"names":[],"mappings":"AAaA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAyBjD,wBAAgB,gBAAgB,sBAqI/B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { NAVIGATOR_TYPES } from '@ankhorage/contracts';
|
|
3
|
+
import { Button, ButtonGroup, Card, ConfirmDialog, Input, ListRow, ListSection, Select, SwitchField, Text, } from '@ankhorage/zora';
|
|
4
|
+
import React, { useMemo, useState } from 'react';
|
|
5
|
+
import { useRouter } from 'expo-router';
|
|
6
|
+
import { StyleSheet, View } from 'react-native';
|
|
7
|
+
import { useStudio } from '../../../core/StudioContext';
|
|
8
|
+
import { deriveStudioScreenNavigationModel, findNavigatorAtPath, } from '../../../manifestState';
|
|
9
|
+
import { createStudioScreenRoutePath } from '../../../studioAdminRouteModel';
|
|
10
|
+
import { AdminHeader, AdminScroll } from '../adminPagePrimitives';
|
|
11
|
+
import { applyScreensAdminAction } from './screens/screensAdminActions';
|
|
12
|
+
const NAVIGATOR_OPTIONS = NAVIGATOR_TYPES.map((value) => ({
|
|
13
|
+
value,
|
|
14
|
+
label: value[0]?.toUpperCase() + value.slice(1),
|
|
15
|
+
}));
|
|
16
|
+
export function ScreensAdminPage() {
|
|
17
|
+
const studio = useStudio();
|
|
18
|
+
const router = useRouter();
|
|
19
|
+
const [newScreenName, setNewScreenName] = useState('');
|
|
20
|
+
const [pendingDelete, setPendingDelete] = useState(null);
|
|
21
|
+
const model = useMemo(() => (studio.manifest ? deriveStudioScreenNavigationModel(studio.manifest) : null), [studio.manifest]);
|
|
22
|
+
const dispatch = (action) => applyScreensAdminAction(studio, action);
|
|
23
|
+
const createScreen = () => {
|
|
24
|
+
const name = newScreenName.trim();
|
|
25
|
+
if (!name)
|
|
26
|
+
return;
|
|
27
|
+
dispatch({ type: 'create-screen', name });
|
|
28
|
+
setNewScreenName('');
|
|
29
|
+
};
|
|
30
|
+
const confirmDelete = () => {
|
|
31
|
+
if (!pendingDelete)
|
|
32
|
+
return;
|
|
33
|
+
dispatch({ type: 'delete-screen', screenId: pendingDelete.screenId });
|
|
34
|
+
setPendingDelete(null);
|
|
35
|
+
};
|
|
36
|
+
if (!studio.manifest || !model) {
|
|
37
|
+
return (_jsx(AdminScroll, { children: _jsx(AdminHeader, { title: "Screens", description: "Screens and primary app navigation are unavailable until the manifest loads." }) }));
|
|
38
|
+
}
|
|
39
|
+
const manifest = studio.manifest;
|
|
40
|
+
return (_jsxs(_Fragment, { children: [_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: "Screens", description: "Manage canonical screens and how direct routes participate in primary app navigation." }), _jsxs(Card, { title: "Primary navigator", description: "Changes preserve the existing nested route tree.", children: [_jsxs(View, { style: styles.field, children: [_jsx(Text, { variant: "bodySmall", weight: "semiBold", children: "Navigator type" }), _jsx(Select, { value: model.primaryNavigator.type, options: NAVIGATOR_OPTIONS, onValueChange: (navigatorType) => dispatch({ type: 'set-navigator-type', navigatorType }) })] }), _jsxs(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: ["Primary navigator path: ", formatParentPath(model.primaryNavigatorPath)] })] }), _jsx(Card, { title: "Create screen", description: "New screens are routed in the primary navigator.", children: _jsxs(View, { style: styles.createRow, children: [_jsx(View, { style: styles.createInput, children: _jsx(Input, { accessibilityLabel: "New screen name", placeholder: "Screen name", value: newScreenName, onChangeText: setNewScreenName, onSubmitEditing: createScreen }) }), _jsx(Button, { disabled: !newScreenName.trim(), onPress: createScreen, children: "Create screen" })] }) }), model.diagnostics.length > 0 ? (_jsx(ListSection, { title: "Navigation diagnostics", description: "Resolve these manifest states before relying on ambiguous route mutations.", children: model.diagnostics.map((diagnostic, index) => (_jsx(ListRow, { title: diagnostic.code, description: diagnostic.message, meta: formatParentPath(diagnostic.parentPath), variant: "card" }, `${diagnostic.code}:${diagnostic.routeName ?? diagnostic.screenId ?? index}`))) })) : null, _jsx(ListSection, { title: "Screens", description: `${model.screens.length} canonical screen${model.screens.length === 1 ? '' : 's'}. Route existence and primary-navigation visibility are separate.`, children: model.screens.map((entry, index) => (_jsx(ScreenOverviewRow, { entry: entry, screenCount: model.screens.length, manifest: manifest, dispatch: dispatch, onOpenDetail: (screenId) => router.push(createStudioScreenRoutePath(screenId)), onRequestDelete: setPendingDelete }, `${entry.screenId}:${index}`))) })] }), _jsx(ConfirmDialog, { visible: pendingDelete !== null, title: "Delete screen?", description: pendingDelete
|
|
41
|
+
? `Delete ${pendingDelete.label}, all of its route references, and bindings owned by its node tree?`
|
|
42
|
+
: undefined, confirmLabel: "Delete screen", confirmColor: "danger", onCancel: () => setPendingDelete(null), onConfirm: confirmDelete })] }));
|
|
43
|
+
}
|
|
44
|
+
function ScreenOverviewRow(props) {
|
|
45
|
+
const { entry } = props;
|
|
46
|
+
const label = entry.screen.title ?? entry.screen.name;
|
|
47
|
+
const canDelete = props.screenCount > 1;
|
|
48
|
+
return (_jsx(ListRow, { title: label, meta: entry.screenId, variant: "card", action: _jsxs(ButtonGroup, { orientation: "responsive", align: "end", children: [_jsx(Button, { variant: "outline", onPress: () => props.onOpenDetail(entry.screenId), children: "Details" }), _jsx(Button, { color: "danger", variant: "ghost", disabled: !canDelete, onPress: () => props.onRequestDelete({ screenId: entry.screenId, label }), children: "Delete" })] }), description: _jsxs(View, { style: styles.screenDetails, children: [entry.screen.name !== label ? (_jsxs(Text, { color: "neutral", variant: "bodySmall", children: ["Name: ", entry.screen.name] })) : null, !canDelete ? (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: "The final remaining screen cannot be deleted." })) : null, entry.routeReferences.length === 0 ? (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "Unrouted screen" })) : (entry.routeReferences.map((reference) => (_jsx(ScreenRouteReferenceControls, { reference: reference, siblingCount: findNavigatorAtPath(props.manifest.navigator, reference.parentPath)?.routes
|
|
49
|
+
.length ?? 0, dispatch: props.dispatch }, `${formatParentPath(reference.parentPath)}:${reference.route.name}`))))] }) }));
|
|
50
|
+
}
|
|
51
|
+
function ScreenRouteReferenceControls(props) {
|
|
52
|
+
const { reference } = props;
|
|
53
|
+
const routeContext = `${formatParentPath(reference.parentPath)} · ${reference.navigatorType}`;
|
|
54
|
+
return (_jsxs(Card, { compact: true, title: reference.route.label ?? reference.route.name, description: routeContext, children: [_jsxs(View, { style: styles.routeFacts, children: [_jsxs(Text, { color: "neutral", variant: "bodySmall", children: ["Path: ", reference.pathnamePattern] }), _jsxs(Text, { color: "neutral", variant: "bodySmall", children: ["Route key: ", reference.route.name, " \u00B7 Order ", reference.siblingIndex + 1] })] }), reference.isPrimaryNavigatorMember ? (_jsxs(_Fragment, { children: [_jsx(SwitchField, { label: "Visible in primary navigation", description: "Hidden routes remain valid and programmatically navigable.", value: reference.showInPrimaryNavigation, onValueChange: (showInPrimaryNavigation) => props.dispatch({
|
|
55
|
+
type: 'set-primary-navigation-visibility',
|
|
56
|
+
parentPath: reference.parentPath,
|
|
57
|
+
routeName: reference.route.name,
|
|
58
|
+
showInPrimaryNavigation,
|
|
59
|
+
}) }), _jsxs(ButtonGroup, { orientation: "responsive", align: "start", children: [_jsx(Button, { variant: "outline", disabled: reference.isPrimaryInitialRoute, onPress: () => props.dispatch({
|
|
60
|
+
type: 'set-initial-route',
|
|
61
|
+
routeName: reference.route.name,
|
|
62
|
+
}), children: reference.isPrimaryInitialRoute ? 'Initial route' : 'Set as initial' }), _jsx(Button, { color: "neutral", variant: "ghost", disabled: reference.siblingIndex === 0, onPress: () => props.dispatch({
|
|
63
|
+
type: 'move-route',
|
|
64
|
+
parentPath: reference.parentPath,
|
|
65
|
+
routeName: reference.route.name,
|
|
66
|
+
toIndex: reference.siblingIndex - 1,
|
|
67
|
+
}), children: "Move up" }), _jsx(Button, { color: "neutral", variant: "ghost", disabled: reference.siblingIndex >= props.siblingCount - 1, onPress: () => props.dispatch({
|
|
68
|
+
type: 'move-route',
|
|
69
|
+
parentPath: reference.parentPath,
|
|
70
|
+
routeName: reference.route.name,
|
|
71
|
+
toIndex: reference.siblingIndex + 1,
|
|
72
|
+
}), children: "Move down" })] })] })) : (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: "Nested route reference. ADM 8 does not provide arbitrary nested navigator editing." }))] }));
|
|
73
|
+
}
|
|
74
|
+
function formatParentPath(parentPath) {
|
|
75
|
+
return parentPath.length === 0 ? 'root' : parentPath.join('/');
|
|
76
|
+
}
|
|
77
|
+
const styles = StyleSheet.create({
|
|
78
|
+
createRow: {
|
|
79
|
+
alignItems: 'center',
|
|
80
|
+
flexDirection: 'row',
|
|
81
|
+
flexWrap: 'wrap',
|
|
82
|
+
gap: 12,
|
|
83
|
+
},
|
|
84
|
+
createInput: {
|
|
85
|
+
flexGrow: 1,
|
|
86
|
+
minWidth: 220,
|
|
87
|
+
},
|
|
88
|
+
field: {
|
|
89
|
+
gap: 8,
|
|
90
|
+
},
|
|
91
|
+
routeFacts: {
|
|
92
|
+
gap: 4,
|
|
93
|
+
},
|
|
94
|
+
screenDetails: {
|
|
95
|
+
gap: 10,
|
|
96
|
+
paddingTop: 4,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=ScreensAdminPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreensAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/ScreensAdminPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { NavigatorType } from '@ankhorage/contracts';
|
|
2
|
+
import type { StudioContextValue } from '../../../../index';
|
|
3
|
+
export type ScreensAdminAction = {
|
|
4
|
+
type: 'create-screen';
|
|
5
|
+
name: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: 'delete-screen';
|
|
8
|
+
screenId: string;
|
|
9
|
+
} | {
|
|
10
|
+
type: 'set-navigator-type';
|
|
11
|
+
navigatorType: NavigatorType;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'set-initial-route';
|
|
14
|
+
routeName: string;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'set-primary-navigation-visibility';
|
|
17
|
+
parentPath: string[];
|
|
18
|
+
routeName: string;
|
|
19
|
+
showInPrimaryNavigation: boolean;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'move-route';
|
|
22
|
+
parentPath: string[];
|
|
23
|
+
routeName: string;
|
|
24
|
+
toIndex: number;
|
|
25
|
+
};
|
|
26
|
+
export type ScreensAdminMutationTarget = Pick<StudioContextValue, 'addScreen' | 'deleteScreen' | 'moveRoute' | 'setNavigatorInitialRoute' | 'setNavigatorType' | 'setRoutePrimaryNavigationVisibility'>;
|
|
27
|
+
export declare function applyScreensAdminAction(target: ScreensAdminMutationTarget, action: ScreensAdminAction): void;
|
|
28
|
+
//# sourceMappingURL=screensAdminActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screensAdminActions.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/screens/screensAdminActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,IAAI,EAAE,mCAAmC,CAAC;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,OAAO,CAAC;CAClC,GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,kBAAkB,EAChB,WAAW,GACX,cAAc,GACd,WAAW,GACX,0BAA0B,GAC1B,kBAAkB,GAClB,qCAAqC,CACxC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,0BAA0B,EAClC,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAwBN"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function applyScreensAdminAction(target, action) {
|
|
2
|
+
switch (action.type) {
|
|
3
|
+
case 'create-screen':
|
|
4
|
+
target.addScreen(action.name);
|
|
5
|
+
return;
|
|
6
|
+
case 'delete-screen':
|
|
7
|
+
target.deleteScreen(action.screenId);
|
|
8
|
+
return;
|
|
9
|
+
case 'set-navigator-type':
|
|
10
|
+
target.setNavigatorType(action.navigatorType);
|
|
11
|
+
return;
|
|
12
|
+
case 'set-initial-route':
|
|
13
|
+
target.setNavigatorInitialRoute(action.routeName);
|
|
14
|
+
return;
|
|
15
|
+
case 'set-primary-navigation-visibility':
|
|
16
|
+
target.setRoutePrimaryNavigationVisibility(action.parentPath, action.routeName, action.showInPrimaryNavigation);
|
|
17
|
+
return;
|
|
18
|
+
case 'move-route':
|
|
19
|
+
target.moveRoute(action.parentPath, action.routeName, action.toIndex);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=screensAdminActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screensAdminActions.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/screens/screensAdminActions.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,uBAAuB,CACrC,MAAkC,EAClC,MAA0B;IAE1B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,eAAe;YAClB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,eAAe;YAClB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO;QACT,KAAK,oBAAoB;YACvB,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9C,OAAO;QACT,KAAK,mBAAmB;YACtB,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,OAAO;QACT,KAAK,mCAAmC;YACtC,MAAM,CAAC,mCAAmC,CACxC,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,uBAAuB,CAC/B,CAAC;YACF,OAAO;QACT,KAAK,YAAY;YACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { UiNode } from '@ankhorage/contracts';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { type NodePlacement, type StudioComponentMetaRegistry } from '../../index';
|
|
4
|
+
import type { RuntimeNodeIndicatorRect } from '../../runtime/runtimeNodeMeasurement';
|
|
5
|
+
export interface StudioCanvasDndOverlayProps {
|
|
6
|
+
readonly activeDragNodeId: string | null;
|
|
7
|
+
readonly componentMeta: StudioComponentMetaRegistry;
|
|
8
|
+
readonly indicatorRects: readonly RuntimeNodeIndicatorRect[];
|
|
9
|
+
readonly moveNodeToPlacement: (nodeId: string, placement: NodePlacement) => boolean;
|
|
10
|
+
readonly rootNode: UiNode | null;
|
|
11
|
+
readonly selectedNodeId: string | null;
|
|
12
|
+
readonly setActiveDragNodeId: (nodeId: string | null) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function StudioCanvasDndOverlay(props: StudioCanvasDndOverlayProps): React.JSX.Element | null;
|
|
15
|
+
//# sourceMappingURL=StudioCanvasDndOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StudioCanvasDndOverlay.d.ts","sourceRoot":"","sources":["../../../src/ui/canvas/StudioCanvasDndOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAQnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AASrF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,2BAA2B,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7D,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/D;AA8ID,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,GACjC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0F1B"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Draggable, DraggableState, Droppable, DropProvider, } from '@ankhorage/react-native-reanimated-dnd-web';
|
|
3
|
+
import { IconButton, Text, useZoraTheme } from '@ankhorage/zora';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { View } from 'react-native';
|
|
6
|
+
import { createStudioCanvasDragPayload, resolveCanvasDragPreviewText, resolveCanvasDropZoneRect, } from '../../canvasDragModel';
|
|
7
|
+
import { resolveCanvasDropZones } from '../../canvasDropZones';
|
|
8
|
+
import { findNodeById } from '../../index';
|
|
9
|
+
import { resolveNodeLabel } from '../../insertModalModel';
|
|
10
|
+
import { activateCanvasDrag, completeCanvasDropAfterAdapter, createCanvasDraggableSessionKey, resetCanvasDragSession, sortCanvasDropTargetsBySpecificity, } from './canvasDndInteraction';
|
|
11
|
+
const MAX_DROP_CAPACITY = Number.MAX_SAFE_INTEGER;
|
|
12
|
+
function resolveDropZoneViews(args) {
|
|
13
|
+
const zones = args.indicatorRects.flatMap((targetRect) => {
|
|
14
|
+
const targetNode = findNodeById(args.rootNode, targetRect.nodeId);
|
|
15
|
+
if (!targetNode)
|
|
16
|
+
return [];
|
|
17
|
+
return resolveCanvasDropZones({
|
|
18
|
+
root: args.rootNode,
|
|
19
|
+
targetNodeId: targetNode.id,
|
|
20
|
+
draggedNode: args.draggedNode,
|
|
21
|
+
componentMeta: args.componentMeta,
|
|
22
|
+
}).map((resolution) => ({
|
|
23
|
+
id: `${targetNode.id}:${resolution.kind}`,
|
|
24
|
+
resolution,
|
|
25
|
+
targetNode,
|
|
26
|
+
rect: resolveCanvasDropZoneRect({
|
|
27
|
+
kind: resolution.kind,
|
|
28
|
+
targetRect,
|
|
29
|
+
draggedRect: args.draggedRect,
|
|
30
|
+
}),
|
|
31
|
+
}));
|
|
32
|
+
});
|
|
33
|
+
return sortCanvasDropTargetsBySpecificity(zones);
|
|
34
|
+
}
|
|
35
|
+
function CanvasDropZone(props) {
|
|
36
|
+
const { theme } = useZoraTheme();
|
|
37
|
+
const isActive = props.activeDropZoneId === props.zone.id;
|
|
38
|
+
const isValid = props.zone.resolution.status === 'valid';
|
|
39
|
+
const borderColor = isValid ? theme.semantics.action.primary.base : '#dc2626';
|
|
40
|
+
return (_jsx(Droppable, { activeStyle: {
|
|
41
|
+
backgroundColor: isValid ? theme.semantics.action.primary.softBg : '#fee2e2',
|
|
42
|
+
}, capacity: MAX_DROP_CAPACITY, droppableId: `studio-drop:${props.zone.id}`, onActiveChange: (active) => props.setActiveDropZoneId((current) => active ? props.zone.id : current === props.zone.id ? null : current), onDrop: (payload) => {
|
|
43
|
+
void completeCanvasDropAfterAdapter(payload, props.zone.resolution, props.moveNodeToPlacement, props.resetDrag);
|
|
44
|
+
}, style: {
|
|
45
|
+
position: 'absolute',
|
|
46
|
+
left: props.zone.rect.x,
|
|
47
|
+
top: props.zone.rect.y,
|
|
48
|
+
width: props.zone.rect.width,
|
|
49
|
+
height: props.zone.rect.height,
|
|
50
|
+
alignItems: 'center',
|
|
51
|
+
justifyContent: 'center',
|
|
52
|
+
borderWidth: isActive ? 3 : 1,
|
|
53
|
+
borderColor,
|
|
54
|
+
borderStyle: isValid ? 'solid' : 'dashed',
|
|
55
|
+
borderRadius: 4,
|
|
56
|
+
opacity: isActive ? 0.92 : 0.28,
|
|
57
|
+
zIndex: 1001,
|
|
58
|
+
}, children: isActive ? (_jsx(Text, { align: "center", color: isValid ? 'primary' : 'danger', variant: "caption", children: isValid
|
|
59
|
+
? `${props.zone.resolution.kind} ${resolveNodeLabel({ node: props.zone.targetNode, componentMeta: props.componentMeta })}`
|
|
60
|
+
: props.zone.resolution.reason.message })) : null }));
|
|
61
|
+
}
|
|
62
|
+
function CanvasDragPreview(props) {
|
|
63
|
+
const { theme } = useZoraTheme();
|
|
64
|
+
const previewText = resolveCanvasDragPreviewText(props.node.props);
|
|
65
|
+
return (_jsxs(View, { pointerEvents: "none", style: {
|
|
66
|
+
display: props.active ? 'flex' : 'none',
|
|
67
|
+
position: 'absolute',
|
|
68
|
+
left: -props.rect.width + 24,
|
|
69
|
+
top: 24,
|
|
70
|
+
width: props.rect.width,
|
|
71
|
+
minHeight: props.rect.height,
|
|
72
|
+
padding: 8,
|
|
73
|
+
borderWidth: 2,
|
|
74
|
+
borderColor: theme.semantics.action.primary.base,
|
|
75
|
+
borderRadius: 6,
|
|
76
|
+
backgroundColor: theme.semantics.action.primary.softBg,
|
|
77
|
+
opacity: 0.88,
|
|
78
|
+
}, children: [_jsx(Text, { numberOfLines: 1, variant: "label", weight: "semiBold", children: props.label }), previewText ? (_jsx(Text, { numberOfLines: 2, emphasis: "muted", variant: "bodySmall", children: previewText })) : null] }));
|
|
79
|
+
}
|
|
80
|
+
export function StudioCanvasDndOverlay(props) {
|
|
81
|
+
const [activeDropZoneId, setActiveDropZoneId] = React.useState(null);
|
|
82
|
+
const [dragSessionRevision, setDragSessionRevision] = React.useState(0);
|
|
83
|
+
const dragStartedRef = React.useRef(false);
|
|
84
|
+
const rootNode = props.rootNode;
|
|
85
|
+
const selectedNode = rootNode && props.selectedNodeId ? findNodeById(rootNode, props.selectedNodeId) : null;
|
|
86
|
+
const selectedRect = props.indicatorRects.find((rect) => rect.nodeId === props.selectedNodeId);
|
|
87
|
+
const draggedNode = rootNode && props.activeDragNodeId ? findNodeById(rootNode, props.activeDragNodeId) : null;
|
|
88
|
+
const draggedRect = props.indicatorRects.find((rect) => rect.nodeId === props.activeDragNodeId);
|
|
89
|
+
React.useEffect(() => {
|
|
90
|
+
if (!props.activeDragNodeId)
|
|
91
|
+
setActiveDropZoneId(null);
|
|
92
|
+
}, [props.activeDragNodeId]);
|
|
93
|
+
if (!rootNode || !selectedNode || !selectedRect || selectedNode.id === rootNode.id)
|
|
94
|
+
return null;
|
|
95
|
+
const payload = createStudioCanvasDragPayload(selectedNode.id);
|
|
96
|
+
const previewLabel = resolveNodeLabel({ node: selectedNode, componentMeta: props.componentMeta });
|
|
97
|
+
const dropZones = draggedNode && draggedRect
|
|
98
|
+
? resolveDropZoneViews({
|
|
99
|
+
componentMeta: props.componentMeta,
|
|
100
|
+
draggedNode,
|
|
101
|
+
draggedRect,
|
|
102
|
+
indicatorRects: props.indicatorRects,
|
|
103
|
+
rootNode,
|
|
104
|
+
})
|
|
105
|
+
: [];
|
|
106
|
+
const resetDrag = () => {
|
|
107
|
+
dragStartedRef.current = false;
|
|
108
|
+
resetCanvasDragSession({
|
|
109
|
+
restartDraggable: () => setDragSessionRevision((revision) => revision + 1),
|
|
110
|
+
setActiveDropZoneId,
|
|
111
|
+
setActiveDragNodeId: props.setActiveDragNodeId,
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
return (_jsxs(DropProvider, { children: [_jsxs(Draggable, { collisionAlgorithm: "center", data: payload, draggableId: `studio-node:${selectedNode.id}`, onDragStart: () => activateCanvasDrag(payload, props), onStateChange: (state) => {
|
|
115
|
+
if (state === DraggableState.DRAGGING)
|
|
116
|
+
dragStartedRef.current = true;
|
|
117
|
+
if (dragStartedRef.current && state === DraggableState.IDLE)
|
|
118
|
+
resetDrag();
|
|
119
|
+
}, style: {
|
|
120
|
+
position: 'absolute',
|
|
121
|
+
left: selectedRect.x + selectedRect.width - 24,
|
|
122
|
+
top: selectedRect.y - 24,
|
|
123
|
+
width: 48,
|
|
124
|
+
height: 48,
|
|
125
|
+
zIndex: 1002,
|
|
126
|
+
}, children: [_jsx(CanvasDragPreview, { active: props.activeDragNodeId !== null, label: previewLabel, node: selectedNode, rect: selectedRect }), _jsx(Draggable.Handle, { style: { width: 48, height: 48 }, children: _jsx(IconButton, { color: "neutral", icon: { name: 'move-outline' }, label: `Drag ${previewLabel}`, size: "l", variant: "solid" }) })] }, createCanvasDraggableSessionKey(selectedNode.id, dragSessionRevision)), dropZones.map((zone) => (_jsx(CanvasDropZone, { activeDropZoneId: activeDropZoneId, componentMeta: props.componentMeta, moveNodeToPlacement: props.moveNodeToPlacement, resetDrag: resetDrag, setActiveDropZoneId: setActiveDropZoneId, zone: zone }, zone.id)))] }));
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=StudioCanvasDndOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StudioCanvasDndOverlay.js","sourceRoot":"","sources":["../../../src/ui/canvas/StudioCanvasDndOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type StudioCanvasDragPayload } from '../../canvasDragModel';
|
|
2
|
+
import type { CanvasDropZoneResolution } from '../../canvasDropZones';
|
|
3
|
+
import type { NodePlacement } from '../../index';
|
|
4
|
+
export interface CanvasDragSessionCallbacks {
|
|
5
|
+
readonly restartDraggable: () => void;
|
|
6
|
+
readonly setActiveDragNodeId: (nodeId: string | null) => void;
|
|
7
|
+
readonly setActiveDropZoneId: (zoneId: string | null) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createCanvasDraggableSessionKey(nodeId: string, revision: number): string;
|
|
10
|
+
export declare function sortCanvasDropTargetsBySpecificity<T extends {
|
|
11
|
+
readonly rect: {
|
|
12
|
+
readonly width: number;
|
|
13
|
+
readonly height: number;
|
|
14
|
+
};
|
|
15
|
+
}>(targets: readonly T[]): readonly T[];
|
|
16
|
+
export declare function resetCanvasDragSession(callbacks: CanvasDragSessionCallbacks): void;
|
|
17
|
+
export declare function commitCanvasDrop(payload: unknown, zone: CanvasDropZoneResolution, moveNodeToPlacement: (nodeId: string, placement: NodePlacement) => boolean): boolean;
|
|
18
|
+
export declare function completeCanvasDropAfterAdapter(payload: unknown, zone: CanvasDropZoneResolution, moveNodeToPlacement: (nodeId: string, placement: NodePlacement) => boolean, resetDrag: () => void): Promise<boolean>;
|
|
19
|
+
export declare function activateCanvasDrag(payload: StudioCanvasDragPayload, callbacks: Pick<CanvasDragSessionCallbacks, 'setActiveDragNodeId'>): void;
|
|
20
|
+
//# sourceMappingURL=canvasDndInteraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvasDndInteraction.d.ts","sourceRoot":"","sources":["../../../src/ui/canvas/canvasDndInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/D;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,kCAAkC,CAChD,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAChF,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAIrC;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,0BAA0B,GAAG,IAAI,CAIlF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,wBAAwB,EAC9B,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,GACzE,OAAO,CAMT;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,wBAAwB,EAC9B,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,EAC1E,SAAS,EAAE,MAAM,IAAI,GACpB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,IAAI,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,GACjE,IAAI,CAEN"}
|