mirror of
https://gitee.com/ByteDance/flowgram.ai.git
synced 2025-07-07 17:43:29 +08:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import React from 'react';
|
|
|
|
import { FlowRendererRegistry } from '@flowgram.ai/renderer';
|
|
import { definePluginCreator } from '@flowgram.ai/core';
|
|
|
|
import type { WorkflowContainerPluginOptions } from './type';
|
|
import { NodeIntoContainerService } from './node-into-container';
|
|
import {
|
|
ContainerNodeRenderKey,
|
|
ContainerNodeRender,
|
|
ContainerNodeRenderProps,
|
|
} from './container-node-render';
|
|
|
|
export const createContainerNodePlugin = definePluginCreator<WorkflowContainerPluginOptions>({
|
|
onBind: ({ bind }) => {
|
|
bind(NodeIntoContainerService).toSelf().inSingletonScope();
|
|
},
|
|
onInit(ctx, options) {
|
|
ctx.get(NodeIntoContainerService).init();
|
|
|
|
const registry = ctx.get<FlowRendererRegistry>(FlowRendererRegistry);
|
|
registry.registerReactComponent(ContainerNodeRenderKey, (props: ContainerNodeRenderProps) => (
|
|
<ContainerNodeRender {...props} content={options.renderContent} />
|
|
));
|
|
},
|
|
onReady(ctx, options) {
|
|
if (options.disableNodeIntoContainer !== true) {
|
|
ctx.get(NodeIntoContainerService).ready();
|
|
}
|
|
},
|
|
onDispose(ctx) {
|
|
ctx.get(NodeIntoContainerService).dispose();
|
|
},
|
|
});
|