import '@flowgram.ai/free-layout-editor/index.css';
import { createMinimapPlugin } from '@flowgram.ai/minimap-plugin';
import { createFreeSnapPlugin } from '@flowgram.ai/free-snap-plugin';
import {
FreeLayoutEditorProvider,
EditorRenderer,
useNodeRender,
WorkflowNodeProps,
WorkflowNodeRenderer,
} from '@flowgram.ai/free-layout-editor';
const NodeRender = (props: WorkflowNodeProps) => {
const { form, selected } = useNodeRender();
return (
{form?.render()}
);
};
const FlowGramApp = () => (
[createMinimapPlugin({}), createFreeSnapPlugin({})]}
onAllLayersRendered={(ctx) => {
ctx.tools.fitView(false);
}}
materials={{
renderDefaultNode: NodeRender,
}}
nodeRegistries={[
{
type: 'custom',
},
]}
canDeleteNode={() => true}
canDeleteLine={() => true}
initialData={{
nodes: [
{
id: '1',
type: 'custom',
meta: {
position: { x: 0, y: 0 },
},
},
{
id: '2',
type: 'custom',
meta: {
position: { x: 400, y: -200 },
},
},
{
id: '3',
type: 'custom',
meta: {
position: { x: 400, y: 0 },
},
},
{
id: '4',
type: 'custom',
meta: {
position: { x: 400, y: 200 },
},
},
{
id: '5',
type: 'custom',
meta: {
position: { x: 800, y: 0 },
},
},
],
edges: [
{
sourceNodeID: '1',
targetNodeID: '2',
},
{
sourceNodeID: '1',
targetNodeID: '3',
},
{
sourceNodeID: '1',
targetNodeID: '4',
},
{
sourceNodeID: '2',
targetNodeID: '5',
},
{
sourceNodeID: '3',
targetNodeID: '5',
},
{
sourceNodeID: '4',
targetNodeID: '5',
},
],
}}
>
);
export default FlowGramApp;