@luck-design-biz/luckda 1.0.0-5-alpha → 1.0.0-6-alpha

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 (89) hide show
  1. package/es/components/ComplexItem/index.js +65 -49
  2. package/es/components/LdGridForm/index.js +2 -1
  3. package/es/helper/ldBuilder.js +8 -3
  4. package/es/locales/zh-CN.js +35 -0
  5. package/es/lowcode/engine/meta/fieldcomplex.props.default.json +1 -0
  6. package/es/lowcode/engine/meta/fieldcomplex.props.json +7 -0
  7. package/es/lowcode/engine/meta/form.props.json +3 -3
  8. package/es/lowcode/engine/meta/js-editor/auto-complete.json +18 -0
  9. package/es/lowcode/engine/meta/page.props.json +6 -0
  10. package/es/lowcode/engine/provider/ContextProvider/index.js +28 -5
  11. package/es/lowcode/engine/provider/ContextProvider/router.js +1 -1
  12. package/es/lowcode/engine/{tools → provider/ContextProvider}/usePageDataStore.js +9 -7
  13. package/es/lowcode/engine/{tools → provider/ContextProvider}/useTodo.js +4 -6
  14. package/es/lowcode/engine/provider/RemoteSourceProvider.js +1 -2
  15. package/es/lowcode/engine/tools/helper.js +7 -2
  16. package/es/lowcode/engine/tools/initDS.js +263 -0
  17. package/es/lowcode/engine/tools/useCombinedRefs.js +3 -2
  18. package/es/lowcode/painter/components/TipIcon.js +16 -0
  19. package/es/lowcode/painter/components/VarEditor.js +456 -0
  20. package/es/lowcode/painter/components/code-editor/JSEditor.js +3 -1
  21. package/es/lowcode/painter/components/code-editor/VisionEditor.js +81 -0
  22. package/es/lowcode/painter/components/field-setting/SettingUI.js +17 -3
  23. package/es/lowcode/painter/components/field-setting/index.js +1 -1
  24. package/es/lowcode/painter/index.js +1 -0
  25. package/es/lowcode/painter/panel-section/ComplexPop.js +241 -0
  26. package/es/lowcode/painter/panel-section/DataSetSelector.js +8 -0
  27. package/es/lowcode/painter/panel-section/FieldsSetting.js +9 -1
  28. package/es/lowcode/painter/panel-section/ImpExp.js +1 -27
  29. package/es/lowcode/painter/panel-section/PageVars.js +296 -0
  30. package/es/lowcode/painter/services/complexPop.js +21 -0
  31. package/es/lowcode/painter/style/page-vars.less +25 -0
  32. package/es/lowcode/preview/index.js +1 -0
  33. package/es/lowcode/view/Canvas.js +11 -34
  34. package/es/lowcode/view/Loading.js +5 -7
  35. package/es/lowcode/view/Page.js +37 -15
  36. package/es/lowcode/view/index.js +1 -0
  37. package/es/lowcode/view/lc-components/FieldComplex/meta.json +7 -0
  38. package/es/lowcode/view/lc-components/Form/index.js +11 -4
  39. package/es/lowcode/view/lc-components/Form/meta.json +3 -3
  40. package/es/lowcode/view/lc-components/Page/meta.json +6 -0
  41. package/es/lowcode/view/lc-components/Table/index.js +17 -3
  42. package/es/lowcode/view/style/loading.less +14 -0
  43. package/es/utils/form.js +3 -3
  44. package/es/utils/grid.js +1 -1
  45. package/lib/components/ComplexItem/index.js +62 -47
  46. package/lib/components/LdGridForm/index.js +2 -1
  47. package/lib/helper/ldBuilder.js +8 -3
  48. package/lib/locales/zh-CN.js +35 -0
  49. package/lib/lowcode/engine/meta/fieldcomplex.props.default.json +1 -0
  50. package/lib/lowcode/engine/meta/fieldcomplex.props.json +7 -0
  51. package/lib/lowcode/engine/meta/form.props.json +3 -3
  52. package/lib/lowcode/engine/meta/js-editor/auto-complete.json +18 -0
  53. package/lib/lowcode/engine/meta/page.props.json +6 -0
  54. package/lib/lowcode/engine/provider/ContextProvider/index.js +29 -12
  55. package/lib/lowcode/engine/provider/ContextProvider/router.js +1 -1
  56. package/lib/lowcode/engine/{tools → provider/ContextProvider}/usePageDataStore.js +9 -7
  57. package/lib/lowcode/engine/{tools → provider/ContextProvider}/useTodo.js +4 -6
  58. package/lib/lowcode/engine/provider/RemoteSourceProvider.js +2 -3
  59. package/lib/lowcode/engine/tools/helper.js +7 -2
  60. package/lib/lowcode/engine/tools/initDS.js +270 -0
  61. package/lib/lowcode/engine/tools/useCombinedRefs.js +2 -1
  62. package/lib/lowcode/painter/components/TipIcon.js +23 -0
  63. package/lib/lowcode/painter/components/VarEditor.js +463 -0
  64. package/lib/lowcode/painter/components/code-editor/JSEditor.js +3 -1
  65. package/lib/lowcode/painter/components/code-editor/VisionEditor.js +88 -0
  66. package/lib/lowcode/painter/components/field-setting/SettingUI.js +17 -3
  67. package/lib/lowcode/painter/components/field-setting/index.js +1 -1
  68. package/lib/lowcode/painter/index.js +1 -0
  69. package/lib/lowcode/painter/panel-section/ComplexPop.js +249 -0
  70. package/lib/lowcode/painter/panel-section/DataSetSelector.js +8 -0
  71. package/lib/lowcode/painter/panel-section/FieldsSetting.js +9 -1
  72. package/lib/lowcode/painter/panel-section/ImpExp.js +0 -26
  73. package/lib/lowcode/painter/panel-section/PageVars.js +304 -0
  74. package/lib/lowcode/painter/services/complexPop.js +28 -0
  75. package/lib/lowcode/painter/style/page-vars.less +25 -0
  76. package/lib/lowcode/preview/index.js +1 -0
  77. package/lib/lowcode/view/Canvas.js +12 -35
  78. package/lib/lowcode/view/Loading.js +5 -7
  79. package/lib/lowcode/view/Page.js +35 -13
  80. package/lib/lowcode/view/index.js +1 -0
  81. package/lib/lowcode/view/lc-components/FieldComplex/meta.json +7 -0
  82. package/lib/lowcode/view/lc-components/Form/index.js +11 -4
  83. package/lib/lowcode/view/lc-components/Form/meta.json +3 -3
  84. package/lib/lowcode/view/lc-components/Page/meta.json +6 -0
  85. package/lib/lowcode/view/lc-components/Table/index.js +18 -4
  86. package/lib/lowcode/view/style/loading.less +14 -0
  87. package/lib/utils/form.js +2 -2
  88. package/lib/utils/grid.js +1 -1
  89. package/package.json +1 -1
@@ -5,9 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = require("react");
8
+ var _ahooks = require("ahooks");
8
9
  var useCombinedRefs = function useCombinedRefs(forwardedRef) {
9
10
  var innerRef = (0, _react.useRef)(null);
10
- (0, _react.useEffect)(function () {
11
+ (0, _ahooks.useCreation)(function () {
11
12
  if (!forwardedRef) return;
12
13
  if (typeof forwardedRef === 'function') {
13
14
  forwardedRef(innerRef.current);
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _antd = require("luck-design/antd");
12
+ var _excluded = ["title", "type"];
13
+ var TipIcon = function TipIcon(_ref) {
14
+ var title = _ref.title,
15
+ type = _ref.type,
16
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
17
+ return /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
18
+ title: title
19
+ }, /*#__PURE__*/_react.default.createElement(_antd.Icon, (0, _extends2.default)({
20
+ type: type
21
+ }, rest)));
22
+ };
23
+ var _default = exports.default = TipIcon;
@@ -0,0 +1,463 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _ahooks = require("ahooks");
12
+ var _antd = require("luck-design/antd");
13
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
14
+ var _lodash = require("lodash");
15
+ var _utils = require("@luck-design-biz/base/utils");
16
+ var _VisionEditor = _interopRequireDefault(require("./code-editor/VisionEditor"));
17
+ var _JSEditor = _interopRequireDefault(require("./code-editor/JSEditor"));
18
+ var _TipIcon = _interopRequireDefault(require("./TipIcon"));
19
+ var _I18N_PREFIX_ = 'luckda.lowcode.painter.pageVars';
20
+ var StyledForm = (0, _styledComponents.default)(_antd.Form).withConfig({
21
+ displayName: "StyledForm",
22
+ componentId: "luckda-6530__sc-iq6k7e-0"
23
+ })(["font-size:12px;.ant-form-item{font-size:12px;margin-bottom:0;}label{font-size:12px;}"]);
24
+ var StyledSegmented = (0, _styledComponents.default)(_antd.Segmented).withConfig({
25
+ displayName: "StyledSegmented",
26
+ componentId: "luckda-6530__sc-iq6k7e-1"
27
+ })(["width:100%;"]);
28
+ var EditorWrapper = _styledComponents.default.div.withConfig({
29
+ displayName: "EditorWrapper",
30
+ componentId: "luckda-6530__sc-iq6k7e-2"
31
+ })(["width:100%;height:80px;border:1px solid #d9d9d9;border-radius:4px;margin:8px 0;"]);
32
+ var LabelLine = _styledComponents.default.div.withConfig({
33
+ displayName: "LabelLine",
34
+ componentId: "luckda-6530__sc-iq6k7e-3"
35
+ })(["height:28px;background:rgba(31,56,88,0.04);border-top:1px solid rgba(31,56,88,0.1);border-bottom:1px solid rgba(31,56,88,0.1);margin:8px 0;line-height:26px;padding:0 12px;", ""], function (props) {
36
+ return props.$flex ? {
37
+ display: 'flex',
38
+ 'align-items': 'center',
39
+ 'justify-content': 'space-between'
40
+ } : null;
41
+ });
42
+ var _EDITOR_OPTIONS = {
43
+ minimap: {
44
+ enabled: false
45
+ },
46
+ lineNumbers: 'off'
47
+ };
48
+ var _TASK_TYPE_OPTIONS = [{
49
+ label: (0, _utils.formatMessage)({
50
+ id: "".concat(_I18N_PREFIX_, ".taskType.serial"),
51
+ label: '串行'
52
+ }),
53
+ value: 'serial'
54
+ }, {
55
+ label: (0, _utils.formatMessage)({
56
+ id: "".concat(_I18N_PREFIX_, ".taskType.parallel"),
57
+ label: '并行'
58
+ }),
59
+ value: 'parallel'
60
+ }];
61
+ var _METHOD_OPTIONS = [{
62
+ label: (0, _utils.formatMessage)({
63
+ id: "".concat(_I18N_PREFIX_, ".method.jsonp"),
64
+ label: 'JSONP'
65
+ }),
66
+ value: 'jsonp'
67
+ }, {
68
+ label: (0, _utils.formatMessage)({
69
+ id: "".concat(_I18N_PREFIX_, ".method.get"),
70
+ label: 'GET'
71
+ }),
72
+ value: 'get'
73
+ }, {
74
+ label: (0, _utils.formatMessage)({
75
+ id: "".concat(_I18N_PREFIX_, ".taskType.post"),
76
+ label: 'POST'
77
+ }),
78
+ value: 'post'
79
+ }, {
80
+ label: (0, _utils.formatMessage)({
81
+ id: "".concat(_I18N_PREFIX_, ".taskType.put"),
82
+ label: 'PUT'
83
+ }),
84
+ value: 'put'
85
+ }, {
86
+ label: (0, _utils.formatMessage)({
87
+ id: "".concat(_I18N_PREFIX_, ".taskType.delete"),
88
+ label: 'DELETE'
89
+ }),
90
+ value: 'delete'
91
+ }];
92
+ var _DEFAULT_PROCESS_ = {
93
+ willFetch: {
94
+ code: 'function willFetch(vars, config){\n\t\n}',
95
+ title: (0, _utils.formatMessage)({
96
+ id: "".concat(_I18N_PREFIX_, ".willFetch"),
97
+ label: "\u8BF7\u6C42\u53D1\u9001\u524D\u5904\u7406\u51FD\u6570(willFetch)"
98
+ })
99
+ },
100
+ didFetch: {
101
+ code: 'function didFetch(content){\n\t\n}',
102
+ title: (0, _utils.formatMessage)({
103
+ id: "".concat(_I18N_PREFIX_, ".didFetch"),
104
+ label: "\u8BF7\u6C42\u53D1\u9001\u524D\u5904\u7406\u51FD\u6570(didFetch)"
105
+ })
106
+ },
107
+ onError: {
108
+ code: 'function onError(error){\n\t\n}',
109
+ title: (0, _utils.formatMessage)({
110
+ id: "".concat(_I18N_PREFIX_, ".onError"),
111
+ label: "\u8BF7\u6C42\u53D1\u9001\u524D\u5904\u7406\u51FD\u6570(onError)"
112
+ })
113
+ }
114
+ };
115
+ var getBasicFormItem = function getBasicFormItem(form, item) {
116
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
117
+ label: (0, _utils.formatMessage)({
118
+ id: "".concat(_I18N_PREFIX_, ".name"),
119
+ label: '名称'
120
+ })
121
+ }, form.getFieldDecorator('name', {
122
+ initialValue: item.name,
123
+ rules: [{
124
+ required: true,
125
+ message: (0, _utils.formatMessage)({
126
+ id: "".concat(_I18N_PREFIX_, ".messag.name"),
127
+ label: '请输入变量名'
128
+ })
129
+ }]
130
+ })( /*#__PURE__*/_react.default.createElement(_antd.Input, {
131
+ size: "small"
132
+ }))), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
133
+ label: (0, _utils.formatMessage)({
134
+ id: "".concat(_I18N_PREFIX_, ".desc"),
135
+ label: '描述'
136
+ })
137
+ }, form.getFieldDecorator('desc', {
138
+ initialValue: item.desc
139
+ })( /*#__PURE__*/_react.default.createElement(_antd.Input, {
140
+ size: "small",
141
+ placeholder: (0, _utils.formatMessage)({
142
+ id: "".concat(_I18N_PREFIX_, ".placeholder"),
143
+ label: '请输入'
144
+ })
145
+ }))));
146
+ };
147
+ var VarForm = _antd.Form.create({
148
+ name: 'var_form',
149
+ onValuesChange: function onValuesChange(_ref, values) {
150
+ var dispatch = _ref.dispatch,
151
+ item = _ref.item;
152
+ dispatch({
153
+ type: 'edit',
154
+ payload: {
155
+ id: item.id,
156
+ data: values
157
+ }
158
+ });
159
+ }
160
+ })(function (_ref2) {
161
+ var form = _ref2.form,
162
+ item = _ref2.item,
163
+ dispatch = _ref2.dispatch;
164
+ var _useDebounceFn = (0, _ahooks.useDebounceFn)(function (code) {
165
+ dispatch({
166
+ type: 'edit',
167
+ payload: {
168
+ id: item.id,
169
+ data: {
170
+ data: code
171
+ }
172
+ }
173
+ });
174
+ }, {
175
+ wait: 500
176
+ }),
177
+ handleEditorValueChange = _useDebounceFn.run;
178
+ return /*#__PURE__*/_react.default.createElement(StyledForm, {
179
+ layout: "horizontal",
180
+ labelCol: {
181
+ span: 6
182
+ },
183
+ wrapperCol: {
184
+ span: 17
185
+ },
186
+ hideRequiredMark: true
187
+ }, getBasicFormItem(form, item), /*#__PURE__*/_react.default.createElement(LabelLine, null, (0, _utils.formatMessage)({
188
+ id: "".concat(_I18N_PREFIX_, ".data"),
189
+ label: '数据'
190
+ }), /*#__PURE__*/_react.default.createElement(_TipIcon.default, {
191
+ type: "question-circle",
192
+ style: {
193
+ marginLeft: 4
194
+ },
195
+ title: (0, _utils.formatMessage)({
196
+ id: "".concat(_I18N_PREFIX_, ".tip.data"),
197
+ label: "\u8F93\u5165\u6846\u5185\u652F\u6301\u8F93\u5165JS\u7684\u57FA\u672C\u7C7B\u578B\u53D8\u91CF\uFF0C\u5982\u5B57\u7B26\u4E32:\"string\"\uFF0C\u6570\u5B57:123\uFF0C\u5E03\u5C14\u503C:true/false\uFF0C\u6570\u7EC4:[1,2,3]\uFF0C\u5BF9\u8C61:{\"name\": \"test\"}\uFF0C\u7A7A\u503C:null"
198
+ })
199
+ })), /*#__PURE__*/_react.default.createElement("div", {
200
+ style: {
201
+ width: '100%',
202
+ height: 300
203
+ }
204
+ }, /*#__PURE__*/_react.default.createElement(_VisionEditor.default, {
205
+ onChange: handleEditorValueChange
206
+ }, item.data)));
207
+ });
208
+ var ApiForm = _antd.Form.create({
209
+ name: 'api_form',
210
+ onValuesChange: function onValuesChange(_ref3, values, all) {
211
+ var dispatch = _ref3.dispatch,
212
+ item = _ref3.item;
213
+ var auto = (0, _lodash.get)(values, 'data.auto');
214
+ if (auto) {
215
+ (0, _lodash.set)(all, 'data.taskType', 'parallel');
216
+ } else if (auto === false) {
217
+ (0, _lodash.unset)(all, 'data.taskType');
218
+ }
219
+ dispatch({
220
+ type: 'edit',
221
+ payload: {
222
+ id: item.id,
223
+ data: all
224
+ }
225
+ });
226
+ }
227
+ })(function (_ref4) {
228
+ var _item$data, _item$data2, _item$data3, _item$data4, _item$data5, _item$data6, _item$data7, _item$data8, _item$data9, _item$data10, _item$data11;
229
+ var form = _ref4.form,
230
+ item = _ref4.item,
231
+ dispatch = _ref4.dispatch;
232
+ var _useSet = (0, _ahooks.useSet)((0, _lodash.intersection)(['willFetch', 'didFetch', 'onError'], (0, _lodash.keys)(item))),
233
+ _useSet2 = (0, _slicedToArray2.default)(_useSet, 2),
234
+ processSet = _useSet2[0],
235
+ _useSet2$ = _useSet2[1],
236
+ add = _useSet2$.add,
237
+ remove = _useSet2$.remove;
238
+ var _useDebounceFn2 = (0, _ahooks.useDebounceFn)(function (field, code) {
239
+ var obj = {};
240
+ (0, _lodash.set)(obj, field, code);
241
+ form.setFieldsValue(obj);
242
+ }, {
243
+ wait: 500
244
+ }),
245
+ handleEditorValueChange = _useDebounceFn2.run;
246
+ var handleAddProcessFun = (0, _ahooks.useMemoizedFn)(function (_ref5) {
247
+ var key = _ref5.key;
248
+ if (!processSet.has(key)) {
249
+ add(key);
250
+ dispatch({
251
+ type: 'edit',
252
+ payload: {
253
+ id: item.id,
254
+ data: (0, _defineProperty2.default)({}, key, _DEFAULT_PROCESS_[key].code)
255
+ }
256
+ });
257
+ }
258
+ });
259
+ var handleDelProcessFun = (0, _ahooks.useMemoizedFn)(function (_ref6) {
260
+ var key = _ref6.key;
261
+ remove(key);
262
+ dispatch({
263
+ type: 'edit',
264
+ payload: {
265
+ id: item.id,
266
+ data: (0, _defineProperty2.default)({}, key, void 0)
267
+ }
268
+ });
269
+ });
270
+ var renderProcess = (0, _ahooks.useMemoizedFn)(function (processKey) {
271
+ return processSet.has(processKey) ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(LabelLine, {
272
+ $flex: true
273
+ }, _DEFAULT_PROCESS_[processKey].title, /*#__PURE__*/_react.default.createElement(_TipIcon.default, {
274
+ type: "delete",
275
+ onClick: function onClick() {
276
+ return handleDelProcessFun(processKey);
277
+ }
278
+ })), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
279
+ wrapperCol: {
280
+ span: 24
281
+ }
282
+ }, form.getFieldDecorator(processKey, {
283
+ initialValue: item[processKey] || _DEFAULT_PROCESS_[processKey].code
284
+ })( /*#__PURE__*/_react.default.createElement(EditorWrapper, {
285
+ style: {
286
+ margin: '4px 18px',
287
+ width: 'calc(100% - 36px)'
288
+ }
289
+ }, /*#__PURE__*/_react.default.createElement(_JSEditor.default, {
290
+ options: _EDITOR_OPTIONS,
291
+ onChange: function onChange(code) {
292
+ return handleEditorValueChange(processKey, code);
293
+ }
294
+ }, item[processKey] || _DEFAULT_PROCESS_[processKey].code))))) : null;
295
+ });
296
+ var menu = (0, _ahooks.useCreation)(function () {
297
+ return /*#__PURE__*/_react.default.createElement(_antd.Menu, {
298
+ onClick: handleAddProcessFun
299
+ }, /*#__PURE__*/_react.default.createElement(_antd.Menu.Item, {
300
+ key: "willFetch"
301
+ }, _DEFAULT_PROCESS_.willFetch.title), /*#__PURE__*/_react.default.createElement(_antd.Menu.Item, {
302
+ key: "didFetch"
303
+ }, _DEFAULT_PROCESS_.didFetch.title), /*#__PURE__*/_react.default.createElement(_antd.Menu.Item, {
304
+ key: "onError"
305
+ }, _DEFAULT_PROCESS_.onError.title));
306
+ }, []);
307
+ return /*#__PURE__*/_react.default.createElement(StyledForm, {
308
+ layout: "horizontal",
309
+ labelCol: {
310
+ span: 6
311
+ },
312
+ wrapperCol: {
313
+ span: 17
314
+ },
315
+ hideRequiredMark: true
316
+ }, getBasicFormItem(form, item), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
317
+ label: (0, _utils.formatMessage)({
318
+ id: "".concat(_I18N_PREFIX_, ".auto"),
319
+ label: '自动加载'
320
+ })
321
+ }, form.getFieldDecorator('data.auto', {
322
+ valuePropName: 'checked',
323
+ initialValue: Boolean((_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.auto)
324
+ })( /*#__PURE__*/_react.default.createElement(_antd.Switch, {
325
+ size: "small"
326
+ }))), form.getFieldValue('data.auto') ? /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
327
+ label: (0, _utils.formatMessage)({
328
+ id: "".concat(_I18N_PREFIX_, ".taskType"),
329
+ label: '加载方式'
330
+ })
331
+ }, form.getFieldDecorator('data.taskType', {
332
+ initialValue: ((_item$data2 = item.data) === null || _item$data2 === void 0 ? void 0 : _item$data2.taskType) || 'parallel'
333
+ })( /*#__PURE__*/_react.default.createElement(StyledSegmented, {
334
+ size: "small",
335
+ options: _TASK_TYPE_OPTIONS
336
+ }))) : null, /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
337
+ label: (0, _utils.formatMessage)({
338
+ id: "".concat(_I18N_PREFIX_, ".url"),
339
+ label: '请求地址'
340
+ })
341
+ }, form.getFieldDecorator('data.url', {
342
+ initialValue: ((_item$data3 = item.data) === null || _item$data3 === void 0 ? void 0 : _item$data3.url) || ''
343
+ })( /*#__PURE__*/_react.default.createElement(EditorWrapper, null, /*#__PURE__*/_react.default.createElement(_VisionEditor.default, {
344
+ options: _EDITOR_OPTIONS,
345
+ onChange: function onChange(code) {
346
+ return handleEditorValueChange('data.url', code);
347
+ }
348
+ }, ((_item$data4 = item.data) === null || _item$data4 === void 0 ? void 0 : _item$data4.url) || '')))), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
349
+ label: (0, _utils.formatMessage)({
350
+ id: "".concat(_I18N_PREFIX_, ".method"),
351
+ label: '请求方式'
352
+ })
353
+ }, form.getFieldDecorator('data.method', {
354
+ initialValue: ((_item$data5 = item.data) === null || _item$data5 === void 0 ? void 0 : _item$data5.method) || 'get'
355
+ })( /*#__PURE__*/_react.default.createElement(StyledSegmented, {
356
+ size: "small",
357
+ options: _METHOD_OPTIONS
358
+ }))), /*#__PURE__*/_react.default.createElement(LabelLine, null, (0, _utils.formatMessage)({
359
+ id: "".concat(_I18N_PREFIX_, ".urlParams"),
360
+ label: '请求参数'
361
+ }), /*#__PURE__*/_react.default.createElement(_TipIcon.default, {
362
+ type: "question-circle",
363
+ style: {
364
+ marginLeft: 4
365
+ },
366
+ title: (0, _utils.formatMessage)({
367
+ id: "".concat(_I18N_PREFIX_, ".tip.urlParams"),
368
+ label: 'URL 请求参数,格式为 {key1:value1,key2:value2} ,等价于 ?key1=value1&key2=value2'
369
+ })
370
+ })), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
371
+ wrapperCol: {
372
+ span: 24
373
+ }
374
+ }, form.getFieldDecorator('data.params', {
375
+ initialValue: ((_item$data6 = item.data) === null || _item$data6 === void 0 ? void 0 : _item$data6.params) || ''
376
+ })( /*#__PURE__*/_react.default.createElement(EditorWrapper, {
377
+ style: {
378
+ margin: '4px 18px',
379
+ width: 'calc(100% - 36px)'
380
+ }
381
+ }, /*#__PURE__*/_react.default.createElement(_VisionEditor.default, {
382
+ options: _EDITOR_OPTIONS,
383
+ onChange: function onChange(code) {
384
+ return handleEditorValueChange('data.params', code);
385
+ }
386
+ }, ((_item$data7 = item.data) === null || _item$data7 === void 0 ? void 0 : _item$data7.params) || '')))), /*#__PURE__*/_react.default.createElement(LabelLine, null, (0, _utils.formatMessage)({
387
+ id: "".concat(_I18N_PREFIX_, ".body"),
388
+ label: '请求体'
389
+ }), /*#__PURE__*/_react.default.createElement(_TipIcon.default, {
390
+ type: "question-circle",
391
+ style: {
392
+ marginLeft: 4
393
+ },
394
+ title: (0, _utils.formatMessage)({
395
+ id: "".concat(_I18N_PREFIX_, ".tip.body"),
396
+ label: '接口请求体(body),格式为 {key1:value1,key2:value2}'
397
+ })
398
+ })), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
399
+ wrapperCol: {
400
+ span: 24
401
+ }
402
+ }, form.getFieldDecorator('data.body', {
403
+ initialValue: ((_item$data8 = item.data) === null || _item$data8 === void 0 ? void 0 : _item$data8.body) || ''
404
+ })( /*#__PURE__*/_react.default.createElement(EditorWrapper, {
405
+ style: {
406
+ margin: '4px 18px',
407
+ width: 'calc(100% - 36px)'
408
+ }
409
+ }, /*#__PURE__*/_react.default.createElement(_VisionEditor.default, {
410
+ options: _EDITOR_OPTIONS,
411
+ onChange: function onChange(code) {
412
+ return handleEditorValueChange('data.body', code);
413
+ }
414
+ }, ((_item$data9 = item.data) === null || _item$data9 === void 0 ? void 0 : _item$data9.body) || '')))), /*#__PURE__*/_react.default.createElement(LabelLine, {
415
+ $flex: true
416
+ }, (0, _utils.formatMessage)({
417
+ id: "".concat(_I18N_PREFIX_, ".process"),
418
+ label: '数据处理'
419
+ }), /*#__PURE__*/_react.default.createElement(_antd.Dropdown, {
420
+ overlay: menu,
421
+ trigger: ['click'],
422
+ getPopupContainer: function getPopupContainer() {
423
+ return document.getElementById('lc-design-workspace');
424
+ }
425
+ }, /*#__PURE__*/_react.default.createElement(_TipIcon.default, {
426
+ type: "plus"
427
+ }))), /*#__PURE__*/_react.default.createElement("div", {
428
+ style: {
429
+ padding: '0 12px'
430
+ }
431
+ }, renderProcess('willFetch'), renderProcess('didFetch'), renderProcess('onError')), /*#__PURE__*/_react.default.createElement(LabelLine, null, (0, _utils.formatMessage)({
432
+ id: "".concat(_I18N_PREFIX_, ".defaultValue"),
433
+ label: '默认数据'
434
+ })), /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
435
+ wrapperCol: {
436
+ span: 24
437
+ }
438
+ }, form.getFieldDecorator('data.defaultValue', {
439
+ initialValue: (_item$data10 = item.data) === null || _item$data10 === void 0 ? void 0 : _item$data10.defaultValue
440
+ })( /*#__PURE__*/_react.default.createElement(EditorWrapper, {
441
+ style: {
442
+ margin: '4px 18px',
443
+ width: 'calc(100% - 36px)'
444
+ }
445
+ }, /*#__PURE__*/_react.default.createElement(_VisionEditor.default, {
446
+ options: _EDITOR_OPTIONS,
447
+ onChange: function onChange(code) {
448
+ return handleEditorValueChange('data.defaultValue', code);
449
+ }
450
+ }, ((_item$data11 = item.data) === null || _item$data11 === void 0 ? void 0 : _item$data11.defaultValue) || '')))));
451
+ });
452
+ var VarEditor = function VarEditor(_ref7) {
453
+ var item = _ref7.item,
454
+ dispatch = _ref7.dispatch;
455
+ return item.type === 'var' ? /*#__PURE__*/_react.default.createElement(VarForm, {
456
+ item: item,
457
+ dispatch: dispatch
458
+ }) : /*#__PURE__*/_react.default.createElement(ApiForm, {
459
+ item: item,
460
+ dispatch: dispatch
461
+ });
462
+ };
463
+ var _default = exports.default = VarEditor;
@@ -18,6 +18,7 @@ var monaco = _interopRequireWildcard3(require("monaco-editor"));
18
18
  var _lodash = require("lodash");
19
19
  var _standalone = _interopRequireDefault(require("prettier/standalone"));
20
20
  var _parserBabel = _interopRequireDefault(require("prettier/parser-babel"));
21
+ var _useCombinedRefs = _interopRequireDefault(require("../../../engine/tools/useCombinedRefs"));
21
22
  var _BaseEditor = _interopRequireDefault(require("./BaseEditor"));
22
23
  var _excluded = ["children", "keywords"];
23
24
  function capitalizeFirstLetter(string) {
@@ -136,10 +137,11 @@ var prettierFormetter = function prettierFormetter(unformattedCode) {
136
137
  *
137
138
  * @returns {ReactElement} 返回一个 React 元素,其中包含了一个具有自动完成功能的 JavaScript 编辑器实例。
138
139
  */
139
- var JSEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
140
+ var JSEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, outRef) {
140
141
  var children = _ref2.children,
141
142
  keywords = _ref2.keywords,
142
143
  rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
144
+ var ref = (0, _useCombinedRefs.default)(outRef);
143
145
  (0, _react.useEffect)(function () {
144
146
  var originalGetValue = ref.current.editor.getValue.bind(ref.current.editor);
145
147
  ref.current.editor.getValue = function () {
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var monaco = _interopRequireWildcard(require("monaco-editor"));
13
+ var _BaseEditor = _interopRequireDefault(require("./BaseEditor"));
14
+ var _excluded = ["children"];
15
+ // 定义一个简单的JavaScript语言
16
+ monaco.languages.register({
17
+ id: 'vision'
18
+ });
19
+
20
+ // 定义语言的配置
21
+ monaco.languages.setLanguageConfiguration('vision', {
22
+ brackets: [['{', '}'], ['[', ']'], ['(', ')']],
23
+ autoClosingPairs: [{
24
+ open: '{',
25
+ close: '}'
26
+ }, {
27
+ open: '[',
28
+ close: ']'
29
+ }, {
30
+ open: '(',
31
+ close: ')'
32
+ }, {
33
+ open: '"',
34
+ close: '"',
35
+ notIn: ['string']
36
+ }, {
37
+ open: "'",
38
+ close: "'",
39
+ notIn: ['string']
40
+ }]
41
+ });
42
+
43
+ // 定义语言的词法规则
44
+ monaco.languages.setMonarchTokensProvider('vision', {
45
+ tokenizer: {
46
+ root: [[/\b(true|false|null)\b/, 'constant'], [/[{}()\[\]]/, '@brackets'], [/[0-9]+/, 'number'], [/["'](.*?)["']/, 'string'],
47
+ // 新增模板字符串的词法规则
48
+ [/\$\{/, 'delimiter.curly'],
49
+ // 添加对模板表达式起始的支持
50
+ [/\`/, {
51
+ token: 'string.quote',
52
+ bracket: '@open',
53
+ next: '@template_string'
54
+ }] // 处理模板字符串
55
+ ],
56
+ template_string: [[/\$\{/, {
57
+ token: 'delimiter.curly',
58
+ next: '@expression'
59
+ }],
60
+ // 模板表达式开始
61
+ [/\`/, {
62
+ token: 'string.quote',
63
+ bracket: '@close',
64
+ next: '@pop'
65
+ }],
66
+ // 模板字符串结束
67
+ [/./, 'string'] // 模板字符串内的内容
68
+ ],
69
+ expression: [[/\}/, {
70
+ token: 'delimiter.curly',
71
+ next: '@pop'
72
+ }],
73
+ // 模板表达式结束
74
+ [/[0-9]+/, 'number'],
75
+ // 在模板表达式内的数字
76
+ [/[a-zA-Z_]\w*/, 'identifier'] // 在模板表达式内的标识符
77
+ ]
78
+ }
79
+ });
80
+ var VisionEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
81
+ var children = _ref.children,
82
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
83
+ return /*#__PURE__*/_react.default.createElement(_BaseEditor.default, (0, _extends2.default)({
84
+ ref: ref,
85
+ language: "vision"
86
+ }, rest), children);
87
+ });
88
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(VisionEditor);
@@ -21,6 +21,7 @@ var _Collapse = _interopRequireDefault(require("../../components/Collapse"));
21
21
  var _PanelItem = _interopRequireDefault(require("../../components/PanelItem"));
22
22
  var _ListEditor = require("../../components/ListEditor");
23
23
  var _WidthHeight = _interopRequireDefault(require("../../panel-section/WidthHeight"));
24
+ var _JSEditor = _interopRequireDefault(require("../../panel-section/JSEditor"));
24
25
  var _FieldAttrsModal = _interopRequireDefault(require("./FieldAttrsModal"));
25
26
  var _FieldRulesModal = _interopRequireDefault(require("./FieldRulesModal"));
26
27
  var _apiUrl = require("../../../constants/api-url");
@@ -78,6 +79,7 @@ var StyledRadio = (0, _styledComponents.default)(_antd.Radio.Group).withConfig({
78
79
  displayName: "StyledRadio",
79
80
  componentId: "luckda-6530__sc-1n41f3z-2"
80
81
  })(["span.ant-radio + *{padding-left:4px;padding-right:4px;}"]);
82
+ var _DEFAULT_RENDER_CODE = "function render(value, data, rowIndex, params) { \n return value;\n}";
81
83
  var SettingUI = function SettingUI(_ref) {
82
84
  var loading = _ref.loading,
83
85
  data = _ref.data,
@@ -357,7 +359,7 @@ var SettingUI = function SettingUI(_ref) {
357
359
  id: "".concat(_I18N_PREFIX_, ".required"),
358
360
  label: '是否必填'
359
361
  })
360
- }, renderCodeIcon(fieldRequired, _constants.FIELD_SCOPES.FIELD_REQUIRED)), ['table', 'tableForm'].includes && /*#__PURE__*/_react.default.createElement(_PanelItem.default, {
362
+ }, renderCodeIcon(fieldRequired, _constants.FIELD_SCOPES.FIELD_REQUIRED)), ['table', 'tableForm'].includes(component) && /*#__PURE__*/_react.default.createElement(_PanelItem.default, {
361
363
  label: (0, _utils.formatMessage)({
362
364
  id: "".concat(_I18N_PREFIX_, ".table.display"),
363
365
  label: '表格中显示'
@@ -377,7 +379,19 @@ var SettingUI = function SettingUI(_ref) {
377
379
  id: "".concat(_I18N_PREFIX_, ".readonly"),
378
380
  label: '是否只读'
379
381
  })
380
- }, renderCodeIcon(fieldReadonly, _constants.FIELD_SCOPES.FIELD_READONLY)), !isBatch ? /*#__PURE__*/_react.default.createElement(_Collapse.default, {
382
+ }, renderCodeIcon(fieldReadonly, _constants.FIELD_SCOPES.FIELD_READONLY)), !isBatch ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, ['table', 'tableForm'].includes(component) ? /*#__PURE__*/_react.default.createElement(_Collapse.default, {
383
+ label: (0, _utils.formatMessage)({
384
+ id: "".concat(_I18N_PREFIX_, ".render"),
385
+ label: '内容定制渲染'
386
+ })
387
+ }, /*#__PURE__*/_react.default.createElement(_JSEditor.default, {
388
+ defaultValue: fieldData.render,
389
+ onChange: function onChange(val) {
390
+ return run('render', val);
391
+ },
392
+ mustConfirm: true,
393
+ defaultCode: _DEFAULT_RENDER_CODE
394
+ })) : null, /*#__PURE__*/_react.default.createElement(_Collapse.default, {
381
395
  label: (0, _utils.formatMessage)({
382
396
  id: "".concat(_I18N_PREFIX_, ".defaultValue"),
383
397
  label: '默认值'
@@ -392,7 +406,7 @@ var SettingUI = function SettingUI(_ref) {
392
406
  }), "\n \u3010").concat(fieldDefaultValue.expression, "\u3011") : (0, _utils.formatMessage)({
393
407
  id: 'luckda.lowcode.painter.setting',
394
408
  label: '设置'
395
- }))) : null, !isBatch ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Collapse.default, {
409
+ }))), /*#__PURE__*/_react.default.createElement(_Collapse.default, {
396
410
  label: (0, _utils.formatMessage)({
397
411
  id: "".concat(_I18N_PREFIX_, ".rules.front"),
398
412
  label: '前端校验规则'
@@ -234,7 +234,7 @@ var FieldSetting = function FieldSetting(_ref) {
234
234
  _context.next = 34;
235
235
  break;
236
236
  case 5:
237
- if (!(key === 'align' || key === 'headerAlign' || key === 'pinned' || key === 'tip')) {
237
+ if (!(key === 'align' || key === 'headerAlign' || key === 'pinned' || key === 'tip' || key === 'render')) {
238
238
  _context.next = 9;
239
239
  break;
240
240
  }
@@ -20,6 +20,7 @@ var Painter = function Painter(_ref) {
20
20
  var className = _ref.className,
21
21
  code = _ref.code;
22
22
  return /*#__PURE__*/_react.default.createElement(_EventBusProvider.default, {
23
+ key: code,
23
24
  runtime: _index.RUNTIME.DESIGN
24
25
  }, /*#__PURE__*/_react.default.createElement(_ContextProvider.default, {
25
26
  code: code