UNPKG

@nocobase/flow-engine

Version:

A standalone flow engine for NocoBase, managing workflows, models, and actions.

165 lines (163 loc) 5.87 kB
/** * This file is part of the NocoBase (R) project. * Copyright (c) 2020-2024 NocoBase Co., Ltd. * Authors: NocoBase Team. * * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. * For more information, please refer to: https://www.nocobase.com/agreement. */ var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var dnd_exports = {}; __export(dnd_exports, { DndProvider: () => DndProvider, DragHandler: () => DragHandler, Droppable: () => Droppable, EMPTY_COLUMN_UID: () => EMPTY_COLUMN_UID }); module.exports = __toCommonJS(dnd_exports); var import_icons = require("@ant-design/icons"); var import_core = require("@dnd-kit/core"); var import_react = __toESM(require("react")); var import_react_dom = require("react-dom"); var import_provider = require("../../provider"); __reExport(dnd_exports, require("./getMousePositionOnElement"), module.exports); __reExport(dnd_exports, require("./moveBlock"), module.exports); const EMPTY_COLUMN_UID = "EMPTY_COLUMN"; const DragHandler = /* @__PURE__ */ __name(({ model, children = /* @__PURE__ */ import_react.default.createElement(import_icons.DragOutlined, null) }) => { const { attributes, listeners, setNodeRef, isDragging } = (0, import_core.useDraggable)({ id: model.uid }); return /* @__PURE__ */ import_react.default.createElement( "span", { ref: setNodeRef, ...listeners, ...attributes, style: { cursor: "grab" } }, children ); }, "DragHandler"); const Droppable = /* @__PURE__ */ __name(({ model, children }) => { const { setNodeRef, isOver, active } = (0, import_core.useDroppable)({ id: model.uid }); const isActiveDroppable = (active == null ? void 0 : active.id) === model.uid; return /* @__PURE__ */ import_react.default.createElement( "div", { ref: setNodeRef, style: { position: "relative", opacity: isActiveDroppable ? 0.3 : 1, outline: isActiveDroppable ? "2px solid var(--colorBorderSettingsHover)" : "none", borderRadius: isActiveDroppable ? model.context.themeToken.borderRadiusLG : "none" } }, children, /* @__PURE__ */ import_react.default.createElement( "div", { style: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0, backgroundColor: isOver ? "var(--colorBgSettingsHover)" : "transparent", pointerEvents: "none" } } ) ); }, "Droppable"); const DndProvider = /* @__PURE__ */ __name(({ persist = true, children, onDragEnd, ...restProps }) => { const [activeId, setActiveId] = (0, import_react.useState)(null); const flowEngine = (0, import_provider.useFlowEngine)(); return /* @__PURE__ */ import_react.default.createElement( import_core.DndContext, { onDragStart: (event) => { var _a; setActiveId(event.active.id); (_a = restProps.onDragStart) == null ? void 0 : _a.call(restProps, event); }, onDragEnd: (event) => { setActiveId(null); if (!onDragEnd) { if (event.over) { flowEngine.moveModel(event.active.id, event.over.id, { persist }); } } else { onDragEnd(event); } }, ...restProps }, children, (0, import_react_dom.createPortal)( /* @__PURE__ */ import_react.default.createElement(import_core.DragOverlay, { dropAnimation: null, zIndex: 2e3 }, activeId && /* @__PURE__ */ import_react.default.createElement( "span", { style: { display: "inline-flex", alignItems: "center", whiteSpace: "nowrap", background: "#fff", border: "1px solid #1890ff", borderRadius: 4, padding: "4px 12px", color: "#1890ff", // fontSize: 18, boxShadow: "0 2px 8px rgba(0,0,0,0.15)" } }, flowEngine.translate("Dragging") )), document.body ) ); }, "DndProvider"); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { DndProvider, DragHandler, Droppable, EMPTY_COLUMN_UID, ...require("./getMousePositionOnElement"), ...require("./moveBlock") });