@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
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.RuleGroupEditor = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _antd = require("antd");
9
+ var _icons = require("@ant-design/icons");
10
+ var _RuleCard = require("./RuleCard");
11
+ var _LogicSelector = require("./LogicSelector");
12
+ var _RuleBuilderContext = require("./context/RuleBuilderContext");
13
+ var _pathHelpers = require("./utils/pathHelpers");
14
+ var _ruleHelpers = require("./utils/ruleHelpers");
15
+ var _indexModule = _interopRequireDefault(require("./styles/index.module.less"));
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ 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); }
20
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
21
+ 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."); }
22
+ 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); }
23
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
24
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
25
+ 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; }
26
+ 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; }
27
+ 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; }
28
+ 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; }
29
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
30
+ 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); } /**
31
+ * 规则组编辑器组件 - 紧凑版
32
+ *
33
+ * 生产环境优化:紧凑布局,小尺寸,优化空间利用
34
+ */
35
+ /**
36
+ * 规则组编辑器组件 - 紧凑版
37
+ * 移除Card组件,使用轻量级div布局
38
+ */
39
+ var RuleGroupEditor = exports.RuleGroupEditor = function RuleGroupEditor(_ref) {
40
+ var path = _ref.path,
41
+ level = _ref.level,
42
+ maxLevel = _ref.maxLevel,
43
+ _ref$readonly = _ref.readonly,
44
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
45
+ onChange = _ref.onChange;
46
+ var _useRuleBuilderContex = (0, _RuleBuilderContext.useRuleBuilderContext)(),
47
+ state = _useRuleBuilderContex.state,
48
+ dispatch = _useRuleBuilderContex.dispatch;
49
+ var currentGroup = (0, _pathHelpers.getRuleGroupByPath)(state.ruleGroup, path);
50
+ var handleLogicChange = (0, _react.useCallback)(function (logic) {
51
+ var updatedGroup = _objectSpread(_objectSpread({}, currentGroup), {}, {
52
+ logic: logic
53
+ });
54
+ dispatch({
55
+ type: 'UPDATE_RULE_GROUP',
56
+ payload: {
57
+ path: path,
58
+ group: updatedGroup
59
+ }
60
+ });
61
+ onChange === null || onChange === void 0 || onChange(updatedGroup);
62
+ }, [currentGroup, path, dispatch, onChange]);
63
+ var handleAddRule = (0, _react.useCallback)(function () {
64
+ var newRule = (0, _ruleHelpers.createEmptyRule)();
65
+ dispatch({
66
+ type: 'ADD_RULE',
67
+ payload: {
68
+ path: path,
69
+ rule: newRule
70
+ }
71
+ });
72
+ if (onChange) {
73
+ var updatedGroup = _objectSpread(_objectSpread({}, currentGroup), {}, {
74
+ rules: [].concat(_toConsumableArray(currentGroup.rules), [newRule])
75
+ });
76
+ onChange(updatedGroup);
77
+ }
78
+ }, [path, currentGroup, dispatch, onChange]);
79
+ var handleAddRuleGroup = (0, _react.useCallback)(function () {
80
+ if (level >= maxLevel) {
81
+ _antd.message.warning("\u89C4\u5219\u7EC4\u5D4C\u5957\u5C42\u7EA7\u4E0D\u80FD\u8D85\u8FC7 ".concat(maxLevel, " \u5C42"));
82
+ return;
83
+ }
84
+ var newGroup = (0, _ruleHelpers.createEmptyRuleGroup)();
85
+ dispatch({
86
+ type: 'ADD_RULE_GROUP',
87
+ payload: {
88
+ path: path,
89
+ group: newGroup
90
+ }
91
+ });
92
+ if (onChange) {
93
+ var updatedGroup = _objectSpread(_objectSpread({}, currentGroup), {}, {
94
+ groups: [].concat(_toConsumableArray(currentGroup.groups), [newGroup])
95
+ });
96
+ onChange(updatedGroup);
97
+ }
98
+ }, [level, maxLevel, path, currentGroup, dispatch, onChange]);
99
+ var handleDeleteGroup = (0, _react.useCallback)(function () {
100
+ if (level === 0) {
101
+ _antd.message.warning('根规则组不能删除');
102
+ return;
103
+ }
104
+ dispatch({
105
+ type: 'DELETE_RULE_GROUP',
106
+ payload: {
107
+ path: path
108
+ }
109
+ });
110
+ }, [level, path, dispatch]);
111
+ var levelClass = "level".concat(level);
112
+ var logicClass = currentGroup.logic === 1 ? _indexModule.default.orLogicGroup : '';
113
+ var className = "".concat(_indexModule.default.ruleGroupEditor, " ").concat(_indexModule.default[levelClass] || '', " ").concat(logicClass);
114
+ var marginLeft = level * 12; // 减小缩进
115
+
116
+ return /*#__PURE__*/_react.default.createElement("div", {
117
+ className: className,
118
+ style: {
119
+ marginLeft: marginLeft
120
+ }
121
+ }, /*#__PURE__*/_react.default.createElement("div", {
122
+ className: _indexModule.default.groupHeader
123
+ }, /*#__PURE__*/_react.default.createElement("div", {
124
+ className: _indexModule.default.groupTitle
125
+ }, /*#__PURE__*/_react.default.createElement(_icons.GroupOutlined, {
126
+ style: {
127
+ fontSize: '12px'
128
+ }
129
+ }), /*#__PURE__*/_react.default.createElement("span", null, "\u89C4\u5219\u7EC4 ", level), /*#__PURE__*/_react.default.createElement(_antd.Tag, {
130
+ color: currentGroup.logic === 0 ? 'blue' : 'orange',
131
+ style: {
132
+ marginLeft: '4px',
133
+ fontSize: '11px'
134
+ }
135
+ }, currentGroup.rules.length, "\u6761\u89C4\u5219", currentGroup.groups.length > 0 && " + ".concat(currentGroup.groups.length, "\u7EC4"))), /*#__PURE__*/_react.default.createElement("div", {
136
+ className: _indexModule.default.groupActions
137
+ }, /*#__PURE__*/_react.default.createElement(_LogicSelector.LogicSelector, {
138
+ value: currentGroup.logic,
139
+ onChange: handleLogicChange,
140
+ disabled: readonly,
141
+ size: "small"
142
+ }), !readonly && level > 0 && /*#__PURE__*/_react.default.createElement(_antd.Button, {
143
+ type: "text",
144
+ danger: true,
145
+ size: "small",
146
+ icon: /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null),
147
+ onClick: handleDeleteGroup,
148
+ title: "\u5220\u9664\u89C4\u5219\u7EC4"
149
+ }))), /*#__PURE__*/_react.default.createElement("div", {
150
+ className: _indexModule.default.groupContent
151
+ }, currentGroup.rules.map(function (rule, ruleIndex) {
152
+ var rulePath = [].concat(_toConsumableArray(path), [ruleIndex]);
153
+ return /*#__PURE__*/_react.default.createElement(_RuleCard.RuleCard, {
154
+ key: ruleIndex,
155
+ rule: rule,
156
+ path: rulePath,
157
+ readonly: readonly
158
+ });
159
+ }), currentGroup.groups.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
160
+ className: _indexModule.default.nestedGroups
161
+ }, currentGroup.groups.map(function (group, groupIndex) {
162
+ var groupPath = [].concat(_toConsumableArray(path), [groupIndex]);
163
+ return /*#__PURE__*/_react.default.createElement(RuleGroupEditor, {
164
+ key: groupIndex,
165
+ path: groupPath,
166
+ level: level + 1,
167
+ maxLevel: maxLevel,
168
+ readonly: readonly,
169
+ onChange: onChange
170
+ });
171
+ })), currentGroup.rules.length === 0 && currentGroup.groups.length === 0 && /*#__PURE__*/_react.default.createElement("div", {
172
+ className: _indexModule.default.emptyState
173
+ }, /*#__PURE__*/_react.default.createElement("div", {
174
+ className: _indexModule.default.emptyIcon
175
+ }, "\uD83D\uDCCB"), /*#__PURE__*/_react.default.createElement("div", {
176
+ className: _indexModule.default.emptyText
177
+ }, "\u6682\u65E0\u89C4\u5219")), !readonly && /*#__PURE__*/_react.default.createElement("div", {
178
+ className: _indexModule.default.addButtonGroup
179
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
180
+ type: "primary",
181
+ size: "small",
182
+ icon: /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, null),
183
+ onClick: handleAddRule
184
+ }, "\u6DFB\u52A0\u89C4\u5219"), level < maxLevel && /*#__PURE__*/_react.default.createElement(_antd.Button, {
185
+ type: "default",
186
+ size: "small",
187
+ icon: /*#__PURE__*/_react.default.createElement(_icons.GroupOutlined, null),
188
+ onClick: handleAddRuleGroup
189
+ }, "\u6DFB\u52A0\u89C4\u5219\u7EC4"))));
190
+ };
191
+ var _default = exports.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,172 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.operatorRequiresValue2 = exports.operatorRequiresValue = exports.operatorRequiresMultiValue = exports.getOperatorsByDataType = exports.getOperatorInfo = exports.OPERATOR_INFO_MAP = exports.MAX_NESTING_LEVEL = void 0;
7
+ var _types = require("../types");
8
+ var _OPERATOR_INFO_MAP;
9
+ 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); }
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
+ /**
20
+ * 所有操作符的显示信息
21
+ */
22
+ var OPERATOR_INFO_MAP = exports.OPERATOR_INFO_MAP = (_OPERATOR_INFO_MAP = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_OPERATOR_INFO_MAP, _types.MatchOperator.Equals, {
23
+ value: _types.MatchOperator.Equals,
24
+ label: '等于',
25
+ symbol: '=',
26
+ description: '字段值等于指定值',
27
+ requiresValue: true,
28
+ requiresValue2: false,
29
+ requiresMultiValue: false
30
+ }), _types.MatchOperator.NotEquals, {
31
+ value: _types.MatchOperator.NotEquals,
32
+ label: '不等于',
33
+ symbol: '≠',
34
+ description: '字段值不等于指定值',
35
+ requiresValue: true,
36
+ requiresValue2: false,
37
+ requiresMultiValue: false
38
+ }), _types.MatchOperator.GreaterThan, {
39
+ value: _types.MatchOperator.GreaterThan,
40
+ label: '大于',
41
+ symbol: '>',
42
+ description: '字段值大于指定值',
43
+ requiresValue: true,
44
+ requiresValue2: false,
45
+ requiresMultiValue: false
46
+ }), _types.MatchOperator.GreaterThanOrEqual, {
47
+ value: _types.MatchOperator.GreaterThanOrEqual,
48
+ label: '大于等于',
49
+ symbol: '≥',
50
+ description: '字段值大于或等于指定值',
51
+ requiresValue: true,
52
+ requiresValue2: false,
53
+ requiresMultiValue: false
54
+ }), _types.MatchOperator.LessThan, {
55
+ value: _types.MatchOperator.LessThan,
56
+ label: '小于',
57
+ symbol: '<',
58
+ description: '字段值小于指定值',
59
+ requiresValue: true,
60
+ requiresValue2: false,
61
+ requiresMultiValue: false
62
+ }), _types.MatchOperator.LessThanOrEqual, {
63
+ value: _types.MatchOperator.LessThanOrEqual,
64
+ label: '小于等于',
65
+ symbol: '≤',
66
+ description: '字段值小于或等于指定值',
67
+ requiresValue: true,
68
+ requiresValue2: false,
69
+ requiresMultiValue: false
70
+ }), _types.MatchOperator.In, {
71
+ value: _types.MatchOperator.In,
72
+ label: '在集合中',
73
+ symbol: 'IN',
74
+ description: '字段值在指定的值集合中',
75
+ requiresValue: false,
76
+ requiresValue2: false,
77
+ requiresMultiValue: true
78
+ }), _types.MatchOperator.NotIn, {
79
+ value: _types.MatchOperator.NotIn,
80
+ label: '不在集合中',
81
+ symbol: 'NOT IN',
82
+ description: '字段值不在指定的值集合中',
83
+ requiresValue: false,
84
+ requiresValue2: false,
85
+ requiresMultiValue: true
86
+ }), _types.MatchOperator.Between, {
87
+ value: _types.MatchOperator.Between,
88
+ label: '介于之间',
89
+ symbol: 'BETWEEN',
90
+ description: '字段值在指定的范围之间',
91
+ requiresValue: true,
92
+ requiresValue2: true,
93
+ requiresMultiValue: false
94
+ }), _types.MatchOperator.Like, {
95
+ value: _types.MatchOperator.Like,
96
+ label: '模糊匹配',
97
+ symbol: 'LIKE',
98
+ description: '字段值模糊匹配指定模式(支持 % 通配符)',
99
+ requiresValue: true,
100
+ requiresValue2: false,
101
+ requiresMultiValue: false
102
+ }), _defineProperty(_defineProperty(_OPERATOR_INFO_MAP, _types.MatchOperator.IsNull, {
103
+ value: _types.MatchOperator.IsNull,
104
+ label: '为空',
105
+ symbol: 'IS NULL',
106
+ description: '字段值为空(NULL)',
107
+ requiresValue: false,
108
+ requiresValue2: false,
109
+ requiresMultiValue: false
110
+ }), _types.MatchOperator.IsNotNull, {
111
+ value: _types.MatchOperator.IsNotNull,
112
+ label: '不为空',
113
+ symbol: 'IS NOT NULL',
114
+ description: '字段值不为空(NOT NULL)',
115
+ requiresValue: false,
116
+ requiresValue2: false,
117
+ requiresMultiValue: false
118
+ }));
119
+
120
+ /**
121
+ * 根据数据类型获取可用操作符
122
+ */
123
+ var getOperatorsByDataType = exports.getOperatorsByDataType = function getOperatorsByDataType(dataType) {
124
+ switch (dataType) {
125
+ case 'string':
126
+ return [_types.MatchOperator.Equals, _types.MatchOperator.NotEquals, _types.MatchOperator.In, _types.MatchOperator.NotIn, _types.MatchOperator.Like, _types.MatchOperator.IsNull, _types.MatchOperator.IsNotNull];
127
+ case 'number':
128
+ return [_types.MatchOperator.Equals, _types.MatchOperator.NotEquals, _types.MatchOperator.GreaterThan, _types.MatchOperator.GreaterThanOrEqual, _types.MatchOperator.LessThan, _types.MatchOperator.LessThanOrEqual, _types.MatchOperator.In, _types.MatchOperator.NotIn, _types.MatchOperator.Between, _types.MatchOperator.IsNull, _types.MatchOperator.IsNotNull];
129
+ case 'date':
130
+ return [_types.MatchOperator.Equals, _types.MatchOperator.NotEquals, _types.MatchOperator.GreaterThan, _types.MatchOperator.GreaterThanOrEqual, _types.MatchOperator.LessThan, _types.MatchOperator.LessThanOrEqual, _types.MatchOperator.Between, _types.MatchOperator.IsNull, _types.MatchOperator.IsNotNull];
131
+ case 'boolean':
132
+ return [_types.MatchOperator.Equals, _types.MatchOperator.NotEquals, _types.MatchOperator.IsNull, _types.MatchOperator.IsNotNull];
133
+ default:
134
+ return [];
135
+ }
136
+ };
137
+
138
+ /**
139
+ * 获取操作符信息
140
+ */
141
+ var getOperatorInfo = exports.getOperatorInfo = function getOperatorInfo(operator) {
142
+ return OPERATOR_INFO_MAP[operator];
143
+ };
144
+
145
+ /**
146
+ * 检查操作符是否需要值输入
147
+ */
148
+ var operatorRequiresValue = exports.operatorRequiresValue = function operatorRequiresValue(operator) {
149
+ var _OPERATOR_INFO_MAP$op;
150
+ return ((_OPERATOR_INFO_MAP$op = OPERATOR_INFO_MAP[operator]) === null || _OPERATOR_INFO_MAP$op === void 0 ? void 0 : _OPERATOR_INFO_MAP$op.requiresValue) || false;
151
+ };
152
+
153
+ /**
154
+ * 检查操作符是否需要第二个值(Between)
155
+ */
156
+ var operatorRequiresValue2 = exports.operatorRequiresValue2 = function operatorRequiresValue2(operator) {
157
+ var _OPERATOR_INFO_MAP$op2;
158
+ return ((_OPERATOR_INFO_MAP$op2 = OPERATOR_INFO_MAP[operator]) === null || _OPERATOR_INFO_MAP$op2 === void 0 ? void 0 : _OPERATOR_INFO_MAP$op2.requiresValue2) || false;
159
+ };
160
+
161
+ /**
162
+ * 检查操作符是否需要多个值(In/NotIn)
163
+ */
164
+ var operatorRequiresMultiValue = exports.operatorRequiresMultiValue = function operatorRequiresMultiValue(operator) {
165
+ var _OPERATOR_INFO_MAP$op3;
166
+ return ((_OPERATOR_INFO_MAP$op3 = OPERATOR_INFO_MAP[operator]) === null || _OPERATOR_INFO_MAP$op3 === void 0 ? void 0 : _OPERATOR_INFO_MAP$op3.requiresMultiValue) || false;
167
+ };
168
+
169
+ /**
170
+ * 最大嵌套层级
171
+ */
172
+ var MAX_NESTING_LEVEL = exports.MAX_NESTING_LEVEL = 5;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * 规则构建器状态管理 Context
3
+ * 使用 React Context + useReducer 模式实现全局状态管理
4
+ */
5
+ import React, { type ReactNode } from 'react';
6
+ import type { RuleBuilderState, RuleBuilderAction, RuleGroupDto, FieldDefinition, ValidationResult } from '../types';
7
+ /**
8
+ * Context 类型定义
9
+ */
10
+ interface RuleBuilderContextValue {
11
+ /** 当前状态 */
12
+ state: RuleBuilderState;
13
+ /** Dispatch 方法 */
14
+ dispatch: React.Dispatch<RuleBuilderAction>;
15
+ }
16
+ /**
17
+ * Provider Props
18
+ */
19
+ interface RuleBuilderProviderProps {
20
+ /** 子组件 */
21
+ children: ReactNode;
22
+ /** 初始规则组 */
23
+ initialRule?: RuleGroupDto;
24
+ /** 字段定义列表 */
25
+ fields: FieldDefinition[];
26
+ }
27
+ /**
28
+ * RuleBuilder Provider 组件
29
+ */
30
+ export declare function RuleBuilderProvider({ children, initialRule, fields, }: RuleBuilderProviderProps): JSX.Element;
31
+ /**
32
+ * 使用 RuleBuilder Context 的 Hook
33
+ * @throws {Error} 如果在 Provider 外部使用
34
+ */
35
+ export declare function useRuleBuilderContext(): RuleBuilderContextValue;
36
+ /**
37
+ * 便捷 Hook: 获取当前规则组
38
+ */
39
+ export declare function useRuleGroup(): RuleGroupDto;
40
+ /**
41
+ * 便捷 Hook: 获取字段列表
42
+ */
43
+ export declare function useFields(): FieldDefinition[];
44
+ /**
45
+ * 便捷 Hook: 获取加载状态
46
+ */
47
+ export declare function useLoading(): boolean;
48
+ /**
49
+ * 便捷 Hook: 获取验证结果
50
+ */
51
+ export declare function useValidation(): ValidationResult;
52
+ /**
53
+ * 便捷 Hook: 获取修改状态
54
+ */
55
+ export declare function useIsDirty(): boolean;
56
+ /**
57
+ * 便捷 Hook: 获取 state
58
+ */
59
+ export declare function useRuleBuilderState(): RuleBuilderState;
60
+ /**
61
+ * 便捷 Hook: 获取 dispatch
62
+ */
63
+ export declare function useRuleBuilderDispatch(): React.Dispatch<RuleBuilderAction>;
64
+ /**
65
+ * 便捷 Hook: 获取字段列表(别名,与 useFields 相同)
66
+ */
67
+ export declare function useRuleBuilderFields(): FieldDefinition[];
68
+ /**
69
+ * 便捷 Hook: 获取验证结果(别名,与 useValidation 相同)
70
+ */
71
+ export declare function useRuleBuilderValidation(): ValidationResult;
72
+ export {};