@affino/datagrid-vue 0.3.9 → 0.3.11

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.
@@ -4,6 +4,8 @@ export interface DataGridAppRowHeightMetricsOptions {
4
4
  resolveRowHeightOverride: (rowIndex: number) => number | null;
5
5
  resolveRowHeightVersion?: () => number;
6
6
  hasRowHeightOverrides?: () => boolean;
7
+ resolveRowHeightOverridesSnapshot?: () => ReadonlyMap<number, number> | null;
8
+ resolveLastRowHeightMutation?: () => DataGridAppRowHeightMutation | null;
7
9
  }
8
10
  export interface DataGridAppRowHeightMetrics {
9
11
  resolveRowHeight: (rowIndex: number) => number;
@@ -15,5 +17,12 @@ export interface DataGridAppRowHeightMetrics {
15
17
  };
16
18
  resolveTotalHeight: () => number;
17
19
  }
20
+ export interface DataGridAppRowHeightMutation {
21
+ version: number;
22
+ kind: "set" | "clear" | "clear-all";
23
+ rowIndex: number | null;
24
+ previousHeight: number | null;
25
+ nextHeight: number | null;
26
+ }
18
27
  export declare function createDataGridAppRowHeightMetrics(options: DataGridAppRowHeightMetricsOptions): DataGridAppRowHeightMetrics;
19
28
  //# sourceMappingURL=dataGridRowHeightMetrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataGridRowHeightMetrics.d.ts","sourceRoot":"","sources":["../../src/app/dataGridRowHeightMetrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,MAAM,MAAM,CAAA;IACvB,oBAAoB,EAAE,MAAM,MAAM,CAAA;IAClC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC7D,uBAAuB,CAAC,EAAE,MAAM,MAAM,CAAA;IACtC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAA;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACnD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK;QACnF,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,kBAAkB,EAAE,MAAM,MAAM,CAAA;CACjC;AAgBD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,2BAA2B,CAkI7B"}
1
+ {"version":3,"file":"dataGridRowHeightMetrics.d.ts","sourceRoot":"","sources":["../../src/app/dataGridRowHeightMetrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,MAAM,MAAM,CAAA;IACvB,oBAAoB,EAAE,MAAM,MAAM,CAAA;IAClC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC7D,uBAAuB,CAAC,EAAE,MAAM,MAAM,CAAA;IACtC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAA;IACrC,iCAAiC,CAAC,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IAC5E,4BAA4B,CAAC,EAAE,MAAM,4BAA4B,GAAG,IAAI,CAAA;CACzE;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,uBAAuB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACnD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK;QACnF,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,kBAAkB,EAAE,MAAM,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,WAAW,CAAA;IACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAuBD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,2BAA2B,CAuW7B"}
@@ -1,3 +1,4 @@
1
+ const ROW_HEIGHT_CHUNK_SIZE = 256;
1
2
  function normalizeRowHeight(value) {
2
3
  if (!Number.isFinite(value)) {
3
4
  return 1;
@@ -6,17 +7,136 @@ function normalizeRowHeight(value) {
6
7
  }
7
8
  export function createDataGridAppRowHeightMetrics(options) {
8
9
  let cachedMetrics = null;
10
+ const createConstantMetrics = (totalRows, baseRowHeight, version) => ({
11
+ totalRows,
12
+ baseRowHeight,
13
+ version,
14
+ prefixOffsets: null,
15
+ chunkSize: ROW_HEIGHT_CHUNK_SIZE,
16
+ chunkDeltas: null,
17
+ chunkPrefixDeltas: null,
18
+ chunkRowDeltas: null,
19
+ totalHeight: totalRows * baseRowHeight,
20
+ });
21
+ const buildSparseMetrics = (totalRows, baseRowHeight, version, overridesSnapshot) => {
22
+ const chunkSize = ROW_HEIGHT_CHUNK_SIZE;
23
+ const chunkCount = Math.ceil(totalRows / chunkSize);
24
+ const chunkDeltas = new Array(chunkCount).fill(0);
25
+ const chunkPrefixDeltas = new Array(chunkCount + 1).fill(0);
26
+ const chunkRowDeltas = new Array(chunkCount);
27
+ let totalHeight = totalRows * baseRowHeight;
28
+ for (const [rowIndexRaw, overrideRaw] of overridesSnapshot.entries()) {
29
+ const rowIndex = Math.trunc(rowIndexRaw);
30
+ if (!Number.isFinite(rowIndex) || rowIndex < 0 || rowIndex >= totalRows) {
31
+ continue;
32
+ }
33
+ const override = normalizeRowHeight(overrideRaw);
34
+ const delta = override - baseRowHeight;
35
+ if (delta === 0) {
36
+ continue;
37
+ }
38
+ const chunkIndex = Math.floor(rowIndex / chunkSize);
39
+ const withinChunkIndex = rowIndex - (chunkIndex * chunkSize);
40
+ chunkDeltas[chunkIndex] = (chunkDeltas[chunkIndex] ?? 0) + delta;
41
+ const rowDeltas = chunkRowDeltas[chunkIndex] ?? new Map();
42
+ rowDeltas.set(withinChunkIndex, delta);
43
+ chunkRowDeltas[chunkIndex] = rowDeltas;
44
+ totalHeight += delta;
45
+ }
46
+ for (let chunkIndex = 0; chunkIndex < chunkCount; chunkIndex += 1) {
47
+ chunkPrefixDeltas[chunkIndex + 1] = (chunkPrefixDeltas[chunkIndex] ?? 0) + (chunkDeltas[chunkIndex] ?? 0);
48
+ }
49
+ return {
50
+ totalRows,
51
+ baseRowHeight,
52
+ version,
53
+ prefixOffsets: null,
54
+ chunkSize,
55
+ chunkDeltas,
56
+ chunkPrefixDeltas,
57
+ chunkRowDeltas,
58
+ totalHeight,
59
+ };
60
+ };
61
+ const applySparseMutation = (metrics, version, mutation) => {
62
+ if (metrics.chunkDeltas == null
63
+ || metrics.chunkPrefixDeltas == null
64
+ || metrics.chunkRowDeltas == null
65
+ || mutation.kind === "clear-all"
66
+ || mutation.rowIndex == null
67
+ || mutation.rowIndex < 0
68
+ || mutation.rowIndex >= metrics.totalRows) {
69
+ return null;
70
+ }
71
+ const rowIndex = Math.trunc(mutation.rowIndex);
72
+ const previousHeight = mutation.previousHeight == null
73
+ ? metrics.baseRowHeight
74
+ : normalizeRowHeight(mutation.previousHeight);
75
+ const nextHeight = mutation.nextHeight == null
76
+ ? metrics.baseRowHeight
77
+ : normalizeRowHeight(mutation.nextHeight);
78
+ const previousDelta = previousHeight - metrics.baseRowHeight;
79
+ const nextDelta = nextHeight - metrics.baseRowHeight;
80
+ const deltaDiff = nextDelta - previousDelta;
81
+ const chunkIndex = Math.floor(rowIndex / metrics.chunkSize);
82
+ const withinChunkIndex = rowIndex - (chunkIndex * metrics.chunkSize);
83
+ const rowDeltas = metrics.chunkRowDeltas[chunkIndex] ?? new Map();
84
+ if (nextDelta === 0) {
85
+ rowDeltas.delete(withinChunkIndex);
86
+ metrics.chunkRowDeltas[chunkIndex] = rowDeltas.size > 0 ? rowDeltas : undefined;
87
+ }
88
+ else {
89
+ rowDeltas.set(withinChunkIndex, nextDelta);
90
+ metrics.chunkRowDeltas[chunkIndex] = rowDeltas;
91
+ }
92
+ if (deltaDiff !== 0) {
93
+ metrics.chunkDeltas[chunkIndex] = (metrics.chunkDeltas[chunkIndex] ?? 0) + deltaDiff;
94
+ for (let index = chunkIndex + 1; index < metrics.chunkPrefixDeltas.length; index += 1) {
95
+ metrics.chunkPrefixDeltas[index] = (metrics.chunkPrefixDeltas[index] ?? 0) + deltaDiff;
96
+ }
97
+ metrics.totalHeight += deltaDiff;
98
+ }
99
+ metrics.version = version;
100
+ return metrics;
101
+ };
9
102
  const resolveCachedMetrics = () => {
10
103
  const totalRows = Math.max(0, Math.trunc(options.totalRows()));
11
104
  const baseRowHeight = normalizeRowHeight(options.resolveBaseRowHeight());
12
105
  const version = options.resolveRowHeightVersion?.() ?? 0;
13
106
  const hasRowHeightOverrides = options.hasRowHeightOverrides?.() ?? true;
107
+ const overridesSnapshot = options.resolveRowHeightOverridesSnapshot?.() ?? null;
108
+ const lastRowHeightMutation = options.resolveLastRowHeightMutation?.() ?? null;
14
109
  if (cachedMetrics
15
110
  && cachedMetrics.totalRows === totalRows
16
111
  && cachedMetrics.baseRowHeight === baseRowHeight
17
112
  && cachedMetrics.version === version) {
18
113
  return cachedMetrics;
19
114
  }
115
+ if (cachedMetrics
116
+ && cachedMetrics.totalRows === totalRows
117
+ && cachedMetrics.baseRowHeight === baseRowHeight
118
+ && overridesSnapshot != null
119
+ && version === cachedMetrics.version + 1
120
+ && lastRowHeightMutation != null
121
+ && lastRowHeightMutation.version === version) {
122
+ const updatedMetrics = applySparseMutation(cachedMetrics, version, lastRowHeightMutation);
123
+ if (updatedMetrics) {
124
+ cachedMetrics = updatedMetrics;
125
+ return updatedMetrics;
126
+ }
127
+ }
128
+ if (!hasRowHeightOverrides) {
129
+ cachedMetrics = createConstantMetrics(totalRows, baseRowHeight, version);
130
+ return cachedMetrics;
131
+ }
132
+ if (overridesSnapshot != null) {
133
+ if (overridesSnapshot.size === 0) {
134
+ cachedMetrics = createConstantMetrics(totalRows, baseRowHeight, version);
135
+ return cachedMetrics;
136
+ }
137
+ cachedMetrics = buildSparseMetrics(totalRows, baseRowHeight, version, overridesSnapshot);
138
+ return cachedMetrics;
139
+ }
20
140
  let prefixOffsets = null;
21
141
  if (hasRowHeightOverrides) {
22
142
  prefixOffsets = new Array(totalRows + 1);
@@ -32,6 +152,13 @@ export function createDataGridAppRowHeightMetrics(options) {
32
152
  baseRowHeight,
33
153
  version,
34
154
  prefixOffsets,
155
+ chunkSize: ROW_HEIGHT_CHUNK_SIZE,
156
+ chunkDeltas: null,
157
+ chunkPrefixDeltas: null,
158
+ chunkRowDeltas: null,
159
+ totalHeight: prefixOffsets == null
160
+ ? totalRows * baseRowHeight
161
+ : (prefixOffsets[totalRows] ?? (totalRows * baseRowHeight)),
35
162
  };
36
163
  return cachedMetrics;
37
164
  };
@@ -40,6 +167,13 @@ export function createDataGridAppRowHeightMetrics(options) {
40
167
  if (metrics.totalRows <= 0) {
41
168
  return metrics.baseRowHeight;
42
169
  }
170
+ if (metrics.chunkRowDeltas != null) {
171
+ const normalizedIndex = Math.max(0, Math.min(metrics.totalRows - 1, Math.trunc(rowIndex)));
172
+ const chunkIndex = Math.floor(normalizedIndex / metrics.chunkSize);
173
+ const withinChunkIndex = normalizedIndex - (chunkIndex * metrics.chunkSize);
174
+ const delta = metrics.chunkRowDeltas[chunkIndex]?.get(withinChunkIndex) ?? 0;
175
+ return metrics.baseRowHeight + delta;
176
+ }
43
177
  if (metrics.prefixOffsets == null) {
44
178
  return metrics.baseRowHeight;
45
179
  }
@@ -54,6 +188,22 @@ export function createDataGridAppRowHeightMetrics(options) {
54
188
  return 0;
55
189
  }
56
190
  const normalizedIndex = Math.max(0, Math.min(metrics.totalRows, Math.trunc(rowIndex)));
191
+ if (metrics.chunkDeltas != null
192
+ && metrics.chunkPrefixDeltas != null
193
+ && metrics.chunkRowDeltas != null) {
194
+ const chunkIndex = Math.floor(normalizedIndex / metrics.chunkSize);
195
+ let offset = normalizedIndex * metrics.baseRowHeight + (metrics.chunkPrefixDeltas[chunkIndex] ?? 0);
196
+ const withinChunkIndex = normalizedIndex - (chunkIndex * metrics.chunkSize);
197
+ if (withinChunkIndex > 0) {
198
+ const rowDeltas = metrics.chunkRowDeltas[chunkIndex];
199
+ if (rowDeltas) {
200
+ for (let row = 0; row < withinChunkIndex; row += 1) {
201
+ offset += rowDeltas.get(row) ?? 0;
202
+ }
203
+ }
204
+ }
205
+ return offset;
206
+ }
57
207
  if (metrics.prefixOffsets == null) {
58
208
  return normalizedIndex * metrics.baseRowHeight;
59
209
  }
@@ -64,6 +214,46 @@ export function createDataGridAppRowHeightMetrics(options) {
64
214
  if (metrics.totalRows <= 0) {
65
215
  return 0;
66
216
  }
217
+ if (metrics.chunkDeltas != null
218
+ && metrics.chunkPrefixDeltas != null
219
+ && metrics.chunkRowDeltas != null) {
220
+ if (metrics.totalHeight <= 0) {
221
+ return 0;
222
+ }
223
+ const clampedOffset = Math.max(0, Math.min(metrics.totalHeight - 1, offset));
224
+ let low = 0;
225
+ let high = metrics.chunkDeltas.length - 1;
226
+ while (low <= high) {
227
+ const middle = Math.floor((low + high) / 2);
228
+ const chunkStartOffset = (middle * metrics.chunkSize * metrics.baseRowHeight)
229
+ + (metrics.chunkPrefixDeltas[middle] ?? 0);
230
+ const chunkRowEnd = Math.min(metrics.totalRows, (middle + 1) * metrics.chunkSize);
231
+ const chunkEndOffset = (chunkRowEnd * metrics.baseRowHeight)
232
+ + (metrics.chunkPrefixDeltas[middle + 1] ?? 0);
233
+ if (clampedOffset < chunkStartOffset) {
234
+ high = middle - 1;
235
+ continue;
236
+ }
237
+ if (clampedOffset >= chunkEndOffset) {
238
+ low = middle + 1;
239
+ continue;
240
+ }
241
+ const chunkStartRow = middle * metrics.chunkSize;
242
+ const rowDeltas = metrics.chunkRowDeltas[middle];
243
+ let rowStartOffset = chunkStartOffset;
244
+ const rowsInChunk = chunkRowEnd - chunkStartRow;
245
+ for (let rowOffset = 0; rowOffset < rowsInChunk; rowOffset += 1) {
246
+ const rowHeight = metrics.baseRowHeight + (rowDeltas?.get(rowOffset) ?? 0);
247
+ const rowEndOffset = rowStartOffset + rowHeight;
248
+ if (clampedOffset < rowEndOffset) {
249
+ return chunkStartRow + rowOffset;
250
+ }
251
+ rowStartOffset = rowEndOffset;
252
+ }
253
+ return Math.max(0, chunkRowEnd - 1);
254
+ }
255
+ return Math.max(0, Math.min(metrics.totalRows - 1, low * metrics.chunkSize));
256
+ }
67
257
  if (metrics.prefixOffsets == null) {
68
258
  const normalizedHeight = Math.max(1, metrics.baseRowHeight);
69
259
  return Math.max(0, Math.min(metrics.totalRows - 1, Math.floor(Math.max(0, offset) / normalizedHeight)));
@@ -104,6 +294,9 @@ export function createDataGridAppRowHeightMetrics(options) {
104
294
  };
105
295
  const resolveTotalHeight = () => {
106
296
  const metrics = resolveCachedMetrics();
297
+ if (metrics.chunkDeltas != null) {
298
+ return metrics.totalHeight;
299
+ }
107
300
  if (metrics.prefixOffsets == null) {
108
301
  return metrics.totalRows * metrics.baseRowHeight;
109
302
  }
@@ -1,7 +1,7 @@
1
1
  export type { DataGridAppAdvancedFilterClauseDraft, DataGridAppAdvancedFilterClauseJoin, DataGridAppAdvancedFilterClausePatch, DataGridAppAdvancedFilterColumnOption, } from "./advancedFilterPanel.types";
2
2
  export type { DataGridAppApplyColumnLayoutPayload, DataGridAppColumnLayoutDraftColumn, DataGridAppColumnLayoutPanelItem, DataGridAppColumnLayoutVisibilityPatch, } from "./columnLayoutPanel.types";
3
3
  export { useDataGridAppModeMeta, type UseDataGridAppModeMetaOptions, type UseDataGridAppModeMetaResult, } from "./useDataGridAppModeMeta";
4
- export { createDataGridAppRowHeightMetrics, type DataGridAppRowHeightMetrics, type DataGridAppRowHeightMetricsOptions, } from "./dataGridRowHeightMetrics";
4
+ export { createDataGridAppRowHeightMetrics, type DataGridAppRowHeightMutation, type DataGridAppRowHeightMetrics, type DataGridAppRowHeightMetricsOptions, } from "./dataGridRowHeightMetrics";
5
5
  export { useDataGridAppClipboard, type DataGridAppPendingClipboardEdge, type DataGridAppPendingClipboardOperation, type UseDataGridAppClipboardOptions, type UseDataGridAppClipboardResult, } from "./useDataGridAppClipboard";
6
6
  export { useDataGridAppFill, type UseDataGridAppFillOptions, type UseDataGridAppFillResult, } from "./useDataGridAppFill";
7
7
  export { useDataGridAppInteractionController, type UseDataGridAppInteractionControllerOptions, type UseDataGridAppInteractionControllerResult, } from "./useDataGridAppInteractionController";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,YAAY,EACV,mCAAmC,EACnC,kCAAkC,EAClC,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,iCAAiC,EACjC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,uBAAuB,EACvB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,mCAAmC,EACnC,KAAK,0CAA0C,EAC/C,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,GACzC,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,mCAAmC,EACnC,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,qCAAqC,GAC3C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,8BAA8B,EAC9B,KAAK,oCAAoC,GAC1C,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EACL,gCAAgC,EAChC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,GAC5C,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,YAAY,EACV,mCAAmC,EACnC,kCAAkC,EAClC,gCAAgC,EAChC,sCAAsC,GACvC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,iCAAiC,EACjC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,uBAAuB,EACvB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,mCAAmC,EACnC,KAAK,0CAA0C,EAC/C,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,GACzC,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,GACtC,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,mCAAmC,EACnC,KAAK,yCAAyC,GAC/C,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,qCAAqC,GAC3C,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,2BAA2B,EAC3B,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,8BAA8B,EAC9B,KAAK,oCAAoC,GAC1C,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EACL,gCAAgC,EAChC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,GAC5C,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,GACvC,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,EACtC,KAAK,gCAAgC,GACtC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAA"}
@@ -11,6 +11,7 @@ export interface UseDataGridAppAdvancedFilterBuilderResult {
11
11
  advancedFilterDraftClauses: ComputedRef<readonly DataGridAppAdvancedFilterClauseDraft[]>;
12
12
  advancedFilterColumns: ComputedRef<readonly DataGridAppAdvancedFilterColumnOption[]>;
13
13
  appliedAdvancedFilterExpression: ComputedRef<DataGridAdvancedFilterExpression | null>;
14
+ hydrateAdvancedFilterClauses: (clauses: readonly DataGridAppAdvancedFilterClauseDraft[]) => void;
14
15
  openAdvancedFilterPanel: () => void;
15
16
  addAdvancedFilterClause: () => void;
16
17
  removeAdvancedFilterClause: (clauseId: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useDataGridAppAdvancedFilterBuilder.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppAdvancedFilterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AACrD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EACV,oCAAoC,EAEpC,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,6BAA6B,CAAA;AAEpC,UAAU,0CAA0C;IAClD,cAAc,EAAE,MAAM,SAAS,qCAAqC,EAAE,CAAA;IACtE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3C;AAKD,MAAM,WAAW,yCAAyC;IACxD,yBAAyB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/C,0BAA0B,EAAE,WAAW,CAAC,SAAS,oCAAoC,EAAE,CAAC,CAAA;IACxF,qBAAqB,EAAE,WAAW,CAAC,SAAS,qCAAqC,EAAE,CAAC,CAAA;IACpF,+BAA+B,EAAE,WAAW,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAA;IACrF,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,0BAA0B,EAAE,CAAC,KAAK,EAAE,oCAAoC,KAAK,IAAI,CAAA;IACjF,yBAAyB,EAAE,MAAM,IAAI,CAAA;IACrC,wBAAwB,EAAE,MAAM,IAAI,CAAA;IACpC,wBAAwB,EAAE,MAAM,IAAI,CAAA;CACrC;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0CAA0C,GAClD,yCAAyC,CA8J3C"}
1
+ {"version":3,"file":"useDataGridAppAdvancedFilterBuilder.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppAdvancedFilterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,KAAK,CAAA;AACrD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,KAAK,EACV,oCAAoC,EAEpC,oCAAoC,EACpC,qCAAqC,EACtC,MAAM,6BAA6B,CAAA;AAEpC,UAAU,0CAA0C;IAClD,cAAc,EAAE,MAAM,SAAS,qCAAqC,EAAE,CAAA;IACtE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3C;AAKD,MAAM,WAAW,yCAAyC;IACxD,yBAAyB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/C,0BAA0B,EAAE,WAAW,CAAC,SAAS,oCAAoC,EAAE,CAAC,CAAA;IACxF,qBAAqB,EAAE,WAAW,CAAC,SAAS,qCAAqC,EAAE,CAAC,CAAA;IACpF,+BAA+B,EAAE,WAAW,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAA;IACrF,4BAA4B,EAAE,CAAC,OAAO,EAAE,SAAS,oCAAoC,EAAE,KAAK,IAAI,CAAA;IAChG,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,0BAA0B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,0BAA0B,EAAE,CAAC,KAAK,EAAE,oCAAoC,KAAK,IAAI,CAAA;IACjF,yBAAyB,EAAE,MAAM,IAAI,CAAA;IACrC,wBAAwB,EAAE,MAAM,IAAI,CAAA;IACpC,wBAAwB,EAAE,MAAM,IAAI,CAAA;CACrC;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,0CAA0C,GAClD,yCAAyC,CA+K3C"}
@@ -36,6 +36,14 @@ export function useDataGridAppAdvancedFilterBuilder(options) {
36
36
  value: clause.value,
37
37
  }));
38
38
  };
39
+ const cloneAppliedClauses = (clauses) => {
40
+ return clauses.map(clause => createClause({
41
+ join: clause.join,
42
+ columnKey: clause.columnKey,
43
+ operator: clause.operator,
44
+ value: clause.value,
45
+ }));
46
+ };
39
47
  const buildAdvancedFilterExpressionFromClauses = (clauses) => {
40
48
  const normalizedClauses = clauses
41
49
  .map(clause => ({
@@ -81,6 +89,10 @@ export function useDataGridAppAdvancedFilterBuilder(options) {
81
89
  const appliedAdvancedFilterExpression = computed(() => {
82
90
  return buildAdvancedFilterExpressionFromClauses(appliedClauses.value);
83
91
  });
92
+ const hydrateAdvancedFilterClauses = (clauses) => {
93
+ appliedClauses.value = cloneAppliedClauses(clauses);
94
+ draftClauses.value = cloneClauses(appliedClauses.value);
95
+ };
84
96
  const openAdvancedFilterPanel = () => {
85
97
  draftClauses.value = cloneClauses(appliedClauses.value);
86
98
  isPanelOpen.value = true;
@@ -128,6 +140,7 @@ export function useDataGridAppAdvancedFilterBuilder(options) {
128
140
  advancedFilterDraftClauses: computed(() => draftClauses.value),
129
141
  advancedFilterColumns,
130
142
  appliedAdvancedFilterExpression,
143
+ hydrateAdvancedFilterClauses,
131
144
  openAdvancedFilterPanel,
132
145
  addAdvancedFilterClause,
133
146
  removeAdvancedFilterClause,
@@ -3,7 +3,11 @@ import type { DataGridColumnSnapshot, DataGridRowNode } from "@affino/datagrid-c
3
3
  import type { UseDataGridRuntimeResult } from "../composables/useDataGridRuntime";
4
4
  import type { DataGridAppMode, DataGridAppRowRenderMode } from "./useDataGridAppControls";
5
5
  type MaybeRef<T> = T | Ref<T>;
6
- export type DataGridAppBodyViewportRuntime<TRow> = Pick<UseDataGridRuntimeResult<TRow>, "virtualWindow" | "syncBodyRowsInRange" | "rowPartition">;
6
+ export type DataGridAppBodyViewportRuntime<TRow> = Pick<UseDataGridRuntimeResult<TRow>, "virtualWindow" | "syncBodyRowsInRange" | "rowPartition"> & {
7
+ setViewportRange?: UseDataGridRuntimeResult<TRow>["setViewportRange"];
8
+ setVirtualWindowRange?: UseDataGridRuntimeResult<TRow>["setVirtualWindowRange"];
9
+ getBodyRowAtIndex?: (rowIndex: number) => DataGridRowNode<TRow> | null;
10
+ };
7
11
  export interface UseDataGridAppViewportOptions<TRow> {
8
12
  runtime: DataGridAppBodyViewportRuntime<TRow>;
9
13
  mode: MaybeRef<DataGridAppMode>;
@@ -26,6 +30,8 @@ export interface UseDataGridAppViewportOptions<TRow> {
26
30
  resolveRowOffset?: (rowIndex: number) => number;
27
31
  resolveRowIndexAtOffset?: (offset: number) => number;
28
32
  resolveTotalRowHeight?: () => number;
33
+ requestAnimationFrame?: (callback: FrameRequestCallback) => number;
34
+ cancelAnimationFrame?: (handle: number) => void;
29
35
  }
30
36
  export interface UseDataGridAppViewportResult<TRow> {
31
37
  headerViewportRef: Ref<HTMLElement | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"useDataGridAppViewport.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppViewport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDataGridAppViewport.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppViewport.ts"],"names":[],"mappings":"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"}