@alilc/lowcode-editor-core
Version:
Core Api for Ali lowCode engine
102 lines (100 loc) • 3.09 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.Setters = void 0;
exports.registerSetter = registerSetter;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _lowcodeUtils = require("@alilc/lowcode-utils");
var settersMap = new Map();
function registerSetter(typeOrMaps, setter) {
if (typeof typeOrMaps === 'object') {
Object.keys(typeOrMaps).forEach(function (type) {
registerSetter(type, typeOrMaps[type]);
});
return;
}
if (!setter) {
return;
}
if ((0, _lowcodeUtils.isCustomView)(setter)) {
setter = {
component: setter,
// todo: intl
title: setter.displayName || setter.name || 'CustomSetter'
};
}
if (!setter.initialValue) {
var initial = getInitialFromSetter(setter.component);
if (initial) {
setter.initialValue = function (field) {
return initial.call(field, field.getValue());
};
}
}
settersMap.set(typeOrMaps, (0, _extends2["default"])({
type: typeOrMaps
}, setter));
}
function getInitialFromSetter(setter) {
return setter && (setter.initial || setter.Initial || setter.type && (setter.type.initial || setter.type.Initial)) || null; // eslint-disable-line
}
var Setters = exports.Setters = function Setters(viewName) {
var _this = this;
if (viewName === void 0) {
viewName = 'global';
}
this.viewName = viewName;
this.settersMap = new Map();
this.getSetter = function (type) {
return _this.settersMap.get(type) || null;
};
this.registerSetter = function (typeOrMaps, setter) {
if (typeof typeOrMaps === 'object') {
Object.keys(typeOrMaps).forEach(function (type) {
_this.registerSetter(type, typeOrMaps[type]);
});
return;
}
if (!setter) {
return;
}
if ((0, _lowcodeUtils.isCustomView)(setter)) {
setter = {
component: setter,
// todo: intl
title: setter.displayName || setter.name || 'CustomSetter'
};
}
if (!setter.initialValue) {
var initial = getInitialFromSetter(setter.component);
if (initial) {
setter.initialValue = function (field) {
return initial.call(field, field.getValue());
};
}
}
_this.settersMap.set(typeOrMaps, (0, _extends2["default"])({
type: typeOrMaps
}, setter));
};
this.getSettersMap = function () {
return _this.settersMap;
};
this.createSetterContent = function (setter, props) {
if (typeof setter === 'string') {
setter = _this.getSetter(setter);
if (!setter) {
return null;
}
if (setter.defaultProps) {
props = (0, _extends2["default"])({}, setter.defaultProps, props);
}
setter = setter.component;
}
// Fusion 的表单组件都是通过 'value' in props 来判断是否使用 defaultValue
if ('value' in props && typeof props.value === 'undefined') {
delete props.value;
}
return (0, _lowcodeUtils.createContent)(setter, props);
};
};
;