import { useEffect } from 'react'; import { DocumentSlotView } from '../../editors/DocumentSlotView'; import { useDocumentSlot } from '../../documents/useDocumentSlot'; import { useDocumentTitle } from '../../documents/useDocumentTitle'; import { WorkspaceBarSlot } from '../barSlot'; import type { WorkspaceProps } from '../workspace'; export function ZenWorkspace({ active, openRequestId, openRequest, resolveProvider, onOpenEntry, onActiveDocumentChange, }: WorkspaceProps) { const { state, close } = useDocumentSlot({ openRequestId, openRequest, resolveProvider, accepts: active, }); const handle = state.kind === 'open' ? state.handle : null; const title = useDocumentTitle(handle); // Same contract as tiling: report what is shown, derived from slot state. const shownDocument = active && state.kind !== 'empty' ? state.request : null; useEffect(() => { if (!active) return; onActiveDocumentChange?.(shownDocument); }, [active, shownDocument, onActiveDocumentChange]); return ( <>