@next-libs/visual-builder 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +13 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/brick-visualization.js +22 -0
- package/dist/cjs/interfaces/brick-visualization.js.map +1 -0
- package/dist/cjs/interfaces/index.js +19 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/cjs/visual-property-form/VisualPropertyForm.js +282 -0
- package/dist/cjs/visual-property-form/VisualPropertyForm.js.map +1 -0
- package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +64 -0
- package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -0
- package/dist/cjs/visual-property-form/components/ColorEditor/ColorEditorItem.js +100 -0
- package/dist/cjs/visual-property-form/components/ColorEditor/ColorEditorItem.js.map +1 -0
- package/dist/cjs/visual-property-form/components/IconSelect/IconSelectFormItem.js +35 -0
- package/dist/cjs/visual-property-form/components/IconSelect/IconSelectFormItem.js.map +1 -0
- package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js +83 -0
- package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -0
- package/dist/cjs/visual-property-form/constant.js +54 -0
- package/dist/cjs/visual-property-form/constant.js.map +1 -0
- package/dist/cjs/visual-property-form/processor.js +204 -0
- package/dist/cjs/visual-property-form/processor.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/brick-visualization.js +14 -0
- package/dist/esm/interfaces/brick-visualization.js.map +1 -0
- package/dist/esm/interfaces/index.js +2 -0
- package/dist/esm/interfaces/index.js.map +1 -0
- package/dist/esm/visual-property-form/VisualPropertyForm.js +253 -0
- package/dist/esm/visual-property-form/VisualPropertyForm.js.map +1 -0
- package/dist/esm/visual-property-form/VisualPropertyForm.module.css +33 -0
- package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +58 -0
- package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -0
- package/dist/esm/visual-property-form/components/ColorEditor/ColorEditor.module.css +32 -0
- package/dist/esm/visual-property-form/components/ColorEditor/ColorEditorItem.js +81 -0
- package/dist/esm/visual-property-form/components/ColorEditor/ColorEditorItem.js.map +1 -0
- package/dist/esm/visual-property-form/components/IconSelect/IconSelectFormItem.js +23 -0
- package/dist/esm/visual-property-form/components/IconSelect/IconSelectFormItem.js.map +1 -0
- package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js +77 -0
- package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -0
- package/dist/esm/visual-property-form/constant.js +43 -0
- package/dist/esm/visual-property-form/constant.js.map +1 -0
- package/dist/esm/visual-property-form/images/empty-dark.svg +54 -0
- package/dist/esm/visual-property-form/processor.js +183 -0
- package/dist/esm/visual-property-form/processor.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/interfaces/brick-visualization.d.ts +32 -0
- package/dist/types/interfaces/index.d.ts +1 -0
- package/dist/types/visual-property-form/VisualPropertyForm.d.ts +22 -0
- package/dist/types/visual-property-form/VisualPropertyForm.spec.d.ts +1 -0
- package/dist/types/visual-property-form/components/CodeEditor/CodeEditorFormItem.d.ts +7 -0
- package/dist/types/visual-property-form/components/CodeEditor/CodeEditorFormItem.spec.d.ts +1 -0
- package/dist/types/visual-property-form/components/ColorEditor/ColorEditorItem.d.ts +17 -0
- package/dist/types/visual-property-form/components/ColorEditor/ColorEditorItem.spec.d.ts +1 -0
- package/dist/types/visual-property-form/components/IconSelect/IconSelectFormItem.d.ts +3 -0
- package/dist/types/visual-property-form/components/IconSelect/IconSelectFormItem.spec.d.ts +1 -0
- package/dist/types/visual-property-form/components/MenuEditor/MenuEditorItem.d.ts +11 -0
- package/dist/types/visual-property-form/components/MenuEditor/MenuEditorItem.spec.d.ts +1 -0
- package/dist/types/visual-property-form/constant.d.ts +31 -0
- package/dist/types/visual-property-form/processor.d.ts +27 -0
- package/package.json +39 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
# 1.1.0 (2022-09-20)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **visual-builder:** 迁移【visual-property-form】至libs ([bb31a88](https://github.com/easyops-cn/next-libs/commit/bb31a883378a208ae271f2e8c792b049821b6596))
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# @next-libs/visual-builder
|
|
2
|
+
|
|
3
|
+
Generated by [@next-core/brick-scripts] v3.0.1
|
|
4
|
+
|
|
5
|
+
## Development
|
|
6
|
+
|
|
7
|
+
`lerna run start --scope=@next-libs/visual-builder`
|
|
8
|
+
|
|
9
|
+
## Build
|
|
10
|
+
|
|
11
|
+
`lerna run build --scope=@next-libs/visual-builder`
|
|
12
|
+
|
|
13
|
+
[@next-core/brick-scripts]: https://github.com/easyops-cn/next-core/tree/master/packages/brick-scripts
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _VisualPropertyForm = require("./visual-property-form/VisualPropertyForm");
|
|
8
|
+
|
|
9
|
+
Object.keys(_VisualPropertyForm).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _VisualPropertyForm[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _VisualPropertyForm[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
var _interfaces = require("./interfaces");
|
|
21
|
+
|
|
22
|
+
Object.keys(_interfaces).forEach(function (key) {
|
|
23
|
+
if (key === "default" || key === "__esModule") return;
|
|
24
|
+
if (key in exports && exports[key] === _interfaces[key]) return;
|
|
25
|
+
Object.defineProperty(exports, key, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _interfaces[key];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
var _processor = require("./visual-property-form/processor");
|
|
34
|
+
|
|
35
|
+
Object.keys(_processor).forEach(function (key) {
|
|
36
|
+
if (key === "default" || key === "__esModule") return;
|
|
37
|
+
if (key in exports && exports[key] === _processor[key]) return;
|
|
38
|
+
Object.defineProperty(exports, key, {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () {
|
|
41
|
+
return _processor[key];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./visual-property-form/VisualPropertyForm\";\nexport * from \"./interfaces\";\nexport * from \"./visual-property-form/processor\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Required = exports.ItemModeType = void 0;
|
|
7
|
+
let Required;
|
|
8
|
+
exports.Required = Required;
|
|
9
|
+
|
|
10
|
+
(function (Required) {
|
|
11
|
+
Required["True"] = "true";
|
|
12
|
+
Required["False"] = "false";
|
|
13
|
+
})(Required || (exports.Required = Required = {}));
|
|
14
|
+
|
|
15
|
+
let ItemModeType;
|
|
16
|
+
exports.ItemModeType = ItemModeType;
|
|
17
|
+
|
|
18
|
+
(function (ItemModeType) {
|
|
19
|
+
ItemModeType["Normal"] = "normal";
|
|
20
|
+
ItemModeType["Advanced"] = "advanced";
|
|
21
|
+
})(ItemModeType || (exports.ItemModeType = ItemModeType = {}));
|
|
22
|
+
//# sourceMappingURL=brick-visualization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brick-visualization.js","names":["Required","ItemModeType"],"sources":["../../../src/interfaces/brick-visualization.ts"],"sourcesContent":["import { FormInstance } from \"antd/lib/form\";\n\nexport type FormItemType =\n | boolean\n | string\n | string[]\n | number\n | Record<string, any>;\n\nexport enum Required {\n True = \"true\",\n False = \"false\",\n}\n\nexport enum ItemModeType {\n Normal = \"normal\",\n Advanced = \"advanced\",\n}\n\nexport interface PropertyType {\n type: FormItemType;\n name: string;\n required?: Required;\n description?: string;\n default?: string;\n group?: string;\n groupI18N?: Record<string, { [language: string]: string }>;\n}\n\nexport interface UnionPropertyType extends PropertyType {\n mode?: ItemModeType;\n value?: any;\n jsonSchema?: Record<string, any>;\n schemaRef?: string;\n}\n\nexport type BrickProperties = Record<string, any>;\n\nexport interface visualFormUtils extends Partial<FormInstance> {\n resetPropertyFields: (\n typeList: PropertyType[],\n properties: BrickProperties\n ) => void;\n getCurTypeList: () => UnionPropertyType[];\n}\n"],"mappings":";;;;;;IASYA,Q;;;WAAAA,Q;EAAAA,Q;EAAAA,Q;GAAAA,Q,wBAAAA,Q;;IAKAC,Y;;;WAAAA,Y;EAAAA,Y;EAAAA,Y;GAAAA,Y,4BAAAA,Y"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _brickVisualization = require("./brick-visualization");
|
|
8
|
+
|
|
9
|
+
Object.keys(_brickVisualization).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _brickVisualization[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _brickVisualization[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/interfaces/index.ts"],"sourcesContent":["export * from \"./brick-visualization\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.LegacyVisualPropertyForm = LegacyVisualPropertyForm;
|
|
11
|
+
exports.VisualPropertyForm = void 0;
|
|
12
|
+
|
|
13
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
+
|
|
15
|
+
var _antd = require("antd");
|
|
16
|
+
|
|
17
|
+
var _brickKit = require("@next-core/brick-kit");
|
|
18
|
+
|
|
19
|
+
var _basicComponents = require("@next-libs/basic-components");
|
|
20
|
+
|
|
21
|
+
var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
|
|
22
|
+
|
|
23
|
+
var _lodash = require("lodash");
|
|
24
|
+
|
|
25
|
+
var _VisualPropertyFormModule = _interopRequireDefault(require("./VisualPropertyForm.module.css"));
|
|
26
|
+
|
|
27
|
+
var _CodeEditorFormItem = require("./components/CodeEditor/CodeEditorFormItem");
|
|
28
|
+
|
|
29
|
+
var _IconSelectFormItem = require("./components/IconSelect/IconSelectFormItem");
|
|
30
|
+
|
|
31
|
+
var _ColorEditorItem = require("./components/ColorEditor/ColorEditorItem");
|
|
32
|
+
|
|
33
|
+
var _MenuEditorItem = require("./components/MenuEditor/MenuEditorItem");
|
|
34
|
+
|
|
35
|
+
var _emptyDark = require("./images/empty-dark.svg");
|
|
36
|
+
|
|
37
|
+
var _processor = require("./processor");
|
|
38
|
+
|
|
39
|
+
var _constant = require("./constant");
|
|
40
|
+
|
|
41
|
+
var _interfaces = require("../interfaces");
|
|
42
|
+
|
|
43
|
+
function LegacyVisualPropertyForm(props, ref) {
|
|
44
|
+
var _groupByType;
|
|
45
|
+
|
|
46
|
+
const theme = (0, _brickKit.useCurrentTheme)();
|
|
47
|
+
const {
|
|
48
|
+
projectId,
|
|
49
|
+
labelIcon,
|
|
50
|
+
propertyTypeList,
|
|
51
|
+
brickProperties,
|
|
52
|
+
brickInfo,
|
|
53
|
+
emptyConfig,
|
|
54
|
+
menuSettingClick
|
|
55
|
+
} = props;
|
|
56
|
+
|
|
57
|
+
const [form] = _antd.Form.useForm();
|
|
58
|
+
|
|
59
|
+
const [typeList, setTypeList] = (0, _react.useState)((0, _processor.mergeProperties)(propertyTypeList, brickProperties));
|
|
60
|
+
(0, _react.useImperativeHandle)(ref, () => ({
|
|
61
|
+
validateFields: form.validateFields,
|
|
62
|
+
resetPropertyFields: (typeList, properties) => {
|
|
63
|
+
const restValue = (0, _processor.mergeProperties)(typeList, properties);
|
|
64
|
+
setTypeList(restValue);
|
|
65
|
+
form.resetFields();
|
|
66
|
+
},
|
|
67
|
+
getCurTypeList: () => {
|
|
68
|
+
return typeList === null || typeList === void 0 ? void 0 : typeList.map(item => (0, _lodash.pick)(item, ["name", "type", "mode"]));
|
|
69
|
+
}
|
|
70
|
+
}));
|
|
71
|
+
(0, _react.useEffect)(() => {
|
|
72
|
+
const newTypeList = (0, _processor.mergeProperties)(propertyTypeList, brickProperties);
|
|
73
|
+
setTypeList(newTypeList);
|
|
74
|
+
const newValue = (0, _processor.calculateValue)(propertyTypeList, brickProperties, newTypeList);
|
|
75
|
+
form.setFieldsValue(newValue);
|
|
76
|
+
}, [propertyTypeList, brickProperties]);
|
|
77
|
+
|
|
78
|
+
const handleLabelClick = name => {
|
|
79
|
+
const selected = typeList.find(item => item.name === name);
|
|
80
|
+
const index = typeList.findIndex(item => item.name === name);
|
|
81
|
+
const nextMode = selected.mode === _interfaces.ItemModeType.Advanced ? _interfaces.ItemModeType.Normal : _interfaces.ItemModeType.Advanced;
|
|
82
|
+
let value = selected.value;
|
|
83
|
+
|
|
84
|
+
if (nextMode === _interfaces.ItemModeType.Normal) {
|
|
85
|
+
if (_constant.supportMenuType.includes(selected.type)) {
|
|
86
|
+
value = (0, _processor.matchNoramlMenuValue)(value);
|
|
87
|
+
}
|
|
88
|
+
} else if ((0, _lodash.isNil)(selected.value)) {
|
|
89
|
+
value = "";
|
|
90
|
+
} else {
|
|
91
|
+
value = (0, _processor.yamlStringify)(selected.value);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
form.setFieldsValue({
|
|
95
|
+
[name]: value
|
|
96
|
+
});
|
|
97
|
+
const newTypeList = (0, _immutabilityHelper.default)(typeList, {
|
|
98
|
+
$splice: [[index, 1, { ...selected,
|
|
99
|
+
mode: nextMode
|
|
100
|
+
}]]
|
|
101
|
+
});
|
|
102
|
+
setTypeList(newTypeList);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const renderLabel = (item, hideIcon) => {
|
|
106
|
+
return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
|
|
107
|
+
title: item.description
|
|
108
|
+
}, item.name), " ", !hideIcon && labelIcon && /*#__PURE__*/_react.default.createElement("span", {
|
|
109
|
+
className: _VisualPropertyFormModule.default.iconContainer,
|
|
110
|
+
onClick: () => handleLabelClick(item.name)
|
|
111
|
+
}, /*#__PURE__*/_react.default.createElement(_basicComponents.GeneralIcon, {
|
|
112
|
+
icon: item.mode === _interfaces.ItemModeType.Advanced ? labelIcon === null || labelIcon === void 0 ? void 0 : labelIcon.advanced : labelIcon.normal
|
|
113
|
+
})));
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const renderEditorItem = (item, hideIcon) => {
|
|
117
|
+
return /*#__PURE__*/_react.default.createElement(_CodeEditorFormItem.CodeEditorFormItem, {
|
|
118
|
+
key: item.name,
|
|
119
|
+
name: item.name,
|
|
120
|
+
label: renderLabel(item, hideIcon),
|
|
121
|
+
required: item.required === _interfaces.Required.True,
|
|
122
|
+
theme: theme === "dark-v2" ? "monokai" : "tomorrow",
|
|
123
|
+
jsonSchema: item === null || item === void 0 ? void 0 : item.jsonSchema,
|
|
124
|
+
schemaRef: item === null || item === void 0 ? void 0 : item.schemaRef,
|
|
125
|
+
mode: "brick_next_yaml"
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const renderStringItem = item => {
|
|
130
|
+
return item.mode === _interfaces.ItemModeType.Advanced ? renderEditorItem(item) : /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
131
|
+
key: item.name,
|
|
132
|
+
label: renderLabel(item),
|
|
133
|
+
name: item.name,
|
|
134
|
+
rules: [{
|
|
135
|
+
required: item.required === _interfaces.Required.True,
|
|
136
|
+
message: `请输入${item.name}`
|
|
137
|
+
}]
|
|
138
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Input, null));
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const renderBooleanItem = item => {
|
|
142
|
+
return item.mode === _interfaces.ItemModeType.Advanced ? renderEditorItem(item) : /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
143
|
+
key: item.name,
|
|
144
|
+
label: renderLabel(item),
|
|
145
|
+
name: item.name,
|
|
146
|
+
rules: [{
|
|
147
|
+
required: item.required === _interfaces.Required.True,
|
|
148
|
+
message: `请输入${item.name}`
|
|
149
|
+
}]
|
|
150
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Radio.Group, null, /*#__PURE__*/_react.default.createElement(_antd.Radio, {
|
|
151
|
+
value: true
|
|
152
|
+
}, "true"), /*#__PURE__*/_react.default.createElement(_antd.Radio, {
|
|
153
|
+
value: false
|
|
154
|
+
}, "false")));
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
const renderInputNumberItem = item => {
|
|
158
|
+
return item.mode === _interfaces.ItemModeType.Advanced ? renderEditorItem(item) : /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
159
|
+
key: item.name,
|
|
160
|
+
label: renderLabel(item),
|
|
161
|
+
name: item.name,
|
|
162
|
+
rules: [{
|
|
163
|
+
required: item.required === _interfaces.Required.True,
|
|
164
|
+
message: `请输入${item.name}`
|
|
165
|
+
}]
|
|
166
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.InputNumber, null));
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const renderStringListItem = item => {
|
|
170
|
+
return item.mode === _interfaces.ItemModeType.Advanced ? renderEditorItem(item) : /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
171
|
+
key: item.name,
|
|
172
|
+
label: renderLabel(item),
|
|
173
|
+
name: item.name,
|
|
174
|
+
rules: [{
|
|
175
|
+
required: item.required === _interfaces.Required.True,
|
|
176
|
+
message: `请输入${item.name}`
|
|
177
|
+
}]
|
|
178
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
179
|
+
mode: "tags"
|
|
180
|
+
}));
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const renderIconItem = item => {
|
|
184
|
+
return /*#__PURE__*/_react.default.createElement(_IconSelectFormItem.IconSelectFormItem, {
|
|
185
|
+
key: item.name,
|
|
186
|
+
name: item.name,
|
|
187
|
+
label: renderLabel(item, true),
|
|
188
|
+
required: item.required === _interfaces.Required.True
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
const renderCodeEditorItem = item => {
|
|
193
|
+
return renderEditorItem(item, true);
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const renderColorItem = item => {
|
|
197
|
+
return /*#__PURE__*/_react.default.createElement(_ColorEditorItem.ColorEditorItem, {
|
|
198
|
+
key: item.name,
|
|
199
|
+
name: item.name,
|
|
200
|
+
label: renderLabel(item, true),
|
|
201
|
+
required: item.required === _interfaces.Required.True
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const renderMenuItem = item => {
|
|
206
|
+
return item.mode === _interfaces.ItemModeType.Advanced ? renderEditorItem(item) : /*#__PURE__*/_react.default.createElement(_MenuEditorItem.MenuEditorItem, {
|
|
207
|
+
projectId: projectId,
|
|
208
|
+
key: item.name,
|
|
209
|
+
name: item.name,
|
|
210
|
+
label: renderLabel(item),
|
|
211
|
+
required: item.required === _interfaces.Required.True,
|
|
212
|
+
menuSettingClick: menuSettingClick
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const getFormItem = item => {
|
|
217
|
+
switch (item.type) {
|
|
218
|
+
case "string":
|
|
219
|
+
return renderStringItem(item);
|
|
220
|
+
|
|
221
|
+
case "string[]":
|
|
222
|
+
return renderStringListItem(item);
|
|
223
|
+
|
|
224
|
+
case "number":
|
|
225
|
+
return renderInputNumberItem(item);
|
|
226
|
+
|
|
227
|
+
case "boolean":
|
|
228
|
+
return renderBooleanItem(item);
|
|
229
|
+
|
|
230
|
+
case "MenuIcon":
|
|
231
|
+
return renderIconItem(item);
|
|
232
|
+
|
|
233
|
+
case "Color":
|
|
234
|
+
return renderColorItem(item);
|
|
235
|
+
|
|
236
|
+
case "Menu":
|
|
237
|
+
case "SidebarSubMenu":
|
|
238
|
+
return renderMenuItem(item);
|
|
239
|
+
|
|
240
|
+
default:
|
|
241
|
+
return renderCodeEditorItem(item);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
return (0, _lodash.isEmpty)(typeList) ? /*#__PURE__*/_react.default.createElement(_antd.Empty, {
|
|
246
|
+
className: _VisualPropertyFormModule.default.empty,
|
|
247
|
+
description: emptyConfig === null || emptyConfig === void 0 ? void 0 : emptyConfig.description,
|
|
248
|
+
image: theme === "dark-v2" ? /*#__PURE__*/_react.default.createElement(_emptyDark.ReactComponent, null) : _antd.Empty.PRESENTED_IMAGE_SIMPLE,
|
|
249
|
+
imageStyle: emptyConfig === null || emptyConfig === void 0 ? void 0 : emptyConfig.imageStyle
|
|
250
|
+
}) : /*#__PURE__*/_react.default.createElement(_antd.Form, {
|
|
251
|
+
name: "propertyForm",
|
|
252
|
+
layout: "vertical",
|
|
253
|
+
form: form,
|
|
254
|
+
onValuesChange: props.onValuesChange,
|
|
255
|
+
initialValues: (0, _processor.calculateValue)(propertyTypeList, brickProperties, typeList)
|
|
256
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Collapse, {
|
|
257
|
+
ghost: true,
|
|
258
|
+
defaultActiveKey: "0",
|
|
259
|
+
className: _VisualPropertyFormModule.default.panelContainer
|
|
260
|
+
}, (_groupByType = (0, _processor.groupByType)(typeList)) === null || _groupByType === void 0 ? void 0 : _groupByType.map(([category, list], index) => {
|
|
261
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Collapse.Panel, {
|
|
262
|
+
header: (0, _lodash.upperFirst)(category),
|
|
263
|
+
key: index,
|
|
264
|
+
forceRender: true
|
|
265
|
+
}, list.map(item => getFormItem(item)));
|
|
266
|
+
}), /*#__PURE__*/_react.default.createElement(_antd.Collapse.Panel, {
|
|
267
|
+
className: _VisualPropertyFormModule.default.otherPanel,
|
|
268
|
+
forceRender: true,
|
|
269
|
+
header: (0, _lodash.upperFirst)(_constant.OTHER_FORM_ITEM_FIELD),
|
|
270
|
+
key: _constant.OTHER_FORM_ITEM_FIELD
|
|
271
|
+
}, /*#__PURE__*/_react.default.createElement(_CodeEditorFormItem.CodeEditorFormItem, {
|
|
272
|
+
name: _constant.OTHER_FORM_ITEM_FIELD,
|
|
273
|
+
label: (brickInfo === null || brickInfo === void 0 ? void 0 : brickInfo.type) === "template" ? "other params" : "other properties",
|
|
274
|
+
mode: "brick_next_yaml",
|
|
275
|
+
maxLines: Infinity
|
|
276
|
+
}))));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const VisualPropertyForm = /*#__PURE__*/_react.default.forwardRef(LegacyVisualPropertyForm);
|
|
280
|
+
|
|
281
|
+
exports.VisualPropertyForm = VisualPropertyForm;
|
|
282
|
+
//# sourceMappingURL=VisualPropertyForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisualPropertyForm.js","names":["LegacyVisualPropertyForm","props","ref","theme","useCurrentTheme","projectId","labelIcon","propertyTypeList","brickProperties","brickInfo","emptyConfig","menuSettingClick","form","Form","useForm","typeList","setTypeList","useState","mergeProperties","useImperativeHandle","validateFields","resetPropertyFields","properties","restValue","resetFields","getCurTypeList","map","item","pick","useEffect","newTypeList","newValue","calculateValue","setFieldsValue","handleLabelClick","name","selected","find","index","findIndex","nextMode","mode","ItemModeType","Advanced","Normal","value","supportMenuType","includes","type","matchNoramlMenuValue","isNil","yamlStringify","update","$splice","renderLabel","hideIcon","description","styles","iconContainer","advanced","normal","renderEditorItem","required","Required","True","jsonSchema","schemaRef","renderStringItem","message","renderBooleanItem","renderInputNumberItem","renderStringListItem","renderIconItem","renderCodeEditorItem","renderColorItem","renderMenuItem","getFormItem","isEmpty","empty","Empty","PRESENTED_IMAGE_SIMPLE","imageStyle","onValuesChange","panelContainer","groupByType","category","list","upperFirst","otherPanel","OTHER_FORM_ITEM_FIELD","Infinity","VisualPropertyForm","React","forwardRef"],"sources":["../../../src/visual-property-form/VisualPropertyForm.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useState } from \"react\";\nimport {\n Form,\n Input,\n InputNumber,\n Radio,\n Select,\n Tooltip,\n Collapse,\n Empty,\n} from \"antd\";\nimport { EmptyProps } from \"antd/lib/empty\";\nimport { useCurrentTheme } from \"@next-core/brick-kit\";\nimport { MenuIcon } from \"@next-core/brick-types\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport update from \"immutability-helper\";\nimport { isNil, pick, upperFirst, isEmpty } from \"lodash\";\nimport styles from \"./VisualPropertyForm.module.css\";\nimport { FormProps } from \"antd/lib/form\";\nimport { CodeEditorFormItem } from \"./components/CodeEditor/CodeEditorFormItem\";\nimport { IconSelectFormItem } from \"./components/IconSelect/IconSelectFormItem\";\nimport { ColorEditorItem } from \"./components/ColorEditor/ColorEditorItem\";\nimport { MenuEditorItem } from \"./components/MenuEditor/MenuEditorItem\";\nimport { ReactComponent as DarkEmpty } from \"./images/empty-dark.svg\";\nimport {\n mergeProperties,\n calculateValue,\n groupByType,\n yamlStringify,\n} from \"./processor\";\nimport { OTHER_FORM_ITEM_FIELD, supportMenuType } from \"./constant\";\nimport { matchNoramlMenuValue } from \"./processor\";\nimport {\n PropertyType,\n BrickProperties,\n visualFormUtils,\n ItemModeType,\n UnionPropertyType,\n Required,\n} from \"../interfaces\";\n\nexport interface VisualPropertyFormProps {\n projectId?: string;\n propertyTypeList: PropertyType[];\n labelIcon: {\n normal?: MenuIcon;\n advanced?: MenuIcon;\n };\n brickProperties: BrickProperties;\n onValuesChange?: FormProps[\"onValuesChange\"];\n brickInfo?: {\n type: \"brick\" | \"provider\" | \"template\";\n };\n emptyConfig?: EmptyProps;\n menuSettingClick?: () => void;\n}\n\nexport function LegacyVisualPropertyForm(\n props: VisualPropertyFormProps,\n ref: React.Ref<visualFormUtils>\n): React.ReactElement {\n const theme = useCurrentTheme();\n const {\n projectId,\n labelIcon,\n propertyTypeList,\n brickProperties,\n brickInfo,\n emptyConfig,\n menuSettingClick,\n } = props;\n const [form] = Form.useForm();\n const [typeList, setTypeList] = useState<UnionPropertyType[]>(\n mergeProperties(propertyTypeList, brickProperties)\n );\n\n useImperativeHandle(ref, () => ({\n validateFields: form.validateFields,\n resetPropertyFields: (\n typeList: PropertyType[],\n properties: BrickProperties\n ) => {\n const restValue = mergeProperties(typeList, properties);\n setTypeList(restValue);\n form.resetFields();\n },\n getCurTypeList: (): UnionPropertyType[] => {\n return typeList?.map((item) => pick(item, [\"name\", \"type\", \"mode\"]));\n },\n }));\n\n useEffect(() => {\n const newTypeList = mergeProperties(propertyTypeList, brickProperties);\n setTypeList(newTypeList);\n\n const newValue = calculateValue(\n propertyTypeList,\n brickProperties,\n newTypeList\n );\n form.setFieldsValue(newValue);\n }, [propertyTypeList, brickProperties]);\n\n const handleLabelClick = (name: string): void => {\n const selected = typeList.find((item) => item.name === name);\n const index = typeList.findIndex((item) => item.name === name);\n const nextMode =\n selected.mode === ItemModeType.Advanced\n ? ItemModeType.Normal\n : ItemModeType.Advanced;\n\n let value = selected.value;\n if (nextMode === ItemModeType.Normal) {\n if (supportMenuType.includes(selected.type as string)) {\n value = matchNoramlMenuValue(value);\n }\n } else if (isNil(selected.value)) {\n value = \"\";\n } else {\n value = yamlStringify(selected.value);\n }\n form.setFieldsValue({\n [name]: value,\n });\n const newTypeList = update(typeList, {\n $splice: [[index, 1, { ...selected, mode: nextMode }]],\n });\n setTypeList(newTypeList);\n };\n\n const renderLabel = (\n item: UnionPropertyType,\n hideIcon?: boolean\n ): React.ReactElement => {\n return (\n <span>\n <Tooltip title={item.description}>{item.name}</Tooltip>{\" \"}\n {!hideIcon && labelIcon && (\n <span\n className={styles.iconContainer}\n onClick={() => handleLabelClick(item.name)}\n >\n <GeneralIcon\n icon={\n item.mode === ItemModeType.Advanced\n ? labelIcon?.advanced\n : labelIcon.normal\n }\n />\n </span>\n )}\n </span>\n );\n };\n\n const renderEditorItem = (item: UnionPropertyType, hideIcon?: boolean) => {\n return (\n <CodeEditorFormItem\n key={item.name}\n name={item.name}\n label={renderLabel(item, hideIcon) as any}\n required={item.required === Required.True}\n theme={theme === \"dark-v2\" ? \"monokai\" : \"tomorrow\"}\n jsonSchema={item?.jsonSchema}\n schemaRef={item?.schemaRef}\n mode=\"brick_next_yaml\"\n />\n );\n };\n\n const renderStringItem = (item: UnionPropertyType): React.ReactElement => {\n return item.mode === ItemModeType.Advanced ? (\n renderEditorItem(item)\n ) : (\n <Form.Item\n key={item.name}\n label={renderLabel(item)}\n name={item.name}\n rules={[\n {\n required: item.required === Required.True,\n message: `请输入${item.name}`,\n },\n ]}\n >\n <Input />\n </Form.Item>\n );\n };\n\n const renderBooleanItem = (item: UnionPropertyType): React.ReactElement => {\n return item.mode === ItemModeType.Advanced ? (\n renderEditorItem(item)\n ) : (\n <Form.Item\n key={item.name}\n label={renderLabel(item)}\n name={item.name}\n rules={[\n {\n required: item.required === Required.True,\n message: `请输入${item.name}`,\n },\n ]}\n >\n <Radio.Group>\n <Radio value={true}>true</Radio>\n <Radio value={false}>false</Radio>\n </Radio.Group>\n </Form.Item>\n );\n };\n\n const renderInputNumberItem = (\n item: UnionPropertyType\n ): React.ReactElement => {\n return item.mode === ItemModeType.Advanced ? (\n renderEditorItem(item)\n ) : (\n <Form.Item\n key={item.name}\n label={renderLabel(item)}\n name={item.name}\n rules={[\n {\n required: item.required === Required.True,\n message: `请输入${item.name}`,\n },\n ]}\n >\n <InputNumber />\n </Form.Item>\n );\n };\n\n const renderStringListItem = (\n item: UnionPropertyType\n ): React.ReactElement => {\n return item.mode === ItemModeType.Advanced ? (\n renderEditorItem(item)\n ) : (\n <Form.Item\n key={item.name}\n label={renderLabel(item)}\n name={item.name}\n rules={[\n {\n required: item.required === Required.True,\n message: `请输入${item.name}`,\n },\n ]}\n >\n <Select mode=\"tags\" />\n </Form.Item>\n );\n };\n\n const renderIconItem = (item: UnionPropertyType): React.ReactElement => {\n return (\n <IconSelectFormItem\n key={item.name}\n name={item.name}\n label={renderLabel(item, true) as any}\n required={item.required === Required.True}\n />\n );\n };\n\n const renderCodeEditorItem = (item: PropertyType): React.ReactElement => {\n return renderEditorItem(item, true);\n };\n\n const renderColorItem = (item: PropertyType): React.ReactElement => {\n return (\n <ColorEditorItem\n key={item.name}\n name={item.name}\n label={renderLabel(item, true)}\n required={item.required === Required.True}\n />\n );\n };\n\n const renderMenuItem = (item: UnionPropertyType): React.ReactElement => {\n return item.mode === ItemModeType.Advanced ? (\n renderEditorItem(item)\n ) : (\n <MenuEditorItem\n projectId={projectId}\n key={item.name}\n name={item.name}\n label={renderLabel(item)}\n required={item.required === Required.True}\n menuSettingClick={menuSettingClick}\n />\n );\n };\n\n const getFormItem = (item: PropertyType): React.ReactElement => {\n switch (item.type) {\n case \"string\":\n return renderStringItem(item);\n case \"string[]\":\n return renderStringListItem(item);\n case \"number\":\n return renderInputNumberItem(item);\n case \"boolean\":\n return renderBooleanItem(item);\n case \"MenuIcon\":\n return renderIconItem(item);\n case \"Color\":\n return renderColorItem(item);\n case \"Menu\":\n case \"SidebarSubMenu\":\n return renderMenuItem(item);\n default:\n return renderCodeEditorItem(item);\n }\n };\n\n return isEmpty(typeList) ? (\n <Empty\n className={styles.empty}\n description={emptyConfig?.description}\n image={theme === \"dark-v2\" ? <DarkEmpty /> : Empty.PRESENTED_IMAGE_SIMPLE}\n imageStyle={emptyConfig?.imageStyle}\n />\n ) : (\n <Form\n name=\"propertyForm\"\n layout=\"vertical\"\n form={form}\n onValuesChange={props.onValuesChange}\n initialValues={calculateValue(\n propertyTypeList,\n brickProperties,\n typeList\n )}\n >\n <Collapse ghost defaultActiveKey=\"0\" className={styles.panelContainer}>\n {groupByType(typeList)?.map(([category, list], index) => {\n return (\n <Collapse.Panel\n header={upperFirst(category)}\n key={index}\n forceRender={true}\n >\n {list.map((item) => getFormItem(item))}\n </Collapse.Panel>\n );\n })}\n\n <Collapse.Panel\n className={styles.otherPanel}\n forceRender={true}\n header={upperFirst(OTHER_FORM_ITEM_FIELD)}\n key={OTHER_FORM_ITEM_FIELD}\n >\n <CodeEditorFormItem\n name={OTHER_FORM_ITEM_FIELD}\n label={\n brickInfo?.type === \"template\"\n ? \"other params\"\n : \"other properties\"\n }\n mode=\"brick_next_yaml\"\n maxLines={Infinity}\n />\n </Collapse.Panel>\n </Collapse>\n </Form>\n );\n}\n\nexport const VisualPropertyForm = React.forwardRef(LegacyVisualPropertyForm);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.CodeEditorFormItem = CodeEditorFormItem;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _lodash = require("lodash");
|
|
17
|
+
|
|
18
|
+
var _antd = require("antd");
|
|
19
|
+
|
|
20
|
+
var _codeEditorComponents = require("@next-libs/code-editor-components");
|
|
21
|
+
|
|
22
|
+
function CodeEditorFormItem(props) {
|
|
23
|
+
const {
|
|
24
|
+
name,
|
|
25
|
+
label,
|
|
26
|
+
...rest
|
|
27
|
+
} = props;
|
|
28
|
+
const [hasError, setHasError] = (0, _react.useState)(false);
|
|
29
|
+
|
|
30
|
+
const handleValidate = err => {
|
|
31
|
+
const error = (0, _lodash.some)(err, ["type", "error"]);
|
|
32
|
+
setHasError(error);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const validatorFn = async () => {
|
|
36
|
+
if (!hasError) {
|
|
37
|
+
return Promise.resolve();
|
|
38
|
+
} else {
|
|
39
|
+
return Promise.reject("请填写正确的 yaml 语法");
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
44
|
+
key: props.name,
|
|
45
|
+
name: props.name,
|
|
46
|
+
label: props.label,
|
|
47
|
+
rules: [{
|
|
48
|
+
required: props.required,
|
|
49
|
+
message: `请输入${props.name}`
|
|
50
|
+
}, {
|
|
51
|
+
validator: validatorFn
|
|
52
|
+
}]
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement(_codeEditorComponents.CodeEditorItem, (0, _extends2.default)({
|
|
54
|
+
tabSize: 2,
|
|
55
|
+
minLines: 5,
|
|
56
|
+
maxLines: 12,
|
|
57
|
+
printMargin: false,
|
|
58
|
+
showLineNumbers: false,
|
|
59
|
+
theme: "tomorrow",
|
|
60
|
+
enableLiveAutocompletion: true,
|
|
61
|
+
onValidate: handleValidate
|
|
62
|
+
}, rest)));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=CodeEditorFormItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeEditorFormItem.js","names":["CodeEditorFormItem","props","name","label","rest","hasError","setHasError","useState","handleValidate","err","error","some","validatorFn","Promise","resolve","reject","required","message","validator"],"sources":["../../../../../src/visual-property-form/components/CodeEditor/CodeEditorFormItem.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { some } from \"lodash\";\nimport { Form } from \"antd\";\nimport { FormItemWrapperProps } from \"@next-libs/forms\";\nimport {\n CodeEditorProps,\n CodeEditorItem,\n Error,\n} from \"@next-libs/code-editor-components\";\n\ninterface CodeEditorItemProps extends CodeEditorProps, FormItemWrapperProps {}\n\nexport function CodeEditorFormItem(\n props: CodeEditorItemProps\n): React.ReactElement {\n const { name, label, ...rest } = props;\n const [hasError, setHasError] = useState(false);\n\n const handleValidate = (err: Error[\"err\"]): void => {\n const error = some(err, [\"type\", \"error\"]);\n setHasError(error);\n };\n\n const validatorFn = async () => {\n if (!hasError) {\n return Promise.resolve();\n } else {\n return Promise.reject(\"请填写正确的 yaml 语法\");\n }\n };\n\n return (\n <Form.Item\n key={props.name}\n name={props.name}\n label={props.label}\n rules={[\n { required: props.required, message: `请输入${props.name}` },\n { validator: validatorFn },\n ]}\n >\n <CodeEditorItem\n tabSize={2}\n minLines={5}\n maxLines={12}\n printMargin={false}\n showLineNumbers={false}\n theme=\"tomorrow\"\n enableLiveAutocompletion={true}\n onValidate={handleValidate}\n {...rest}\n ></CodeEditorItem>\n </Form.Item>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AAQO,SAASA,kBAAT,CACLC,KADK,EAEe;EACpB,MAAM;IAAEC,IAAF;IAAQC,KAAR;IAAe,GAAGC;EAAlB,IAA2BH,KAAjC;EACA,MAAM,CAACI,QAAD,EAAWC,WAAX,IAA0B,IAAAC,eAAA,EAAS,KAAT,CAAhC;;EAEA,MAAMC,cAAc,GAAIC,GAAD,IAA6B;IAClD,MAAMC,KAAK,GAAG,IAAAC,YAAA,EAAKF,GAAL,EAAU,CAAC,MAAD,EAAS,OAAT,CAAV,CAAd;IACAH,WAAW,CAACI,KAAD,CAAX;EACD,CAHD;;EAKA,MAAME,WAAW,GAAG,YAAY;IAC9B,IAAI,CAACP,QAAL,EAAe;MACb,OAAOQ,OAAO,CAACC,OAAR,EAAP;IACD,CAFD,MAEO;MACL,OAAOD,OAAO,CAACE,MAAR,CAAe,gBAAf,CAAP;IACD;EACF,CAND;;EAQA,oBACE,6BAAC,UAAD,CAAM,IAAN;IACE,GAAG,EAAEd,KAAK,CAACC,IADb;IAEE,IAAI,EAAED,KAAK,CAACC,IAFd;IAGE,KAAK,EAAED,KAAK,CAACE,KAHf;IAIE,KAAK,EAAE,CACL;MAAEa,QAAQ,EAAEf,KAAK,CAACe,QAAlB;MAA4BC,OAAO,EAAG,MAAKhB,KAAK,CAACC,IAAK;IAAtD,CADK,EAEL;MAAEgB,SAAS,EAAEN;IAAb,CAFK;EAJT,gBASE,6BAAC,oCAAD;IACE,OAAO,EAAE,CADX;IAEE,QAAQ,EAAE,CAFZ;IAGE,QAAQ,EAAE,EAHZ;IAIE,WAAW,EAAE,KAJf;IAKE,eAAe,EAAE,KALnB;IAME,KAAK,EAAC,UANR;IAOE,wBAAwB,EAAE,IAP5B;IAQE,UAAU,EAAEJ;EARd,GASMJ,IATN,EATF,CADF;AAuBD"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.ColorEditorItem = ColorEditorItem;
|
|
11
|
+
exports.ColorPick = void 0;
|
|
12
|
+
exports.LegacyColorPick = LegacyColorPick;
|
|
13
|
+
exports.getPresetColors = getPresetColors;
|
|
14
|
+
|
|
15
|
+
var _reactColor = require("react-color");
|
|
16
|
+
|
|
17
|
+
var _basicComponents = require("@next-libs/basic-components");
|
|
18
|
+
|
|
19
|
+
var _antd = require("antd");
|
|
20
|
+
|
|
21
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
22
|
+
|
|
23
|
+
var _ColorEditorModule = _interopRequireDefault(require("./ColorEditor.module.css"));
|
|
24
|
+
|
|
25
|
+
function getPresetColors(colorMap) {
|
|
26
|
+
const colorList = [];
|
|
27
|
+
|
|
28
|
+
for (const [, group] of Object.entries(colorMap)) {
|
|
29
|
+
["color", "background", "borderColor"].forEach(name => {
|
|
30
|
+
var _name;
|
|
31
|
+
|
|
32
|
+
const result = (_name = group[name]) === null || _name === void 0 ? void 0 : _name.match(/^var\((.+)\)/);
|
|
33
|
+
|
|
34
|
+
if (result) {
|
|
35
|
+
var _window$getComputedSt;
|
|
36
|
+
|
|
37
|
+
const colorHex = (_window$getComputedSt = window.getComputedStyle(document.documentElement).getPropertyValue(result[1])) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.trim();
|
|
38
|
+
colorHex && colorList.push(colorHex);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return colorList;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function LegacyColorPick(props, ref) {
|
|
47
|
+
const [value, setValue] = (0, _react.useState)(props.value);
|
|
48
|
+
const [visible, setVisible] = (0, _react.useState)(false);
|
|
49
|
+
(0, _react.useEffect)(() => {
|
|
50
|
+
setValue(props.value);
|
|
51
|
+
}, [props.value]);
|
|
52
|
+
|
|
53
|
+
const handleChangeComplete = color => {
|
|
54
|
+
setValue(color.hex);
|
|
55
|
+
props.onChange(color.hex);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const handleClick = () => {
|
|
59
|
+
setVisible(true);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
63
|
+
className: _ColorEditorModule.default.colorContainer
|
|
64
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
65
|
+
className: _ColorEditorModule.default.colorCube,
|
|
66
|
+
onClick: handleClick
|
|
67
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
68
|
+
className: _ColorEditorModule.default.colorContent,
|
|
69
|
+
style: {
|
|
70
|
+
backgroundColor: value
|
|
71
|
+
}
|
|
72
|
+
})), visible && /*#__PURE__*/_react.default.createElement("div", {
|
|
73
|
+
className: _ColorEditorModule.default.popover
|
|
74
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
75
|
+
className: _ColorEditorModule.default.cover,
|
|
76
|
+
onClick: () => setVisible(false)
|
|
77
|
+
}), /*#__PURE__*/_react.default.createElement(_reactColor.SketchPicker, {
|
|
78
|
+
width: "230px",
|
|
79
|
+
ref: ref,
|
|
80
|
+
color: value,
|
|
81
|
+
onChangeComplete: handleChangeComplete,
|
|
82
|
+
presetColors: getPresetColors(_basicComponents.COLORS_MAP)
|
|
83
|
+
})));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const ColorPick = /*#__PURE__*/(0, _react.forwardRef)(LegacyColorPick);
|
|
87
|
+
exports.ColorPick = ColorPick;
|
|
88
|
+
|
|
89
|
+
function ColorEditorItem(props) {
|
|
90
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
91
|
+
key: props.name,
|
|
92
|
+
name: props.name,
|
|
93
|
+
label: props.label,
|
|
94
|
+
rules: [{
|
|
95
|
+
required: props.required,
|
|
96
|
+
message: `请输入${props.name}`
|
|
97
|
+
}]
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(ColorPick, null));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=ColorEditorItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorEditorItem.js","names":["getPresetColors","colorMap","colorList","group","Object","entries","forEach","name","result","match","colorHex","window","getComputedStyle","document","documentElement","getPropertyValue","trim","push","LegacyColorPick","props","ref","value","setValue","useState","visible","setVisible","useEffect","handleChangeComplete","color","hex","onChange","handleClick","styles","colorContainer","colorCube","colorContent","backgroundColor","popover","cover","COLORS_MAP","ColorPick","forwardRef","ColorEditorItem","label","required","message"],"sources":["../../../../../src/visual-property-form/components/ColorEditor/ColorEditorItem.tsx"],"sourcesContent":["import { ColorResult, SketchPicker } from \"react-color\";\nimport { COLORS_MAP, Colors } from \"@next-libs/basic-components\";\nimport { Form } from \"antd\";\nimport React, { useEffect, useState, forwardRef } from \"react\";\nimport styles from \"./ColorEditor.module.css\";\n\nexport interface ColorEditorItemProps {\n name?: string;\n label?: string | React.ReactElement;\n required?: boolean;\n value?: any;\n onChange?: (value: string) => void;\n}\n\nexport function getPresetColors(\n colorMap: Record<\n Colors,\n {\n color: string;\n background: string;\n borderColor: string;\n }\n >\n): string[] {\n const colorList: string[] = [];\n for (const [, group] of Object.entries(colorMap)) {\n [\"color\", \"background\", \"borderColor\"].forEach((name) => {\n const result = (group as Record<string, any>)[name]?.match(\n /^var\\((.+)\\)/\n );\n if (result) {\n const colorHex = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(result[1])\n ?.trim();\n colorHex && colorList.push(colorHex);\n }\n });\n }\n\n return colorList;\n}\n\nexport function LegacyColorPick(\n props: ColorEditorItemProps,\n ref: React.Ref<any>\n) {\n const [value, setValue] = useState(props.value);\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n setValue(props.value);\n }, [props.value]);\n\n const handleChangeComplete = (color: ColorResult) => {\n setValue(color.hex);\n props.onChange(color.hex);\n };\n\n const handleClick = () => {\n setVisible(true);\n };\n\n return (\n <div className={styles.colorContainer}>\n <div className={styles.colorCube} onClick={handleClick}>\n <div\n className={styles.colorContent}\n style={{ backgroundColor: value }}\n />\n </div>\n {visible && (\n <div className={styles.popover}>\n <div className={styles.cover} onClick={() => setVisible(false)} />\n <SketchPicker\n width=\"230px\"\n ref={ref}\n color={value}\n onChangeComplete={handleChangeComplete}\n presetColors={getPresetColors(COLORS_MAP)}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport const ColorPick = forwardRef(LegacyColorPick);\n\nexport function ColorEditorItem(props: ColorEditorItemProps) {\n return (\n <Form.Item\n key={props.name}\n name={props.name}\n label={props.label}\n rules={[{ required: props.required, message: `请输入${props.name}` }]}\n >\n <ColorPick />\n </Form.Item>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAUO,SAASA,eAAT,CACLC,QADK,EASK;EACV,MAAMC,SAAmB,GAAG,EAA5B;;EACA,KAAK,MAAM,GAAGC,KAAH,CAAX,IAAwBC,MAAM,CAACC,OAAP,CAAeJ,QAAf,CAAxB,EAAkD;IAChD,CAAC,OAAD,EAAU,YAAV,EAAwB,aAAxB,EAAuCK,OAAvC,CAAgDC,IAAD,IAAU;MAAA;;MACvD,MAAMC,MAAM,YAAIL,KAAD,CAA+BI,IAA/B,CAAH,0CAAG,MAAsCE,KAAtC,CACb,cADa,CAAf;;MAGA,IAAID,MAAJ,EAAY;QAAA;;QACV,MAAME,QAAQ,4BAAGC,MAAM,CACpBC,gBADc,CACGC,QAAQ,CAACC,eADZ,EAEdC,gBAFc,CAEGP,MAAM,CAAC,CAAD,CAFT,CAAH,0DAAG,sBAGbQ,IAHa,EAAjB;QAIAN,QAAQ,IAAIR,SAAS,CAACe,IAAV,CAAeP,QAAf,CAAZ;MACD;IACF,CAXD;EAYD;;EAED,OAAOR,SAAP;AACD;;AAEM,SAASgB,eAAT,CACLC,KADK,EAELC,GAFK,EAGL;EACA,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoB,IAAAC,eAAA,EAASJ,KAAK,CAACE,KAAf,CAA1B;EACA,MAAM,CAACG,OAAD,EAAUC,UAAV,IAAwB,IAAAF,eAAA,EAAS,KAAT,CAA9B;EAEA,IAAAG,gBAAA,EAAU,MAAM;IACdJ,QAAQ,CAACH,KAAK,CAACE,KAAP,CAAR;EACD,CAFD,EAEG,CAACF,KAAK,CAACE,KAAP,CAFH;;EAIA,MAAMM,oBAAoB,GAAIC,KAAD,IAAwB;IACnDN,QAAQ,CAACM,KAAK,CAACC,GAAP,CAAR;IACAV,KAAK,CAACW,QAAN,CAAeF,KAAK,CAACC,GAArB;EACD,CAHD;;EAKA,MAAME,WAAW,GAAG,MAAM;IACxBN,UAAU,CAAC,IAAD,CAAV;EACD,CAFD;;EAIA,oBACE;IAAK,SAAS,EAAEO,0BAAA,CAAOC;EAAvB,gBACE;IAAK,SAAS,EAAED,0BAAA,CAAOE,SAAvB;IAAkC,OAAO,EAAEH;EAA3C,gBACE;IACE,SAAS,EAAEC,0BAAA,CAAOG,YADpB;IAEE,KAAK,EAAE;MAAEC,eAAe,EAAEf;IAAnB;EAFT,EADF,CADF,EAOGG,OAAO,iBACN;IAAK,SAAS,EAAEQ,0BAAA,CAAOK;EAAvB,gBACE;IAAK,SAAS,EAAEL,0BAAA,CAAOM,KAAvB;IAA8B,OAAO,EAAE,MAAMb,UAAU,CAAC,KAAD;EAAvD,EADF,eAEE,6BAAC,wBAAD;IACE,KAAK,EAAC,OADR;IAEE,GAAG,EAAEL,GAFP;IAGE,KAAK,EAAEC,KAHT;IAIE,gBAAgB,EAAEM,oBAJpB;IAKE,YAAY,EAAE3B,eAAe,CAACuC,2BAAD;EAL/B,EAFF,CARJ,CADF;AAsBD;;AAEM,MAAMC,SAAS,gBAAG,IAAAC,iBAAA,EAAWvB,eAAX,CAAlB;;;AAEA,SAASwB,eAAT,CAAyBvB,KAAzB,EAAsD;EAC3D,oBACE,6BAAC,UAAD,CAAM,IAAN;IACE,GAAG,EAAEA,KAAK,CAACZ,IADb;IAEE,IAAI,EAAEY,KAAK,CAACZ,IAFd;IAGE,KAAK,EAAEY,KAAK,CAACwB,KAHf;IAIE,KAAK,EAAE,CAAC;MAAEC,QAAQ,EAAEzB,KAAK,CAACyB,QAAlB;MAA4BC,OAAO,EAAG,MAAK1B,KAAK,CAACZ,IAAK;IAAtD,CAAD;EAJT,gBAME,6BAAC,SAAD,OANF,CADF;AAUD"}
|