UNPKG

@alilc/lowcode-shell

Version:

Shell Layer for AliLowCodeEngine

216 lines (208 loc) 7.8 kB
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _createClass from "@babel/runtime/helpers/createClass"; function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } import _regeneratorRuntime from "@babel/runtime/regenerator"; import { globalContext } from '@alilc/lowcode-editor-core'; import { isComponentMeta as _isComponentMeta } from '@alilc/lowcode-designer'; import { getLogger } from '@alilc/lowcode-utils'; import { editorSymbol, designerSymbol } from '../symbols'; import { ComponentMeta as ShellComponentMeta } from '../model'; var logger = getLogger({ level: 'warn', bizName: 'shell-material' }); var innerEditorSymbol = Symbol('editor'); export var Material = /*#__PURE__*/function () { function Material(editor, workspaceMode) { var _this = this; if (workspaceMode === void 0) { workspaceMode = false; } this.workspaceMode = workspaceMode; this[innerEditorSymbol] = void 0; /** * 注册物料元数据管道函数 * @param transducer * @param level * @param id */ this.registerMetadataTransducer = function (transducer, level, id) { _this[designerSymbol].componentActions.registerMetadataTransducer(transducer, level, id); }; /** * 在设计器辅助层增加一个扩展 action * @param action */ this.addBuiltinComponentAction = function (action) { _this[designerSymbol].componentActions.addBuiltinComponentAction(action); }; /** * 刷新 componentMetasMap,可触发模拟器里的 components 重新构建 */ this.refreshComponentMetasMap = function () { _this[designerSymbol].refreshComponentMetasMap(); }; this[innerEditorSymbol] = editor; } /** * 获取组件 map 结构 */ var _proto = Material.prototype; /** * 设置「资产包」结构 * @param assets * @returns */ _proto.setAssets = /*#__PURE__*/ function () { var _setAssets = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(assets) { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 2; return this[editorSymbol].setAssets(assets); case 2: return _context.abrupt("return", _context.sent); case 3: case "end": return _context.stop(); } }, _callee, this); })); function setAssets(_x) { return _setAssets.apply(this, arguments); } return setAssets; }() /** * 获取「资产包」结构 * @returns */ ; _proto.getAssets = function getAssets() { return this[editorSymbol].get('assets'); } /** * 加载增量的「资产包」结构,该增量包会与原有的合并 * @param incrementalAssets * @returns */; _proto.loadIncrementalAssets = function loadIncrementalAssets(incrementalAssets) { return this[designerSymbol].loadIncrementalAssets(incrementalAssets); }; /** * 获取所有物料元数据管道函数 * @returns */ _proto.getRegisteredMetadataTransducers = function getRegisteredMetadataTransducers() { return this[designerSymbol].componentActions.getRegisteredMetadataTransducers(); } /** * 获取指定名称的物料元数据 * @param componentName * @returns */; _proto.getComponentMeta = function getComponentMeta(componentName) { var innerMeta = this[designerSymbol].getComponentMeta(componentName); return ShellComponentMeta.create(innerMeta); } /** * create an instance of ComponentMeta by given metadata * @param metadata * @returns */; _proto.createComponentMeta = function createComponentMeta(metadata) { return ShellComponentMeta.create(this[designerSymbol].createComponentMeta(metadata)); } /** * test if the given object is a ComponentMeta instance or not * @param obj * @returns */; _proto.isComponentMeta = function isComponentMeta(obj) { return _isComponentMeta(obj); } /** * 获取所有已注册的物料元数据 * @returns */; _proto.getComponentMetasMap = function getComponentMetasMap() { var map = new Map(); var originalMap = this[designerSymbol].getComponentMetasMap(); for (var _iterator = _createForOfIteratorHelperLoose(originalMap.keys()), _step; !(_step = _iterator()).done;) { var componentName = _step.value; map.set(componentName, this.getComponentMeta(componentName)); } return map; }; /** * 移除设计器辅助层的指定 action * @param name */ _proto.removeBuiltinComponentAction = function removeBuiltinComponentAction(name) { this[designerSymbol].componentActions.removeBuiltinComponentAction(name); } /** * 修改已有的设计器辅助层的指定 action * @param actionName * @param handle */; _proto.modifyBuiltinComponentAction = function modifyBuiltinComponentAction(actionName, handle) { this[designerSymbol].componentActions.modifyBuiltinComponentAction(actionName, handle); } /** * 监听 assets 变化的事件 * @param fn */; _proto.onChangeAssets = function onChangeAssets(fn) { var dispose = [ // 设置 assets,经过 setAssets 赋值 this[editorSymbol].onChange('assets', fn), // 增量设置 assets,经过 loadIncrementalAssets 赋值 this[editorSymbol].eventBus.on('designer.incrementalAssetsReady', fn)]; return function () { dispose.forEach(function (d) { return d && d(); }); }; }; _proto.addContextMenuOption = function addContextMenuOption(option) { this[designerSymbol].contextMenuActions.addMenuAction(option); }; _proto.removeContextMenuOption = function removeContextMenuOption(name) { this[designerSymbol].contextMenuActions.removeMenuAction(name); }; _proto.adjustContextMenuLayout = function adjustContextMenuLayout(fn) { this[designerSymbol].contextMenuActions.adjustMenuLayout(fn); }; return _createClass(Material, [{ key: editorSymbol, get: function get() { if (this.workspaceMode) { return this[innerEditorSymbol]; } var workspace = globalContext.get('workspace'); if (workspace.isActive) { if (!workspace.window.editor) { logger.error('Material api 调用时机出现问题,请检查'); return this[innerEditorSymbol]; } return workspace.window.editor; } return this[innerEditorSymbol]; } }, { key: designerSymbol, get: function get() { return this[editorSymbol].get('designer'); } }, { key: "componentsMap", get: function get() { return this[designerSymbol].componentsMap; } }]); }();