@alilc/lowcode-renderer-core
Version:
renderer core
112 lines (111 loc) • 4.72 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = addonRendererFactory;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _base = _interopRequireDefault(require("./base"));
var _utils = require("../utils");
var _logger = _interopRequireDefault(require("../utils/logger"));
function addonRendererFactory() {
var _AddonRenderer;
var BaseRenderer = (0, _base["default"])();
return _AddonRenderer = /*#__PURE__*/function (_BaseRenderer) {
function AddonRenderer() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _BaseRenderer.call.apply(_BaseRenderer, [this].concat(args)) || this;
_this.__namespace = 'addon';
_this.addonKey = void 0;
_this.appHelper = void 0;
_this.open = void 0;
_this.close = void 0;
return _this;
}
(0, _inheritsLoose2["default"])(AddonRenderer, _BaseRenderer);
var _proto = AddonRenderer.prototype;
_proto.__afterInit = function __afterInit(props) {
var _props$config;
this.__generateCtx({
component: this
});
var schema = props.__schema || {};
this.state = this.__parseData(schema.state || {});
if ((0, _utils.isEmpty)(props.config) || !((_props$config = props.config) !== null && _props$config !== void 0 && _props$config.addonKey)) {
_logger["default"].warn('lce addon has wrong config');
this.setState({
__hasError: true
});
return;
}
// 注册插件
this.addonKey = props.config.addonKey;
this.appHelper.addons = this.appHelper.addons || {};
this.appHelper.addons[this.addonKey] = this;
this.__initDataSource(props);
this.open = this.open || function () {};
this.close = this.close || function () {};
this.__executeLifeCycleMethod('constructor', Array.prototype.slice.call(arguments));
};
_proto.componentWillUnmount = /*#__PURE__*/function () {
var _componentWillUnmount = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
var _BaseRenderer$prototy;
var config,
_args = arguments;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
(_BaseRenderer$prototy = _BaseRenderer.prototype.componentWillUnmount) === null || _BaseRenderer$prototy === void 0 ? void 0 : _BaseRenderer$prototy.apply(this, Array.prototype.slice.call(_args));
// 注销插件
config = this.props.config || {};
if (config && this.appHelper.addons) {
delete this.appHelper.addons[config.addonKey];
}
case 3:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function componentWillUnmount() {
return _componentWillUnmount.apply(this, arguments);
}
return componentWillUnmount;
}();
_proto.render = function render() {
var __schema = this.props.__schema;
if (this.__checkSchema(__schema)) {
return '插件 schema 结构异常!';
}
this.__debug(AddonRenderer.displayName + " render - " + __schema.fileName);
this.__generateCtx({
component: this
});
this.__render();
return this.__renderContent(this.__renderContextProvider({
compContext: this
}));
};
return (0, _createClass2["default"])(AddonRenderer, [{
key: "utils",
get: function get() {
var _ref = this.context.config || {},
_ref$utils = _ref.utils,
utils = _ref$utils === void 0 ? {} : _ref$utils;
return (0, _extends2["default"])({}, this.appHelper.utils, utils);
}
}]);
}(BaseRenderer), _AddonRenderer.displayName = 'AddonRenderer', _AddonRenderer.propTypes = {
config: _propTypes["default"].object,
__schema: _propTypes["default"].object
}, _AddonRenderer.defaultProps = {
config: {},
__schema: {}
}, _AddonRenderer;
}