index.tsx 828 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { memo } from 'react'
  2. import type { NodeProps } from 'reactflow'
  3. import type { Node } from '../types'
  4. import {
  5. NodeComponentMap,
  6. PanelComponentMap,
  7. } from './constants'
  8. import BaseNode from './_base/node'
  9. import BasePanel from './_base/panel'
  10. const CustomNode = (props: NodeProps) => {
  11. const nodeData = props.data
  12. const NodeComponent = NodeComponentMap[nodeData.type]
  13. return (
  14. <>
  15. <BaseNode { ...props }>
  16. <NodeComponent />
  17. </BaseNode>
  18. </>
  19. )
  20. }
  21. CustomNode.displayName = 'CustomNode'
  22. export const Panel = memo((props: Node) => {
  23. const nodeData = props.data
  24. const PanelComponent = PanelComponentMap[nodeData.type]
  25. return (
  26. <BasePanel key={props.id} {...props}>
  27. <PanelComponent />
  28. </BasePanel>
  29. )
  30. })
  31. Panel.displayName = 'Panel'
  32. export default memo(CustomNode)