UNPKG

react-json-schema-editor-antd

Version:

Json Schema Editor

212 lines (210 loc) 9.93 kB
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } import { Flex, Row, Tooltip } from 'antd'; import React, { memo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import AddBtns from "./AddBtns"; import ControlBtns from "./ControlBtns"; import Description from "./Description"; import DragLine from "./DragLine"; import KeyGroup from "./KeyGroup"; import NodeType from "./NodeType"; import RefPropertyActions from "./RefPropertyActions"; import SettingsGroup from "./SettingsGroup"; import TmpPropertiesOr from "./TmpPropertiesOr"; import ValueInput from "./ValueInput"; var SchemaRow = function SchemaRow(props) { var _useTranslation = useTranslation(), t = _useTranslation.t; var schema = props.schema, uniqueKey = props.uniqueKey, propertyName = props.propertyName, setPropertyName = props.setPropertyName, renamePropertySource = props.renamePropertySource, namePath = props.namePath, isDataModelItems = props.isDataModelItems, modalDepth = props.modalDepth, isUnLinkDataModelItems = props.isUnLinkDataModelItems, nodeDepth = props.nodeDepth, isArrayItems = props.isArrayItems, isCombinedItems = props.isCombinedItems, isHidden = props.isHidden, isFirstCombinedData = props.isFirstCombinedData, isTmpProperties = props.isTmpProperties, isRepeat = props.isRepeat, keyWidth = props.keyWidth, setKeyWidth = props.setKeyWidth, nodeType = props.nodeType, listeners = props.listeners, expand = props.expand, setExpand = props.setExpand, renderKeyComponents = props.renderKeyComponents, keyChange = props.keyChange, onKeySchemaRowUpdate = props.onKeySchemaRowUpdate, getSchemaData = props.getSchemaData, renderValueComponents = props.renderValueComponents, renameProperty = props.renameProperty, addProperty = props.addProperty, setSchemaRefModalShow = props.setSchemaRefModalShow, defaultValue = props.defaultValue, isRequire = props.isRequire, mock = props.mock, setMock = props.setMock, schemaDescription = props.schemaDescription, setSchemaDescription = props.setSchemaDescription, allowNull = props.allowNull, examples = props.examples, onExampleChange = props.onExampleChange, updateSchema = props.updateSchema, updateRequiredProperty = props.updateRequiredProperty, refData = props.refData, updateAllowNull = props.updateAllowNull, removeProperty = props.removeProperty, displayRefPropertyActions = props.displayRefPropertyActions, linkRefProperty = props.linkRefProperty, hiddenRefProperty = props.hiddenRefProperty, components = props.components, addRef = props.addRef; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), showDataModelSettings = _useState2[0], setShowDataModelSettings = _useState2[1]; var isRoot = nodeDepth === 0; // 数据模型 && 解除关联 && 层级不为1 // const isDataModelShowBtn = // isDataModelItems && isUnLinkDataModelItems && props?.modalDepth !== 0; // 数据模型内部字段 且 层级为1 属性名禁用 var isDataModelPropertyDisabled = isDataModelItems && (modalDepth === 0 || !isUnLinkDataModelItems); // 是否隐藏拖动按钮 var isHiddenDrag = isRoot || isArrayItems || isCombinedItems || isDataModelPropertyDisabled || isDataModelItems && !isUnLinkDataModelItems && modalDepth !== 0; // key输入是否禁用 var isKeyDisabled = Boolean(isRoot || isArrayItems || isCombinedItems || isHidden || isDataModelPropertyDisabled || isDataModelItems && !isUnLinkDataModelItems); // 选择类型是否禁用 var isTypeDisabled = Boolean(isHidden || isDataModelItems && !isUnLinkDataModelItems); var isHiddenDelete = isRoot || isTypeDisabled || isDataModelPropertyDisabled || isArrayItems || isFirstCombinedData; var maxKeyWidth = isTmpProperties ? 160 + (nodeDepth - 1) * 20 : 500; if (maxKeyWidth > 500) { maxKeyWidth = 500; } return /*#__PURE__*/React.createElement(Tooltip, { mouseEnterDelay: 0.5, title: isRepeat ? t('repeat_field') : '' }, /*#__PURE__*/React.createElement(Row, { className: "sortable-table-item", align: 'stretch', wrap: false, style: { borderBottom: '1px solid var(--color-border,#F2F4F6)' } }, /*#__PURE__*/React.createElement(KeyGroup, { keyWidth: keyWidth, nodeDepth: nodeDepth, nodeType: nodeType, isHiddenDrag: isHiddenDrag, uniqueKey: uniqueKey, isKeyDisabled: isKeyDisabled, isRoot: isRoot, isRepeat: isRepeat, listeners: listeners, keyChange: keyChange, onKeySchemaRowUpdate: onKeySchemaRowUpdate, getSchemaData: getSchemaData, renameProperty: renameProperty, renamePropertySource: renamePropertySource, renderKeyComponents: renderKeyComponents, namePath: namePath, isHidden: isHidden, isTmpProperties: isTmpProperties, propertyName: propertyName, setPropertyName: setPropertyName, expand: expand, setExpand: setExpand }), isRoot && /*#__PURE__*/React.createElement(DragLine, { keyWidth: keyWidth, setKeyWidth: setKeyWidth }), /*#__PURE__*/React.createElement(AddBtns, { nodeType: nodeType, isArrayItems: isArrayItems, isDataModelItems: isDataModelItems, namePath: namePath, addProperty: addProperty, setExpand: setExpand, isRoot: isRoot, isTmpProperties: isTmpProperties, isUnLinkDataModelItems: isUnLinkDataModelItems }), isTmpProperties && /*#__PURE__*/React.createElement(TmpPropertiesOr, { setSchemaRefModalShow: setSchemaRefModalShow }), !isTmpProperties && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NodeType, { nodeType: nodeType, isRoot: isRoot, defaultValue: defaultValue, isRequire: isRequire, mock: mock, setMock: setMock, showDataModelSettings: showDataModelSettings, setShowDataModelSettings: setShowDataModelSettings, schemaDescription: schemaDescription, setSchemaDescription: setSchemaDescription, isTypeDisabled: isTypeDisabled, refData: refData, isHidden: isHidden, isRepeat: isRepeat, allowNull: allowNull, examples: examples, onExampleChange: onExampleChange, updateSchema: updateSchema, namePath: namePath, schema: schema, updateRequiredProperty: updateRequiredProperty, isDataModelItems: isDataModelItems, isUnLinkDataModelItems: isUnLinkDataModelItems, updateAllowNull: updateAllowNull, propertyName: propertyName, removeProperty: removeProperty, isArrayItems: isArrayItems, components: components, addRef: addRef, renderValueComponents: renderValueComponents }), /*#__PURE__*/React.createElement(SettingsGroup, _extends({ showDataModelSettings: showDataModelSettings, setShowDataModelSettings: setShowDataModelSettings, isRoot: isRoot }, props)), /*#__PURE__*/React.createElement(ValueInput, { mock: mock, setMock: setMock, isRoot: isRoot, isTypeDisabled: isTypeDisabled, isHidden: isHidden, renderValueComponents: renderValueComponents, isRepeat: isRepeat, updateSchema: updateSchema, namePath: namePath }), /*#__PURE__*/React.createElement(Description, { isHidden: isHidden, isRepeat: isRepeat, isTypeDisabled: isTypeDisabled, schemaDescription: schemaDescription, setSchemaDescription: setSchemaDescription, updateSchema: updateSchema, namePath: namePath })), isTmpProperties && /*#__PURE__*/React.createElement(Flex, { flex: 1 }, " "), /*#__PURE__*/React.createElement(ControlBtns, { isHiddenDelete: isHiddenDelete, removeProperty: removeProperty, namePath: namePath }), displayRefPropertyActions && modalDepth === 0 && /*#__PURE__*/React.createElement(RefPropertyActions, { isUnLinkDataModelItems: isUnLinkDataModelItems, linkRefProperty: linkRefProperty, hiddenRefProperty: hiddenRefProperty, namePath: namePath, schema: schema, isHidden: isHidden }))); }; export default /*#__PURE__*/memo(SchemaRow);