fastlion-amis
Version:
一种MIS页面生成工具
95 lines (94 loc) • 4.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.JSONFieldRenderer = exports.JSONField = void 0;
var tslib_1 = require("tslib");
var react_1 = (0, tslib_1.__importDefault)(require("react"));
var factory_1 = require("../factory");
var react_json_view_1 = tslib_1.__importStar(require("react-json-view"));
var helper_1 = require("../utils/helper");
var tpl_builtin_1 = require("../utils/tpl-builtin");
var JSONField = /** @class */ (function (_super) {
(0, tslib_1.__extends)(JSONField, _super);
function JSONField() {
return _super !== null && _super.apply(this, arguments) || this;
}
JSONField.prototype.emitChange = function (e) {
var _a = this.props, onChange = _a.onChange, name = _a.name;
if (!name || !onChange) {
return false;
}
onChange(e.updated_src, name);
return true;
};
JSONField.prototype.shouldExpandNode = function (_a) {
var namespace = _a.namespace;
var levelExpand = this.props.levelExpand;
if (typeof levelExpand !== 'number') {
return false;
}
return namespace.length > levelExpand;
};
JSONField.prototype.render = function () {
var _a;
var _b;
var _c = this.props, className = _c.className, jsonTheme = _c.jsonTheme, cx = _c.classnames, placeholder = _c.placeholder, source = _c.source, levelExpand = _c.levelExpand, mutable = _c.mutable, displayDataTypes = _c.displayDataTypes, name = _c.name;
var value = (0, helper_1.getPropValue)(this.props);
var data = value;
if (source !== undefined && (0, tpl_builtin_1.isPureVariable)(source)) {
data = (0, tpl_builtin_1.resolveVariableAndFilter)(source, this.props.data, '| raw');
}
else if (typeof value === 'string') {
// 尝试解析 json
try {
data = JSON.parse(value);
}
catch (e) { }
}
var jsonThemeValue = jsonTheme;
if ((0, tpl_builtin_1.isPureVariable)(jsonTheme)) {
jsonThemeValue = (0, tpl_builtin_1.resolveVariableAndFilter)(jsonTheme, this.props.data, '| raw');
}
// JsonView 只支持对象,所以不是对象格式需要转成对象格式。
if (data && ~['string', 'number'].indexOf(typeof data)) {
data = (_a = {},
_a[typeof data] = data,
_a);
}
return (react_1.default.createElement("div", { className: cx('JsonField', className) }, typeof data === 'undefined' || data === null ? (placeholder) : (react_1.default.createElement(react_json_view_1.default, { name: false, src: data, theme: (_b = jsonThemeValue) !== null && _b !== void 0 ? _b : 'rjv-default', shouldCollapse: this.shouldExpandNode, enableClipboard: false, displayDataTypes: displayDataTypes, iconStyle: "square", onEdit: name && mutable ? this.emitChange : false, onDelete: name && mutable ? this.emitChange : false, onAdd: name && mutable ? this.emitChange : false }))));
};
var _a;
JSONField.defaultProps = {
placeholder: '-',
levelExpand: 1,
source: '',
displayDataTypes: false
};
(0, tslib_1.__decorate)([
helper_1.autobind,
(0, tslib_1.__metadata)("design:type", Function),
(0, tslib_1.__metadata)("design:paramtypes", [typeof (_a = typeof react_json_view_1.InteractionProps !== "undefined" && react_json_view_1.InteractionProps) === "function" ? _a : Object]),
(0, tslib_1.__metadata)("design:returntype", void 0)
], JSONField.prototype, "emitChange", null);
(0, tslib_1.__decorate)([
helper_1.autobind,
(0, tslib_1.__metadata)("design:type", Function),
(0, tslib_1.__metadata)("design:paramtypes", [Object]),
(0, tslib_1.__metadata)("design:returntype", void 0)
], JSONField.prototype, "shouldExpandNode", null);
return JSONField;
}(react_1.default.Component));
exports.JSONField = JSONField;
var JSONFieldRenderer = /** @class */ (function (_super) {
(0, tslib_1.__extends)(JSONFieldRenderer, _super);
function JSONFieldRenderer() {
return _super !== null && _super.apply(this, arguments) || this;
}
JSONFieldRenderer = (0, tslib_1.__decorate)([
(0, factory_1.Renderer)({
type: 'json'
})
], JSONFieldRenderer);
return JSONFieldRenderer;
}(JSONField));
exports.JSONFieldRenderer = JSONFieldRenderer;
//# sourceMappingURL=./renderers/Json.js.map
;