@gingkoo/pandora-metabase 1.0.152 → 1.0.154

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/custom-editor/index.d.ts +1 -0
  2. package/lib/cjs/components/dialog/custom-editor/index.js +10 -3
  3. package/lib/cjs/components/dialog/formula/index.d.ts +1 -0
  4. package/lib/cjs/components/dialog/formula/index.js +11 -3
  5. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  6. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  7. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  8. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +4 -2
  9. package/lib/cjs/components/dialog/formula-list/index.js +22 -11
  10. package/lib/cjs/components/dialog/select-column/index.d.ts +2 -1
  11. package/lib/cjs/components/dialog/select-column/index.js +10 -1
  12. package/lib/cjs/components/dialog/select-column-multiple/index.d.ts +2 -1
  13. package/lib/cjs/components/dialog/select-column-multiple/index.js +6 -3
  14. package/lib/cjs/components/dialog/select-summarize/index.d.ts +2 -1
  15. package/lib/cjs/components/dialog/select-summarize/index.js +5 -2
  16. package/lib/cjs/components/metabase/index.js +30 -2
  17. package/lib/cjs/components/modules/components/header.js +1 -1
  18. package/lib/cjs/components/modules/components/item-name.js +4 -1
  19. package/lib/cjs/components/modules/components/item-wrapper.js +1 -1
  20. package/lib/cjs/components/modules/components/meta-icon.js +4 -2
  21. package/lib/cjs/components/modules/custom-column.js +4 -2
  22. package/lib/cjs/components/modules/join-data.js +41 -41
  23. package/lib/cjs/components/modules/permission-table.js +1 -0
  24. package/lib/cjs/components/modules/row-limit.js +1 -0
  25. package/lib/cjs/components/modules/sort.js +2 -2
  26. package/lib/cjs/components/modules/summarize/group-by.js +8 -5
  27. package/lib/cjs/components/modules/summarize/select-index.js +5 -3
  28. package/lib/cjs/components/modules/table-data.js +7 -4
  29. package/lib/cjs/components/modules/union.js +1 -1
  30. package/lib/cjs/hooks/use-state.js +66 -52
  31. package/lib/cjs/index.js +7 -2
  32. package/lib/cjs/types.d.ts +1 -0
  33. package/lib/es/components/dialog/custom-editor/index.d.ts +1 -0
  34. package/lib/es/components/dialog/custom-editor/index.js +10 -3
  35. package/lib/es/components/dialog/formula/index.d.ts +1 -0
  36. package/lib/es/components/dialog/formula/index.js +11 -3
  37. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  38. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  39. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  40. package/lib/es/components/dialog/formula-list/LogicGroup.js +4 -2
  41. package/lib/es/components/dialog/formula-list/index.js +22 -11
  42. package/lib/es/components/dialog/select-column/index.d.ts +2 -1
  43. package/lib/es/components/dialog/select-column/index.js +10 -1
  44. package/lib/es/components/dialog/select-column-multiple/index.d.ts +2 -1
  45. package/lib/es/components/dialog/select-column-multiple/index.js +6 -3
  46. package/lib/es/components/dialog/select-summarize/index.d.ts +2 -1
  47. package/lib/es/components/dialog/select-summarize/index.js +5 -2
  48. package/lib/es/components/metabase/index.js +30 -2
  49. package/lib/es/components/modules/components/header.js +1 -1
  50. package/lib/es/components/modules/components/item-name.js +4 -1
  51. package/lib/es/components/modules/components/item-wrapper.js +1 -1
  52. package/lib/es/components/modules/components/meta-icon.js +4 -2
  53. package/lib/es/components/modules/custom-column.js +4 -2
  54. package/lib/es/components/modules/join-data.js +41 -41
  55. package/lib/es/components/modules/permission-table.js +1 -0
  56. package/lib/es/components/modules/row-limit.js +1 -0
  57. package/lib/es/components/modules/sort.js +2 -2
  58. package/lib/es/components/modules/summarize/group-by.js +8 -5
  59. package/lib/es/components/modules/summarize/select-index.js +5 -3
  60. package/lib/es/components/modules/table-data.js +7 -4
  61. package/lib/es/components/modules/union.js +1 -1
  62. package/lib/es/hooks/use-state.js +66 -52
  63. package/lib/es/index.js +7 -2
  64. package/lib/es/types.d.ts +1 -0
  65. package/package.json +1 -1
@@ -7,6 +7,7 @@ interface PropsType {
7
7
  exitData: any;
8
8
  onOk: Function;
9
9
  onCancel: Function;
10
+ readonly?: boolean;
10
11
  }
11
12
  declare const CaseEditor: (props: PropsType) => React.JSX.Element;
12
13
  export default CaseEditor;
@@ -30,7 +30,9 @@ var CaseEditor = function CaseEditor(props) {
30
30
  data = props.data,
31
31
  exitData = props.exitData,
32
32
  onOk = props.onOk,
33
- onCancel = props.onCancel;
33
+ onCancel = props.onCancel,
34
+ _props$readonly = props.readonly,
35
+ readonly = _props$readonly === void 0 ? false : _props$readonly;
34
36
  var store = (0, _useProvider.useStore)();
35
37
  var _useState = (0, _react.useState)(value.formulaList || []),
36
38
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -48,6 +50,7 @@ var CaseEditor = function CaseEditor(props) {
48
50
  onCancel === null || onCancel === void 0 || onCancel();
49
51
  };
50
52
  var _onOk = function _onOk() {
53
+ if (readonly) return;
51
54
  if (!(0, _utils2.isValidSQLAlias)(name)) {
52
55
  _pandora.Toast.warning((0, _locale.__)('SqlQueryBuilder.nameForRules'));
53
56
  return false;
@@ -81,6 +84,7 @@ var CaseEditor = function CaseEditor(props) {
81
84
  placeholder: (0, _locale.__)('customColumn.somethingAwesomeToDocument'),
82
85
  size: 'large',
83
86
  onChange: function onChange(val) {
87
+ if (readonly) return;
84
88
  setName(val);
85
89
  }
86
90
  })
@@ -92,7 +96,10 @@ var CaseEditor = function CaseEditor(props) {
92
96
  data: data,
93
97
  exitData: exitData,
94
98
  ref: ref,
95
- onChange: setCaseList,
99
+ onChange: function onChange(nextList) {
100
+ if (readonly) return;
101
+ setCaseList(nextList);
102
+ },
96
103
  _type: _types.FormulaTypeEnum.CUSTOM
97
104
  })]
98
105
  })
@@ -109,7 +116,7 @@ var CaseEditor = function CaseEditor(props) {
109
116
  return _onClose();
110
117
  },
111
118
  children: (0, _locale.__)('customColumn.cancel')
112
- }), (0, _jsxRuntime.jsx)("button", {
119
+ }), !readonly && (0, _jsxRuntime.jsx)("button", {
113
120
  className: (0, _classnames["default"])("btn ml-4", {
114
121
  usable: usable
115
122
  }),
@@ -7,6 +7,7 @@ interface PropsType {
7
7
  onOk: Function;
8
8
  onCancel: Function;
9
9
  className?: string;
10
+ readonly?: boolean;
10
11
  }
11
12
  declare const CaseEditor: React.ForwardRefExoticComponent<PropsType & React.RefAttributes<unknown>>;
12
13
  export default CaseEditor;
@@ -39,7 +39,9 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
39
39
  var value = props.value,
40
40
  data = props.data,
41
41
  onOk = props.onOk,
42
- onCancel = props.onCancel;
42
+ onCancel = props.onCancel,
43
+ _props$readonly = props.readonly,
44
+ readonly = _props$readonly === void 0 ? false : _props$readonly;
43
45
  var _useState = (0, _react.useState)(function () {
44
46
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, value), {}, {
45
47
  id: value.id || value.name
@@ -94,6 +96,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
94
96
  onCancel === null || onCancel === void 0 || onCancel();
95
97
  };
96
98
  var _onOk = function _onOk() {
99
+ if (readonly) return;
97
100
  typeof onOk === 'function' && (onOk === null || onOk === void 0 ? void 0 : onOk((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
98
101
  arity: effectiveArity,
99
102
  id: currentFormulaKey,
@@ -104,6 +107,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
104
107
  var handleFunName = function handleFunName(id) {
105
108
  var _formulaList$id, _formulaList$id2, _formulaList$id3;
106
109
  var isId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
110
+ if (readonly) return;
107
111
  setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
108
112
  args: (0, _utils2.getTemArgs)(formulaList === null || formulaList === void 0 ? void 0 : formulaList[id].args, formulaList === null || formulaList === void 0 || (_formulaList$id = formulaList[id]) === null || _formulaList$id === void 0 ? void 0 : _formulaList$id.arity),
109
113
  arity: formulaList === null || formulaList === void 0 || (_formulaList$id2 = formulaList[id]) === null || _formulaList$id2 === void 0 ? void 0 : _formulaList$id2.arity,
@@ -112,6 +116,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
112
116
  }));
113
117
  };
114
118
  var addParams = function addParams(index) {
119
+ if (readonly) return;
115
120
  var _args = (0, _cloneDeep["default"])(fun.args);
116
121
  var tem = (0, _utils2.getTemArgs)(currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.args)[index + 1] || {
117
122
  type: _types.AtomsTypeEnum.COLLECTION,
@@ -124,6 +129,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
124
129
  }));
125
130
  };
126
131
  var delParams = function delParams(index) {
132
+ if (readonly) return;
127
133
  var _args = (0, _cloneDeep["default"])(fun.args);
128
134
  _args.splice(index, 1);
129
135
  setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
@@ -174,6 +180,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
174
180
  });
175
181
  },
176
182
  onChange: function onChange(val) {
183
+ if (readonly) return;
177
184
  handleFunName(val);
178
185
  },
179
186
  children: (_store$formulaTemplat = store.formulaTemplates) === null || _store$formulaTemplat === void 0 ? void 0 : _store$formulaTemplat.map(function (options, index) {
@@ -223,6 +230,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
223
230
  ref: _ref,
224
231
  _type: _types.FormulaTypeEnum.FORMULA,
225
232
  onChange: function onChange(data, _quotes) {
233
+ if (readonly) return;
226
234
  var _args = (0, _cloneDeep["default"])(fun.args);
227
235
  _args[i].list = data;
228
236
  setFun((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
@@ -231,7 +239,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
231
239
  }));
232
240
  }
233
241
  })]
234
- }), (0, _jsxRuntime.jsxs)("div", {
242
+ }), !readonly && (0, _jsxRuntime.jsxs)("div", {
235
243
  className: 'Sqb-item-opr',
236
244
  children: [(0, _jsxRuntime.jsx)(_pandora.Button, {
237
245
  primary: true,
@@ -273,7 +281,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
273
281
  return _onClose();
274
282
  },
275
283
  children: (0, _locale.__)('customColumn.cancel')
276
- }), (0, _jsxRuntime.jsx)("button", {
284
+ }), !readonly && (0, _jsxRuntime.jsx)("button", {
277
285
  className: (0, _classnames["default"])("btn ml-4", {
278
286
  usable: usable
279
287
  }),
@@ -17,6 +17,7 @@ type Props = {
17
17
  onZoomCase?: (e: any) => void;
18
18
  onDeleteCase?: (e: any) => void;
19
19
  showTools?: boolean;
20
+ readonly?: boolean;
20
21
  isNested?: boolean;
21
22
  useBranchScrollInner?: boolean;
22
23
  caseRegionKey?: string;
@@ -24,5 +25,5 @@ type Props = {
24
25
  activeRegionKey?: string | null;
25
26
  onActivateRegion?: (key: string) => void;
26
27
  };
27
- declare const CaseWhenGroup: ({ caseAtomsContent, whenClauses, elseContent, onAddBranch, onAddElse, onRemoveElse, onZoomCase, onDeleteCase, showTools, isNested, useBranchScrollInner, caseRegionKey, elseRegionKey, activeRegionKey, onActivateRegion, }: Props) => React.JSX.Element;
28
+ declare const CaseWhenGroup: ({ caseAtomsContent, whenClauses, elseContent, onAddBranch, onAddElse, onRemoveElse, onZoomCase, onDeleteCase, showTools, readonly, isNested, useBranchScrollInner, caseRegionKey, elseRegionKey, activeRegionKey, onActivateRegion, }: Props) => React.JSX.Element;
28
29
  export default CaseWhenGroup;
@@ -76,6 +76,8 @@ var CaseWhenGroup = function CaseWhenGroup(_ref) {
76
76
  onDeleteCase = _ref.onDeleteCase,
77
77
  _ref$showTools = _ref.showTools,
78
78
  showTools = _ref$showTools === void 0 ? true : _ref$showTools,
79
+ _ref$readonly = _ref.readonly,
80
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
79
81
  _ref$isNested = _ref.isNested,
80
82
  isNested = _ref$isNested === void 0 ? false : _ref$isNested,
81
83
  _ref$useBranchScrollI = _ref.useBranchScrollInner,
@@ -112,7 +114,7 @@ var CaseWhenGroup = function CaseWhenGroup(_ref) {
112
114
  className: (0, _classnames["default"])('Sqb-FormulaGroup', 'flow-group', 'formula-node-group', 'Sqb-CaseWhenGroup', {
113
115
  'Sqb-CaseWhenGroup--nested': isNested
114
116
  }),
115
- children: [showTools && (0, _jsxRuntime.jsxs)("div", {
117
+ children: [showTools && !readonly && (0, _jsxRuntime.jsxs)("div", {
116
118
  className: 'Sqb-CaseWhenTools',
117
119
  children: [onZoomCase && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
118
120
  title: "\u7F16\u8F91 caseWhen",
@@ -184,7 +186,7 @@ var CaseWhenGroup = function CaseWhenGroup(_ref) {
184
186
  })]
185
187
  })]
186
188
  }))
187
- }), (0, _jsxRuntime.jsxs)("div", {
189
+ }), !readonly && (0, _jsxRuntime.jsxs)("div", {
188
190
  className: 'Sqb-CaseRow-actions when-row-actions',
189
191
  children: [(0, _jsxRuntime.jsx)(_pandora.Tooltip, {
190
192
  title: "\u65B0\u589E when",
@@ -213,7 +215,7 @@ var CaseWhenGroup = function CaseWhenGroup(_ref) {
213
215
  })]
214
216
  })]
215
217
  }, branch.key);
216
- }), whenClauses.length < 1 && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
218
+ }), !readonly && whenClauses.length < 1 && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
217
219
  title: "\u65B0\u589E when",
218
220
  children: (0, _jsxRuntime.jsxs)("button", {
219
221
  type: 'button',
@@ -244,7 +246,7 @@ var CaseWhenGroup = function CaseWhenGroup(_ref) {
244
246
  children: elseContent
245
247
  })]
246
248
  }))
247
- }), (0, _jsxRuntime.jsx)("div", {
249
+ }), !readonly && (0, _jsxRuntime.jsx)("div", {
248
250
  className: 'Sqb-CaseRow-actions when-row-actions',
249
251
  children: (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
250
252
  title: "\u5220\u9664 else",
@@ -260,7 +262,7 @@ var CaseWhenGroup = function CaseWhenGroup(_ref) {
260
262
  })
261
263
  })
262
264
  })]
263
- }), !elseContent && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
265
+ }), !readonly && !elseContent && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
264
266
  title: "\u65B0\u589E else",
265
267
  children: (0, _jsxRuntime.jsxs)("button", {
266
268
  type: 'button',
@@ -8,6 +8,7 @@ type Props = {
8
8
  onAddItem: () => void;
9
9
  onDeleteItem: (operatorIndex: number, side: 'left' | 'right') => void;
10
10
  onDelete: (e: any) => void;
11
+ readonly?: boolean;
11
12
  };
12
- declare const LogicGroup: ({ items, onChangeOperator, onAddItem, onDeleteItem, onDelete, }: Props) => React.JSX.Element;
13
+ declare const LogicGroup: ({ items, onChangeOperator, onAddItem, onDeleteItem, onDelete, readonly, }: Props) => React.JSX.Element;
13
14
  export default LogicGroup;
@@ -26,7 +26,9 @@ var LogicGroup = function LogicGroup(_ref) {
26
26
  onChangeOperator = _ref.onChangeOperator,
27
27
  onAddItem = _ref.onAddItem,
28
28
  onDeleteItem = _ref.onDeleteItem,
29
- onDelete = _ref.onDelete;
29
+ onDelete = _ref.onDelete,
30
+ _ref$readonly = _ref.readonly,
31
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly;
30
32
  var canDeleteItem = items.length > 2;
31
33
  var handleOperatorMenuChange = function handleOperatorMenuChange(operatorIndex, action) {
32
34
  if (action === 'add') {
@@ -83,7 +85,7 @@ var LogicGroup = function LogicGroup(_ref) {
83
85
  }), (0, _jsxRuntime.jsx)("span", {
84
86
  className: 'Sqb-CaseKeyword',
85
87
  children: ")"
86
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
88
+ }), !readonly && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
87
89
  title: "\u5220\u9664 and/or",
88
90
  children: (0, _jsxRuntime.jsx)("button", {
89
91
  type: 'button',
@@ -165,6 +165,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
165
165
  };
166
166
  }, []);
167
167
  var store = (0, _useProvider.useStore)();
168
+ var snapshotMode = Boolean(store.snapshotMode);
168
169
  var _props$value = props.value,
169
170
  value = _props$value === void 0 ? [] : _props$value,
170
171
  data = props.data,
@@ -966,6 +967,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
966
967
  var caseRegionKey = "case-".concat(index, "-case");
967
968
  var elseRegionKey = "case-".concat(index, "-else");
968
969
  return (0, _jsxRuntime.jsx)(_CaseWhenGroup["default"], {
970
+ readonly: snapshotMode,
969
971
  isNested: embedded,
970
972
  useBranchScrollInner: !embedded,
971
973
  caseRegionKey: caseRegionKey,
@@ -1077,6 +1079,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1077
1079
  updateAtomAt(index, buildAndOrItem(value, nextItems));
1078
1080
  };
1079
1081
  return (0, _jsxRuntime.jsx)(_LogicGroup["default"], {
1082
+ readonly: snapshotMode,
1080
1083
  items: items.map(function (item, itemIndex) {
1081
1084
  return {
1082
1085
  operator: item.operator,
@@ -1429,6 +1432,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1429
1432
  multiple: false,
1430
1433
  value: [val],
1431
1434
  theme: _enum.ColumnsPopupThemeEnum.skyBlue,
1435
+ readonly: snapshotMode,
1432
1436
  onSelect: function onSelect(fields) {
1433
1437
  var _caseList = caseList.slice();
1434
1438
  _caseList[i] = fields[0];
@@ -1829,6 +1833,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1829
1833
  children: (0, _jsxRuntime.jsx)(_formula["default"], {
1830
1834
  data: data,
1831
1835
  value: _value,
1836
+ readonly: snapshotMode,
1832
1837
  onCancel: function onCancel() {
1833
1838
  o.close();
1834
1839
  },
@@ -2097,6 +2102,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2097
2102
  var copyDom = function copyDom() {
2098
2103
  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
2099
2104
  var positioned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2105
+ if (snapshotMode) return null;
2100
2106
  if (embedded) return null;
2101
2107
  if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
2102
2108
  return (0, _jsxRuntime.jsx)("div", {
@@ -2129,8 +2135,9 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2129
2135
  var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
2130
2136
  var itemContent = itemDom(v, i, groupType);
2131
2137
  var isCompositeAtom = v.type === _types.AtomsTypeEnum.CASE_WHEN || v.type === _types.AtomsTypeEnum.AND_OR;
2132
- var showAfterArrow = canShowItemInsertArrows(v, groupType);
2133
- var showBeforeArrow = canShowItemInsertArrows(v, groupType);
2138
+ var showAfterArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2139
+ var showBeforeArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2140
+ var canOpenInSnapshot = v.type === _types.AtomsTypeEnum.FORMULA || v.type === _types.AtomsTypeEnum.FIELD || v.type === _types.AtomsTypeEnum.SUB_QUERY || v.type === _types.AtomsTypeEnum.EXISTS || v.type === _types.AtomsTypeEnum.NOT_EXISTS;
2134
2141
  return (0, _jsxRuntime.jsx)(_react["default"].Fragment, {
2135
2142
  children: (0, _jsxRuntime.jsxs)("div", {
2136
2143
  className: (0, _classnames["default"])('Sqb-Filter-item', (0, _defineProperty2["default"])({
@@ -2169,7 +2176,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2169
2176
  ind: i,
2170
2177
  position: 'before',
2171
2178
  trigger: 'hover'
2172
- }), !embedded && showCheckbox && v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
2179
+ }), !snapshotMode && !embedded && showCheckbox && v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
2173
2180
  className: 'item-check',
2174
2181
  checked: selectedIndices.includes(i),
2175
2182
  disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
@@ -2179,7 +2186,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2179
2186
  }
2180
2187
  }), (0, _jsxRuntime.jsx)("div", {
2181
2188
  style: {
2182
- pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2189
+ pointerEvents: snapshotMode && !canOpenInSnapshot || isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2183
2190
  },
2184
2191
  className: (0, _classnames["default"])('Sqb-Filter-item-node', {
2185
2192
  openCheck: isCheck && !isCompositeAtom
@@ -2187,8 +2194,11 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2187
2194
  children: itemContent.raw ? itemContent.node : (0, _jsxRuntime.jsx)(_itemName["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, getItemNameProps(v)), {}, {
2188
2195
  children: (0, _jsxRuntime.jsx)(_rightClickValue["default"], {
2189
2196
  value: v,
2190
- children: (0, _jsxRuntime.jsx)("div", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
2191
- className: (0, _classnames["default"])('Sqb-TableName', itemContent.className),
2197
+ children: (0, _jsxRuntime.jsx)("div", (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({
2198
+ className: (0, _classnames["default"])('Sqb-TableName', itemContent.className)
2199
+ }, snapshotMode && canOpenInSnapshot ? {
2200
+ 'data-sqb-snapshot-allow': 'true'
2201
+ } : {}), {}, {
2192
2202
  onClick: itemContent.onClick,
2193
2203
  style: getTokenStyleByClassName(itemContent.className, itemContent.style)
2194
2204
  }, itemContent.attrs || {}), {}, {
@@ -2223,6 +2233,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2223
2233
  });
2224
2234
  };
2225
2235
  var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
2236
+ if (snapshotMode) return null;
2226
2237
  if (!canDeleteItem(item, groupType)) return null;
2227
2238
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2228
2239
  title: "\u5220\u9664",
@@ -2275,8 +2286,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2275
2286
  trigger: 'hover'
2276
2287
  });
2277
2288
  };
2278
- var showFormulaListZoom = !embedded && enableZoom;
2279
- var showCopyTools = !embedded && isCopy && caseList.length > 0;
2289
+ var showFormulaListZoom = !snapshotMode && !embedded && enableZoom;
2290
+ var showCopyTools = !snapshotMode && !embedded && isCopy && caseList.length > 0;
2280
2291
  var renderFormulaListZoomButton = function renderFormulaListZoomButton() {
2281
2292
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2282
2293
  title: "\u7F16\u8F91",
@@ -2341,7 +2352,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2341
2352
  children: renderFormulaListZoomButton()
2342
2353
  }), caseList.map(function (item, itemIndex) {
2343
2354
  return renderItemShell(item, itemIndex, 'single');
2344
- }), Array.from(caseList).length < 1 && selectOperator({
2355
+ }), !snapshotMode && Array.from(caseList).length < 1 && selectOperator({
2345
2356
  triggerElement: function triggerElement() {
2346
2357
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2347
2358
  title: "\u6DFB\u52A0",
@@ -2355,7 +2366,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2355
2366
  ind: -1,
2356
2367
  position: 'add',
2357
2368
  trigger: 'click'
2358
- }), !embedded && copyDom(-1, false), !embedded && showPreview && (0, _jsxRuntime.jsx)("div", {
2369
+ }), !embedded && !snapshotMode && copyDom(-1, false), !snapshotMode && !embedded && showPreview && (0, _jsxRuntime.jsx)("div", {
2359
2370
  className: (0, _classnames["default"])("mb-2 font-bold uppercase tracking-wider preview-box"),
2360
2371
  style: {
2361
2372
  fontSize: 12,
@@ -2385,7 +2396,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2385
2396
  onClick: showFormulaDiff,
2386
2397
  children: "\u5BF9\u6BD4\u7ED3\u679C"
2387
2398
  })]
2388
- }), (0, _jsxRuntime.jsx)("div", {
2399
+ }), !snapshotMode && (0, _jsxRuntime.jsx)("div", {
2389
2400
  className: 'errorMsg mt-2',
2390
2401
  children: errorInfo.isError && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
2391
2402
  children: ["\u63D0\u793A\uFF1A", (0, _jsxRuntime.jsx)("span", {
@@ -6,7 +6,8 @@ interface PropsType {
6
6
  table?: Partial<MetaData_TableType>;
7
7
  metaIndex?: number;
8
8
  groupIndex: number;
9
+ readonly?: boolean;
9
10
  onChange: (record: MetaData_ColumnsType[], newMetaList?: any[]) => void;
10
11
  }
11
- declare const SelectColumn: ({ data, table, metaIndex, groupIndex, onChange }: PropsType) => React.JSX.Element;
12
+ declare const SelectColumn: ({ data, table, metaIndex, groupIndex, readonly, onChange, }: PropsType) => React.JSX.Element;
12
13
  export default SelectColumn;
@@ -28,6 +28,8 @@ var SelectColumn = function SelectColumn(_ref) {
28
28
  table = _ref.table,
29
29
  metaIndex = _ref.metaIndex,
30
30
  groupIndex = _ref.groupIndex,
31
+ _ref$readonly = _ref.readonly,
32
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
31
33
  onChange = _ref.onChange;
32
34
  var _useState = (0, _react.useState)([]),
33
35
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -94,6 +96,7 @@ var SelectColumn = function SelectColumn(_ref) {
94
96
  }, [isAllSelect]);
95
97
  function onSelect(columns, newMetaList) {
96
98
  var useColumnsDirectly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
99
+ if (readonly) return;
97
100
  var originalData = (0, _cloneDeep["default"])(originList);
98
101
  var mergedColumns = useColumnsDirectly ? (0, _cloneDeep["default"])(columns) : originalData.map(function (item) {
99
102
  var match = columns.find(function (col) {
@@ -106,6 +109,7 @@ var SelectColumn = function SelectColumn(_ref) {
106
109
  typeof onChange === 'function' && onChange(mergedColumns, newMetaList);
107
110
  }
108
111
  var onChangeFieldAlias = function onChangeFieldAlias(val, i) {
112
+ if (readonly) return;
109
113
  var fieldAlias = val || '';
110
114
  var currentColumn = columns[i];
111
115
  _pandora.Modal.confirm({
@@ -183,11 +187,15 @@ var SelectColumn = function SelectColumn(_ref) {
183
187
  return (0, _jsxRuntime.jsx)("div", {
184
188
  className: "Sqb-SelectColumn--box",
185
189
  children: (0, _jsxRuntime.jsxs)("div", {
190
+ style: readonly ? {
191
+ cursor: 'default'
192
+ } : undefined,
186
193
  children: [(0, _jsxRuntime.jsxs)("div", {
187
194
  className: 'Sqb-SelectColumn--header pt-2',
188
195
  children: [(0, _jsxRuntime.jsx)("div", {
189
196
  className: (0, _classnames["default"])("SelectColumn-border mb-2 pb-2 px-2 flex items-center", {}),
190
197
  onClick: function onClick() {
198
+ if (readonly) return;
191
199
  var newColumns = columns.map(function (v) {
192
200
  return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, v), {}, {
193
201
  select: !isAllSelect
@@ -215,6 +223,7 @@ var SelectColumn = function SelectColumn(_ref) {
215
223
  return (0, _jsxRuntime.jsxs)("div", {
216
224
  className: 'pb-2 px-2 flex items-center',
217
225
  onClick: function onClick() {
226
+ if (readonly) return;
218
227
  var newColumns = (0, _cloneDeep["default"])(columns);
219
228
  newColumns[i].select = !v.select;
220
229
  onSelect(newColumns);
@@ -224,7 +233,7 @@ var SelectColumn = function SelectColumn(_ref) {
224
233
  children: (0, _jsxRuntime.jsx)(_icons.SelectIcon, {})
225
234
  }) : (0, _jsxRuntime.jsx)("div", {
226
235
  className: 'no-select mr-2'
227
- }), v.name, v.name_zh ? " \uFF08".concat(v.name_zh, "\uFF09") : '', v.fieldAlias ? " as ".concat(v.fieldAlias) : '', store.fieldEnableAlias && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
236
+ }), v.name, v.name_zh ? " \uFF08".concat(v.name_zh, "\uFF09") : '', v.fieldAlias ? " as ".concat(v.fieldAlias) : '', store.fieldEnableAlias && !readonly && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
228
237
  title: (0, _locale.__)('SqlQueryBuilder.alias'),
229
238
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
230
239
  className: ':Sqb-TableName-as',
@@ -42,6 +42,7 @@ interface PropsType {
42
42
  showNextBtn?: boolean;
43
43
  nextBtnText?: string;
44
44
  onNextStep?: () => void;
45
+ readonly?: boolean;
45
46
  }
46
- declare const SelectJoinColumn: ({ data, value: _value, theme, onSelect, isGroup, onGroup, didUpdate, multiple, showNextBtn, nextBtnText, onNextStep, }: PropsType) => React.JSX.Element;
47
+ declare const SelectJoinColumn: ({ data, value: _value, theme, onSelect, isGroup, onGroup, didUpdate, multiple, showNextBtn, nextBtnText, onNextStep, readonly, }: PropsType) => React.JSX.Element;
47
48
  export default SelectJoinColumn;
@@ -55,7 +55,9 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
55
55
  showNextBtn = _ref$showNextBtn === void 0 ? false : _ref$showNextBtn,
56
56
  _ref$nextBtnText = _ref.nextBtnText,
57
57
  nextBtnText = _ref$nextBtnText === void 0 ? (0, _locale.__)('metabase.nextBtn') : _ref$nextBtnText,
58
- onNextStep = _ref.onNextStep;
58
+ onNextStep = _ref.onNextStep,
59
+ _ref$readonly = _ref.readonly,
60
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly;
59
61
  var store = (0, _useProvider.useStore)();
60
62
  var selectedTableUuid = (_value === null || _value === void 0 || (_value$ = _value[0]) === null || _value$ === void 0 ? void 0 : _value$.tableId) === _helper.SummarizeAlias ? '' : (_value === null || _value === void 0 || (_value$2 = _value[0]) === null || _value$2 === void 0 ? void 0 : _value$2.tableUuid) || '';
61
63
  var _useState = (0, _react.useState)(_value),
@@ -268,11 +270,12 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
268
270
  return matchedColumn ? syncSelectedFieldByColumn(field, matchedColumn, tableItem) : field;
269
271
  });
270
272
  setValue(syncedValue);
271
- if (!(0, _isEqual["default"])(syncedValue, _value || [])) {
273
+ if (!readonly && !(0, _isEqual["default"])(syncedValue, _value || [])) {
272
274
  onSelect === null || onSelect === void 0 || onSelect(syncedValue, getQuotes(syncedValue));
273
275
  }
274
276
  }, [data, _value]);
275
277
  var changeValue = function changeValue(tableUuid, val) {
278
+ if (readonly) return;
276
279
  if (!multiple) {
277
280
  var _data = val ? [val] : [];
278
281
  setValue(_data);
@@ -518,7 +521,7 @@ var SelectJoinColumn = function SelectJoinColumn(_ref) {
518
521
  }, (tableUuid || tableAlias) + '' + i);
519
522
  })]
520
523
  })
521
- }), showNextBtn && multiple && (0, _jsxRuntime.jsx)(_pandora.Button, {
524
+ }), !readonly && showNextBtn && multiple && (0, _jsxRuntime.jsx)(_pandora.Button, {
522
525
  block: true,
523
526
  disabled: (value === null || value === void 0 ? void 0 : value.length) < 1,
524
527
  primary: true,
@@ -17,6 +17,7 @@ interface PropsType {
17
17
  onChange: (reocrd: ValueType) => void;
18
18
  didUpdate?: Function;
19
19
  ignoreGroupByType?: boolean;
20
+ readonly?: boolean;
20
21
  }
21
- declare const SelectSummarize: ({ data, value, onChange, didUpdate, ignoreGroupByType }: PropsType) => React.JSX.Element;
22
+ declare const SelectSummarize: ({ data, value, onChange, didUpdate, ignoreGroupByType, readonly, }: PropsType) => React.JSX.Element;
22
23
  export default SelectSummarize;
@@ -84,7 +84,8 @@ var SelectSummarize = function SelectSummarize(_ref) {
84
84
  value = _ref.value,
85
85
  onChange = _ref.onChange,
86
86
  didUpdate = _ref.didUpdate,
87
- ignoreGroupByType = _ref.ignoreGroupByType;
87
+ ignoreGroupByType = _ref.ignoreGroupByType,
88
+ readonly = _ref.readonly;
88
89
  var _useState = (0, _react.useState)(value.condition),
89
90
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
90
91
  condition = _useState2[0],
@@ -120,6 +121,7 @@ var SelectSummarize = function SelectSummarize(_ref) {
120
121
  atoms = _useState4[0],
121
122
  setAtoms = _useState4[1];
122
123
  function goPrevPage() {
124
+ if (readonly) return;
123
125
  setCondition('');
124
126
  }
125
127
  function getFormulaSummary() {
@@ -234,7 +236,7 @@ var SelectSummarize = function SelectSummarize(_ref) {
234
236
  })
235
237
  })
236
238
  })
237
- }), (0, _jsxRuntime.jsx)("div", {
239
+ }), !readonly && (0, _jsxRuntime.jsx)("div", {
238
240
  className: 'Sqb-SelectSummarize-formula-footer',
239
241
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
240
242
  primary: true,
@@ -280,6 +282,7 @@ var SelectSummarize = function SelectSummarize(_ref) {
280
282
  active: condition === v.name
281
283
  }),
282
284
  onClick: function onClick() {
285
+ if (readonly) return;
283
286
  if (~Special.indexOf(v.name)) {
284
287
  setAtoms([]);
285
288
  handleSelect(v.name, {});
@@ -43,6 +43,7 @@ var Metabase = function Metabase(props) {
43
43
  rightClickMenu = _props$rightClickMenu === void 0 ? EMPTY_ARRAY : _props$rightClickMenu,
44
44
  onRightClickMenuClick = props.onRightClickMenuClick;
45
45
  var store = (0, _useProvider.useStore)();
46
+ var readonlyMode = readonly || store.snapshotMode;
46
47
  var _useState = (0, _react.useState)(false),
47
48
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
48
49
  saveLoading = _useState2[0],
@@ -162,7 +163,18 @@ var Metabase = function Metabase(props) {
162
163
  store.setRightClickMenu(rightClickMenu || EMPTY_ARRAY);
163
164
  store.setRightClickMenuClick(onRightClickMenuClick);
164
165
  }, [rightClickMenu, onRightClickMenuClick]);
166
+ (0, _react.useEffect)(function () {
167
+ if (!readonlyMode) return;
168
+ store.setPopup({
169
+ visible: false
170
+ });
171
+ store.setPopup2({
172
+ visible: false
173
+ });
174
+ store.setRightClickMenuState(null);
175
+ }, [readonlyMode]);
165
176
  var copy = function copy() {
177
+ if (readonlyMode) return null;
166
178
  return (0, _jsxRuntime.jsxs)(_pandora.Space, {
167
179
  children: [moduleCopy && (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
168
180
  children: (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
@@ -222,10 +234,22 @@ var Metabase = function Metabase(props) {
222
234
  })]
223
235
  });
224
236
  };
237
+ var stopReadonlyInteraction = function stopReadonlyInteraction(e) {
238
+ var _target$closest;
239
+ if (!readonlyMode) return;
240
+ var target = e.target;
241
+ if (target !== null && target !== void 0 && (_target$closest = target.closest) !== null && _target$closest !== void 0 && _target$closest.call(target, '[data-sqb-snapshot-allow="true"]')) return;
242
+ e.preventDefault();
243
+ e.stopPropagation();
244
+ };
225
245
  return (0, _jsxRuntime.jsx)(VisualBox, {
226
246
  ref: store.popupContainer,
227
247
  onContextMenu: function onContextMenu(e) {
228
- return (0, _rightClickMenu.openSqbRightClickMenu)(store, e);
248
+ if (readonlyMode) {
249
+ e.preventDefault();
250
+ return;
251
+ }
252
+ (0, _rightClickMenu.openSqbRightClickMenu)(store, e);
229
253
  },
230
254
  children: (0, _jsxRuntime.jsxs)("div", {
231
255
  className: 'Sqb',
@@ -237,6 +261,8 @@ var Metabase = function Metabase(props) {
237
261
  if (v.type === 'union' && v.union) {
238
262
  return (0, _jsxRuntime.jsx)("div", {
239
263
  className: (0, _classnames["default"])("Sqb-list"),
264
+ onMouseDownCapture: stopReadonlyInteraction,
265
+ onClickCapture: stopReadonlyInteraction,
240
266
  children: (0, _jsxRuntime.jsx)(_union["default"], {
241
267
  union: v.union,
242
268
  meta: v,
@@ -246,6 +272,8 @@ var Metabase = function Metabase(props) {
246
272
  }
247
273
  return (0, _jsxRuntime.jsx)("div", {
248
274
  className: (0, _classnames["default"])("Sqb-list"),
275
+ onMouseDownCapture: stopReadonlyInteraction,
276
+ onClickCapture: stopReadonlyInteraction,
249
277
  children: v === null || v === void 0 || (_v$list2 = v.list) === null || _v$list2 === void 0 ? void 0 : _v$list2.map(function (meta) {
250
278
  var metaType = meta.type,
251
279
  metaKey = meta.metaKey,
@@ -258,7 +286,7 @@ var Metabase = function Metabase(props) {
258
286
  }, metaKey);
259
287
  })
260
288
  }, 'group' + index);
261
- }), !readonly && typeof onOk === 'function' ? (0, _jsxRuntime.jsx)(_pandora.Button, {
289
+ }), !readonlyMode && typeof onOk === 'function' ? (0, _jsxRuntime.jsx)(_pandora.Button, {
262
290
  type: 'primary',
263
291
  className: ":Sqb-btn",
264
292
  loading: saveLoading,
@@ -70,7 +70,7 @@ var Header = function Header(props) {
70
70
  })
71
71
  }), (0, _jsxRuntime.jsx)(_pandora.Space, {
72
72
  className: (0, _classnames["default"])(':Sqb-item-actions'),
73
- children: props.onClose && !store.isMetabaseCopy && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
73
+ children: props.onClose && !store.isMetabaseCopy && !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
74
74
  placement: 'top',
75
75
  title: (0, _locale.__)('data.del'),
76
76
  children: (0, _jsxRuntime.jsx)(_icons.CloseIcon2, {
@@ -8,12 +8,15 @@ var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _pandora = require("@gingkoo/pandora");
9
9
  var _pandoraIcons = require("@gingkoo/pandora-icons");
10
10
  var _locale = require("../../../locale");
11
+ var _useProvider = require("../../../hooks/use-provider");
11
12
  var ItemName = function ItemName(props) {
12
13
  var children = props.children,
13
14
  isError = props.isError,
14
15
  message = props.message;
16
+ var store = (0, _useProvider.useStore)();
17
+ var showError = isError && !store.snapshotMode;
15
18
  return (0, _jsxRuntime.jsx)(_pandora.Badge, {
16
- count: isError ? (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
19
+ count: showError ? (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
17
20
  title: message || (0, _locale.__)('metabase.verify'),
18
21
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
19
22
  className: 'isError',
@@ -30,7 +30,7 @@ var ItemWrapper = function ItemWrapper(props) {
30
30
  store.setMetabaseCopyModule(data);
31
31
  _storage["default"]._metabaseCopyModule = data;
32
32
  };
33
- if (store.isMetabaseCopy && meta.type !== 'union' && meta.type !== 'data') {
33
+ if (store.isMetabaseCopy && !store.snapshotMode && meta.type !== 'union' && meta.type !== 'data') {
34
34
  return (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
35
35
  checked: (0, _utils.metaIsCheck)(store.metabaseCopyModule, meta),
36
36
  onChange: function onChange(val) {