feat: node creation and serialization logic in workflow editor
This commit is contained in:
@@ -2,7 +2,11 @@ import { showAlert } from '../ui.js';
|
||||
import { tesseractLanguages } from '../config/tesseract-languages.js';
|
||||
import { createWorkflowEditor, updateNodeDisplay } from '../workflow/editor';
|
||||
import { executeWorkflow } from '../workflow/engine';
|
||||
import { nodeRegistry, getNodesByCategory } from '../workflow/nodes/registry';
|
||||
import {
|
||||
nodeRegistry,
|
||||
getNodesByCategory,
|
||||
createNodeByType,
|
||||
} from '../workflow/nodes/registry';
|
||||
import type { BaseWorkflowNode } from '../workflow/nodes/base-node';
|
||||
import type { WorkflowEditor } from '../workflow/editor';
|
||||
import {
|
||||
@@ -43,6 +47,7 @@ import {
|
||||
|
||||
let workflowEditor: WorkflowEditor | null = null;
|
||||
let selectedNodeId: string | null = null;
|
||||
let deleteNodeHandler: EventListener | null = null;
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initializePage);
|
||||
@@ -245,10 +250,14 @@ async function initializePage() {
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('wf-delete-node', ((e: CustomEvent) => {
|
||||
if (deleteNodeHandler) {
|
||||
document.removeEventListener('wf-delete-node', deleteNodeHandler);
|
||||
}
|
||||
deleteNodeHandler = ((e: CustomEvent) => {
|
||||
const nodeId = e.detail?.nodeId;
|
||||
if (nodeId) deleteNodeById(nodeId);
|
||||
}) as EventListener);
|
||||
}) as EventListener;
|
||||
document.addEventListener('wf-delete-node', deleteNodeHandler);
|
||||
}
|
||||
|
||||
async function deleteNodeById(nodeId: string) {
|
||||
@@ -539,14 +548,12 @@ async function addNodeToCanvas(
|
||||
if (!workflowEditor) return;
|
||||
const { editor, area } = workflowEditor;
|
||||
|
||||
const entry = nodeRegistry[type];
|
||||
if (!entry) {
|
||||
console.error('Node type not found in registry:', type);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const node = entry.factory();
|
||||
const node = createNodeByType(type);
|
||||
if (!node) {
|
||||
console.error('Node type not found in registry:', type);
|
||||
return;
|
||||
}
|
||||
await editor.addNode(node);
|
||||
|
||||
const pos = position || getCanvasCenter(area);
|
||||
|
||||
Reference in New Issue
Block a user