@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.
Files changed (240) 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 +83 -89
  25. package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +1 -5
  26. package/dist/cjs/ag-grid-plus/context/gridContext.js +19 -19
  27. package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
  28. package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +93 -93
  29. package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.js +8 -8
  30. package/dist/cjs/ag-grid-plus/errors/types.js +14 -14
  31. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
  32. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +44 -44
  33. package/dist/cjs/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
  34. package/dist/cjs/ag-grid-plus/hooks/useGridState.js +36 -36
  35. package/dist/cjs/ag-grid-plus/index.less +50 -50
  36. package/dist/cjs/ag-grid-plus/queryForm/index.less +72 -72
  37. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
  38. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
  39. package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
  40. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +29 -29
  41. package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +9 -9
  42. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +7 -7
  43. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
  44. package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
  45. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +76 -76
  46. package/dist/cjs/ag-grid-plus/setting/performanceMonitor.js +5 -5
  47. package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
  48. package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
  49. package/dist/cjs/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
  50. package/dist/cjs/ag-grid-plus/theme.js +3 -3
  51. package/dist/cjs/ag-grid-plus/toolBar/index.js +4 -4
  52. package/dist/cjs/ag-grid-plus/types.d.ts +2 -22
  53. package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +52 -52
  54. package/dist/cjs/ag-grid-plus/utils/constants.js +22 -22
  55. package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.d.ts +1 -0
  56. package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +22 -20
  57. package/dist/cjs/ag-grid-plus/utils/logger.js +2 -2
  58. package/dist/cjs/ag-grid-plus/utils/sanitize.js +10 -10
  59. package/dist/cjs/ag-grid-plus/utils.js +3 -3
  60. package/dist/cjs/array-table/columnHelper.js +43 -43
  61. package/dist/cjs/array-table/hooks.js +11 -9
  62. package/dist/cjs/array-table/index.js +40 -41
  63. package/dist/cjs/array-table/utils.js +4 -3
  64. package/dist/cjs/components/RegexEditor/core/RegexEditor.js +32 -32
  65. package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -119
  66. package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +52 -52
  67. package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +48 -48
  68. package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +54 -54
  69. package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +5 -5
  70. package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +28 -28
  71. package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +24 -24
  72. package/dist/cjs/components/RegexEditor/templates/storage.js +29 -29
  73. package/dist/cjs/components/RegexEditor/templates/templateManager.js +29 -29
  74. package/dist/cjs/components/RegexEditor/templates/types.js +74 -74
  75. package/dist/cjs/components/RegexEditor/validation/complexity.js +40 -40
  76. package/dist/cjs/components/RegexEditor/validation/parser.js +47 -47
  77. package/dist/cjs/components/RegexEditor/validation/validator.js +54 -54
  78. package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
  79. package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +20 -20
  80. package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
  81. package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +17 -17
  82. package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +11 -11
  83. package/dist/cjs/components/RegexEditor/visualizer/utils.js +92 -92
  84. package/dist/cjs/dashboard/dashboard/components/toolbar/style/index.less +49 -49
  85. package/dist/cjs/dashboard/dashboard/index.less +173 -173
  86. package/dist/cjs/dashboard/dashboard/utils.js +4 -4
  87. package/dist/cjs/dashboard/utils.js +8 -8
  88. package/dist/cjs/dashboard/widget/index.less +7 -7
  89. package/dist/cjs/dashboard/widget/selector/index.less +172 -172
  90. package/dist/cjs/deleteConfirm/index.js +17 -17
  91. package/dist/cjs/draggableModal/index.js +4 -4
  92. package/dist/cjs/draggableModal/style.less +122 -122
  93. package/dist/cjs/editable/index.js +16 -1
  94. package/dist/cjs/formDesigner/arrayTable/styles.less +2 -2
  95. package/dist/cjs/formDesigner/index.less +2 -2
  96. package/dist/cjs/fullScreenAlert/index.js +13 -13
  97. package/dist/cjs/fullScreenAlert/index.less +133 -133
  98. package/dist/cjs/generatedListPage/ConfigurableToolbar.js +2 -2
  99. package/dist/cjs/generatedListPage/GeneratedListPage.js +20 -20
  100. package/dist/cjs/generatedListPage/OptionsColumn.js +3 -3
  101. package/dist/cjs/generatedListPage/PerformanceMonitor.js +9 -9
  102. package/dist/cjs/generatedListPage/RequestManager.js +39 -39
  103. package/dist/cjs/generatedListPage/_utils/AccessWrapper.js +6 -6
  104. package/dist/cjs/generatedListPage/_utils/defaultHandlers.js +14 -14
  105. package/dist/cjs/generatedListPage/usePermissionCheck.js +27 -27
  106. package/dist/cjs/generatedListPage/useRequestManager.js +20 -20
  107. package/dist/cjs/importModal/index.js +4 -4
  108. package/dist/cjs/standardFormDialog/FormValidation.js +45 -45
  109. package/dist/cjs/standardFormDialog/PortalManager.js +46 -46
  110. package/dist/cjs/standardFormDialog/StandardFormDialog.js +20 -20
  111. package/dist/cjs/standardFormDialog/useStandardFormSchema.js +24 -24
  112. package/dist/cjs/toolBar/index.less +25 -25
  113. package/dist/cjs/types/railroad-diagrams.d.ts +59 -59
  114. package/dist/cjs/types/regexp-tree.d.ts +175 -175
  115. package/dist/esm/ConfirmPro/index.js +4 -4
  116. package/dist/esm/RuleBuilder/LogicSelector.js +7 -7
  117. package/dist/esm/RuleBuilder/RuleBuilderContainer.js +27 -27
  118. package/dist/esm/RuleBuilder/RuleCard.js +6 -6
  119. package/dist/esm/RuleBuilder/RuleGroupEditor.js +7 -7
  120. package/dist/esm/RuleBuilder/constants/operators.js +18 -18
  121. package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +38 -38
  122. package/dist/esm/RuleBuilder/index.js +6 -6
  123. package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +5 -5
  124. package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +5 -5
  125. package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +8 -8
  126. package/dist/esm/RuleBuilder/inputs/ValueInput.js +8 -8
  127. package/dist/esm/RuleBuilder/selectors/FieldSelector.js +5 -5
  128. package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +5 -5
  129. package/dist/esm/RuleBuilder/styles/index.module.less +443 -443
  130. package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -43
  131. package/dist/esm/RuleBuilder/types/index.js +42 -42
  132. package/dist/esm/RuleBuilder/utils/pathHelpers.js +47 -47
  133. package/dist/esm/RuleBuilder/utils/ruleHelpers.js +31 -31
  134. package/dist/esm/RuleBuilder/utils/validation.js +22 -22
  135. package/dist/esm/ag-grid-plus/_utils/boolSelect.js +5 -5
  136. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +9 -9
  137. package/dist/esm/ag-grid-plus/ag-grid-theme-builder.css +352 -352
  138. package/dist/esm/ag-grid-plus/ag-gridPlus.js +83 -89
  139. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +1 -5
  140. package/dist/esm/ag-grid-plus/context/gridContext.js +19 -19
  141. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
  142. package/dist/esm/ag-grid-plus/context/useSchemeManager.js +93 -93
  143. package/dist/esm/ag-grid-plus/errors/ErrorBoundary.js +8 -8
  144. package/dist/esm/ag-grid-plus/errors/types.js +14 -14
  145. package/dist/esm/ag-grid-plus/hooks/index.js +2 -2
  146. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
  147. package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +44 -44
  148. package/dist/esm/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
  149. package/dist/esm/ag-grid-plus/hooks/useGridState.js +36 -36
  150. package/dist/esm/ag-grid-plus/index.less +50 -50
  151. package/dist/esm/ag-grid-plus/queryForm/index.less +72 -72
  152. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
  153. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
  154. package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
  155. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +29 -29
  156. package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +9 -9
  157. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +7 -7
  158. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
  159. package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
  160. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +76 -76
  161. package/dist/esm/ag-grid-plus/setting/performanceMonitor.js +5 -5
  162. package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
  163. package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
  164. package/dist/esm/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
  165. package/dist/esm/ag-grid-plus/theme.js +3 -3
  166. package/dist/esm/ag-grid-plus/toolBar/index.js +4 -4
  167. package/dist/esm/ag-grid-plus/types.d.ts +2 -22
  168. package/dist/esm/ag-grid-plus/utils/columnProcessors.js +52 -52
  169. package/dist/esm/ag-grid-plus/utils/constants.js +22 -22
  170. package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.d.ts +1 -0
  171. package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +29 -34
  172. package/dist/esm/ag-grid-plus/utils/logger.js +2 -2
  173. package/dist/esm/ag-grid-plus/utils/sanitize.js +10 -10
  174. package/dist/esm/ag-grid-plus/utils.js +3 -3
  175. package/dist/esm/array-table/columnHelper.js +43 -43
  176. package/dist/esm/array-table/hooks.js +11 -9
  177. package/dist/esm/array-table/index.js +40 -41
  178. package/dist/esm/array-table/utils.js +4 -3
  179. package/dist/esm/components/RegexEditor/core/RegexEditor.js +32 -32
  180. package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -119
  181. package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +52 -52
  182. package/dist/esm/components/RegexEditor/hooks/index.js +4 -4
  183. package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +48 -48
  184. package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +54 -54
  185. package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +5 -5
  186. package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +28 -28
  187. package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +24 -24
  188. package/dist/esm/components/RegexEditor/templates/index.js +2 -2
  189. package/dist/esm/components/RegexEditor/templates/storage.js +29 -29
  190. package/dist/esm/components/RegexEditor/templates/templateManager.js +29 -29
  191. package/dist/esm/components/RegexEditor/templates/types.js +74 -74
  192. package/dist/esm/components/RegexEditor/validation/complexity.js +40 -40
  193. package/dist/esm/components/RegexEditor/validation/parser.js +47 -47
  194. package/dist/esm/components/RegexEditor/validation/validator.js +54 -54
  195. package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
  196. package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +20 -20
  197. package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
  198. package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +17 -17
  199. package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +11 -11
  200. package/dist/esm/components/RegexEditor/visualizer/index.js +5 -5
  201. package/dist/esm/components/RegexEditor/visualizer/utils.js +92 -92
  202. package/dist/esm/dashboard/dashboard/components/toolbar/style/index.less +49 -49
  203. package/dist/esm/dashboard/dashboard/index.less +173 -173
  204. package/dist/esm/dashboard/dashboard/utils.js +4 -4
  205. package/dist/esm/dashboard/utils.js +8 -8
  206. package/dist/esm/dashboard/widget/index.less +7 -7
  207. package/dist/esm/dashboard/widget/selector/index.less +172 -172
  208. package/dist/esm/deleteConfirm/index.js +17 -17
  209. package/dist/esm/draggableModal/index.js +4 -4
  210. package/dist/esm/draggableModal/style.less +122 -122
  211. package/dist/esm/editable/index.js +16 -1
  212. package/dist/esm/formDesigner/arrayTable/styles.less +2 -2
  213. package/dist/esm/formDesigner/index.less +2 -2
  214. package/dist/esm/fullScreenAlert/index.js +13 -13
  215. package/dist/esm/fullScreenAlert/index.less +133 -133
  216. package/dist/esm/generatedListPage/ConfigurableToolbar.js +2 -2
  217. package/dist/esm/generatedListPage/GeneratedListPage.js +20 -20
  218. package/dist/esm/generatedListPage/OptionsColumn.js +3 -3
  219. package/dist/esm/generatedListPage/PerformanceMonitor.js +9 -9
  220. package/dist/esm/generatedListPage/RequestManager.js +39 -39
  221. package/dist/esm/generatedListPage/_utils/AccessWrapper.js +6 -6
  222. package/dist/esm/generatedListPage/_utils/defaultHandlers.js +14 -14
  223. package/dist/esm/generatedListPage/index.js +9 -9
  224. package/dist/esm/generatedListPage/usePermissionCheck.js +27 -27
  225. package/dist/esm/generatedListPage/useRequestManager.js +20 -20
  226. package/dist/esm/importModal/index.js +4 -4
  227. package/dist/esm/standardFormDialog/FormValidation.js +45 -45
  228. package/dist/esm/standardFormDialog/PortalManager.js +46 -46
  229. package/dist/esm/standardFormDialog/StandardFormDialog.js +20 -20
  230. package/dist/esm/standardFormDialog/useStandardFormSchema.js +24 -24
  231. package/dist/esm/standardFormDialog/withStandardForm.d.ts +2 -2
  232. package/dist/esm/toolBar/index.less +25 -25
  233. package/dist/esm/types/railroad-diagrams.d.ts +59 -59
  234. package/dist/esm/types/regexp-tree.d.ts +175 -175
  235. package/dist/umd/qc-ui.min.js +1 -1
  236. package/package.json +90 -90
  237. package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
  238. package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -648
  239. package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
  240. package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -643
@@ -120,18 +120,18 @@ function AgGridPlus(props) {
120
120
  var rowIdCacheRef = (0, _react.useRef)(new WeakMap());
121
121
  var rowIdCounterRef = (0, _react.useRef)(0);
122
122
 
123
- /**
124
- * 【新增】智能生成唯一行 ID 的降级函数
125
- *
126
- * 策略(按优先级):
127
- * 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
128
- * - 支持基本类型:string, number
129
- * - 支持对象类型:提取 value, id 属性
130
- * 2. 如果对象在 WeakMap 中已有缓存,直接返回
131
- * 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
132
- *
133
- * @param data 行数据对象
134
- * @returns 唯一的行 ID 字符串
123
+ /**
124
+ * 【新增】智能生成唯一行 ID 的降级函数
125
+ *
126
+ * 策略(按优先级):
127
+ * 1. 尝试常见 ID 字段:id, _id, key, uid, uuid
128
+ * - 支持基本类型:string, number
129
+ * - 支持对象类型:提取 value, id 属性
130
+ * 2. 如果对象在 WeakMap 中已有缓存,直接返回
131
+ * 3. 生成新的唯一 ID:grid-key-{counter}-{timestamp}
132
+ *
133
+ * @param data 行数据对象
134
+ * @returns 唯一的行 ID 字符串
135
135
  */
136
136
  var generateUniqueRowId = (0, _react.useCallback)(function (data) {
137
137
  if (!data || _typeof(data) !== 'object') {
@@ -260,18 +260,18 @@ function AgGridPlus(props) {
260
260
  advancedQueryRules = _useState24[0],
261
261
  setAdvancedQueryRules = _useState24[1];
262
262
 
263
- /**
264
- * 【P1 架构优化】使用单向数据流架构
265
- *
266
- * 数据流层次:
267
- * 1. Source of Truth: useSchemeDataFlow (Scheme State)
268
- * 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
269
- * 3. UI State: Context State (仅用于 UI 交互)
270
- *
271
- * 优势:
272
- * - 清晰的数据流向(单向可追踪)
273
- * - 消除状态同步冲突(单一数据源)
274
- * - 架构清晰度 +60%,Bug -40%
263
+ /**
264
+ * 【P1 架构优化】使用单向数据流架构
265
+ *
266
+ * 数据流层次:
267
+ * 1. Source of Truth: useSchemeDataFlow (Scheme State)
268
+ * 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
269
+ * 3. UI State: Context State (仅用于 UI 交互)
270
+ *
271
+ * 优势:
272
+ * - 清晰的数据流向(单向可追踪)
273
+ * - 消除状态同步冲突(单一数据源)
274
+ * - 架构清晰度 +60%,Bug -40%
275
275
  */
276
276
  var schemeDataFlow = (0, _useSchemeDataFlow.useSchemeDataFlow)(gridKey || '', allColDefsRef.current, {
277
277
  columnSchemes: columnSchemes,
@@ -353,14 +353,14 @@ function AgGridPlus(props) {
353
353
  }
354
354
  }, [rowData]);
355
355
 
356
- /**
357
- * 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
358
- *
359
- * 优势:
360
- * 1. 使用已派生的状态,避免重复计算
361
- * 2. 单向数据流,状态同步更可靠
362
- * 3. 性能提升 67%,代码更清晰
363
- * 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
356
+ /**
357
+ * 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
358
+ *
359
+ * 优势:
360
+ * 1. 使用已派生的状态,避免重复计算
361
+ * 2. 单向数据流,状态同步更可靠
362
+ * 3. 性能提升 67%,代码更清晰
363
+ * 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
364
364
  */
365
365
  (0, _react.useEffect)(function () {
366
366
  if (!gridKey || !apiRef.current) return;
@@ -418,39 +418,38 @@ function AgGridPlus(props) {
418
418
  }, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
419
419
  ]);
420
420
 
421
- /**
422
- * 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
423
- *
424
- * 场景:
425
- * - 用户删除当前正在使用的方案
426
- * - currentColumnScheme?.id 从有值变为 null
427
- *
428
- * 行为:
429
- * - 重置列状态为初始状态(默认顺序、宽度等)
430
- * - 清除所有过滤器
431
- * - 清除列样式配置
432
- *
433
- * 优势:
434
- * - 符合单向数据流架构
435
- * - 适用于所有方案切换场景(删除/取消选择)
436
- * - 用户体验好,自动恢复到初始状态
421
+ /**
422
+ * 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
423
+ *
424
+ * 场景:
425
+ * - 用户删除当前正在使用的方案
426
+ * - currentColumnScheme?.id 从有值变为 null
427
+ *
428
+ * 行为:
429
+ * - 重置列状态为初始状态(默认顺序、宽度等)
430
+ * - 清除所有过滤器
431
+ * - 清除列样式配置
432
+ *
433
+ * 优势:
434
+ * - 符合单向数据流架构
435
+ * - 适用于所有方案切换场景(删除/取消选择)
436
+ * - 用户体验好,自动恢复到初始状态
437
437
  */
438
438
  var prevSchemeIdRef = (0, _react.useRef)(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
439
439
  (0, _react.useEffect)(function () {
440
440
  if (!gridKey || !apiRef.current || !ready) return;
441
441
  var prevSchemeId = prevSchemeIdRef.current;
442
442
  var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
443
+
443
444
  // 检测方案被删除:从有值变为 null/undefined
444
445
  if (prevSchemeId && !currentSchemeId) {
445
446
  Promise.resolve().then(function () {
446
447
  if (!apiRef.current) return;
447
448
 
448
449
  // 1. 重置列状态为初始状态
449
-
450
450
  apiRef.current.resetColumnState();
451
451
 
452
452
  // 2. 清除所有过滤器
453
-
454
453
  apiRef.current.setFilterModel(null);
455
454
 
456
455
  // 3. 清除列样式配置
@@ -621,32 +620,28 @@ function AgGridPlus(props) {
621
620
  });
622
621
  });
623
622
 
624
- // 【新增】基于 entityType 自动注入扩展列 @author nokecy
623
+ // 基于 entityType 自动注入扩展列 @author nokecy
625
624
  // 从 context 的 hostEntityExtensions 获取对应实体的扩展字段并转换为列定义
626
- if (entityType && hostEntityExtensions) {
627
- var extensionCols = (0, _entityExtensionColumns.getEntityExtensionColumns)(entityType, hostEntityExtensions);
628
- if (extensionCols.length > 0) {
629
- // 查找操作列位置(pinned='right' 或 field='action')
630
- var actionIndex = columnDefs.findIndex(function (col) {
631
- return col.field === 'action' || col.pinned === 'right';
632
- });
633
- if (actionIndex === -1) {
634
- var _columnDefs;
635
- // 没有操作列,直接追加到末尾
636
- (_columnDefs = columnDefs).push.apply(_columnDefs, _toConsumableArray(extensionCols));
637
- } else {
638
- var _columnDefs2;
639
- // 插入到操作列之前
640
- (_columnDefs2 = columnDefs).splice.apply(_columnDefs2, [actionIndex, 0].concat(_toConsumableArray(extensionCols)));
641
- }
642
- _logger.logger.debug('[AgGridPlus] 已注入实体扩展列', {
643
- entityType: entityType,
644
- extensionColsCount: extensionCols.length,
645
- extensionCols: extensionCols.map(function (c) {
646
- return c.field;
647
- })
648
- });
625
+ var extensionCols = (0, _entityExtensionColumns.getEntityExtensionColumns)(entityType, hostEntityExtensions);
626
+ if (extensionCols.length > 0) {
627
+ // 查找操作列位置(pinned='right' 或 field='action'),插入到其之前
628
+ var actionIndex = columnDefs.findIndex(function (col) {
629
+ return col.field === 'action' || col.pinned === 'right';
630
+ });
631
+ if (actionIndex === -1) {
632
+ var _columnDefs;
633
+ (_columnDefs = columnDefs).push.apply(_columnDefs, _toConsumableArray(extensionCols));
634
+ } else {
635
+ var _columnDefs2;
636
+ (_columnDefs2 = columnDefs).splice.apply(_columnDefs2, [actionIndex, 0].concat(_toConsumableArray(extensionCols)));
649
637
  }
638
+ _logger.logger.debug('[AgGridPlus] 已注入实体扩展列', {
639
+ entityType: entityType,
640
+ extensionColsCount: extensionCols.length,
641
+ extensionCols: extensionCols.map(function (c) {
642
+ return c.field;
643
+ })
644
+ });
650
645
  }
651
646
  return columnDefs;
652
647
  };
@@ -1036,16 +1031,15 @@ function AgGridPlus(props) {
1036
1031
  });
1037
1032
  };
1038
1033
  var avgFun = function avgFun(field, displayedData) {
1039
- var sum = (0, _sumBy2.default)(displayedData, function (cur) {
1040
- if (cur && isValidNumber(cur[field]) && cur[field] !== undefined && cur[field] !== null) {
1041
- return cur[field];
1042
- }
1043
- return 0;
1034
+ // 修正:分子分母口径统一为「有效数字」,避免 count 误用数组(恒真)及除零得 NaN @author nokecy
1035
+ var validValues = displayedData.filter(function (cur) {
1036
+ return cur && isValidNumber(cur[field]);
1044
1037
  });
1045
- var count = displayedData.filter(function (cur) {
1046
- return cur && cur[field] !== undefined && cur[field] !== null;
1038
+ if (validValues.length === 0) return 0;
1039
+ var sum = (0, _sumBy2.default)(validValues, function (cur) {
1040
+ return cur[field];
1047
1041
  });
1048
- return count ? sum / count.length : 0;
1042
+ return sum / validValues.length;
1049
1043
  };
1050
1044
  var standardDeviationFun = function standardDeviationFun(field, displayedData) {
1051
1045
  var validValues = displayedData.filter(function (cur) {
@@ -1133,13 +1127,13 @@ function AgGridPlus(props) {
1133
1127
  calculateSum();
1134
1128
  };
1135
1129
 
1136
- /**
1137
- * 【P0 + P1 优化】列定义 - 优先使用派生状态
1138
- *
1139
- * 单向数据流优势:
1140
- * 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
1141
- * 2. 仅在无方案时使用默认逻辑
1142
- * 3. 性能提升 94%,架构清晰度 +60%
1130
+ /**
1131
+ * 【P0 + P1 优化】列定义 - 优先使用派生状态
1132
+ *
1133
+ * 单向数据流优势:
1134
+ * 1. 优先使用已派生的 derivedColumnDefs(避免重复计算)
1135
+ * 2. 仅在无方案时使用默认逻辑
1136
+ * 3. 性能提升 94%,架构清晰度 +60%
1143
1137
  */
1144
1138
  var colDefs = (0, _react.useMemo)(function () {
1145
1139
  // 【优先使用派生状态】如果有派生的列定义,直接使用
@@ -178,11 +178,7 @@ export interface GridPlusContextValue extends SchemeManagementAPI {
178
178
  isUsingGlobalQueryFallback?: boolean;
179
179
  /**
180
180
  * 实体扩展字段配置映射
181
- * key: 实体类型全名 (如 "Burn.Product.Domain.Product")
182
- * value: 该实体的扩展配置(包含字段定义数组)
183
- *
184
- * 来自后端 ABP 配置的 extraProperties.hostEntityExtensions
185
- * 用于 AgGridPlus 根据 entityType 属性自动注入扩展列
181
+ * 来自后端 ABP 配置,用于 AgGridPlus 根据 entityType 自动注入扩展列
186
182
  */
187
183
  hostEntityExtensions?: HostEntityExtensions;
188
184
  }
@@ -6,27 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.GridPlusContext = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- /**
10
- * 方案管理 API 接口
11
- *
12
- * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
13
- *
14
- * @example
15
- * ```tsx
16
- * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
17
- * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
18
- *
19
- * <GridPlusContext.Provider value={{
20
- * ...otherValues,
21
- * ...schemeManager // 展开方案管理状态
22
- * }}>
23
- * ```
9
+ /**
10
+ * 方案管理 API 接口
11
+ *
12
+ * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
17
+ * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
18
+ *
19
+ * <GridPlusContext.Provider value={{
20
+ * ...otherValues,
21
+ * ...schemeManager // 展开方案管理状态
22
+ * }}>
23
+ * ```
24
24
  */
25
25
 
26
- /**
27
- * GridPlus Context 值接口
28
- *
29
- * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
26
+ /**
27
+ * GridPlus Context 值接口
28
+ *
29
+ * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
30
30
  */
31
31
 
32
32
  var GridPlusContext = exports.GridPlusContext = /*#__PURE__*/_react.default.createContext({
@@ -14,30 +14,30 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
14
14
  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; }
15
15
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
16
  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); }
17
- /**
18
- * 【P1 架构优化】单向数据流 Hook
19
- *
20
- * 建立清晰的数据流层次:
21
- * 1. Source of Truth: Scheme State (通过参数传入)
22
- * 2. Derived State: Grid State (通过 useMemo 派生)
23
- * 3. UI State: Context State (仅用于 UI 交互)
24
- *
25
- * 优势:
26
- * - 架构清晰度 +60%(单向数据流易于追踪)
27
- * - Bug 减少率 -40%(消除状态冲突)
28
- * - 状态同步复杂度降低 70%
17
+ /**
18
+ * 【P1 架构优化】单向数据流 Hook
19
+ *
20
+ * 建立清晰的数据流层次:
21
+ * 1. Source of Truth: Scheme State (通过参数传入)
22
+ * 2. Derived State: Grid State (通过 useMemo 派生)
23
+ * 3. UI State: Context State (仅用于 UI 交互)
24
+ *
25
+ * 优势:
26
+ * - 架构清晰度 +60%(单向数据流易于追踪)
27
+ * - Bug 减少率 -40%(消除状态冲突)
28
+ * - 状态同步复杂度降低 70%
29
29
  */
30
30
 
31
- /**
32
- * 方案数据接口
31
+ /**
32
+ * 方案数据接口
33
33
  */
34
34
 
35
- /**
36
- * 数据源层 - 获取方案数据(单一数据源)
37
- *
38
- * @param gridKey - Grid 唯一标识
39
- * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
40
- * @returns 方案数据源对象
35
+ /**
36
+ * 数据源层 - 获取方案数据(单一数据源)
37
+ *
38
+ * @param gridKey - Grid 唯一标识
39
+ * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
40
+ * @returns 方案数据源对象
41
41
  */
42
42
  function useSchemeSource(gridKey, schemeData) {
43
43
  var columnSchemes = schemeData.columnSchemes,
@@ -129,12 +129,12 @@ function useSchemeSource(gridKey, schemeData) {
129
129
  }, [columnSchemes, querySchemes, currentSchemes, gridKey]);
130
130
  }
131
131
 
132
- /**
133
- * 派生层 - 计算 Grid 状态(只读派生)
134
- *
135
- * @param currentScheme - 当前列方案
136
- * @param allColDefs - 原始列定义
137
- * @returns 派生的 Grid 列定义
132
+ /**
133
+ * 派生层 - 计算 Grid 状态(只读派生)
134
+ *
135
+ * @param currentScheme - 当前列方案
136
+ * @param allColDefs - 原始列定义
137
+ * @returns 派生的 Grid 列定义
138
138
  */
139
139
  function useDerivedGridState(currentScheme, allColDefs) {
140
140
  return (0, _react.useMemo)(function () {
@@ -156,12 +156,12 @@ function useDerivedGridState(currentScheme, allColDefs) {
156
156
  currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
157
157
  }
158
158
 
159
- /**
160
- * 派生层 - 计算列样式状态(只读派生)
161
- *
162
- * @param currentScheme - 当前列方案
163
- * @param allColDefs - 原始列定义(用于检测新增列)
164
- * @returns 派生的列状态配置
159
+ /**
160
+ * 派生层 - 计算列样式状态(只读派生)
161
+ *
162
+ * @param currentScheme - 当前列方案
163
+ * @param allColDefs - 原始列定义(用于检测新增列)
164
+ * @returns 派生的列状态配置
165
165
  */
166
166
  function useDerivedColumnState(currentScheme, allColDefs) {
167
167
  return (0, _react.useMemo)(function () {
@@ -183,30 +183,30 @@ function useDerivedColumnState(currentScheme, allColDefs) {
183
183
  currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
184
184
  }
185
185
 
186
- /**
187
- * 统一的方案数据流 Hook(组合版)
188
- *
189
- * @param gridKey - Grid 唯一标识
190
- * @param allColDefs - 原始列定义
191
- * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
192
- * @returns 完整的方案数据流对象
193
- *
194
- * @example
195
- * ```tsx
196
- * function AgGridPlus({ gridKey }) {
197
- * const allColDefsRef = useRef([]);
198
- * const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
199
- *
200
- * const schemeDataFlow = useSchemeDataFlow(
201
- * gridKey,
202
- * allColDefsRef.current,
203
- * { columnSchemes, querySchemes, currentSchemes }
204
- * );
205
- *
206
- * // 只读访问数据
207
- * const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
208
- * }
209
- * ```
186
+ /**
187
+ * 统一的方案数据流 Hook(组合版)
188
+ *
189
+ * @param gridKey - Grid 唯一标识
190
+ * @param allColDefs - 原始列定义
191
+ * @param schemeData - 方案数据(从外部传入,避免 Context 覆盖问题)
192
+ * @returns 完整的方案数据流对象
193
+ *
194
+ * @example
195
+ * ```tsx
196
+ * function AgGridPlus({ gridKey }) {
197
+ * const allColDefsRef = useRef([]);
198
+ * const { columnSchemes, querySchemes, currentSchemes } = useGridSchemes();
199
+ *
200
+ * const schemeDataFlow = useSchemeDataFlow(
201
+ * gridKey,
202
+ * allColDefsRef.current,
203
+ * { columnSchemes, querySchemes, currentSchemes }
204
+ * );
205
+ *
206
+ * // 只读访问数据
207
+ * const { currentColumnScheme, derivedColumnDefs } = schemeDataFlow;
208
+ * }
209
+ * ```
210
210
  */
211
211
  function useSchemeDataFlow(gridKey, allColDefs, schemeData) {
212
212
  // 1. 数据源层(Source of Truth)
@@ -27,31 +27,31 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
27
27
  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; }
28
28
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
29
29
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
30
- /**
31
- * useSchemeManager Hook 配置
30
+ /**
31
+ * useSchemeManager Hook 配置
32
32
  */
33
33
 
34
- /**
35
- * 集中式方案管理 Hook
36
- *
37
- * 用于 GridPlusContext.Provider 中初始化方案管理功能
38
- *
39
- * @example
40
- * ```tsx
41
- * function AppProvider({ children }) {
42
- * const adapter = new BackendApiSchemeAdapter({ ... });
43
- * const schemeManager = useSchemeManager({ adapter });
44
- *
45
- * return (
46
- * <GridPlusContext.Provider value={{
47
- * ...otherValues,
48
- * ...schemeManager
49
- * }}>
50
- * {children}
51
- * </GridPlusContext.Provider>
52
- * );
53
- * }
54
- * ```
34
+ /**
35
+ * 集中式方案管理 Hook
36
+ *
37
+ * 用于 GridPlusContext.Provider 中初始化方案管理功能
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * function AppProvider({ children }) {
42
+ * const adapter = new BackendApiSchemeAdapter({ ... });
43
+ * const schemeManager = useSchemeManager({ adapter });
44
+ *
45
+ * return (
46
+ * <GridPlusContext.Provider value={{
47
+ * ...otherValues,
48
+ * ...schemeManager
49
+ * }}>
50
+ * {children}
51
+ * </GridPlusContext.Provider>
52
+ * );
53
+ * }
54
+ * ```
55
55
  */
56
56
  function useSchemeManager(config) {
57
57
  var adapter = config.adapter,
@@ -439,9 +439,9 @@ function useSchemeManager(config) {
439
439
 
440
440
  // ========== 全局配置操作 ==========
441
441
 
442
- /**
443
- * 处理全局配置操作的错误
444
- * @author nokecy
442
+ /**
443
+ * 处理全局配置操作的错误
444
+ * @author nokecy
445
445
  */
446
446
  var handleGlobalConfigError = (0, _react.useCallback)(function (error, defaultMessage) {
447
447
  var _error$response;
@@ -452,9 +452,9 @@ function useSchemeManager(config) {
452
452
  }
453
453
  }, []);
454
454
 
455
- /**
456
- * 将方案应用到全局(管理员操作)
457
- * @author nokecy
455
+ /**
456
+ * 将方案应用到全局(管理员操作)
457
+ * @author nokecy
458
458
  */
459
459
  var applySchemeToGlobal = (0, _react.useCallback)( /*#__PURE__*/function () {
460
460
  var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(gridId, schemeId) {
@@ -503,9 +503,9 @@ function useSchemeManager(config) {
503
503
  };
504
504
  }(), [adapter, currentSchemes, refreshSchemes, handleGlobalConfigError]);
505
505
 
506
- /**
507
- * 重置当前用户配置,回退到全局配置
508
- * @author nokecy
506
+ /**
507
+ * 重置当前用户配置,回退到全局配置
508
+ * @author nokecy
509
509
  */
510
510
  var resetToGlobal = (0, _react.useCallback)( /*#__PURE__*/function () {
511
511
  var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(gridId) {
@@ -550,9 +550,9 @@ function useSchemeManager(config) {
550
550
  };
551
551
  }(), [adapter, refreshSchemes, handleGlobalConfigError]);
552
552
 
553
- /**
554
- * 重置所有用户配置(管理员操作)
555
- * @author nokecy
553
+ /**
554
+ * 重置所有用户配置(管理员操作)
555
+ * @author nokecy
556
556
  */
557
557
  var resetAllUsers = (0, _react.useCallback)( /*#__PURE__*/function () {
558
558
  var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(gridId) {
@@ -630,64 +630,64 @@ function useSchemeManager(config) {
630
630
  };
631
631
  }
632
632
 
633
- /**
634
- * 在组件中使用集中式方案管理
635
- *
636
- * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
637
- *
638
- * @example
639
- * ```tsx
640
- * // 1. 创建适配器和方案管理器
641
- * function App() {
642
- * const adapter = useMemo(
643
- * () => new BackendApiSchemeAdapter({
644
- * apiBaseUrl: 'https://api.example.com',
645
- * getToken: () => localStorage.getItem('token'),
646
- * getUserId: () => localStorage.getItem('userId')
647
- * }),
648
- * []
649
- * );
650
- *
651
- * const schemeManager = useSchemeManager({
652
- * adapter,
653
- * autoLoad: true,
654
- * showErrorMessage: true,
655
- * currentUserId: currentUser?.id
656
- * });
657
- *
658
- * // 2. 传入 Provider
659
- * return (
660
- * <GridPlusContext.Provider value={{
661
- * extensibleColumns: [],
662
- * columnState: undefined,
663
- * onSaveColumnState: () => {},
664
- * applyToGlobal: () => {},
665
- * resetCurrent: () => {},
666
- * resetAll: () => {},
667
- * queryFormItems: [],
668
- * ...schemeManager // 展开方案管理状态
669
- * }}>
670
- * <MyGrid />
671
- * </GridPlusContext.Provider>
672
- * );
673
- * }
674
- *
675
- * // 3. 在子组件中使用
676
- * function MyGrid() {
677
- * const {
678
- * columnSchemes,
679
- * saveColumnScheme,
680
- * setCurrentColumnScheme
681
- * } = useGridSchemes();
682
- *
683
- * const gridId = 'my-grid';
684
- * const schemes = columnSchemes?.[gridId] || [];
685
- *
686
- * const handleSave = async () => {
687
- * await saveColumnScheme?.(gridId, newScheme);
688
- * };
689
- * }
690
- * ```
633
+ /**
634
+ * 在组件中使用集中式方案管理
635
+ *
636
+ * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
637
+ *
638
+ * @example
639
+ * ```tsx
640
+ * // 1. 创建适配器和方案管理器
641
+ * function App() {
642
+ * const adapter = useMemo(
643
+ * () => new BackendApiSchemeAdapter({
644
+ * apiBaseUrl: 'https://api.example.com',
645
+ * getToken: () => localStorage.getItem('token'),
646
+ * getUserId: () => localStorage.getItem('userId')
647
+ * }),
648
+ * []
649
+ * );
650
+ *
651
+ * const schemeManager = useSchemeManager({
652
+ * adapter,
653
+ * autoLoad: true,
654
+ * showErrorMessage: true,
655
+ * currentUserId: currentUser?.id
656
+ * });
657
+ *
658
+ * // 2. 传入 Provider
659
+ * return (
660
+ * <GridPlusContext.Provider value={{
661
+ * extensibleColumns: [],
662
+ * columnState: undefined,
663
+ * onSaveColumnState: () => {},
664
+ * applyToGlobal: () => {},
665
+ * resetCurrent: () => {},
666
+ * resetAll: () => {},
667
+ * queryFormItems: [],
668
+ * ...schemeManager // 展开方案管理状态
669
+ * }}>
670
+ * <MyGrid />
671
+ * </GridPlusContext.Provider>
672
+ * );
673
+ * }
674
+ *
675
+ * // 3. 在子组件中使用
676
+ * function MyGrid() {
677
+ * const {
678
+ * columnSchemes,
679
+ * saveColumnScheme,
680
+ * setCurrentColumnScheme
681
+ * } = useGridSchemes();
682
+ *
683
+ * const gridId = 'my-grid';
684
+ * const schemes = columnSchemes?.[gridId] || [];
685
+ *
686
+ * const handleSave = async () => {
687
+ * await saveColumnScheme?.(gridId, newScheme);
688
+ * };
689
+ * }
690
+ * ```
691
691
  */
692
692
  function useGridSchemes() {
693
693
  var context = (0, _react.useContext)(_gridContext.GridPlusContext);