UNPKG

@logicflow/extension

Version:
113 lines (112 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DndPanel = void 0; var DndPanel = /** @class */ (function () { function DndPanel(_a) { var lf = _a.lf; var _this = this; this.lf = lf; this.lf.setPatternItems = function (shapeList) { _this.setPatternItems(shapeList); }; } DndPanel.prototype.render = function (_lf, domContainer) { var _this = this; this.destroy(); if (!this.shapeList || this.shapeList.length === 0) { // 首次render后失败后,后续调用setPatternItems支持渲染 this.domContainer = domContainer; return; } this.panelEl = document.createElement('div'); this.panelEl.className = 'lf-dndpanel'; this.shapeList.forEach(function (shapeItem) { var _a; (_a = _this.panelEl) === null || _a === void 0 ? void 0 : _a.appendChild(_this.createDndItem(shapeItem)); }); domContainer.appendChild(this.panelEl); this.domContainer = domContainer; }; DndPanel.prototype.destroy = function () { if (this.domContainer && this.panelEl && this.domContainer.contains(this.panelEl)) { this.domContainer.removeChild(this.panelEl); } }; DndPanel.prototype.setPatternItems = function (shapeList) { this.shapeList = shapeList; // 支持渲染后重新设置拖拽面板 if (this.domContainer) { this.render(this.lf, this.domContainer); } }; DndPanel.prototype.createDndItem = function (shapeItem) { var _this = this; var el = document.createElement('div'); el.className = shapeItem.className ? "lf-dnd-item ".concat(shapeItem.className) : 'lf-dnd-item'; var shape = document.createElement('div'); shape.className = 'lf-dnd-shape'; // if (typeof shapeItem.icon === 'string') { if (shapeItem.icon) { shape.style.backgroundImage = "url(".concat(shapeItem.icon, ")"); // shape.style.backgroundSize = 'contain' // } else { // shape.appendChild(shapeItem.icon); } el.appendChild(shape); if (shapeItem.label) { var text = document.createElement('div'); text.innerText = shapeItem.label; text.className = 'lf-dnd-text'; el.appendChild(text); } if (shapeItem.disabled) { el.classList.add('disabled'); // 保留callback的执行,可用于界面提示当前shapeItem的禁用状态 el.onmousedown = function () { if (shapeItem.callback) { shapeItem.callback(_this.lf, _this.domContainer); } }; return el; } el.onmousedown = function () { if (shapeItem.type) { _this.lf.dnd.startDrag({ type: shapeItem.type, properties: shapeItem.properties, text: shapeItem.text, }); } if (shapeItem.callback) { shapeItem.callback(_this.lf, _this.domContainer); } }; el.ondblclick = function (e) { _this.lf.graphModel.eventCenter.emit('dnd:panel-dbclick', { e: e, data: shapeItem, }); }; el.onclick = function (e) { _this.lf.graphModel.eventCenter.emit('dnd:panel-click', { e: e, data: shapeItem, }); }; el.oncontextmenu = function (e) { _this.lf.graphModel.eventCenter.emit('dnd:panel-contextmenu', { e: e, data: shapeItem, }); }; return el; }; DndPanel.pluginName = 'dndPanel'; return DndPanel; }()); exports.DndPanel = DndPanel; exports.default = DndPanel;