@gingkoo/pandora-metabase 1.0.115 → 1.0.116

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.
@@ -12,6 +12,7 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
15
16
  require("./index.less");
16
17
  var _formulaList = _interopRequireDefault(require("../formula-list"));
17
18
  var _icons = require("../../icons");
@@ -30,7 +31,7 @@ var VisualBox = _styledComponents["default"].div.attrs({
30
31
  className: 'visual-box'
31
32
  })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])([""])));
32
33
  var CaseEditor = _react["default"].forwardRef(function (props, ref) {
33
- var _store$formulaTemplat, _formulaList$fun$name, _formulaList$fun$name2, _fun$args;
34
+ var _store$formulaTemplat, _fun$args;
34
35
  var store = (0, _useProvider.useStore)();
35
36
  var value = props.value,
36
37
  data = props.data,
@@ -50,6 +51,11 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
50
51
  var formulaList = (0, _react.useMemo)(function () {
51
52
  return (0, _utils2.getObjTem)(store.formulaTemplates);
52
53
  }, [store.formulaTemplates]);
54
+ var currentFormulaKey = fun.id || fun.name;
55
+ var currentFormulaTemplate = (0, _react.useMemo)(function () {
56
+ return formulaList[currentFormulaKey];
57
+ }, [formulaList, currentFormulaKey]);
58
+ var effectiveArity = (currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.arity) || fun.arity;
53
59
  var _useState3 = (0, _react.useState)({
54
60
  canAdd: true,
55
61
  canDel: true
@@ -58,8 +64,23 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
58
64
  formulaOpr = _useState4[0],
59
65
  setFormulaOpr = _useState4[1];
60
66
  (0, _react.useEffect)(function () {
61
- setFormulaOpr((0, _utils2.getParamActions)(fun.args, fun.arity));
62
- }, [fun]);
67
+ setFormulaOpr((0, _utils2.getParamActions)(fun.args, effectiveArity));
68
+ }, [fun.args, effectiveArity]);
69
+ (0, _react.useEffect)(function () {
70
+ if (!currentFormulaTemplate) return;
71
+ setFun(function (prev) {
72
+ var nextId = prev.id || currentFormulaKey;
73
+ var nextName = currentFormulaTemplate.name || prev.name;
74
+ if (prev.id === nextId && prev.name === nextName && (0, _isEqual["default"])(prev.arity, effectiveArity)) {
75
+ return prev;
76
+ }
77
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, prev), {}, {
78
+ id: nextId,
79
+ name: nextName,
80
+ arity: effectiveArity
81
+ });
82
+ });
83
+ }, [currentFormulaKey, currentFormulaTemplate, effectiveArity]);
63
84
  var _ref = (0, _react.useRef)(null);
64
85
  // EXPRESSION = 'expression', // 表达式
65
86
  // // FUNCTION = 'function', // 函数
@@ -83,6 +104,9 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
83
104
  // 确定
84
105
  var _onOk = function _onOk() {
85
106
  typeof onOk === 'function' && (onOk === null || onOk === void 0 ? void 0 : onOk((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, fun), {}, {
107
+ arity: effectiveArity,
108
+ id: currentFormulaKey,
109
+ name: (currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.name) || fun.name,
86
110
  quotes: (0, _utils2.getQuotes)(fun, fun.args, formulaList)
87
111
  })));
88
112
  };
@@ -100,7 +124,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
100
124
  };
101
125
  var addParams = function addParams(index) {
102
126
  var _args = (0, _cloneDeep["default"])(fun.args);
103
- var tem = (0, _utils2.getTemArgs)(formulaList === null || formulaList === void 0 ? void 0 : formulaList[fun.name].args)[index + 1] || {
127
+ var tem = (0, _utils2.getTemArgs)(currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.args)[index + 1] || {
104
128
  type: _types.AtomsTypeEnum.COLLECTION,
105
129
  list: []
106
130
  };
@@ -179,14 +203,14 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
179
203
  color: '#949aab'
180
204
  },
181
205
  children: [(0, _jsxRuntime.jsxs)("p", {
182
- children: ["\u63CF\u8FF0\uFF1A", (_formulaList$fun$name = formulaList[fun.name]) === null || _formulaList$fun$name === void 0 ? void 0 : _formulaList$fun$name.description]
206
+ children: ["\u63CF\u8FF0\uFF1A", currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.description]
183
207
  }), (0, _jsxRuntime.jsxs)("p", {
184
- children: ["\u6848\u4F8B\uFF1A", (_formulaList$fun$name2 = formulaList[fun.name]) === null || _formulaList$fun$name2 === void 0 ? void 0 : _formulaList$fun$name2.example]
208
+ children: ["\u6848\u4F8B\uFF1A", currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.example]
185
209
  })]
186
210
  })]
187
211
  }), fun === null || fun === void 0 || (_fun$args = fun.args) === null || _fun$args === void 0 ? void 0 : _fun$args.map(function (v, i) {
188
212
  if (v.type === _types.AtomsTypeEnum.COLLECTION) {
189
- var _store$preProps, _formulaList$fun$name3;
213
+ var _store$preProps, _currentFormulaTempla;
190
214
  return (0, _jsxRuntime.jsxs)("div", {
191
215
  className: 'Sqb-item-formula-args',
192
216
  children: [(0, _jsxRuntime.jsxs)("div", {
@@ -200,7 +224,7 @@ var CaseEditor = _react["default"].forwardRef(function (props, ref) {
200
224
  children: ["\u53C2\u6570", i + 1, ":"]
201
225
  }), (0, _jsxRuntime.jsx)(_formulaList["default"], {
202
226
  otherTypes: (_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.otherTypes,
203
- check: (formulaList === null || formulaList === void 0 || (_formulaList$fun$name3 = formulaList[fun.name]) === null || _formulaList$fun$name3 === void 0 || (_formulaList$fun$name3 = _formulaList$fun$name3.args) === null || _formulaList$fun$name3 === void 0 || (_formulaList$fun$name3 = _formulaList$fun$name3[i]) === null || _formulaList$fun$name3 === void 0 ? void 0 : _formulaList$fun$name3.check) || '',
227
+ check: (currentFormulaTemplate === null || currentFormulaTemplate === void 0 || (_currentFormulaTempla = currentFormulaTemplate.args) === null || _currentFormulaTempla === void 0 || (_currentFormulaTempla = _currentFormulaTempla[i]) === null || _currentFormulaTempla === void 0 ? void 0 : _currentFormulaTempla.check) || '',
204
228
  value: v.list,
205
229
  data: data,
206
230
  ref: _ref,
@@ -5,6 +5,7 @@ var _templateObject;
5
5
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  import React, { useEffect, useState, useMemo, useRef } from 'react';
7
7
  import cx from 'classnames';
8
+ import isEqual from 'lodash/isEqual';
8
9
  import './index.less';
9
10
  import FormulaList from '../formula-list';
10
11
  import { AddIcon, CloseIcon } from '../../icons';
@@ -22,7 +23,7 @@ var VisualBox = Styled.div.attrs({
22
23
  className: 'visual-box'
23
24
  })(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
24
25
  var CaseEditor = React.forwardRef(function (props, ref) {
25
- var _store$formulaTemplat, _formulaList$fun$name, _formulaList$fun$name2, _fun$args;
26
+ var _store$formulaTemplat, _fun$args;
26
27
  var store = useStore();
27
28
  var value = props.value,
28
29
  data = props.data,
@@ -42,6 +43,11 @@ var CaseEditor = React.forwardRef(function (props, ref) {
42
43
  var formulaList = useMemo(function () {
43
44
  return getObjTem(store.formulaTemplates);
44
45
  }, [store.formulaTemplates]);
46
+ var currentFormulaKey = fun.id || fun.name;
47
+ var currentFormulaTemplate = useMemo(function () {
48
+ return formulaList[currentFormulaKey];
49
+ }, [formulaList, currentFormulaKey]);
50
+ var effectiveArity = (currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.arity) || fun.arity;
45
51
  var _useState3 = useState({
46
52
  canAdd: true,
47
53
  canDel: true
@@ -50,8 +56,23 @@ var CaseEditor = React.forwardRef(function (props, ref) {
50
56
  formulaOpr = _useState4[0],
51
57
  setFormulaOpr = _useState4[1];
52
58
  useEffect(function () {
53
- setFormulaOpr(getParamActions(fun.args, fun.arity));
54
- }, [fun]);
59
+ setFormulaOpr(getParamActions(fun.args, effectiveArity));
60
+ }, [fun.args, effectiveArity]);
61
+ useEffect(function () {
62
+ if (!currentFormulaTemplate) return;
63
+ setFun(function (prev) {
64
+ var nextId = prev.id || currentFormulaKey;
65
+ var nextName = currentFormulaTemplate.name || prev.name;
66
+ if (prev.id === nextId && prev.name === nextName && isEqual(prev.arity, effectiveArity)) {
67
+ return prev;
68
+ }
69
+ return _objectSpread(_objectSpread({}, prev), {}, {
70
+ id: nextId,
71
+ name: nextName,
72
+ arity: effectiveArity
73
+ });
74
+ });
75
+ }, [currentFormulaKey, currentFormulaTemplate, effectiveArity]);
55
76
  var _ref = useRef(null);
56
77
  // EXPRESSION = 'expression', // 表达式
57
78
  // // FUNCTION = 'function', // 函数
@@ -75,6 +96,9 @@ var CaseEditor = React.forwardRef(function (props, ref) {
75
96
  // 确定
76
97
  var _onOk = function _onOk() {
77
98
  typeof onOk === 'function' && (onOk === null || onOk === void 0 ? void 0 : onOk(_objectSpread(_objectSpread({}, fun), {}, {
99
+ arity: effectiveArity,
100
+ id: currentFormulaKey,
101
+ name: (currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.name) || fun.name,
78
102
  quotes: getQuotes(fun, fun.args, formulaList)
79
103
  })));
80
104
  };
@@ -92,7 +116,7 @@ var CaseEditor = React.forwardRef(function (props, ref) {
92
116
  };
93
117
  var addParams = function addParams(index) {
94
118
  var _args = cloneDeep(fun.args);
95
- var tem = getTemArgs(formulaList === null || formulaList === void 0 ? void 0 : formulaList[fun.name].args)[index + 1] || {
119
+ var tem = getTemArgs(currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.args)[index + 1] || {
96
120
  type: AtomsTypeEnum.COLLECTION,
97
121
  list: []
98
122
  };
@@ -171,14 +195,14 @@ var CaseEditor = React.forwardRef(function (props, ref) {
171
195
  color: '#949aab'
172
196
  },
173
197
  children: [_jsxs("p", {
174
- children: ["\u63CF\u8FF0\uFF1A", (_formulaList$fun$name = formulaList[fun.name]) === null || _formulaList$fun$name === void 0 ? void 0 : _formulaList$fun$name.description]
198
+ children: ["\u63CF\u8FF0\uFF1A", currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.description]
175
199
  }), _jsxs("p", {
176
- children: ["\u6848\u4F8B\uFF1A", (_formulaList$fun$name2 = formulaList[fun.name]) === null || _formulaList$fun$name2 === void 0 ? void 0 : _formulaList$fun$name2.example]
200
+ children: ["\u6848\u4F8B\uFF1A", currentFormulaTemplate === null || currentFormulaTemplate === void 0 ? void 0 : currentFormulaTemplate.example]
177
201
  })]
178
202
  })]
179
203
  }), fun === null || fun === void 0 || (_fun$args = fun.args) === null || _fun$args === void 0 ? void 0 : _fun$args.map(function (v, i) {
180
204
  if (v.type === AtomsTypeEnum.COLLECTION) {
181
- var _store$preProps, _formulaList$fun$name3;
205
+ var _store$preProps, _currentFormulaTempla;
182
206
  return _jsxs("div", {
183
207
  className: 'Sqb-item-formula-args',
184
208
  children: [_jsxs("div", {
@@ -192,7 +216,7 @@ var CaseEditor = React.forwardRef(function (props, ref) {
192
216
  children: ["\u53C2\u6570", i + 1, ":"]
193
217
  }), _jsx(FormulaList, {
194
218
  otherTypes: (_store$preProps = store.preProps) === null || _store$preProps === void 0 ? void 0 : _store$preProps.otherTypes,
195
- check: (formulaList === null || formulaList === void 0 || (_formulaList$fun$name3 = formulaList[fun.name]) === null || _formulaList$fun$name3 === void 0 || (_formulaList$fun$name3 = _formulaList$fun$name3.args) === null || _formulaList$fun$name3 === void 0 || (_formulaList$fun$name3 = _formulaList$fun$name3[i]) === null || _formulaList$fun$name3 === void 0 ? void 0 : _formulaList$fun$name3.check) || '',
219
+ check: (currentFormulaTemplate === null || currentFormulaTemplate === void 0 || (_currentFormulaTempla = currentFormulaTemplate.args) === null || _currentFormulaTempla === void 0 || (_currentFormulaTempla = _currentFormulaTempla[i]) === null || _currentFormulaTempla === void 0 ? void 0 : _currentFormulaTempla.check) || '',
196
220
  value: v.list,
197
221
  data: data,
198
222
  ref: _ref,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gingkoo/pandora-metabase",
3
- "version": "1.0.115",
3
+ "version": "1.0.116",
4
4
  "description": "",
5
5
  "main": "lib/es/index.js",
6
6
  "module": "lib/es/index.js",