15 lines
1.1 KiB
TypeScript
15 lines
1.1 KiB
TypeScript
"use client";
|
|
import type { NodeProps } from '@xyflow/react';
|
|
import type { CanvasNode } from '@/lib/canvas-elements';
|
|
import { builtinRendererDefinitions } from '@/lib/canvas-bindings/renderers';
|
|
import { createReactRenderers, type ReactRendererDefinition } from '@/lib/canvas-bindings/react-flow';
|
|
import { MaterialNode } from './material-node';
|
|
import { PlainTextNode } from './plain-text-node';
|
|
import { PlainImageNode } from './plain-image-node';
|
|
import { FrameNode } from './frame-node';
|
|
import { IconNode } from './icon-node';
|
|
import { CanvasEdge } from './canvas-edge';
|
|
function HeadlessFrameNode(props:NodeProps<CanvasNode>){return <FrameNode {...props} directAnchors />;}
|
|
const nodes={material:MaterialNode,plainText:PlainTextNode,plainImage:PlainImageNode,frame:HeadlessFrameNode,icon:IconNode};
|
|
export const defaultCanvasRenderers=createReactRenderers(builtinRendererDefinitions.map(definition=>{const render=definition.structure==='node'?nodes[definition.rendererId as keyof typeof nodes]:CanvasEdge;return{...definition,render,preview:render} as ReactRendererDefinition;}));
|