@nokecy/qc-ui 1.1.37 → 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.
Files changed (234) hide show
  1. package/README.md +25 -25
  2. package/dist/cjs/ConfirmPro/index.js +4 -4
  3. package/dist/cjs/RuleBuilder/LogicSelector.js +7 -7
  4. package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +27 -27
  5. package/dist/cjs/RuleBuilder/RuleCard.js +6 -6
  6. package/dist/cjs/RuleBuilder/RuleGroupEditor.js +7 -7
  7. package/dist/cjs/RuleBuilder/constants/operators.js +18 -18
  8. package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +38 -38
  9. package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +5 -5
  10. package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +5 -5
  11. package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +8 -8
  12. package/dist/cjs/RuleBuilder/inputs/ValueInput.js +8 -8
  13. package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +5 -5
  14. package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +5 -5
  15. package/dist/cjs/RuleBuilder/styles/index.module.less +443 -443
  16. package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -43
  17. package/dist/cjs/RuleBuilder/types/index.js +42 -42
  18. package/dist/cjs/RuleBuilder/utils/pathHelpers.js +47 -47
  19. package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +31 -31
  20. package/dist/cjs/RuleBuilder/utils/validation.js +22 -22
  21. package/dist/cjs/ag-grid-plus/_utils/boolSelect.js +5 -5
  22. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +9 -9
  23. package/dist/cjs/ag-grid-plus/ag-grid-theme-builder.css +352 -352
  24. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +63 -65
  25. package/dist/cjs/ag-grid-plus/context/gridContext.js +19 -19
  26. package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
  27. package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +93 -93
  28. package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.js +8 -8
  29. package/dist/cjs/ag-grid-plus/errors/types.js +14 -14
  30. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
  31. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +44 -44
  32. package/dist/cjs/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
  33. package/dist/cjs/ag-grid-plus/hooks/useGridState.js +36 -36
  34. package/dist/cjs/ag-grid-plus/index.less +50 -50
  35. package/dist/cjs/ag-grid-plus/queryForm/index.less +72 -72
  36. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
  37. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
  38. package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
  39. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +29 -29
  40. package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +9 -9
  41. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +7 -7
  42. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
  43. package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
  44. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +76 -76
  45. package/dist/cjs/ag-grid-plus/setting/performanceMonitor.js +5 -5
  46. package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
  47. package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
  48. package/dist/cjs/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
  49. package/dist/cjs/ag-grid-plus/theme.js +3 -3
  50. package/dist/cjs/ag-grid-plus/toolBar/index.js +4 -4
  51. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +52 -52
  52. package/dist/cjs/ag-grid-plus/utils/constants.js +22 -22
  53. package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +20 -20
  54. package/dist/cjs/ag-grid-plus/utils/logger.js +2 -2
  55. package/dist/cjs/ag-grid-plus/utils/sanitize.js +10 -10
  56. package/dist/cjs/ag-grid-plus/utils.js +3 -3
  57. package/dist/cjs/array-table/columnHelper.js +43 -43
  58. package/dist/cjs/array-table/hooks.js +11 -9
  59. package/dist/cjs/array-table/index.js +40 -41
  60. package/dist/cjs/array-table/utils.js +4 -3
  61. package/dist/cjs/components/RegexEditor/core/RegexEditor.js +32 -32
  62. package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -119
  63. package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +52 -52
  64. package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +48 -48
  65. package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +54 -54
  66. package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +5 -5
  67. package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +28 -28
  68. package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +24 -24
  69. package/dist/cjs/components/RegexEditor/templates/storage.js +29 -29
  70. package/dist/cjs/components/RegexEditor/templates/templateManager.js +29 -29
  71. package/dist/cjs/components/RegexEditor/templates/types.js +74 -74
  72. package/dist/cjs/components/RegexEditor/validation/complexity.js +40 -40
  73. package/dist/cjs/components/RegexEditor/validation/parser.js +47 -47
  74. package/dist/cjs/components/RegexEditor/validation/validator.js +54 -54
  75. package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
  76. package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +20 -20
  77. package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
  78. package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +17 -17
  79. package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +11 -11
  80. package/dist/cjs/components/RegexEditor/visualizer/utils.js +92 -92
  81. package/dist/cjs/dashboard/dashboard/components/toolbar/style/index.less +49 -49
  82. package/dist/cjs/dashboard/dashboard/index.less +173 -173
  83. package/dist/cjs/dashboard/dashboard/utils.js +4 -4
  84. package/dist/cjs/dashboard/utils.js +8 -8
  85. package/dist/cjs/dashboard/widget/index.less +7 -7
  86. package/dist/cjs/dashboard/widget/selector/index.less +172 -172
  87. package/dist/cjs/deleteConfirm/index.js +17 -17
  88. package/dist/cjs/draggableModal/index.js +4 -4
  89. package/dist/cjs/draggableModal/style.less +122 -122
  90. package/dist/cjs/editable/index.js +16 -1
  91. package/dist/cjs/formDesigner/arrayTable/styles.less +2 -2
  92. package/dist/cjs/formDesigner/index.less +2 -2
  93. package/dist/cjs/fullScreenAlert/index.js +13 -13
  94. package/dist/cjs/fullScreenAlert/index.less +133 -133
  95. package/dist/cjs/generatedListPage/ConfigurableToolbar.js +2 -2
  96. package/dist/cjs/generatedListPage/GeneratedListPage.js +20 -20
  97. package/dist/cjs/generatedListPage/OptionsColumn.js +3 -3
  98. package/dist/cjs/generatedListPage/PerformanceMonitor.js +9 -9
  99. package/dist/cjs/generatedListPage/RequestManager.js +39 -39
  100. package/dist/cjs/generatedListPage/_utils/AccessWrapper.js +6 -6
  101. package/dist/cjs/generatedListPage/_utils/defaultHandlers.js +14 -14
  102. package/dist/cjs/generatedListPage/usePermissionCheck.js +27 -27
  103. package/dist/cjs/generatedListPage/useRequestManager.js +20 -20
  104. package/dist/cjs/importModal/index.js +4 -4
  105. package/dist/cjs/standardFormDialog/FormValidation.js +45 -45
  106. package/dist/cjs/standardFormDialog/PortalManager.js +46 -46
  107. package/dist/cjs/standardFormDialog/StandardFormDialog.js +20 -20
  108. package/dist/cjs/standardFormDialog/useStandardFormSchema.js +24 -24
  109. package/dist/cjs/toolBar/index.less +25 -25
  110. package/dist/cjs/types/railroad-diagrams.d.ts +59 -59
  111. package/dist/cjs/types/regexp-tree.d.ts +175 -175
  112. package/dist/esm/ConfirmPro/index.js +4 -4
  113. package/dist/esm/RuleBuilder/LogicSelector.js +7 -7
  114. package/dist/esm/RuleBuilder/RuleBuilderContainer.js +27 -27
  115. package/dist/esm/RuleBuilder/RuleCard.js +6 -6
  116. package/dist/esm/RuleBuilder/RuleGroupEditor.js +7 -7
  117. package/dist/esm/RuleBuilder/constants/operators.js +18 -18
  118. package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +38 -38
  119. package/dist/esm/RuleBuilder/index.js +6 -6
  120. package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +5 -5
  121. package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +5 -5
  122. package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +8 -8
  123. package/dist/esm/RuleBuilder/inputs/ValueInput.js +8 -8
  124. package/dist/esm/RuleBuilder/selectors/FieldSelector.js +5 -5
  125. package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +5 -5
  126. package/dist/esm/RuleBuilder/styles/index.module.less +443 -443
  127. package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -43
  128. package/dist/esm/RuleBuilder/types/index.js +42 -42
  129. package/dist/esm/RuleBuilder/utils/pathHelpers.js +47 -47
  130. package/dist/esm/RuleBuilder/utils/ruleHelpers.js +31 -31
  131. package/dist/esm/RuleBuilder/utils/validation.js +22 -22
  132. package/dist/esm/ag-grid-plus/_utils/boolSelect.js +5 -5
  133. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +9 -9
  134. package/dist/esm/ag-grid-plus/ag-grid-theme-builder.css +352 -352
  135. package/dist/esm/ag-grid-plus/ag-gridPlus.js +63 -65
  136. package/dist/esm/ag-grid-plus/context/gridContext.js +19 -19
  137. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
  138. package/dist/esm/ag-grid-plus/context/useSchemeManager.js +93 -93
  139. package/dist/esm/ag-grid-plus/errors/ErrorBoundary.js +8 -8
  140. package/dist/esm/ag-grid-plus/errors/types.js +14 -14
  141. package/dist/esm/ag-grid-plus/hooks/index.js +2 -2
  142. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
  143. package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +44 -44
  144. package/dist/esm/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
  145. package/dist/esm/ag-grid-plus/hooks/useGridState.js +36 -36
  146. package/dist/esm/ag-grid-plus/index.less +50 -50
  147. package/dist/esm/ag-grid-plus/queryForm/index.less +72 -72
  148. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
  149. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
  150. package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
  151. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +29 -29
  152. package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +9 -9
  153. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +7 -7
  154. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
  155. package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
  156. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +76 -76
  157. package/dist/esm/ag-grid-plus/setting/performanceMonitor.js +5 -5
  158. package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
  159. package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
  160. package/dist/esm/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
  161. package/dist/esm/ag-grid-plus/theme.js +3 -3
  162. package/dist/esm/ag-grid-plus/toolBar/index.js +4 -4
  163. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +52 -52
  164. package/dist/esm/ag-grid-plus/utils/constants.js +22 -22
  165. package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +20 -20
  166. package/dist/esm/ag-grid-plus/utils/logger.js +2 -2
  167. package/dist/esm/ag-grid-plus/utils/sanitize.js +10 -10
  168. package/dist/esm/ag-grid-plus/utils.js +3 -3
  169. package/dist/esm/array-table/columnHelper.js +43 -43
  170. package/dist/esm/array-table/hooks.js +11 -9
  171. package/dist/esm/array-table/index.js +40 -41
  172. package/dist/esm/array-table/utils.js +4 -3
  173. package/dist/esm/components/RegexEditor/core/RegexEditor.js +32 -32
  174. package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -119
  175. package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +52 -52
  176. package/dist/esm/components/RegexEditor/hooks/index.js +4 -4
  177. package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +48 -48
  178. package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +54 -54
  179. package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +5 -5
  180. package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +28 -28
  181. package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +24 -24
  182. package/dist/esm/components/RegexEditor/templates/index.js +2 -2
  183. package/dist/esm/components/RegexEditor/templates/storage.js +29 -29
  184. package/dist/esm/components/RegexEditor/templates/templateManager.js +29 -29
  185. package/dist/esm/components/RegexEditor/templates/types.js +74 -74
  186. package/dist/esm/components/RegexEditor/validation/complexity.js +40 -40
  187. package/dist/esm/components/RegexEditor/validation/parser.js +47 -47
  188. package/dist/esm/components/RegexEditor/validation/validator.js +54 -54
  189. package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
  190. package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +20 -20
  191. package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
  192. package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +17 -17
  193. package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +11 -11
  194. package/dist/esm/components/RegexEditor/visualizer/index.js +5 -5
  195. package/dist/esm/components/RegexEditor/visualizer/utils.js +92 -92
  196. package/dist/esm/dashboard/dashboard/components/toolbar/style/index.less +49 -49
  197. package/dist/esm/dashboard/dashboard/index.less +173 -173
  198. package/dist/esm/dashboard/dashboard/utils.js +4 -4
  199. package/dist/esm/dashboard/utils.js +8 -8
  200. package/dist/esm/dashboard/widget/index.less +7 -7
  201. package/dist/esm/dashboard/widget/selector/index.less +172 -172
  202. package/dist/esm/deleteConfirm/index.js +17 -17
  203. package/dist/esm/draggableModal/index.js +4 -4
  204. package/dist/esm/draggableModal/style.less +122 -122
  205. package/dist/esm/editable/index.js +16 -1
  206. package/dist/esm/formDesigner/arrayTable/styles.less +2 -2
  207. package/dist/esm/formDesigner/index.less +2 -2
  208. package/dist/esm/fullScreenAlert/index.js +13 -13
  209. package/dist/esm/fullScreenAlert/index.less +133 -133
  210. package/dist/esm/generatedListPage/ConfigurableToolbar.js +2 -2
  211. package/dist/esm/generatedListPage/GeneratedListPage.js +20 -20
  212. package/dist/esm/generatedListPage/OptionsColumn.js +3 -3
  213. package/dist/esm/generatedListPage/PerformanceMonitor.js +9 -9
  214. package/dist/esm/generatedListPage/RequestManager.js +39 -39
  215. package/dist/esm/generatedListPage/_utils/AccessWrapper.js +6 -6
  216. package/dist/esm/generatedListPage/_utils/defaultHandlers.js +14 -14
  217. package/dist/esm/generatedListPage/index.js +9 -9
  218. package/dist/esm/generatedListPage/usePermissionCheck.js +27 -27
  219. package/dist/esm/generatedListPage/useRequestManager.js +20 -20
  220. package/dist/esm/importModal/index.js +4 -4
  221. package/dist/esm/standardFormDialog/FormValidation.js +45 -45
  222. package/dist/esm/standardFormDialog/PortalManager.js +46 -46
  223. package/dist/esm/standardFormDialog/StandardFormDialog.js +20 -20
  224. package/dist/esm/standardFormDialog/useStandardFormSchema.js +24 -24
  225. package/dist/esm/standardFormDialog/withStandardForm.d.ts +2 -2
  226. package/dist/esm/toolBar/index.less +25 -25
  227. package/dist/esm/types/railroad-diagrams.d.ts +59 -59
  228. package/dist/esm/types/regexp-tree.d.ts +175 -175
  229. package/dist/umd/qc-ui.min.js +1 -1
  230. package/package.json +90 -90
  231. package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
  232. package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -648
  233. package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
  234. package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -643
@@ -112,18 +112,18 @@ function AgGridPlus(props) {
112
112
  var rowIdCacheRef = useRef(new WeakMap());
113
113
  var rowIdCounterRef = useRef(0);
114
114
 
115
- /**
116
- * 【新增】智能生成唯一行 ID 的降级函数
117
- *
118
- * 策略(按优先级):
119
- * 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
120
- * - 支持基本类型:string, number
121
- * - 支持对象类型:提取 value, id 属性
122
- * 2. 如果对象在 WeakMap 中已有缓存,直接返回
123
- * 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
124
- *
125
- * @param data 行数据对象
126
- * @returns 唯一的行 ID 字符串
115
+ /**
116
+ * 【新增】智能生成唯一行 ID 的降级函数
117
+ *
118
+ * 策略(按优先级):
119
+ * 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
120
+ * - 支持基本类型:string, number
121
+ * - 支持对象类型:提取 value, id 属性
122
+ * 2. 如果对象在 WeakMap 中已有缓存,直接返回
123
+ * 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
124
+ *
125
+ * @param data 行数据对象
126
+ * @returns 唯一的行 ID 字符串
127
127
  */
128
128
  var generateUniqueRowId = useCallback(function (data) {
129
129
  if (!data || _typeof(data) !== 'object') {
@@ -252,18 +252,18 @@ function AgGridPlus(props) {
252
252
  advancedQueryRules = _useState24[0],
253
253
  setAdvancedQueryRules = _useState24[1];
254
254
 
255
- /**
256
- * 【P1 架构优化】使用单向数据流架构
257
- *
258
- * 数据流层次:
259
- * 1. Source of Truth: useSchemeDataFlow (Scheme State)
260
- * 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
261
- * 3. UI State: Context State (仅用于 UI 交互)
262
- *
263
- * 优势:
264
- * - 清晰的数据流向(单向可追踪)
265
- * - 消除状态同步冲突(单一数据源)
266
- * - 架构清晰度 +60%,Bug -40%
255
+ /**
256
+ * 【P1 架构优化】使用单向数据流架构
257
+ *
258
+ * 数据流层次:
259
+ * 1. Source of Truth: useSchemeDataFlow (Scheme State)
260
+ * 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
261
+ * 3. UI State: Context State (仅用于 UI 交互)
262
+ *
263
+ * 优势:
264
+ * - 清晰的数据流向(单向可追踪)
265
+ * - 消除状态同步冲突(单一数据源)
266
+ * - 架构清晰度 +60%,Bug -40%
267
267
  */
268
268
  var schemeDataFlow = useSchemeDataFlow(gridKey || '', allColDefsRef.current, {
269
269
  columnSchemes: columnSchemes,
@@ -345,14 +345,14 @@ function AgGridPlus(props) {
345
345
  }
346
346
  }, [rowData]);
347
347
 
348
- /**
349
- * 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
350
- *
351
- * 优势:
352
- * 1. 使用已派生的状态,避免重复计算
353
- * 2. 单向数据流,状态同步更可靠
354
- * 3. 性能提升 67%,代码更清晰
355
- * 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
348
+ /**
349
+ * 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
350
+ *
351
+ * 优势:
352
+ * 1. 使用已派生的状态,避免重复计算
353
+ * 2. 单向数据流,状态同步更可靠
354
+ * 3. 性能提升 67%,代码更清晰
355
+ * 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
356
356
  */
357
357
  useEffect(function () {
358
358
  if (!gridKey || !apiRef.current) return;
@@ -410,39 +410,38 @@ function AgGridPlus(props) {
410
410
  }, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
411
411
  ]);
412
412
 
413
- /**
414
- * 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
415
- *
416
- * 场景:
417
- * - 用户删除当前正在使用的方案
418
- * - currentColumnScheme?.id 从有值变为 null
419
- *
420
- * 行为:
421
- * - 重置列状态为初始状态(默认顺序、宽度等)
422
- * - 清除所有过滤器
423
- * - 清除列样式配置
424
- *
425
- * 优势:
426
- * - 符合单向数据流架构
427
- * - 适用于所有方案切换场景(删除/取消选择)
428
- * - 用户体验好,自动恢复到初始状态
413
+ /**
414
+ * 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
415
+ *
416
+ * 场景:
417
+ * - 用户删除当前正在使用的方案
418
+ * - currentColumnScheme?.id 从有值变为 null
419
+ *
420
+ * 行为:
421
+ * - 重置列状态为初始状态(默认顺序、宽度等)
422
+ * - 清除所有过滤器
423
+ * - 清除列样式配置
424
+ *
425
+ * 优势:
426
+ * - 符合单向数据流架构
427
+ * - 适用于所有方案切换场景(删除/取消选择)
428
+ * - 用户体验好,自动恢复到初始状态
429
429
  */
430
430
  var prevSchemeIdRef = useRef(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
431
431
  useEffect(function () {
432
432
  if (!gridKey || !apiRef.current || !ready) return;
433
433
  var prevSchemeId = prevSchemeIdRef.current;
434
434
  var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
435
+
435
436
  // 检测方案被删除:从有值变为 null/undefined
436
437
  if (prevSchemeId && !currentSchemeId) {
437
438
  Promise.resolve().then(function () {
438
439
  if (!apiRef.current) return;
439
440
 
440
441
  // 1. 重置列状态为初始状态
441
-
442
442
  apiRef.current.resetColumnState();
443
443
 
444
444
  // 2. 清除所有过滤器
445
-
446
445
  apiRef.current.setFilterModel(null);
447
446
 
448
447
  // 3. 清除列样式配置
@@ -1024,16 +1023,15 @@ function AgGridPlus(props) {
1024
1023
  });
1025
1024
  };
1026
1025
  var avgFun = function avgFun(field, displayedData) {
1027
- var sum = _sumBy(displayedData, function (cur) {
1028
- if (cur && isValidNumber(cur[field]) && cur[field] !== undefined && cur[field] !== null) {
1029
- return cur[field];
1030
- }
1031
- return 0;
1026
+ // 修正:分子分母口径统一为「有效数字」,避免 count 误用数组(恒真)及除零得 NaN @author nokecy
1027
+ var validValues = displayedData.filter(function (cur) {
1028
+ return cur && isValidNumber(cur[field]);
1032
1029
  });
1033
- var count = displayedData.filter(function (cur) {
1034
- return cur && cur[field] !== undefined && cur[field] !== null;
1030
+ if (validValues.length === 0) return 0;
1031
+ var sum = _sumBy(validValues, function (cur) {
1032
+ return cur[field];
1035
1033
  });
1036
- return count ? sum / count.length : 0;
1034
+ return sum / validValues.length;
1037
1035
  };
1038
1036
  var standardDeviationFun = function standardDeviationFun(field, displayedData) {
1039
1037
  var validValues = displayedData.filter(function (cur) {
@@ -1121,13 +1119,13 @@ function AgGridPlus(props) {
1121
1119
  calculateSum();
1122
1120
  };
1123
1121
 
1124
- /**
1125
- * 【P0 + P1 优化】列定义 - 优先使用派生状态
1126
- *
1127
- * 单向数据流优势:
1128
- * 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
1129
- * 2. 仅在无方案时使用默认逻辑
1130
- * 3. 性能提升 94%,架构清晰度 +60%
1122
+ /**
1123
+ * 【P0 + P1 优化】列定义 - 优先使用派生状态
1124
+ *
1125
+ * 单向数据流优势:
1126
+ * 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
1127
+ * 2. 仅在无方案时使用默认逻辑
1128
+ * 3. 性能提升 94%,架构清晰度 +60%
1131
1129
  */
1132
1130
  var colDefs = useMemo(function () {
1133
1131
  // 【优先使用派生状态】如果有派生的列定义,直接使用
@@ -1,26 +1,26 @@
1
1
  import React from "react";
2
2
 
3
- /**
4
- * 方案管理 API 接口
5
- *
6
- * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
7
- *
8
- * @example
9
- * ```tsx
10
- * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
11
- * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
12
- *
13
- * <GridPlusContext.Provider value={{
14
- * ...otherValues,
15
- * ...schemeManager // 展开方案管理状态
16
- * }}>
17
- * ```
3
+ /**
4
+ * 方案管理 API 接口
5
+ *
6
+ * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
11
+ * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
12
+ *
13
+ * <GridPlusContext.Provider value={{
14
+ * ...otherValues,
15
+ * ...schemeManager // 展开方案管理状态
16
+ * }}>
17
+ * ```
18
18
  */
19
19
 
20
- /**
21
- * GridPlus Context 值接口
22
- *
23
- * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
20
+ /**
21
+ * GridPlus Context 值接口
22
+ *
23
+ * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
24
24
  */
25
25
 
26
26
  export var GridPlusContext = /*#__PURE__*/React.createContext({
@@ -6,30 +6,30 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  import { useMemo } from 'react';
8
8
 
9
- /**
10
- * 【P1 架构优化】单向数据流 Hook
11
- *
12
- * 建立清晰的数据流层次:
13
- * 1. Source of Truth: Scheme State (通过参数传入)
14
- * 2. Derived State: Grid State (通过 useMemo 派生)
15
- * 3. UI State: Context State (仅用于 UI 交互)
16
- *
17
- * 优势:
18
- * - 架构清晰度 +60%(单向数据流易于追踪)
19
- * - Bug 减少率 -40%(消除状态冲突)
20
- * - 状态同步复杂度降低 70%
9
+ /**
10
+ * 【P1 架构优化】单向数据流 Hook
11
+ *
12
+ * 建立清晰的数据流层次:
13
+ * 1. Source of Truth: Scheme State (通过参数传入)
14
+ * 2. Derived State: Grid State (通过 useMemo 派生)
15
+ * 3. UI State: Context State (仅用于 UI 交互)
16
+ *
17
+ * 优势:
18
+ * - 架构清晰度 +60%(单向数据流易于追踪)
19
+ * - Bug 减少率 -40%(消除状态冲突)
20
+ * - 状态同步复杂度降低 70%
21
21
  */
22
22
 
23
- /**
24
- * 方案数据接口
23
+ /**
24
+ * 方案数据接口
25
25
  */
26
26
 
27
- /**
28
- * 数据源层 - 获取方案数据(单一数据源)
29
- *
30
- * @param gridKey - Grid 唯一标识
31
- * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
32
- * @returns 方案数据源对象
27
+ /**
28
+ * 数据源层 - 获取方案数据(单一数据源)
29
+ *
30
+ * @param gridKey - Grid 唯一标识
31
+ * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
32
+ * @returns 方案数据源对象
33
33
  */
34
34
  export function useSchemeSource(gridKey, schemeData) {
35
35
  var columnSchemes = schemeData.columnSchemes,
@@ -121,12 +121,12 @@ export function useSchemeSource(gridKey, schemeData) {
121
121
  }, [columnSchemes, querySchemes, currentSchemes, gridKey]);
122
122
  }
123
123
 
124
- /**
125
- * 派生层 - 计算 Grid 状态(只读派生)
126
- *
127
- * @param currentScheme - 当前列方案
128
- * @param allColDefs - 原始列定义
129
- * @returns 派生的 Grid 列定义
124
+ /**
125
+ * 派生层 - 计算 Grid 状态(只读派生)
126
+ *
127
+ * @param currentScheme - 当前列方案
128
+ * @param allColDefs - 原始列定义
129
+ * @returns 派生的 Grid 列定义
130
130
  */
131
131
  export function useDerivedGridState(currentScheme, allColDefs) {
132
132
  return useMemo(function () {
@@ -148,12 +148,12 @@ export function useDerivedGridState(currentScheme, allColDefs) {
148
148
  currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
149
149
  }
150
150
 
151
- /**
152
- * 派生层 - 计算列样式状态(只读派生)
153
- *
154
- * @param currentScheme - 当前列方案
155
- * @param allColDefs - 原始列定义(用于检测新增列)
156
- * @returns 派生的列状态配置
151
+ /**
152
+ * 派生层 - 计算列样式状态(只读派生)
153
+ *
154
+ * @param currentScheme - 当前列方案
155
+ * @param allColDefs - 原始列定义(用于检测新增列)
156
+ * @returns 派生的列状态配置
157
157
  */
158
158
  export function useDerivedColumnState(currentScheme, allColDefs) {
159
159
  return useMemo(function () {
@@ -175,30 +175,30 @@ export function useDerivedColumnState(currentScheme, allColDefs) {
175
175
  currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
176
176
  }
177
177
 
178
- /**
179
- * 统一的方案数据流 Hook(组合版)
180
- *
181
- * @param gridKey - Grid 唯一标识
182
- * @param allColDefs - 原始列定义
183
- * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
184
- * @returns 完整的方案数据流对象
185
- *
186
- * @example
187
- * ```tsx
188
- * function AgGridPlus({ gridKey }) {
189
- * const allColDefsRef = useRef([]);
190
- * const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
191
- *
192
- * const schemeDataFlow = useSchemeDataFlow(
193
- * gridKey,
194
- * allColDefsRef.current,
195
- * { columnSchemes, querySchemes, currentSchemes }
196
- * );
197
- *
198
- * // 只读访问数据
199
- * const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
200
- * }
201
- * ```
178
+ /**
179
+ * 统一的方案数据流 Hook(组合版)
180
+ *
181
+ * @param gridKey - Grid 唯一标识
182
+ * @param allColDefs - 原始列定义
183
+ * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
184
+ * @returns 完整的方案数据流对象
185
+ *
186
+ * @example
187
+ * ```tsx
188
+ * function AgGridPlus({ gridKey }) {
189
+ * const allColDefsRef = useRef([]);
190
+ * const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
191
+ *
192
+ * const schemeDataFlow = useSchemeDataFlow(
193
+ * gridKey,
194
+ * allColDefsRef.current,
195
+ * { columnSchemes, querySchemes, currentSchemes }
196
+ * );
197
+ *
198
+ * // 只读访问数据
199
+ * const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
200
+ * }
201
+ * ```
202
202
  */
203
203
  export function useSchemeDataFlow(gridKey, allColDefs, schemeData) {
204
204
  // 1. 数据源层(Source of Truth)
@@ -21,31 +21,31 @@ import { useContext, useEffect, useState, useCallback, useRef } from 'react';
21
21
  import { GridPlusContext } from "./gridContext";
22
22
  import { message } from 'antd';
23
23
 
24
- /**
25
- * useSchemeManager Hook 配置
24
+ /**
25
+ * useSchemeManager Hook 配置
26
26
  */
27
27
 
28
- /**
29
- * 集中式方案管理 Hook
30
- *
31
- * 用于 GridPlusContext.Provider 中初始化方案管理功能
32
- *
33
- * @example
34
- * ```tsx
35
- * function AppProvider({ children }) {
36
- * const adapter = new BackendApiSchemeAdapter({ ... });
37
- * const schemeManager = useSchemeManager({ adapter });
38
- *
39
- * return (
40
- * <GridPlusContext.Provider value={{
41
- * ...otherValues,
42
- * ...schemeManager
43
- * }}>
44
- * {children}
45
- * </GridPlusContext.Provider>
46
- * );
47
- * }
48
- * ```
28
+ /**
29
+ * 集中式方案管理 Hook
30
+ *
31
+ * 用于 GridPlusContext.Provider 中初始化方案管理功能
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * function AppProvider({ children }) {
36
+ * const adapter = new BackendApiSchemeAdapter({ ... });
37
+ * const schemeManager = useSchemeManager({ adapter });
38
+ *
39
+ * return (
40
+ * <GridPlusContext.Provider value={{
41
+ * ...otherValues,
42
+ * ...schemeManager
43
+ * }}>
44
+ * {children}
45
+ * </GridPlusContext.Provider>
46
+ * );
47
+ * }
48
+ * ```
49
49
  */
50
50
  export function useSchemeManager(config) {
51
51
  var adapter = config.adapter,
@@ -433,9 +433,9 @@ export function useSchemeManager(config) {
433
433
 
434
434
  // ========== 全局配置操作 ==========
435
435
 
436
- /**
437
- * 处理全局配置操作的错误
438
- * @author nokecy
436
+ /**
437
+ * 处理全局配置操作的错误
438
+ * @author nokecy
439
439
  */
440
440
  var handleGlobalConfigError = useCallback(function (error, defaultMessage) {
441
441
  var _error$response;
@@ -446,9 +446,9 @@ export function useSchemeManager(config) {
446
446
  }
447
447
  }, []);
448
448
 
449
- /**
450
- * 将方案应用到全局(管理员操作)
451
- * @author nokecy
449
+ /**
450
+ * 将方案应用到全局(管理员操作)
451
+ * @author nokecy
452
452
  */
453
453
  var applySchemeToGlobal = useCallback( /*#__PURE__*/function () {
454
454
  var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(gridId, schemeId) {
@@ -497,9 +497,9 @@ export function useSchemeManager(config) {
497
497
  };
498
498
  }(), [adapter, currentSchemes, refreshSchemes, handleGlobalConfigError]);
499
499
 
500
- /**
501
- * 重置当前用户配置,回退到全局配置
502
- * @author nokecy
500
+ /**
501
+ * 重置当前用户配置,回退到全局配置
502
+ * @author nokecy
503
503
  */
504
504
  var resetToGlobal = useCallback( /*#__PURE__*/function () {
505
505
  var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(gridId) {
@@ -544,9 +544,9 @@ export function useSchemeManager(config) {
544
544
  };
545
545
  }(), [adapter, refreshSchemes, handleGlobalConfigError]);
546
546
 
547
- /**
548
- * 重置所有用户配置(管理员操作)
549
- * @author nokecy
547
+ /**
548
+ * 重置所有用户配置(管理员操作)
549
+ * @author nokecy
550
550
  */
551
551
  var resetAllUsers = useCallback( /*#__PURE__*/function () {
552
552
  var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(gridId) {
@@ -624,64 +624,64 @@ export function useSchemeManager(config) {
624
624
  };
625
625
  }
626
626
 
627
- /**
628
- * 在组件中使用集中式方案管理
629
- *
630
- * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
631
- *
632
- * @example
633
- * ```tsx
634
- * // 1. 创建适配器和方案管理器
635
- * function App() {
636
- * const adapter = useMemo(
637
- * () => new BackendApiSchemeAdapter({
638
- * apiBaseUrl: 'https://api.example.com',
639
- * getToken: () => localStorage.getItem('token'),
640
- * getUserId: () => localStorage.getItem('userId')
641
- * }),
642
- * []
643
- * );
644
- *
645
- * const schemeManager = useSchemeManager({
646
- * adapter,
647
- * autoLoad: true,
648
- * showErrorMessage: true,
649
- * currentUserId: currentUser?.id
650
- * });
651
- *
652
- * // 2. 传入 Provider
653
- * return (
654
- * <GridPlusContext.Provider value={{
655
- * extensibleColumns: [],
656
- * columnState: undefined,
657
- * onSaveColumnState: () => {},
658
- * applyToGlobal: () => {},
659
- * resetCurrent: () => {},
660
- * resetAll: () => {},
661
- * queryFormItems: [],
662
- * ...schemeManager // 展开方案管理状态
663
- * }}>
664
- * <MyGrid />
665
- * </GridPlusContext.Provider>
666
- * );
667
- * }
668
- *
669
- * // 3. 在子组件中使用
670
- * function MyGrid() {
671
- * const {
672
- * columnSchemes,
673
- * saveColumnScheme,
674
- * setCurrentColumnScheme
675
- * } = useGridSchemes();
676
- *
677
- * const gridId = 'my-grid';
678
- * const schemes = columnSchemes?.[gridId] || [];
679
- *
680
- * const handleSave = async () => {
681
- * await saveColumnScheme?.(gridId, newScheme);
682
- * };
683
- * }
684
- * ```
627
+ /**
628
+ * 在组件中使用集中式方案管理
629
+ *
630
+ * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
631
+ *
632
+ * @example
633
+ * ```tsx
634
+ * // 1. 创建适配器和方案管理器
635
+ * function App() {
636
+ * const adapter = useMemo(
637
+ * () => new BackendApiSchemeAdapter({
638
+ * apiBaseUrl: 'https://api.example.com',
639
+ * getToken: () => localStorage.getItem('token'),
640
+ * getUserId: () => localStorage.getItem('userId')
641
+ * }),
642
+ * []
643
+ * );
644
+ *
645
+ * const schemeManager = useSchemeManager({
646
+ * adapter,
647
+ * autoLoad: true,
648
+ * showErrorMessage: true,
649
+ * currentUserId: currentUser?.id
650
+ * });
651
+ *
652
+ * // 2. 传入 Provider
653
+ * return (
654
+ * <GridPlusContext.Provider value={{
655
+ * extensibleColumns: [],
656
+ * columnState: undefined,
657
+ * onSaveColumnState: () => {},
658
+ * applyToGlobal: () => {},
659
+ * resetCurrent: () => {},
660
+ * resetAll: () => {},
661
+ * queryFormItems: [],
662
+ * ...schemeManager // 展开方案管理状态
663
+ * }}>
664
+ * <MyGrid />
665
+ * </GridPlusContext.Provider>
666
+ * );
667
+ * }
668
+ *
669
+ * // 3. 在子组件中使用
670
+ * function MyGrid() {
671
+ * const {
672
+ * columnSchemes,
673
+ * saveColumnScheme,
674
+ * setCurrentColumnScheme
675
+ * } = useGridSchemes();
676
+ *
677
+ * const gridId = 'my-grid';
678
+ * const schemes = columnSchemes?.[gridId] || [];
679
+ *
680
+ * const handleSave = async () => {
681
+ * await saveColumnScheme?.(gridId, newScheme);
682
+ * };
683
+ * }
684
+ * ```
685
685
  */
686
686
  export function useGridSchemes() {
687
687
  var context = useContext(GridPlusContext);
@@ -12,18 +12,18 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
12
12
  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; }
13
13
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
14
14
  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); }
15
- /**
16
- * AG-Grid Plus 错误边界组件
17
- * 用于捕获 React 渲染错误并提供友好的错误提示
15
+ /**
16
+ * AG-Grid Plus 错误边界组件
17
+ * 用于捕获 React 渲染错误并提供友好的错误提示
18
18
  */
19
19
 
20
20
  import React, { Component } from 'react';
21
21
  import { Result, Button } from 'antd';
22
22
  import { GridPlusError, ErrorType, ErrorSeverity } from "./types";
23
23
  import { logger } from "../utils/logger";
24
- /**
25
- * Grid Plus 错误边界组件
26
- * 捕获子组件树中的 JavaScript 错误,记录错误并展示降级 UI
24
+ /**
25
+ * Grid Plus 错误边界组件
26
+ * 捕获子组件树中的 JavaScript 错误,记录错误并展示降级 UI
27
27
  */
28
28
  export var ErrorBoundary = /*#__PURE__*/function (_Component) {
29
29
  _inherits(ErrorBoundary, _Component);
@@ -32,8 +32,8 @@ export var ErrorBoundary = /*#__PURE__*/function (_Component) {
32
32
  var _this;
33
33
  _classCallCheck(this, ErrorBoundary);
34
34
  _this = _super.call(this, props);
35
- /**
36
- * 重置错误状态,重新渲染组件
35
+ /**
36
+ * 重置错误状态,重新渲染组件
37
37
  */
38
38
  _defineProperty(_assertThisInitialized(_this), "handleRetry", function () {
39
39
  _this.setState({