@vuu-ui/vuu-data-local 2.1.19-beta.2 → 2.1.19-beta.4

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 (53) hide show
  1. package/cjs/array-data-source/aggregate-utils.js +237 -0
  2. package/cjs/array-data-source/aggregate-utils.js.map +1 -0
  3. package/cjs/array-data-source/array-data-source.js +914 -0
  4. package/cjs/array-data-source/array-data-source.js.map +1 -0
  5. package/cjs/array-data-source/array-data-utils.js +62 -0
  6. package/cjs/array-data-source/array-data-utils.js.map +1 -0
  7. package/cjs/array-data-source/group-utils.js +187 -0
  8. package/cjs/array-data-source/group-utils.js.map +1 -0
  9. package/cjs/array-data-source/sort-utils.js +73 -0
  10. package/cjs/array-data-source/sort-utils.js.map +1 -0
  11. package/cjs/index.js +12 -0
  12. package/cjs/index.js.map +1 -0
  13. package/cjs/json-data-source/JsonDataSource.js +404 -0
  14. package/cjs/json-data-source/JsonDataSource.js.map +1 -0
  15. package/cjs/tree-data-source/IconProvider.js +28 -0
  16. package/cjs/tree-data-source/IconProvider.js.map +1 -0
  17. package/cjs/tree-data-source/TreeDataSource.js +434 -0
  18. package/cjs/tree-data-source/TreeDataSource.js.map +1 -0
  19. package/esm/array-data-source/aggregate-utils.js +235 -0
  20. package/esm/array-data-source/aggregate-utils.js.map +1 -0
  21. package/esm/array-data-source/array-data-source.js +912 -0
  22. package/esm/array-data-source/array-data-source.js.map +1 -0
  23. package/esm/array-data-source/array-data-utils.js +59 -0
  24. package/esm/array-data-source/array-data-utils.js.map +1 -0
  25. package/esm/array-data-source/group-utils.js +183 -0
  26. package/esm/array-data-source/group-utils.js.map +1 -0
  27. package/esm/array-data-source/sort-utils.js +69 -0
  28. package/esm/array-data-source/sort-utils.js.map +1 -0
  29. package/esm/index.js +4 -0
  30. package/esm/index.js.map +1 -0
  31. package/esm/json-data-source/JsonDataSource.js +402 -0
  32. package/esm/json-data-source/JsonDataSource.js.map +1 -0
  33. package/esm/tree-data-source/IconProvider.js +26 -0
  34. package/esm/tree-data-source/IconProvider.js.map +1 -0
  35. package/esm/tree-data-source/TreeDataSource.js +432 -0
  36. package/esm/tree-data-source/TreeDataSource.js.map +1 -0
  37. package/package.json +14 -11
  38. package/types/array-data-source/aggregate-utils.d.ts +2 -2
  39. package/types/array-data-source/array-data-source.d.ts +12 -12
  40. package/types/array-data-source/array-data-utils.d.ts +2 -2
  41. package/types/array-data-source/group-utils.d.ts +4 -4
  42. package/types/array-data-source/sort-utils.d.ts +4 -4
  43. package/types/json-data-source/JsonDataSource.d.ts +2 -2
  44. package/types/tree-data-source/TreeDataSource.d.ts +2 -2
  45. package/src/array-data-source/aggregate-utils.js +0 -121
  46. package/src/array-data-source/array-data-source.js +0 -671
  47. package/src/array-data-source/array-data-utils.js +0 -41
  48. package/src/array-data-source/group-utils.js +0 -138
  49. package/src/array-data-source/sort-utils.js +0 -56
  50. package/src/index.js +0 -3
  51. package/src/json-data-source/JsonDataSource.js +0 -319
  52. package/src/tree-data-source/IconProvider.js +0 -11
  53. package/src/tree-data-source/TreeDataSource.js +0 -353
@@ -0,0 +1,432 @@
1
+ import { BaseDataSource, KeySet, treeToDataSourceRows, NULL_RANGE, uuid, isSingleValueFilter, lastPathSegment, missingAncestor, getParentRow, metadataKeys } from '@vuu-ui/vuu-utils';
2
+ import { IconProvider } from './IconProvider.js';
3
+ import { parseFilter } from '@vuu-ui/vuu-filter-parser';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
12
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
13
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
14
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
15
+ var __privateWrapper = (obj, member, setter, getter) => ({
16
+ set _(value) {
17
+ __privateSet(obj, member, value);
18
+ },
19
+ get _() {
20
+ return __privateGet(obj, member, getter);
21
+ }
22
+ });
23
+ var _aggregations, _data, _iconProvider, _selectedRowsCount, _size, _status, _filterSet;
24
+ const TREE_SCHEMA = {
25
+ columns: [
26
+ { name: "nodeData", serverDataType: "string" },
27
+ { name: "Level 1", serverDataType: "string" },
28
+ { name: "Level 2", serverDataType: "string" },
29
+ { name: "Level 3", serverDataType: "string" },
30
+ { name: "Level 4", serverDataType: "string" },
31
+ { name: "Level 5", serverDataType: "string" }
32
+ ],
33
+ key: "",
34
+ table: { module: "", table: "" }
35
+ };
36
+ const { COUNT, DEPTH, IDX, IS_EXPANDED, IS_LEAF, KEY, SELECTED } = metadataKeys;
37
+ const toClientRow = (row, keys) => {
38
+ const [rowIndex] = row;
39
+ const clientRow = row.slice();
40
+ clientRow[1] = keys.keyFor(rowIndex);
41
+ return clientRow;
42
+ };
43
+ class TreeDataSource extends BaseDataSource {
44
+ constructor({ data, ...props }) {
45
+ super(props);
46
+ __publicField(this, "columnDescriptors");
47
+ __publicField(this, "clientCallback");
48
+ __publicField(this, "expandedRows", /* @__PURE__ */ new Set());
49
+ __publicField(this, "visibleRows", []);
50
+ __publicField(this, "visibleRowIndex", {});
51
+ __privateAdd(this, _aggregations, []);
52
+ __privateAdd(this, _data);
53
+ __privateAdd(this, _iconProvider);
54
+ __privateAdd(this, _selectedRowsCount, 0);
55
+ __privateAdd(this, _size, 0);
56
+ __privateAdd(this, _status, "initialising");
57
+ __privateAdd(this, _filterSet);
58
+ __publicField(this, "rowCount");
59
+ __publicField(this, "keys", new KeySet(this._range));
60
+ __publicField(this, "indexOfRowWithKey", (key) => __privateGet(this, _data).findIndex((row) => row[KEY] === key));
61
+ if (!data) {
62
+ throw Error("TreeDataSource constructor called without data");
63
+ }
64
+ __privateSet(this, _iconProvider, new IconProvider());
65
+ [this.columnDescriptors, __privateWrapper(this, _data)._] = treeToDataSourceRows(
66
+ data,
67
+ __privateGet(this, _iconProvider)
68
+ );
69
+ console.table(__privateGet(this, _data));
70
+ if (this.columnDescriptors) {
71
+ const columns = this.columnDescriptors.map((c) => c.name);
72
+ this._configWithVisualLink = {
73
+ ...this._configWithVisualLink,
74
+ columns,
75
+ groupBy: columns.slice(1)
76
+ };
77
+ }
78
+ }
79
+ async subscribe({
80
+ aggregations,
81
+ columns,
82
+ range,
83
+ revealSelected,
84
+ selectedKeyValues,
85
+ viewport = this.viewport ?? uuid()
86
+ }, callback) {
87
+ this.clientCallback = callback;
88
+ if (aggregations) {
89
+ __privateSet(this, _aggregations, aggregations);
90
+ }
91
+ if (columns) {
92
+ this._configWithVisualLink = {
93
+ ...this._configWithVisualLink,
94
+ columns
95
+ };
96
+ }
97
+ if (__privateGet(this, _status) !== "initialising") {
98
+ return;
99
+ }
100
+ this.viewport = viewport;
101
+ __privateSet(this, _status, "subscribed");
102
+ __privateSet(this, _selectedRowsCount, selectedKeyValues?.length ?? 0);
103
+ if (selectedKeyValues) {
104
+ this.applySelectedKeyValues(selectedKeyValues, revealSelected);
105
+ }
106
+ [this.visibleRows, this.visibleRowIndex] = getVisibleRows(
107
+ __privateGet(this, _data),
108
+ this.expandedRows
109
+ );
110
+ this.clientCallback?.({
111
+ aggregations: __privateGet(this, _aggregations),
112
+ type: "subscribed",
113
+ clientViewportId: this.viewport,
114
+ columns: this.columns,
115
+ filterSpec: this.filter,
116
+ groupBy: this._configWithVisualLink.groupBy,
117
+ range: this.range,
118
+ sort: this.sort,
119
+ tableSchema: TREE_SCHEMA
120
+ });
121
+ this.clientCallback({
122
+ clientViewportId: this.viewport,
123
+ mode: "size-only",
124
+ type: "viewport-update",
125
+ size: this.visibleRows.length
126
+ });
127
+ if (range && !this._range.equals(range)) {
128
+ this.range = range;
129
+ } else if (this._range !== NULL_RANGE) {
130
+ this.sendRowsToClient();
131
+ }
132
+ }
133
+ unsubscribe() {
134
+ console.log("noop");
135
+ }
136
+ suspend() {
137
+ console.log("noop");
138
+ return this;
139
+ }
140
+ resume() {
141
+ console.log("noop");
142
+ return this;
143
+ }
144
+ disable() {
145
+ console.log("noop");
146
+ return this;
147
+ }
148
+ enable() {
149
+ console.log("noop");
150
+ return this;
151
+ }
152
+ set data(data) {
153
+ [this.columnDescriptors, __privateWrapper(this, _data)._] = treeToDataSourceRows(data);
154
+ requestAnimationFrame(() => {
155
+ this.sendRowsToClient();
156
+ });
157
+ }
158
+ get filter() {
159
+ return this._configWithVisualLink.filterSpec;
160
+ }
161
+ set filter(filter) {
162
+ this._configWithVisualLink = {
163
+ ...this._configWithVisualLink,
164
+ filterSpec: filter
165
+ };
166
+ if (filter.filter) {
167
+ this.applyFilter(filter);
168
+ } else {
169
+ __privateSet(this, _filterSet, void 0);
170
+ }
171
+ [this.visibleRows, this.visibleRowIndex] = getVisibleRows(
172
+ __privateGet(this, _data),
173
+ this.expandedRows,
174
+ __privateGet(this, _filterSet)
175
+ );
176
+ const { from, to } = this.range;
177
+ this.clientCallback?.({
178
+ clientViewportId: this.viewport,
179
+ mode: "batch",
180
+ rows: this.visibleRows.slice(from, to).map((row) => toClientRow(row, this.keys)),
181
+ size: this.visibleRows.length,
182
+ type: "viewport-update"
183
+ });
184
+ }
185
+ applyFilter({ filter: filterQuery, filterStruct }) {
186
+ const filter = filterStruct ?? parseFilter(filterQuery);
187
+ if (isSingleValueFilter(filter)) {
188
+ const filterSet = [];
189
+ const regex = new RegExp(`${filter.value}`, "i");
190
+ for (const row of __privateGet(this, _data)) {
191
+ const { [KEY]: key, [IDX]: idx } = row;
192
+ if (regex.test(lastPathSegment(key, "|"))) {
193
+ filterSet.push(idx);
194
+ }
195
+ }
196
+ __privateSet(this, _filterSet, filterSet);
197
+ }
198
+ }
199
+ /**
200
+ * used to apply an initial selection. These may not necessarily be
201
+ * visible. If revealOnSelect is in force, expand nodes as necessary
202
+ * to ensure selected nodes are visible
203
+ */
204
+ applySelectedKeyValues(keys, revealSelected = false) {
205
+ keys.forEach((key) => {
206
+ const rowIdx = this.indexOfRowWithKey(key);
207
+ const row = __privateGet(this, _data)[rowIdx];
208
+ row[SELECTED] = 1;
209
+ if (revealSelected && row[DEPTH] !== 1) {
210
+ const keys2 = key.slice(6).split("|").slice(0, -1);
211
+ let path = "$root";
212
+ do {
213
+ path = `${path}|${keys2.shift()}`;
214
+ this.expandedRows.add(path);
215
+ } while (keys2.length);
216
+ }
217
+ });
218
+ }
219
+ select(selectRequest) {
220
+ const updatedRows = [];
221
+ switch (selectRequest.type) {
222
+ case "SELECT_ROW": {
223
+ const { preserveExistingSelection, rowKey } = selectRequest;
224
+ for (const row of this.visibleRows) {
225
+ const { [IDX]: rowIndex, [KEY]: key, [SELECTED]: sel } = row;
226
+ if (sel === 1 && preserveExistingSelection === false && key !== rowKey) {
227
+ const deselectedRow = row.slice();
228
+ deselectedRow[SELECTED] = 0;
229
+ this.visibleRows[rowIndex] = deselectedRow;
230
+ updatedRows.push(deselectedRow);
231
+ } else if (key === rowKey) {
232
+ const selectedRow = row.slice();
233
+ selectedRow[SELECTED] = 1;
234
+ this.visibleRows[rowIndex] = selectedRow;
235
+ updatedRows.push(selectedRow);
236
+ }
237
+ }
238
+ break;
239
+ }
240
+ }
241
+ if (updatedRows.length > 0) {
242
+ this.clientCallback?.({
243
+ clientViewportId: this.viewport,
244
+ mode: "update",
245
+ type: "viewport-update",
246
+ rows: updatedRows
247
+ });
248
+ }
249
+ }
250
+ getRowKey(keyOrIndex) {
251
+ if (typeof keyOrIndex === "string") {
252
+ return keyOrIndex;
253
+ }
254
+ const row = this.getRowAtIndex(keyOrIndex);
255
+ if (row === void 0) {
256
+ throw Error(`row not found at index ${keyOrIndex}`);
257
+ }
258
+ return row[KEY];
259
+ }
260
+ openTreeNode(keyOrIndex) {
261
+ const key = this.getRowKey(keyOrIndex);
262
+ this.expandedRows.add(key);
263
+ [this.visibleRows, this.visibleRowIndex] = getVisibleRows(
264
+ __privateGet(this, _data),
265
+ this.expandedRows
266
+ );
267
+ const { from, to } = this._range;
268
+ this.clientCallback?.({
269
+ clientViewportId: this.viewport,
270
+ mode: "batch",
271
+ rows: this.visibleRows.slice(from, to).map((row) => toClientRow(row, this.keys)),
272
+ size: this.visibleRows.length,
273
+ type: "viewport-update"
274
+ });
275
+ }
276
+ closeTreeNode(keyOrIndex, cascade = false) {
277
+ const key = this.getRowKey(keyOrIndex);
278
+ this.expandedRows.delete(key);
279
+ if (cascade) {
280
+ for (const rowKey of this.expandedRows.keys()) {
281
+ if (rowKey.startsWith(key)) {
282
+ this.expandedRows.delete(rowKey);
283
+ }
284
+ }
285
+ }
286
+ [this.visibleRows, this.visibleRowIndex] = getVisibleRows(
287
+ __privateGet(this, _data),
288
+ this.expandedRows
289
+ );
290
+ this.sendRowsToClient();
291
+ }
292
+ get status() {
293
+ return __privateGet(this, _status);
294
+ }
295
+ get selectedRowsCount() {
296
+ return __privateGet(this, _selectedRowsCount);
297
+ }
298
+ get size() {
299
+ return __privateGet(this, _size);
300
+ }
301
+ rangeRequest(range) {
302
+ this.keys.reset(range);
303
+ requestAnimationFrame(() => {
304
+ this.sendRowsToClient();
305
+ });
306
+ }
307
+ sendRowsToClient() {
308
+ const { from, to } = this._range;
309
+ this.clientCallback?.({
310
+ clientViewportId: this.viewport,
311
+ mode: "batch",
312
+ rows: this.visibleRows.slice(from, to).map((row) => toClientRow(row, this.keys)),
313
+ size: this.visibleRows.length,
314
+ type: "viewport-update"
315
+ });
316
+ }
317
+ createLink({
318
+ parentVpId,
319
+ link: { fromColumn, toColumn }
320
+ }) {
321
+ console.log("create link", {
322
+ parentVpId,
323
+ fromColumn,
324
+ toColumn
325
+ });
326
+ }
327
+ removeLink() {
328
+ console.log("remove link");
329
+ }
330
+ async remoteProcedureCall() {
331
+ return Promise.reject();
332
+ }
333
+ async menuRpcCall(rpcRequest) {
334
+ console.log("rmenuRpcCall", {
335
+ rpcRequest
336
+ });
337
+ return void 0;
338
+ }
339
+ getChildRows(rowKey) {
340
+ const parentRow = __privateGet(this, _data).find((row) => row[KEY] === rowKey);
341
+ if (parentRow) {
342
+ const { [IDX]: parentIdx, [DEPTH]: parentDepth } = parentRow;
343
+ let rowIdx = parentIdx + 1;
344
+ const childRows = [];
345
+ do {
346
+ const { [DEPTH]: depth } = __privateGet(this, _data)[rowIdx];
347
+ if (depth === parentDepth + 1) {
348
+ childRows.push(__privateGet(this, _data)[rowIdx]);
349
+ } else if (depth <= parentDepth) {
350
+ break;
351
+ }
352
+ rowIdx += 1;
353
+ } while (rowIdx < __privateGet(this, _data).length);
354
+ return childRows;
355
+ } else {
356
+ console.warn(
357
+ `JsonDataSource getChildRows row not found for key ${rowKey}`
358
+ );
359
+ }
360
+ return [];
361
+ }
362
+ getRowsAtDepth(depth, visibleOnly = true) {
363
+ const rows = visibleOnly ? this.visibleRows : __privateGet(this, _data);
364
+ return rows.filter((row) => row[DEPTH] === depth);
365
+ }
366
+ getRowAtIndex(rowIdx) {
367
+ return this.visibleRows[rowIdx];
368
+ }
369
+ }
370
+ _aggregations = new WeakMap();
371
+ _data = new WeakMap();
372
+ _iconProvider = new WeakMap();
373
+ _selectedRowsCount = new WeakMap();
374
+ _size = new WeakMap();
375
+ _status = new WeakMap();
376
+ _filterSet = new WeakMap();
377
+ function getVisibleRows(rows, expandedKeys, filterset) {
378
+ const visibleRows = [];
379
+ const visibleRowIndex = {};
380
+ const data = filterset ?? rows;
381
+ for (let i = 0, index = 0; i < data.length; i++) {
382
+ const idx = filterset ? filterset[i] : i;
383
+ const row = rows[idx];
384
+ const {
385
+ [COUNT]: count,
386
+ [DEPTH]: depth,
387
+ [KEY]: key,
388
+ [IS_LEAF]: isLeaf
389
+ } = row;
390
+ if (filterset) {
391
+ const previousRow = visibleRows.at(-1);
392
+ if (missingAncestor(row, previousRow)) {
393
+ let currentRow = row;
394
+ const missingRows = [];
395
+ while (currentRow) {
396
+ currentRow = getParentRow(rows, currentRow);
397
+ if (currentRow) {
398
+ missingRows.unshift(currentRow);
399
+ }
400
+ }
401
+ missingRows.forEach((row2) => {
402
+ visibleRows.push(cloneRow(row2, index++, true));
403
+ });
404
+ }
405
+ visibleRows.push(cloneRow(row, index++, true));
406
+ visibleRowIndex[index] = i;
407
+ } else {
408
+ const isExpanded = expandedKeys.has(key);
409
+ visibleRows.push(cloneRow(row, index, isExpanded));
410
+ visibleRowIndex[index++] = i;
411
+ const skipNonVisibleRows = !isLeaf && !isExpanded && count > 0;
412
+ if (skipNonVisibleRows) {
413
+ do {
414
+ i += 1;
415
+ } while (i < rows.length - 1 && rows[i + 1][DEPTH] > depth);
416
+ }
417
+ }
418
+ }
419
+ return [visibleRows, visibleRowIndex];
420
+ }
421
+ const cloneRow = (row, index, isExpanded) => {
422
+ const dolly = row.slice();
423
+ dolly[0] = index;
424
+ dolly[1] = index;
425
+ if (isExpanded) {
426
+ dolly[IS_EXPANDED] = true;
427
+ }
428
+ return dolly;
429
+ };
430
+
431
+ export { TreeDataSource };
432
+ //# sourceMappingURL=TreeDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeDataSource.js","sources":["../../../../packages/vuu-data-local/src/tree-data-source/TreeDataSource.ts"],"sourcesContent":["import type { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport type {\n LinkDescriptorWithLabel,\n VuuAggregation,\n VuuRange,\n VuuRpcResponse,\n VuuRpcRequest,\n SelectRequest,\n SelectRowRequest,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport type {\n DataSourceRow,\n DataSourceConstructorProps,\n DataSourceStatus,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n MenuRpcResponse,\n DataSourceFilter,\n TableSchema,\n DataSourceBase,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n BaseDataSource,\n getParentRow,\n isSingleValueFilter,\n KeySet,\n lastPathSegment,\n metadataKeys,\n missingAncestor,\n NULL_RANGE,\n TreeSourceNode,\n treeToDataSourceRows,\n uuid,\n} from \"@vuu-ui/vuu-utils\";\nimport { IconProvider } from \"./IconProvider\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport { FilterClause } from \"@vuu-ui/vuu-filter-types\";\n\nconst TREE_SCHEMA: TableSchema = {\n columns: [\n { name: \"nodeData\", serverDataType: \"string\" },\n { name: \"Level 1\", serverDataType: \"string\" },\n { name: \"Level 2\", serverDataType: \"string\" },\n { name: \"Level 3\", serverDataType: \"string\" },\n { name: \"Level 4\", serverDataType: \"string\" },\n { name: \"Level 5\", serverDataType: \"string\" },\n ],\n key: \"\",\n table: { module: \"\", table: \"\" },\n};\n\ntype VisibleRowIndex = Record<number, number>;\n\nexport interface TreeDataSourceConstructorProps\n extends Omit<DataSourceConstructorProps, \"bufferSize\" | \"table\"> {\n data: TreeSourceNode[];\n}\n\nconst { COUNT, DEPTH, IDX, IS_EXPANDED, IS_LEAF, KEY, SELECTED } = metadataKeys;\n\nconst toClientRow = (row: DataSourceRow, keys: KeySet) => {\n const [rowIndex] = row;\n const clientRow = row.slice() as DataSourceRow;\n clientRow[1] = keys.keyFor(rowIndex);\n return clientRow;\n};\n\nexport class TreeDataSource extends BaseDataSource implements DataSourceBase {\n public columnDescriptors: ColumnDescriptor[];\n private clientCallback: DataSourceSubscribeCallback | undefined;\n private expandedRows = new Set<string>();\n private visibleRows: DataSourceRow[] = [];\n private visibleRowIndex: VisibleRowIndex = {};\n\n #aggregations: VuuAggregation[] = [];\n #data: DataSourceRow[];\n #iconProvider: IconProvider;\n #selectedRowsCount = 0;\n #size = 0;\n #status: DataSourceStatus = \"initialising\";\n #filterSet: number[] | undefined;\n\n public rowCount: number | undefined;\n\n private keys = new KeySet(this._range);\n\n constructor({ data, ...props }: TreeDataSourceConstructorProps) {\n super(props);\n\n if (!data) {\n throw Error(\"TreeDataSource constructor called without data\");\n }\n this.#iconProvider = new IconProvider();\n\n [this.columnDescriptors, this.#data] = treeToDataSourceRows(\n data,\n this.#iconProvider,\n );\n\n console.table(this.#data);\n\n if (this.columnDescriptors) {\n const columns = this.columnDescriptors.map((c) => c.name);\n this._configWithVisualLink = {\n ...this._configWithVisualLink,\n columns,\n groupBy: columns.slice(1),\n };\n }\n }\n\n async subscribe(\n {\n aggregations,\n columns,\n range,\n revealSelected,\n selectedKeyValues,\n viewport = this.viewport ?? uuid(),\n }: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n this.clientCallback = callback;\n\n if (aggregations) {\n this.#aggregations = aggregations;\n }\n if (columns) {\n this._configWithVisualLink = {\n ...this._configWithVisualLink,\n columns,\n };\n }\n\n if (this.#status !== \"initialising\") {\n //TODO check if subscription details are still the same\n return;\n }\n\n this.viewport = viewport;\n\n this.#status = \"subscribed\";\n this.#selectedRowsCount = selectedKeyValues?.length ?? 0;\n\n if (selectedKeyValues) {\n this.applySelectedKeyValues(selectedKeyValues, revealSelected);\n }\n\n [this.visibleRows, this.visibleRowIndex] = getVisibleRows(\n this.#data,\n this.expandedRows,\n );\n\n this.clientCallback?.({\n aggregations: this.#aggregations,\n type: \"subscribed\",\n clientViewportId: this.viewport,\n columns: this.columns,\n filterSpec: this.filter,\n groupBy: this._configWithVisualLink.groupBy,\n range: this.range,\n sort: this.sort,\n tableSchema: TREE_SCHEMA,\n });\n\n this.clientCallback({\n clientViewportId: this.viewport,\n mode: \"size-only\",\n type: \"viewport-update\",\n size: this.visibleRows.length,\n });\n\n if (range && !this._range.equals(range)) {\n this.range = range;\n } else if (this._range !== NULL_RANGE) {\n this.sendRowsToClient();\n }\n }\n\n unsubscribe() {\n console.log(\"noop\");\n }\n\n suspend() {\n console.log(\"noop\");\n return this;\n }\n\n resume() {\n console.log(\"noop\");\n return this;\n }\n\n disable() {\n console.log(\"noop\");\n return this;\n }\n\n enable() {\n console.log(\"noop\");\n return this;\n }\n set data(data: TreeSourceNode[]) {\n [this.columnDescriptors, this.#data] = treeToDataSourceRows(data);\n\n requestAnimationFrame(() => {\n this.sendRowsToClient();\n });\n }\n\n get filter() {\n return this._configWithVisualLink.filterSpec;\n }\n\n set filter(filter: DataSourceFilter) {\n // Note not using the setter\n this._configWithVisualLink = {\n ...this._configWithVisualLink,\n filterSpec: filter,\n };\n\n if (filter.filter) {\n this.applyFilter(filter);\n } else {\n this.#filterSet = undefined;\n }\n\n [this.visibleRows, this.visibleRowIndex] = getVisibleRows(\n this.#data,\n this.expandedRows,\n this.#filterSet,\n );\n\n const { from, to } = this.range;\n this.clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n rows: this.visibleRows\n .slice(from, to)\n .map((row) => toClientRow(row, this.keys)),\n size: this.visibleRows.length,\n type: \"viewport-update\",\n });\n }\n\n private applyFilter({ filter: filterQuery, filterStruct }: DataSourceFilter) {\n const filter = filterStruct ?? (parseFilter(filterQuery) as FilterClause);\n if (isSingleValueFilter(filter)) {\n const filterSet = [];\n const regex = new RegExp(`${filter.value}`, \"i\");\n for (const row of this.#data) {\n const { [KEY]: key, [IDX]: idx } = row;\n if (regex.test(lastPathSegment(key, \"|\"))) {\n filterSet.push(idx);\n }\n }\n this.#filterSet = filterSet;\n }\n }\n\n /**\n * used to apply an initial selection. These may not necessarily be\n * visible. If revealOnSelect is in force, expand nodes as necessary\n * to ensure selected nodes are visible\n */\n private applySelectedKeyValues(keys: string[], revealSelected = false) {\n keys.forEach((key) => {\n const rowIdx = this.indexOfRowWithKey(key);\n const row = this.#data[rowIdx];\n row[SELECTED] = 1;\n\n if (revealSelected && row[DEPTH] !== 1) {\n const keys = key.slice(6).split(\"|\").slice(0, -1);\n\n let path = \"$root\";\n do {\n path = `${path}|${keys.shift()}`;\n this.expandedRows.add(path);\n } while (keys.length);\n }\n });\n }\n\n private indexOfRowWithKey = (key: string) =>\n this.#data.findIndex((row) => row[KEY] === key);\n\n select(selectRequest: Omit<SelectRequest, \"vpId\">) {\n // todo get a diff\n const updatedRows: DataSourceRow[] = [];\n\n switch (selectRequest.type) {\n case \"SELECT_ROW\": {\n const { preserveExistingSelection, rowKey } = selectRequest as Omit<\n SelectRowRequest,\n \"vpId\"\n >;\n for (const row of this.visibleRows) {\n const { [IDX]: rowIndex, [KEY]: key, [SELECTED]: sel } = row;\n if (\n sel === 1 &&\n preserveExistingSelection === false &&\n key !== rowKey\n ) {\n const deselectedRow = row.slice() as DataSourceRow;\n deselectedRow[SELECTED] = 0;\n this.visibleRows[rowIndex] = deselectedRow;\n updatedRows.push(deselectedRow);\n } else if (key === rowKey) {\n const selectedRow = row.slice() as DataSourceRow;\n selectedRow[SELECTED] = 1;\n this.visibleRows[rowIndex] = selectedRow;\n updatedRows.push(selectedRow);\n }\n }\n\n break;\n }\n case \"DESELECT_ROW\": {\n break;\n }\n\n default:\n // ignore\n }\n\n if (updatedRows.length > 0) {\n this.clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"update\",\n type: \"viewport-update\",\n rows: updatedRows,\n });\n }\n }\n\n private getRowKey(keyOrIndex: string | number) {\n if (typeof keyOrIndex === \"string\") {\n return keyOrIndex;\n }\n const row = this.getRowAtIndex(keyOrIndex);\n if (row === undefined) {\n throw Error(`row not found at index ${keyOrIndex}`);\n }\n return row[KEY];\n }\n\n openTreeNode(keyOrIndex: string | number) {\n const key = this.getRowKey(keyOrIndex);\n this.expandedRows.add(key);\n [this.visibleRows, this.visibleRowIndex] = getVisibleRows(\n this.#data,\n this.expandedRows,\n );\n\n const { from, to } = this._range;\n this.clientCallback?.({\n clientViewportId: this.viewport,\n\n mode: \"batch\",\n rows: this.visibleRows\n .slice(from, to)\n .map((row) => toClientRow(row, this.keys)),\n size: this.visibleRows.length,\n type: \"viewport-update\",\n });\n }\n\n closeTreeNode(keyOrIndex: string | number, cascade = false) {\n const key = this.getRowKey(keyOrIndex);\n this.expandedRows.delete(key);\n if (cascade) {\n for (const rowKey of this.expandedRows.keys()) {\n if (rowKey.startsWith(key)) {\n this.expandedRows.delete(rowKey);\n }\n }\n }\n [this.visibleRows, this.visibleRowIndex] = getVisibleRows(\n this.#data,\n this.expandedRows,\n );\n this.sendRowsToClient();\n }\n\n get status() {\n return this.#status;\n }\n\n get selectedRowsCount() {\n return this.#selectedRowsCount;\n }\n\n get size() {\n return this.#size;\n }\n\n rangeRequest(range: VuuRange) {\n this.keys.reset(range);\n requestAnimationFrame(() => {\n this.sendRowsToClient();\n });\n }\n\n private sendRowsToClient() {\n const { from, to } = this._range;\n this.clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n rows: this.visibleRows\n .slice(from, to)\n .map((row) => toClientRow(row, this.keys)),\n size: this.visibleRows.length,\n type: \"viewport-update\",\n });\n }\n\n createLink({\n parentVpId,\n link: { fromColumn, toColumn },\n }: LinkDescriptorWithLabel) {\n console.log(\"create link\", {\n parentVpId,\n fromColumn,\n toColumn,\n });\n }\n\n removeLink() {\n console.log(\"remove link\");\n }\n\n async remoteProcedureCall<T extends VuuRpcResponse = VuuRpcResponse>() {\n return Promise.reject<T>();\n }\n\n async menuRpcCall(\n rpcRequest: Omit<VuuRpcRequest, \"vpId\">,\n ): Promise<MenuRpcResponse | undefined> {\n console.log(\"rmenuRpcCall\", {\n rpcRequest,\n });\n return undefined;\n }\n\n getChildRows(rowKey: string) {\n const parentRow = this.#data.find((row) => row[KEY] === rowKey);\n if (parentRow) {\n const { [IDX]: parentIdx, [DEPTH]: parentDepth } = parentRow;\n let rowIdx = parentIdx + 1;\n const childRows = [];\n do {\n const { [DEPTH]: depth } = this.#data[rowIdx];\n if (depth === parentDepth + 1) {\n childRows.push(this.#data[rowIdx]);\n } else if (depth <= parentDepth) {\n break;\n }\n rowIdx += 1;\n } while (rowIdx < this.#data.length);\n return childRows;\n } else {\n console.warn(\n `JsonDataSource getChildRows row not found for key ${rowKey}`,\n );\n }\n\n return [];\n }\n\n getRowsAtDepth(depth: number, visibleOnly = true) {\n const rows = visibleOnly ? this.visibleRows : this.#data;\n return rows.filter((row) => row[DEPTH] === depth);\n }\n\n getRowAtIndex(rowIdx: number) {\n return this.visibleRows[rowIdx];\n }\n}\n\nfunction getVisibleRows(\n rows: DataSourceRow[],\n expandedKeys: Set<string>,\n filterset?: number[],\n): [visibleRows: DataSourceRow[], index: VisibleRowIndex] {\n const visibleRows: DataSourceRow[] = [];\n const visibleRowIndex: VisibleRowIndex = {};\n\n const data = filterset ?? rows;\n\n for (let i = 0, index = 0; i < data.length; i++) {\n const idx = filterset ? filterset[i] : i;\n const row = rows[idx];\n const {\n [COUNT]: count,\n [DEPTH]: depth,\n [KEY]: key,\n [IS_LEAF]: isLeaf,\n } = row;\n if (filterset) {\n // assume expanded for now\n\n // if we have skipped a higher level group (that didn't directly match\n // our filter criteria, add it.\n const previousRow = visibleRows.at(-1);\n if (missingAncestor(row, previousRow)) {\n let currentRow: DataSourceRow | undefined = row;\n const missingRows = [];\n while (currentRow) {\n currentRow = getParentRow(rows, currentRow);\n if (currentRow) {\n // we will get the missing rows in reverse order\n missingRows.unshift(currentRow);\n }\n }\n missingRows.forEach((row) => {\n visibleRows.push(cloneRow(row, index++, true));\n });\n }\n\n visibleRows.push(cloneRow(row, index++, true));\n visibleRowIndex[index] = i;\n } else {\n const isExpanded = expandedKeys.has(key);\n visibleRows.push(cloneRow(row, index, isExpanded));\n visibleRowIndex[index++] = i;\n const skipNonVisibleRows = !isLeaf && !isExpanded && count > 0;\n if (skipNonVisibleRows) {\n do {\n i += 1;\n } while (i < rows.length - 1 && rows[i + 1][DEPTH] > depth);\n }\n }\n }\n return [visibleRows, visibleRowIndex];\n}\n\nconst cloneRow = (\n row: DataSourceRow,\n index: number,\n isExpanded: boolean,\n): DataSourceRow => {\n const dolly = row.slice() as DataSourceRow;\n dolly[0] = index;\n dolly[1] = index;\n if (isExpanded) {\n dolly[IS_EXPANDED] = true;\n }\n return dolly;\n};\n"],"names":["keys","row"],"mappings":"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"}
package/package.json CHANGED
@@ -1,31 +1,34 @@
1
1
  {
2
- "version": "2.1.19-beta.2",
2
+ "version": "2.1.19-beta.4",
3
3
  "author": "heswell",
4
- "type": "module",
5
4
  "license": "Apache-2.0",
6
5
  "devDependencies": {
7
- "@vuu-ui/vuu-data-types": "2.1.19-beta.2",
8
- "@vuu-ui/vuu-table-types": "2.1.19-beta.2",
9
- "@vuu-ui/vuu-filter-types": "2.1.19-beta.2",
10
- "@vuu-ui/vuu-protocol-types": "2.1.19-beta.2"
6
+ "@vuu-ui/vuu-data-types": "2.1.19-beta.4",
7
+ "@vuu-ui/vuu-table-types": "2.1.19-beta.4",
8
+ "@vuu-ui/vuu-filter-types": "2.1.19-beta.4",
9
+ "@vuu-ui/vuu-protocol-types": "2.1.19-beta.4"
11
10
  },
12
11
  "dependencies": {
13
- "@vuu-ui/vuu-filter-parser": "2.1.19-beta.2",
14
- "@vuu-ui/vuu-utils": "2.1.19-beta.2"
12
+ "@vuu-ui/vuu-filter-parser": "2.1.19-beta.4",
13
+ "@vuu-ui/vuu-utils": "2.1.19-beta.4"
15
14
  },
16
15
  "sideEffects": false,
17
16
  "files": [
18
17
  "README.md",
19
- "src",
18
+ "esm",
19
+ "cjs",
20
20
  "/types"
21
21
  ],
22
22
  "exports": {
23
23
  ".": {
24
- "import": "./src/index.js",
24
+ "require": "./cjs/index.js",
25
+ "import": "./esm/index.js",
25
26
  "types": "./types/index.d.ts"
26
27
  }
27
28
  },
28
- "module": "index.js",
29
+ "main": "cjs/index.js",
30
+ "module": "esm/index.js",
29
31
  "name": "@vuu-ui/vuu-data-local",
32
+ "type": "module",
30
33
  "types": "types/index.d.ts"
31
34
  }
@@ -1,8 +1,8 @@
1
- import type { DataSourceRow } from "@vuu-ui/vuu-data-types";
1
+ import type { DataSourceRowWithBigint } from "@vuu-ui/vuu-data-types";
2
2
  import type { VuuAggregation, VuuGroupBy } from "@vuu-ui/vuu-protocol-types";
3
3
  import type { ColumnMap } from "@vuu-ui/vuu-utils";
4
4
  import type { GroupMap } from "./group-utils";
5
5
  export declare const count: (arr: unknown[]) => number;
6
- export declare const aggregateData: (aggregations: VuuAggregation[], targetData: readonly DataSourceRow[], groupBy: VuuGroupBy, leafData: readonly DataSourceRow[], columnMap: ColumnMap, groupMap: GroupMap) => {
6
+ export declare const aggregateData: (aggregations: VuuAggregation[], targetData: readonly DataSourceRowWithBigint[], groupBy: VuuGroupBy, leafData: readonly DataSourceRowWithBigint[], columnMap: ColumnMap, groupMap: GroupMap) => {
7
7
  [key: string]: number;
8
8
  };
@@ -1,16 +1,16 @@
1
- import { DataSource, DataSourceConstructorProps, DataSourceEvents, DataSourceFilter, DataSourceRow, DataSourceStatus, DataSourceSubscribeCallback, DataSourceSubscribeProps, TableSchema, WithBaseFilter, WithFullConfig, DataSourceDeleteHandler } from "@vuu-ui/vuu-data-types";
1
+ import type { DataSourceConstructorProps, DataSourceEvents, DataSourceFilter, DataSourceRow, DataSourceRowWithBigint, DataSourceStatus, DataSourceSubscribeCallback, DataSourceSubscribeProps, TableSchema, WithBaseFilter, WithFullConfig, DataSourceBase } from "@vuu-ui/vuu-data-types";
2
2
  import type { LinkDescriptorWithLabel, SelectRequest, VuuAggregation, VuuGroupBy, VuuMenu, VuuRowDataItemType, VuuRpcRequest, VuuRpcResponse, VuuSort } from "@vuu-ui/vuu-protocol-types";
3
3
  import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
4
4
  import { ColumnMap, EventEmitter, Range } from "@vuu-ui/vuu-utils";
5
5
  import { Filter } from "@vuu-ui/vuu-filter-types";
6
6
  export interface ArrayDataSourceConstructorProps extends Omit<DataSourceConstructorProps, "bufferSize" | "table"> {
7
7
  columnDescriptors: readonly ColumnDescriptor[];
8
- data: Array<VuuRowDataItemType[]>;
8
+ data: Array<Array<bigint | VuuRowDataItemType>>;
9
9
  dataMap?: ColumnMap;
10
10
  keyColumn?: string;
11
11
  rangeChangeRowset?: "delta" | "full";
12
12
  }
13
- export declare class ArrayDataSource extends EventEmitter<DataSourceEvents> implements DataSource {
13
+ export declare class ArrayDataSource extends EventEmitter<DataSourceEvents> implements DataSourceBase<DataSourceRowWithBigint> {
14
14
  #private;
15
15
  protected clientCallback: DataSourceSubscribeCallback | undefined;
16
16
  protected columnDescriptors: readonly ColumnDescriptor[];
@@ -35,7 +35,7 @@ export declare class ArrayDataSource extends EventEmitter<DataSourceEvents> impl
35
35
  protected index: Map<string, number>;
36
36
  tableSchema: TableSchema;
37
37
  viewport: string;
38
- protected processedData: DataSourceRow[] | undefined;
38
+ protected processedData: DataSourceRowWithBigint[] | undefined;
39
39
  constructor({ aggregations, baseFilterSpec, columnDescriptors, data, dataMap, filterSpec, groupBy, keyColumn, rangeChangeRowset, sort, title, viewport, }: ArrayDataSourceConstructorProps);
40
40
  subscribe({ viewport, columns, aggregations, baseFilterSpec, range, sort, groupBy, filterSpec, }: DataSourceSubscribeProps, callback: DataSourceSubscribeCallback): Promise<void>;
41
41
  unsubscribe(): void;
@@ -52,8 +52,8 @@ export declare class ArrayDataSource extends EventEmitter<DataSourceEvents> impl
52
52
  set links(links: LinkDescriptorWithLabel[] | undefined);
53
53
  get menu(): VuuMenu | undefined;
54
54
  get status(): DataSourceStatus;
55
- get data(): DataSourceRow[];
56
- get currentData(): DataSourceRow[];
55
+ get data(): DataSourceRow<bigint | VuuRowDataItemType>[];
56
+ get currentData(): DataSourceRowWithBigint[];
57
57
  get table(): import("@vuu-ui/vuu-data-types").TableSchemaTable;
58
58
  get columns(): string[];
59
59
  set columns(columns: string[]);
@@ -69,19 +69,19 @@ export declare class ArrayDataSource extends EventEmitter<DataSourceEvents> impl
69
69
  get range(): Range;
70
70
  set range(range: Range);
71
71
  protected delete(row: VuuRowDataItemType[]): void;
72
- protected insert: (row: VuuRowDataItemType[]) => void;
72
+ protected insert: (row: Array<bigint | VuuRowDataItemType>) => void;
73
73
  private insertIntoSortedData;
74
74
  private validateDataValue;
75
75
  protected updateDataItem: (keyValue: string, columnName: string, value: VuuRowDataItemType) => void;
76
- getRowByKey(key: string): DataSourceRow | undefined;
77
- getRowAtIndex(rowIndex: number): DataSourceRow;
76
+ getRowByKey(key: string): DataSourceRowWithBigint | undefined;
77
+ getRowAtIndex(rowIndex: number): DataSourceRowWithBigint;
78
78
  indexOfRowWithKey: (key: string) => number;
79
79
  protected update: (row: VuuRowDataItemType[], columnName: string) => void;
80
- protected updateRow: (row: VuuRowDataItemType[], _columnName?: string) => void;
81
- deleteRow: DataSourceDeleteHandler;
80
+ protected updateRow: (row: Array<bigint | VuuRowDataItemType>, _columnName?: string) => void;
81
+ protected handleDeleteFromTable: (key: string) => Promise<true | string>;
82
82
  private setRange;
83
83
  sendSizeUpdateToClient(): void;
84
- sendRowsToClient(forceFullRefresh?: boolean, row?: DataSourceRow): void;
84
+ sendRowsToClient(forceFullRefresh?: boolean, row?: DataSourceRowWithBigint): void;
85
85
  get aggregations(): VuuAggregation[];
86
86
  set aggregations(aggregations: VuuAggregation[]);
87
87
  get sort(): VuuSort;
@@ -1,4 +1,4 @@
1
- import type { DataSourceRow } from "@vuu-ui/vuu-data-types";
1
+ import type { DataSourceRow, DataSourceRowWithBigint } from "@vuu-ui/vuu-data-types";
2
2
  import { ColumnMap, KeySet } from "@vuu-ui/vuu-utils";
3
- export declare const toClientRow: (row: DataSourceRow, keys: KeySet, selectedRows: Set<string>, dataIndices?: number[]) => DataSourceRow;
3
+ export declare const toClientRow: (row: DataSourceRowWithBigint, keys: KeySet, selectedRows: Set<string>, dataIndices?: number[]) => DataSourceRow;
4
4
  export declare const buildDataToClientMap: (columnMap: ColumnMap, dataMap?: ColumnMap) => number[] | undefined;
@@ -1,10 +1,10 @@
1
1
  import type { DataSourceRow } from "@vuu-ui/vuu-data-types";
2
- import type { VuuGroupBy } from "@vuu-ui/vuu-protocol-types";
2
+ import type { VuuGroupBy, VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
3
3
  import { ColumnMap } from "@vuu-ui/vuu-utils";
4
4
  export type KeyList = number[];
5
5
  export type GroupMap = {
6
6
  [key: string]: GroupMap | KeyList;
7
7
  };
8
- export declare const collapseGroup: (key: string, groupedRows: readonly DataSourceRow[]) => DataSourceRow[];
9
- export declare const expandGroup: (keys: string[], sourceRows: readonly DataSourceRow[], groupBy: VuuGroupBy, columnMap: ColumnMap, groupMap: GroupMap, processedData: readonly DataSourceRow[]) => DataSourceRow[];
10
- export declare const groupRows: (rows: readonly DataSourceRow[], groupBy: VuuGroupBy, columnMap: ColumnMap) => [DataSourceRow[], GroupMap];
8
+ export declare const collapseGroup: (key: string, groupedRows: readonly DataSourceRow<bigint | VuuRowDataItemType>[]) => DataSourceRow<bigint | VuuRowDataItemType>[];
9
+ export declare const expandGroup: (keys: string[], sourceRows: readonly DataSourceRow<bigint | VuuRowDataItemType>[], groupBy: VuuGroupBy, columnMap: ColumnMap, groupMap: GroupMap, processedData: readonly DataSourceRow[]) => DataSourceRow[];
10
+ export declare const groupRows: (rows: ReadonlyArray<Array<bigint | VuuRowDataItemType>>, groupBy: VuuGroupBy, columnMap: ColumnMap) => [DataSourceRow[], GroupMap];
@@ -1,10 +1,10 @@
1
- import type { DataSourceRow } from "@vuu-ui/vuu-data-types";
1
+ import type { DataSourceRowWithBigint } from "@vuu-ui/vuu-data-types";
2
2
  import type { VuuSort, VuuSortType } from "@vuu-ui/vuu-protocol-types";
3
3
  import { ColumnMap } from "@vuu-ui/vuu-utils";
4
4
  export type ColIndexSortDef = [number, VuuSortType];
5
5
  type SortCompareResult = 0 | 1 | -1;
6
- export type RowSortComparator = (item1: DataSourceRow, item2: DataSourceRow) => SortCompareResult;
6
+ export type RowSortComparator = (item1: DataSourceRowWithBigint, item2: DataSourceRowWithBigint) => SortCompareResult;
7
7
  export declare const sortComparator: (sortDefs: ColIndexSortDef[]) => RowSortComparator;
8
- export declare const sortRows: (rows: readonly DataSourceRow[], { sortDefs }: VuuSort, columnMap: ColumnMap) => DataSourceRow[];
9
- export declare function binarySearch(items: DataSourceRow[], item: DataSourceRow, comparator: RowSortComparator): number;
8
+ export declare const sortRows: (rows: readonly DataSourceRowWithBigint[], { sortDefs }: VuuSort, columnMap: ColumnMap) => DataSourceRowWithBigint[];
9
+ export declare function binarySearch(items: DataSourceRowWithBigint[], item: DataSourceRowWithBigint, comparator: RowSortComparator): number;
10
10
  export {};