@nokecy/qc-ui 1.1.36 → 1.1.38
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/README.md +25 -25
- package/dist/cjs/ConfirmPro/index.js +4 -4
- package/dist/cjs/RuleBuilder/LogicSelector.js +7 -7
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +27 -27
- package/dist/cjs/RuleBuilder/RuleCard.js +6 -6
- package/dist/cjs/RuleBuilder/RuleGroupEditor.js +7 -7
- package/dist/cjs/RuleBuilder/constants/operators.js +18 -18
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +38 -38
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +5 -5
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +5 -5
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +8 -8
- package/dist/cjs/RuleBuilder/inputs/ValueInput.js +8 -8
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +5 -5
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +5 -5
- package/dist/cjs/RuleBuilder/styles/index.module.less +443 -443
- package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -43
- package/dist/cjs/RuleBuilder/types/index.js +42 -42
- package/dist/cjs/RuleBuilder/utils/pathHelpers.js +47 -47
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +31 -31
- package/dist/cjs/RuleBuilder/utils/validation.js +22 -22
- package/dist/cjs/ag-grid-plus/_utils/boolSelect.js +5 -5
- package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +9 -9
- package/dist/cjs/ag-grid-plus/ag-grid-theme-builder.css +352 -352
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +83 -89
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +1 -5
- package/dist/cjs/ag-grid-plus/context/gridContext.js +19 -19
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +93 -93
- package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.js +8 -8
- package/dist/cjs/ag-grid-plus/errors/types.js +14 -14
- package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
- package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +44 -44
- package/dist/cjs/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
- package/dist/cjs/ag-grid-plus/hooks/useGridState.js +36 -36
- package/dist/cjs/ag-grid-plus/index.less +50 -50
- package/dist/cjs/ag-grid-plus/queryForm/index.less +72 -72
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +29 -29
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +9 -9
- package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +7 -7
- package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +76 -76
- package/dist/cjs/ag-grid-plus/setting/performanceMonitor.js +5 -5
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
- package/dist/cjs/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
- package/dist/cjs/ag-grid-plus/theme.js +3 -3
- package/dist/cjs/ag-grid-plus/toolBar/index.js +4 -4
- package/dist/cjs/ag-grid-plus/types.d.ts +2 -22
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +52 -52
- package/dist/cjs/ag-grid-plus/utils/constants.js +22 -22
- package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +22 -20
- package/dist/cjs/ag-grid-plus/utils/logger.js +2 -2
- package/dist/cjs/ag-grid-plus/utils/sanitize.js +10 -10
- package/dist/cjs/ag-grid-plus/utils.js +3 -3
- package/dist/cjs/array-table/columnHelper.js +43 -43
- package/dist/cjs/array-table/hooks.js +11 -9
- package/dist/cjs/array-table/index.js +40 -41
- package/dist/cjs/array-table/utils.js +4 -3
- package/dist/cjs/components/RegexEditor/core/RegexEditor.js +32 -32
- package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -119
- package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +52 -52
- package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +48 -48
- package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +54 -54
- package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +5 -5
- package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +28 -28
- package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +24 -24
- package/dist/cjs/components/RegexEditor/templates/storage.js +29 -29
- package/dist/cjs/components/RegexEditor/templates/templateManager.js +29 -29
- package/dist/cjs/components/RegexEditor/templates/types.js +74 -74
- package/dist/cjs/components/RegexEditor/validation/complexity.js +40 -40
- package/dist/cjs/components/RegexEditor/validation/parser.js +47 -47
- package/dist/cjs/components/RegexEditor/validation/validator.js +54 -54
- package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
- package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +20 -20
- package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
- package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +17 -17
- package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +11 -11
- package/dist/cjs/components/RegexEditor/visualizer/utils.js +92 -92
- package/dist/cjs/dashboard/dashboard/components/toolbar/style/index.less +49 -49
- package/dist/cjs/dashboard/dashboard/index.less +173 -173
- package/dist/cjs/dashboard/dashboard/utils.js +4 -4
- package/dist/cjs/dashboard/utils.js +8 -8
- package/dist/cjs/dashboard/widget/index.less +7 -7
- package/dist/cjs/dashboard/widget/selector/index.less +172 -172
- package/dist/cjs/deleteConfirm/index.js +17 -17
- package/dist/cjs/draggableModal/index.js +4 -4
- package/dist/cjs/draggableModal/style.less +122 -122
- package/dist/cjs/editable/index.js +16 -1
- package/dist/cjs/formDesigner/arrayTable/styles.less +2 -2
- package/dist/cjs/formDesigner/index.less +2 -2
- package/dist/cjs/fullScreenAlert/index.js +13 -13
- package/dist/cjs/fullScreenAlert/index.less +133 -133
- package/dist/cjs/generatedListPage/ConfigurableToolbar.js +2 -2
- package/dist/cjs/generatedListPage/GeneratedListPage.js +20 -20
- package/dist/cjs/generatedListPage/OptionsColumn.js +3 -3
- package/dist/cjs/generatedListPage/PerformanceMonitor.js +9 -9
- package/dist/cjs/generatedListPage/RequestManager.js +39 -39
- package/dist/cjs/generatedListPage/_utils/AccessWrapper.js +6 -6
- package/dist/cjs/generatedListPage/_utils/defaultHandlers.js +14 -14
- package/dist/cjs/generatedListPage/usePermissionCheck.js +27 -27
- package/dist/cjs/generatedListPage/useRequestManager.js +20 -20
- package/dist/cjs/importModal/index.js +4 -4
- package/dist/cjs/standardFormDialog/FormValidation.js +45 -45
- package/dist/cjs/standardFormDialog/PortalManager.js +46 -46
- package/dist/cjs/standardFormDialog/StandardFormDialog.js +20 -20
- package/dist/cjs/standardFormDialog/useStandardFormSchema.js +24 -24
- package/dist/cjs/toolBar/index.less +25 -25
- package/dist/cjs/types/railroad-diagrams.d.ts +59 -59
- package/dist/cjs/types/regexp-tree.d.ts +175 -175
- package/dist/esm/ConfirmPro/index.js +4 -4
- package/dist/esm/RuleBuilder/LogicSelector.js +7 -7
- package/dist/esm/RuleBuilder/RuleBuilderContainer.js +27 -27
- package/dist/esm/RuleBuilder/RuleCard.js +6 -6
- package/dist/esm/RuleBuilder/RuleGroupEditor.js +7 -7
- package/dist/esm/RuleBuilder/constants/operators.js +18 -18
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +38 -38
- package/dist/esm/RuleBuilder/index.js +6 -6
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +5 -5
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +5 -5
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +8 -8
- package/dist/esm/RuleBuilder/inputs/ValueInput.js +8 -8
- package/dist/esm/RuleBuilder/selectors/FieldSelector.js +5 -5
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +5 -5
- package/dist/esm/RuleBuilder/styles/index.module.less +443 -443
- package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -43
- package/dist/esm/RuleBuilder/types/index.js +42 -42
- package/dist/esm/RuleBuilder/utils/pathHelpers.js +47 -47
- package/dist/esm/RuleBuilder/utils/ruleHelpers.js +31 -31
- package/dist/esm/RuleBuilder/utils/validation.js +22 -22
- package/dist/esm/ag-grid-plus/_utils/boolSelect.js +5 -5
- package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +9 -9
- package/dist/esm/ag-grid-plus/ag-grid-theme-builder.css +352 -352
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +83 -89
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +1 -5
- package/dist/esm/ag-grid-plus/context/gridContext.js +19 -19
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
- package/dist/esm/ag-grid-plus/context/useSchemeManager.js +93 -93
- package/dist/esm/ag-grid-plus/errors/ErrorBoundary.js +8 -8
- package/dist/esm/ag-grid-plus/errors/types.js +14 -14
- package/dist/esm/ag-grid-plus/hooks/index.js +2 -2
- package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
- package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +44 -44
- package/dist/esm/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
- package/dist/esm/ag-grid-plus/hooks/useGridState.js +36 -36
- package/dist/esm/ag-grid-plus/index.less +50 -50
- package/dist/esm/ag-grid-plus/queryForm/index.less +72 -72
- package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +29 -29
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +9 -9
- package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +7 -7
- package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +76 -76
- package/dist/esm/ag-grid-plus/setting/performanceMonitor.js +5 -5
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
- package/dist/esm/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
- package/dist/esm/ag-grid-plus/theme.js +3 -3
- package/dist/esm/ag-grid-plus/toolBar/index.js +4 -4
- package/dist/esm/ag-grid-plus/types.d.ts +2 -22
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +52 -52
- package/dist/esm/ag-grid-plus/utils/constants.js +22 -22
- package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.d.ts +1 -0
- package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +29 -34
- package/dist/esm/ag-grid-plus/utils/logger.js +2 -2
- package/dist/esm/ag-grid-plus/utils/sanitize.js +10 -10
- package/dist/esm/ag-grid-plus/utils.js +3 -3
- package/dist/esm/array-table/columnHelper.js +43 -43
- package/dist/esm/array-table/hooks.js +11 -9
- package/dist/esm/array-table/index.js +40 -41
- package/dist/esm/array-table/utils.js +4 -3
- package/dist/esm/components/RegexEditor/core/RegexEditor.js +32 -32
- package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -119
- package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +52 -52
- package/dist/esm/components/RegexEditor/hooks/index.js +4 -4
- package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +48 -48
- package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +54 -54
- package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +5 -5
- package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +28 -28
- package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +24 -24
- package/dist/esm/components/RegexEditor/templates/index.js +2 -2
- package/dist/esm/components/RegexEditor/templates/storage.js +29 -29
- package/dist/esm/components/RegexEditor/templates/templateManager.js +29 -29
- package/dist/esm/components/RegexEditor/templates/types.js +74 -74
- package/dist/esm/components/RegexEditor/validation/complexity.js +40 -40
- package/dist/esm/components/RegexEditor/validation/parser.js +47 -47
- package/dist/esm/components/RegexEditor/validation/validator.js +54 -54
- package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
- package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +20 -20
- package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
- package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +17 -17
- package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +11 -11
- package/dist/esm/components/RegexEditor/visualizer/index.js +5 -5
- package/dist/esm/components/RegexEditor/visualizer/utils.js +92 -92
- package/dist/esm/dashboard/dashboard/components/toolbar/style/index.less +49 -49
- package/dist/esm/dashboard/dashboard/index.less +173 -173
- package/dist/esm/dashboard/dashboard/utils.js +4 -4
- package/dist/esm/dashboard/utils.js +8 -8
- package/dist/esm/dashboard/widget/index.less +7 -7
- package/dist/esm/dashboard/widget/selector/index.less +172 -172
- package/dist/esm/deleteConfirm/index.js +17 -17
- package/dist/esm/draggableModal/index.js +4 -4
- package/dist/esm/draggableModal/style.less +122 -122
- package/dist/esm/editable/index.js +16 -1
- package/dist/esm/formDesigner/arrayTable/styles.less +2 -2
- package/dist/esm/formDesigner/index.less +2 -2
- package/dist/esm/fullScreenAlert/index.js +13 -13
- package/dist/esm/fullScreenAlert/index.less +133 -133
- package/dist/esm/generatedListPage/ConfigurableToolbar.js +2 -2
- package/dist/esm/generatedListPage/GeneratedListPage.js +20 -20
- package/dist/esm/generatedListPage/OptionsColumn.js +3 -3
- package/dist/esm/generatedListPage/PerformanceMonitor.js +9 -9
- package/dist/esm/generatedListPage/RequestManager.js +39 -39
- package/dist/esm/generatedListPage/_utils/AccessWrapper.js +6 -6
- package/dist/esm/generatedListPage/_utils/defaultHandlers.js +14 -14
- package/dist/esm/generatedListPage/index.js +9 -9
- package/dist/esm/generatedListPage/usePermissionCheck.js +27 -27
- package/dist/esm/generatedListPage/useRequestManager.js +20 -20
- package/dist/esm/importModal/index.js +4 -4
- package/dist/esm/standardFormDialog/FormValidation.js +45 -45
- package/dist/esm/standardFormDialog/PortalManager.js +46 -46
- package/dist/esm/standardFormDialog/StandardFormDialog.js +20 -20
- package/dist/esm/standardFormDialog/useStandardFormSchema.js +24 -24
- package/dist/esm/standardFormDialog/withStandardForm.d.ts +2 -2
- package/dist/esm/toolBar/index.less +25 -25
- package/dist/esm/types/railroad-diagrams.d.ts +59 -59
- package/dist/esm/types/regexp-tree.d.ts +175 -175
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +90 -90
- package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
- package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -648
- package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
- package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -643
|
@@ -2,9 +2,9 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol
|
|
|
2
2
|
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); }
|
|
3
3
|
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; }
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
|
-
/**
|
|
6
|
-
* 单元格聚焦 Hook
|
|
7
|
-
* 处理 Editable 包装和普通输入框的聚焦逻辑
|
|
5
|
+
/**
|
|
6
|
+
* 单元格聚焦 Hook
|
|
7
|
+
* 处理 Editable 包装和普通输入框的聚焦逻辑
|
|
8
8
|
*/
|
|
9
9
|
export var useCellFocus = function useCellFocus() {
|
|
10
10
|
var focusInputInCell = useCallback(function (cell) {
|
|
@@ -86,9 +86,9 @@ export var useCellFocus = function useCellFocus() {
|
|
|
86
86
|
};
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
/**
|
|
90
|
-
* 键盘导航 Hook
|
|
91
|
-
* 处理方向键在表格单元格间的导航
|
|
89
|
+
/**
|
|
90
|
+
* 键盘导航 Hook
|
|
91
|
+
* 处理方向键在表格单元格间的导航
|
|
92
92
|
*/
|
|
93
93
|
export var useKeyboardNavigation = function useKeyboardNavigation(ref, dataSource, focusInputInCell) {
|
|
94
94
|
var handleCellKeyDown = useCallback(function (event) {
|
|
@@ -194,9 +194,9 @@ export var useKeyboardNavigation = function useKeyboardNavigation(ref, dataSourc
|
|
|
194
194
|
};
|
|
195
195
|
};
|
|
196
196
|
|
|
197
|
-
/**
|
|
198
|
-
* 行拖拽 Hook
|
|
199
|
-
* 处理行拖拽排序逻辑
|
|
197
|
+
/**
|
|
198
|
+
* 行拖拽 Hook
|
|
199
|
+
* 处理行拖拽排序逻辑
|
|
200
200
|
*/
|
|
201
201
|
export var useRowDrag = function useRowDrag(field) {
|
|
202
202
|
var handleRowDragMove = useCallback(function (event) {
|
|
@@ -209,6 +209,8 @@ export var useRowDrag = function useRowDrag(field) {
|
|
|
209
209
|
var dataSourceCopy = Array.isArray(field.value) ? field.value.slice() : [];
|
|
210
210
|
var fromIndex = dataSourceCopy.indexOf(movingData);
|
|
211
211
|
var toIndex = dataSourceCopy.indexOf(overData);
|
|
212
|
+
// 防护:任一索引未命中(引用不一致)时直接返回,避免 splice(-1) 误删末行 @author nokecy
|
|
213
|
+
if (fromIndex < 0 || toIndex < 0) return;
|
|
212
214
|
var newStore = dataSourceCopy.slice();
|
|
213
215
|
|
|
214
216
|
// 移动数组元素
|
|
@@ -112,10 +112,10 @@ var ArrayTableInner = observer(function (props) {
|
|
|
112
112
|
updatedAt: undefined
|
|
113
113
|
});
|
|
114
114
|
|
|
115
|
-
/**
|
|
116
|
-
* 【关键优化】使用 useMemo 稳定 columnDefs 引用
|
|
117
|
-
* 只在基础列定义(sources)变化时更新,避免数据变化导致列重置
|
|
118
|
-
* 列的状态(宽度、顺序、隐藏等)由方案通过 applyColumnState 控制,不需要通过 columnDefs 传递
|
|
115
|
+
/**
|
|
116
|
+
* 【关键优化】使用 useMemo 稳定 columnDefs 引用
|
|
117
|
+
* 只在基础列定义(sources)变化时更新,避免数据变化导致列重置
|
|
118
|
+
* 列的状态(宽度、顺序、隐藏等)由方案通过 applyColumnState 控制,不需要通过 columnDefs 传递
|
|
119
119
|
*/
|
|
120
120
|
var stableColumnDefs = useMemo(function () {
|
|
121
121
|
// 只依赖 sources,不依赖 dataSource 和 field.value
|
|
@@ -128,13 +128,13 @@ var ArrayTableInner = observer(function (props) {
|
|
|
128
128
|
return cols;
|
|
129
129
|
}, [sources, props.onRowDrag]); // 移除 field 依赖,避免数据变化时重新计算
|
|
130
130
|
|
|
131
|
-
/**
|
|
132
|
-
* 方案自动加载
|
|
133
|
-
*
|
|
134
|
-
* 参考 ag-gridPlus 优化方案:
|
|
135
|
-
* 1. 使用 Promise 链确保顺序执行,避免竞态条件
|
|
136
|
-
* 2. 使用双重 RAF 确保渲染完成
|
|
137
|
-
* 3. 完整的错误处理和清理机制
|
|
131
|
+
/**
|
|
132
|
+
* 方案自动加载
|
|
133
|
+
*
|
|
134
|
+
* 参考 ag-gridPlus 优化方案:
|
|
135
|
+
* 1. 使用 Promise 链确保顺序执行,避免竞态条件
|
|
136
|
+
* 2. 使用双重 RAF 确保渲染完成
|
|
137
|
+
* 3. 完整的错误处理和清理机制
|
|
138
138
|
*/
|
|
139
139
|
useEffect(function () {
|
|
140
140
|
// 检查必要条件
|
|
@@ -148,7 +148,7 @@ var ArrayTableInner = observer(function (props) {
|
|
|
148
148
|
if (isSameScheme && isSameVersion) {
|
|
149
149
|
return;
|
|
150
150
|
}
|
|
151
|
-
|
|
151
|
+
|
|
152
152
|
// 使用 Promise 链确保顺序执行,避免竞态条件
|
|
153
153
|
var cancelled = false;
|
|
154
154
|
Promise.resolve().then(function () {
|
|
@@ -166,7 +166,6 @@ var ArrayTableInner = observer(function (props) {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
// 2. 应用列状态(列顺序、宽度、隐藏、固定等)
|
|
169
|
-
|
|
170
169
|
var columnState = flatConfigToColumnState(currentScheme.columnConfig);
|
|
171
170
|
gridApiState.applyColumnState({
|
|
172
171
|
state: columnState,
|
|
@@ -352,34 +351,34 @@ var ArrayTableInner = observer(function (props) {
|
|
|
352
351
|
});
|
|
353
352
|
ArrayTableInner.displayName = "ArrayTableInner";
|
|
354
353
|
|
|
355
|
-
/**
|
|
356
|
-
* ArrayTable 组件
|
|
357
|
-
*
|
|
358
|
-
* 注意:需要在外部使用 GridPlusContext.Provider 包裹以提供方案管理功能
|
|
359
|
-
*
|
|
360
|
-
* @example
|
|
361
|
-
* ```tsx
|
|
362
|
-
* const adapter = useMemo(() => new LocalStorageSchemeAdapter({
|
|
363
|
-
* storageKey: `array-table-schemes-${gridKey}`
|
|
364
|
-
* }), [gridKey]);
|
|
365
|
-
*
|
|
366
|
-
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
367
|
-
*
|
|
368
|
-
* const contextValue = useMemo(() => ({
|
|
369
|
-
* extensibleColumns: [],
|
|
370
|
-
* columnState: undefined,
|
|
371
|
-
* onSaveColumnState: () => {},
|
|
372
|
-
* applyToGlobal: () => {},
|
|
373
|
-
* resetCurrent: () => {},
|
|
374
|
-
* resetAll: () => {},
|
|
375
|
-
* queryFormItems: [],
|
|
376
|
-
* ...schemeManager
|
|
377
|
-
* }), [schemeManager]);
|
|
378
|
-
*
|
|
379
|
-
* <GridPlusContext.Provider value={contextValue}>
|
|
380
|
-
* <ArrayTable gridKey="my-table" height={400} />
|
|
381
|
-
* </GridPlusContext.Provider>
|
|
382
|
-
* ```
|
|
354
|
+
/**
|
|
355
|
+
* ArrayTable 组件
|
|
356
|
+
*
|
|
357
|
+
* 注意:需要在外部使用 GridPlusContext.Provider 包裹以提供方案管理功能
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* ```tsx
|
|
361
|
+
* const adapter = useMemo(() => new LocalStorageSchemeAdapter({
|
|
362
|
+
* storageKey: `array-table-schemes-${gridKey}`
|
|
363
|
+
* }), [gridKey]);
|
|
364
|
+
*
|
|
365
|
+
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
366
|
+
*
|
|
367
|
+
* const contextValue = useMemo(() => ({
|
|
368
|
+
* extensibleColumns: [],
|
|
369
|
+
* columnState: undefined,
|
|
370
|
+
* onSaveColumnState: () => {},
|
|
371
|
+
* applyToGlobal: () => {},
|
|
372
|
+
* resetCurrent: () => {},
|
|
373
|
+
* resetAll: () => {},
|
|
374
|
+
* queryFormItems: [],
|
|
375
|
+
* ...schemeManager
|
|
376
|
+
* }), [schemeManager]);
|
|
377
|
+
*
|
|
378
|
+
* <GridPlusContext.Provider value={contextValue}>
|
|
379
|
+
* <ArrayTable gridKey="my-table" height={400} />
|
|
380
|
+
* </GridPlusContext.Provider>
|
|
381
|
+
* ```
|
|
383
382
|
*/
|
|
384
383
|
//@ts-ignore
|
|
385
384
|
var ArrayTable = ArrayTableInner;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
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
|
-
var _excluded = ["
|
|
2
|
+
var _excluded = ["hide", "sort", "sortIndex"];
|
|
3
3
|
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; }
|
|
4
4
|
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; }
|
|
5
5
|
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; }
|
|
@@ -142,8 +142,9 @@ var useArrayTableColumns = function useArrayTableColumns(dataSource, field, sour
|
|
|
142
142
|
// 【关键修复】移除可能干扰用户列状态的属性
|
|
143
143
|
// 这些属性应该由用户通过列配置(applyColumnState)控制,而不是从 columnDefs 继承
|
|
144
144
|
// 但保留 width 作为列的初始宽度
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
// 注意:pinned 不再剥离——作为 schema 默认固定列状态生效;用户运行时拖动/保存方案后
|
|
146
|
+
// 由 applyColumnState 在其后覆盖(用户优先),stableColumnDefs 会话内稳定不重置,故不冲突。@author nokecy
|
|
147
|
+
var hide = columnProps.hide,
|
|
147
148
|
sort = columnProps.sort,
|
|
148
149
|
sortIndex = columnProps.sortIndex,
|
|
149
150
|
safeColumnProps = _objectWithoutProperties(columnProps, _excluded);
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RegexEditor 组件
|
|
3
|
-
*
|
|
4
|
-
* @description
|
|
5
|
-
* CodeMirror 6 包装器组件,集成正则表达式验证和错误标注功能。
|
|
6
|
-
* 提供实时语法验证、错误高亮、复杂度分析等功能。
|
|
7
|
-
*
|
|
8
|
-
* @module RegexEditor/core/RegexEditor
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* <RegexEditor
|
|
13
|
-
* value={pattern}
|
|
14
|
-
* onChange={setPattern}
|
|
15
|
-
* placeholder="请输入正则表达式"
|
|
16
|
-
* showComplexity={true}
|
|
17
|
-
* onValidate={(result) => {
|
|
18
|
-
* if (!result.valid) {
|
|
19
|
-
* console.error('验证失败:', result.errors);
|
|
20
|
-
* }
|
|
21
|
-
* }}
|
|
22
|
-
* />
|
|
23
|
-
* ```
|
|
1
|
+
/**
|
|
2
|
+
* RegexEditor 组件
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* CodeMirror 6 包装器组件,集成正则表达式验证和错误标注功能。
|
|
6
|
+
* 提供实时语法验证、错误高亮、复杂度分析等功能。
|
|
7
|
+
*
|
|
8
|
+
* @module RegexEditor/core/RegexEditor
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <RegexEditor
|
|
13
|
+
* value={pattern}
|
|
14
|
+
* onChange={setPattern}
|
|
15
|
+
* placeholder="请输入正则表达式"
|
|
16
|
+
* showComplexity={true}
|
|
17
|
+
* onValidate={(result) => {
|
|
18
|
+
* if (!result.valid) {
|
|
19
|
+
* console.error('验证失败:', result.errors);
|
|
20
|
+
* }
|
|
21
|
+
* }}
|
|
22
|
+
* />
|
|
23
|
+
* ```
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
import React, { useMemo, useEffect, useRef } from 'react';
|
|
@@ -32,11 +32,11 @@ import { createErrorMarkers, updateErrorMarkers } from "./extensions/errorMarker
|
|
|
32
32
|
import { RegexRailroadDiagram } from "../visualizer/RegexRailroadDiagram";
|
|
33
33
|
import "./RegexEditor.less";
|
|
34
34
|
|
|
35
|
-
/**
|
|
36
|
-
* RegexEditor 组件
|
|
37
|
-
*
|
|
38
|
-
* @param props - 组件属性
|
|
39
|
-
* @returns React 组件
|
|
35
|
+
/**
|
|
36
|
+
* RegexEditor 组件
|
|
37
|
+
*
|
|
38
|
+
* @param props - 组件属性
|
|
39
|
+
* @returns React 组件
|
|
40
40
|
*/
|
|
41
41
|
export var RegexEditor = function RegexEditor(_ref) {
|
|
42
42
|
var _ref$value = _ref.value,
|
|
@@ -192,8 +192,8 @@ export var RegexEditor = function RegexEditor(_ref) {
|
|
|
192
192
|
})));
|
|
193
193
|
};
|
|
194
194
|
|
|
195
|
-
/**
|
|
196
|
-
* 获取评分等级
|
|
195
|
+
/**
|
|
196
|
+
* 获取评分等级
|
|
197
197
|
*/
|
|
198
198
|
var getScoreLevel = function getScoreLevel(score) {
|
|
199
199
|
if (score >= 80) return 'high';
|
|
@@ -201,8 +201,8 @@ var getScoreLevel = function getScoreLevel(score) {
|
|
|
201
201
|
return 'low';
|
|
202
202
|
};
|
|
203
203
|
|
|
204
|
-
/**
|
|
205
|
-
* 获取风险标签
|
|
204
|
+
/**
|
|
205
|
+
* 获取风险标签
|
|
206
206
|
*/
|
|
207
207
|
var getRiskLabel = function getRiskLabel(risk) {
|
|
208
208
|
var labels = {
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RegexEditor 组件样式
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
.regex-editor {
|
|
6
|
-
display: flex;
|
|
7
|
-
flex-direction: column;
|
|
8
|
-
gap: 12px;
|
|
9
|
-
|
|
10
|
-
// 复杂度信息区域
|
|
11
|
-
.regex-complexity {
|
|
12
|
-
padding: 12px;
|
|
13
|
-
background-color: #fafafa;
|
|
14
|
-
border: 1px solid #d9d9d9;
|
|
15
|
-
border-radius: 2px;
|
|
16
|
-
font-size: 13px;
|
|
17
|
-
|
|
18
|
-
.complexity-item {
|
|
19
|
-
display: flex;
|
|
20
|
-
align-items: center;
|
|
21
|
-
margin-bottom: 8px;
|
|
22
|
-
|
|
23
|
-
&:last-child {
|
|
24
|
-
margin-bottom: 0;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.label {
|
|
28
|
-
font-weight: 500;
|
|
29
|
-
color: #595959;
|
|
30
|
-
margin-right: 8px;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.score {
|
|
34
|
-
padding: 2px 8px;
|
|
35
|
-
border-radius: 2px;
|
|
36
|
-
font-weight: 600;
|
|
37
|
-
|
|
38
|
-
&.score-high {
|
|
39
|
-
background-color: #f6ffed;
|
|
40
|
-
color: #52c41a;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
&.score-medium {
|
|
44
|
-
background-color: #fffbe6;
|
|
45
|
-
color: #faad14;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
&.score-low {
|
|
49
|
-
background-color: #fff2f0;
|
|
50
|
-
color: #ff4d4f;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.risk {
|
|
55
|
-
padding: 2px 8px;
|
|
56
|
-
border-radius: 2px;
|
|
57
|
-
font-weight: 600;
|
|
58
|
-
|
|
59
|
-
&.risk-low {
|
|
60
|
-
background-color: #f6ffed;
|
|
61
|
-
color: #52c41a;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
&.risk-medium {
|
|
65
|
-
background-color: #fffbe6;
|
|
66
|
-
color: #faad14;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
&.risk-high {
|
|
70
|
-
background-color: #fff2f0;
|
|
71
|
-
color: #ff4d4f;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.complexity-suggestions {
|
|
77
|
-
margin-top: 12px;
|
|
78
|
-
padding-top: 12px;
|
|
79
|
-
border-top: 1px solid #e8e8e8;
|
|
80
|
-
|
|
81
|
-
.suggestions-title {
|
|
82
|
-
font-weight: 500;
|
|
83
|
-
color: #595959;
|
|
84
|
-
margin-bottom: 8px;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
ul {
|
|
88
|
-
margin: 0;
|
|
89
|
-
padding-left: 20px;
|
|
90
|
-
|
|
91
|
-
li {
|
|
92
|
-
color: #8c8c8c;
|
|
93
|
-
line-height: 1.6;
|
|
94
|
-
margin-bottom: 4px;
|
|
95
|
-
|
|
96
|
-
&:last-child {
|
|
97
|
-
margin-bottom: 0;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// 错误标注样式
|
|
105
|
-
.cm-regex-error {
|
|
106
|
-
text-decoration: wavy underline red;
|
|
107
|
-
text-decoration-skip-ink: none;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.cm-regex-warning {
|
|
111
|
-
text-decoration: wavy underline orange;
|
|
112
|
-
text-decoration-skip-ink: none;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.cm-regex-info {
|
|
116
|
-
text-decoration: wavy underline blue;
|
|
117
|
-
text-decoration-skip-ink: none;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* RegexEditor 组件样式
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
.regex-editor {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
gap: 12px;
|
|
9
|
+
|
|
10
|
+
// 复杂度信息区域
|
|
11
|
+
.regex-complexity {
|
|
12
|
+
padding: 12px;
|
|
13
|
+
background-color: #fafafa;
|
|
14
|
+
border: 1px solid #d9d9d9;
|
|
15
|
+
border-radius: 2px;
|
|
16
|
+
font-size: 13px;
|
|
17
|
+
|
|
18
|
+
.complexity-item {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
margin-bottom: 8px;
|
|
22
|
+
|
|
23
|
+
&:last-child {
|
|
24
|
+
margin-bottom: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.label {
|
|
28
|
+
font-weight: 500;
|
|
29
|
+
color: #595959;
|
|
30
|
+
margin-right: 8px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.score {
|
|
34
|
+
padding: 2px 8px;
|
|
35
|
+
border-radius: 2px;
|
|
36
|
+
font-weight: 600;
|
|
37
|
+
|
|
38
|
+
&.score-high {
|
|
39
|
+
background-color: #f6ffed;
|
|
40
|
+
color: #52c41a;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&.score-medium {
|
|
44
|
+
background-color: #fffbe6;
|
|
45
|
+
color: #faad14;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&.score-low {
|
|
49
|
+
background-color: #fff2f0;
|
|
50
|
+
color: #ff4d4f;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.risk {
|
|
55
|
+
padding: 2px 8px;
|
|
56
|
+
border-radius: 2px;
|
|
57
|
+
font-weight: 600;
|
|
58
|
+
|
|
59
|
+
&.risk-low {
|
|
60
|
+
background-color: #f6ffed;
|
|
61
|
+
color: #52c41a;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
&.risk-medium {
|
|
65
|
+
background-color: #fffbe6;
|
|
66
|
+
color: #faad14;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&.risk-high {
|
|
70
|
+
background-color: #fff2f0;
|
|
71
|
+
color: #ff4d4f;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.complexity-suggestions {
|
|
77
|
+
margin-top: 12px;
|
|
78
|
+
padding-top: 12px;
|
|
79
|
+
border-top: 1px solid #e8e8e8;
|
|
80
|
+
|
|
81
|
+
.suggestions-title {
|
|
82
|
+
font-weight: 500;
|
|
83
|
+
color: #595959;
|
|
84
|
+
margin-bottom: 8px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
ul {
|
|
88
|
+
margin: 0;
|
|
89
|
+
padding-left: 20px;
|
|
90
|
+
|
|
91
|
+
li {
|
|
92
|
+
color: #8c8c8c;
|
|
93
|
+
line-height: 1.6;
|
|
94
|
+
margin-bottom: 4px;
|
|
95
|
+
|
|
96
|
+
&:last-child {
|
|
97
|
+
margin-bottom: 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// 错误标注样式
|
|
105
|
+
.cm-regex-error {
|
|
106
|
+
text-decoration: wavy underline red;
|
|
107
|
+
text-decoration-skip-ink: none;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.cm-regex-warning {
|
|
111
|
+
text-decoration: wavy underline orange;
|
|
112
|
+
text-decoration-skip-ink: none;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.cm-regex-info {
|
|
116
|
+
text-decoration: wavy underline blue;
|
|
117
|
+
text-decoration-skip-ink: none;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
2
2
|
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); }
|
|
3
3
|
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; }
|
|
4
|
-
/**
|
|
5
|
-
* CodeMirror 错误标注扩展
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* 为 CodeMirror 编辑器添加错误标注功能,支持波浪下划线高亮显示错误位置。
|
|
9
|
-
*
|
|
10
|
-
* @module RegexEditor/core/extensions/errorMarker
|
|
4
|
+
/**
|
|
5
|
+
* CodeMirror 错误标注扩展
|
|
6
|
+
*
|
|
7
|
+
* @description
|
|
8
|
+
* 为 CodeMirror 编辑器添加错误标注功能,支持波浪下划线高亮显示错误位置。
|
|
9
|
+
*
|
|
10
|
+
* @module RegexEditor/core/extensions/errorMarker
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { Decoration, EditorView } from '@codemirror/view';
|
|
14
14
|
import { StateField, StateEffect } from '@codemirror/state';
|
|
15
|
-
/**
|
|
16
|
-
* 设置错误的 StateEffect
|
|
15
|
+
/**
|
|
16
|
+
* 设置错误的 StateEffect
|
|
17
17
|
*/
|
|
18
18
|
export var setErrorsEffect = StateEffect.define();
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* 错误标注装饰
|
|
22
|
-
*
|
|
23
|
-
* @description
|
|
24
|
-
* 使用红色波浪下划线标注错误位置
|
|
20
|
+
/**
|
|
21
|
+
* 错误标注装饰
|
|
22
|
+
*
|
|
23
|
+
* @description
|
|
24
|
+
* 使用红色波浪下划线标注错误位置
|
|
25
25
|
*/
|
|
26
26
|
var errorMark = Decoration.mark({
|
|
27
27
|
attributes: {
|
|
@@ -30,11 +30,11 @@ var errorMark = Decoration.mark({
|
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
/**
|
|
34
|
-
* 警告标注装饰
|
|
35
|
-
*
|
|
36
|
-
* @description
|
|
37
|
-
* 使用橙色波浪下划线标注警告位置
|
|
33
|
+
/**
|
|
34
|
+
* 警告标注装饰
|
|
35
|
+
*
|
|
36
|
+
* @description
|
|
37
|
+
* 使用橙色波浪下划线标注警告位置
|
|
38
38
|
*/
|
|
39
39
|
var warningMark = Decoration.mark({
|
|
40
40
|
attributes: {
|
|
@@ -43,11 +43,11 @@ var warningMark = Decoration.mark({
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* 信息标注装饰
|
|
48
|
-
*
|
|
49
|
-
* @description
|
|
50
|
-
* 使用蓝色波浪下划线标注信息位置
|
|
46
|
+
/**
|
|
47
|
+
* 信息标注装饰
|
|
48
|
+
*
|
|
49
|
+
* @description
|
|
50
|
+
* 使用蓝色波浪下划线标注信息位置
|
|
51
51
|
*/
|
|
52
52
|
var infoMark = Decoration.mark({
|
|
53
53
|
attributes: {
|
|
@@ -56,11 +56,11 @@ var infoMark = Decoration.mark({
|
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
-
/**
|
|
60
|
-
* 错误装饰状态字段
|
|
61
|
-
*
|
|
62
|
-
* @description
|
|
63
|
-
* 管理错误标注的 DecorationSet
|
|
59
|
+
/**
|
|
60
|
+
* 错误装饰状态字段
|
|
61
|
+
*
|
|
62
|
+
* @description
|
|
63
|
+
* 管理错误标注的 DecorationSet
|
|
64
64
|
*/
|
|
65
65
|
export var errorDecorationsField = StateField.define({
|
|
66
66
|
create: function create() {
|
|
@@ -118,34 +118,34 @@ export var errorDecorationsField = StateField.define({
|
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
/**
|
|
122
|
-
* 创建错误标注扩展
|
|
123
|
-
*
|
|
124
|
-
* @param errors - 错误列表
|
|
125
|
-
* @returns CodeMirror 扩展数组
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
* ```typescript
|
|
129
|
-
* const extensions = [
|
|
130
|
-
* javascript(),
|
|
131
|
-
* createErrorMarkers(errors)
|
|
132
|
-
* ];
|
|
133
|
-
* ```
|
|
121
|
+
/**
|
|
122
|
+
* 创建错误标注扩展
|
|
123
|
+
*
|
|
124
|
+
* @param errors - 错误列表
|
|
125
|
+
* @returns CodeMirror 扩展数组
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const extensions = [
|
|
130
|
+
* javascript(),
|
|
131
|
+
* createErrorMarkers(errors)
|
|
132
|
+
* ];
|
|
133
|
+
* ```
|
|
134
134
|
*/
|
|
135
135
|
export var createErrorMarkers = function createErrorMarkers(errors) {
|
|
136
136
|
return [errorDecorationsField];
|
|
137
137
|
};
|
|
138
138
|
|
|
139
|
-
/**
|
|
140
|
-
* 更新错误标注的辅助函数
|
|
141
|
-
*
|
|
142
|
-
* @param view - EditorView 实例
|
|
143
|
-
* @param errors - 新的错误列表
|
|
144
|
-
*
|
|
145
|
-
* @example
|
|
146
|
-
* ```typescript
|
|
147
|
-
* updateErrorMarkers(editorView, validationErrors);
|
|
148
|
-
* ```
|
|
139
|
+
/**
|
|
140
|
+
* 更新错误标注的辅助函数
|
|
141
|
+
*
|
|
142
|
+
* @param view - EditorView 实例
|
|
143
|
+
* @param errors - 新的错误列表
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* updateErrorMarkers(editorView, validationErrors);
|
|
148
|
+
* ```
|
|
149
149
|
*/
|
|
150
150
|
export var updateErrorMarkers = function updateErrorMarkers(view, errors) {
|
|
151
151
|
view.dispatch({
|