@gingkoo/pandora-metabase 1.0.152 → 1.0.153

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 (49) hide show
  1. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  2. package/lib/cjs/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  3. package/lib/cjs/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  4. package/lib/cjs/components/dialog/formula-list/LogicGroup.js +4 -2
  5. package/lib/cjs/components/dialog/formula-list/index.js +14 -9
  6. package/lib/cjs/components/dialog/select-column/index.d.ts +2 -1
  7. package/lib/cjs/components/dialog/select-column/index.js +10 -1
  8. package/lib/cjs/components/metabase/index.js +30 -2
  9. package/lib/cjs/components/modules/components/header.js +1 -1
  10. package/lib/cjs/components/modules/components/item-name.js +4 -1
  11. package/lib/cjs/components/modules/components/item-wrapper.js +1 -1
  12. package/lib/cjs/components/modules/components/meta-icon.js +4 -2
  13. package/lib/cjs/components/modules/custom-column.js +2 -2
  14. package/lib/cjs/components/modules/join-data.js +40 -41
  15. package/lib/cjs/components/modules/permission-table.js +1 -0
  16. package/lib/cjs/components/modules/row-limit.js +1 -0
  17. package/lib/cjs/components/modules/sort.js +2 -2
  18. package/lib/cjs/components/modules/summarize/group-by.js +3 -3
  19. package/lib/cjs/components/modules/summarize/select-index.js +3 -3
  20. package/lib/cjs/components/modules/table-data.js +6 -4
  21. package/lib/cjs/components/modules/union.js +1 -1
  22. package/lib/cjs/hooks/use-state.js +66 -52
  23. package/lib/cjs/index.js +7 -2
  24. package/lib/cjs/types.d.ts +1 -0
  25. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  26. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  27. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  28. package/lib/es/components/dialog/formula-list/LogicGroup.js +4 -2
  29. package/lib/es/components/dialog/formula-list/index.js +14 -9
  30. package/lib/es/components/dialog/select-column/index.d.ts +2 -1
  31. package/lib/es/components/dialog/select-column/index.js +10 -1
  32. package/lib/es/components/metabase/index.js +30 -2
  33. package/lib/es/components/modules/components/header.js +1 -1
  34. package/lib/es/components/modules/components/item-name.js +4 -1
  35. package/lib/es/components/modules/components/item-wrapper.js +1 -1
  36. package/lib/es/components/modules/components/meta-icon.js +4 -2
  37. package/lib/es/components/modules/custom-column.js +2 -2
  38. package/lib/es/components/modules/join-data.js +40 -41
  39. package/lib/es/components/modules/permission-table.js +1 -0
  40. package/lib/es/components/modules/row-limit.js +1 -0
  41. package/lib/es/components/modules/sort.js +2 -2
  42. package/lib/es/components/modules/summarize/group-by.js +3 -3
  43. package/lib/es/components/modules/summarize/select-index.js +3 -3
  44. package/lib/es/components/modules/table-data.js +6 -4
  45. package/lib/es/components/modules/union.js +1 -1
  46. package/lib/es/hooks/use-state.js +66 -52
  47. package/lib/es/index.js +7 -2
  48. package/lib/es/types.d.ts +1 -0
  49. package/package.json +1 -1
@@ -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,
@@ -2097,6 +2100,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2097
2100
  var copyDom = function copyDom() {
2098
2101
  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
2099
2102
  var positioned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2103
+ if (snapshotMode) return null;
2100
2104
  if (embedded) return null;
2101
2105
  if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
2102
2106
  return (0, _jsxRuntime.jsx)("div", {
@@ -2129,8 +2133,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2129
2133
  var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
2130
2134
  var itemContent = itemDom(v, i, groupType);
2131
2135
  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);
2136
+ var showAfterArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2137
+ var showBeforeArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2134
2138
  return (0, _jsxRuntime.jsx)(_react["default"].Fragment, {
2135
2139
  children: (0, _jsxRuntime.jsxs)("div", {
2136
2140
  className: (0, _classnames["default"])('Sqb-Filter-item', (0, _defineProperty2["default"])({
@@ -2169,7 +2173,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2169
2173
  ind: i,
2170
2174
  position: 'before',
2171
2175
  trigger: 'hover'
2172
- }), !embedded && showCheckbox && v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
2176
+ }), !snapshotMode && !embedded && showCheckbox && v.type !== _types.AtomsTypeEnum.UNKNOWN && (0, _jsxRuntime.jsx)(_pandora.Checkbox, {
2173
2177
  className: 'item-check',
2174
2178
  checked: selectedIndices.includes(i),
2175
2179
  disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
@@ -2179,7 +2183,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2179
2183
  }
2180
2184
  }), (0, _jsxRuntime.jsx)("div", {
2181
2185
  style: {
2182
- pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2186
+ pointerEvents: snapshotMode || isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2183
2187
  },
2184
2188
  className: (0, _classnames["default"])('Sqb-Filter-item-node', {
2185
2189
  openCheck: isCheck && !isCompositeAtom
@@ -2223,6 +2227,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2223
2227
  });
2224
2228
  };
2225
2229
  var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
2230
+ if (snapshotMode) return null;
2226
2231
  if (!canDeleteItem(item, groupType)) return null;
2227
2232
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2228
2233
  title: "\u5220\u9664",
@@ -2275,8 +2280,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2275
2280
  trigger: 'hover'
2276
2281
  });
2277
2282
  };
2278
- var showFormulaListZoom = !embedded && enableZoom;
2279
- var showCopyTools = !embedded && isCopy && caseList.length > 0;
2283
+ var showFormulaListZoom = !snapshotMode && !embedded && enableZoom;
2284
+ var showCopyTools = !snapshotMode && !embedded && isCopy && caseList.length > 0;
2280
2285
  var renderFormulaListZoomButton = function renderFormulaListZoomButton() {
2281
2286
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2282
2287
  title: "\u7F16\u8F91",
@@ -2341,7 +2346,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2341
2346
  children: renderFormulaListZoomButton()
2342
2347
  }), caseList.map(function (item, itemIndex) {
2343
2348
  return renderItemShell(item, itemIndex, 'single');
2344
- }), Array.from(caseList).length < 1 && selectOperator({
2349
+ }), !snapshotMode && Array.from(caseList).length < 1 && selectOperator({
2345
2350
  triggerElement: function triggerElement() {
2346
2351
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2347
2352
  title: "\u6DFB\u52A0",
@@ -2355,7 +2360,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2355
2360
  ind: -1,
2356
2361
  position: 'add',
2357
2362
  trigger: 'click'
2358
- }), !embedded && copyDom(-1, false), !embedded && showPreview && (0, _jsxRuntime.jsx)("div", {
2363
+ }), !embedded && !snapshotMode && copyDom(-1, false), !snapshotMode && !embedded && showPreview && (0, _jsxRuntime.jsx)("div", {
2359
2364
  className: (0, _classnames["default"])("mb-2 font-bold uppercase tracking-wider preview-box"),
2360
2365
  style: {
2361
2366
  fontSize: 12,
@@ -2385,7 +2390,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2385
2390
  onClick: showFormulaDiff,
2386
2391
  children: "\u5BF9\u6BD4\u7ED3\u679C"
2387
2392
  })]
2388
- }), (0, _jsxRuntime.jsx)("div", {
2393
+ }), !snapshotMode && (0, _jsxRuntime.jsx)("div", {
2389
2394
  className: 'errorMsg mt-2',
2390
2395
  children: errorInfo.isError && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
2391
2396
  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',
@@ -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) {
@@ -323,8 +323,9 @@ var NextDom = function NextDom(props) {
323
323
  _storage["default"]._metabaseCopyModule = [];
324
324
  }
325
325
  };
326
+ if (store.snapshotMode) return null;
326
327
  return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
327
- children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
328
+ children: [store.metabaseCopyModule && store.metabaseCopyModule.length > 0 && isShowAdd && !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
328
329
  title: "\u5728\u6B64\u5904\u7C98\u8D34",
329
330
  children: (0, _jsxRuntime.jsxs)(_pandora.Button, {
330
331
  className: (0, _classnames["default"])(':Sqb-item-copy'),
@@ -348,7 +349,8 @@ var NextDom = function NextDom(props) {
348
349
  large: size === IconSIzeEnum.LARGE
349
350
  }),
350
351
  onClick: function onClick() {
351
- return handleClick(v);
352
+ if (store.snapshotMode) return;
353
+ handleClick(v);
352
354
  },
353
355
  children: (0, _jsxRuntime.jsxs)("div", {
354
356
  children: [info.icon, size === IconSIzeEnum.LARGE ? (0, _jsxRuntime.jsx)("div", {
@@ -322,7 +322,7 @@ var CustomColumn = function CustomColumn(props) {
322
322
  onClick: function onClick(e) {
323
323
  return showSubQuery(e, i);
324
324
  },
325
- children: [v.name, (0, _jsxRuntime.jsx)("span", {
325
+ children: [v.name, !store.snapshotMode && (0, _jsxRuntime.jsx)("span", {
326
326
  style: {
327
327
  fontSize: 0
328
328
  },
@@ -334,7 +334,7 @@ var CustomColumn = function CustomColumn(props) {
334
334
  })
335
335
  })
336
336
  }, i);
337
- }), (0, _jsxRuntime.jsx)("div", {
337
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)("div", {
338
338
  className: "Sqb-TableName gray-name",
339
339
  onClick: function onClick(e) {
340
340
  showSubQuery(e, -1);
@@ -378,6 +378,7 @@ var JoinData = function JoinData(props) {
378
378
  table: meta.table2,
379
379
  metaIndex: index,
380
380
  groupIndex: groupIndex,
381
+ readonly: store.snapshotMode,
381
382
  onChange: function onChange(data, newMetaList) {
382
383
  var _newMetaList = newMetaList || store.metaList[groupIndex].list.slice();
383
384
  _newMetaList[index].columns = data;
@@ -1307,6 +1308,33 @@ var JoinData = function JoinData(props) {
1307
1308
  }
1308
1309
  return false;
1309
1310
  };
1311
+ var renderSwitchTypeButton = function renderSwitchTypeButton(position, expressionIndex) {
1312
+ if (store.snapshotMode) {
1313
+ return (0, _jsxRuntime.jsx)("span", {
1314
+ "aria-hidden": 'true',
1315
+ style: {
1316
+ display: 'inline-block',
1317
+ marginRight: 8
1318
+ }
1319
+ });
1320
+ }
1321
+ return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1322
+ title: (0, _locale.__)('SqlQueryBuilder.switch'),
1323
+ children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1324
+ disabled: meta.readonly,
1325
+ primary: true,
1326
+ ghost: true,
1327
+ className: 'mr-2 operator-icon',
1328
+ icon: (0, _jsxRuntime.jsx)(_pandoraIcons.Repeat, {}),
1329
+ onClick: function onClick(e) {
1330
+ onChangeType(e, {
1331
+ position: position,
1332
+ index: expressionIndex
1333
+ });
1334
+ }
1335
+ })
1336
+ });
1337
+ };
1310
1338
  return (0, _jsxRuntime.jsx)(_Wrapper["default"], {
1311
1339
  className: (0, _classnames["default"])("Sqb-item"),
1312
1340
  children: (0, _jsxRuntime.jsxs)("div", {
@@ -1367,7 +1395,7 @@ var JoinData = function JoinData(props) {
1367
1395
  },
1368
1396
  children: [subQuerySelected && (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
1369
1397
  children: function () {
1370
- var showButton = store.tableEnableAlias || tableIsError() && isDel;
1398
+ var showButton = !store.snapshotMode && (store.tableEnableAlias || tableIsError() && isDel);
1371
1399
  var icon = isDel ? (0, _jsxRuntime.jsx)(_pandoraIcons.ExclamationCircleFill, {}) : store.tableEnableAlias ? 'As' : '';
1372
1400
  return showButton ? (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1373
1401
  title: (0, _locale.__)(tableIsError() ? isDel ? 'metabase.verify' : 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
@@ -1408,7 +1436,7 @@ var JoinData = function JoinData(props) {
1408
1436
  onClick: selectTable,
1409
1437
  children: [table2Selected && (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
1410
1438
  children: function () {
1411
- var showButton = store.tableEnableAlias || tableIsError() && isDel;
1439
+ var showButton = !store.snapshotMode && (store.tableEnableAlias || tableIsError() && isDel);
1412
1440
  var icon = isDel ? (0, _jsxRuntime.jsx)(_pandoraIcons.ExclamationCircleFill, {}) : store.tableEnableAlias ? 'As' : '';
1413
1441
  return showButton ? (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1414
1442
  title: (0, _locale.__)(tableIsError() ? isDel ? 'metabase.verify' : 'SqlQueryBuilder.repeatAlias' : 'SqlQueryBuilder.alias'),
@@ -1440,7 +1468,7 @@ var JoinData = function JoinData(props) {
1440
1468
  }()
1441
1469
  }), table2Selected ? "".concat(meta.table2.datasourceName, ".").concat(meta.table2.name, " ").concat((_meta$table7 = meta.table2) !== null && _meta$table7 !== void 0 && _meta$table7.alias && store.tableEnableAlias ? "as ".concat((_meta$table8 = meta.table2) === null || _meta$table8 === void 0 ? void 0 : _meta$table8.alias) : '') : (0, _locale.__)('SqlQueryBuilder.pickTable')]
1442
1470
  })
1443
- }), store.showSubquery && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1471
+ }), store.showSubquery && (!store.snapshotMode || meta.isSubquery) && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1444
1472
  title: (0, _locale.__)('SqlQueryBuilder.switchSubQuery'),
1445
1473
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1446
1474
  disabled: meta.readonly,
@@ -1457,40 +1485,10 @@ var JoinData = function JoinData(props) {
1457
1485
  children: [i == 0 && (0, _jsxRuntime.jsx)("span", {
1458
1486
  className: 'ml-2 mr-4 text-gray-500',
1459
1487
  children: "on"
1460
- }), renderItem(v.lhs, ExpressionsEnum.LEFT, i), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1461
- title: (0, _locale.__)('SqlQueryBuilder.switch'),
1462
- children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1463
- disabled: meta.readonly,
1464
- primary: true,
1465
- ghost: true,
1466
- className: 'mr-2 operator-icon',
1467
- icon: (0, _jsxRuntime.jsx)(_pandoraIcons.Repeat, {}),
1468
- onClick: function onClick(e) {
1469
- onChangeType(e, {
1470
- position: ExpressionsEnum.LEFT,
1471
- index: i
1472
- });
1473
- }
1474
- })
1475
- }), (0, _jsxRuntime.jsx)("span", {
1488
+ }), renderItem(v.lhs, ExpressionsEnum.LEFT, i), renderSwitchTypeButton(ExpressionsEnum.LEFT, i), (0, _jsxRuntime.jsx)("span", {
1476
1489
  className: 'mr-2 text-gray-500',
1477
1490
  children: "="
1478
- }), renderItem(v.rhs, ExpressionsEnum.RIGHT, i), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1479
- title: (0, _locale.__)('SqlQueryBuilder.switch'),
1480
- children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1481
- disabled: meta.readonly,
1482
- primary: true,
1483
- ghost: true,
1484
- className: 'mr-2 operator-icon',
1485
- icon: (0, _jsxRuntime.jsx)(_pandoraIcons.Repeat, {}),
1486
- onClick: function onClick(e) {
1487
- onChangeType(e, {
1488
- position: ExpressionsEnum.RIGHT,
1489
- index: i
1490
- });
1491
- }
1492
- })
1493
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1491
+ }), renderItem(v.rhs, ExpressionsEnum.RIGHT, i), renderSwitchTypeButton(ExpressionsEnum.RIGHT, i), !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1494
1492
  title: (0, _locale.__)('SqlQueryBuilder.add'),
1495
1493
  children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
1496
1494
  trigger: ['click'],
@@ -1506,7 +1504,7 @@ var JoinData = function JoinData(props) {
1506
1504
  icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
1507
1505
  })
1508
1506
  })
1509
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1507
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1510
1508
  title: (0, _locale.__)('SqlQueryBuilder.del'),
1511
1509
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1512
1510
  disabled: meta.readonly,
@@ -1562,7 +1560,7 @@ var JoinData = function JoinData(props) {
1562
1560
  children: v.quotes || (0, _locale.__)('joinData.selectExpression')
1563
1561
  }, i)
1564
1562
  })
1565
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1563
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1566
1564
  title: (0, _locale.__)('SqlQueryBuilder.add'),
1567
1565
  children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
1568
1566
  trigger: ['click'],
@@ -1578,7 +1576,7 @@ var JoinData = function JoinData(props) {
1578
1576
  icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
1579
1577
  })
1580
1578
  })
1581
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1579
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1582
1580
  title: (0, _locale.__)('SqlQueryBuilder.del'),
1583
1581
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1584
1582
  disabled: meta.readonly,
@@ -1613,7 +1611,7 @@ var JoinData = function JoinData(props) {
1613
1611
  type: _types.ChangeType.expressions
1614
1612
  });
1615
1613
  }
1616
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1614
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1617
1615
  title: (0, _locale.__)('SqlQueryBuilder.add'),
1618
1616
  children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
1619
1617
  trigger: ['click'],
@@ -1629,7 +1627,7 @@ var JoinData = function JoinData(props) {
1629
1627
  icon: (0, _jsxRuntime.jsx)(_pandoraIcons.FfPlus, {})
1630
1628
  })
1631
1629
  })
1632
- }), (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1630
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1633
1631
  title: (0, _locale.__)('SqlQueryBuilder.del'),
1634
1632
  children: (0, _jsxRuntime.jsx)(_pandora.Button, {
1635
1633
  disabled: meta.readonly,
@@ -1643,7 +1641,7 @@ var JoinData = function JoinData(props) {
1643
1641
  })]
1644
1642
  }, i);
1645
1643
  }
1646
- })), ((_meta$table1 = meta.table2) === null || _meta$table1 === void 0 ? void 0 : _meta$table1.name) && ((_meta$table10 = meta.table1) === null || _meta$table10 === void 0 ? void 0 : _meta$table10.name) && (((_meta$expressions2 = meta.expressions) === null || _meta$expressions2 === void 0 ? void 0 : _meta$expressions2.length) || 0) < 1 && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1644
+ })), !store.snapshotMode && ((_meta$table1 = meta.table2) === null || _meta$table1 === void 0 ? void 0 : _meta$table1.name) && ((_meta$table10 = meta.table1) === null || _meta$table10 === void 0 ? void 0 : _meta$table10.name) && (((_meta$expressions2 = meta.expressions) === null || _meta$expressions2 === void 0 ? void 0 : _meta$expressions2.length) || 0) < 1 && (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
1647
1645
  title: (0, _locale.__)('SqlQueryBuilder.add'),
1648
1646
  children: (0, _jsxRuntime.jsx)(_pandora.Dropdown, {
1649
1647
  trigger: ['click'],
@@ -1661,6 +1659,7 @@ var JoinData = function JoinData(props) {
1661
1659
  })
1662
1660
  }), columnsSelected && (((_store$showMainColumn = store.showMainColumn[groupIndex]) === null || _store$showMainColumn === void 0 ? void 0 : _store$showMainColumn.showColumn) || ((_store$showMainColumn2 = store.showMainColumn[groupIndex]) === null || _store$showMainColumn2 === void 0 ? void 0 : _store$showMainColumn2.index) < index) && (!store.isExit || store.isSubquery) && store.showFields && (0, _jsxRuntime.jsx)("div", {
1663
1661
  className: "Sqb-TableColumns",
1662
+ "data-sqb-snapshot-allow": 'true',
1664
1663
  onClick: selectColumns,
1665
1664
  children: (0, _locale.__)('SqlQueryBuilder.columns')
1666
1665
  })]
@@ -28,6 +28,7 @@ var PermissionTable = function PermissionTable(props) {
28
28
  var _getHelper = (0, _utils.getHelper)(store.metaList[groupIndex].list, meta),
29
29
  prevTables = _getHelper.prevTables;
30
30
  function selectTable(e) {
31
+ if (store.snapshotMode) return;
31
32
  var _getHelper2 = (0, _utils.getHelper)(store.metaList[groupIndex].list, meta),
32
33
  ExistAboveGroupBy = _getHelper2.ExistAboveGroupBy,
33
34
  prevList = _getHelper2.prevList,
@@ -21,6 +21,7 @@ var RowLimit = function RowLimit(props) {
21
21
  var store = (0, _useProvider.useStore)();
22
22
  var index = (0, _utils.findIndex)(store.metaList[groupIndex].list, meta);
23
23
  function handleChange(inputValue) {
24
+ if (store.snapshotMode) return;
24
25
  var newMeta = store.metaList[groupIndex].list.slice();
25
26
  newMeta[index].limit = inputValue;
26
27
  store.setMeta(newMeta, groupIndex);
@@ -207,7 +207,7 @@ var Sort = function Sort(props) {
207
207
  onClick: function onClick() {
208
208
  return handleSort(i);
209
209
  },
210
- children: [v.sort === _enum.SortEnum.asc ? (0, _jsxRuntime.jsx)(_icons.UpArrowIcon, {}) : (0, _jsxRuntime.jsx)(_icons.DownArrowIcon, {}), getName(v.expression), (0, _jsxRuntime.jsx)("span", {
210
+ children: [v.sort === _enum.SortEnum.asc ? (0, _jsxRuntime.jsx)(_icons.UpArrowIcon, {}) : (0, _jsxRuntime.jsx)(_icons.DownArrowIcon, {}), getName(v.expression), !store.snapshotMode && (0, _jsxRuntime.jsx)("span", {
211
211
  style: {
212
212
  fontSize: 0
213
213
  },
@@ -219,7 +219,7 @@ var Sort = function Sort(props) {
219
219
  }, i)
220
220
  })
221
221
  }, i);
222
- }), (0, _jsxRuntime.jsx)("div", {
222
+ }), !store.snapshotMode && (0, _jsxRuntime.jsx)("div", {
223
223
  className: "Sqb-TableName gray-name",
224
224
  onClick: addSortColumn,
225
225
  children: (0, _jsxRuntime.jsx)(_icons.AddIcon, {})