@nokecy/qc-ui 1.0.65 → 1.0.67

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 (197) hide show
  1. package/dist/cjs/RuleBuilder/LogicSelector.d.ts +23 -0
  2. package/dist/cjs/RuleBuilder/LogicSelector.js +54 -0
  3. package/dist/cjs/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
  4. package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +209 -0
  5. package/dist/cjs/RuleBuilder/RuleCard.d.ts +20 -0
  6. package/dist/cjs/RuleBuilder/RuleCard.js +196 -0
  7. package/dist/cjs/RuleBuilder/RuleGroupEditor.d.ts +25 -0
  8. package/dist/cjs/RuleBuilder/RuleGroupEditor.js +191 -0
  9. package/dist/cjs/RuleBuilder/constants/operators.d.ts +47 -0
  10. package/dist/cjs/RuleBuilder/constants/operators.js +172 -0
  11. package/dist/cjs/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
  12. package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +286 -0
  13. package/dist/cjs/RuleBuilder/index.d.ts +25 -0
  14. package/dist/cjs/RuleBuilder/index.js +308 -0
  15. package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
  16. package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +80 -0
  17. package/dist/cjs/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
  18. package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +128 -0
  19. package/dist/cjs/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
  20. package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +81 -0
  21. package/dist/cjs/RuleBuilder/inputs/ValueInput.d.ts +29 -0
  22. package/dist/cjs/RuleBuilder/inputs/ValueInput.js +80 -0
  23. package/dist/cjs/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
  24. package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +45 -0
  25. package/dist/cjs/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
  26. package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +51 -0
  27. package/dist/cjs/RuleBuilder/styles/index.module.less +443 -0
  28. package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -0
  29. package/dist/cjs/RuleBuilder/types/index.d.ts +232 -0
  30. package/dist/cjs/RuleBuilder/types/index.js +83 -0
  31. package/dist/cjs/RuleBuilder/utils/pathHelpers.d.ts +65 -0
  32. package/dist/cjs/RuleBuilder/utils/pathHelpers.js +241 -0
  33. package/dist/cjs/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
  34. package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +154 -0
  35. package/dist/cjs/RuleBuilder/utils/validation.d.ts +25 -0
  36. package/dist/cjs/RuleBuilder/utils/validation.js +241 -0
  37. package/dist/cjs/components/RegexEditor/core/RegexEditor.d.ts +34 -0
  38. package/dist/cjs/components/RegexEditor/core/RegexEditor.js +223 -0
  39. package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -0
  40. package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.d.ts +49 -0
  41. package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +158 -0
  42. package/dist/cjs/components/RegexEditor/core/types.d.ts +79 -0
  43. package/dist/cjs/components/RegexEditor/core/types.js +5 -0
  44. package/dist/cjs/components/RegexEditor/hooks/index.d.ts +9 -0
  45. package/dist/cjs/components/RegexEditor/hooks/index.js +19 -0
  46. package/dist/cjs/components/RegexEditor/hooks/useRegexTester.d.ts +95 -0
  47. package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +234 -0
  48. package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.d.ts +71 -0
  49. package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +215 -0
  50. package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.d.ts +64 -0
  51. package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +438 -0
  52. package/dist/cjs/components/RegexEditor/index.d.ts +16 -0
  53. package/dist/cjs/components/RegexEditor/index.js +232 -0
  54. package/dist/cjs/components/RegexEditor/templates/TemplateSelector.d.ts +36 -0
  55. package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +322 -0
  56. package/dist/cjs/components/RegexEditor/templates/builtinTemplates.d.ts +36 -0
  57. package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +340 -0
  58. package/dist/cjs/components/RegexEditor/templates/index.d.ts +10 -0
  59. package/dist/cjs/components/RegexEditor/templates/index.js +184 -0
  60. package/dist/cjs/components/RegexEditor/templates/storage.d.ts +74 -0
  61. package/dist/cjs/components/RegexEditor/templates/storage.js +337 -0
  62. package/dist/cjs/components/RegexEditor/templates/templateManager.d.ts +67 -0
  63. package/dist/cjs/components/RegexEditor/templates/templateManager.js +277 -0
  64. package/dist/cjs/components/RegexEditor/templates/types.d.ts +111 -0
  65. package/dist/cjs/components/RegexEditor/templates/types.js +94 -0
  66. package/dist/cjs/components/RegexEditor/testing/types.d.ts +55 -0
  67. package/dist/cjs/components/RegexEditor/testing/types.js +5 -0
  68. package/dist/cjs/components/RegexEditor/validation/complexity.d.ts +22 -0
  69. package/dist/cjs/components/RegexEditor/validation/complexity.js +196 -0
  70. package/dist/cjs/components/RegexEditor/validation/parser.d.ts +53 -0
  71. package/dist/cjs/components/RegexEditor/validation/parser.js +129 -0
  72. package/dist/cjs/components/RegexEditor/validation/types.d.ts +146 -0
  73. package/dist/cjs/components/RegexEditor/validation/types.js +5 -0
  74. package/dist/cjs/components/RegexEditor/validation/validator.d.ts +60 -0
  75. package/dist/cjs/components/RegexEditor/validation/validator.js +218 -0
  76. package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.d.ts +20 -0
  77. package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +98 -0
  78. package/dist/cjs/components/RegexEditor/visualizer/MatchItem.d.ts +25 -0
  79. package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +201 -0
  80. package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.d.ts +32 -0
  81. package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +192 -0
  82. package/dist/cjs/components/RegexEditor/visualizer/RegexTester.d.ts +22 -0
  83. package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +255 -0
  84. package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.d.ts +19 -0
  85. package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +155 -0
  86. package/dist/cjs/components/RegexEditor/visualizer/index.d.ts +12 -0
  87. package/dist/cjs/components/RegexEditor/visualizer/index.js +76 -0
  88. package/dist/cjs/components/RegexEditor/visualizer/types.d.ts +131 -0
  89. package/dist/cjs/components/RegexEditor/visualizer/types.js +5 -0
  90. package/dist/cjs/components/RegexEditor/visualizer/utils.d.ts +106 -0
  91. package/dist/cjs/components/RegexEditor/visualizer/utils.js +268 -0
  92. package/dist/cjs/index.d.ts +5 -1
  93. package/dist/cjs/index.js +62 -0
  94. package/dist/cjs/standardFormDialog/StandardFormDialog.js +26 -5
  95. package/dist/cjs/standardFormDialog/useStandardFormSchema.d.ts +1 -1
  96. package/dist/cjs/standardFormDialog/withStandardForm.d.ts +2 -2
  97. package/dist/cjs/types/railroad-diagrams.d.ts +59 -0
  98. package/dist/cjs/types/regexp-tree.d.ts +175 -0
  99. package/dist/esm/RuleBuilder/LogicSelector.d.ts +23 -0
  100. package/dist/esm/RuleBuilder/LogicSelector.js +47 -0
  101. package/dist/esm/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
  102. package/dist/esm/RuleBuilder/RuleBuilderContainer.js +203 -0
  103. package/dist/esm/RuleBuilder/RuleCard.d.ts +20 -0
  104. package/dist/esm/RuleBuilder/RuleCard.js +191 -0
  105. package/dist/esm/RuleBuilder/RuleGroupEditor.d.ts +25 -0
  106. package/dist/esm/RuleBuilder/RuleGroupEditor.js +184 -0
  107. package/dist/esm/RuleBuilder/constants/operators.d.ts +47 -0
  108. package/dist/esm/RuleBuilder/constants/operators.js +169 -0
  109. package/dist/esm/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
  110. package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +271 -0
  111. package/dist/esm/RuleBuilder/index.d.ts +25 -0
  112. package/dist/esm/RuleBuilder/index.js +42 -0
  113. package/dist/esm/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
  114. package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +73 -0
  115. package/dist/esm/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
  116. package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +121 -0
  117. package/dist/esm/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
  118. package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +74 -0
  119. package/dist/esm/RuleBuilder/inputs/ValueInput.d.ts +29 -0
  120. package/dist/esm/RuleBuilder/inputs/ValueInput.js +73 -0
  121. package/dist/esm/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
  122. package/dist/esm/RuleBuilder/selectors/FieldSelector.js +38 -0
  123. package/dist/esm/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
  124. package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +44 -0
  125. package/dist/esm/RuleBuilder/styles/index.module.less +443 -0
  126. package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -0
  127. package/dist/esm/RuleBuilder/types/index.d.ts +232 -0
  128. package/dist/esm/RuleBuilder/types/index.js +91 -0
  129. package/dist/esm/RuleBuilder/utils/pathHelpers.d.ts +65 -0
  130. package/dist/esm/RuleBuilder/utils/pathHelpers.js +228 -0
  131. package/dist/esm/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
  132. package/dist/esm/RuleBuilder/utils/ruleHelpers.js +145 -0
  133. package/dist/esm/RuleBuilder/utils/validation.d.ts +25 -0
  134. package/dist/esm/RuleBuilder/utils/validation.js +236 -0
  135. package/dist/esm/components/RegexEditor/core/RegexEditor.d.ts +34 -0
  136. package/dist/esm/components/RegexEditor/core/RegexEditor.js +214 -0
  137. package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -0
  138. package/dist/esm/components/RegexEditor/core/extensions/errorMarker.d.ts +49 -0
  139. package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +154 -0
  140. package/dist/esm/components/RegexEditor/core/types.d.ts +79 -0
  141. package/dist/esm/components/RegexEditor/core/types.js +1 -0
  142. package/dist/esm/components/RegexEditor/hooks/index.d.ts +9 -0
  143. package/dist/esm/components/RegexEditor/hooks/index.js +8 -0
  144. package/dist/esm/components/RegexEditor/hooks/useRegexTester.d.ts +95 -0
  145. package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +230 -0
  146. package/dist/esm/components/RegexEditor/hooks/useRegexValidation.d.ts +71 -0
  147. package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +211 -0
  148. package/dist/esm/components/RegexEditor/hooks/useTemplateManager.d.ts +64 -0
  149. package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +430 -0
  150. package/dist/esm/components/RegexEditor/index.d.ts +16 -0
  151. package/dist/esm/components/RegexEditor/index.js +27 -0
  152. package/dist/esm/components/RegexEditor/templates/TemplateSelector.d.ts +36 -0
  153. package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +316 -0
  154. package/dist/esm/components/RegexEditor/templates/builtinTemplates.d.ts +36 -0
  155. package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +335 -0
  156. package/dist/esm/components/RegexEditor/templates/index.d.ts +10 -0
  157. package/dist/esm/components/RegexEditor/templates/index.js +19 -0
  158. package/dist/esm/components/RegexEditor/templates/storage.d.ts +74 -0
  159. package/dist/esm/components/RegexEditor/templates/storage.js +335 -0
  160. package/dist/esm/components/RegexEditor/templates/templateManager.d.ts +67 -0
  161. package/dist/esm/components/RegexEditor/templates/templateManager.js +274 -0
  162. package/dist/esm/components/RegexEditor/templates/types.d.ts +111 -0
  163. package/dist/esm/components/RegexEditor/templates/types.js +90 -0
  164. package/dist/esm/components/RegexEditor/testing/types.d.ts +55 -0
  165. package/dist/esm/components/RegexEditor/testing/types.js +1 -0
  166. package/dist/esm/components/RegexEditor/validation/complexity.d.ts +22 -0
  167. package/dist/esm/components/RegexEditor/validation/complexity.js +190 -0
  168. package/dist/esm/components/RegexEditor/validation/parser.d.ts +53 -0
  169. package/dist/esm/components/RegexEditor/validation/parser.js +123 -0
  170. package/dist/esm/components/RegexEditor/validation/types.d.ts +145 -0
  171. package/dist/esm/components/RegexEditor/validation/types.js +1 -0
  172. package/dist/esm/components/RegexEditor/validation/validator.d.ts +60 -0
  173. package/dist/esm/components/RegexEditor/validation/validator.js +213 -0
  174. package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.d.ts +20 -0
  175. package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +93 -0
  176. package/dist/esm/components/RegexEditor/visualizer/MatchItem.d.ts +25 -0
  177. package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +194 -0
  178. package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.d.ts +32 -0
  179. package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +186 -0
  180. package/dist/esm/components/RegexEditor/visualizer/RegexTester.d.ts +22 -0
  181. package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +248 -0
  182. package/dist/esm/components/RegexEditor/visualizer/astToRailroad.d.ts +18 -0
  183. package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +150 -0
  184. package/dist/esm/components/RegexEditor/visualizer/index.d.ts +12 -0
  185. package/dist/esm/components/RegexEditor/visualizer/index.js +17 -0
  186. package/dist/esm/components/RegexEditor/visualizer/types.d.ts +131 -0
  187. package/dist/esm/components/RegexEditor/visualizer/types.js +1 -0
  188. package/dist/esm/components/RegexEditor/visualizer/utils.d.ts +106 -0
  189. package/dist/esm/components/RegexEditor/visualizer/utils.js +256 -0
  190. package/dist/esm/index.d.ts +5 -1
  191. package/dist/esm/index.js +6 -2
  192. package/dist/esm/standardFormDialog/StandardFormDialog.js +26 -5
  193. package/dist/esm/types/railroad-diagrams.d.ts +59 -0
  194. package/dist/esm/types/regexp-tree.d.ts +175 -0
  195. package/dist/umd/qc-ui.min.css +1 -1
  196. package/dist/umd/qc-ui.min.js +1 -1
  197. package/package.json +23 -7
@@ -0,0 +1,191 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ /**
8
+ * 规则卡片组件 - 紧凑版
9
+ * 生产环境优化:使用small尺寸,紧凑布局,优化空间利用
10
+ */
11
+
12
+ import React from 'react';
13
+ import { Button, Tooltip } from 'antd';
14
+ import { DeleteOutlined } from '@ant-design/icons';
15
+ import { FieldSelector } from "./selectors/FieldSelector";
16
+ import { OperatorSelector } from "./selectors/OperatorSelector";
17
+ import ValueInput from "./inputs/ValueInput";
18
+ import { useRuleBuilderContext } from "./context/RuleBuilderContext";
19
+ import { getOperatorInfo } from "./constants/operators";
20
+ import styles from "./styles/index.module.less";
21
+ /**
22
+ * 规则卡片组件 - 紧凑版
23
+ * 优化空间利用,使用内联布局
24
+ */
25
+ export var RuleCard = function RuleCard(_ref) {
26
+ var _ruleErrors$find, _ruleErrors$find2, _ruleErrors$find3, _ruleErrors$find4;
27
+ var rule = _ref.rule,
28
+ path = _ref.path,
29
+ _ref$readonly = _ref.readonly,
30
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly;
31
+ var _useRuleBuilderContex = useRuleBuilderContext(),
32
+ state = _useRuleBuilderContex.state,
33
+ dispatch = _useRuleBuilderContex.dispatch;
34
+
35
+ // 获取当前字段定义
36
+ var currentField = state.fields.find(function (f) {
37
+ return f.name === rule.fieldName;
38
+ });
39
+
40
+ // 获取当前规则的验证错误
41
+ var ruleErrors = state.validationResult.errors.filter(function (error) {
42
+ if (error.path.length !== path.length) return false;
43
+ return error.path.every(function (p, i) {
44
+ return p === path[i];
45
+ });
46
+ });
47
+
48
+ // 字段改变处理
49
+ var handleFieldChange = function handleFieldChange(fieldName) {
50
+ var newField = state.fields.find(function (f) {
51
+ return f.name === fieldName;
52
+ });
53
+ dispatch({
54
+ type: 'UPDATE_RULE',
55
+ payload: {
56
+ path: path,
57
+ rule: _objectSpread(_objectSpread({}, rule), {}, {
58
+ fieldName: fieldName,
59
+ value: undefined,
60
+ value2: undefined
61
+ })
62
+ }
63
+ });
64
+ };
65
+
66
+ // 操作符改变处理
67
+ var handleOperatorChange = function handleOperatorChange(operator) {
68
+ var operatorInfo = getOperatorInfo(operator);
69
+ var needsValue = operatorInfo.requiresValue;
70
+ var needsValue2 = operatorInfo.requiresValue2;
71
+ var needsMultiValue = operatorInfo.requiresMultiValue;
72
+ dispatch({
73
+ type: 'UPDATE_RULE',
74
+ payload: {
75
+ path: path,
76
+ rule: _objectSpread(_objectSpread({}, rule), {}, {
77
+ operator: operator,
78
+ value: needsValue || needsValue2 || needsMultiValue ? rule.value : undefined,
79
+ value2: needsValue2 ? rule.value2 : undefined
80
+ })
81
+ }
82
+ });
83
+ };
84
+
85
+ // 值改变处理
86
+ var handleValueChange = function handleValueChange(value, value2) {
87
+ dispatch({
88
+ type: 'UPDATE_RULE',
89
+ payload: {
90
+ path: path,
91
+ rule: _objectSpread(_objectSpread({}, rule), {}, {
92
+ value: value,
93
+ value2: value2
94
+ })
95
+ }
96
+ });
97
+ };
98
+
99
+ // 删除规则处理
100
+ var handleDelete = function handleDelete() {
101
+ dispatch({
102
+ type: 'DELETE_RULE',
103
+ payload: {
104
+ path: path
105
+ }
106
+ });
107
+ };
108
+ var hasError = ruleErrors.length > 0;
109
+ return /*#__PURE__*/React.createElement("div", {
110
+ className: styles.ruleCard
111
+ }, /*#__PURE__*/React.createElement("div", {
112
+ className: styles.ruleContent
113
+ }, /*#__PURE__*/React.createElement("div", {
114
+ className: styles.ruleField
115
+ }, /*#__PURE__*/React.createElement(FieldSelector, {
116
+ value: rule.fieldName,
117
+ onChange: handleFieldChange,
118
+ fields: state.fields,
119
+ disabled: readonly,
120
+ size: "small"
121
+ }), ruleErrors.some(function (e) {
122
+ return e.field === 'fieldName';
123
+ }) && /*#__PURE__*/React.createElement("div", {
124
+ style: {
125
+ color: '#ff4d4f',
126
+ fontSize: '11px',
127
+ marginTop: '2px'
128
+ }
129
+ }, (_ruleErrors$find = ruleErrors.find(function (e) {
130
+ return e.field === 'fieldName';
131
+ })) === null || _ruleErrors$find === void 0 ? void 0 : _ruleErrors$find.message)), /*#__PURE__*/React.createElement("div", {
132
+ className: styles.ruleOperator
133
+ }, /*#__PURE__*/React.createElement(OperatorSelector, {
134
+ value: rule.operator,
135
+ onChange: handleOperatorChange,
136
+ dataType: currentField === null || currentField === void 0 ? void 0 : currentField.dataType,
137
+ disabled: readonly,
138
+ size: "small"
139
+ }), ruleErrors.some(function (e) {
140
+ return e.field === 'operator';
141
+ }) && /*#__PURE__*/React.createElement("div", {
142
+ style: {
143
+ color: '#ff4d4f',
144
+ fontSize: '11px',
145
+ marginTop: '2px'
146
+ }
147
+ }, (_ruleErrors$find2 = ruleErrors.find(function (e) {
148
+ return e.field === 'operator';
149
+ })) === null || _ruleErrors$find2 === void 0 ? void 0 : _ruleErrors$find2.message)), /*#__PURE__*/React.createElement("div", {
150
+ className: styles.ruleValue
151
+ }, /*#__PURE__*/React.createElement(ValueInput, {
152
+ operator: rule.operator,
153
+ dataType: (currentField === null || currentField === void 0 ? void 0 : currentField.dataType) || 'string',
154
+ value: rule.value,
155
+ value2: rule.value2,
156
+ onChange: handleValueChange,
157
+ disabled: readonly,
158
+ size: "small"
159
+ }), ruleErrors.some(function (e) {
160
+ return e.field === 'value' || e.field === 'value2';
161
+ }) && /*#__PURE__*/React.createElement("div", {
162
+ style: {
163
+ color: '#ff4d4f',
164
+ fontSize: '11px',
165
+ marginTop: '2px'
166
+ }
167
+ }, (_ruleErrors$find3 = ruleErrors.find(function (e) {
168
+ return e.field === 'value' || e.field === 'value2';
169
+ })) === null || _ruleErrors$find3 === void 0 ? void 0 : _ruleErrors$find3.message)), !readonly && /*#__PURE__*/React.createElement("div", {
170
+ className: styles.ruleActions
171
+ }, /*#__PURE__*/React.createElement(Tooltip, {
172
+ title: "\u5220\u9664\u89C4\u5219"
173
+ }, /*#__PURE__*/React.createElement(Button, {
174
+ type: "text",
175
+ danger: true,
176
+ size: "small",
177
+ icon: /*#__PURE__*/React.createElement(DeleteOutlined, null),
178
+ onClick: handleDelete
179
+ })))), hasError && ruleErrors.some(function (e) {
180
+ return !e.field;
181
+ }) && /*#__PURE__*/React.createElement("div", {
182
+ style: {
183
+ color: '#ff4d4f',
184
+ fontSize: '11px',
185
+ marginTop: '4px'
186
+ }
187
+ }, (_ruleErrors$find4 = ruleErrors.find(function (e) {
188
+ return !e.field;
189
+ })) === null || _ruleErrors$find4 === void 0 ? void 0 : _ruleErrors$find4.message));
190
+ };
191
+ export default RuleCard;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 规则组编辑器组件 - 紧凑版
3
+ *
4
+ * 生产环境优化:紧凑布局,小尺寸,优化空间利用
5
+ */
6
+ import React from 'react';
7
+ import type { RuleGroupDto, RulePath } from './types';
8
+ export interface RuleGroupEditorProps {
9
+ /** 当前规则组的路径 */
10
+ path: RulePath;
11
+ /** 当前嵌套层级(从 0 开始) */
12
+ level: number;
13
+ /** 最大允许嵌套层级 */
14
+ maxLevel: number;
15
+ /** 是否只读模式 */
16
+ readonly?: boolean;
17
+ /** 规则组变更回调(可选) */
18
+ onChange?: (group: RuleGroupDto) => void;
19
+ }
20
+ /**
21
+ * 规则组编辑器组件 - 紧凑版
22
+ * 移除Card组件,使用轻量级div布局
23
+ */
24
+ export declare const RuleGroupEditor: React.FC<RuleGroupEditorProps>;
25
+ export default RuleGroupEditor;
@@ -0,0 +1,184 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
8
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
12
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
+ /**
14
+ * 规则组编辑器组件 - 紧凑版
15
+ *
16
+ * 生产环境优化:紧凑布局,小尺寸,优化空间利用
17
+ */
18
+
19
+ import React, { useCallback } from 'react';
20
+ import { Button, message, Tag } from 'antd';
21
+ import { PlusOutlined, DeleteOutlined, GroupOutlined } from '@ant-design/icons';
22
+ import { RuleCard } from "./RuleCard";
23
+ import { LogicSelector } from "./LogicSelector";
24
+ import { useRuleBuilderContext } from "./context/RuleBuilderContext";
25
+ import { getRuleGroupByPath } from "./utils/pathHelpers";
26
+ import { createEmptyRule, createEmptyRuleGroup } from "./utils/ruleHelpers";
27
+ import styles from "./styles/index.module.less";
28
+ /**
29
+ * 规则组编辑器组件 - 紧凑版
30
+ * 移除Card组件,使用轻量级div布局
31
+ */
32
+ export var RuleGroupEditor = function RuleGroupEditor(_ref) {
33
+ var path = _ref.path,
34
+ level = _ref.level,
35
+ maxLevel = _ref.maxLevel,
36
+ _ref$readonly = _ref.readonly,
37
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
38
+ onChange = _ref.onChange;
39
+ var _useRuleBuilderContex = useRuleBuilderContext(),
40
+ state = _useRuleBuilderContex.state,
41
+ dispatch = _useRuleBuilderContex.dispatch;
42
+ var currentGroup = getRuleGroupByPath(state.ruleGroup, path);
43
+ var handleLogicChange = useCallback(function (logic) {
44
+ var updatedGroup = _objectSpread(_objectSpread({}, currentGroup), {}, {
45
+ logic: logic
46
+ });
47
+ dispatch({
48
+ type: 'UPDATE_RULE_GROUP',
49
+ payload: {
50
+ path: path,
51
+ group: updatedGroup
52
+ }
53
+ });
54
+ onChange === null || onChange === void 0 || onChange(updatedGroup);
55
+ }, [currentGroup, path, dispatch, onChange]);
56
+ var handleAddRule = useCallback(function () {
57
+ var newRule = createEmptyRule();
58
+ dispatch({
59
+ type: 'ADD_RULE',
60
+ payload: {
61
+ path: path,
62
+ rule: newRule
63
+ }
64
+ });
65
+ if (onChange) {
66
+ var updatedGroup = _objectSpread(_objectSpread({}, currentGroup), {}, {
67
+ rules: [].concat(_toConsumableArray(currentGroup.rules), [newRule])
68
+ });
69
+ onChange(updatedGroup);
70
+ }
71
+ }, [path, currentGroup, dispatch, onChange]);
72
+ var handleAddRuleGroup = useCallback(function () {
73
+ if (level >= maxLevel) {
74
+ message.warning("\u89C4\u5219\u7EC4\u5D4C\u5957\u5C42\u7EA7\u4E0D\u80FD\u8D85\u8FC7 ".concat(maxLevel, " \u5C42"));
75
+ return;
76
+ }
77
+ var newGroup = createEmptyRuleGroup();
78
+ dispatch({
79
+ type: 'ADD_RULE_GROUP',
80
+ payload: {
81
+ path: path,
82
+ group: newGroup
83
+ }
84
+ });
85
+ if (onChange) {
86
+ var updatedGroup = _objectSpread(_objectSpread({}, currentGroup), {}, {
87
+ groups: [].concat(_toConsumableArray(currentGroup.groups), [newGroup])
88
+ });
89
+ onChange(updatedGroup);
90
+ }
91
+ }, [level, maxLevel, path, currentGroup, dispatch, onChange]);
92
+ var handleDeleteGroup = useCallback(function () {
93
+ if (level === 0) {
94
+ message.warning('根规则组不能删除');
95
+ return;
96
+ }
97
+ dispatch({
98
+ type: 'DELETE_RULE_GROUP',
99
+ payload: {
100
+ path: path
101
+ }
102
+ });
103
+ }, [level, path, dispatch]);
104
+ var levelClass = "level".concat(level);
105
+ var logicClass = currentGroup.logic === 1 ? styles.orLogicGroup : '';
106
+ var className = "".concat(styles.ruleGroupEditor, " ").concat(styles[levelClass] || '', " ").concat(logicClass);
107
+ var marginLeft = level * 12; // 减小缩进
108
+
109
+ return /*#__PURE__*/React.createElement("div", {
110
+ className: className,
111
+ style: {
112
+ marginLeft: marginLeft
113
+ }
114
+ }, /*#__PURE__*/React.createElement("div", {
115
+ className: styles.groupHeader
116
+ }, /*#__PURE__*/React.createElement("div", {
117
+ className: styles.groupTitle
118
+ }, /*#__PURE__*/React.createElement(GroupOutlined, {
119
+ style: {
120
+ fontSize: '12px'
121
+ }
122
+ }), /*#__PURE__*/React.createElement("span", null, "\u89C4\u5219\u7EC4 ", level), /*#__PURE__*/React.createElement(Tag, {
123
+ color: currentGroup.logic === 0 ? 'blue' : 'orange',
124
+ style: {
125
+ marginLeft: '4px',
126
+ fontSize: '11px'
127
+ }
128
+ }, currentGroup.rules.length, "\u6761\u89C4\u5219", currentGroup.groups.length > 0 && " + ".concat(currentGroup.groups.length, "\u7EC4"))), /*#__PURE__*/React.createElement("div", {
129
+ className: styles.groupActions
130
+ }, /*#__PURE__*/React.createElement(LogicSelector, {
131
+ value: currentGroup.logic,
132
+ onChange: handleLogicChange,
133
+ disabled: readonly,
134
+ size: "small"
135
+ }), !readonly && level > 0 && /*#__PURE__*/React.createElement(Button, {
136
+ type: "text",
137
+ danger: true,
138
+ size: "small",
139
+ icon: /*#__PURE__*/React.createElement(DeleteOutlined, null),
140
+ onClick: handleDeleteGroup,
141
+ title: "\u5220\u9664\u89C4\u5219\u7EC4"
142
+ }))), /*#__PURE__*/React.createElement("div", {
143
+ className: styles.groupContent
144
+ }, currentGroup.rules.map(function (rule, ruleIndex) {
145
+ var rulePath = [].concat(_toConsumableArray(path), [ruleIndex]);
146
+ return /*#__PURE__*/React.createElement(RuleCard, {
147
+ key: ruleIndex,
148
+ rule: rule,
149
+ path: rulePath,
150
+ readonly: readonly
151
+ });
152
+ }), currentGroup.groups.length > 0 && /*#__PURE__*/React.createElement("div", {
153
+ className: styles.nestedGroups
154
+ }, currentGroup.groups.map(function (group, groupIndex) {
155
+ var groupPath = [].concat(_toConsumableArray(path), [groupIndex]);
156
+ return /*#__PURE__*/React.createElement(RuleGroupEditor, {
157
+ key: groupIndex,
158
+ path: groupPath,
159
+ level: level + 1,
160
+ maxLevel: maxLevel,
161
+ readonly: readonly,
162
+ onChange: onChange
163
+ });
164
+ })), currentGroup.rules.length === 0 && currentGroup.groups.length === 0 && /*#__PURE__*/React.createElement("div", {
165
+ className: styles.emptyState
166
+ }, /*#__PURE__*/React.createElement("div", {
167
+ className: styles.emptyIcon
168
+ }, "\uD83D\uDCCB"), /*#__PURE__*/React.createElement("div", {
169
+ className: styles.emptyText
170
+ }, "\u6682\u65E0\u89C4\u5219")), !readonly && /*#__PURE__*/React.createElement("div", {
171
+ className: styles.addButtonGroup
172
+ }, /*#__PURE__*/React.createElement(Button, {
173
+ type: "primary",
174
+ size: "small",
175
+ icon: /*#__PURE__*/React.createElement(PlusOutlined, null),
176
+ onClick: handleAddRule
177
+ }, "\u6DFB\u52A0\u89C4\u5219"), level < maxLevel && /*#__PURE__*/React.createElement(Button, {
178
+ type: "default",
179
+ size: "small",
180
+ icon: /*#__PURE__*/React.createElement(GroupOutlined, null),
181
+ onClick: handleAddRuleGroup
182
+ }, "\u6DFB\u52A0\u89C4\u5219\u7EC4"))));
183
+ };
184
+ export default RuleGroupEditor;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 操作符常量定义
3
+ */
4
+ import { MatchOperator, FieldDataType } from '../types';
5
+ /**
6
+ * 操作符显示信息
7
+ */
8
+ export interface OperatorInfo {
9
+ value: MatchOperator;
10
+ label: string;
11
+ symbol: string;
12
+ description: string;
13
+ /** 是否需要输入值 */
14
+ requiresValue: boolean;
15
+ /** 是否需要第二个值(Between) */
16
+ requiresValue2: boolean;
17
+ /** 是否需要多个值(In/NotIn) */
18
+ requiresMultiValue: boolean;
19
+ }
20
+ /**
21
+ * 所有操作符的显示信息
22
+ */
23
+ export declare const OPERATOR_INFO_MAP: Record<MatchOperator, OperatorInfo>;
24
+ /**
25
+ * 根据数据类型获取可用操作符
26
+ */
27
+ export declare const getOperatorsByDataType: (dataType: FieldDataType) => MatchOperator[];
28
+ /**
29
+ * 获取操作符信息
30
+ */
31
+ export declare const getOperatorInfo: (operator: MatchOperator) => OperatorInfo;
32
+ /**
33
+ * 检查操作符是否需要值输入
34
+ */
35
+ export declare const operatorRequiresValue: (operator: MatchOperator) => boolean;
36
+ /**
37
+ * 检查操作符是否需要第二个值(Between)
38
+ */
39
+ export declare const operatorRequiresValue2: (operator: MatchOperator) => boolean;
40
+ /**
41
+ * 检查操作符是否需要多个值(In/NotIn)
42
+ */
43
+ export declare const operatorRequiresMultiValue: (operator: MatchOperator) => boolean;
44
+ /**
45
+ * 最大嵌套层级
46
+ */
47
+ export declare const MAX_NESTING_LEVEL = 5;
@@ -0,0 +1,169 @@
1
+ var _OPERATOR_INFO_MAP;
2
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
5
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ /**
7
+ * 操作符常量定义
8
+ */
9
+
10
+ import { MatchOperator } from "../types";
11
+
12
+ /**
13
+ * 操作符显示信息
14
+ */
15
+
16
+ /**
17
+ * 所有操作符的显示信息
18
+ */
19
+ export var OPERATOR_INFO_MAP = (_OPERATOR_INFO_MAP = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_OPERATOR_INFO_MAP, MatchOperator.Equals, {
20
+ value: MatchOperator.Equals,
21
+ label: '等于',
22
+ symbol: '=',
23
+ description: '字段值等于指定值',
24
+ requiresValue: true,
25
+ requiresValue2: false,
26
+ requiresMultiValue: false
27
+ }), MatchOperator.NotEquals, {
28
+ value: MatchOperator.NotEquals,
29
+ label: '不等于',
30
+ symbol: '≠',
31
+ description: '字段值不等于指定值',
32
+ requiresValue: true,
33
+ requiresValue2: false,
34
+ requiresMultiValue: false
35
+ }), MatchOperator.GreaterThan, {
36
+ value: MatchOperator.GreaterThan,
37
+ label: '大于',
38
+ symbol: '>',
39
+ description: '字段值大于指定值',
40
+ requiresValue: true,
41
+ requiresValue2: false,
42
+ requiresMultiValue: false
43
+ }), MatchOperator.GreaterThanOrEqual, {
44
+ value: MatchOperator.GreaterThanOrEqual,
45
+ label: '大于等于',
46
+ symbol: '≥',
47
+ description: '字段值大于或等于指定值',
48
+ requiresValue: true,
49
+ requiresValue2: false,
50
+ requiresMultiValue: false
51
+ }), MatchOperator.LessThan, {
52
+ value: MatchOperator.LessThan,
53
+ label: '小于',
54
+ symbol: '<',
55
+ description: '字段值小于指定值',
56
+ requiresValue: true,
57
+ requiresValue2: false,
58
+ requiresMultiValue: false
59
+ }), MatchOperator.LessThanOrEqual, {
60
+ value: MatchOperator.LessThanOrEqual,
61
+ label: '小于等于',
62
+ symbol: '≤',
63
+ description: '字段值小于或等于指定值',
64
+ requiresValue: true,
65
+ requiresValue2: false,
66
+ requiresMultiValue: false
67
+ }), MatchOperator.In, {
68
+ value: MatchOperator.In,
69
+ label: '在集合中',
70
+ symbol: 'IN',
71
+ description: '字段值在指定的值集合中',
72
+ requiresValue: false,
73
+ requiresValue2: false,
74
+ requiresMultiValue: true
75
+ }), MatchOperator.NotIn, {
76
+ value: MatchOperator.NotIn,
77
+ label: '不在集合中',
78
+ symbol: 'NOT IN',
79
+ description: '字段值不在指定的值集合中',
80
+ requiresValue: false,
81
+ requiresValue2: false,
82
+ requiresMultiValue: true
83
+ }), MatchOperator.Between, {
84
+ value: MatchOperator.Between,
85
+ label: '介于之间',
86
+ symbol: 'BETWEEN',
87
+ description: '字段值在指定的范围之间',
88
+ requiresValue: true,
89
+ requiresValue2: true,
90
+ requiresMultiValue: false
91
+ }), MatchOperator.Like, {
92
+ value: MatchOperator.Like,
93
+ label: '模糊匹配',
94
+ symbol: 'LIKE',
95
+ description: '字段值模糊匹配指定模式(支持 % 通配符)',
96
+ requiresValue: true,
97
+ requiresValue2: false,
98
+ requiresMultiValue: false
99
+ }), _defineProperty(_defineProperty(_OPERATOR_INFO_MAP, MatchOperator.IsNull, {
100
+ value: MatchOperator.IsNull,
101
+ label: '为空',
102
+ symbol: 'IS NULL',
103
+ description: '字段值为空(NULL)',
104
+ requiresValue: false,
105
+ requiresValue2: false,
106
+ requiresMultiValue: false
107
+ }), MatchOperator.IsNotNull, {
108
+ value: MatchOperator.IsNotNull,
109
+ label: '不为空',
110
+ symbol: 'IS NOT NULL',
111
+ description: '字段值不为空(NOT NULL)',
112
+ requiresValue: false,
113
+ requiresValue2: false,
114
+ requiresMultiValue: false
115
+ }));
116
+
117
+ /**
118
+ * 根据数据类型获取可用操作符
119
+ */
120
+ export var getOperatorsByDataType = function getOperatorsByDataType(dataType) {
121
+ switch (dataType) {
122
+ case 'string':
123
+ return [MatchOperator.Equals, MatchOperator.NotEquals, MatchOperator.In, MatchOperator.NotIn, MatchOperator.Like, MatchOperator.IsNull, MatchOperator.IsNotNull];
124
+ case 'number':
125
+ return [MatchOperator.Equals, MatchOperator.NotEquals, MatchOperator.GreaterThan, MatchOperator.GreaterThanOrEqual, MatchOperator.LessThan, MatchOperator.LessThanOrEqual, MatchOperator.In, MatchOperator.NotIn, MatchOperator.Between, MatchOperator.IsNull, MatchOperator.IsNotNull];
126
+ case 'date':
127
+ return [MatchOperator.Equals, MatchOperator.NotEquals, MatchOperator.GreaterThan, MatchOperator.GreaterThanOrEqual, MatchOperator.LessThan, MatchOperator.LessThanOrEqual, MatchOperator.Between, MatchOperator.IsNull, MatchOperator.IsNotNull];
128
+ case 'boolean':
129
+ return [MatchOperator.Equals, MatchOperator.NotEquals, MatchOperator.IsNull, MatchOperator.IsNotNull];
130
+ default:
131
+ return [];
132
+ }
133
+ };
134
+
135
+ /**
136
+ * 获取操作符信息
137
+ */
138
+ export var getOperatorInfo = function getOperatorInfo(operator) {
139
+ return OPERATOR_INFO_MAP[operator];
140
+ };
141
+
142
+ /**
143
+ * 检查操作符是否需要值输入
144
+ */
145
+ export var operatorRequiresValue = function operatorRequiresValue(operator) {
146
+ var _OPERATOR_INFO_MAP$op;
147
+ return ((_OPERATOR_INFO_MAP$op = OPERATOR_INFO_MAP[operator]) === null || _OPERATOR_INFO_MAP$op === void 0 ? void 0 : _OPERATOR_INFO_MAP$op.requiresValue) || false;
148
+ };
149
+
150
+ /**
151
+ * 检查操作符是否需要第二个值(Between)
152
+ */
153
+ export var operatorRequiresValue2 = function operatorRequiresValue2(operator) {
154
+ var _OPERATOR_INFO_MAP$op2;
155
+ return ((_OPERATOR_INFO_MAP$op2 = OPERATOR_INFO_MAP[operator]) === null || _OPERATOR_INFO_MAP$op2 === void 0 ? void 0 : _OPERATOR_INFO_MAP$op2.requiresValue2) || false;
156
+ };
157
+
158
+ /**
159
+ * 检查操作符是否需要多个值(In/NotIn)
160
+ */
161
+ export var operatorRequiresMultiValue = function operatorRequiresMultiValue(operator) {
162
+ var _OPERATOR_INFO_MAP$op3;
163
+ return ((_OPERATOR_INFO_MAP$op3 = OPERATOR_INFO_MAP[operator]) === null || _OPERATOR_INFO_MAP$op3 === void 0 ? void 0 : _OPERATOR_INFO_MAP$op3.requiresMultiValue) || false;
164
+ };
165
+
166
+ /**
167
+ * 最大嵌套层级
168
+ */
169
+ export var MAX_NESTING_LEVEL = 5;