@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.
- package/dist/cjs/RuleBuilder/LogicSelector.d.ts +23 -0
- package/dist/cjs/RuleBuilder/LogicSelector.js +54 -0
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +209 -0
- package/dist/cjs/RuleBuilder/RuleCard.d.ts +20 -0
- package/dist/cjs/RuleBuilder/RuleCard.js +196 -0
- package/dist/cjs/RuleBuilder/RuleGroupEditor.d.ts +25 -0
- package/dist/cjs/RuleBuilder/RuleGroupEditor.js +191 -0
- package/dist/cjs/RuleBuilder/constants/operators.d.ts +47 -0
- package/dist/cjs/RuleBuilder/constants/operators.js +172 -0
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +286 -0
- package/dist/cjs/RuleBuilder/index.d.ts +25 -0
- package/dist/cjs/RuleBuilder/index.js +308 -0
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +80 -0
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +128 -0
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +81 -0
- package/dist/cjs/RuleBuilder/inputs/ValueInput.d.ts +29 -0
- package/dist/cjs/RuleBuilder/inputs/ValueInput.js +80 -0
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +45 -0
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +51 -0
- package/dist/cjs/RuleBuilder/styles/index.module.less +443 -0
- package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -0
- package/dist/cjs/RuleBuilder/types/index.d.ts +232 -0
- package/dist/cjs/RuleBuilder/types/index.js +83 -0
- package/dist/cjs/RuleBuilder/utils/pathHelpers.d.ts +65 -0
- package/dist/cjs/RuleBuilder/utils/pathHelpers.js +241 -0
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +154 -0
- package/dist/cjs/RuleBuilder/utils/validation.d.ts +25 -0
- package/dist/cjs/RuleBuilder/utils/validation.js +241 -0
- package/dist/cjs/components/RegexEditor/core/RegexEditor.d.ts +34 -0
- package/dist/cjs/components/RegexEditor/core/RegexEditor.js +223 -0
- package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -0
- package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.d.ts +49 -0
- package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +158 -0
- package/dist/cjs/components/RegexEditor/core/types.d.ts +79 -0
- package/dist/cjs/components/RegexEditor/core/types.js +5 -0
- package/dist/cjs/components/RegexEditor/hooks/index.d.ts +9 -0
- package/dist/cjs/components/RegexEditor/hooks/index.js +19 -0
- package/dist/cjs/components/RegexEditor/hooks/useRegexTester.d.ts +95 -0
- package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +234 -0
- package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.d.ts +71 -0
- package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +215 -0
- package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.d.ts +64 -0
- package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +438 -0
- package/dist/cjs/components/RegexEditor/index.d.ts +16 -0
- package/dist/cjs/components/RegexEditor/index.js +232 -0
- package/dist/cjs/components/RegexEditor/templates/TemplateSelector.d.ts +36 -0
- package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +322 -0
- package/dist/cjs/components/RegexEditor/templates/builtinTemplates.d.ts +36 -0
- package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +340 -0
- package/dist/cjs/components/RegexEditor/templates/index.d.ts +10 -0
- package/dist/cjs/components/RegexEditor/templates/index.js +184 -0
- package/dist/cjs/components/RegexEditor/templates/storage.d.ts +74 -0
- package/dist/cjs/components/RegexEditor/templates/storage.js +337 -0
- package/dist/cjs/components/RegexEditor/templates/templateManager.d.ts +67 -0
- package/dist/cjs/components/RegexEditor/templates/templateManager.js +277 -0
- package/dist/cjs/components/RegexEditor/templates/types.d.ts +111 -0
- package/dist/cjs/components/RegexEditor/templates/types.js +94 -0
- package/dist/cjs/components/RegexEditor/testing/types.d.ts +55 -0
- package/dist/cjs/components/RegexEditor/testing/types.js +5 -0
- package/dist/cjs/components/RegexEditor/validation/complexity.d.ts +22 -0
- package/dist/cjs/components/RegexEditor/validation/complexity.js +196 -0
- package/dist/cjs/components/RegexEditor/validation/parser.d.ts +53 -0
- package/dist/cjs/components/RegexEditor/validation/parser.js +129 -0
- package/dist/cjs/components/RegexEditor/validation/types.d.ts +146 -0
- package/dist/cjs/components/RegexEditor/validation/types.js +5 -0
- package/dist/cjs/components/RegexEditor/validation/validator.d.ts +60 -0
- package/dist/cjs/components/RegexEditor/validation/validator.js +218 -0
- package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.d.ts +20 -0
- package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +98 -0
- package/dist/cjs/components/RegexEditor/visualizer/MatchItem.d.ts +25 -0
- package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +201 -0
- package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.d.ts +32 -0
- package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +192 -0
- package/dist/cjs/components/RegexEditor/visualizer/RegexTester.d.ts +22 -0
- package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +255 -0
- package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.d.ts +19 -0
- package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +155 -0
- package/dist/cjs/components/RegexEditor/visualizer/index.d.ts +12 -0
- package/dist/cjs/components/RegexEditor/visualizer/index.js +76 -0
- package/dist/cjs/components/RegexEditor/visualizer/types.d.ts +131 -0
- package/dist/cjs/components/RegexEditor/visualizer/types.js +5 -0
- package/dist/cjs/components/RegexEditor/visualizer/utils.d.ts +106 -0
- package/dist/cjs/components/RegexEditor/visualizer/utils.js +268 -0
- package/dist/cjs/index.d.ts +5 -1
- package/dist/cjs/index.js +62 -0
- package/dist/cjs/standardFormDialog/StandardFormDialog.js +26 -5
- package/dist/cjs/standardFormDialog/useStandardFormSchema.d.ts +1 -1
- package/dist/cjs/standardFormDialog/withStandardForm.d.ts +2 -2
- package/dist/cjs/types/railroad-diagrams.d.ts +59 -0
- package/dist/cjs/types/regexp-tree.d.ts +175 -0
- package/dist/esm/RuleBuilder/LogicSelector.d.ts +23 -0
- package/dist/esm/RuleBuilder/LogicSelector.js +47 -0
- package/dist/esm/RuleBuilder/RuleBuilderContainer.d.ts +20 -0
- package/dist/esm/RuleBuilder/RuleBuilderContainer.js +203 -0
- package/dist/esm/RuleBuilder/RuleCard.d.ts +20 -0
- package/dist/esm/RuleBuilder/RuleCard.js +191 -0
- package/dist/esm/RuleBuilder/RuleGroupEditor.d.ts +25 -0
- package/dist/esm/RuleBuilder/RuleGroupEditor.js +184 -0
- package/dist/esm/RuleBuilder/constants/operators.d.ts +47 -0
- package/dist/esm/RuleBuilder/constants/operators.js +169 -0
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.d.ts +72 -0
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +271 -0
- package/dist/esm/RuleBuilder/index.d.ts +25 -0
- package/dist/esm/RuleBuilder/index.js +42 -0
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.d.ts +23 -0
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +73 -0
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.d.ts +21 -0
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +121 -0
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.d.ts +25 -0
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +74 -0
- package/dist/esm/RuleBuilder/inputs/ValueInput.d.ts +29 -0
- package/dist/esm/RuleBuilder/inputs/ValueInput.js +73 -0
- package/dist/esm/RuleBuilder/selectors/FieldSelector.d.ts +22 -0
- package/dist/esm/RuleBuilder/selectors/FieldSelector.js +38 -0
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.d.ts +22 -0
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +44 -0
- package/dist/esm/RuleBuilder/styles/index.module.less +443 -0
- package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -0
- package/dist/esm/RuleBuilder/types/index.d.ts +232 -0
- package/dist/esm/RuleBuilder/types/index.js +91 -0
- package/dist/esm/RuleBuilder/utils/pathHelpers.d.ts +65 -0
- package/dist/esm/RuleBuilder/utils/pathHelpers.js +228 -0
- package/dist/esm/RuleBuilder/utils/ruleHelpers.d.ts +47 -0
- package/dist/esm/RuleBuilder/utils/ruleHelpers.js +145 -0
- package/dist/esm/RuleBuilder/utils/validation.d.ts +25 -0
- package/dist/esm/RuleBuilder/utils/validation.js +236 -0
- package/dist/esm/components/RegexEditor/core/RegexEditor.d.ts +34 -0
- package/dist/esm/components/RegexEditor/core/RegexEditor.js +214 -0
- package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -0
- package/dist/esm/components/RegexEditor/core/extensions/errorMarker.d.ts +49 -0
- package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +154 -0
- package/dist/esm/components/RegexEditor/core/types.d.ts +79 -0
- package/dist/esm/components/RegexEditor/core/types.js +1 -0
- package/dist/esm/components/RegexEditor/hooks/index.d.ts +9 -0
- package/dist/esm/components/RegexEditor/hooks/index.js +8 -0
- package/dist/esm/components/RegexEditor/hooks/useRegexTester.d.ts +95 -0
- package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +230 -0
- package/dist/esm/components/RegexEditor/hooks/useRegexValidation.d.ts +71 -0
- package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +211 -0
- package/dist/esm/components/RegexEditor/hooks/useTemplateManager.d.ts +64 -0
- package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +430 -0
- package/dist/esm/components/RegexEditor/index.d.ts +16 -0
- package/dist/esm/components/RegexEditor/index.js +27 -0
- package/dist/esm/components/RegexEditor/templates/TemplateSelector.d.ts +36 -0
- package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +316 -0
- package/dist/esm/components/RegexEditor/templates/builtinTemplates.d.ts +36 -0
- package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +335 -0
- package/dist/esm/components/RegexEditor/templates/index.d.ts +10 -0
- package/dist/esm/components/RegexEditor/templates/index.js +19 -0
- package/dist/esm/components/RegexEditor/templates/storage.d.ts +74 -0
- package/dist/esm/components/RegexEditor/templates/storage.js +335 -0
- package/dist/esm/components/RegexEditor/templates/templateManager.d.ts +67 -0
- package/dist/esm/components/RegexEditor/templates/templateManager.js +274 -0
- package/dist/esm/components/RegexEditor/templates/types.d.ts +111 -0
- package/dist/esm/components/RegexEditor/templates/types.js +90 -0
- package/dist/esm/components/RegexEditor/testing/types.d.ts +55 -0
- package/dist/esm/components/RegexEditor/testing/types.js +1 -0
- package/dist/esm/components/RegexEditor/validation/complexity.d.ts +22 -0
- package/dist/esm/components/RegexEditor/validation/complexity.js +190 -0
- package/dist/esm/components/RegexEditor/validation/parser.d.ts +53 -0
- package/dist/esm/components/RegexEditor/validation/parser.js +123 -0
- package/dist/esm/components/RegexEditor/validation/types.d.ts +145 -0
- package/dist/esm/components/RegexEditor/validation/types.js +1 -0
- package/dist/esm/components/RegexEditor/validation/validator.d.ts +60 -0
- package/dist/esm/components/RegexEditor/validation/validator.js +213 -0
- package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.d.ts +20 -0
- package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +93 -0
- package/dist/esm/components/RegexEditor/visualizer/MatchItem.d.ts +25 -0
- package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +194 -0
- package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.d.ts +32 -0
- package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +186 -0
- package/dist/esm/components/RegexEditor/visualizer/RegexTester.d.ts +22 -0
- package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +248 -0
- package/dist/esm/components/RegexEditor/visualizer/astToRailroad.d.ts +18 -0
- package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +150 -0
- package/dist/esm/components/RegexEditor/visualizer/index.d.ts +12 -0
- package/dist/esm/components/RegexEditor/visualizer/index.js +17 -0
- package/dist/esm/components/RegexEditor/visualizer/types.d.ts +131 -0
- package/dist/esm/components/RegexEditor/visualizer/types.js +1 -0
- package/dist/esm/components/RegexEditor/visualizer/utils.d.ts +106 -0
- package/dist/esm/components/RegexEditor/visualizer/utils.js +256 -0
- package/dist/esm/index.d.ts +5 -1
- package/dist/esm/index.js +6 -2
- package/dist/esm/standardFormDialog/StandardFormDialog.js +26 -5
- package/dist/esm/types/railroad-diagrams.d.ts +59 -0
- package/dist/esm/types/regexp-tree.d.ts +175 -0
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +23 -7
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 正则表达式可视化 - 工具函数
|
|
3
|
+
*
|
|
4
|
+
* @module RegexEditor/visualizer/utils
|
|
5
|
+
* @description 提供匹配、标志转换等工具函数
|
|
6
|
+
*/
|
|
7
|
+
import type { RegexFlags, MatchResult } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* 将标志对象转换为标志字符串
|
|
10
|
+
*
|
|
11
|
+
* @param flags - 标志对象
|
|
12
|
+
* @returns 标志字符串 (如 "gim")
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* flagsToString({ global: true, ignoreCase: true })
|
|
17
|
+
* // => "gi"
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function flagsToString(flags?: RegexFlags): string;
|
|
21
|
+
/**
|
|
22
|
+
* 将标志字符串转换为标志对象
|
|
23
|
+
*
|
|
24
|
+
* @param flagsStr - 标志字符串 (如 "gim")
|
|
25
|
+
* @returns 标志对象
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* stringToFlags("gi")
|
|
30
|
+
* // => { global: true, ignoreCase: true }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function stringToFlags(flagsStr: string): RegexFlags;
|
|
34
|
+
/**
|
|
35
|
+
* 执行正则匹配并返回所有匹配结果
|
|
36
|
+
*
|
|
37
|
+
* @param pattern - 正则表达式模式
|
|
38
|
+
* @param text - 测试文本
|
|
39
|
+
* @param flags - 标志
|
|
40
|
+
* @param maxMatches - 最大匹配数量限制
|
|
41
|
+
* @param timeout - 超时时间 (毫秒)
|
|
42
|
+
* @returns 匹配结果数组,如果出错返回 null
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* const results = performMatch('\\d+', 'abc 123 def 456', { global: true });
|
|
47
|
+
* // => [
|
|
48
|
+
* // { index: 4, lastIndex: 7, fullMatch: '123', groups: ['123'] },
|
|
49
|
+
* // { index: 12, lastIndex: 15, fullMatch: '456', groups: ['456'] }
|
|
50
|
+
* // ]
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function performMatch(pattern: string, text: string, flags?: RegexFlags, maxMatches?: number, timeout?: number): MatchResult[] | null;
|
|
54
|
+
/**
|
|
55
|
+
* 执行正则替换并返回结果
|
|
56
|
+
*
|
|
57
|
+
* @param pattern - 正则表达式模式
|
|
58
|
+
* @param text - 原始文本
|
|
59
|
+
* @param replaceText - 替换文本 (支持 $1, $2 等)
|
|
60
|
+
* @param flags - 标志
|
|
61
|
+
* @returns 替换后的文本,如果出错返回 null
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* performReplace('(\\d+)', 'abc 123 def', 'NUM:$1', { global: true })
|
|
66
|
+
* // => "abc NUM:123 def"
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function performReplace(pattern: string, text: string, replaceText: string, flags?: RegexFlags): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* 高亮文本中的匹配部分
|
|
72
|
+
*
|
|
73
|
+
* @param text - 原始文本
|
|
74
|
+
* @param matches - 匹配结果数组
|
|
75
|
+
* @returns 带高亮标记的 HTML 字符串
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* highlightMatches('abc 123 def', [
|
|
80
|
+
* { index: 4, lastIndex: 7, fullMatch: '123', groups: ['123'] }
|
|
81
|
+
* ])
|
|
82
|
+
* // => 'abc <mark class="regex-match">123</mark> def'
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function highlightMatches(text: string, matches: MatchResult[]): string;
|
|
86
|
+
/**
|
|
87
|
+
* 格式化匹配位置
|
|
88
|
+
*
|
|
89
|
+
* @param match - 匹配结果
|
|
90
|
+
* @returns 格式化的位置字符串
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* formatPosition({ index: 10, lastIndex: 15, ... })
|
|
95
|
+
* // => "10-15"
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function formatPosition(match: MatchResult): string;
|
|
99
|
+
/**
|
|
100
|
+
* 检查正则表达式是否有效
|
|
101
|
+
*
|
|
102
|
+
* @param pattern - 正则表达式模式
|
|
103
|
+
* @param flags - 标志
|
|
104
|
+
* @returns 是否有效
|
|
105
|
+
*/
|
|
106
|
+
export declare function isValidRegex(pattern: string, flags?: RegexFlags): boolean;
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.flagsToString = flagsToString;
|
|
7
|
+
exports.formatPosition = formatPosition;
|
|
8
|
+
exports.highlightMatches = highlightMatches;
|
|
9
|
+
exports.isValidRegex = isValidRegex;
|
|
10
|
+
exports.performMatch = performMatch;
|
|
11
|
+
exports.performReplace = performReplace;
|
|
12
|
+
exports.stringToFlags = stringToFlags;
|
|
13
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
14
|
+
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."); }
|
|
15
|
+
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); }
|
|
16
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
17
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
18
|
+
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; }
|
|
19
|
+
/**
|
|
20
|
+
* 正则表达式可视化 - 工具函数
|
|
21
|
+
*
|
|
22
|
+
* @module RegexEditor/visualizer/utils
|
|
23
|
+
* @description 提供匹配、标志转换等工具函数
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* 将标志对象转换为标志字符串
|
|
28
|
+
*
|
|
29
|
+
* @param flags - 标志对象
|
|
30
|
+
* @returns 标志字符串 (如 "gim")
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* flagsToString({ global: true, ignoreCase: true })
|
|
35
|
+
* // => "gi"
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function flagsToString(flags) {
|
|
39
|
+
if (!flags) return '';
|
|
40
|
+
var result = '';
|
|
41
|
+
if (flags.global) result += 'g';
|
|
42
|
+
if (flags.ignoreCase) result += 'i';
|
|
43
|
+
if (flags.multiline) result += 'm';
|
|
44
|
+
if (flags.dotAll) result += 's';
|
|
45
|
+
if (flags.unicode) result += 'u';
|
|
46
|
+
if (flags.sticky) result += 'y';
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 将标志字符串转换为标志对象
|
|
52
|
+
*
|
|
53
|
+
* @param flagsStr - 标志字符串 (如 "gim")
|
|
54
|
+
* @returns 标志对象
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* stringToFlags("gi")
|
|
59
|
+
* // => { global: true, ignoreCase: true }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
function stringToFlags(flagsStr) {
|
|
63
|
+
return {
|
|
64
|
+
global: flagsStr.includes('g'),
|
|
65
|
+
ignoreCase: flagsStr.includes('i'),
|
|
66
|
+
multiline: flagsStr.includes('m'),
|
|
67
|
+
dotAll: flagsStr.includes('s'),
|
|
68
|
+
unicode: flagsStr.includes('u'),
|
|
69
|
+
sticky: flagsStr.includes('y')
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 执行正则匹配并返回所有匹配结果
|
|
75
|
+
*
|
|
76
|
+
* @param pattern - 正则表达式模式
|
|
77
|
+
* @param text - 测试文本
|
|
78
|
+
* @param flags - 标志
|
|
79
|
+
* @param maxMatches - 最大匹配数量限制
|
|
80
|
+
* @param timeout - 超时时间 (毫秒)
|
|
81
|
+
* @returns 匹配结果数组,如果出错返回 null
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* const results = performMatch('\\d+', 'abc 123 def 456', { global: true });
|
|
86
|
+
* // => [
|
|
87
|
+
* // { index: 4, lastIndex: 7, fullMatch: '123', groups: ['123'] },
|
|
88
|
+
* // { index: 12, lastIndex: 15, fullMatch: '456', groups: ['456'] }
|
|
89
|
+
* // ]
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
function performMatch(pattern, text, flags) {
|
|
93
|
+
var maxMatches = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1000;
|
|
94
|
+
var timeout = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 5000;
|
|
95
|
+
try {
|
|
96
|
+
// 创建正则表达式
|
|
97
|
+
var flagsStr = flagsToString(flags);
|
|
98
|
+
var regex = new RegExp(pattern, flagsStr);
|
|
99
|
+
var results = [];
|
|
100
|
+
var startTime = Date.now();
|
|
101
|
+
|
|
102
|
+
// 如果是全局匹配,使用 exec 循环
|
|
103
|
+
if (flags !== null && flags !== void 0 && flags.global) {
|
|
104
|
+
var match;
|
|
105
|
+
while ((match = regex.exec(text)) !== null) {
|
|
106
|
+
// 检查超时
|
|
107
|
+
if (Date.now() - startTime > timeout) {
|
|
108
|
+
console.warn('正则匹配超时');
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// 检查数量限制
|
|
113
|
+
if (results.length >= maxMatches) {
|
|
114
|
+
console.warn("\u5339\u914D\u6570\u91CF\u8D85\u8FC7\u9650\u5236 (".concat(maxMatches, ")"));
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
if (match.index !== undefined) {
|
|
118
|
+
results.push({
|
|
119
|
+
index: match.index,
|
|
120
|
+
lastIndex: match.index + match[0].length,
|
|
121
|
+
fullMatch: match[0],
|
|
122
|
+
groups: Array.from(match),
|
|
123
|
+
namedGroups: match.groups
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// 防止无限循环(零宽匹配)
|
|
128
|
+
if (match.index === regex.lastIndex) {
|
|
129
|
+
regex.lastIndex++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
// 非全局匹配,只匹配一次
|
|
134
|
+
var _match = regex.exec(text);
|
|
135
|
+
if (_match && _match.index !== undefined) {
|
|
136
|
+
results.push({
|
|
137
|
+
index: _match.index,
|
|
138
|
+
lastIndex: _match.index + _match[0].length,
|
|
139
|
+
fullMatch: _match[0],
|
|
140
|
+
groups: Array.from(_match),
|
|
141
|
+
namedGroups: _match.groups
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return results;
|
|
146
|
+
} catch (error) {
|
|
147
|
+
console.error('正则匹配错误:', error);
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 执行正则替换并返回结果
|
|
154
|
+
*
|
|
155
|
+
* @param pattern - 正则表达式模式
|
|
156
|
+
* @param text - 原始文本
|
|
157
|
+
* @param replaceText - 替换文本 (支持 $1, $2 等)
|
|
158
|
+
* @param flags - 标志
|
|
159
|
+
* @returns 替换后的文本,如果出错返回 null
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* performReplace('(\\d+)', 'abc 123 def', 'NUM:$1', { global: true })
|
|
164
|
+
* // => "abc NUM:123 def"
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
function performReplace(pattern, text, replaceText, flags) {
|
|
168
|
+
try {
|
|
169
|
+
var flagsStr = flagsToString(flags);
|
|
170
|
+
var regex = new RegExp(pattern, flagsStr);
|
|
171
|
+
return text.replace(regex, replaceText);
|
|
172
|
+
} catch (error) {
|
|
173
|
+
console.error('正则替换错误:', error);
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* 高亮文本中的匹配部分
|
|
180
|
+
*
|
|
181
|
+
* @param text - 原始文本
|
|
182
|
+
* @param matches - 匹配结果数组
|
|
183
|
+
* @returns 带高亮标记的 HTML 字符串
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* highlightMatches('abc 123 def', [
|
|
188
|
+
* { index: 4, lastIndex: 7, fullMatch: '123', groups: ['123'] }
|
|
189
|
+
* ])
|
|
190
|
+
* // => 'abc <mark class="regex-match">123</mark> def'
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
function highlightMatches(text, matches) {
|
|
194
|
+
if (!matches || matches.length === 0) {
|
|
195
|
+
return escapeHtml(text);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// 按索引排序
|
|
199
|
+
var sortedMatches = _toConsumableArray(matches).sort(function (a, b) {
|
|
200
|
+
return a.index - b.index;
|
|
201
|
+
});
|
|
202
|
+
var result = '';
|
|
203
|
+
var lastIndex = 0;
|
|
204
|
+
sortedMatches.forEach(function (match, idx) {
|
|
205
|
+
// 添加未匹配部分
|
|
206
|
+
if (match.index > lastIndex) {
|
|
207
|
+
result += escapeHtml(text.substring(lastIndex, match.index));
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// 添加匹配部分 (带高亮)
|
|
211
|
+
result += "<mark class=\"regex-match\" data-match-index=\"".concat(idx, "\">").concat(escapeHtml(match.fullMatch), "</mark>");
|
|
212
|
+
lastIndex = match.lastIndex;
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// 添加剩余部分
|
|
216
|
+
if (lastIndex < text.length) {
|
|
217
|
+
result += escapeHtml(text.substring(lastIndex));
|
|
218
|
+
}
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* 转义 HTML 特殊字符
|
|
224
|
+
*/
|
|
225
|
+
function escapeHtml(text) {
|
|
226
|
+
var map = {
|
|
227
|
+
'&': '&',
|
|
228
|
+
'<': '<',
|
|
229
|
+
'>': '>',
|
|
230
|
+
'"': '"',
|
|
231
|
+
"'": '''
|
|
232
|
+
};
|
|
233
|
+
return text.replace(/[&<>"']/g, function (char) {
|
|
234
|
+
return map[char];
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* 格式化匹配位置
|
|
240
|
+
*
|
|
241
|
+
* @param match - 匹配结果
|
|
242
|
+
* @returns 格式化的位置字符串
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```ts
|
|
246
|
+
* formatPosition({ index: 10, lastIndex: 15, ... })
|
|
247
|
+
* // => "10-15"
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
function formatPosition(match) {
|
|
251
|
+
return "".concat(match.index, "-").concat(match.lastIndex);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* 检查正则表达式是否有效
|
|
256
|
+
*
|
|
257
|
+
* @param pattern - 正则表达式模式
|
|
258
|
+
* @param flags - 标志
|
|
259
|
+
* @returns 是否有效
|
|
260
|
+
*/
|
|
261
|
+
function isValidRegex(pattern, flags) {
|
|
262
|
+
try {
|
|
263
|
+
new RegExp(pattern, flagsToString(flags));
|
|
264
|
+
return true;
|
|
265
|
+
} catch (_unused) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -18,9 +18,13 @@ import ConfirmPro from "./ConfirmPro";
|
|
|
18
18
|
import { GeneratedListPage } from "./generatedListPage";
|
|
19
19
|
import { StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField } from "./standardFormDialog";
|
|
20
20
|
import DeleteConfirm from "./deleteConfirm";
|
|
21
|
-
|
|
21
|
+
import { RuleBuilder } from "./RuleBuilder";
|
|
22
|
+
import { RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram } from "./components/RegexEditor";
|
|
23
|
+
export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram, };
|
|
22
24
|
export type * from "./generatedListPage";
|
|
23
25
|
export type * from "./standardFormDialog";
|
|
24
26
|
export type * from "./deleteConfirm";
|
|
25
27
|
export type * from "./importModal";
|
|
26
28
|
export type * from "./fullScreenAlert";
|
|
29
|
+
export type * from "./RuleBuilder";
|
|
30
|
+
export type { ParseResult as RegexParseResult, ValidationResult as RegexValidationResult, RegexError, ComplexityMetrics, ASTNode, AstRegExp, RegexTemplate, TestResult as RegexTestResult, CodeMirrorWrapperProps, RegexEditorProps, RegexFlags, MatchResult, RegexTesterProps, FlagsSelectorProps, MatchItemProps, RegexRailroadDiagramProps, } from "./components/RegexEditor";
|
package/dist/cjs/index.js
CHANGED
|
@@ -81,6 +81,12 @@ Object.defineProperty(exports, "FieldCreators", {
|
|
|
81
81
|
return _standardFormDialog.FieldCreators;
|
|
82
82
|
}
|
|
83
83
|
});
|
|
84
|
+
Object.defineProperty(exports, "FlagsSelector", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function get() {
|
|
87
|
+
return _RegexEditor.FlagsSelector;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
84
90
|
Object.defineProperty(exports, "FormDesigner", {
|
|
85
91
|
enumerable: true,
|
|
86
92
|
get: function get() {
|
|
@@ -123,18 +129,60 @@ Object.defineProperty(exports, "ImportModal", {
|
|
|
123
129
|
return _importModal.default;
|
|
124
130
|
}
|
|
125
131
|
});
|
|
132
|
+
Object.defineProperty(exports, "MatchItem", {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
get: function get() {
|
|
135
|
+
return _RegexEditor.MatchItem;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
126
138
|
Object.defineProperty(exports, "QueryBuilder", {
|
|
127
139
|
enumerable: true,
|
|
128
140
|
get: function get() {
|
|
129
141
|
return _queryBuilder.default;
|
|
130
142
|
}
|
|
131
143
|
});
|
|
144
|
+
Object.defineProperty(exports, "RegexEditor", {
|
|
145
|
+
enumerable: true,
|
|
146
|
+
get: function get() {
|
|
147
|
+
return _RegexEditor.RegexEditor;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(exports, "RegexRailroadDiagram", {
|
|
151
|
+
enumerable: true,
|
|
152
|
+
get: function get() {
|
|
153
|
+
return _RegexEditor.RegexRailroadDiagram;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
Object.defineProperty(exports, "RegexTester", {
|
|
157
|
+
enumerable: true,
|
|
158
|
+
get: function get() {
|
|
159
|
+
return _RegexEditor.RegexTester;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
Object.defineProperty(exports, "RuleBuilder", {
|
|
163
|
+
enumerable: true,
|
|
164
|
+
get: function get() {
|
|
165
|
+
return _RuleBuilder.RuleBuilder;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
132
168
|
Object.defineProperty(exports, "StandardFormDialog", {
|
|
133
169
|
enumerable: true,
|
|
134
170
|
get: function get() {
|
|
135
171
|
return _standardFormDialog.StandardFormDialog;
|
|
136
172
|
}
|
|
137
173
|
});
|
|
174
|
+
Object.defineProperty(exports, "TemplateCategory", {
|
|
175
|
+
enumerable: true,
|
|
176
|
+
get: function get() {
|
|
177
|
+
return _RegexEditor.TemplateCategory;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
Object.defineProperty(exports, "TemplateSelector", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function get() {
|
|
183
|
+
return _RegexEditor.TemplateSelector;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
138
186
|
Object.defineProperty(exports, "ToolBar", {
|
|
139
187
|
enumerable: true,
|
|
140
188
|
get: function get() {
|
|
@@ -159,6 +207,18 @@ Object.defineProperty(exports, "flattenTreeDeep", {
|
|
|
159
207
|
return _agGridPlus.flattenTreeDeep;
|
|
160
208
|
}
|
|
161
209
|
});
|
|
210
|
+
Object.defineProperty(exports, "useRegexValidation", {
|
|
211
|
+
enumerable: true,
|
|
212
|
+
get: function get() {
|
|
213
|
+
return _RegexEditor.useRegexValidation;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
Object.defineProperty(exports, "useTemplateManager", {
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function get() {
|
|
219
|
+
return _RegexEditor.useTemplateManager;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
162
222
|
Object.defineProperty(exports, "withStandardForm", {
|
|
163
223
|
enumerable: true,
|
|
164
224
|
get: function get() {
|
|
@@ -185,4 +245,6 @@ var _ConfirmPro = _interopRequireDefault(require("./ConfirmPro"));
|
|
|
185
245
|
var _generatedListPage = require("./generatedListPage");
|
|
186
246
|
var _standardFormDialog = require("./standardFormDialog");
|
|
187
247
|
var _deleteConfirm = _interopRequireDefault(require("./deleteConfirm"));
|
|
248
|
+
var _RuleBuilder = require("./RuleBuilder");
|
|
249
|
+
var _RegexEditor = require("./components/RegexEditor");
|
|
188
250
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -253,12 +253,33 @@ var StandardFormDialog = function StandardFormDialog(props) {
|
|
|
253
253
|
var errors = form.errors;
|
|
254
254
|
var errorFields = Object.keys(errors);
|
|
255
255
|
if (errorFields.length > 0) {
|
|
256
|
-
var fieldNames = errorFields.map(function (
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
256
|
+
var fieldNames = errorFields.map(function (fieldPath) {
|
|
257
|
+
try {
|
|
258
|
+
var _field$componentProps;
|
|
259
|
+
// 使用 query API 获取字段实例以获取正确的标题
|
|
260
|
+
var field = form.query(fieldPath).take();
|
|
261
|
+
// 优先使用 title,其次使用 componentProps.title,最后使用字段路径
|
|
262
|
+
return (field === null || field === void 0 ? void 0 : field.title) || (field === null || field === void 0 || (_field$componentProps = field.componentProps) === null || _field$componentProps === void 0 ? void 0 : _field$componentProps.title) || fieldPath;
|
|
263
|
+
} catch (_unused) {
|
|
264
|
+
// 如果查询失败,使用字段路径
|
|
265
|
+
return fieldPath;
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
// 限制显示数量,避免提示过长
|
|
270
|
+
var displayNames = fieldNames.slice(0, 5);
|
|
271
|
+
var remaining = fieldNames.length - displayNames.length;
|
|
272
|
+
var errorMessage = "\u8BF7\u68C0\u67E5\u8868\u5355\u9519\u8BEF\uFF1A".concat(displayNames.join('、'));
|
|
273
|
+
if (remaining > 0) {
|
|
274
|
+
errorMessage += " \u7B49".concat(fieldNames.length, "\u4E2A\u5B57\u6BB5");
|
|
275
|
+
}
|
|
276
|
+
_antd.message.error(errorMessage);
|
|
277
|
+
|
|
278
|
+
// 在控制台输出详细错误信息供调试
|
|
279
|
+
console.error('表单验证失败:', {
|
|
280
|
+
errorFields: fieldNames,
|
|
281
|
+
errors: errors
|
|
260
282
|
});
|
|
261
|
-
_antd.message.error("\u8BF7\u68C0\u67E5\u8868\u5355\u9519\u8BEF\uFF1A".concat(fieldNames.join(', ')));
|
|
262
283
|
}
|
|
263
284
|
}, []);
|
|
264
285
|
|
|
@@ -32,7 +32,7 @@ export declare const createSelectField: (title: string, options: Array<{
|
|
|
32
32
|
required?: boolean | undefined;
|
|
33
33
|
placeholder?: string | undefined;
|
|
34
34
|
gridSpan?: number | undefined;
|
|
35
|
-
mode?: "
|
|
35
|
+
mode?: "tags" | "multiple" | undefined;
|
|
36
36
|
} | undefined) => any;
|
|
37
37
|
/**
|
|
38
38
|
* 快速创建常用字段的工具函数集合
|
|
@@ -173,7 +173,7 @@ export declare const createSelectField: (title: string, options: {
|
|
|
173
173
|
export declare const createCascaderField: (title: string, options: any[], config?: {
|
|
174
174
|
required?: boolean | undefined;
|
|
175
175
|
changeOnSelect?: boolean | undefined;
|
|
176
|
-
expandTrigger?: "
|
|
176
|
+
expandTrigger?: "click" | "hover" | undefined;
|
|
177
177
|
placeholder?: string | undefined;
|
|
178
178
|
}) => {
|
|
179
179
|
type: string;
|
|
@@ -187,7 +187,7 @@ export declare const createCascaderField: (title: string, options: any[], config
|
|
|
187
187
|
};
|
|
188
188
|
options: any[];
|
|
189
189
|
changeOnSelect: boolean;
|
|
190
|
-
expandTrigger: "
|
|
190
|
+
expandTrigger: "click" | "hover";
|
|
191
191
|
};
|
|
192
192
|
};
|
|
193
193
|
export default withStandardForm;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for railroad-diagrams
|
|
3
|
+
* Project: https://github.com/tabatkins/railroad-diagrams
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
declare module 'railroad-diagrams' {
|
|
7
|
+
export class Diagram {
|
|
8
|
+
constructor(children: DiagramNode[]);
|
|
9
|
+
toSVG(): SVGElement;
|
|
10
|
+
toString(): string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class ComplexDiagram extends Diagram {}
|
|
14
|
+
|
|
15
|
+
export class Sequence {
|
|
16
|
+
constructor(children: DiagramNode[]);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class Choice {
|
|
20
|
+
constructor(defaultIndex: number, children: DiagramNode[]);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export class Optional {
|
|
24
|
+
constructor(child: DiagramNode, skip?: 'skip');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export class OneOrMore {
|
|
28
|
+
constructor(child: DiagramNode, repeat?: DiagramNode);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export class ZeroOrMore {
|
|
32
|
+
constructor(child: DiagramNode, repeat?: DiagramNode, skip?: 'skip');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class Terminal {
|
|
36
|
+
constructor(text: string);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class NonTerminal {
|
|
40
|
+
constructor(text: string);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export class Comment {
|
|
44
|
+
constructor(text: string);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export class Skip {}
|
|
48
|
+
|
|
49
|
+
export type DiagramNode =
|
|
50
|
+
| Sequence
|
|
51
|
+
| Choice
|
|
52
|
+
| Optional
|
|
53
|
+
| OneOrMore
|
|
54
|
+
| ZeroOrMore
|
|
55
|
+
| Terminal
|
|
56
|
+
| NonTerminal
|
|
57
|
+
| Comment
|
|
58
|
+
| Skip;
|
|
59
|
+
}
|