diff options
| author | soryu <soryu@soryu.co> | 2026-04-28 17:35:08 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-28 17:35:08 +0100 |
| commit | d513f93c84ae985738e0f696fcb72fa1153046ef (patch) | |
| tree | d169fa48ce93f1e204a80b60ca9295772bc2fa63 /frontend/src/components/document/DocumentEditor.tsx | |
| parent | 5aa3fafb4acfa89c7d04e84abf7861607733e8ce (diff) | |
| download | soryu-d513f93c84ae985738e0f696fcb72fa1153046ef.tar.gz soryu-d513f93c84ae985738e0f696fcb72fa1153046ef.zip | |
feat: document UI with contract blocks, expandable logs, and interaction controls (#97)
* feat: soryu-co/soryu - makima: Rename tasks to contracts in directive API and types
* feat: soryu-co/soryu - makima: Add contract interaction panel with comment and interrupt
* feat: soryu-co/soryu - makima: Build expandable contract log feed in StepsDiagram
* feat: soryu-co/soryu - makima: Rename tasks to contracts throughout document UI and add contract block support
* feat: soryu-co/soryu - makima: Add comment and interrupt controls to expanded step log feed
* feat: soryu-co/soryu - makima: Audit and fix Document UI feature flag visibility and missing implementations
* feat: soryu-co/soryu - makima: Add expandable step rows with live log feed in StepsDiagram
* WIP: heartbeat checkpoint
* feat: soryu-co/soryu - makima: Integrate all document UI components and final polish
Diffstat (limited to 'frontend/src/components/document/DocumentEditor.tsx')
| -rw-r--r-- | frontend/src/components/document/DocumentEditor.tsx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/frontend/src/components/document/DocumentEditor.tsx b/frontend/src/components/document/DocumentEditor.tsx index d50c093..2ef37fe 100644 --- a/frontend/src/components/document/DocumentEditor.tsx +++ b/frontend/src/components/document/DocumentEditor.tsx @@ -18,11 +18,13 @@ import { import { $createHeadingNode } from '@lexical/rich-text'; import { StepsDiagramNode, $isStepsDiagramNode, $createStepsDiagramNode } from './nodes/StepsDiagramNode'; +import { ContractBlockNode, $isContractBlockNode } from './nodes/ContractBlockNode'; import editorTheme from './EditorTheme'; import AutoSavePlugin from './AutoSavePlugin'; import ContextMenu, { type ContextMenuAction } from './ContextMenu'; import './DocumentEditor.css'; import './nodes/StepsDiagram.css'; +import './nodes/ContractBlock.css'; interface DocumentEditorProps { directiveId: string; @@ -97,7 +99,7 @@ export default function DocumentEditor({ namespace: `DocumentEditor-${directiveId}`, theme: editorTheme, editorState: buildInitialEditorState(directiveId, title, goal), - nodes: [HeadingNode, ListNode, ListItemNode, LinkNode, StepsDiagramNode], + nodes: [HeadingNode, ListNode, ListItemNode, LinkNode, StepsDiagramNode, ContractBlockNode], onError, editable: !readOnly, }; @@ -115,8 +117,9 @@ export default function DocumentEditor({ for (let i = 0; i < children.length; i++) { const child = children[i]; - // Skip the steps diagram node when extracting text + // Skip decorator nodes (steps diagram, contract blocks) when extracting text if ($isStepsDiagramNode(child)) continue; + if ($isContractBlockNode(child)) continue; const text = child.getTextContent(); |
