node-render.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import '@flowgram.ai/free-layout-editor/index.css';
  6. import {
  7. useNodeRender,
  8. WorkflowNodeProps,
  9. WorkflowNodeRenderer,
  10. } from '@flowgram.ai/free-layout-editor';
  11. import { PortRender } from './port';
  12. import { NodeBorderColorMap, NodeColorMap, NodeGlowColorMap } from './node-color';
  13. export const NodeRender = (props: WorkflowNodeProps) => {
  14. const { selected, node, ports } = useNodeRender();
  15. const nodeColor = NodeColorMap[node.id] ?? '#fff';
  16. const borderColor = NodeBorderColorMap[node.id] ?? '#fff';
  17. const glowColor = NodeGlowColorMap[node.id] ?? '59, 130, 246';
  18. return (
  19. <WorkflowNodeRenderer
  20. className="flowgram-logo-node"
  21. style={
  22. {
  23. background: nodeColor,
  24. border: selected ? `2px solid ${borderColor}` : `2px solid ${nodeColor}`,
  25. '--glow-color': glowColor,
  26. } as React.CSSProperties & { '--glow-color': string }
  27. }
  28. portStyle={{
  29. display: 'none',
  30. }}
  31. node={props.node}
  32. >
  33. {ports.map((p) => (
  34. <PortRender key={p.id} entity={p} />
  35. ))}
  36. </WorkflowNodeRenderer>
  37. );
  38. };