@alilc/lowcode-shell
Version:
Shell Layer for AliLowCodeEngine
216 lines (208 loc) • 7.8 kB
JavaScript
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;
}
}]);
}();