@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.
- package/README.md +45 -0
- package/dist/plugins/index.js +2 -2
- package/dist/plugins/manager.js +1 -1
- package/dist/src/a11y/index.js +1 -1
- package/dist/src/columns/__tests__/pinning.spec.js +1 -1
- package/dist/src/columns/columnGroup.js +1 -1
- package/dist/src/config/tableConfig.js +1 -1
- package/dist/src/core/gridApi.d.ts +38 -1
- package/dist/src/core/gridApi.d.ts.map +1 -1
- package/dist/src/core/gridApi.js +309 -2
- package/dist/src/dom/getCellElementsByRange.js +1 -1
- package/dist/src/dom/gridUtils.js +1 -1
- package/dist/src/events/useTableEvents.js +1 -1
- package/dist/src/models/aggregationEngine.d.ts +27 -0
- package/dist/src/models/aggregationEngine.d.ts.map +1 -0
- package/dist/src/models/aggregationEngine.js +524 -0
- package/dist/src/models/clientRowLifecycle.d.ts +10 -0
- package/dist/src/models/clientRowLifecycle.d.ts.map +1 -0
- package/dist/src/models/clientRowLifecycle.js +38 -0
- package/dist/src/models/clientRowModel.d.ts +31 -1
- package/dist/src/models/clientRowModel.d.ts.map +1 -1
- package/dist/src/models/clientRowModel.js +1914 -377
- package/dist/src/models/clientRowProjectionEngine.d.ts +44 -0
- package/dist/src/models/clientRowProjectionEngine.d.ts.map +1 -0
- package/dist/src/models/clientRowProjectionEngine.js +101 -0
- package/dist/src/models/clientRowProjectionOrchestrator.d.ts +11 -0
- package/dist/src/models/clientRowProjectionOrchestrator.d.ts.map +1 -0
- package/dist/src/models/clientRowProjectionOrchestrator.js +19 -0
- package/dist/src/models/clientRowRuntimeStateStore.d.ts +27 -0
- package/dist/src/models/clientRowRuntimeStateStore.d.ts.map +1 -0
- package/dist/src/models/clientRowRuntimeStateStore.js +52 -0
- package/dist/src/models/dataSourceBackedRowModel.d.ts.map +1 -1
- package/dist/src/models/dataSourceBackedRowModel.js +48 -0
- package/dist/src/models/dependencyGraph.d.ts +20 -0
- package/dist/src/models/dependencyGraph.d.ts.map +1 -0
- package/dist/src/models/dependencyGraph.js +223 -0
- package/dist/src/models/dependencyModel.d.ts +36 -0
- package/dist/src/models/dependencyModel.d.ts.map +1 -0
- package/dist/src/models/dependencyModel.js +72 -0
- package/dist/src/models/groupProjectionController.d.ts +17 -0
- package/dist/src/models/groupProjectionController.d.ts.map +1 -0
- package/dist/src/models/groupProjectionController.js +132 -0
- package/dist/src/models/index.d.ts +8 -2
- package/dist/src/models/index.d.ts.map +1 -1
- package/dist/src/models/index.js +3 -0
- package/dist/src/models/projectionPolicy.d.ts +39 -0
- package/dist/src/models/projectionPolicy.d.ts.map +1 -0
- package/dist/src/models/projectionPolicy.js +78 -0
- package/dist/src/models/projectionStages.d.ts +12 -0
- package/dist/src/models/projectionStages.d.ts.map +1 -0
- package/dist/src/models/projectionStages.js +35 -0
- package/dist/src/models/rowModel.d.ts +38 -2
- package/dist/src/models/rowModel.d.ts.map +1 -1
- package/dist/src/models/rowModel.js +36 -2
- package/dist/src/models/rowPatchAnalyzer.d.ts +75 -0
- package/dist/src/models/rowPatchAnalyzer.d.ts.map +1 -0
- package/dist/src/models/rowPatchAnalyzer.js +260 -0
- package/dist/src/models/serverBackedRowModel.d.ts.map +1 -1
- package/dist/src/models/serverBackedRowModel.js +46 -0
- package/dist/src/protocol/index.js +3 -3
- package/dist/src/protocol/publicProtocolCodemod.d.ts.map +1 -1
- package/dist/src/protocol/publicProtocolCodemod.js +139 -29
- package/dist/src/public.d.ts +2 -2
- package/dist/src/public.d.ts.map +1 -1
- package/dist/src/public.js +1 -1
- package/dist/src/selection/__tests__/coordinateSpace.contract.spec.js +1 -1
- package/dist/src/selection/__tests__/geometry.ranges.property.spec.js +2 -2
- package/dist/src/selection/__tests__/overlay.fill.geometry.contract.spec.js +2 -2
- package/dist/src/selection/adapters/plainSelectionAdapter.js +2 -2
- package/dist/src/selection/cutPreview.js +1 -1
- package/dist/src/selection/dragSession.js +1 -1
- package/dist/src/selection/fillAuto.js +1 -1
- package/dist/src/selection/fillCommit.js +2 -2
- package/dist/src/selection/fillHandle.js +2 -2
- package/dist/src/selection/fillPreview.js +1 -1
- package/dist/src/selection/fillSession.js +2 -2
- package/dist/src/selection/fullSelection.js +2 -2
- package/dist/src/selection/headlessSelectionController.js +3 -3
- package/dist/src/selection/matrix.js +1 -1
- package/dist/src/selection/operations.js +2 -2
- package/dist/src/selection/remap.js +2 -2
- package/dist/src/selection/selectionOverlay.js +4 -4
- package/dist/src/selection/selectionStore.js +1 -1
- package/dist/src/selection/update.js +1 -1
- package/dist/src/serverRowModel/index.js +1 -1
- package/dist/src/serverRowModel/serverRowModel.js +1 -1
- package/dist/src/sorting/tableSorting.js +1 -1
- package/dist/src/types/index.d.ts +2 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +2 -2
- package/dist/src/utils/validators.js +1 -1
- package/dist/src/viewport/__tests__/horizontalClamp.contract.spec.js +1 -1
- package/dist/src/viewport/__tests__/horizontalUpdate.contract.spec.js +6 -6
- package/dist/src/viewport/__tests__/horizontalVirtualization.stress.contract.spec.js +1 -1
- package/dist/src/viewport/__tests__/scrollSync.raf.spec.js +3 -3
- package/dist/src/viewport/__tests__/scrollSync.transforms.spec.js +1 -1
- package/dist/src/viewport/__tests__/syncTargets.contract.spec.js +1 -1
- package/dist/src/viewport/dataGridViewportConstants.js +1 -1
- package/dist/src/viewport/dataGridViewportController.d.ts +3 -3
- package/dist/src/viewport/dataGridViewportController.d.ts.map +1 -1
- package/dist/src/viewport/dataGridViewportController.js +26 -26
- package/dist/src/viewport/dataGridViewportHorizontalClamp.js +2 -2
- package/dist/src/viewport/dataGridViewportHorizontalMeta.js +2 -2
- package/dist/src/viewport/dataGridViewportHorizontalUpdate.js +1 -1
- package/dist/src/viewport/dataGridViewportModelBridgeService.d.ts +7 -7
- package/dist/src/viewport/dataGridViewportModelBridgeService.d.ts.map +1 -1
- package/dist/src/viewport/dataGridViewportModelBridgeService.js +1 -1
- package/dist/src/viewport/dataGridViewportRenderSyncService.js +1 -1
- package/dist/src/viewport/dataGridViewportScrollIo.js +2 -2
- package/dist/src/viewport/dataGridViewportSignals.js +1 -1
- package/dist/src/viewport/dataGridViewportTypes.d.ts +2 -2
- package/dist/src/viewport/dataGridViewportTypes.d.ts.map +1 -1
- package/dist/src/viewport/dataGridViewportVirtualization.js +5 -5
- package/dist/src/viewport/horizontalViewportController.js +6 -6
- package/dist/src/viewport/tableViewportConstants.js +1 -1
- package/dist/src/viewport/tableViewportController.js +25 -25
- package/dist/src/viewport/tableViewportHorizontalClamp.js +2 -2
- package/dist/src/viewport/tableViewportHorizontalMeta.js +2 -2
- package/dist/src/viewport/tableViewportHorizontalUpdate.js +1 -1
- package/dist/src/viewport/tableViewportRenderSyncService.js +1 -1
- package/dist/src/viewport/tableViewportScrollIo.js +2 -2
- package/dist/src/viewport/tableViewportSignals.js +1 -1
- package/dist/src/viewport/tableViewportVirtualization.js +5 -5
- package/dist/src/viewport/verticalViewportController.js +3 -3
- package/dist/src/virtualization/autoColumnResize.js +2 -2
- package/dist/src/virtualization/axisMath.js +1 -1
- package/dist/src/virtualization/axisVirtualizer.js +1 -1
- package/dist/src/virtualization/horizontalLayout.js +1 -1
- package/dist/src/virtualization/horizontalVirtualWindowMath.js +2 -2
- package/dist/src/virtualization/horizontalVirtualizer.js +4 -4
- package/dist/src/virtualization/useAutoColumnResize.js +1 -1
- package/dist/src/virtualization/verticalVirtualizer.js +1 -1
- package/dist/theme/defaultStyleConfig.js +1 -1
- package/dist/theme/index.js +8 -8
- package/dist/theme/industrialNeutralTheme.js +2 -2
- package/dist/theme/palette.js +1 -1
- package/dist/theme/utils.js +1 -1
- package/dist/tsconfig.public.tsbuildinfo +1 -1
- 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:
|
package/dist/plugins/index.js
CHANGED
|
@@ -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";
|
package/dist/plugins/manager.js
CHANGED
|
@@ -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;
|
package/dist/src/a11y/index.js
CHANGED
|
@@ -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 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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"}
|
package/dist/src/core/gridApi.js
CHANGED
|
@@ -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 { 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"}
|