custom-node.js 1.27 KB
/*
 * @Date: 2025-03-10 16:20:35
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2025-03-10 16:33:34
 * @FilePath: /logic-flow2/src/components/logicflow/custom-node.ts
 * @Description: 文件描述
 */
// src/components/logicflow/CustomNode.ts
import { RectNode, RectNodeModel } from "@logicflow/core";

// 自定义模型
export class CustomModel extends RectNodeModel {
  setAttributes() {
    this.stroke = "#1E90FF";
    this.fill = "#F0F8FF";
    this.radius = 10;
    const { isDisabledNode } = this.properties;

    // 动态菜单配置
    if (!isDisabledNode) {
      this.menu = [
        {
          className: "lf-menu-delete",
          icon: true,
          callback: (node) => {
            this.graphModel.deleteNode(node.id);
            this.graphModel.eventCenter.emit("custom:event", node);
          },
        },
        {
          text: "Edit",
          className: "lf-menu-item",
          callback: (node) => {
            this.graphModel.setElementStateById(node.id, 2);
          },
        },
        {
          text: "Copy",
          className: "lf-menu-item",
          callback: (node) => {
            this.graphModel.cloneNode(node.id);
          },
        },
      ];
    }
  }
}

// 使用默认矩形视图
export const CustomNode = RectNode;