UNPKG

@alilc/lowcode-rax-renderer

Version:

Rax renderer for Ali lowCode engine

100 lines (98 loc) 4.74 kB
"use strict"; exports.__esModule = true; exports.default = compFactory; var _rax = require("rax"); var _propTypes = _interopRequireDefault(require("prop-types")); var _lowcodeUtils = require("@alilc/lowcode-utils"); var _lowcodeRendererCore = require("@alilc/lowcode-renderer-core"); var _component = _interopRequireDefault(require("../renderer/component")); var _block = _interopRequireDefault(require("../renderer/block")); var _excluded = ["forwardedRef"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } // @ts-nocheck var forEach = _lowcodeRendererCore.utils.forEach, isFileSchema = _lowcodeRendererCore.utils.isFileSchema; function compFactory(schema, components, componentsMap, config) { if (components === void 0) { components = {}; } if (componentsMap === void 0) { componentsMap = {}; } if (config === void 0) { config = {}; } // 自定义组件需要有自己独立的appHelper var appHelper = new _lowcodeUtils.AppHelper(config); var CompRenderer = (0, _component.default)(); var BlockRenderer = (0, _block.default)(); var AppContext = (0, _lowcodeRendererCore.contextFactory)(); var LNCompView = /*#__PURE__*/function (_Component) { _inheritsLoose(LNCompView, _Component); function LNCompView() { return _Component.apply(this, arguments) || this; } var _proto = LNCompView.prototype; _proto.render = function render() { var _this = this; if (!schema || schema.componentName !== 'Component' || !isFileSchema(schema)) { console.warn('自定义组件模型结构异常!'); return null; } var _this$props = this.props, forwardedRef = _this$props.forwardedRef, otherProps = _objectWithoutPropertiesLoose(_this$props, _excluded); // 低代码组件透传应用上下文 ['utils', 'constants', 'history', 'location', 'match'].forEach(function (key) { var _this$context, _this$context2; if (!appHelper[key] && (_this$context = _this.context) != null && _this$context.appHelper && (_this$context2 = _this.context) != null && _this$context2.appHelper[key]) { appHelper.set(key, _this.context.appHelper[key]); } }); // 支持通过context透传国际化配置 var localeProps = {}; var _this$context3 = this.context, locale = _this$context3.locale, messages = _this$context3.messages; if (locale && messages && messages[schema.fileName]) { localeProps.locale = locale; localeProps.messages = messages[schema.fileName]; } var props = _extends({}, schema.defaultProps, localeProps, otherProps, { __schema: schema, ref: forwardedRef }); return createElement(AppContext.Consumer, null, function (context) { _this.context = context; return createElement(CompRenderer, _extends({}, props, { __appHelper: appHelper, __components: _extends({}, components, { Component: CompRenderer, Block: BlockRenderer }), __componentsMap: componentsMap })); }); }; return LNCompView; }(_rax.Component); LNCompView.displayName = 'LceCompFactory'; LNCompView.version = config.version || '0.0.0'; LNCompView.contextType = AppContext; LNCompView.propTypes = { forwardedRef: _propTypes.default.func }; var ResComp = (0, _rax.forwardRef)(function (props, ref) { return createElement(LNCompView, _extends({}, props, { forwardedRef: ref })); }); forEach(schema.static, function (val, key) { ResComp[key] = val; }); ResComp.version = config.version || '0.0.0'; return ResComp; }