UNPKG

@alilc/lowcode-editor-core

Version:

Core Api for Ali lowCode engine

96 lines (95 loc) 2.77 kB
import _extends from "@babel/runtime/helpers/extends"; import { createContent, isCustomView } from '@alilc/lowcode-utils'; var settersMap = new Map(); export function registerSetter(typeOrMaps, setter) { if (typeof typeOrMaps === 'object') { Object.keys(typeOrMaps).forEach(function (type) { registerSetter(type, typeOrMaps[type]); }); return; } if (!setter) { return; } if (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, _extends({ type: typeOrMaps }, setter)); } function getInitialFromSetter(setter) { return setter && (setter.initial || setter.Initial || setter.type && (setter.type.initial || setter.type.Initial)) || null; // eslint-disable-line } export var 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 (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, _extends({ 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 = _extends({}, setter.defaultProps, props); } setter = setter.component; } // Fusion 的表单组件都是通过 'value' in props 来判断是否使用 defaultValue if ('value' in props && typeof props.value === 'undefined') { delete props.value; } return createContent(setter, props); }; };