@alilc/lowcode-plugin-designer
Version:
alibaba lowcode editor designer plugin
161 lines • 6.22 kB
JavaScript
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import React, { PureComponent } from 'react';
import { engineConfig } from '@alilc/lowcode-editor-core';
import { DesignerView } from '@alilc/lowcode-designer';
import { getLogger } from '@alilc/lowcode-utils';
import './index.scss';
var logger = getLogger({
level: 'warn',
bizName: 'plugin:plugin-designer'
});
var DesignerPlugin = /*#__PURE__*/function (_PureComponent) {
function DesignerPlugin(props) {
var _this;
_this = _PureComponent.call(this, props) || this;
_this.state = {
componentMetadatas: null,
library: null,
extraEnvironment: null,
renderEnv: 'default',
device: 'default',
locale: '',
designMode: 'live',
deviceClassName: '',
simulatorUrl: null,
requestHandlersMap: null
};
_this._mounted = true;
_this.handleDesignerMount = function (designer) {
var editor = _this.props.engineEditor;
editor.set('designer', designer);
editor.eventBus.emit('designer.ready', designer);
editor.onGot('schema', function (schema) {
designer.project.open(schema);
});
};
_this.setupAssets();
return _this;
}
_inheritsLoose(DesignerPlugin, _PureComponent);
var _proto = DesignerPlugin.prototype;
_proto.setupAssets = /*#__PURE__*/function () {
var _setupAssets = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
var _this2 = this;
var editor, assets, renderEnv, device, locale, designMode, deviceClassName, simulatorUrl, requestHandlersMap, components, packages, extraEnvironment, utils, state;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
editor = this.props.engineEditor;
_context.prev = 1;
_context.next = 4;
return editor.onceGot('assets');
case 4:
assets = _context.sent;
renderEnv = engineConfig.get('renderEnv') || editor.get('renderEnv');
device = engineConfig.get('device') || editor.get('device');
locale = engineConfig.get('locale') || editor.get('locale');
designMode = engineConfig.get('designMode') || editor.get('designMode');
deviceClassName = engineConfig.get('deviceClassName') || editor.get('deviceClassName');
simulatorUrl = engineConfig.get('simulatorUrl') || editor.get('simulatorUrl'); // @TODO setupAssets 里设置 requestHandlersMap 不太合适
requestHandlersMap = engineConfig.get('requestHandlersMap') || editor.get('requestHandlersMap');
if (this._mounted) {
_context.next = 14;
break;
}
return _context.abrupt("return");
case 14:
engineConfig.onGot('locale', function (locale) {
_this2.setState({
locale: locale
});
});
engineConfig.onGot('requestHandlersMap', function (requestHandlersMap) {
_this2.setState({
requestHandlersMap: requestHandlersMap
});
});
engineConfig.onGot('device', function (device) {
_this2.setState({
device: device
});
});
components = assets.components, packages = assets.packages, extraEnvironment = assets.extraEnvironment, utils = assets.utils;
state = {
componentMetadatas: components || [],
library: packages || [],
utilsMetadata: utils || [],
extraEnvironment: extraEnvironment,
renderEnv: renderEnv,
device: device,
designMode: designMode,
deviceClassName: deviceClassName,
simulatorUrl: simulatorUrl,
requestHandlersMap: requestHandlersMap,
locale: locale
};
this.setState(state);
_context.next = 25;
break;
case 22:
_context.prev = 22;
_context.t0 = _context["catch"](1);
logger.error(_context.t0);
case 25:
case "end":
return _context.stop();
}
}, _callee, this, [[1, 22]]);
}));
function setupAssets() {
return _setupAssets.apply(this, arguments);
}
return setupAssets;
}();
_proto.componentWillUnmount = function componentWillUnmount() {
this._mounted = false;
};
_proto.render = function render() {
var editor = this.props.engineEditor;
var _this$state = this.state,
componentMetadatas = _this$state.componentMetadatas,
utilsMetadata = _this$state.utilsMetadata,
library = _this$state.library,
extraEnvironment = _this$state.extraEnvironment,
renderEnv = _this$state.renderEnv,
device = _this$state.device,
designMode = _this$state.designMode,
deviceClassName = _this$state.deviceClassName,
simulatorUrl = _this$state.simulatorUrl,
requestHandlersMap = _this$state.requestHandlersMap,
locale = _this$state.locale;
if (!library || !componentMetadatas) {
// TODO: use a Loading
return null;
}
return /*#__PURE__*/React.createElement(DesignerView, {
onMount: this.handleDesignerMount,
className: "lowcode-plugin-designer",
editor: editor,
name: editor.viewName,
designer: editor.get('designer'),
componentMetadatas: componentMetadatas,
simulatorProps: {
library: library,
utilsMetadata: utilsMetadata,
extraEnvironment: extraEnvironment,
renderEnv: renderEnv,
device: device,
locale: locale,
designMode: designMode,
deviceClassName: deviceClassName,
simulatorUrl: simulatorUrl,
requestHandlersMap: requestHandlersMap
}
});
};
return DesignerPlugin;
}(PureComponent);
DesignerPlugin.displayName = void 0;
export { DesignerPlugin as default };