UNPKG

@alilc/lowcode-shell

Version:

Shell Layer for AliLowCodeEngine

99 lines (94 loc) 3.03 kB
import { getLogger, isPluginEventName } from '@alilc/lowcode-utils'; var logger = getLogger({ level: 'warn', bizName: 'shell-event' }); var eventBusSymbol = Symbol('eventBus'); export var Event = /*#__PURE__*/function () { function Event(eventBus, options, workspaceMode) { if (workspaceMode === void 0) { workspaceMode = false; } this.workspaceMode = workspaceMode; this[eventBusSymbol] = void 0; this.options = void 0; this[eventBusSymbol] = eventBus; this.options = options; if (!this.options.prefix) { logger.warn('prefix is required while initializing Event'); } } /** * 监听事件 * @param event 事件名称 * @param listener 事件回调 */ var _proto = Event.prototype; _proto.on = function on(event, listener) { if (isPluginEventName(event)) { return this[eventBusSymbol].on(event, listener); } else { logger.warn("fail to monitor on event " + event + ", event should have a prefix like 'somePrefix:eventName'"); return function () {}; } } /** * 监听事件,会在其他回调函数之前执行 * @param event 事件名称 * @param listener 事件回调 */; _proto.prependListener = function prependListener(event, listener) { if (isPluginEventName(event)) { return this[eventBusSymbol].prependListener(event, listener); } else { logger.warn("fail to prependListener event " + event + ", event should have a prefix like 'somePrefix:eventName'"); return function () {}; } } /** * 取消监听事件 * @param event 事件名称 * @param listener 事件回调 */; _proto.off = function off(event, listener) { this[eventBusSymbol].off(event, listener); } /** * 触发事件 * @param event 事件名称 * @param args 事件参数 * @returns */; _proto.emit = function emit(event) { var _this$eventBusSymbol; if (!this.options.prefix) { logger.warn('Event#emit has been forbidden while prefix is not specified'); return; } for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } (_this$eventBusSymbol = this[eventBusSymbol]).emit.apply(_this$eventBusSymbol, [this.options.prefix + ":" + event].concat(args)); } /** * DO NOT USE if u fully understand what this method does. * @param event * @param args */; _proto.__internalEmit__ = function __internalEmit__(event) { var _this$eventBusSymbol2; for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } (_this$eventBusSymbol2 = this[eventBusSymbol]).emit.apply(_this$eventBusSymbol2, [event].concat(args)); }; return Event; }(); export function getEvent(editor, options) { if (options === void 0) { options = { prefix: 'common' }; } return new Event(editor.eventBus, options); }