@gingkoo/pandora-metabase 1.0.126 → 1.0.128

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 +67 -16
  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 +26 -5
  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 +349 -58
  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 +67 -16
  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 +26 -5
  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 +350 -59
  65. package/package.json +1 -1
@@ -2,15 +2,15 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
4
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
5
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
6
5
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
6
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
7
7
  var _excluded = ["notExistsToolbar", "toolbar"],
8
8
  _excluded2 = ["subToolbar", "notExistsColumns", "showFields", "isExit", "toolbar"];
9
9
  import _regeneratorRuntime from "@babel/runtime/regenerator";
10
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
11
  import React, { useEffect, useState, useMemo, useRef, forwardRef } from 'react';
12
12
  import './index.less';
13
- import { FieldString, FieldNumber, FfPlus } from '@gingkoo/pandora-icons';
13
+ import { FieldString, FieldNumber, FfPlus, FullscreenOExpand } from '@gingkoo/pandora-icons';
14
14
  import cx from 'classnames';
15
15
  import Metabase from '../../../index';
16
16
  import { __ } from '../../../locale';
@@ -34,9 +34,99 @@ import storage from '../../../utils/storage';
34
34
  import { getTopLayerZIndex } from '../../../utils/helper-dom';
35
35
  import CaseWhenGroup from './CaseWhenGroup';
36
36
  import LogicGroup from './LogicGroup';
37
+ import { SummarizeAlias } from '../../../store/helper';
37
38
  var CASE_FIXED_OPERATORS = ['case', 'when', 'then', 'else', 'end'];
38
39
  var LOGIC_FIXED_OPERATORS = ['(', ')'];
39
40
  var LOGIC_REQUIRED_OPERATORS = ['(', ')'];
41
+ var TOKEN_DELETE_ICON_SIZE = 10;
42
+ var ADD_TRIGGER_STYLE = {
43
+ display: 'inline-flex',
44
+ alignItems: 'center',
45
+ justifyContent: 'center',
46
+ minHeight: 28,
47
+ minWidth: 36,
48
+ padding: '4px 7px',
49
+ border: '1px solid transparent',
50
+ borderRadius: 5,
51
+ boxSizing: 'border-box',
52
+ color: '#fff',
53
+ backgroundColor: 'rgb(147, 161, 171)',
54
+ fontSize: 13,
55
+ lineHeight: '18px',
56
+ cursor: 'pointer'
57
+ };
58
+ var ZOOM_FOOTER_BUTTON_STYLE = {
59
+ minWidth: 72,
60
+ height: 30,
61
+ borderRadius: 6
62
+ };
63
+ var ZOOM_FOOTER_CANCEL_STYLE = _objectSpread(_objectSpread({}, ZOOM_FOOTER_BUTTON_STYLE), {}, {
64
+ borderColor: 'rgba(83, 92, 112, 0.18)',
65
+ background: '#fff',
66
+ color: 'rgba(83, 92, 112, 0.82)'
67
+ });
68
+ var ZOOM_FOOTER_CONFIRM_STYLE = _objectSpread(_objectSpread({}, ZOOM_FOOTER_BUTTON_STYLE), {}, {
69
+ borderColor: 'rgb(80, 158, 227)',
70
+ background: 'rgb(80, 158, 227)',
71
+ color: '#fff'
72
+ });
73
+ var FORMULA_LIST_ZOOM_BUTTON_STYLE = {
74
+ display: 'inline-flex',
75
+ alignItems: 'center',
76
+ justifyContent: 'center',
77
+ width: 22,
78
+ minWidth: 22,
79
+ height: 22,
80
+ margin: 0,
81
+ padding: 0,
82
+ border: 'none',
83
+ borderRadius: 999,
84
+ background: 'transparent',
85
+ color: 'rgba(83, 92, 112, 0.58)',
86
+ cursor: 'pointer',
87
+ lineHeight: 0
88
+ };
89
+ var TOKEN_BASE_STYLE = {
90
+ display: 'inline-flex',
91
+ alignItems: 'center',
92
+ minHeight: 28,
93
+ padding: '4px 7px',
94
+ border: '1px solid transparent',
95
+ borderRadius: 5,
96
+ boxSizing: 'border-box',
97
+ fontSize: 13,
98
+ lineHeight: '18px',
99
+ cursor: 'pointer'
100
+ };
101
+ var TOKEN_PALETTE = {
102
+ blue: 'rgb(80, 158, 227)',
103
+ purple: 'rgb(113, 114, 173)',
104
+ gray: 'rgb(147, 161, 171)',
105
+ green: 'rgb(136, 191, 77)'
106
+ };
107
+ var getTokenStyleByClassName = function getTokenStyleByClassName(className, extraStyle) {
108
+ var names = " ".concat(className || '', " ");
109
+ var color = TOKEN_PALETTE.blue;
110
+ if (names.includes(' purple-name ')) {
111
+ color = TOKEN_PALETTE.purple;
112
+ } else if (names.includes(' gray-name ')) {
113
+ color = TOKEN_PALETTE.gray;
114
+ } else if (names.includes(' green-name ')) {
115
+ color = TOKEN_PALETTE.green;
116
+ }
117
+ var selectedStyle = _objectSpread(_objectSpread({}, TOKEN_BASE_STYLE), {}, {
118
+ color: '#fff',
119
+ backgroundColor: color
120
+ });
121
+ var notSelectedStyle = _objectSpread(_objectSpread({}, TOKEN_BASE_STYLE), {}, {
122
+ borderColor: color.replace('rgb', 'rgba').replace(')', ', 0.25)'),
123
+ color: color,
124
+ backgroundColor: 'transparent'
125
+ });
126
+ return _objectSpread(_objectSpread(_objectSpread({}, names.includes(' notSelected ') ? notSelectedStyle : selectedStyle), names.includes(' operator-trigger ') ? {
127
+ padding: '4px 7px'
128
+ } : {}), extraStyle);
129
+ };
40
130
  var FormulaList = forwardRef(function (props, ref) {
41
131
  var _storage$_metabaseCop;
42
132
  var _useState = useState((storage === null || storage === void 0 || (_storage$_metabaseCop = storage._metabaseCopyItems) === null || _storage$_metabaseCop === void 0 ? void 0 : _storage$_metabaseCop.length) || 0),
@@ -76,6 +166,8 @@ var FormulaList = forwardRef(function (props, ref) {
76
166
  embedded = _props$embedded === void 0 ? false : _props$embedded,
77
167
  _props$enableCopy = props.enableCopy,
78
168
  enableCopy = _props$enableCopy === void 0 ? true : _props$enableCopy,
169
+ _props$enableZoom = props.enableZoom,
170
+ enableZoom = _props$enableZoom === void 0 ? true : _props$enableZoom,
79
171
  parentPopupChannel = props.parentPopupChannel;
80
172
  var parentPopupLockCountRef = useRef(0);
81
173
  var parentPopupUnlockTimerRef = useRef(null);
@@ -216,21 +308,6 @@ var FormulaList = forwardRef(function (props, ref) {
216
308
  _useState0 = _slicedToArray(_useState9, 2),
217
309
  filterVal = _useState0[0],
218
310
  setFilterVal = _useState0[1];
219
- var setCaseList = function setCaseList(data) {
220
- var quotes = data.map(function (v) {
221
- if (v !== null && v !== void 0 && v.quotes) return v.quotes;
222
- if (v !== null && v !== void 0 && v.fieldName) return v.fieldName;
223
- return v === null || v === void 0 ? void 0 : v.val;
224
- }).join(' ');
225
- caseList = data;
226
- caseListRef.current = data;
227
- onChange === null || onChange === void 0 || onChange(data, quotes);
228
- };
229
- var updateAtomAt = function updateAtomAt(index, nextItem) {
230
- var nextList = caseList.slice();
231
- nextList[index] = nextItem;
232
- setCaseList(nextList);
233
- };
234
311
  function getSelectDisplayText(item) {
235
312
  var displayField = item.displayField || 'value';
236
313
  var getOptionText = function getOptionText(value) {
@@ -248,36 +325,42 @@ var FormulaList = forwardRef(function (props, ref) {
248
325
  }
249
326
  return getOptionText(String(item.val || ''));
250
327
  }
328
+ function getFieldDisplayName(field) {
329
+ if (!field) return '';
330
+ if (field.tableId === SummarizeAlias) {
331
+ return field.fieldAlias || field.fieldName || '';
332
+ }
333
+ return field.fieldName || field.fieldAlias || '';
334
+ }
251
335
  function getItemDisplayText(v) {
252
336
  if (!v) return '';
253
337
  if (v.quotes) return v.quotes;
338
+ if (v.type === AtomsTypeEnum.FIELD) return getFieldDisplayName(v);
254
339
  if (v.fieldName) return v.fieldName;
255
340
  if (v.type === AtomsTypeEnum.FORMULA) {
256
341
  return v.name ? getQuotes(v, v.args, formulaList) : '';
257
342
  }
258
343
  if (v.type === AtomsTypeEnum.CASE_WHEN) {
259
- var caseValueText = (v.caseValue || []).map(function (item) {
344
+ var caseAtomsText = (v.caseAtoms || []).map(function (item) {
260
345
  return getItemDisplayText(item);
261
346
  }).join(' ');
262
- var branchText = (v.branches || []).map(function (branch) {
263
- var whenText = (branch.when || []).map(function (item) {
264
- return getItemDisplayText(item);
265
- }).join(' ');
266
- var thenText = (branch.then || []).map(function (item) {
267
- return getItemDisplayText(item);
268
- }).join(' ');
347
+ var whenClausesText = (v.whenClauses || []).map(function (branch) {
348
+ var whenText = (branch.whenAtoms || []).map(getItemDisplayText).join(' ');
349
+ var thenText = (branch.thenAtoms || []).map(getItemDisplayText).join(' ');
269
350
  return "when ".concat(whenText, " then ").concat(thenText).trim();
270
351
  }).join(' ');
271
- var elseText = (v.elseValue || []).length ? " else ".concat((v.elseValue || []).map(function (item) {
272
- return getItemDisplayText(item);
273
- }).join(' ')) : '';
274
- return "case ".concat(caseValueText, " ").concat(branchText).concat(elseText, " end").replace(/\s+/g, ' ').trim();
352
+ var elseAtomsText = (v.elseAtoms || []).length ? " else ".concat((v.elseAtoms || []).map(getItemDisplayText).join(' ')) : '';
353
+ return "case ".concat(caseAtomsText, " ").concat(whenClausesText).concat(elseAtomsText, " end").replace(/\s+/g, ' ').trim();
275
354
  }
276
355
  if (v.type === AtomsTypeEnum.AND_OR) {
277
- var listText = (v.list || []).map(function (item) {
278
- return getItemDisplayText(item);
279
- }).join(' ');
280
- return "".concat(v.operator || 'and', " ( ").concat(listText, " )").replace(/\s+/g, ' ').trim();
356
+ var hasBinarySides = Array.isArray(v.leftAtoms) || Array.isArray(v.rightAtoms);
357
+ if (hasBinarySides) {
358
+ var leftText = (v.leftAtoms || []).map(getItemDisplayText).join(' ');
359
+ var rightText = (v.rightAtoms || []).map(getItemDisplayText).join(' ');
360
+ return "( ".concat(leftText, " ").concat(v.operator || 'and', " ").concat(rightText, " )").replace(/\s+/g, ' ').trim();
361
+ }
362
+ var atomsText = (v.atoms || []).map(getItemDisplayText).join(' ');
363
+ return "".concat(v.operator || 'and', " ( ").concat(atomsText, " )").replace(/\s+/g, ' ').trim();
281
364
  }
282
365
  if (v.type === AtomsTypeEnum.SELECT) {
283
366
  return getSelectDisplayText(v);
@@ -287,6 +370,73 @@ var FormulaList = forwardRef(function (props, ref) {
287
370
  }
288
371
  return v.val || '';
289
372
  }
373
+ var getItemQuotes = function getItemQuotes(item) {
374
+ return getItemDisplayText(_objectSpread(_objectSpread({}, item), {}, {
375
+ quotes: ''
376
+ }));
377
+ };
378
+ var _withSyncedQuotes = function withSyncedQuotes(item) {
379
+ if (item.type === AtomsTypeEnum.CASE_WHEN) {
380
+ var _item$elseAtoms;
381
+ var nextItem = _objectSpread(_objectSpread({}, item), {}, {
382
+ caseAtoms: (item.caseAtoms || []).map(function (currentItem) {
383
+ return _withSyncedQuotes(currentItem);
384
+ }),
385
+ whenClauses: (item.whenClauses || []).map(function (clause) {
386
+ return _objectSpread(_objectSpread({}, clause), {}, {
387
+ whenAtoms: (clause.whenAtoms || []).map(function (currentItem) {
388
+ return _withSyncedQuotes(currentItem);
389
+ }),
390
+ thenAtoms: (clause.thenAtoms || []).map(function (currentItem) {
391
+ return _withSyncedQuotes(currentItem);
392
+ })
393
+ });
394
+ }),
395
+ elseAtoms: (_item$elseAtoms = item.elseAtoms) === null || _item$elseAtoms === void 0 ? void 0 : _item$elseAtoms.map(function (currentItem) {
396
+ return _withSyncedQuotes(currentItem);
397
+ })
398
+ });
399
+ return _objectSpread(_objectSpread({}, nextItem), {}, {
400
+ quotes: getItemQuotes(nextItem)
401
+ });
402
+ }
403
+ if (item.type === AtomsTypeEnum.AND_OR) {
404
+ var hasBinarySides = Array.isArray(item.leftAtoms) || Array.isArray(item.rightAtoms);
405
+ var _nextItem = _objectSpread(_objectSpread({}, item), hasBinarySides ? {
406
+ atoms: undefined,
407
+ leftAtoms: (item.leftAtoms || []).map(function (currentItem) {
408
+ return _withSyncedQuotes(currentItem);
409
+ }),
410
+ rightAtoms: (item.rightAtoms || []).map(function (currentItem) {
411
+ return _withSyncedQuotes(currentItem);
412
+ })
413
+ } : {
414
+ atoms: (item.atoms || []).map(function (currentItem) {
415
+ return _withSyncedQuotes(currentItem);
416
+ })
417
+ });
418
+ return _objectSpread(_objectSpread({}, _nextItem), {}, {
419
+ quotes: getItemQuotes(_nextItem)
420
+ });
421
+ }
422
+ return item;
423
+ };
424
+ var setCaseList = function setCaseList(data) {
425
+ var nextData = data.map(function (item) {
426
+ return _withSyncedQuotes(item);
427
+ });
428
+ var quotes = nextData.map(function (item) {
429
+ return getItemDisplayText(item);
430
+ }).join(' ');
431
+ caseList = nextData;
432
+ caseListRef.current = nextData;
433
+ onChange === null || onChange === void 0 || onChange(nextData, quotes);
434
+ };
435
+ var updateAtomAt = function updateAtomAt(index, nextItem) {
436
+ var nextList = caseList.slice();
437
+ nextList[index] = nextItem;
438
+ setCaseList(nextList);
439
+ };
290
440
  var getPreviewStr = function getPreviewStr() {
291
441
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
292
442
  return data.map(function (v) {
@@ -308,9 +458,256 @@ var FormulaList = forwardRef(function (props, ref) {
308
458
  children: children
309
459
  });
310
460
  };
461
+ var openCaseWhenFormulaModal = function openCaseWhenFormulaModal(e, value, index) {
462
+ e.preventDefault();
463
+ e.stopPropagation();
464
+ var childModalZIndex = getTopLayerZIndex() + 1;
465
+ var modalInstance;
466
+ var CaseWhenZoomEditor = function CaseWhenZoomEditor() {
467
+ var _useState1 = useState(function () {
468
+ return cloneDeep(value);
469
+ }),
470
+ _useState10 = _slicedToArray(_useState1, 2),
471
+ draftValue = _useState10[0],
472
+ setDraftValue = _useState10[1];
473
+ var _useState11 = useState(null),
474
+ _useState12 = _slicedToArray(_useState11, 2),
475
+ activeZoomRegionKey = _useState12[0],
476
+ setActiveZoomRegionKey = _useState12[1];
477
+ var updateDraftValue = function updateDraftValue(nextValue) {
478
+ setDraftValue(_withSyncedQuotes(nextValue));
479
+ };
480
+ var handleOk = function handleOk() {
481
+ var _modalInstance2, _modalInstance2$close;
482
+ updateAtomAt(index, cloneDeep(draftValue));
483
+ (_modalInstance2 = modalInstance) === null || _modalInstance2 === void 0 || (_modalInstance2$close = _modalInstance2.close) === null || _modalInstance2$close === void 0 || _modalInstance2$close.call(_modalInstance2);
484
+ };
485
+ return _jsx(Provider, {
486
+ value: store,
487
+ children: _jsxs("div", {
488
+ className: 'Sqb-FormulaListZoomEditor',
489
+ children: [_jsx("div", {
490
+ className: 'Sqb-FormulaListZoomEditor-body',
491
+ children: _jsx("div", {
492
+ className: 'Sqb-NotebookCell Sqb-FormulaListZoomEditor-cell',
493
+ children: _jsx(CaseWhenGroup, {
494
+ showTools: false,
495
+ useBranchScrollInner: true,
496
+ caseRegionKey: 'case-zoom-case',
497
+ elseRegionKey: 'case-zoom-else',
498
+ activeRegionKey: activeZoomRegionKey,
499
+ onActivateRegion: setActiveZoomRegionKey,
500
+ caseAtomsContent: renderNestedFormulaList(draftValue.caseAtoms || [], function (nextList) {
501
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
502
+ caseAtoms: nextList
503
+ }));
504
+ }),
505
+ whenClauses: (draftValue.whenClauses || []).map(function (branch, branchIndex) {
506
+ return {
507
+ key: "case-zoom-".concat(branchIndex),
508
+ canDelete: (draftValue.whenClauses || []).length > 1,
509
+ whenContent: renderNestedFormulaList(branch.whenAtoms || [], function (nextList) {
510
+ var nextWhenClauses = (draftValue.whenClauses || []).slice();
511
+ nextWhenClauses[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
512
+ whenAtoms: nextList
513
+ });
514
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
515
+ whenClauses: nextWhenClauses
516
+ }));
517
+ }),
518
+ thenContent: renderNestedFormulaList(branch.thenAtoms || [], function (nextList) {
519
+ var nextWhenClauses = (draftValue.whenClauses || []).slice();
520
+ nextWhenClauses[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
521
+ thenAtoms: nextList
522
+ });
523
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
524
+ whenClauses: nextWhenClauses
525
+ }));
526
+ }),
527
+ onAddAfter: function onAddAfter(event) {
528
+ event.stopPropagation();
529
+ var nextWhenClauses = (draftValue.whenClauses || []).slice();
530
+ nextWhenClauses.splice(branchIndex + 1, 0, {
531
+ whenAtoms: [{
532
+ val: '',
533
+ type: AtomsTypeEnum.UNKNOWN
534
+ }],
535
+ thenAtoms: [{
536
+ val: '',
537
+ type: AtomsTypeEnum.UNKNOWN
538
+ }]
539
+ });
540
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
541
+ whenClauses: nextWhenClauses
542
+ }));
543
+ },
544
+ onDelete: function onDelete(event) {
545
+ event.stopPropagation();
546
+ var whenClauses = draftValue.whenClauses || [];
547
+ if (whenClauses.length <= 1) return;
548
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
549
+ whenClauses: whenClauses.filter(function (_, currentIndex) {
550
+ return currentIndex !== branchIndex;
551
+ })
552
+ }));
553
+ }
554
+ };
555
+ }),
556
+ elseContent: draftValue.elseAtoms ? renderNestedFormulaList(draftValue.elseAtoms || [], function (nextList) {
557
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
558
+ elseAtoms: nextList
559
+ }));
560
+ }) : undefined,
561
+ onAddBranch: function onAddBranch(event) {
562
+ event.stopPropagation();
563
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
564
+ whenClauses: [].concat(_toConsumableArray(draftValue.whenClauses || []), [{
565
+ whenAtoms: [{
566
+ val: '',
567
+ type: AtomsTypeEnum.UNKNOWN
568
+ }],
569
+ thenAtoms: [{
570
+ val: '',
571
+ type: AtomsTypeEnum.UNKNOWN
572
+ }]
573
+ }])
574
+ }));
575
+ },
576
+ onAddElse: function onAddElse(event) {
577
+ event.stopPropagation();
578
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
579
+ elseAtoms: [{
580
+ val: '',
581
+ type: AtomsTypeEnum.UNKNOWN
582
+ }]
583
+ }));
584
+ },
585
+ onRemoveElse: function onRemoveElse(event) {
586
+ event.stopPropagation();
587
+ updateDraftValue(_objectSpread(_objectSpread({}, draftValue), {}, {
588
+ elseAtoms: undefined
589
+ }));
590
+ }
591
+ })
592
+ })
593
+ }), _jsxs("div", {
594
+ className: 'Sqb-FormulaListZoomEditor-footer',
595
+ children: [_jsx(Button, {
596
+ className: 'sqb-formula-list-zoom-editor-cancel',
597
+ style: ZOOM_FOOTER_CANCEL_STYLE,
598
+ onClick: function onClick() {
599
+ var _modalInstance3, _modalInstance3$close;
600
+ return (_modalInstance3 = modalInstance) === null || _modalInstance3 === void 0 || (_modalInstance3$close = _modalInstance3.close) === null || _modalInstance3$close === void 0 ? void 0 : _modalInstance3$close.call(_modalInstance3);
601
+ },
602
+ children: "\u53D6\u6D88"
603
+ }), _jsx(Button, {
604
+ className: 'sqb-formula-list-zoom-editor-confirm',
605
+ primary: true,
606
+ style: ZOOM_FOOTER_CONFIRM_STYLE,
607
+ onClick: handleOk,
608
+ children: "\u786E\u5B9A"
609
+ })]
610
+ })]
611
+ })
612
+ });
613
+ };
614
+ modalInstance = openChildModal({
615
+ zIndex: childModalZIndex,
616
+ className: 'sqb-formula-list-zoom-modal',
617
+ title: '编辑',
618
+ transparentMask: true,
619
+ modalWidth: 1180,
620
+ modalHeight: 680,
621
+ content: _jsx(CaseWhenZoomEditor, {}),
622
+ onClose: function onClose() {}
623
+ });
624
+ };
625
+ var openFormulaListModal = function openFormulaListModal(e) {
626
+ e.preventDefault();
627
+ e.stopPropagation();
628
+ var childModalZIndex = getTopLayerZIndex() + 1;
629
+ var modalInstance;
630
+ var FormulaListZoomEditor = function FormulaListZoomEditor() {
631
+ var _useState13 = useState(function () {
632
+ return cloneDeep(caseList || []);
633
+ }),
634
+ _useState14 = _slicedToArray(_useState13, 2),
635
+ draftList = _useState14[0],
636
+ setDraftList = _useState14[1];
637
+ var updateDraftList = function updateDraftList(nextList) {
638
+ setDraftList(nextList.map(function (item) {
639
+ return _withSyncedQuotes(item);
640
+ }));
641
+ };
642
+ var handleOk = function handleOk() {
643
+ var _modalInstance4, _modalInstance4$close;
644
+ setCaseList(cloneDeep(draftList));
645
+ (_modalInstance4 = modalInstance) === null || _modalInstance4 === void 0 || (_modalInstance4$close = _modalInstance4.close) === null || _modalInstance4$close === void 0 || _modalInstance4$close.call(_modalInstance4);
646
+ };
647
+ return _jsx(Provider, {
648
+ value: store,
649
+ children: _jsxs("div", {
650
+ className: 'Sqb-FormulaListZoomEditor',
651
+ children: [_jsx("div", {
652
+ className: 'Sqb-FormulaListZoomEditor-body Sqb-FormulaListZoomEditor-body--formulaList',
653
+ children: _jsx(FormulaList, {
654
+ ref: ref,
655
+ value: draftList,
656
+ data: data,
657
+ exitData: exitData,
658
+ onChange: function onChange(atoms) {
659
+ return updateDraftList(atoms);
660
+ },
661
+ customTypes: _customTypes,
662
+ otherTypes: otherTypes,
663
+ isCustom: isCustom,
664
+ showPreview: showPreview,
665
+ check: check,
666
+ _type: _type,
667
+ enableCopy: false,
668
+ enableZoom: false,
669
+ parentPopupChannel: parentPopupChannel
670
+ })
671
+ }), _jsxs("div", {
672
+ className: 'Sqb-FormulaListZoomEditor-footer',
673
+ children: [_jsx(Button, {
674
+ className: 'sqb-formula-list-zoom-editor-cancel',
675
+ style: ZOOM_FOOTER_CANCEL_STYLE,
676
+ onClick: function onClick() {
677
+ var _modalInstance5, _modalInstance5$close;
678
+ return (_modalInstance5 = modalInstance) === null || _modalInstance5 === void 0 || (_modalInstance5$close = _modalInstance5.close) === null || _modalInstance5$close === void 0 ? void 0 : _modalInstance5$close.call(_modalInstance5);
679
+ },
680
+ children: "\u53D6\u6D88"
681
+ }), _jsx(Button, {
682
+ className: 'sqb-formula-list-zoom-editor-confirm',
683
+ primary: true,
684
+ style: ZOOM_FOOTER_CONFIRM_STYLE,
685
+ onClick: handleOk,
686
+ children: "\u786E\u5B9A"
687
+ })]
688
+ })]
689
+ })
690
+ });
691
+ };
692
+ modalInstance = openChildModal({
693
+ zIndex: childModalZIndex,
694
+ className: 'sqb-formula-list-zoom-modal',
695
+ title: '编辑',
696
+ transparentMask: true,
697
+ modalWidth: 1180,
698
+ modalHeight: 680,
699
+ content: _jsx(FormulaListZoomEditor, {}),
700
+ onClose: function onClose() {}
701
+ });
702
+ };
311
703
  var renderNestedFormulaList = function renderNestedFormulaList(list, onNestedChange) {
704
+ var hasNestedCaseWhen = list.some(function (item) {
705
+ return (item === null || item === void 0 ? void 0 : item.type) === AtomsTypeEnum.CASE_WHEN;
706
+ });
312
707
  return _jsx("div", {
313
- className: 'Sqb-NestedFormulaList',
708
+ className: cx('Sqb-NestedFormulaList', {
709
+ 'Sqb-NestedFormulaList--hasCaseWhen': hasNestedCaseWhen
710
+ }),
314
711
  children: _jsx(FormulaList, {
315
712
  ref: ref,
316
713
  embedded: true,
@@ -326,80 +723,94 @@ var FormulaList = forwardRef(function (props, ref) {
326
723
  showPreview: false,
327
724
  check: check,
328
725
  _type: _type,
726
+ enableZoom: false,
329
727
  parentPopupChannel: parentPopupChannel
330
728
  })
331
729
  });
332
730
  };
333
731
  var renderCaseWhenEditor = function renderCaseWhenEditor(value, index) {
732
+ var caseAtoms = value.caseAtoms || [];
733
+ var whenClauses = value.whenClauses || [];
734
+ var elseAtoms = value.elseAtoms;
735
+ var caseRegionKey = "case-".concat(index, "-case");
736
+ var elseRegionKey = "case-".concat(index, "-else");
334
737
  return _jsx(CaseWhenGroup, {
335
- caseValueContent: renderNestedFormulaList(value.caseValue || [], function (nextList) {
738
+ isNested: embedded,
739
+ useBranchScrollInner: !embedded,
740
+ caseRegionKey: caseRegionKey,
741
+ elseRegionKey: elseRegionKey,
742
+ activeRegionKey: hoveredCaseGroupKey,
743
+ onActivateRegion: setHoveredCaseGroupKey,
744
+ caseAtomsContent: renderNestedFormulaList(caseAtoms, function (nextList) {
336
745
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
337
- caseValue: nextList
746
+ caseAtoms: nextList
338
747
  }));
339
748
  }),
340
- branches: (value.branches || []).map(function (branch, branchIndex) {
749
+ whenClauses: whenClauses.map(function (branch, branchIndex) {
341
750
  return {
342
751
  key: "case-".concat(index, "-branch-").concat(branchIndex),
343
- whenContent: renderNestedFormulaList(branch.when || [], function (nextList) {
344
- var nextBranches = (value.branches || []).slice();
345
- nextBranches[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
346
- when: nextList
752
+ canDelete: whenClauses.length > 1,
753
+ whenContent: renderNestedFormulaList(branch.whenAtoms || [], function (nextList) {
754
+ var nextWhenClauses = whenClauses.slice();
755
+ nextWhenClauses[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
756
+ whenAtoms: nextList
347
757
  });
348
758
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
349
- branches: nextBranches
759
+ whenClauses: nextWhenClauses
350
760
  }));
351
761
  }),
352
- thenContent: renderNestedFormulaList(branch.then || [], function (nextList) {
353
- var nextBranches = (value.branches || []).slice();
354
- nextBranches[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
355
- then: nextList
762
+ thenContent: renderNestedFormulaList(branch.thenAtoms || [], function (nextList) {
763
+ var nextWhenClauses = whenClauses.slice();
764
+ nextWhenClauses[branchIndex] = _objectSpread(_objectSpread({}, branch), {}, {
765
+ thenAtoms: nextList
356
766
  });
357
767
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
358
- branches: nextBranches
768
+ whenClauses: nextWhenClauses
359
769
  }));
360
770
  }),
361
771
  onAddAfter: function onAddAfter(e) {
362
772
  e.stopPropagation();
363
- var nextBranches = (value.branches || []).slice();
364
- nextBranches.splice(branchIndex + 1, 0, {
365
- when: [{
773
+ var nextWhenClauses = whenClauses.slice();
774
+ nextWhenClauses.splice(branchIndex + 1, 0, {
775
+ whenAtoms: [{
366
776
  val: '',
367
777
  type: AtomsTypeEnum.UNKNOWN
368
778
  }],
369
- then: [{
779
+ thenAtoms: [{
370
780
  val: '',
371
781
  type: AtomsTypeEnum.UNKNOWN
372
782
  }]
373
783
  });
374
784
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
375
- branches: nextBranches
785
+ whenClauses: nextWhenClauses
376
786
  }));
377
787
  },
378
788
  onDelete: function onDelete(e) {
379
789
  e.stopPropagation();
380
- var nextBranches = (value.branches || []).filter(function (_, currentIndex) {
790
+ if (whenClauses.length <= 1) return;
791
+ var nextWhenClauses = whenClauses.filter(function (_, currentIndex) {
381
792
  return currentIndex !== branchIndex;
382
793
  });
383
794
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
384
- branches: nextBranches
795
+ whenClauses: nextWhenClauses
385
796
  }));
386
797
  }
387
798
  };
388
799
  }),
389
- elseContent: value.elseValue ? renderNestedFormulaList(value.elseValue || [], function (nextList) {
800
+ elseContent: elseAtoms ? renderNestedFormulaList(elseAtoms || [], function (nextList) {
390
801
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
391
- elseValue: nextList
802
+ elseAtoms: nextList
392
803
  }));
393
804
  }) : undefined,
394
805
  onAddBranch: function onAddBranch(e) {
395
806
  e.stopPropagation();
396
807
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
397
- branches: [].concat(_toConsumableArray(value.branches || []), [{
398
- when: [{
808
+ whenClauses: [].concat(_toConsumableArray(whenClauses), [{
809
+ whenAtoms: [{
399
810
  val: '',
400
811
  type: AtomsTypeEnum.UNKNOWN
401
812
  }],
402
- then: [{
813
+ thenAtoms: [{
403
814
  val: '',
404
815
  type: AtomsTypeEnum.UNKNOWN
405
816
  }]
@@ -409,7 +820,7 @@ var FormulaList = forwardRef(function (props, ref) {
409
820
  onAddElse: function onAddElse(e) {
410
821
  e.stopPropagation();
411
822
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
412
- elseValue: [{
823
+ elseAtoms: [{
413
824
  val: '',
414
825
  type: AtomsTypeEnum.UNKNOWN
415
826
  }]
@@ -418,25 +829,48 @@ var FormulaList = forwardRef(function (props, ref) {
418
829
  onRemoveElse: function onRemoveElse(e) {
419
830
  e.stopPropagation();
420
831
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
421
- elseValue: undefined
832
+ elseAtoms: undefined
422
833
  }));
423
834
  },
835
+ onZoomCase: function onZoomCase(e) {
836
+ return openCaseWhenFormulaModal(e, value, index);
837
+ },
424
838
  onDeleteCase: function onDeleteCase(e) {
425
839
  return handleDel(e, index);
426
840
  }
427
841
  });
428
842
  };
429
843
  var renderAndOrEditor = function renderAndOrEditor(value, index) {
844
+ var createUnknownAtom = function createUnknownAtom() {
845
+ return {
846
+ val: '',
847
+ type: AtomsTypeEnum.UNKNOWN
848
+ };
849
+ };
850
+ var leftAtoms = Array.isArray(value.leftAtoms) ? value.leftAtoms : value.atoms || [createUnknownAtom()];
851
+ var rightAtoms = Array.isArray(value.rightAtoms) ? value.rightAtoms : [createUnknownAtom()];
430
852
  return _jsx(LogicGroup, {
431
853
  operator: value.operator || 'and',
432
854
  onToggleOperator: function onToggleOperator() {
433
855
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
856
+ atoms: undefined,
857
+ leftAtoms: leftAtoms,
858
+ rightAtoms: rightAtoms,
434
859
  operator: value.operator === 'or' ? 'and' : 'or'
435
860
  }));
436
861
  },
437
- content: renderNestedFormulaList(value.list || [], function (nextList) {
862
+ leftContent: renderNestedFormulaList(leftAtoms, function (nextList) {
863
+ updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
864
+ atoms: undefined,
865
+ rightAtoms: rightAtoms,
866
+ leftAtoms: nextList
867
+ }));
868
+ }),
869
+ rightContent: renderNestedFormulaList(rightAtoms, function (nextList) {
438
870
  updateAtomAt(index, _objectSpread(_objectSpread({}, value), {}, {
439
- list: nextList
871
+ atoms: undefined,
872
+ leftAtoms: leftAtoms,
873
+ rightAtoms: nextList
440
874
  }));
441
875
  }),
442
876
  onDelete: function onDelete(e) {
@@ -444,43 +878,43 @@ var FormulaList = forwardRef(function (props, ref) {
444
878
  }
445
879
  });
446
880
  };
447
- var _useState1 = useState(-1),
448
- _useState10 = _slicedToArray(_useState1, 2),
449
- ind = _useState10[0],
450
- setInd = _useState10[1];
881
+ var _useState15 = useState(-1),
882
+ _useState16 = _slicedToArray(_useState15, 2),
883
+ ind = _useState16[0],
884
+ setInd = _useState16[1];
451
885
  var filterCustomType = store.filterCustomType;
452
886
  var _ref = useRef(null);
453
- var _useState11 = useState({
887
+ var _useState17 = useState({
454
888
  isError: false
455
889
  }),
456
- _useState12 = _slicedToArray(_useState11, 2),
457
- errorInfo = _useState12[0],
458
- setErrorInfo = _useState12[1];
459
- var _useState13 = useState(false),
460
- _useState14 = _slicedToArray(_useState13, 2),
461
- isCheck = _useState14[0],
462
- setIsCheck = _useState14[1];
463
- var myInstanceIdRef = useRef(Math.random().toString(36).slice(2));
464
- var _useState15 = useState(null),
465
- _useState16 = _slicedToArray(_useState15, 2),
466
- hoveredCaseGroupKey = _useState16[0],
467
- setHoveredCaseGroupKey = _useState16[1];
468
- var _useState17 = useState(!!window.__sqb_selection_active__),
469
890
  _useState18 = _slicedToArray(_useState17, 2),
470
- globalSelectionActive = _useState18[0],
471
- setGlobalSelectionActive = _useState18[1];
472
- var _useState19 = useState(window.__sqb_selection_owner__ || null),
891
+ errorInfo = _useState18[0],
892
+ setErrorInfo = _useState18[1];
893
+ var _useState19 = useState(false),
473
894
  _useState20 = _slicedToArray(_useState19, 2),
474
- globalSelectionOwner = _useState20[0],
475
- setGlobalSelectionOwner = _useState20[1];
476
- var _useState21 = useState([]),
895
+ isCheck = _useState20[0],
896
+ setIsCheck = _useState20[1];
897
+ var myInstanceIdRef = useRef(Math.random().toString(36).slice(2));
898
+ var _useState21 = useState(null),
477
899
  _useState22 = _slicedToArray(_useState21, 2),
478
- selectedIndices = _useState22[0],
479
- setSelectedIndices = _useState22[1];
480
- var _useState23 = useState(null),
900
+ hoveredCaseGroupKey = _useState22[0],
901
+ setHoveredCaseGroupKey = _useState22[1];
902
+ var _useState23 = useState(!!window.__sqb_selection_active__),
481
903
  _useState24 = _slicedToArray(_useState23, 2),
482
- hoveredCopyIndex = _useState24[0],
483
- setHoveredCopyIndex = _useState24[1];
904
+ globalSelectionActive = _useState24[0],
905
+ setGlobalSelectionActive = _useState24[1];
906
+ var _useState25 = useState(window.__sqb_selection_owner__ || null),
907
+ _useState26 = _slicedToArray(_useState25, 2),
908
+ globalSelectionOwner = _useState26[0],
909
+ setGlobalSelectionOwner = _useState26[1];
910
+ var _useState27 = useState([]),
911
+ _useState28 = _slicedToArray(_useState27, 2),
912
+ selectedIndices = _useState28[0],
913
+ setSelectedIndices = _useState28[1];
914
+ var _useState29 = useState(null),
915
+ _useState30 = _slicedToArray(_useState29, 2),
916
+ hoveredCopyIndex = _useState30[0],
917
+ setHoveredCopyIndex = _useState30[1];
484
918
  var getCaseGroupEnd = function getCaseGroupEnd(list, startIndex) {
485
919
  var depth = 0;
486
920
  for (var index = startIndex; index < list.length; index++) {
@@ -635,6 +1069,9 @@ var FormulaList = forwardRef(function (props, ref) {
635
1069
  }
636
1070
  return true;
637
1071
  };
1072
+ var canShowItemInsertArrows = function canShowItemInsertArrows(item, groupType) {
1073
+ return canShowInsertArrows(item, groupType);
1074
+ };
638
1075
  useEffect(function () {
639
1076
  var _errorInfo = validateExpressionIntegrity(caseList);
640
1077
  setErrorInfo(_errorInfo);
@@ -1183,15 +1620,16 @@ var FormulaList = forwardRef(function (props, ref) {
1183
1620
  };
1184
1621
  }
1185
1622
  if (type === AtomsTypeEnum.FIELD) {
1623
+ var displayName = getFieldDisplayName(v);
1186
1624
  return {
1187
1625
  className: cx({
1188
- notSelected: !(v !== null && v !== void 0 && v.fieldName)
1626
+ notSelected: !displayName
1189
1627
  }),
1190
1628
  onClick: function onClick(e) {
1191
1629
  return handleField(e, index, v);
1192
1630
  },
1193
1631
  node: _jsxs(_Fragment, {
1194
- children: [!(v !== null && v !== void 0 && v.fieldName) && __('customColumn.selectField'), v.fieldName, renderDeleteIcon(v, index, groupType)]
1632
+ children: [!displayName && __('customColumn.selectField'), displayName, renderDeleteIcon(v, index, groupType)]
1195
1633
  })
1196
1634
  };
1197
1635
  }
@@ -1359,32 +1797,41 @@ var FormulaList = forwardRef(function (props, ref) {
1359
1797
  if (groupType === 'logic') {
1360
1798
  return {
1361
1799
  className: cx('gray-name', 'notSelected'),
1362
- style: {
1363
- minWidth: 44,
1364
- justifyContent: 'center'
1365
- },
1800
+ style: _objectSpread(_objectSpread({}, ADD_TRIGGER_STYLE), {}, {
1801
+ minWidth: 44
1802
+ }),
1366
1803
  node: selectOperator({
1367
1804
  triggerElement: function triggerElement() {
1368
- return renderTokenContent(_jsx(AddIcon, {}));
1805
+ return renderTokenContent(_jsx(Tooltip, {
1806
+ title: "\u6DFB\u52A0",
1807
+ children: _jsx(AddIcon, {})
1808
+ }));
1369
1809
  },
1370
1810
  ind: index,
1371
1811
  position: ''
1372
1812
  })
1373
1813
  };
1374
1814
  }
1815
+ var customInputClassName = cx({
1816
+ notSelected: true
1817
+ });
1375
1818
  return {
1376
- className: cx({
1377
- notSelected: true
1378
- }),
1379
- node: selectOperator({
1380
- triggerElement: function triggerElement() {
1381
- return renderTokenContent(_jsxs(_Fragment, {
1382
- children: [__('customColumn.selectCustomInput'), renderDeleteIcon(v, index, groupType)]
1383
- }));
1384
- },
1385
- ind: index,
1386
- position: ''
1387
- })
1819
+ raw: true,
1820
+ node: _jsx(ItemName, _objectSpread(_objectSpread({}, getItemNameProps(v)), {}, {
1821
+ children: selectOperator({
1822
+ triggerElement: function triggerElement() {
1823
+ return _jsx("div", {
1824
+ className: cx('Sqb-TableName', customInputClassName),
1825
+ style: getTokenStyleByClassName(customInputClassName),
1826
+ children: renderTokenContent(_jsxs(_Fragment, {
1827
+ children: [__('customColumn.selectCustomInput'), renderDeleteIcon(v, index, groupType)]
1828
+ }))
1829
+ });
1830
+ },
1831
+ ind: index,
1832
+ position: ''
1833
+ })
1834
+ }))
1388
1835
  };
1389
1836
  };
1390
1837
  var copyDom = function copyDom() {
@@ -1422,6 +1869,8 @@ var FormulaList = forwardRef(function (props, ref) {
1422
1869
  var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
1423
1870
  var itemContent = itemDom(v, i, groupType);
1424
1871
  var isCompositeAtom = v.type === AtomsTypeEnum.CASE_WHEN || v.type === AtomsTypeEnum.AND_OR;
1872
+ var showAfterArrow = canShowItemInsertArrows(v, groupType);
1873
+ var showBeforeArrow = canShowItemInsertArrows(v, groupType);
1425
1874
  return _jsx(React.Fragment, {
1426
1875
  children: _jsxs("div", {
1427
1876
  className: cx('Sqb-Filter-item', _defineProperty({
@@ -1429,6 +1878,8 @@ var FormulaList = forwardRef(function (props, ref) {
1429
1878
  'item-fixed': v.fixed || false,
1430
1879
  'item-selected': isCheck,
1431
1880
  'item-composite': isCompositeAtom,
1881
+ 'has-left-arrow': showBeforeArrow,
1882
+ 'has-right-arrow': showAfterArrow,
1432
1883
  'group-child': groupType !== 'single',
1433
1884
  'group-flow-child': groupType === 'caseWhen',
1434
1885
  'group-logic-child': groupType === 'logic'
@@ -1441,7 +1892,7 @@ var FormulaList = forwardRef(function (props, ref) {
1441
1892
  if (isCheck) return;
1442
1893
  setInd(-1);
1443
1894
  },
1444
- children: [copyDom(i), canShowInsertArrows(v, groupType) && selectOperator({
1895
+ children: [copyDom(i), showBeforeArrow && selectOperator({
1445
1896
  triggerElement: function triggerElement() {
1446
1897
  return _jsx("div", {
1447
1898
  className: 'left-arrow',
@@ -1470,19 +1921,19 @@ var FormulaList = forwardRef(function (props, ref) {
1470
1921
  style: {
1471
1922
  pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
1472
1923
  },
1473
- className: cx({
1474
- openCheck: isCheck
1924
+ className: cx('Sqb-Filter-item-node', {
1925
+ openCheck: isCheck && !isCompositeAtom
1475
1926
  }),
1476
- children: _jsx(ItemName, _objectSpread(_objectSpread({}, getItemNameProps(v)), {}, {
1477
- children: itemContent.raw ? itemContent.node : _jsx("div", _objectSpread(_objectSpread({
1927
+ children: itemContent.raw ? itemContent.node : _jsx(ItemName, _objectSpread(_objectSpread({}, getItemNameProps(v)), {}, {
1928
+ children: _jsx("div", _objectSpread(_objectSpread({
1478
1929
  className: cx('Sqb-TableName', itemContent.className),
1479
1930
  onClick: itemContent.onClick,
1480
- style: itemContent.style
1931
+ style: getTokenStyleByClassName(itemContent.className, itemContent.style)
1481
1932
  }, itemContent.attrs || {}), {}, {
1482
1933
  children: itemContent.node
1483
1934
  }))
1484
1935
  }))
1485
- }), canShowInsertArrows(v, groupType) && selectOperator({
1936
+ }), showAfterArrow && selectOperator({
1486
1937
  triggerElement: function triggerElement(value) {
1487
1938
  return _jsx("div", {
1488
1939
  className: 'right-arrow',
@@ -1510,25 +1961,34 @@ var FormulaList = forwardRef(function (props, ref) {
1510
1961
  };
1511
1962
  var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
1512
1963
  if (!canDeleteItem(item, groupType)) return null;
1513
- return _jsx("span", {
1514
- className: 'item-del',
1515
- style: {
1516
- fontSize: 0
1517
- },
1518
- onClick: function onClick(e) {
1519
- return handleDel(e, index);
1520
- },
1521
- children: _jsx(CloseIcon, {})
1964
+ return _jsx(Tooltip, {
1965
+ title: "\u5220\u9664",
1966
+ children: _jsx("span", {
1967
+ className: 'item-del',
1968
+ style: {
1969
+ fontSize: 0
1970
+ },
1971
+ onClick: function onClick(e) {
1972
+ return handleDel(e, index);
1973
+ },
1974
+ children: _jsx(CloseIcon, {
1975
+ width: TOKEN_DELETE_ICON_SIZE,
1976
+ height: TOKEN_DELETE_ICON_SIZE
1977
+ })
1978
+ })
1522
1979
  });
1523
1980
  };
1524
1981
  var renderCaseRecoverButton = function renderCaseRecoverButton(onClick, className, label) {
1525
- return _jsxs("button", {
1526
- type: 'button',
1527
- className: cx('Sqb-CaseRecover', className),
1528
- onClick: onClick,
1529
- children: [_jsx(FfPlus, {}), _jsx("span", {
1530
- children: label
1531
- })]
1982
+ return _jsx(Tooltip, {
1983
+ title: label,
1984
+ children: _jsxs("button", {
1985
+ type: 'button',
1986
+ className: cx('Sqb-CaseRecover', className),
1987
+ onClick: onClick,
1988
+ children: [_jsx(FfPlus, {}), _jsx("span", {
1989
+ children: label
1990
+ })]
1991
+ })
1532
1992
  });
1533
1993
  };
1534
1994
  var renderGroupInsertArrow = function renderGroupInsertArrow(index, position) {
@@ -1552,57 +2012,81 @@ var FormulaList = forwardRef(function (props, ref) {
1552
2012
  trigger: 'hover'
1553
2013
  });
1554
2014
  };
2015
+ var showFormulaListZoom = !embedded && enableZoom;
2016
+ var showCopyTools = !embedded && isCopy && caseList.length > 0;
2017
+ var renderFormulaListZoomButton = function renderFormulaListZoomButton() {
2018
+ return _jsx(Tooltip, {
2019
+ title: "\u7F16\u8F91",
2020
+ children: _jsx("button", {
2021
+ type: 'button',
2022
+ className: 'Sqb-FormulaList-zoom formula-node-tool',
2023
+ style: FORMULA_LIST_ZOOM_BUTTON_STYLE,
2024
+ onClick: openFormulaListModal,
2025
+ children: _jsx(FullscreenOExpand, {})
2026
+ })
2027
+ });
2028
+ };
1555
2029
  return _jsx(_Fragment, {
1556
2030
  children: _jsxs("div", {
1557
2031
  className: cx('Sqb-NotebookCell', {
1558
2032
  'Sqb-NotebookCell--embedded': embedded
1559
2033
  }),
1560
- children: [!embedded && isCopy && caseList.length > 0 && _jsxs(Space, {
1561
- size: 'small',
1562
- direction: 'vertical',
1563
- className: cx('item-isCheck', {
1564
- isCheck: isCheck
1565
- }),
1566
- children: [_jsx(Button, {
1567
- className: cx('primary-color', {}),
1568
- size: 'small',
1569
- onClick: function onClick() {
1570
- return _setIsCheck(!isCheck);
1571
- },
1572
- primary: true,
1573
- children: isCheck ? __('customColumn.closeCopy') : __('customColumn.openCopy')
1574
- }), _jsx(Button, {
1575
- className: cx('', 'primary-color', {}),
1576
- size: 'small',
1577
- onClick: function onClick() {
1578
- return copyAll();
1579
- },
1580
- primary: true,
1581
- children: __('customColumn.copyAll')
1582
- }), selectedIndices.length > 0 && _jsx(Button, {
1583
- primary: true,
1584
- danger: true,
1585
- size: 'small',
1586
- onClick: function onClick() {
1587
- return delSelect();
1588
- },
1589
- children: __('customColumn.delSelect')
1590
- }), !isCheck && checkedItemsCount > 0 && _jsx(Button, {
1591
- primary: true,
1592
- warning: true,
2034
+ children: [showCopyTools ? _jsxs("div", {
2035
+ className: 'Sqb-FormulaListTopTools',
2036
+ children: [_jsxs(Space, {
1593
2037
  size: 'small',
1594
- onClick: function onClick() {
1595
- return initPaste();
1596
- },
1597
- children: "\u6E05\u9664\u590D\u5236"
1598
- })]
2038
+ direction: 'horizontal',
2039
+ className: cx('item-isCheck', {
2040
+ isCheck: isCheck
2041
+ }),
2042
+ children: [_jsx(Button, {
2043
+ className: cx('primary-color', {}),
2044
+ size: 'small',
2045
+ onClick: function onClick() {
2046
+ return _setIsCheck(!isCheck);
2047
+ },
2048
+ primary: true,
2049
+ children: isCheck ? __('customColumn.closeCopy') : __('customColumn.openCopy')
2050
+ }), _jsx(Button, {
2051
+ className: cx('', 'primary-color', {}),
2052
+ size: 'small',
2053
+ onClick: function onClick() {
2054
+ return copyAll();
2055
+ },
2056
+ primary: true,
2057
+ children: __('customColumn.copyAll')
2058
+ }), selectedIndices.length > 0 && _jsx(Button, {
2059
+ primary: true,
2060
+ danger: true,
2061
+ size: 'small',
2062
+ onClick: function onClick() {
2063
+ return delSelect();
2064
+ },
2065
+ children: __('customColumn.delSelect')
2066
+ }), !isCheck && checkedItemsCount > 0 && _jsx(Button, {
2067
+ primary: true,
2068
+ warning: true,
2069
+ size: 'small',
2070
+ onClick: function onClick() {
2071
+ return initPaste();
2072
+ },
2073
+ children: "\u6E05\u9664\u590D\u5236"
2074
+ })]
2075
+ }), showFormulaListZoom && renderFormulaListZoomButton()]
2076
+ }) : showFormulaListZoom && _jsx("div", {
2077
+ className: 'Sqb-FormulaListFloatingTools',
2078
+ children: renderFormulaListZoomButton()
1599
2079
  }), caseList.map(function (item, itemIndex) {
1600
2080
  return renderItemShell(item, itemIndex, 'single');
1601
2081
  }), Array.from(caseList).length < 1 && selectOperator({
1602
2082
  triggerElement: function triggerElement() {
1603
- return _jsx("div", {
1604
- className: cx("Sqb-TableName gray-name"),
1605
- children: _jsx(AddIcon, {})
2083
+ return _jsx(Tooltip, {
2084
+ title: "\u6DFB\u52A0",
2085
+ children: _jsx("div", {
2086
+ className: cx("Sqb-TableName gray-name"),
2087
+ style: ADD_TRIGGER_STYLE,
2088
+ children: _jsx(AddIcon, {})
2089
+ })
1606
2090
  });
1607
2091
  },
1608
2092
  ind: -1,