|
|
@@ -1,7 +1,8 @@
|
|
|
import { FlowNodeFormData } from '@flowgram.ai/form-core';
|
|
|
-import { FlowNodeEntity } from '@flowgram.ai/document';
|
|
|
+import { FlowNodeEntity, FlowNodeJSON } from '@flowgram.ai/document';
|
|
|
|
|
|
-import type { WorkflowNodeRegistry } from '../typings';
|
|
|
+import { type WorkflowDocument } from '../workflow-document';
|
|
|
+import { WorkflowContentChangeType, type WorkflowNodeRegistry } from '../typings';
|
|
|
|
|
|
export function getFlowNodeFormData(node: FlowNodeEntity) {
|
|
|
return node.getData(FlowNodeFormData) as FlowNodeFormData;
|
|
|
@@ -12,3 +13,18 @@ export function toFormJSON(node: FlowNodeEntity) {
|
|
|
if (!formData || !(node.getNodeRegistry() as WorkflowNodeRegistry).formMeta) return undefined;
|
|
|
return formData.toJSON();
|
|
|
}
|
|
|
+
|
|
|
+export function initFormDataFromJSON(node: FlowNodeEntity, json: FlowNodeJSON) {
|
|
|
+ const formData = node.getData(FlowNodeFormData)!;
|
|
|
+ const registry = node.getNodeRegistry();
|
|
|
+ const { formMeta } = registry;
|
|
|
+
|
|
|
+ formData.createForm(formMeta, json.data);
|
|
|
+ formData.onDataChange(() => {
|
|
|
+ (node.document as WorkflowDocument).fireContentChange({
|
|
|
+ type: WorkflowContentChangeType.NODE_DATA_CHANGE,
|
|
|
+ toJSON: () => formData.toJSON(),
|
|
|
+ entity: node,
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|