@gingkoo/pandora-metabase 1.0.151 → 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 (53) 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 +23 -14
  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 +6 -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/cjs/utils.d.ts +2 -0
  26. package/lib/cjs/utils.js +4 -4
  27. package/lib/es/components/dialog/formula-list/CaseWhenGroup.d.ts +2 -1
  28. package/lib/es/components/dialog/formula-list/CaseWhenGroup.js +7 -5
  29. package/lib/es/components/dialog/formula-list/LogicGroup.d.ts +2 -1
  30. package/lib/es/components/dialog/formula-list/LogicGroup.js +4 -2
  31. package/lib/es/components/dialog/formula-list/index.js +24 -15
  32. package/lib/es/components/dialog/select-column/index.d.ts +2 -1
  33. package/lib/es/components/dialog/select-column/index.js +10 -1
  34. package/lib/es/components/metabase/index.js +30 -2
  35. package/lib/es/components/modules/components/header.js +1 -1
  36. package/lib/es/components/modules/components/item-name.js +4 -1
  37. package/lib/es/components/modules/components/item-wrapper.js +1 -1
  38. package/lib/es/components/modules/components/meta-icon.js +4 -2
  39. package/lib/es/components/modules/custom-column.js +2 -2
  40. package/lib/es/components/modules/join-data.js +40 -41
  41. package/lib/es/components/modules/permission-table.js +1 -0
  42. package/lib/es/components/modules/row-limit.js +1 -0
  43. package/lib/es/components/modules/sort.js +2 -2
  44. package/lib/es/components/modules/summarize/group-by.js +7 -4
  45. package/lib/es/components/modules/summarize/select-index.js +3 -3
  46. package/lib/es/components/modules/table-data.js +6 -4
  47. package/lib/es/components/modules/union.js +1 -1
  48. package/lib/es/hooks/use-state.js +66 -52
  49. package/lib/es/index.js +7 -2
  50. package/lib/es/types.d.ts +1 -0
  51. package/lib/es/utils.d.ts +2 -0
  52. package/lib/es/utils.js +2 -1
  53. 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,
@@ -293,7 +294,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
293
294
  return map;
294
295
  }, [otherTypes]);
295
296
  var normalizedValue = (0, _react.useMemo)(function () {
296
- return (0, _utils2.normalizeAndOrStructure)(value || []);
297
+ return (0, _utils2.normalizeAndOrStructure)(value || []).map(_utils2.syncAtomQuotes);
297
298
  }, [value]);
298
299
  var caseList = normalizedValue;
299
300
  var initialValueRef = (0, _react.useRef)((0, _cloneDeep["default"])(caseList));
@@ -406,6 +407,9 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
406
407
  if (visited.has(v)) return v.quotes || '';
407
408
  visited.add(v);
408
409
  }
410
+ if (v.type === _types.AtomsTypeEnum.FIELD || v.type === _types.AtomsTypeEnum.EXPRESSION || v.type === _types.AtomsTypeEnum.FORMULA || v.type === _types.AtomsTypeEnum.COLLECTION || v.type === _types.AtomsTypeEnum.CASE_WHEN || v.type === _types.AtomsTypeEnum.AND_OR || v.type === _types.AtomsTypeEnum.SELECT) {
411
+ return (0, _utils2.getAtomDisplayText)(v);
412
+ }
409
413
  if (v.quotes) return v.quotes;
410
414
  if (v.type === _types.AtomsTypeEnum.FIELD) return getFieldDisplayName(v);
411
415
  if (v.fieldName) return v.fieldName;
@@ -963,6 +967,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
963
967
  var caseRegionKey = "case-".concat(index, "-case");
964
968
  var elseRegionKey = "case-".concat(index, "-else");
965
969
  return (0, _jsxRuntime.jsx)(_CaseWhenGroup["default"], {
970
+ readonly: snapshotMode,
966
971
  isNested: embedded,
967
972
  useBranchScrollInner: !embedded,
968
973
  caseRegionKey: caseRegionKey,
@@ -1074,6 +1079,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1074
1079
  updateAtomAt(index, buildAndOrItem(value, nextItems));
1075
1080
  };
1076
1081
  return (0, _jsxRuntime.jsx)(_LogicGroup["default"], {
1082
+ readonly: snapshotMode,
1077
1083
  items: items.map(function (item, itemIndex) {
1078
1084
  return {
1079
1085
  operator: item.operator,
@@ -1981,22 +1987,23 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
1981
1987
  };
1982
1988
  }
1983
1989
  if (type === _types.AtomsTypeEnum.EXPRESSION) {
1990
+ var quotes = (0, _utils2.getAtomDisplayText)(v);
1984
1991
  if (~['早于', '晚于', '在'].indexOf(v.condition) && v.rhs.length > 1) {
1985
- var _nextList$index$quote;
1992
+ var _getAtomDisplayText$s;
1986
1993
  var nextList = caseList.slice();
1987
1994
  nextList[index].rhs = [nextList[index].rhs[0]];
1988
- nextList[index].quotes = (_nextList$index$quote = nextList[index].quotes.split(' || ')) === null || _nextList$index$quote === void 0 ? void 0 : _nextList$index$quote[0];
1995
+ nextList[index].quotes = (_getAtomDisplayText$s = (0, _utils2.getAtomDisplayText)(nextList[index]).split(' || ')) === null || _getAtomDisplayText$s === void 0 ? void 0 : _getAtomDisplayText$s[0];
1989
1996
  setCaseList(nextList);
1990
1997
  }
1991
1998
  return {
1992
1999
  className: (0, _classnames["default"])('purple-name', {
1993
- notSelected: !v.quotes
2000
+ notSelected: !quotes
1994
2001
  }),
1995
2002
  onClick: function onClick(e) {
1996
2003
  return handleExpression(e, index, v);
1997
2004
  },
1998
2005
  node: (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
1999
- children: [v.quotes ? v.quotes : (0, _locale.__)('customColumn.selectExpression'), renderDeleteIcon(v, index, groupType)]
2006
+ children: [quotes || (0, _locale.__)('customColumn.selectExpression'), renderDeleteIcon(v, index, groupType)]
2000
2007
  })
2001
2008
  };
2002
2009
  }
@@ -2093,6 +2100,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2093
2100
  var copyDom = function copyDom() {
2094
2101
  var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
2095
2102
  var positioned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2103
+ if (snapshotMode) return null;
2096
2104
  if (embedded) return null;
2097
2105
  if (!isCopy || selectedIndices.length === 0 && checkedItemsCount === 0) return null;
2098
2106
  return (0, _jsxRuntime.jsx)("div", {
@@ -2125,8 +2133,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2125
2133
  var showCheckbox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
2126
2134
  var itemContent = itemDom(v, i, groupType);
2127
2135
  var isCompositeAtom = v.type === _types.AtomsTypeEnum.CASE_WHEN || v.type === _types.AtomsTypeEnum.AND_OR;
2128
- var showAfterArrow = canShowItemInsertArrows(v, groupType);
2129
- var showBeforeArrow = canShowItemInsertArrows(v, groupType);
2136
+ var showAfterArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2137
+ var showBeforeArrow = !snapshotMode && canShowItemInsertArrows(v, groupType);
2130
2138
  return (0, _jsxRuntime.jsx)(_react["default"].Fragment, {
2131
2139
  children: (0, _jsxRuntime.jsxs)("div", {
2132
2140
  className: (0, _classnames["default"])('Sqb-Filter-item', (0, _defineProperty2["default"])({
@@ -2165,7 +2173,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2165
2173
  ind: i,
2166
2174
  position: 'before',
2167
2175
  trigger: 'hover'
2168
- }), !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, {
2169
2177
  className: 'item-check',
2170
2178
  checked: selectedIndices.includes(i),
2171
2179
  disabled: globalSelectionActive && globalSelectionOwner !== myInstanceIdRef.current,
@@ -2175,7 +2183,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2175
2183
  }
2176
2184
  }), (0, _jsxRuntime.jsx)("div", {
2177
2185
  style: {
2178
- pointerEvents: isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2186
+ pointerEvents: snapshotMode || isCheck || store.isMetabaseCopy ? 'none' : 'auto'
2179
2187
  },
2180
2188
  className: (0, _classnames["default"])('Sqb-Filter-item-node', {
2181
2189
  openCheck: isCheck && !isCompositeAtom
@@ -2219,6 +2227,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2219
2227
  });
2220
2228
  };
2221
2229
  var renderDeleteIcon = function renderDeleteIcon(item, index, groupType) {
2230
+ if (snapshotMode) return null;
2222
2231
  if (!canDeleteItem(item, groupType)) return null;
2223
2232
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2224
2233
  title: "\u5220\u9664",
@@ -2271,8 +2280,8 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2271
2280
  trigger: 'hover'
2272
2281
  });
2273
2282
  };
2274
- var showFormulaListZoom = !embedded && enableZoom;
2275
- var showCopyTools = !embedded && isCopy && caseList.length > 0;
2283
+ var showFormulaListZoom = !snapshotMode && !embedded && enableZoom;
2284
+ var showCopyTools = !snapshotMode && !embedded && isCopy && caseList.length > 0;
2276
2285
  var renderFormulaListZoomButton = function renderFormulaListZoomButton() {
2277
2286
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2278
2287
  title: "\u7F16\u8F91",
@@ -2337,7 +2346,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2337
2346
  children: renderFormulaListZoomButton()
2338
2347
  }), caseList.map(function (item, itemIndex) {
2339
2348
  return renderItemShell(item, itemIndex, 'single');
2340
- }), Array.from(caseList).length < 1 && selectOperator({
2349
+ }), !snapshotMode && Array.from(caseList).length < 1 && selectOperator({
2341
2350
  triggerElement: function triggerElement() {
2342
2351
  return (0, _jsxRuntime.jsx)(_pandora.Tooltip, {
2343
2352
  title: "\u6DFB\u52A0",
@@ -2351,7 +2360,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2351
2360
  ind: -1,
2352
2361
  position: 'add',
2353
2362
  trigger: 'click'
2354
- }), !embedded && copyDom(-1, false), !embedded && showPreview && (0, _jsxRuntime.jsx)("div", {
2363
+ }), !embedded && !snapshotMode && copyDom(-1, false), !snapshotMode && !embedded && showPreview && (0, _jsxRuntime.jsx)("div", {
2355
2364
  className: (0, _classnames["default"])("mb-2 font-bold uppercase tracking-wider preview-box"),
2356
2365
  style: {
2357
2366
  fontSize: 12,
@@ -2381,7 +2390,7 @@ var FormulaList = (0, _react.forwardRef)(function (props, ref) {
2381
2390
  onClick: showFormulaDiff,
2382
2391
  children: "\u5BF9\u6BD4\u7ED3\u679C"
2383
2392
  })]
2384
- }), (0, _jsxRuntime.jsx)("div", {
2393
+ }), !snapshotMode && (0, _jsxRuntime.jsx)("div", {
2385
2394
  className: 'errorMsg mt-2',
2386
2395
  children: errorInfo.isError && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
2387
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
  })]