@affino/datagrid-core 0.1.0 → 0.2.1

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 (139) hide show
  1. package/README.md +45 -0
  2. package/dist/plugins/index.js +2 -2
  3. package/dist/plugins/manager.js +1 -1
  4. package/dist/src/a11y/index.js +1 -1
  5. package/dist/src/columns/__tests__/pinning.spec.js +1 -1
  6. package/dist/src/columns/columnGroup.js +1 -1
  7. package/dist/src/config/tableConfig.js +1 -1
  8. package/dist/src/core/gridApi.d.ts +38 -1
  9. package/dist/src/core/gridApi.d.ts.map +1 -1
  10. package/dist/src/core/gridApi.js +309 -2
  11. package/dist/src/dom/getCellElementsByRange.js +1 -1
  12. package/dist/src/dom/gridUtils.js +1 -1
  13. package/dist/src/events/useTableEvents.js +1 -1
  14. package/dist/src/models/aggregationEngine.d.ts +27 -0
  15. package/dist/src/models/aggregationEngine.d.ts.map +1 -0
  16. package/dist/src/models/aggregationEngine.js +524 -0
  17. package/dist/src/models/clientRowLifecycle.d.ts +10 -0
  18. package/dist/src/models/clientRowLifecycle.d.ts.map +1 -0
  19. package/dist/src/models/clientRowLifecycle.js +38 -0
  20. package/dist/src/models/clientRowModel.d.ts +31 -1
  21. package/dist/src/models/clientRowModel.d.ts.map +1 -1
  22. package/dist/src/models/clientRowModel.js +1914 -377
  23. package/dist/src/models/clientRowProjectionEngine.d.ts +44 -0
  24. package/dist/src/models/clientRowProjectionEngine.d.ts.map +1 -0
  25. package/dist/src/models/clientRowProjectionEngine.js +101 -0
  26. package/dist/src/models/clientRowProjectionOrchestrator.d.ts +11 -0
  27. package/dist/src/models/clientRowProjectionOrchestrator.d.ts.map +1 -0
  28. package/dist/src/models/clientRowProjectionOrchestrator.js +19 -0
  29. package/dist/src/models/clientRowRuntimeStateStore.d.ts +27 -0
  30. package/dist/src/models/clientRowRuntimeStateStore.d.ts.map +1 -0
  31. package/dist/src/models/clientRowRuntimeStateStore.js +52 -0
  32. package/dist/src/models/dataSourceBackedRowModel.d.ts.map +1 -1
  33. package/dist/src/models/dataSourceBackedRowModel.js +48 -0
  34. package/dist/src/models/dependencyGraph.d.ts +20 -0
  35. package/dist/src/models/dependencyGraph.d.ts.map +1 -0
  36. package/dist/src/models/dependencyGraph.js +223 -0
  37. package/dist/src/models/dependencyModel.d.ts +36 -0
  38. package/dist/src/models/dependencyModel.d.ts.map +1 -0
  39. package/dist/src/models/dependencyModel.js +72 -0
  40. package/dist/src/models/groupProjectionController.d.ts +17 -0
  41. package/dist/src/models/groupProjectionController.d.ts.map +1 -0
  42. package/dist/src/models/groupProjectionController.js +132 -0
  43. package/dist/src/models/index.d.ts +8 -2
  44. package/dist/src/models/index.d.ts.map +1 -1
  45. package/dist/src/models/index.js +3 -0
  46. package/dist/src/models/projectionPolicy.d.ts +39 -0
  47. package/dist/src/models/projectionPolicy.d.ts.map +1 -0
  48. package/dist/src/models/projectionPolicy.js +78 -0
  49. package/dist/src/models/projectionStages.d.ts +12 -0
  50. package/dist/src/models/projectionStages.d.ts.map +1 -0
  51. package/dist/src/models/projectionStages.js +35 -0
  52. package/dist/src/models/rowModel.d.ts +38 -2
  53. package/dist/src/models/rowModel.d.ts.map +1 -1
  54. package/dist/src/models/rowModel.js +36 -2
  55. package/dist/src/models/rowPatchAnalyzer.d.ts +75 -0
  56. package/dist/src/models/rowPatchAnalyzer.d.ts.map +1 -0
  57. package/dist/src/models/rowPatchAnalyzer.js +260 -0
  58. package/dist/src/models/serverBackedRowModel.d.ts.map +1 -1
  59. package/dist/src/models/serverBackedRowModel.js +46 -0
  60. package/dist/src/protocol/index.js +3 -3
  61. package/dist/src/protocol/publicProtocolCodemod.d.ts.map +1 -1
  62. package/dist/src/protocol/publicProtocolCodemod.js +139 -29
  63. package/dist/src/public.d.ts +2 -2
  64. package/dist/src/public.d.ts.map +1 -1
  65. package/dist/src/public.js +1 -1
  66. package/dist/src/selection/__tests__/coordinateSpace.contract.spec.js +1 -1
  67. package/dist/src/selection/__tests__/geometry.ranges.property.spec.js +2 -2
  68. package/dist/src/selection/__tests__/overlay.fill.geometry.contract.spec.js +2 -2
  69. package/dist/src/selection/adapters/plainSelectionAdapter.js +2 -2
  70. package/dist/src/selection/cutPreview.js +1 -1
  71. package/dist/src/selection/dragSession.js +1 -1
  72. package/dist/src/selection/fillAuto.js +1 -1
  73. package/dist/src/selection/fillCommit.js +2 -2
  74. package/dist/src/selection/fillHandle.js +2 -2
  75. package/dist/src/selection/fillPreview.js +1 -1
  76. package/dist/src/selection/fillSession.js +2 -2
  77. package/dist/src/selection/fullSelection.js +2 -2
  78. package/dist/src/selection/headlessSelectionController.js +3 -3
  79. package/dist/src/selection/matrix.js +1 -1
  80. package/dist/src/selection/operations.js +2 -2
  81. package/dist/src/selection/remap.js +2 -2
  82. package/dist/src/selection/selectionOverlay.js +4 -4
  83. package/dist/src/selection/selectionStore.js +1 -1
  84. package/dist/src/selection/update.js +1 -1
  85. package/dist/src/serverRowModel/index.js +1 -1
  86. package/dist/src/serverRowModel/serverRowModel.js +1 -1
  87. package/dist/src/sorting/tableSorting.js +1 -1
  88. package/dist/src/types/index.d.ts +2 -2
  89. package/dist/src/types/index.d.ts.map +1 -1
  90. package/dist/src/types/index.js +2 -2
  91. package/dist/src/utils/validators.js +1 -1
  92. package/dist/src/viewport/__tests__/horizontalClamp.contract.spec.js +1 -1
  93. package/dist/src/viewport/__tests__/horizontalUpdate.contract.spec.js +6 -6
  94. package/dist/src/viewport/__tests__/horizontalVirtualization.stress.contract.spec.js +1 -1
  95. package/dist/src/viewport/__tests__/scrollSync.raf.spec.js +3 -3
  96. package/dist/src/viewport/__tests__/scrollSync.transforms.spec.js +1 -1
  97. package/dist/src/viewport/__tests__/syncTargets.contract.spec.js +1 -1
  98. package/dist/src/viewport/dataGridViewportConstants.js +1 -1
  99. package/dist/src/viewport/dataGridViewportController.d.ts +3 -3
  100. package/dist/src/viewport/dataGridViewportController.d.ts.map +1 -1
  101. package/dist/src/viewport/dataGridViewportController.js +26 -26
  102. package/dist/src/viewport/dataGridViewportHorizontalClamp.js +2 -2
  103. package/dist/src/viewport/dataGridViewportHorizontalMeta.js +2 -2
  104. package/dist/src/viewport/dataGridViewportHorizontalUpdate.js +1 -1
  105. package/dist/src/viewport/dataGridViewportModelBridgeService.d.ts +7 -7
  106. package/dist/src/viewport/dataGridViewportModelBridgeService.d.ts.map +1 -1
  107. package/dist/src/viewport/dataGridViewportModelBridgeService.js +1 -1
  108. package/dist/src/viewport/dataGridViewportRenderSyncService.js +1 -1
  109. package/dist/src/viewport/dataGridViewportScrollIo.js +2 -2
  110. package/dist/src/viewport/dataGridViewportSignals.js +1 -1
  111. package/dist/src/viewport/dataGridViewportTypes.d.ts +2 -2
  112. package/dist/src/viewport/dataGridViewportTypes.d.ts.map +1 -1
  113. package/dist/src/viewport/dataGridViewportVirtualization.js +5 -5
  114. package/dist/src/viewport/horizontalViewportController.js +6 -6
  115. package/dist/src/viewport/tableViewportConstants.js +1 -1
  116. package/dist/src/viewport/tableViewportController.js +25 -25
  117. package/dist/src/viewport/tableViewportHorizontalClamp.js +2 -2
  118. package/dist/src/viewport/tableViewportHorizontalMeta.js +2 -2
  119. package/dist/src/viewport/tableViewportHorizontalUpdate.js +1 -1
  120. package/dist/src/viewport/tableViewportRenderSyncService.js +1 -1
  121. package/dist/src/viewport/tableViewportScrollIo.js +2 -2
  122. package/dist/src/viewport/tableViewportSignals.js +1 -1
  123. package/dist/src/viewport/tableViewportVirtualization.js +5 -5
  124. package/dist/src/viewport/verticalViewportController.js +3 -3
  125. package/dist/src/virtualization/autoColumnResize.js +2 -2
  126. package/dist/src/virtualization/axisMath.js +1 -1
  127. package/dist/src/virtualization/axisVirtualizer.js +1 -1
  128. package/dist/src/virtualization/horizontalLayout.js +1 -1
  129. package/dist/src/virtualization/horizontalVirtualWindowMath.js +2 -2
  130. package/dist/src/virtualization/horizontalVirtualizer.js +4 -4
  131. package/dist/src/virtualization/useAutoColumnResize.js +1 -1
  132. package/dist/src/virtualization/verticalVirtualizer.js +1 -1
  133. package/dist/theme/defaultStyleConfig.js +1 -1
  134. package/dist/theme/index.js +8 -8
  135. package/dist/theme/industrialNeutralTheme.js +2 -2
  136. package/dist/theme/palette.js +1 -1
  137. package/dist/theme/utils.js +1 -1
  138. package/dist/tsconfig.public.tsbuildinfo +1 -1
  139. package/package.json +6 -5
package/README.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  Framework-agnostic data grid core.
4
4
 
5
+ ## Layer boundaries (Core vs Orchestration vs Adapter)
6
+
7
+ - Keep in `@affino/datagrid-core`:
8
+ - row/column/filter/sort/group runtime state and deterministic model contracts.
9
+ - snapshot APIs consumed by adapters.
10
+ - Keep in `@affino/datagrid-orchestration`:
11
+ - interaction policies (scroll linking, resize guards, recovery loops, selection gestures).
12
+ - reusable orchestration logic that is UI-framework agnostic.
13
+ - Keep in adapters (`@affino/datagrid-vue` etc):
14
+ - framework lifecycle, refs/DOM reads-writes, template wiring and presentation concerns.
15
+
5
16
  ## API Tiers
6
17
 
7
18
  ### Tier 1: Stable (`@affino/datagrid-core`)
@@ -38,6 +49,40 @@ Unsafe, no semver guarantees. Use only for local tooling and migrations.
38
49
 
39
50
  Core naming is fully canonicalized to `DataGrid*` across stable, advanced, and internal entrypoints.
40
51
 
52
+ ## Row Updates: `setRows` vs `patchRows`
53
+
54
+ `createClientRowModel()` now supports two update modes:
55
+
56
+ - `setRows(rows)`:
57
+ - full source replacement.
58
+ - keeps legacy behavior: increments row revision and recomputes filter/sort/group projection.
59
+ - `patchRows(updates, options?)`:
60
+ - partial updates by `rowId` (cell-level/streaming updates).
61
+ - defaults are backward-compatible (`recomputeSort/filter/group = true`).
62
+ - can disable projection phases for UX stability:
63
+ - `recomputeSort: false`
64
+ - `recomputeFilter: false`
65
+ - `recomputeGroup: false`
66
+
67
+ ```ts
68
+ rowModel.patchRows(
69
+ [{ rowId: "r-42", data: { tested_at: "2026-02-21T10:15:00Z" } }],
70
+ { recomputeSort: false, recomputeFilter: false, recomputeGroup: false },
71
+ )
72
+ ```
73
+
74
+ When all recompute flags are disabled, cell values update and snapshot revision changes, but visible row order/filter/group projection may be temporarily stale by design.
75
+
76
+ Client projection is internally modeled as a stage graph:
77
+
78
+ - `filter -> sort -> group -> paginate -> visible`
79
+
80
+ Stage dirty state is propagated through dependencies, and snapshot includes `projection` diagnostics (`version`, `staleStages`) for devtools/integration debugging.
81
+ `patchRows` uses field-aware invalidation internally: only stages whose dependency fields intersect patched fields are invalidated.
82
+ Projection recompute is dirty-stage driven (not full-pass): blocked stages (`recompute* = false`) run in non-recompute mode for data continuity and remain marked stale until an explicit recompute is allowed.
83
+ Projection diagnostics expose cycle vs actual recompute semantics: `version`/`cycleVersion` increase every projection cycle, while `recomputeVersion` increases only when at least one stage actually recomputed.
84
+ For `treeData`, set `dependencyFields` to avoid unnecessary regroup/tree projection on unrelated cell patches.
85
+
41
86
  ## Deterministic Integration Snapshot
42
87
 
43
88
  Viewport integration should read deterministic state from controller snapshot API instead of peeking into internal signals or DOM transforms:
@@ -1,3 +1,3 @@
1
1
  // src/datagrid/plugins/index.ts
2
- export * from "./types";
3
- export * from "./manager";
2
+ export * from "./types.js";
3
+ export * from "./manager.js";
@@ -1,6 +1,6 @@
1
1
  // src/datagrid/plugins/manager.ts
2
2
  // Runtime manager responsible for installing, updating, and disposing DataGrid plugins.
3
- import { DataGridPluginEventBus } from "./eventBus";
3
+ import { DataGridPluginEventBus } from "./eventBus.js";
4
4
  function isDataGridPlugin(value) {
5
5
  if (!value || typeof value !== "object") {
6
6
  return false;
@@ -1 +1 @@
1
- export { createDataGridA11yStateMachine } from "./headlessA11yStateMachine";
1
+ export { createDataGridA11yStateMachine } from "./headlessA11yStateMachine.js";
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { resolveCanonicalPinMode } from "../pinning";
2
+ import { resolveCanonicalPinMode } from "../pinning.js";
3
3
  describe("resolveCanonicalPinMode", () => {
4
4
  it("resolves canonical pin states and defaults to none", () => {
5
5
  expect(resolveCanonicalPinMode({ pin: "left" })).toBe("left");
@@ -1,4 +1,4 @@
1
- import { createWritableSignal, } from "../runtime/signals";
1
+ import { createWritableSignal, } from "../runtime/signals.js";
2
2
  function isGroupDef(candidate) {
3
3
  return typeof (candidate === null || candidate === void 0 ? void 0 : candidate.groupId) === "string" && Array.isArray(candidate === null || candidate === void 0 ? void 0 : candidate.children);
4
4
  }
@@ -1,4 +1,4 @@
1
- import { BASE_ROW_HEIGHT } from "../utils/constants";
1
+ import { BASE_ROW_HEIGHT } from "../utils/constants.js";
2
2
  export const DEFAULT_LAZY_PAGE_SIZE = 200;
3
3
  export const DEFAULT_SELECTION_METRIC_DEFINITIONS = [
4
4
  { id: "count", label: "Count", precision: 0 },
@@ -1,4 +1,4 @@
1
- import type { DataGridColumnDef, DataGridColumnModel, DataGridColumnModelSnapshot, DataGridColumnPin, DataGridColumnSnapshot, DataGridFilterSnapshot, DataGridGroupBySpec, DataGridGroupExpansionSnapshot, DataGridPaginationInput, DataGridPaginationSnapshot, DataGridRowModel, DataGridRowModelSnapshot, DataGridRowNode, DataGridSortState, DataGridViewportRange } from "../models";
1
+ import type { DataGridColumnDef, DataGridColumnModel, DataGridColumnModelSnapshot, DataGridColumnPin, DataGridColumnSnapshot, DataGridClientRowPatch, DataGridClientRowPatchOptions, DataGridFilterSnapshot, DataGridSortAndFilterModelInput, DataGridGroupBySpec, DataGridGroupExpansionSnapshot, DataGridAggregationModel, DataGridPaginationInput, DataGridPaginationSnapshot, DataGridRowId, DataGridRowModel, DataGridRowModelSnapshot, DataGridRowNode, DataGridSortState, DataGridViewportRange } from "../models";
2
2
  import type { DataGridSelectionSnapshot } from "../selection/snapshot";
3
3
  import { type DataGridSelectionAggregationKind, type DataGridSelectionSummaryColumnConfig, type DataGridSelectionSummaryScope, type DataGridSelectionSummarySnapshot } from "../selection/selectionSummary";
4
4
  import type { DataGridTransactionInput, DataGridTransactionSnapshot } from "./transactionService";
@@ -24,6 +24,31 @@ export type CreateDataGridApiOptions<TRow = unknown> = CreateDataGridApiFromCore
24
24
  export interface DataGridRefreshOptions {
25
25
  reset?: boolean;
26
26
  }
27
+ export interface DataGridCellRefreshOptions {
28
+ immediate?: boolean;
29
+ reason?: string;
30
+ }
31
+ export interface DataGridApplyEditsOptions {
32
+ emit?: boolean;
33
+ reapply?: boolean;
34
+ }
35
+ export interface DataGridCellRefreshRange {
36
+ rowKey: DataGridRowId;
37
+ columnKeys: readonly string[];
38
+ }
39
+ export interface DataGridCellRefreshEntry {
40
+ rowKey: DataGridRowId;
41
+ rowIndex: number;
42
+ columnKey: string;
43
+ columnIndex: number;
44
+ pin: DataGridColumnPin;
45
+ }
46
+ export interface DataGridCellsRefreshBatch {
47
+ timestamp: number;
48
+ reason?: string;
49
+ cells: readonly DataGridCellRefreshEntry[];
50
+ }
51
+ export type DataGridCellsRefreshListener = (batch: DataGridCellsRefreshBatch) => void;
27
52
  export interface DataGridApi<TRow = unknown> {
28
53
  readonly lifecycle: DataGridCore["lifecycle"];
29
54
  init(): Promise<void>;
@@ -41,7 +66,10 @@ export interface DataGridApi<TRow = unknown> {
41
66
  setCurrentPage(page: number): void;
42
67
  setSortModel(sortModel: readonly DataGridSortState[]): void;
43
68
  setFilterModel(filterModel: DataGridFilterSnapshot | null): void;
69
+ setSortAndFilterModel(input: DataGridSortAndFilterModelInput): void;
44
70
  setGroupBy(groupBy: DataGridGroupBySpec | null): void;
71
+ setAggregationModel(aggregationModel: DataGridAggregationModel<TRow> | null): void;
72
+ getAggregationModel(): DataGridAggregationModel<TRow> | null;
45
73
  setGroupExpansion(expansion: DataGridGroupExpansionSnapshot | null): void;
46
74
  toggleGroup(groupKey: string): void;
47
75
  expandGroup(groupKey: string): void;
@@ -49,6 +77,15 @@ export interface DataGridApi<TRow = unknown> {
49
77
  expandAllGroups(): void;
50
78
  collapseAllGroups(): void;
51
79
  refresh(options?: DataGridRefreshOptions): Promise<void> | void;
80
+ reapplyView(): Promise<void> | void;
81
+ hasPatchSupport(): boolean;
82
+ patchRows(updates: readonly DataGridClientRowPatch<TRow>[], options?: DataGridClientRowPatchOptions): void;
83
+ applyEdits(updates: readonly DataGridClientRowPatch<TRow>[], options?: DataGridApplyEditsOptions): void;
84
+ setAutoReapply(value: boolean): void;
85
+ getAutoReapply(): boolean;
86
+ refreshCellsByRowKeys(rowKeys: readonly DataGridRowId[], columnKeys: readonly string[], options?: DataGridCellRefreshOptions): void;
87
+ refreshCellsByRanges(ranges: readonly DataGridCellRefreshRange[], options?: DataGridCellRefreshOptions): void;
88
+ onCellsRefresh(listener: DataGridCellsRefreshListener): () => void;
52
89
  getColumnModelSnapshot(): DataGridColumnModelSnapshot;
53
90
  getColumn(key: string): DataGridColumnSnapshot | undefined;
54
91
  setColumns(columns: DataGridColumnDef[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"gridApi.d.ts","sourceRoot":"","sources":["../../../src/core/gridApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gridApi.d.ts","sourceRoot":"","sources":["../../../src/core/gridApi.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,168 @@
1
- import { createDataGridSelectionSummary, } from "../selection/selectionSummary";
1
+ import { createDataGridSelectionSummary, } from "../selection/selectionSummary.js";
2
+ function normalizeRowRefreshKey(rowKey) {
3
+ if (typeof rowKey === "number") {
4
+ return `n:${rowKey}`;
5
+ }
6
+ return `s:${rowKey}`;
7
+ }
8
+ function normalizeRefreshColumnKey(columnKey) {
9
+ if (typeof columnKey !== "string") {
10
+ return null;
11
+ }
12
+ const normalized = columnKey.trim();
13
+ return normalized.length > 0 ? normalized : null;
14
+ }
15
+ function createDeferredScheduler() {
16
+ let nextHandleId = 1;
17
+ const cancelledHandles = new Set();
18
+ return {
19
+ schedule(callback) {
20
+ const handle = { id: nextHandleId };
21
+ nextHandleId += 1;
22
+ Promise.resolve().then(() => {
23
+ if (cancelledHandles.has(handle.id)) {
24
+ cancelledHandles.delete(handle.id);
25
+ return;
26
+ }
27
+ callback();
28
+ });
29
+ return handle;
30
+ },
31
+ cancel(handle) {
32
+ cancelledHandles.add(handle.id);
33
+ },
34
+ };
35
+ }
36
+ class DataGridCellRefreshRegistry {
37
+ constructor(resolveVisibleEntries, scheduleFrame, cancelFrame) {
38
+ Object.defineProperty(this, "resolveVisibleEntries", {
39
+ enumerable: true,
40
+ configurable: true,
41
+ writable: true,
42
+ value: resolveVisibleEntries
43
+ });
44
+ Object.defineProperty(this, "scheduleFrame", {
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true,
48
+ value: scheduleFrame
49
+ });
50
+ Object.defineProperty(this, "cancelFrame", {
51
+ enumerable: true,
52
+ configurable: true,
53
+ writable: true,
54
+ value: cancelFrame
55
+ });
56
+ Object.defineProperty(this, "listeners", {
57
+ enumerable: true,
58
+ configurable: true,
59
+ writable: true,
60
+ value: new Set()
61
+ });
62
+ Object.defineProperty(this, "pendingRowsByKey", {
63
+ enumerable: true,
64
+ configurable: true,
65
+ writable: true,
66
+ value: new Map()
67
+ });
68
+ Object.defineProperty(this, "scheduledHandle", {
69
+ enumerable: true,
70
+ configurable: true,
71
+ writable: true,
72
+ value: null
73
+ });
74
+ Object.defineProperty(this, "pendingReason", {
75
+ enumerable: true,
76
+ configurable: true,
77
+ writable: true,
78
+ value: void 0
79
+ });
80
+ Object.defineProperty(this, "nextBatchSequence", {
81
+ enumerable: true,
82
+ configurable: true,
83
+ writable: true,
84
+ value: 1
85
+ });
86
+ }
87
+ queueByRowKeys(rowKeys, columnKeys, options) {
88
+ this.queueByRanges(rowKeys.map(rowKey => ({ rowKey, columnKeys })), options);
89
+ }
90
+ queueByRanges(ranges, options) {
91
+ var _a;
92
+ for (const range of ranges) {
93
+ const normalizedRowKey = normalizeRowRefreshKey(range.rowKey);
94
+ const pendingRow = (_a = this.pendingRowsByKey.get(normalizedRowKey)) !== null && _a !== void 0 ? _a : {
95
+ rowKey: range.rowKey,
96
+ columnKeys: new Set(),
97
+ };
98
+ for (const rawColumnKey of range.columnKeys) {
99
+ const columnKey = normalizeRefreshColumnKey(rawColumnKey);
100
+ if (!columnKey) {
101
+ continue;
102
+ }
103
+ pendingRow.columnKeys.add(columnKey);
104
+ }
105
+ if (pendingRow.columnKeys.size > 0) {
106
+ this.pendingRowsByKey.set(normalizedRowKey, pendingRow);
107
+ }
108
+ }
109
+ if (typeof (options === null || options === void 0 ? void 0 : options.reason) === "string" && options.reason.trim().length > 0) {
110
+ this.pendingReason = options.reason;
111
+ }
112
+ if (options === null || options === void 0 ? void 0 : options.immediate) {
113
+ this.flush();
114
+ return;
115
+ }
116
+ this.schedule();
117
+ }
118
+ subscribe(listener) {
119
+ this.listeners.add(listener);
120
+ return () => {
121
+ this.listeners.delete(listener);
122
+ };
123
+ }
124
+ dispose() {
125
+ if (this.scheduledHandle != null) {
126
+ this.cancelFrame(this.scheduledHandle);
127
+ this.scheduledHandle = null;
128
+ }
129
+ this.pendingRowsByKey.clear();
130
+ this.listeners.clear();
131
+ this.pendingReason = undefined;
132
+ }
133
+ schedule() {
134
+ if (this.scheduledHandle != null || this.pendingRowsByKey.size === 0) {
135
+ return;
136
+ }
137
+ this.scheduledHandle = this.scheduleFrame(() => {
138
+ this.scheduledHandle = null;
139
+ this.flush();
140
+ });
141
+ }
142
+ flush() {
143
+ if (this.pendingRowsByKey.size === 0) {
144
+ return;
145
+ }
146
+ const timestamp = this.nextBatchSequence;
147
+ this.nextBatchSequence += 1;
148
+ const pendingRows = Array.from(this.pendingRowsByKey.values());
149
+ this.pendingRowsByKey.clear();
150
+ const cells = this.resolveVisibleEntries(pendingRows);
151
+ const reason = this.pendingReason;
152
+ this.pendingReason = undefined;
153
+ if (cells.length === 0 || this.listeners.size === 0) {
154
+ return;
155
+ }
156
+ const batch = {
157
+ timestamp,
158
+ reason,
159
+ cells,
160
+ };
161
+ for (const listener of this.listeners) {
162
+ listener(batch);
163
+ }
164
+ }
165
+ }
2
166
  function assertRowModelService(core) {
3
167
  const service = core.getService("rowModel");
4
168
  if (!service.model) {
@@ -103,17 +267,108 @@ function assertTransactionCapability(capability) {
103
267
  }
104
268
  return capability;
105
269
  }
270
+ function resolvePatchCapability(rowModel) {
271
+ const candidate = rowModel;
272
+ if (typeof candidate.patchRows !== "function") {
273
+ return null;
274
+ }
275
+ return {
276
+ patchRows: candidate.patchRows.bind(rowModel),
277
+ };
278
+ }
279
+ function resolveSortFilterBatchCapability(rowModel) {
280
+ const candidate = rowModel;
281
+ if (typeof candidate.setSortAndFilterModel !== "function") {
282
+ return null;
283
+ }
284
+ return {
285
+ setSortAndFilterModel: candidate.setSortAndFilterModel.bind(rowModel),
286
+ };
287
+ }
288
+ function assertPatchCapability(capability) {
289
+ if (!capability) {
290
+ throw new Error('[DataGridApi] rowModel does not implement patchRows capability.');
291
+ }
292
+ return capability;
293
+ }
106
294
  export function createDataGridApi(options) {
107
295
  const deps = resolveApiDependencies(options);
108
296
  const { lifecycle, init, start, stop, dispose, rowModel, columnModel, getViewportService, getSelectionService, getTransactionService, } = deps;
109
297
  const resolveCurrentSelectionCapability = () => resolveSelectionCapability(getSelectionService());
110
298
  const resolveCurrentTransactionCapability = () => resolveTransactionCapability(getTransactionService());
299
+ const resolveCurrentPatchCapability = () => resolvePatchCapability(rowModel);
300
+ const resolveCurrentSortFilterBatchCapability = () => resolveSortFilterBatchCapability(rowModel);
301
+ const deferredScheduler = createDeferredScheduler();
302
+ let autoReapply = false;
303
+ const resolveVisibleCellRefreshEntries = (pendingRows) => {
304
+ if (pendingRows.length === 0) {
305
+ return [];
306
+ }
307
+ const rowSnapshot = rowModel.getSnapshot();
308
+ const viewportRows = rowModel.getRowsInRange(rowSnapshot.viewportRange);
309
+ if (viewportRows.length === 0) {
310
+ return [];
311
+ }
312
+ const visibleRowIndexByKey = new Map();
313
+ for (const row of viewportRows) {
314
+ visibleRowIndexByKey.set(normalizeRowRefreshKey(row.rowId), row.displayIndex);
315
+ }
316
+ const columnSnapshot = columnModel.getSnapshot();
317
+ const visibleColumnMetaByKey = new Map();
318
+ for (let index = 0; index < columnSnapshot.visibleColumns.length; index += 1) {
319
+ const column = columnSnapshot.visibleColumns[index];
320
+ if (!column) {
321
+ continue;
322
+ }
323
+ visibleColumnMetaByKey.set(column.key, {
324
+ columnIndex: index,
325
+ pin: column.pin,
326
+ });
327
+ }
328
+ const dedupe = new Set();
329
+ const cells = [];
330
+ for (const pendingRow of pendingRows) {
331
+ const rowIndex = visibleRowIndexByKey.get(normalizeRowRefreshKey(pendingRow.rowKey));
332
+ if (typeof rowIndex !== "number") {
333
+ continue;
334
+ }
335
+ for (const columnKey of pendingRow.columnKeys) {
336
+ const columnMeta = visibleColumnMetaByKey.get(columnKey);
337
+ if (!columnMeta) {
338
+ continue;
339
+ }
340
+ const dedupeKey = `${normalizeRowRefreshKey(pendingRow.rowKey)}|${columnKey}`;
341
+ if (dedupe.has(dedupeKey)) {
342
+ continue;
343
+ }
344
+ dedupe.add(dedupeKey);
345
+ cells.push({
346
+ rowKey: pendingRow.rowKey,
347
+ rowIndex,
348
+ columnKey,
349
+ columnIndex: columnMeta.columnIndex,
350
+ pin: columnMeta.pin,
351
+ });
352
+ }
353
+ }
354
+ cells.sort((left, right) => {
355
+ if (left.rowIndex !== right.rowIndex) {
356
+ return left.rowIndex - right.rowIndex;
357
+ }
358
+ return left.columnIndex - right.columnIndex;
359
+ });
360
+ return cells;
361
+ };
362
+ const cellRefreshRegistry = new DataGridCellRefreshRegistry(resolveVisibleCellRefreshEntries, deferredScheduler.schedule, deferredScheduler.cancel);
111
363
  return {
112
364
  lifecycle,
113
365
  init,
114
366
  start,
115
367
  stop,
116
- dispose,
368
+ dispose() {
369
+ cellRefreshRegistry.dispose();
370
+ return dispose();
371
+ },
117
372
  getRowModelSnapshot() {
118
373
  return rowModel.getSnapshot();
119
374
  },
@@ -149,9 +404,24 @@ export function createDataGridApi(options) {
149
404
  setFilterModel(filterModel) {
150
405
  rowModel.setFilterModel(filterModel);
151
406
  },
407
+ setSortAndFilterModel(input) {
408
+ const capability = resolveCurrentSortFilterBatchCapability();
409
+ if (capability) {
410
+ capability.setSortAndFilterModel(input);
411
+ return;
412
+ }
413
+ rowModel.setFilterModel(input.filterModel);
414
+ rowModel.setSortModel(input.sortModel);
415
+ },
152
416
  setGroupBy(groupBy) {
153
417
  rowModel.setGroupBy(groupBy);
154
418
  },
419
+ setAggregationModel(aggregationModel) {
420
+ rowModel.setAggregationModel(aggregationModel);
421
+ },
422
+ getAggregationModel() {
423
+ return rowModel.getAggregationModel();
424
+ },
155
425
  setGroupExpansion(expansion) {
156
426
  rowModel.setGroupExpansion(expansion);
157
427
  },
@@ -173,6 +443,43 @@ export function createDataGridApi(options) {
173
443
  refresh(options) {
174
444
  return rowModel.refresh((options === null || options === void 0 ? void 0 : options.reset) ? "reset" : undefined);
175
445
  },
446
+ reapplyView() {
447
+ return rowModel.refresh("reapply");
448
+ },
449
+ hasPatchSupport() {
450
+ return resolveCurrentPatchCapability() !== null;
451
+ },
452
+ patchRows(updates, options) {
453
+ const capability = assertPatchCapability(resolveCurrentPatchCapability());
454
+ capability.patchRows(updates, options);
455
+ },
456
+ applyEdits(updates, options) {
457
+ const capability = assertPatchCapability(resolveCurrentPatchCapability());
458
+ const shouldReapply = typeof (options === null || options === void 0 ? void 0 : options.reapply) === "boolean"
459
+ ? options.reapply
460
+ : autoReapply;
461
+ capability.patchRows(updates, {
462
+ recomputeSort: shouldReapply,
463
+ recomputeFilter: shouldReapply,
464
+ recomputeGroup: shouldReapply,
465
+ emit: options === null || options === void 0 ? void 0 : options.emit,
466
+ });
467
+ },
468
+ setAutoReapply(value) {
469
+ autoReapply = Boolean(value);
470
+ },
471
+ getAutoReapply() {
472
+ return autoReapply;
473
+ },
474
+ refreshCellsByRowKeys(rowKeys, columnKeys, options) {
475
+ cellRefreshRegistry.queueByRowKeys(rowKeys, columnKeys, options);
476
+ },
477
+ refreshCellsByRanges(ranges, options) {
478
+ cellRefreshRegistry.queueByRanges(ranges, options);
479
+ },
480
+ onCellsRefresh(listener) {
481
+ return cellRefreshRegistry.subscribe(listener);
482
+ },
176
483
  getColumnModelSnapshot() {
177
484
  return columnModel.getSnapshot();
178
485
  },
@@ -1,4 +1,4 @@
1
- import { getCellElement } from "./gridUtils";
1
+ import { getCellElement } from "./gridUtils.js";
2
2
  function normalizeContainers(source) {
3
3
  if (!source) {
4
4
  return [];
@@ -1,4 +1,4 @@
1
- import { accumulateColumnWidths as accumulateColumnWidthsCore, calculateVisibleColumns as calculateVisibleColumnsCore, COLUMN_VIRTUALIZATION_BUFFER, DEFAULT_COLUMN_WIDTH, resolveColumnWidth as resolveColumnWidthCore, } from "../virtualization/columnSizing";
1
+ import { accumulateColumnWidths as accumulateColumnWidthsCore, calculateVisibleColumns as calculateVisibleColumnsCore, COLUMN_VIRTUALIZATION_BUFFER, DEFAULT_COLUMN_WIDTH, resolveColumnWidth as resolveColumnWidthCore, } from "../virtualization/columnSizing.js";
2
2
  export { COLUMN_VIRTUALIZATION_BUFFER, DEFAULT_COLUMN_WIDTH };
3
3
  export const supportsCssZoom = typeof CSS !== "undefined" &&
4
4
  typeof CSS.supports === "function" &&
@@ -1,4 +1,4 @@
1
- import { ZOOM_STEP } from "../utils/constants";
1
+ import { ZOOM_STEP } from "../utils/constants.js";
2
2
  export function useTableEvents({ isEditingCell, focusContainer, selection, clipboard, history, zoom, requestEdit, }) {
3
3
  async function handleKeydown(event) {
4
4
  const zoomModifier = event.ctrlKey || event.metaKey;
@@ -0,0 +1,27 @@
1
+ import type { DataGridAggOp, DataGridAggregationModel, DataGridRowNode } from "./rowModel.js";
2
+ export interface DataGridCompiledAggregationColumn<T = unknown> {
3
+ key: string;
4
+ op: DataGridAggOp;
5
+ readValue: (row: DataGridRowNode<T>) => unknown;
6
+ createState: () => unknown;
7
+ add: (state: unknown, value: unknown, row: DataGridRowNode<T>) => void;
8
+ merge?: (state: unknown, childState: unknown) => void;
9
+ remove?: (state: unknown, value: unknown, row: DataGridRowNode<T>) => void;
10
+ finalize: (state: unknown) => unknown;
11
+ }
12
+ export type DataGridIncrementalAggregationLeafContribution = Readonly<Record<string, unknown>>;
13
+ export type DataGridIncrementalAggregationGroupState = Record<string, unknown>;
14
+ export interface DataGridAggregationEngine<T = unknown> {
15
+ setModel: (model: DataGridAggregationModel<T> | null) => void;
16
+ getModel: () => DataGridAggregationModel<T> | null;
17
+ getCompiledColumns: () => readonly DataGridCompiledAggregationColumn<T>[];
18
+ isIncrementalAggregationSupported: () => boolean;
19
+ createEmptyGroupState: () => DataGridIncrementalAggregationGroupState | null;
20
+ createLeafContribution: (row: DataGridRowNode<T>) => DataGridIncrementalAggregationLeafContribution | null;
21
+ applyContributionDelta: (groupState: DataGridIncrementalAggregationGroupState, previous: DataGridIncrementalAggregationLeafContribution | null, next: DataGridIncrementalAggregationLeafContribution | null) => void;
22
+ finalizeGroupState: (groupState: DataGridIncrementalAggregationGroupState) => Record<string, unknown>;
23
+ computeAggregatesForLeaves: (rows: readonly DataGridRowNode<T>[]) => Record<string, unknown>;
24
+ computeAggregatesForGroupedRows: (projectedRows: readonly DataGridRowNode<T>[]) => ReadonlyMap<string, Record<string, unknown>>;
25
+ }
26
+ export declare function createDataGridAggregationEngine<T>(initialModel?: DataGridAggregationModel<T> | null): DataGridAggregationEngine<T>;
27
+ //# sourceMappingURL=aggregationEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregationEngine.d.ts","sourceRoot":"","sources":["../../../src/models/aggregationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,wBAAwB,EACxB,eAAe,EAChB,MAAM,eAAe,CAAA;AAsGtB,MAAM,WAAW,iCAAiC,CAAC,CAAC,GAAG,OAAO;IAC5D,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,aAAa,CAAA;IACjB,SAAS,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,CAAA;IAC/C,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IACtE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IACrD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC1E,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;CACtC;AAED,MAAM,MAAM,8CAA8C,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9F,MAAM,MAAM,wCAAwC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9E,MAAM,WAAW,yBAAyB,CAAC,CAAC,GAAG,OAAO;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7D,QAAQ,EAAE,MAAM,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAClD,kBAAkB,EAAE,MAAM,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,iCAAiC,EAAE,MAAM,OAAO,CAAA;IAChD,qBAAqB,EAAE,MAAM,wCAAwC,GAAG,IAAI,CAAA;IAC5E,sBAAsB,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,8CAA8C,GAAG,IAAI,CAAA;IAC1G,sBAAsB,EAAE,CACtB,UAAU,EAAE,wCAAwC,EACpD,QAAQ,EAAE,8CAA8C,GAAG,IAAI,EAC/D,IAAI,EAAE,8CAA8C,GAAG,IAAI,KACxD,IAAI,CAAA;IACT,kBAAkB,EAAE,CAAC,UAAU,EAAE,wCAAwC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrG,0BAA0B,EAAE,CAAC,IAAI,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5F,+BAA+B,EAAE,CAC/B,aAAa,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,KACzC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAClD;AAuTD,wBAAgB,+BAA+B,CAAC,CAAC,EAC/C,YAAY,GAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAW,GACtD,yBAAyB,CAAC,CAAC,CAAC,CAsL9B"}