@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +13 -0
  3. package/dist/cjs/index.js +45 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/interfaces/brick-visualization.js +22 -0
  6. package/dist/cjs/interfaces/brick-visualization.js.map +1 -0
  7. package/dist/cjs/interfaces/index.js +19 -0
  8. package/dist/cjs/interfaces/index.js.map +1 -0
  9. package/dist/cjs/visual-property-form/VisualPropertyForm.js +282 -0
  10. package/dist/cjs/visual-property-form/VisualPropertyForm.js.map +1 -0
  11. package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +64 -0
  12. package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -0
  13. package/dist/cjs/visual-property-form/components/ColorEditor/ColorEditorItem.js +100 -0
  14. package/dist/cjs/visual-property-form/components/ColorEditor/ColorEditorItem.js.map +1 -0
  15. package/dist/cjs/visual-property-form/components/IconSelect/IconSelectFormItem.js +35 -0
  16. package/dist/cjs/visual-property-form/components/IconSelect/IconSelectFormItem.js.map +1 -0
  17. package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js +83 -0
  18. package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -0
  19. package/dist/cjs/visual-property-form/constant.js +54 -0
  20. package/dist/cjs/visual-property-form/constant.js.map +1 -0
  21. package/dist/cjs/visual-property-form/processor.js +204 -0
  22. package/dist/cjs/visual-property-form/processor.js.map +1 -0
  23. package/dist/esm/index.js +4 -0
  24. package/dist/esm/index.js.map +1 -0
  25. package/dist/esm/interfaces/brick-visualization.js +14 -0
  26. package/dist/esm/interfaces/brick-visualization.js.map +1 -0
  27. package/dist/esm/interfaces/index.js +2 -0
  28. package/dist/esm/interfaces/index.js.map +1 -0
  29. package/dist/esm/visual-property-form/VisualPropertyForm.js +253 -0
  30. package/dist/esm/visual-property-form/VisualPropertyForm.js.map +1 -0
  31. package/dist/esm/visual-property-form/VisualPropertyForm.module.css +33 -0
  32. package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +58 -0
  33. package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -0
  34. package/dist/esm/visual-property-form/components/ColorEditor/ColorEditor.module.css +32 -0
  35. package/dist/esm/visual-property-form/components/ColorEditor/ColorEditorItem.js +81 -0
  36. package/dist/esm/visual-property-form/components/ColorEditor/ColorEditorItem.js.map +1 -0
  37. package/dist/esm/visual-property-form/components/IconSelect/IconSelectFormItem.js +23 -0
  38. package/dist/esm/visual-property-form/components/IconSelect/IconSelectFormItem.js.map +1 -0
  39. package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js +77 -0
  40. package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -0
  41. package/dist/esm/visual-property-form/constant.js +43 -0
  42. package/dist/esm/visual-property-form/constant.js.map +1 -0
  43. package/dist/esm/visual-property-form/images/empty-dark.svg +54 -0
  44. package/dist/esm/visual-property-form/processor.js +183 -0
  45. package/dist/esm/visual-property-form/processor.js.map +1 -0
  46. package/dist/types/index.d.ts +3 -0
  47. package/dist/types/interfaces/brick-visualization.d.ts +32 -0
  48. package/dist/types/interfaces/index.d.ts +1 -0
  49. package/dist/types/visual-property-form/VisualPropertyForm.d.ts +22 -0
  50. package/dist/types/visual-property-form/VisualPropertyForm.spec.d.ts +1 -0
  51. package/dist/types/visual-property-form/components/CodeEditor/CodeEditorFormItem.d.ts +7 -0
  52. package/dist/types/visual-property-form/components/CodeEditor/CodeEditorFormItem.spec.d.ts +1 -0
  53. package/dist/types/visual-property-form/components/ColorEditor/ColorEditorItem.d.ts +17 -0
  54. package/dist/types/visual-property-form/components/ColorEditor/ColorEditorItem.spec.d.ts +1 -0
  55. package/dist/types/visual-property-form/components/IconSelect/IconSelectFormItem.d.ts +3 -0
  56. package/dist/types/visual-property-form/components/IconSelect/IconSelectFormItem.spec.d.ts +1 -0
  57. package/dist/types/visual-property-form/components/MenuEditor/MenuEditorItem.d.ts +11 -0
  58. package/dist/types/visual-property-form/components/MenuEditor/MenuEditorItem.spec.d.ts +1 -0
  59. package/dist/types/visual-property-form/constant.d.ts +31 -0
  60. package/dist/types/visual-property-form/processor.d.ts +27 -0
  61. 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"}