import React from "react"; import dynamic from "next/dynamic"; import { NodeProps } from "reaflow"; import useGraph from "src/store/useGraph"; import useModal from "src/store/useModal"; import { NodeData } from "src/types/graph"; import { ObjectNode } from "./ObjectNode"; import { TextNode } from "./TextNode"; const Node = dynamic(() => import("reaflow").then(r => r.Node), { ssr: false, }); export interface CustomNodeProps { node: NodeData; x: number; y: number; hasCollapse?: boolean; } const rootProps = { rx: 50, ry: 50, }; const CustomNodeWrapper = (nodeProps: NodeProps) => { const data = nodeProps.properties.data; const setSelectedNode = useGraph(state => state.setSelectedNode); const setVisible = useModal(state => state.setVisible); const handleNodeClick = React.useCallback( (_: React.MouseEvent, data: NodeData) => { if (setSelectedNode) setSelectedNode(data); setVisible("node")(true); }, [setSelectedNode, setVisible] ); return ( {({ node, x, y }) => { if (Array.isArray(nodeProps.properties.text)) { if (data?.isEmpty) return null; return ; } return ; }} ); }; export const CustomNode = React.memo(CustomNodeWrapper);