/** Captured native dock arrangements; shared data used by imported layout components. */ export interface WorkspaceArrangement { /** Persistence identity, not a lookup key for an engine-owned implementation. */ readonly id: string; readonly title: string; readonly regions?: { readonly tabs?: 'shown' | 'hidden'; readonly header?: 'shown' | 'hidden'; readonly shelf?: 'shown' | 'hidden'; readonly inspector?: 'column' | 'properties'; readonly drawer?: 'shown' | 'hidden'; }; /** Opaque captured Dockview geometry, restored by the native dock host. */ readonly state?: { readonly layouts?: Readonly>; readonly utilityRegion?: { readonly visible: boolean }; }; } export const capturedWorkspaceLayouts = { model: { layouts: { docked: { grid: { root: { type: 'branch', data: [ { type: 'branch', data: [ { type: 'branch', data: [ { type: 'leaf', data: { views: [], id: 'vgai:center', }, size: 899, }, { type: 'branch', data: [ { type: 'leaf', data: { views: [ 'navigator:assets', 'navigator:hierarchy', 'navigator:asset-library', ], id: 'vgai:left', activeView: 'navigator:hierarchy', }, size: 463.5, }, { type: 'leaf', data: { views: ['workspace:inspector'], id: 'vgai:right', activeView: 'workspace:inspector', }, size: 463.5, }, ], size: 319.5, }, ], size: 928, }, { type: 'leaf', data: { views: [], id: 'vgai:bottom-center', }, size: 464, visible: false, }, ], size: 1219.5, }, { type: 'leaf', data: { views: ['workspace:agent'], id: 'vgai:agent', activeView: 'workspace:agent', }, size: 379.5, }, ], size: 928, }, width: 1600, height: 928, orientation: 'HORIZONTAL', }, panels: { 'navigator:assets': { id: 'navigator:assets', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'assets', closeable: false, }, title: 'Content', }, 'navigator:hierarchy': { id: 'navigator:hierarchy', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'hierarchy', closeable: false, }, title: 'Hierarchy', }, 'navigator:asset-library': { id: 'navigator:asset-library', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'asset-library', closeable: false, }, title: 'Library', }, 'workspace:agent': { id: 'workspace:agent', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'agent', closeable: true, }, title: 'Conversations', }, 'workspace:inspector': { id: 'workspace:inspector', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'inspector', closeable: false, }, title: 'Inspector', }, }, activeGroup: 'vgai:left', }, }, utilityRegion: { visible: false, }, }, animate: { layouts: { docked: { grid: { root: { type: 'branch', data: [ { type: 'branch', data: [ { type: 'branch', data: [ { type: 'leaf', data: { views: [], id: 'vgai:center', }, size: 938.5, }, { type: 'branch', data: [ { type: 'leaf', data: { views: [ 'navigator:assets', 'navigator:hierarchy', 'navigator:asset-library', ], id: 'vgai:left', activeView: 'navigator:hierarchy', }, size: 333.5, }, { type: 'leaf', data: { views: ['workspace:inspector'], id: 'vgai:right', activeView: 'workspace:inspector', }, size: 333, }, ], size: 280, }, ], size: 667.5, }, { type: 'leaf', data: { views: ['utility:console'], id: 'vgai:bottom-center', activeView: 'utility:console', }, size: 259.5, }, ], size: 1219.5, }, { type: 'leaf', data: { views: ['workspace:agent'], id: 'vgai:agent', activeView: 'workspace:agent', }, size: 379.5, }, ], size: 928, }, width: 1600, height: 928, orientation: 'HORIZONTAL', }, panels: { 'navigator:assets': { id: 'navigator:assets', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'assets', closeable: false, }, title: 'Content', }, 'navigator:hierarchy': { id: 'navigator:hierarchy', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'hierarchy', closeable: false, }, title: 'Hierarchy', }, 'navigator:asset-library': { id: 'navigator:asset-library', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'asset-library', closeable: false, }, title: 'Library', }, 'utility:console': { id: 'utility:console', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'utility', utilityId: 'console', closeable: true, }, title: 'Console', renderer: 'always', }, 'workspace:agent': { id: 'workspace:agent', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'agent', closeable: true, }, title: 'Conversations', }, 'workspace:inspector': { id: 'workspace:inspector', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'inspector', closeable: false, }, title: 'Inspector', }, }, activeGroup: 'vgai:left', }, }, utilityRegion: { visible: true, }, }, look: { layouts: { docked: { grid: { root: { type: 'branch', data: [ { type: 'branch', data: [ { type: 'branch', data: [ { type: 'leaf', data: { views: [], id: 'vgai:center', }, size: 979, }, { type: 'leaf', data: { views: [ 'navigator:hierarchy', 'navigator:asset-library', 'navigator:assets', 'workspace:inspector', ], id: 'vgai:right', activeView: 'workspace:inspector', }, size: 239.5, }, ], size: 928, }, { type: 'leaf', data: { views: [], id: 'vgai:bottom-center', }, size: 464, visible: false, }, ], size: 1219.5, }, { type: 'leaf', data: { views: ['workspace:agent'], id: 'vgai:agent', activeView: 'workspace:agent', }, size: 379.5, }, ], size: 928, }, width: 1600, height: 928, orientation: 'HORIZONTAL', }, panels: { 'workspace:agent': { id: 'workspace:agent', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'agent', closeable: true, }, title: 'Conversations', }, 'navigator:hierarchy': { id: 'navigator:hierarchy', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'hierarchy', closeable: false, }, title: 'Hierarchy', }, 'navigator:asset-library': { id: 'navigator:asset-library', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'asset-library', closeable: false, }, title: 'Library', }, 'navigator:assets': { id: 'navigator:assets', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'assets', closeable: false, }, title: 'Content', }, 'workspace:inspector': { id: 'workspace:inspector', contentComponent: 'vgai-workspace-panel', tabComponent: 'vgai-workspace-tab', params: { kind: 'static', staticKind: 'inspector', closeable: false, }, title: 'Inspector', }, }, activeGroup: 'vgai:right', }, }, utilityRegion: { visible: false, }, }, } as const; export const GameArrangement: WorkspaceArrangement = { id: 'game', title: 'Game' }; export const ModelArrangement: WorkspaceArrangement = { id: 'model', title: 'Model', state: capturedWorkspaceLayouts.model, regions: { tabs: 'shown', header: 'shown', shelf: 'shown', inspector: 'properties', drawer: 'hidden', }, }; export const DesignArrangement: WorkspaceArrangement = { id: 'design', title: 'Design' }; export const StageArrangement: WorkspaceArrangement = { id: 'stage', title: 'Stage', state: capturedWorkspaceLayouts.animate, };