@gingkoo/pandora-metabase 1.0.125 → 1.0.127

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 (65) hide show
  1. package/lib/cjs/components/dialog/expression/index.js +15 -5
  2. package/lib/cjs/components/dialog/expression/index.less +31 -16
  3. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +14 -5
  4. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +236 -62
  5. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +3 -2
  6. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +19 -11
  7. package/lib/cjs/components/dialog/formula-list/index.d.ts +1 -0
  8. package/lib/cjs/components/dialog/formula-list/index.js +658 -174
  9. package/lib/cjs/components/dialog/formula-list/index.less +1438 -145
  10. package/lib/cjs/components/dialog/formula-list/utils.js +50 -19
  11. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +1 -0
  12. package/lib/cjs/components/dialog/select-column-multiple/index.js +42 -22
  13. package/lib/cjs/components/dialog/select-summarize/index.js +10 -2
  14. package/lib/cjs/components/dialog/select-table/index.d.ts +2 -1
  15. package/lib/cjs/components/dialog/select-table/index.js +197 -52
  16. package/lib/cjs/components/dialog/select-table/index.less +45 -2
  17. package/lib/cjs/components/metabase/index.less +156 -39
  18. package/lib/cjs/components/modules/custom-column.js +7 -3
  19. package/lib/cjs/components/modules/filter.js +6 -3
  20. package/lib/cjs/components/modules/join-data.js +62 -14
  21. package/lib/cjs/components/modules/permission-table.js +8 -4
  22. package/lib/cjs/components/modules/sort.js +2 -1
  23. package/lib/cjs/components/modules/summarize/group-by.js +20 -6
  24. package/lib/cjs/components/modules/summarize/select-index.js +9 -5
  25. package/lib/cjs/components/modules/table-data.js +21 -3
  26. package/lib/cjs/hooks/use-state.js +143 -17
  27. package/lib/cjs/index.js +7 -1
  28. package/lib/cjs/store/types.d.ts +14 -7
  29. package/lib/cjs/types.d.ts +8 -0
  30. package/lib/cjs/utils/transformSql.js +44 -21
  31. package/lib/cjs/utils.d.ts +2 -2
  32. package/lib/cjs/utils.js +381 -63
  33. package/lib/es/components/dialog/expression/index.js +15 -5
  34. package/lib/es/components/dialog/expression/index.less +31 -16
  35. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +14 -5
  36. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +238 -64
  37. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +3 -2
  38. package/lib/es/components/dialog/formula-list/LogicGroup.js +19 -11
  39. package/lib/es/components/dialog/formula-list/index.d.ts +1 -0
  40. package/lib/es/components/dialog/formula-list/index.js +660 -176
  41. package/lib/es/components/dialog/formula-list/index.less +1438 -145
  42. package/lib/es/components/dialog/formula-list/utils.js +50 -19
  43. package/lib/es/components/dialog/select-column-multiple/index.d.ts +1 -0
  44. package/lib/es/components/dialog/select-column-multiple/index.js +42 -22
  45. package/lib/es/components/dialog/select-summarize/index.js +10 -2
  46. package/lib/es/components/dialog/select-table/index.d.ts +2 -1
  47. package/lib/es/components/dialog/select-table/index.js +197 -52
  48. package/lib/es/components/dialog/select-table/index.less +45 -2
  49. package/lib/es/components/metabase/index.less +156 -39
  50. package/lib/es/components/modules/custom-column.js +7 -3
  51. package/lib/es/components/modules/filter.js +6 -3
  52. package/lib/es/components/modules/join-data.js +62 -14
  53. package/lib/es/components/modules/permission-table.js +8 -4
  54. package/lib/es/components/modules/sort.js +2 -1
  55. package/lib/es/components/modules/summarize/group-by.js +21 -7
  56. package/lib/es/components/modules/summarize/select-index.js +10 -6
  57. package/lib/es/components/modules/table-data.js +21 -3
  58. package/lib/es/hooks/use-state.js +143 -17
  59. package/lib/es/index.js +7 -1
  60. package/lib/es/store/types.d.ts +14 -7
  61. package/lib/es/types.d.ts +8 -0
  62. package/lib/es/utils/transformSql.js +45 -22
  63. package/lib/es/utils.d.ts +2 -2
  64. package/lib/es/utils.js +382 -64
  65. package/package.json +1 -1
@@ -11,8 +11,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
11
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
13
13
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
14
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
15
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
15
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
17
  var _react = _interopRequireWildcard(require("react"));
18
18
  require("./index.less");
@@ -40,12 +40,102 @@ var _storage = _interopRequireDefault(require("../../../utils/storage"));
40
40
  var _helperDom = require("../../../utils/helper-dom");
41
41
  var _CaseWhenGroup = _interopRequireDefault(require("./CaseWhenGroup"));
42
42
  var _LogicGroup = _interopRequireDefault(require("./LogicGroup"));
43
+ var _helper = require("../../../store/helper");
43
44
  var _excluded = ["notExistsToolbar", "toolbar"],
44
45
  _excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"];
45
46
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
46
47
  var CASE_FIXED_OPERATORS = ['case', 'when', 'then', 'else', 'end'];
47
48
  var LOGIC_FIXED_OPERATORS = ['(', ')'];
48
49
  var LOGIC_REQUIRED_OPERATORS = ['(', ')'];
50
+ var TOKEN_DELETE_ICON_SIZE = 10;
51
+ var ADD_TRIGGER_STYLE = {
52
+ display: 'inline-flex',
53
+ alignItems: 'center',
54
+ justifyContent: 'center',
55
+ minHeight: 28,
56
+ minWidth: 36,
57
+ padding: '4px 7px',
58
+ border: '1px solid transparent',
59
+ borderRadius: 5,
60
+ boxSizing: 'border-box',
61
+ color: '#fff',
62
+ backgroundColor: 'rgb(147, 161, 171)',
63
+ fontSize: 13,
64
+ lineHeight: '18px',
65
+ cursor: 'pointer'
66
+ };
67
+ var ZOOM_FOOTER_BUTTON_STYLE = {
68
+ minWidth: 72,
69
+ height: 30,
70
+ borderRadius: 6
71
+ };
72
+ var ZOOM_FOOTER_CANCEL_STYLE = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, ZOOM_FOOTER_BUTTON_STYLE), {}, {
73
+ borderColor: 'rgba(83, 92, 112, 0.18)',
74
+ background: '#fff',
75
+ color: 'rgba(83, 92, 112, 0.82)'
76
+ });
77
+ var ZOOM_FOOTER_CONFIRM_STYLE = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, ZOOM_FOOTER_BUTTON_STYLE), {}, {
78
+ borderColor: 'rgb(80, 158, 227)',
79
+ background: 'rgb(80, 158, 227)',
80
+ color: '#fff'
81
+ });
82
+ var FORMULA_LIST_ZOOM_BUTTON_STYLE = {
83
+ display: 'inline-flex',
84
+ alignItems: 'center',
85
+ justifyContent: 'center',
86
+ width: 22,
87
+ minWidth: 22,
88
+ height: 22,
89
+ margin: 0,
90
+ padding: 0,
91
+ border: 'none',
92
+ borderRadius: 999,
93
+ background: 'transparent',
94
+ color: 'rgba(83, 92, 112, 0.58)',
95
+ cursor: 'pointer',
96
+ lineHeight: 0
97
+ };
98
+ var TOKEN_BASE_STYLE = {
99
+ display: 'inline-flex',
100
+ alignItems: 'center',
101
+ minHeight: 28,
102
+ padding: '4px 7px',
103
+ border: '1px solid transparent',
104
+ borderRadius: 5,
105
+ boxSizing: 'border-box',
106
+ fontSize: 13,
107
+ lineHeight: '18px',
108
+ cursor: 'pointer'
109
+ };
110
+ var TOKEN_PALETTE = {
111
+ blue: 'rgb(80, 158, 227)',
112
+ purple: 'rgb(113, 114, 173)',
113
+ gray: 'rgb(147, 161, 171)',
114
+ green: 'rgb(136, 191, 77)'
115
+ };
116
+ var getTokenStyleByClassName = function getTokenStyleByClassName(className, extraStyle) {
117
+ var names = " ".concat(className || '', " ");
118
+ var color = TOKEN_PALETTE.blue;
119
+ if (names.includes(' purple-name ')) {
120
+ color = TOKEN_PALETTE.purple;
121
+ } else if (names.includes(' gray-name ')) {
122
+ color = TOKEN_PALETTE.gray;
123
+ } else if (names.includes(' green-name ')) {
124
+ color = TOKEN_PALETTE.green;
125
+ }
126
+ var selectedStyle = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, TOKEN_BASE_STYLE), {}, {
127
+ color: '#fff',
128
+ backgroundColor: color
129
+ });
130
+ var notSelectedStyle = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, TOKEN_BASE_STYLE), {}, {
131
+ borderColor: color.replace('rgb', 'rgba').replace(')', ', 0.25)'),
132
+ color: color,
133
+ backgroundColor: 'transparent'
134
+ });
135
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, names.includes(' notSelected ') ? notSelectedStyle : selectedStyle), names.includes(' operator-trigger ') ? {
136
+ padding: '4px 7px'
137
+ } : {}), extraStyle);
138
+ };
49
139
  var FormulaList = (0, _react.forwardRef)(function (props, ref) {
50
140
  var _storage$_metabaseCop;
51
141
  var _useState = (0, _react.useState)((_storage["default"] === null || _storage["default"] === void 0 || (_storage$_metabaseCop = _storage["default"]._metabaseCopyItems) === null || _storage$_metabaseCop === void 0 ? void 0 : _storage$_metabaseCop.length) || 0),
@@ -85,6 +175,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
85
175
  embedded = _props$embedded === void 0 ? false : _props$embedded,
86
176
  _props$enableCopy = props.enableCopy,
87
177
  enableCopy = _props$enableCopy === void 0 ? true : _props$enableCopy,
178
+ _props$enableZoom = props.enableZoom,
179
+ enableZoom = _props$enableZoom === void 0 ? true : _props$enableZoom,
88
180
  parentPopupChannel = props.parentPopupChannel;
89
181
  var parentPopupLockCountRef = (0, _react.useRef)(0);
90
182
  var parentPopupUnlockTimerRef = (0, _react.useRef)(null);
@@ -225,21 +317,6 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
225
317
  _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
226
318
  filterVal = _useState0[0],
227
319
  setFilterVal = _useState0[1];
228
- var setCaseList = function setCaseList(data) {
229
- var quotes = data.map(function (v) {
230
- if (v !== null && v !== void 0 && v.quotes) return v.quotes;
231
- if (v !== null && v !== void 0 && v.fieldName) return v.fieldName;
232
- return v === null || v === void 0 ? void 0 : v.val;
233
- }).join(' ');
234
- caseList = data;
235
- caseListRef.current = data;
236
- onChange === null || onChange === void 0 || onChange(data, quotes);
237
- };
238
- var updateAtomAt = function updateAtomAt(index, nextItem) {
239
- var nextList = caseList.slice();
240
- nextList[index] = nextItem;
241
- setCaseList(nextList);
242
- };
243
320
  function getSelectDisplayText(item) {
244
321
  var displayField = item.displayField || 'value';
245
322
  var getOptionText = function getOptionText(value) {
@@ -257,36 +334,42 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
257
334
  }
258
335
  return getOptionText(String(item.val || ''));
259
336
  }
337
+ function getFieldDisplayName(field) {
338
+ if (!field) return '';
339
+ if (field.tableId === _helper.SummarizeAlias) {
340
+ return field.fieldAlias || field.fieldName || '';
341
+ }
342
+ return field.fieldName || field.fieldAlias || '';
343
+ }
260
344
  function getItemDisplayText(v) {
261
345
  if (!v) return '';
262
346
  if (v.quotes) return v.quotes;
347
+ if (v.type === _types.AtomsTypeEnum.FIELD) return getFieldDisplayName(v);
263
348
  if (v.fieldName) return v.fieldName;
264
349
  if (v.type === _types.AtomsTypeEnum.FORMULA) {
265
350
  return v.name ? (0, _utils.getQuotes)(v, v.args, formulaList) : '';
266
351
  }
267
352
  if (v.type === _types.AtomsTypeEnum.CASE_WHEN) {
268
- var caseValueText = (v.caseValue || []).map(function (item) {
353
+ var caseAtomsText = (v.caseAtoms || []).map(function (item) {
269
354
  return getItemDisplayText(item);
270
355
  }).join(' ');
271
- var branchText = (v.branches || []).map(function (branch) {
272
- var whenText = (branch.when || []).map(function (item) {
273
- return getItemDisplayText(item);
274
- }).join(' ');
275
- var thenText = (branch.then || []).map(function (item) {
276
- return getItemDisplayText(item);
277
- }).join(' ');
356
+ var whenClausesText = (v.whenClauses || []).map(function (branch) {
357
+ var whenText = (branch.whenAtoms || []).map(getItemDisplayText).join(' ');
358
+ var thenText = (branch.thenAtoms || []).map(getItemDisplayText).join(' ');
278
359
  return "when ".concat(whenText, " then ").concat(thenText).trim();
279
360
  }).join(' ');
280
- var elseText = (v.elseValue || []).length ? " else ".concat((v.elseValue || []).map(function (item) {
281
- return getItemDisplayText(item);
282
- }).join(' ')) : '';
283
- return "case ".concat(caseValueText, " ").concat(branchText).concat(elseText, " end").replace(/\s+/g, ' ').trim();
361
+ var elseAtomsText = (v.elseAtoms || []).length ? " else ".concat((v.elseAtoms || []).map(getItemDisplayText).join(' ')) : '';
362
+ return "case ".concat(caseAtomsText, " ").concat(whenClausesText).concat(elseAtomsText, " end").replace(/\s+/g, ' ').trim();
284
363
  }
285
364
  if (v.type === _types.AtomsTypeEnum.AND_OR) {
286
- var listText = (v.list || []).map(function (item) {
287
- return getItemDisplayText(item);
288
- }).join(' ');
289
- return "".concat(v.operator || 'and', " ( ").concat(listText, " )").replace(/\s+/g, ' ').trim();
365
+ var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
366
+ if (hasBinarySides) {
367
+ var leftText = (v.leftAtoms || []).map(getItemDisplayText).join(' ');
368
+ var rightText = (v.rightAtoms || []).map(getItemDisplayText).join(' ');
369
+ return "( ".concat(leftText, " ").concat(v.operator || 'and', " ").concat(rightText, " )").replace(/\s+/g, ' ').trim();
370
+ }
371
+ var atomsText = (v.atoms || []).map(getItemDisplayText).join(' ');
372
+ return "".concat(v.operator || 'and', " ( ").concat(atomsText, " )").replace(/\s+/g, ' ').trim();
290
373
  }
291
374
  if (v.type === _types.AtomsTypeEnum.SELECT) {
292
375
  return getSelectDisplayText(v);
@@ -296,6 +379,73 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
296
379
  }
297
380
  return v.val || '';
298
381
  }
382
+ var getItemQuotes = function getItemQuotes(item) {
383
+ return getItemDisplayText((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item), {}, {
384
+ quotes: ''
385
+ }));
386
+ };
387
+ var _withSyncedQuotes = function withSyncedQuotes(item) {
388
+ if (item.type === _types.AtomsTypeEnum.CASE_WHEN) {
389
+ var _item$elseAtoms;
390
+ var nextItem = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item), {}, {
391
+ caseAtoms: (item.caseAtoms || []).map(function (currentItem) {
392
+ return _withSyncedQuotes(currentItem);
393
+ }),
394
+ whenClauses: (item.whenClauses || []).map(function (clause) {
395
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, clause), {}, {
396
+ whenAtoms: (clause.whenAtoms || []).map(function (currentItem) {
397
+ return _withSyncedQuotes(currentItem);
398
+ }),
399
+ thenAtoms: (clause.thenAtoms || []).map(function (currentItem) {
400
+ return _withSyncedQuotes(currentItem);
401
+ })
402
+ });
403
+ }),
404
+ elseAtoms: (_item$elseAtoms = item.elseAtoms) === null || _item$elseAtoms === void 0 ? void 0 : _item$elseAtoms.map(function (currentItem) {
405
+ return _withSyncedQuotes(currentItem);
406
+ })
407
+ });
408
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, nextItem), {}, {
409
+ quotes: getItemQuotes(nextItem)
410
+ });
411
+ }
412
+ if (item.type === _types.AtomsTypeEnum.AND_OR) {
413
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
414
+ var _nextItem = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, item), hasBinarySides ? {
415
+ atoms: undefined,
416
+ leftAtoms: (item.leftAtoms || []).map(function (currentItem) {
417
+ return _withSyncedQuotes(currentItem);
418
+ }),
419
+ rightAtoms: (item.rightAtoms || []).map(function (currentItem) {
420
+ return _withSyncedQuotes(currentItem);
421
+ })
422
+ } : {
423
+ atoms: (item.atoms || []).map(function (currentItem) {
424
+ return _withSyncedQuotes(currentItem);
425
+ })
426
+ });
427
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _nextItem), {}, {
428
+ quotes: getItemQuotes(_nextItem)
429
+ });
430
+ }
431
+ return item;
432
+ };
433
+ var setCaseList = function setCaseList(data) {
434
+ var nextData = data.map(function (item) {
435
+ return _withSyncedQuotes(item);
436
+ });
437
+ var quotes = nextData.map(function (item) {
438
+ return getItemDisplayText(item);
439
+ }).join(' ');
440
+ caseList = nextData;
441
+ caseListRef.current = nextData;
442
+ onChange === null || onChange === void 0 || onChange(nextData, quotes);
443
+ };
444
+ var updateAtomAt = function updateAtomAt(index, nextItem) {
445
+ var nextList = caseList.slice();
446
+ nextList[index] = nextItem;
447
+ setCaseList(nextList);
448
+ };
299
449
  var getPreviewStr = function getPreviewStr() {
300
450
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
301
451
  return data.map(function (v) {
@@ -317,9 +467,256 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
317
467
  children: children
318
468
  });
319
469
  };
470
+ var openCaseWhenFormulaModal = function openCaseWhenFormulaModal(e, value, index) {
471
+ e.preventDefault();
472
+ e.stopPropagation();
473
+ var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
474
+ var modalInstance;
475
+ var CaseWhenZoomEditor = function CaseWhenZoomEditor() {
476
+ var _useState1 = (0, _react.useState)(function () {
477
+ return (0, _cloneDeep["default"])(value);
478
+ }),
479
+ _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
480
+ draftValue = _useState10[0],
481
+ setDraftValue = _useState10[1];
482
+ var _useState11 = (0, _react.useState)(null),
483
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
484
+ activeZoomRegionKey = _useState12[0],
485
+ setActiveZoomRegionKey = _useState12[1];
486
+ var updateDraftValue = function updateDraftValue(nextValue) {
487
+ setDraftValue(_withSyncedQuotes(nextValue));
488
+ };
489
+ var handleOk = function handleOk() {
490
+ var _modalInstance2, _modalInstance2$close;
491
+ updateAtomAt(index, (0, _cloneDeep["default"])(draftValue));
492
+ (_modalInstance2 = modalInstance) === null || _modalInstance2 === void 0 || (_modalInstance2$close = _modalInstance2.close) === null || _modalInstance2$close === void 0 || _modalInstance2$close.call(_modalInstance2);
493
+ };
494
+ return (0, _jsxRuntime.jsx)(_useProvider.Provider, {
495
+ value: store,
496
+ children: (0, _jsxRuntime.jsxs)("div", {
497
+ className: 'Sqb-FormulaListZoomEditor',
498
+ children: [(0, _jsxRuntime.jsx)("div", {
499
+ className: 'Sqb-FormulaListZoomEditor-body',
500
+ children: (0, _jsxRuntime.jsx)("div", {
501
+ className: 'Sqb-NotebookCell Sqb-FormulaListZoomEditor-cell',
502
+ children: (0, _jsxRuntime.jsx)(_CaseWhenGroup["default"], {
503
+ showTools: false,
504
+ useBranchScrollInner: true,
505
+ caseRegionKey: 'case-zoom-case',
506
+ elseRegionKey: 'case-zoom-else',
507
+ activeRegionKey: activeZoomRegionKey,
508
+ onActivateRegion: setActiveZoomRegionKey,
509
+ caseAtomsContent: renderNestedFormulaList(draftValue.caseAtoms || [], function (nextList) {
510
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
511
+ caseAtoms: nextList
512
+ }));
513
+ }),
514
+ whenClauses: (draftValue.whenClauses || []).map(function (branch, branchIndex) {
515
+ return {
516
+ key: "case-zoom-".concat(branchIndex),
517
+ canDelete: (draftValue.whenClauses || []).length > 1,
518
+ whenContent: renderNestedFormulaList(branch.whenAtoms || [], function (nextList) {
519
+ var nextWhenClauses = (draftValue.whenClauses || []).slice();
520
+ nextWhenClauses[branchIndex] = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, branch), {}, {
521
+ whenAtoms: nextList
522
+ });
523
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
524
+ whenClauses: nextWhenClauses
525
+ }));
526
+ }),
527
+ thenContent: renderNestedFormulaList(branch.thenAtoms || [], function (nextList) {
528
+ var nextWhenClauses = (draftValue.whenClauses || []).slice();
529
+ nextWhenClauses[branchIndex] = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, branch), {}, {
530
+ thenAtoms: nextList
531
+ });
532
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
533
+ whenClauses: nextWhenClauses
534
+ }));
535
+ }),
536
+ onAddAfter: function onAddAfter(event) {
537
+ event.stopPropagation();
538
+ var nextWhenClauses = (draftValue.whenClauses || []).slice();
539
+ nextWhenClauses.splice(branchIndex + 1, 0, {
540
+ whenAtoms: [{
541
+ val: '',
542
+ type: _types.AtomsTypeEnum.UNKNOWN
543
+ }],
544
+ thenAtoms: [{
545
+ val: '',
546
+ type: _types.AtomsTypeEnum.UNKNOWN
547
+ }]
548
+ });
549
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
550
+ whenClauses: nextWhenClauses
551
+ }));
552
+ },
553
+ onDelete: function onDelete(event) {
554
+ event.stopPropagation();
555
+ var whenClauses = draftValue.whenClauses || [];
556
+ if (whenClauses.length <= 1) return;
557
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
558
+ whenClauses: whenClauses.filter(function (_, currentIndex) {
559
+ return currentIndex !== branchIndex;
560
+ })
561
+ }));
562
+ }
563
+ };
564
+ }),
565
+ elseContent: draftValue.elseAtoms ? renderNestedFormulaList(draftValue.elseAtoms || [], function (nextList) {
566
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
567
+ elseAtoms: nextList
568
+ }));
569
+ }) : undefined,
570
+ onAddBranch: function onAddBranch(event) {
571
+ event.stopPropagation();
572
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
573
+ whenClauses: [].concat((0, _toConsumableArray2["default"])(draftValue.whenClauses || []), [{
574
+ whenAtoms: [{
575
+ val: '',
576
+ type: _types.AtomsTypeEnum.UNKNOWN
577
+ }],
578
+ thenAtoms: [{
579
+ val: '',
580
+ type: _types.AtomsTypeEnum.UNKNOWN
581
+ }]
582
+ }])
583
+ }));
584
+ },
585
+ onAddElse: function onAddElse(event) {
586
+ event.stopPropagation();
587
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
588
+ elseAtoms: [{
589
+ val: '',
590
+ type: _types.AtomsTypeEnum.UNKNOWN
591
+ }]
592
+ }));
593
+ },
594
+ onRemoveElse: function onRemoveElse(event) {
595
+ event.stopPropagation();
596
+ updateDraftValue((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, draftValue), {}, {
597
+ elseAtoms: undefined
598
+ }));
599
+ }
600
+ })
601
+ })
602
+ }), (0, _jsxRuntime.jsxs)("div", {
603
+ className: 'Sqb-FormulaListZoomEditor-footer',
604
+ children: [(0, _jsxRuntime.jsx)(_pandora.Button, {
605
+ className: 'sqb-formula-list-zoom-editor-cancel',
606
+ style: ZOOM_FOOTER_CANCEL_STYLE,
607
+ onClick: function onClick() {
608
+ var _modalInstance3, _modalInstance3$close;
609
+ return (_modalInstance3 = modalInstance) === null || _modalInstance3 === void 0 || (_modalInstance3$close = _modalInstance3.close) === null || _modalInstance3$close === void 0 ? void 0 : _modalInstance3$close.call(_modalInstance3);
610
+ },
611
+ children: "\u53D6\u6D88"
612
+ }), (0, _jsxRuntime.jsx)(_pandora.Button, {
613
+ className: 'sqb-formula-list-zoom-editor-confirm',
614
+ primary: true,
615
+ style: ZOOM_FOOTER_CONFIRM_STYLE,
616
+ onClick: handleOk,
617
+ children: "\u786E\u5B9A"
618
+ })]
619
+ })]
620
+ })
621
+ });
622
+ };
623
+ modalInstance = openChildModal({
624
+ zIndex: childModalZIndex,
625
+ className: 'sqb-formula-list-zoom-modal',
626
+ title: '编辑',
627
+ transparentMask: true,
628
+ modalWidth: 1180,
629
+ modalHeight: 680,
630
+ content: (0, _jsxRuntime.jsx)(CaseWhenZoomEditor, {}),
631
+ onClose: function onClose() {}
632
+ });
633
+ };
634
+ var openFormulaListModal = function openFormulaListModal(e) {
635
+ e.preventDefault();
636
+ e.stopPropagation();
637
+ var childModalZIndex = (0, _helperDom.getTopLayerZIndex)() + 1;
638
+ var modalInstance;
639
+ var FormulaListZoomEditor = function FormulaListZoomEditor() {
640
+ var _useState13 = (0, _react.useState)(function () {
641
+ return (0, _cloneDeep["default"])(caseList || []);
642
+ }),
643
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
644
+ draftList = _useState14[0],
645
+ setDraftList = _useState14[1];
646
+ var updateDraftList = function updateDraftList(nextList) {
647
+ setDraftList(nextList.map(function (item) {
648
+ return _withSyncedQuotes(item);
649
+ }));
650
+ };
651
+ var handleOk = function handleOk() {
652
+ var _modalInstance4, _modalInstance4$close;
653
+ setCaseList((0, _cloneDeep["default"])(draftList));
654
+ (_modalInstance4 = modalInstance) === null || _modalInstance4 === void 0 || (_modalInstance4$close = _modalInstance4.close) === null || _modalInstance4$close === void 0 || _modalInstance4$close.call(_modalInstance4);
655
+ };
656
+ return (0, _jsxRuntime.jsx)(_useProvider.Provider, {
657
+ value: store,
658
+ children: (0, _jsxRuntime.jsxs)("div", {
659
+ className: 'Sqb-FormulaListZoomEditor',
660
+ children: [(0, _jsxRuntime.jsx)("div", {
661
+ className: 'Sqb-FormulaListZoomEditor-body Sqb-FormulaListZoomEditor-body--formulaList',
662
+ children: (0, _jsxRuntime.jsx)(FormulaList, {
663
+ ref: ref,
664
+ value: draftList,
665
+ data: data,
666
+ exitData: exitData,
667
+ onChange: function onChange(atoms) {
668
+ return updateDraftList(atoms);
669
+ },
670
+ customTypes: _customTypes,
671
+ otherTypes: otherTypes,
672
+ isCustom: isCustom,
673
+ showPreview: showPreview,
674
+ check: check,
675
+ _type: _type,
676
+ enableCopy: false,
677
+ enableZoom: false,
678
+ parentPopupChannel: parentPopupChannel
679
+ })
680
+ }), (0, _jsxRuntime.jsxs)("div", {
681
+ className: 'Sqb-FormulaListZoomEditor-footer',
682
+ children: [(0, _jsxRuntime.jsx)(_pandora.Button, {
683
+ className: 'sqb-formula-list-zoom-editor-cancel',
684
+ style: ZOOM_FOOTER_CANCEL_STYLE,
685
+ onClick: function onClick() {
686
+ var _modalInstance5, _modalInstance5$close;
687
+ return (_modalInstance5 = modalInstance) === null || _modalInstance5 === void 0 || (_modalInstance5$close = _modalInstance5.close) === null || _modalInstance5$close === void 0 ? void 0 : _modalInstance5$close.call(_modalInstance5);
688
+ },
689
+ children: "\u53D6\u6D88"
690
+ }), (0, _jsxRuntime.jsx)(_pandora.Button, {
691
+ className: 'sqb-formula-list-zoom-editor-confirm',
692
+ primary: true,
693
+ style: ZOOM_FOOTER_CONFIRM_STYLE,
694
+ onClick: handleOk,
695
+ children: "\u786E\u5B9A"
696
+ })]
697
+ })]
698
+ })
699
+ });
700
+ };
701
+ modalInstance = openChildModal({
702
+ zIndex: childModalZIndex,
703
+ className: 'sqb-formula-list-zoom-modal',
704
+ title: '编辑',
705
+ transparentMask: true,
706
+ modalWidth: 1180,
707
+ modalHeight: 680,
708
+ content: (0, _jsxRuntime.jsx)(FormulaListZoomEditor, {}),
709
+ onClose: function onClose() {}
710
+ });
711
+ };
320
712
  var renderNestedFormulaList = function renderNestedFormulaList(list, onNestedChange) {
713
+ var hasNestedCaseWhen = list.some(function (item) {
714
+ return (item === null || item === void 0 ? void 0 : item.type) === _types.AtomsTypeEnum.CASE_WHEN;
715
+ });
321
716
  return (0, _jsxRuntime.jsx)("div", {
322
- className: 'Sqb-NestedFormulaList',
717
+ className: (0, _classnames["default"])('Sqb-NestedFormulaList', {
718
+ 'Sqb-NestedFormulaList--hasCaseWhen': hasNestedCaseWhen
719
+ }),
323
720
  children: (0, _jsxRuntime.jsx)(FormulaList, {
324
721
  ref: ref,
325
722
  embedded: true,
@@ -335,80 +732,94 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
335
732
  showPreview: false,
336
733
  check: check,
337
734
  _type: _type,
735
+ enableZoom: false,
338
736
  parentPopupChannel: parentPopupChannel
339
737
  })
340
738
  });
341
739
  };
342
740
  var renderCaseWhenEditor = function renderCaseWhenEditor(value, index) {
741
+ var caseAtoms = value.caseAtoms || [];
742
+ var whenClauses = value.whenClauses || [];
743
+ var elseAtoms = value.elseAtoms;
744
+ var caseRegionKey = "case-".concat(index, "-case");
745
+ var elseRegionKey = "case-".concat(index, "-else");
343
746
  return (0, _jsxRuntime.jsx)(_CaseWhenGroup["default"], {
344
- caseValueContent: renderNestedFormulaList(value.caseValue || [], function (nextList) {
747
+ isNested: embedded,
748
+ useBranchScrollInner: !embedded,
749
+ caseRegionKey: caseRegionKey,
750
+ elseRegionKey: elseRegionKey,
751
+ activeRegionKey: hoveredCaseGroupKey,
752
+ onActivateRegion: setHoveredCaseGroupKey,
753
+ caseAtomsContent: renderNestedFormulaList(caseAtoms, function (nextList) {
345
754
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
346
- caseValue: nextList
755
+ caseAtoms: nextList
347
756
  }));
348
757
  }),
349
- branches: (value.branches || []).map(function (branch, branchIndex) {
758
+ whenClauses: whenClauses.map(function (branch, branchIndex) {
350
759
  return {
351
760
  key: "case-".concat(index, "-branch-").concat(branchIndex),
352
- whenContent: renderNestedFormulaList(branch.when || [], function (nextList) {
353
- var nextBranches = (value.branches || []).slice();
354
- nextBranches[branchIndex] = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, branch), {}, {
355
- when: nextList
761
+ canDelete: whenClauses.length > 1,
762
+ whenContent: renderNestedFormulaList(branch.whenAtoms || [], function (nextList) {
763
+ var nextWhenClauses = whenClauses.slice();
764
+ nextWhenClauses[branchIndex] = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, branch), {}, {
765
+ whenAtoms: nextList
356
766
  });
357
767
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
358
- branches: nextBranches
768
+ whenClauses: nextWhenClauses
359
769
  }));
360
770
  }),
361
- thenContent: renderNestedFormulaList(branch.then || [], function (nextList) {
362
- var nextBranches = (value.branches || []).slice();
363
- nextBranches[branchIndex] = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, branch), {}, {
364
- then: nextList
771
+ thenContent: renderNestedFormulaList(branch.thenAtoms || [], function (nextList) {
772
+ var nextWhenClauses = whenClauses.slice();
773
+ nextWhenClauses[branchIndex] = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, branch), {}, {
774
+ thenAtoms: nextList
365
775
  });
366
776
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
367
- branches: nextBranches
777
+ whenClauses: nextWhenClauses
368
778
  }));
369
779
  }),
370
780
  onAddAfter: function onAddAfter(e) {
371
781
  e.stopPropagation();
372
- var nextBranches = (value.branches || []).slice();
373
- nextBranches.splice(branchIndex + 1, 0, {
374
- when: [{
782
+ var nextWhenClauses = whenClauses.slice();
783
+ nextWhenClauses.splice(branchIndex + 1, 0, {
784
+ whenAtoms: [{
375
785
  val: '',
376
786
  type: _types.AtomsTypeEnum.UNKNOWN
377
787
  }],
378
- then: [{
788
+ thenAtoms: [{
379
789
  val: '',
380
790
  type: _types.AtomsTypeEnum.UNKNOWN
381
791
  }]
382
792
  });
383
793
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
384
- branches: nextBranches
794
+ whenClauses: nextWhenClauses
385
795
  }));
386
796
  },
387
797
  onDelete: function onDelete(e) {
388
798
  e.stopPropagation();
389
- var nextBranches = (value.branches || []).filter(function (_, currentIndex) {
799
+ if (whenClauses.length <= 1) return;
800
+ var nextWhenClauses = whenClauses.filter(function (_, currentIndex) {
390
801
  return currentIndex !== branchIndex;
391
802
  });
392
803
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
393
- branches: nextBranches
804
+ whenClauses: nextWhenClauses
394
805
  }));
395
806
  }
396
807
  };
397
808
  }),
398
- elseContent: value.elseValue ? renderNestedFormulaList(value.elseValue || [], function (nextList) {
809
+ elseContent: elseAtoms ? renderNestedFormulaList(elseAtoms || [], function (nextList) {
399
810
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
400
- elseValue: nextList
811
+ elseAtoms: nextList
401
812
  }));
402
813
  }) : undefined,
403
814
  onAddBranch: function onAddBranch(e) {
404
815
  e.stopPropagation();
405
816
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
406
- branches: [].concat((0, _toConsumableArray2["default"])(value.branches || []), [{
407
- when: [{
817
+ whenClauses: [].concat((0, _toConsumableArray2["default"])(whenClauses), [{
818
+ whenAtoms: [{
408
819
  val: '',
409
820
  type: _types.AtomsTypeEnum.UNKNOWN
410
821
  }],
411
- then: [{
822
+ thenAtoms: [{
412
823
  val: '',
413
824
  type: _types.AtomsTypeEnum.UNKNOWN
414
825
  }]
@@ -418,7 +829,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
418
829
  onAddElse: function onAddElse(e) {
419
830
  e.stopPropagation();
420
831
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
421
- elseValue: [{
832
+ elseAtoms: [{
422
833
  val: '',
423
834
  type: _types.AtomsTypeEnum.UNKNOWN
424
835
  }]
@@ -427,25 +838,48 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
427
838
  onRemoveElse: function onRemoveElse(e) {
428
839
  e.stopPropagation();
429
840
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
430
- elseValue: undefined
841
+ elseAtoms: undefined
431
842
  }));
432
843
  },
844
+ onZoomCase: function onZoomCase(e) {
845
+ return openCaseWhenFormulaModal(e, value, index);
846
+ },
433
847
  onDeleteCase: function onDeleteCase(e) {
434
848
  return handleDel(e, index);
435
849
  }
436
850
  });
437
851
  };
438
852
  var renderAndOrEditor = function renderAndOrEditor(value, index) {
853
+ var createUnknownAtom = function createUnknownAtom() {
854
+ return {
855
+ val: '',
856
+ type: _types.AtomsTypeEnum.UNKNOWN
857
+ };
858
+ };
859
+ var leftAtoms = Array.isArray(value.leftAtoms) ? value.leftAtoms : value.atoms || [createUnknownAtom()];
860
+ var rightAtoms = Array.isArray(value.rightAtoms) ? value.rightAtoms : [createUnknownAtom()];
439
861
  return (0, _jsxRuntime.jsx)(_LogicGroup["default"], {
440
862
  operator: value.operator || 'and',
441
863
  onToggleOperator: function onToggleOperator() {
442
864
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
865
+ atoms: undefined,
866
+ leftAtoms: leftAtoms,
867
+ rightAtoms: rightAtoms,
443
868
  operator: value.operator === 'or' ? 'and' : 'or'
444
869
  }));
445
870
  },
446
- content: renderNestedFormulaList(value.list || [], function (nextList) {
871
+ leftContent: renderNestedFormulaList(leftAtoms, function (nextList) {
872
+ updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
873
+ atoms: undefined,
874
+ rightAtoms: rightAtoms,
875
+ leftAtoms: nextList
876
+ }));
877
+ }),
878
+ rightContent: renderNestedFormulaList(rightAtoms, function (nextList) {
447
879
  updateAtomAt(index, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
448
- list: nextList
880
+ atoms: undefined,
881
+ leftAtoms: leftAtoms,
882
+ rightAtoms: nextList
449
883
  }));
450
884
  }),
451
885
  onDelete: function onDelete(e) {
@@ -453,43 +887,43 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
453
887
  }
454
888
  });
455
889
  };
456
- var _useState1 = (0, _react.useState)(-1),
457
- _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
458
- ind = _useState10[0],
459
- setInd = _useState10[1];
890
+ var _useState15 = (0, _react.useState)(-1),
891
+ _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
892
+ ind = _useState16[0],
893
+ setInd = _useState16[1];
460
894
  var filterCustomType = store.filterCustomType;
461
895
  var _ref = (0, _react.useRef)(null);
462
- var _useState11 = (0, _react.useState)({
896
+ var _useState17 = (0, _react.useState)({
463
897
  isError: false
464
898
  }),
465
- _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
466
- errorInfo = _useState12[0],
467
- setErrorInfo = _useState12[1];
468
- var _useState13 = (0, _react.useState)(false),
469
- _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
470
- isCheck = _useState14[0],
471
- setIsCheck = _useState14[1];
472
- var myInstanceIdRef = (0, _react.useRef)(Math.random().toString(36).slice(2));
473
- var _useState15 = (0, _react.useState)(null),
474
- _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
475
- hoveredCaseGroupKey = _useState16[0],
476
- setHoveredCaseGroupKey = _useState16[1];
477
- var _useState17 = (0, _react.useState)(!!window.__sqb_selection_active__),
478
899
  _useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
479
- globalSelectionActive = _useState18[0],
480
- setGlobalSelectionActive = _useState18[1];
481
- var _useState19 = (0, _react.useState)(window.__sqb_selection_owner__ || null),
900
+ errorInfo = _useState18[0],
901
+ setErrorInfo = _useState18[1];
902
+ var _useState19 = (0, _react.useState)(false),
482
903
  _useState20 = (0, _slicedToArray2["default"])(_useState19, 2),
483
- globalSelectionOwner = _useState20[0],
484
- setGlobalSelectionOwner = _useState20[1];
485
- var _useState21 = (0, _react.useState)([]),
904
+ isCheck = _useState20[0],
905
+ setIsCheck = _useState20[1];
906
+ var myInstanceIdRef = (0, _react.useRef)(Math.random().toString(36).slice(2));
907
+ var _useState21 = (0, _react.useState)(null),
486
908
  _useState22 = (0, _slicedToArray2["default"])(_useState21, 2),
487
- selectedIndices = _useState22[0],
488
- setSelectedIndices = _useState22[1];
489
- var _useState23 = (0, _react.useState)(null),
909
+ hoveredCaseGroupKey = _useState22[0],
910
+ setHoveredCaseGroupKey = _useState22[1];
911
+ var _useState23 = (0, _react.useState)(!!window.__sqb_selection_active__),
490
912
  _useState24 = (0, _slicedToArray2["default"])(_useState23, 2),
491
- hoveredCopyIndex = _useState24[0],
492
- setHoveredCopyIndex = _useState24[1];
913
+ globalSelectionActive = _useState24[0],
914
+ setGlobalSelectionActive = _useState24[1];
915
+ var _useState25 = (0, _react.useState)(window.__sqb_selection_owner__ || null),
916
+ _useState26 = (0, _slicedToArray2["default"])(_useState25, 2),
917
+ globalSelectionOwner = _useState26[0],
918
+ setGlobalSelectionOwner = _useState26[1];
919
+ var _useState27 = (0, _react.useState)([]),
920
+ _useState28 = (0, _slicedToArray2["default"])(_useState27, 2),
921
+ selectedIndices = _useState28[0],
922
+ setSelectedIndices = _useState28[1];
923
+ var _useState29 = (0, _react.useState)(null),
924
+ _useState30 = (0, _slicedToArray2["default"])(_useState29, 2),
925
+ hoveredCopyIndex = _useState30[0],
926
+ setHoveredCopyIndex = _useState30[1];
493
927
  var getCaseGroupEnd = function getCaseGroupEnd(list, startIndex) {
494
928
  var depth = 0;
495
929
  for (var index = startIndex; index < list.length; index++) {
@@ -644,6 +1078,9 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
644
1078
  }
645
1079
  return true;
646
1080
  };
1081
+ var canShowItemInsertArrows = function canShowItemInsertArrows(item, groupType) {
1082
+ return canShowInsertArrows(item, groupType);
1083
+ };
647
1084
  (0, _react.useEffect)(function () {
648
1085
  var _errorInfo = (0, _utils3.validateExpressionIntegrity)(caseList);
649
1086
  setErrorInfo(_errorInfo);
@@ -1192,15 +1629,16 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1192
1629
  };
1193
1630
  }
1194
1631
  if (type === _types.AtomsTypeEnum.FIELD) {
1632
+ var displayName = getFieldDisplayName(v);
1195
1633
  return {
1196
1634
  className: (0, _classnames["default"])({
1197
- notSelected: !(v !== null && v !== void 0 && v.fieldName)
1635
+ notSelected: !displayName
1198
1636
  }),
1199
1637
  onClick: function onClick(e) {
1200
1638
  return handleField(e, index, v);
1201
1639
  },
1202
1640
  node: (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1203
- children: [!(v !== null && v !== void 0 && v.fieldName) && (0, _locale.__)('customColumn.selectField'), v.fieldName, renderDeleteIcon(v, index, groupType)]
1641
+ children: [!displayName && (0, _locale.__)('customColumn.selectField'), displayName, renderDeleteIcon(v, index, groupType)]
1204
1642
  })
1205
1643
  };
1206
1644
  }
@@ -1368,32 +1806,41 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1368
1806
  if (groupType === 'logic') {
1369
1807
  return {
1370
1808
  className: (0, _classnames["default"])('gray-name', 'notSelected'),
1371
- style: {
1372
- minWidth: 44,
1373
- justifyContent: 'center'
1374
- },
1809
+ style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, ADD_TRIGGER_STYLE), {}, {
1810
+ minWidth: 44
1811
+ }),
1375
1812
  node: selectOperator({
1376
1813
  triggerElement: function triggerElement() {
1377
- return renderTokenContent((0, _jsxRuntime.jsx)(_icons.AddIcon, {}));
1814
+ return renderTokenContent((0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1815
+ title: "\u6DFB\u52A0",
1816
+ children: (0, _jsxRuntime.jsx)(_icons.AddIcon, {})
1817
+ }));
1378
1818
  },
1379
1819
  ind: index,
1380
1820
  position: ''
1381
1821
  })
1382
1822
  };
1383
1823
  }
1824
+ var customInputClassName = (0, _classnames["default"])({
1825
+ notSelected: true
1826
+ });
1384
1827
  return {
1385
- className: (0, _classnames["default"])({
1386
- notSelected: true
1387
- }),
1388
- node: selectOperator({
1389
- triggerElement: function triggerElement() {
1390
- return renderTokenContent((0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1391
- children: [(0, _locale.__)('customColumn.selectCustomInput'), renderDeleteIcon(v, index, groupType)]
1392
- }));
1393
- },
1394
- ind: index,
1395
- position: ''
1396
- })
1828
+ raw: true,
1829
+ node: (0, _jsxRuntime.jsx)(_itemName["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, getItemNameProps(v)), {}, {
1830
+ children: selectOperator({
1831
+ triggerElement: function triggerElement() {
1832
+ return (0, _jsxRuntime.jsx)("div", {
1833
+ className: (0, _classnames["default"])('Sqb-TableName', customInputClassName),
1834
+ style: getTokenStyleByClassName(customInputClassName),
1835
+ children: renderTokenContent((0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1836
+ children: [(0, _locale.__)('customColumn.selectCustomInput'), renderDeleteIcon(v, index, groupType)]
1837
+ }))
1838
+ });
1839
+ },
1840
+ ind: index,
1841
+ position: ''
1842
+ })
1843
+ }))
1397
1844
  };
1398
1845
  };
1399
1846
  var copyDom = function copyDom() {
@@ -1431,6 +1878,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1431
1878
  var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
1432
1879
  var itemContent = itemDom(v, i, groupType);
1433
1880
  var isCompositeAtom = v.type === _types.AtomsTypeEnum.CASE_WHEN || v.type === _types.AtomsTypeEnum.AND_OR;
1881
+ var showAfterArrow = canShowItemInsertArrows(v, groupType);
1882
+ var showBeforeArrow = canShowItemInsertArrows(v, groupType);
1434
1883
  return (0, _jsxRuntime.jsx)(_react["default"].Fragment, {
1435
1884
  children: (0, _jsxRuntime.jsxs)("div", {
1436
1885
  className: (0, _classnames["default"])('Sqb-Filter-item', (0, _defineProperty2["default"])({
@@ -1438,6 +1887,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1438
1887
  'item-fixed': v.fixed || false,
1439
1888
  'item-selected': isCheck,
1440
1889
  'item-composite': isCompositeAtom,
1890
+ 'has-left-arrow': showBeforeArrow,
1891
+ 'has-right-arrow': showAfterArrow,
1441
1892
  'group-child': groupType !== 'single',
1442
1893
  'group-flow-child': groupType === 'caseWhen',
1443
1894
  'group-logic-child': groupType === 'logic'
@@ -1450,7 +1901,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1450
1901
  if (isCheck) return;
1451
1902
  setInd(-1);
1452
1903
  },
1453
- children: [copyDom(i), canShowInsertArrows(v, groupType) && selectOperator({
1904
+ children: [copyDom(i), showBeforeArrow && selectOperator({
1454
1905
  triggerElement: function triggerElement() {
1455
1906
  return (0, _jsxRuntime.jsx)("div", {
1456
1907
  className: 'left-arrow',
@@ -1479,19 +1930,19 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1479
1930
  style: {
1480
1931
  pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
1481
1932
  },
1482
- className: (0, _classnames["default"])({
1483
- openCheck: isCheck
1933
+ className: (0, _classnames["default"])('Sqb-Filter-item-node', {
1934
+ openCheck: isCheck && !isCompositeAtom
1484
1935
  }),
1485
- children: (0, _jsxRuntime.jsx)(_itemName["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, getItemNameProps(v)), {}, {
1486
- children: itemContent.raw ? itemContent.node : (0, _jsxRuntime.jsx)("div", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
1936
+ children: itemContent.raw ? itemContent.node : (0, _jsxRuntime.jsx)(_itemName["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, getItemNameProps(v)), {}, {
1937
+ children: (0, _jsxRuntime.jsx)("div", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
1487
1938
  className: (0, _classnames["default"])('Sqb-TableName', itemContent.className),
1488
1939
  onClick: itemContent.onClick,
1489
- style: itemContent.style
1940
+ style: getTokenStyleByClassName(itemContent.className, itemContent.style)
1490
1941
  }, itemContent.attrs || {}), {}, {
1491
1942
  children: itemContent.node
1492
1943
  }))
1493
1944
  }))
1494
- }), canShowInsertArrows(v, groupType) && selectOperator({
1945
+ }), showAfterArrow && selectOperator({
1495
1946
  triggerElement: function triggerElement(value) {
1496
1947
  return (0, _jsxRuntime.jsx)("div", {
1497
1948
  className: 'right-arrow',
@@ -1519,25 +1970,34 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1519
1970
  };
1520
1971
  var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
1521
1972
  if (!canDeleteItem(item, groupType)) return null;
1522
- return (0, _jsxRuntime.jsx)("span", {
1523
- className: 'item-del',
1524
- style: {
1525
- fontSize: 0
1526
- },
1527
- onClick: function onClick(e) {
1528
- return handleDel(e, index);
1529
- },
1530
- children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {})
1973
+ return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1974
+ title: "\u5220\u9664",
1975
+ children: (0, _jsxRuntime.jsx)("span", {
1976
+ className: 'item-del',
1977
+ style: {
1978
+ fontSize: 0
1979
+ },
1980
+ onClick: function onClick(e) {
1981
+ return handleDel(e, index);
1982
+ },
1983
+ children: (0, _jsxRuntime.jsx)(_icons.CloseIcon, {
1984
+ width: TOKEN_DELETE_ICON_SIZE,
1985
+ height: TOKEN_DELETE_ICON_SIZE
1986
+ })
1987
+ })
1531
1988
  });
1532
1989
  };
1533
1990
  var renderCaseRecoverButton = function renderCaseRecoverButton(onClick, className, label) {
1534
- return (0, _jsxRuntime.jsxs)("button", {
1535
- type: 'button',
1536
- className: (0, _classnames["default"])('Sqb-CaseRecover', className),
1537
- onClick: onClick,
1538
- children: [(0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {}), (0, _jsxRuntime.jsx)("span", {
1539
- children: label
1540
- })]
1991
+ return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1992
+ title: label,
1993
+ children: (0, _jsxRuntime.jsxs)("button", {
1994
+ type: 'button',
1995
+ className: (0, _classnames["default"])('Sqb-CaseRecover', className),
1996
+ onClick: onClick,
1997
+ children: [(0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {}), (0, _jsxRuntime.jsx)("span", {
1998
+ children: label
1999
+ })]
2000
+ })
1541
2001
  });
1542
2002
  };
1543
2003
  var renderGroupInsertArrow = function renderGroupInsertArrow(index, position) {
@@ -1561,57 +2021,81 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1561
2021
  trigger: 'hover'
1562
2022
  });
1563
2023
  };
2024
+ var showFormulaListZoom = !embedded && enableZoom;
2025
+ var showCopyTools = !embedded && isCopy && caseList.length > 0;
2026
+ var renderFormulaListZoomButton = function renderFormulaListZoomButton() {
2027
+ return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2028
+ title: "\u7F16\u8F91",
2029
+ children: (0, _jsxRuntime.jsx)("button", {
2030
+ type: 'button',
2031
+ className: 'Sqb-FormulaList-zoom formula-node-tool',
2032
+ style: FORMULA_LIST_ZOOM_BUTTON_STYLE,
2033
+ onClick: openFormulaListModal,
2034
+ children: (0, _jsxRuntime.jsx)(_pandoraIcons.FullscreenOExpand, {})
2035
+ })
2036
+ });
2037
+ };
1564
2038
  return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
1565
2039
  children: (0, _jsxRuntime.jsxs)("div", {
1566
2040
  className: (0, _classnames["default"])('Sqb-NotebookCell', {
1567
2041
  'Sqb-NotebookCell--embedded': embedded
1568
2042
  }),
1569
- children: [!embedded && isCopy && caseList.length > 0 && (0, _jsxRuntime.jsxs)(_pandora.Space, {
1570
- size: 'small',
1571
- direction: 'vertical',
1572
- className: (0, _classnames["default"])('item-isCheck', {
1573
- isCheck: isCheck
1574
- }),
1575
- children: [(0, _jsxRuntime.jsx)(_pandora.Button, {
1576
- className: (0, _classnames["default"])('primary-color', {}),
1577
- size: 'small',
1578
- onClick: function onClick() {
1579
- return _setIsCheck(!isCheck);
1580
- },
1581
- primary: true,
1582
- children: isCheck ? (0, _locale.__)('customColumn.closeCopy') : (0, _locale.__)('customColumn.openCopy')
1583
- }), (0, _jsxRuntime.jsx)(_pandora.Button, {
1584
- className: (0, _classnames["default"])('', 'primary-color', {}),
1585
- size: 'small',
1586
- onClick: function onClick() {
1587
- return copyAll();
1588
- },
1589
- primary: true,
1590
- children: (0, _locale.__)('customColumn.copyAll')
1591
- }), selectedIndices.length > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
1592
- primary: true,
1593
- danger: true,
1594
- size: 'small',
1595
- onClick: function onClick() {
1596
- return delSelect();
1597
- },
1598
- children: (0, _locale.__)('customColumn.delSelect')
1599
- }), !isCheck && checkedItemsCount > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
1600
- primary: true,
1601
- warning: true,
2043
+ children: [showCopyTools ? (0, _jsxRuntime.jsxs)("div", {
2044
+ className: 'Sqb-FormulaListTopTools',
2045
+ children: [(0, _jsxRuntime.jsxs)(_pandora.Space, {
1602
2046
  size: 'small',
1603
- onClick: function onClick() {
1604
- return initPaste();
1605
- },
1606
- children: "\u6E05\u9664\u590D\u5236"
1607
- })]
2047
+ direction: 'horizontal',
2048
+ className: (0, _classnames["default"])('item-isCheck', {
2049
+ isCheck: isCheck
2050
+ }),
2051
+ children: [(0, _jsxRuntime.jsx)(_pandora.Button, {
2052
+ className: (0, _classnames["default"])('primary-color', {}),
2053
+ size: 'small',
2054
+ onClick: function onClick() {
2055
+ return _setIsCheck(!isCheck);
2056
+ },
2057
+ primary: true,
2058
+ children: isCheck ? (0, _locale.__)('customColumn.closeCopy') : (0, _locale.__)('customColumn.openCopy')
2059
+ }), (0, _jsxRuntime.jsx)(_pandora.Button, {
2060
+ className: (0, _classnames["default"])('', 'primary-color', {}),
2061
+ size: 'small',
2062
+ onClick: function onClick() {
2063
+ return copyAll();
2064
+ },
2065
+ primary: true,
2066
+ children: (0, _locale.__)('customColumn.copyAll')
2067
+ }), selectedIndices.length > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
2068
+ primary: true,
2069
+ danger: true,
2070
+ size: 'small',
2071
+ onClick: function onClick() {
2072
+ return delSelect();
2073
+ },
2074
+ children: (0, _locale.__)('customColumn.delSelect')
2075
+ }), !isCheck && checkedItemsCount > 0 && (0, _jsxRuntime.jsx)(_pandora.Button, {
2076
+ primary: true,
2077
+ warning: true,
2078
+ size: 'small',
2079
+ onClick: function onClick() {
2080
+ return initPaste();
2081
+ },
2082
+ children: "\u6E05\u9664\u590D\u5236"
2083
+ })]
2084
+ }), showFormulaListZoom && renderFormulaListZoomButton()]
2085
+ }) : showFormulaListZoom && (0, _jsxRuntime.jsx)("div", {
2086
+ className: 'Sqb-FormulaListFloatingTools',
2087
+ children: renderFormulaListZoomButton()
1608
2088
  }), caseList.map(function (item, itemIndex) {
1609
2089
  return renderItemShell(item, itemIndex, 'single');
1610
2090
  }), Array.from(caseList).length < 1 && selectOperator({
1611
2091
  triggerElement: function triggerElement() {
1612
- return (0, _jsxRuntime.jsx)("div", {
1613
- className: (0, _classnames["default"])("Sqb-TableName gray-name"),
1614
- children: (0, _jsxRuntime.jsx)(_icons.AddIcon, {})
2092
+ return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2093
+ title: "\u6DFB\u52A0",
2094
+ children: (0, _jsxRuntime.jsx)("div", {
2095
+ className: (0, _classnames["default"])("Sqb-TableName gray-name"),
2096
+ style: ADD_TRIGGER_STYLE,
2097
+ children: (0, _jsxRuntime.jsx)(_icons.AddIcon, {})
2098
+ })
1615
2099
  });
1616
2100
  },
1617
2101
  ind: -1,