@vuu-ui/vuu-utils 0.6.13-debug → 0.6.14-debug
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/cjs/index.js +359 -124
- package/cjs/index.js.map +4 -4
- package/esm/index.js +360 -124
- package/esm/index.js.map +4 -4
- package/package.json +5 -5
- package/types/column-utils.d.ts +9 -3
- package/types/component-registry.d.ts +1 -1
- package/types/cookie-utils.d.ts +1 -0
- package/types/debug-utils.d.ts +9 -0
- package/types/event-emitter.d.ts +12 -18
- package/types/index.d.ts +5 -1
- package/types/json-utils.d.ts +6 -0
- package/types/keyset.d.ts +11 -0
- package/types/logging-utils.d.ts +28 -24
- package/types/perf-utils.d.ts +5 -0
- package/types/logging-level.d.ts +0 -1
- package/types/row-utils.d.ts +0 -10
package/esm/index.js
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateGet = (obj, member, getter) => {
|
|
6
|
+
__accessCheck(obj, member, "read from private field");
|
|
7
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
+
};
|
|
9
|
+
var __privateAdd = (obj, member, value) => {
|
|
10
|
+
if (member.has(obj))
|
|
11
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
+
};
|
|
14
|
+
|
|
1
15
|
// src/array-utils.ts
|
|
2
16
|
function partition(array, test, pass = [], fail = []) {
|
|
3
17
|
for (let i = 0, len = array.length; i < len; i++) {
|
|
@@ -187,7 +201,7 @@ var flattenColumnGroup = (columns) => {
|
|
|
187
201
|
return columns;
|
|
188
202
|
}
|
|
189
203
|
};
|
|
190
|
-
function extractGroupColumn(columns, groupBy) {
|
|
204
|
+
function extractGroupColumn(columns, groupBy, confirmed = true) {
|
|
191
205
|
if (groupBy && groupBy.length > 0) {
|
|
192
206
|
const flattenedColumns = flattenColumnGroup(columns);
|
|
193
207
|
const [groupedColumns, rest] = flattenedColumns.reduce(
|
|
@@ -228,6 +242,7 @@ function extractGroupColumn(columns, groupBy) {
|
|
|
228
242
|
heading: ["group-col"],
|
|
229
243
|
isGroup: true,
|
|
230
244
|
columns: groupCols,
|
|
245
|
+
groupConfirmed: confirmed,
|
|
231
246
|
width: groupCols.map((c) => c.width).reduce((a, b) => a + b) + 100
|
|
232
247
|
};
|
|
233
248
|
return [groupCol, rest];
|
|
@@ -235,6 +250,15 @@ function extractGroupColumn(columns, groupBy) {
|
|
|
235
250
|
return [null, flattenColumnGroup(columns)];
|
|
236
251
|
}
|
|
237
252
|
var isGroupColumn = (column) => column.isGroup === true;
|
|
253
|
+
var isJsonAttribute = (value) => typeof value === "string" && value.endsWith("+");
|
|
254
|
+
var isJsonGroup = (column, row) => {
|
|
255
|
+
var _a;
|
|
256
|
+
return ((_a = column.type) == null ? void 0 : _a.name) === "json" && isJsonAttribute(row[column.key]);
|
|
257
|
+
};
|
|
258
|
+
var isJsonColumn = (column) => {
|
|
259
|
+
var _a;
|
|
260
|
+
return ((_a = column.type) == null ? void 0 : _a.name) === "json";
|
|
261
|
+
};
|
|
238
262
|
var sortPinnedColumns = (columns) => {
|
|
239
263
|
const leftPinnedColumns = [];
|
|
240
264
|
const rightPinnedColumns = [];
|
|
@@ -345,12 +369,13 @@ var collectFiltersForColumn = (filter, columnName) => {
|
|
|
345
369
|
filters: results
|
|
346
370
|
};
|
|
347
371
|
};
|
|
348
|
-
var applyGroupByToColumns = (columns, groupBy) => {
|
|
372
|
+
var applyGroupByToColumns = (columns, groupBy, confirmed = true) => {
|
|
349
373
|
var _a;
|
|
350
374
|
if (groupBy.length) {
|
|
351
375
|
const [groupColumn, nonGroupedColumns] = extractGroupColumn(
|
|
352
376
|
columns,
|
|
353
|
-
groupBy
|
|
377
|
+
groupBy,
|
|
378
|
+
confirmed
|
|
354
379
|
);
|
|
355
380
|
if (groupColumn) {
|
|
356
381
|
return [groupColumn].concat(nonGroupedColumns);
|
|
@@ -406,6 +431,19 @@ var getColumnName = (name) => {
|
|
|
406
431
|
return name.slice(0, pos);
|
|
407
432
|
}
|
|
408
433
|
};
|
|
434
|
+
var findColumn = (columns, columnName) => {
|
|
435
|
+
const column = columns.find((col) => col.name === columnName);
|
|
436
|
+
if (column) {
|
|
437
|
+
return column;
|
|
438
|
+
} else {
|
|
439
|
+
const groupColumn = columns.find(
|
|
440
|
+
(col) => col.isGroup
|
|
441
|
+
);
|
|
442
|
+
if (groupColumn) {
|
|
443
|
+
return findColumn(groupColumn.columns, columnName);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
};
|
|
409
447
|
var toDataSourceColumns = (column) => column.expression ? `${column.name}:${column.serverDataType}:${column.expression}` : column.name;
|
|
410
448
|
var getRowRecord = (row, columnMap) => {
|
|
411
449
|
return Object.entries(columnMap).reduce(
|
|
@@ -416,6 +454,33 @@ var getRowRecord = (row, columnMap) => {
|
|
|
416
454
|
{}
|
|
417
455
|
);
|
|
418
456
|
};
|
|
457
|
+
var isDataLoading = (columns) => {
|
|
458
|
+
return isGroupColumn(columns[0]) && columns[0].groupConfirmed === false;
|
|
459
|
+
};
|
|
460
|
+
var getColumnsInViewport = (columns, vpStart, vpEnd) => {
|
|
461
|
+
var _a;
|
|
462
|
+
const visibleColumns = [];
|
|
463
|
+
let preSpan = 0;
|
|
464
|
+
for (let offset = 0, i = 0; i < columns.length; i++) {
|
|
465
|
+
const column = columns[i];
|
|
466
|
+
if (column.hidden) {
|
|
467
|
+
continue;
|
|
468
|
+
} else if (offset + column.width < vpStart) {
|
|
469
|
+
if (offset + column.width + ((_a = columns[i + 1]) == null ? void 0 : _a.width) > vpStart) {
|
|
470
|
+
visibleColumns.push(column);
|
|
471
|
+
} else {
|
|
472
|
+
preSpan += 1;
|
|
473
|
+
}
|
|
474
|
+
} else if (offset > vpEnd) {
|
|
475
|
+
visibleColumns.push(column);
|
|
476
|
+
break;
|
|
477
|
+
} else {
|
|
478
|
+
visibleColumns.push(column);
|
|
479
|
+
}
|
|
480
|
+
offset += column.width;
|
|
481
|
+
}
|
|
482
|
+
return [visibleColumns, preSpan];
|
|
483
|
+
};
|
|
419
484
|
|
|
420
485
|
// src/component-registry.ts
|
|
421
486
|
var cellRenderersMap = /* @__PURE__ */ new Map();
|
|
@@ -433,7 +498,6 @@ var isTypeCompatible = (rendererType, serverDataType) => {
|
|
|
433
498
|
var isCellRenderer = (type, component) => type === "cell-renderer";
|
|
434
499
|
var isCellConfigPanel = (type, component) => type === "cell-config-panel";
|
|
435
500
|
function registerComponent(componentName, component, type = "cell-renderer", options) {
|
|
436
|
-
console.log("registre component");
|
|
437
501
|
if (isCellRenderer(type, component)) {
|
|
438
502
|
cellRenderersMap.set(componentName, component);
|
|
439
503
|
} else if (isCellConfigPanel(type, component)) {
|
|
@@ -469,7 +533,11 @@ function getCellConfigPanelRenderer(name) {
|
|
|
469
533
|
// src/range-utils.ts
|
|
470
534
|
function getFullRange({ from, to }, bufferSize = 0, rowCount = Number.MAX_SAFE_INTEGER) {
|
|
471
535
|
if (bufferSize === 0) {
|
|
472
|
-
|
|
536
|
+
if (rowCount < from) {
|
|
537
|
+
return { from: 0, to: 0 };
|
|
538
|
+
} else {
|
|
539
|
+
return { from, to: Math.min(to, rowCount) };
|
|
540
|
+
}
|
|
473
541
|
} else if (from === 0) {
|
|
474
542
|
return { from, to: Math.min(to + bufferSize, rowCount) };
|
|
475
543
|
} else {
|
|
@@ -628,6 +696,76 @@ var formatDate = (date, format) => {
|
|
|
628
696
|
return date.toUTCString();
|
|
629
697
|
};
|
|
630
698
|
|
|
699
|
+
// src/cookie-utils.ts
|
|
700
|
+
var getCookieValue = (name) => {
|
|
701
|
+
var _a, _b;
|
|
702
|
+
if (((_a = globalThis.document) == null ? void 0 : _a.cookie) !== void 0) {
|
|
703
|
+
return (_b = globalThis.document.cookie.split("; ").find((row) => row.startsWith(`${name}=`))) == null ? void 0 : _b.split("=")[1];
|
|
704
|
+
}
|
|
705
|
+
};
|
|
706
|
+
|
|
707
|
+
// src/logging-utils.ts
|
|
708
|
+
var NO_OP = () => void 0;
|
|
709
|
+
var DEFAULT_DEBUG_LEVEL = false ? "error" : "info";
|
|
710
|
+
var { loggingLevel = DEFAULT_DEBUG_LEVEL } = typeof loggingSettings !== "undefined" ? loggingSettings : {};
|
|
711
|
+
var logger = (category) => {
|
|
712
|
+
const debugEnabled2 = loggingLevel === "debug";
|
|
713
|
+
const infoEnabled = debugEnabled2 || loggingLevel === "info";
|
|
714
|
+
const warnEnabled = infoEnabled || loggingLevel === "warn";
|
|
715
|
+
const errorEnabled = warnEnabled || loggingLevel === "error";
|
|
716
|
+
const info = infoEnabled ? (message) => console.info(`[${category}] ${message}`) : NO_OP;
|
|
717
|
+
const warn = warnEnabled ? (message) => console.warn(`[${category}] ${message}`) : NO_OP;
|
|
718
|
+
const debug2 = debugEnabled2 ? (message) => console.debug(`[${category}] ${message}`) : NO_OP;
|
|
719
|
+
const error = errorEnabled ? (message) => console.error(`[${category}] ${message}`) : NO_OP;
|
|
720
|
+
if (false) {
|
|
721
|
+
return {
|
|
722
|
+
errorEnabled,
|
|
723
|
+
error
|
|
724
|
+
};
|
|
725
|
+
} else {
|
|
726
|
+
return {
|
|
727
|
+
debugEnabled: debugEnabled2,
|
|
728
|
+
infoEnabled,
|
|
729
|
+
warnEnabled,
|
|
730
|
+
errorEnabled,
|
|
731
|
+
info,
|
|
732
|
+
warn,
|
|
733
|
+
debug: debug2,
|
|
734
|
+
error
|
|
735
|
+
};
|
|
736
|
+
}
|
|
737
|
+
};
|
|
738
|
+
var getLoggingConfig = () => {
|
|
739
|
+
const loggingLevel2 = getCookieValue("vuu-logging-level");
|
|
740
|
+
return `const loggingSettings = { loggingLevel: "${loggingLevel2}"};`;
|
|
741
|
+
};
|
|
742
|
+
|
|
743
|
+
// src/debug-utils.ts
|
|
744
|
+
var { debug, debugEnabled } = logger("range-monitor");
|
|
745
|
+
var RangeMonitor = class {
|
|
746
|
+
constructor(source) {
|
|
747
|
+
this.source = source;
|
|
748
|
+
this.range = { from: 0, to: 0 };
|
|
749
|
+
this.timestamp = 0;
|
|
750
|
+
}
|
|
751
|
+
isSet() {
|
|
752
|
+
return this.timestamp !== 0;
|
|
753
|
+
}
|
|
754
|
+
set({ from, to }) {
|
|
755
|
+
const { timestamp } = this;
|
|
756
|
+
this.range.from = from;
|
|
757
|
+
this.range.to = to;
|
|
758
|
+
this.timestamp = performance.now();
|
|
759
|
+
if (timestamp) {
|
|
760
|
+
debugEnabled && debug(
|
|
761
|
+
`<${this.source}> [${from}-${to}], ${(this.timestamp - timestamp).toFixed(0)} ms elapsed`
|
|
762
|
+
);
|
|
763
|
+
} else {
|
|
764
|
+
return 0;
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
};
|
|
768
|
+
|
|
631
769
|
// src/html-utils.ts
|
|
632
770
|
var createEl = (elementType, className, textContent) => {
|
|
633
771
|
const el = document.createElement(elementType);
|
|
@@ -647,31 +785,29 @@ function isArrayOfListeners(listeners) {
|
|
|
647
785
|
function isOnlyListener(listeners) {
|
|
648
786
|
return !Array.isArray(listeners);
|
|
649
787
|
}
|
|
788
|
+
var _events;
|
|
650
789
|
var EventEmitter = class {
|
|
651
790
|
constructor() {
|
|
652
|
-
this
|
|
791
|
+
__privateAdd(this, _events, /* @__PURE__ */ new Map());
|
|
653
792
|
}
|
|
654
|
-
addListener(
|
|
655
|
-
|
|
656
|
-
this._events = {};
|
|
657
|
-
}
|
|
658
|
-
const listeners = this._events[type];
|
|
793
|
+
addListener(event, listener) {
|
|
794
|
+
const listeners = __privateGet(this, _events).get(event);
|
|
659
795
|
if (!listeners) {
|
|
660
|
-
this.
|
|
796
|
+
__privateGet(this, _events).set(event, listener);
|
|
661
797
|
} else if (isArrayOfListeners(listeners)) {
|
|
662
798
|
listeners.push(listener);
|
|
663
799
|
} else if (isOnlyListener(listeners)) {
|
|
664
|
-
this.
|
|
800
|
+
__privateGet(this, _events).set(event, [listeners, listener]);
|
|
665
801
|
}
|
|
666
802
|
}
|
|
667
|
-
removeListener(
|
|
668
|
-
if (!this
|
|
803
|
+
removeListener(event, listener) {
|
|
804
|
+
if (!__privateGet(this, _events).has(event)) {
|
|
669
805
|
return;
|
|
670
806
|
}
|
|
671
|
-
const listenerOrListeners = this.
|
|
807
|
+
const listenerOrListeners = __privateGet(this, _events).get(event);
|
|
672
808
|
let position = -1;
|
|
673
809
|
if (listenerOrListeners === listener) {
|
|
674
|
-
|
|
810
|
+
__privateGet(this, _events).delete(event);
|
|
675
811
|
} else if (Array.isArray(listenerOrListeners)) {
|
|
676
812
|
for (let i = length; i-- > 0; ) {
|
|
677
813
|
if (listenerOrListeners[i] === listener) {
|
|
@@ -684,63 +820,58 @@ var EventEmitter = class {
|
|
|
684
820
|
}
|
|
685
821
|
if (listenerOrListeners.length === 1) {
|
|
686
822
|
listenerOrListeners.length = 0;
|
|
687
|
-
|
|
823
|
+
__privateGet(this, _events).delete(event);
|
|
688
824
|
} else {
|
|
689
825
|
listenerOrListeners.splice(position, 1);
|
|
690
826
|
}
|
|
691
827
|
}
|
|
692
828
|
}
|
|
693
|
-
removeAllListeners(
|
|
694
|
-
if (
|
|
695
|
-
|
|
696
|
-
} else if (
|
|
697
|
-
|
|
698
|
-
} else {
|
|
699
|
-
delete this._events[type];
|
|
829
|
+
removeAllListeners(event) {
|
|
830
|
+
if (event && __privateGet(this, _events).has(event)) {
|
|
831
|
+
__privateGet(this, _events).delete(event);
|
|
832
|
+
} else if (event === void 0) {
|
|
833
|
+
__privateGet(this, _events).clear();
|
|
700
834
|
}
|
|
701
835
|
}
|
|
702
|
-
emit(
|
|
703
|
-
if (this
|
|
704
|
-
const handler = this.
|
|
836
|
+
emit(event, ...args) {
|
|
837
|
+
if (__privateGet(this, _events)) {
|
|
838
|
+
const handler = __privateGet(this, _events).get(event);
|
|
705
839
|
if (handler) {
|
|
706
|
-
invokeHandler(handler,
|
|
707
|
-
}
|
|
708
|
-
const wildcardHandler = this._events["*"];
|
|
709
|
-
if (wildcardHandler) {
|
|
710
|
-
invokeHandler(wildcardHandler, type, args);
|
|
840
|
+
this.invokeHandler(handler, args);
|
|
711
841
|
}
|
|
712
842
|
}
|
|
713
843
|
}
|
|
714
|
-
once(
|
|
715
|
-
const handler = (
|
|
716
|
-
this.removeListener(
|
|
717
|
-
listener(
|
|
844
|
+
once(event, listener) {
|
|
845
|
+
const handler = (...args) => {
|
|
846
|
+
this.removeListener(event, handler);
|
|
847
|
+
listener(...args);
|
|
718
848
|
};
|
|
719
|
-
this.on(
|
|
849
|
+
this.on(event, handler);
|
|
720
850
|
}
|
|
721
|
-
on(
|
|
722
|
-
|
|
851
|
+
on(event, listener) {
|
|
852
|
+
this.addListener(event, listener);
|
|
723
853
|
}
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
854
|
+
invokeHandler(handler, args) {
|
|
855
|
+
if (isArrayOfListeners(handler)) {
|
|
856
|
+
handler.slice().forEach((listener) => this.invokeHandler(listener, args));
|
|
857
|
+
} else {
|
|
858
|
+
switch (args.length) {
|
|
859
|
+
case 0:
|
|
860
|
+
handler();
|
|
861
|
+
break;
|
|
862
|
+
case 1:
|
|
863
|
+
handler(args[0]);
|
|
864
|
+
break;
|
|
865
|
+
case 2:
|
|
866
|
+
handler(args[0], args[1]);
|
|
867
|
+
break;
|
|
868
|
+
default:
|
|
869
|
+
handler.call(null, ...args);
|
|
870
|
+
}
|
|
741
871
|
}
|
|
742
872
|
}
|
|
743
|
-
}
|
|
873
|
+
};
|
|
874
|
+
_events = new WeakMap();
|
|
744
875
|
|
|
745
876
|
// src/round-decimal.ts
|
|
746
877
|
var PUNCTUATION_STR = String.fromCharCode(8200);
|
|
@@ -928,6 +1059,136 @@ function invariant(condition, message) {
|
|
|
928
1059
|
}
|
|
929
1060
|
}
|
|
930
1061
|
|
|
1062
|
+
// src/json-utils.ts
|
|
1063
|
+
var { COUNT } = metadataKeys;
|
|
1064
|
+
var isJsonData = (value) => typeof value === "object" && value !== null;
|
|
1065
|
+
var vuuRowDataItemTypes = ["boolean", "number", "string"];
|
|
1066
|
+
var isVuuRowDataItem = (value) => vuuRowDataItemTypes.includes(typeof value);
|
|
1067
|
+
var typeofVuuDataItem = (value) => typeof value === "boolean" ? "boolean" : typeof value === "number" ? "number" : "string";
|
|
1068
|
+
var getCellValue = (attribute, attributeValue) => {
|
|
1069
|
+
if (isJsonData(attributeValue)) {
|
|
1070
|
+
return { attribute: `${attribute}+`, attributeValue: "", type: "json" };
|
|
1071
|
+
} else if (isVuuRowDataItem(attributeValue)) {
|
|
1072
|
+
return {
|
|
1073
|
+
attribute,
|
|
1074
|
+
attributeValue,
|
|
1075
|
+
type: typeofVuuDataItem(attributeValue)
|
|
1076
|
+
};
|
|
1077
|
+
} else {
|
|
1078
|
+
throw Error(`unsupported type ${typeof attributeValue} in JSON`);
|
|
1079
|
+
}
|
|
1080
|
+
};
|
|
1081
|
+
var jsonColumnType = {
|
|
1082
|
+
name: "json",
|
|
1083
|
+
renderer: {
|
|
1084
|
+
name: "json"
|
|
1085
|
+
}
|
|
1086
|
+
};
|
|
1087
|
+
var jsonToDataSourceRows = (json) => {
|
|
1088
|
+
const cols = [];
|
|
1089
|
+
cols.push(
|
|
1090
|
+
{
|
|
1091
|
+
name: "col 1",
|
|
1092
|
+
type: jsonColumnType
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
name: "col 2",
|
|
1096
|
+
type: jsonColumnType
|
|
1097
|
+
}
|
|
1098
|
+
);
|
|
1099
|
+
const rows = [];
|
|
1100
|
+
addChildValues(rows, json, cols);
|
|
1101
|
+
return [cols, rows];
|
|
1102
|
+
};
|
|
1103
|
+
var addChildValues = (rows, json, cols, index = { value: 0 }, keyBase = "$root", depth = 0) => {
|
|
1104
|
+
let leafCount = 0;
|
|
1105
|
+
let rowCount = 0;
|
|
1106
|
+
if (depth === cols.length - 1) {
|
|
1107
|
+
cols.push({
|
|
1108
|
+
name: `col ${cols.length + 1}`,
|
|
1109
|
+
hidden: true,
|
|
1110
|
+
type: jsonColumnType
|
|
1111
|
+
});
|
|
1112
|
+
}
|
|
1113
|
+
const columnEntries = Object.entries(json);
|
|
1114
|
+
for (let i = 0; i < columnEntries.length; i++, index.value += 1) {
|
|
1115
|
+
const [key, value] = columnEntries[i];
|
|
1116
|
+
const { attribute, attributeValue, type } = getCellValue(key, value);
|
|
1117
|
+
const isLeaf = type !== "json";
|
|
1118
|
+
const blanks = Array(depth).fill("");
|
|
1119
|
+
const fullKey = `${keyBase}|${key}`;
|
|
1120
|
+
const row = [index.value, index.value, isLeaf, false, depth, 0, fullKey, 0, ...blanks, attribute, attributeValue];
|
|
1121
|
+
rows.push(row);
|
|
1122
|
+
rowCount += 1;
|
|
1123
|
+
if (isJsonData(value)) {
|
|
1124
|
+
const [nestedLeafCount, nestedRowCount] = addChildValues(
|
|
1125
|
+
rows,
|
|
1126
|
+
value,
|
|
1127
|
+
cols,
|
|
1128
|
+
{ value: index.value + 1 },
|
|
1129
|
+
fullKey,
|
|
1130
|
+
depth + 1
|
|
1131
|
+
);
|
|
1132
|
+
row[COUNT] = nestedLeafCount;
|
|
1133
|
+
leafCount += nestedLeafCount;
|
|
1134
|
+
rowCount += nestedRowCount;
|
|
1135
|
+
index.value += nestedRowCount;
|
|
1136
|
+
} else {
|
|
1137
|
+
leafCount += 1;
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
return [leafCount, rowCount];
|
|
1141
|
+
};
|
|
1142
|
+
|
|
1143
|
+
// src/keyset.ts
|
|
1144
|
+
var KeySet = class {
|
|
1145
|
+
constructor(range) {
|
|
1146
|
+
this.keys = /* @__PURE__ */ new Map();
|
|
1147
|
+
this.free = [];
|
|
1148
|
+
this.nextKeyValue = 0;
|
|
1149
|
+
this.reset(range);
|
|
1150
|
+
}
|
|
1151
|
+
next() {
|
|
1152
|
+
if (this.free.length > 0) {
|
|
1153
|
+
return this.free.pop();
|
|
1154
|
+
} else {
|
|
1155
|
+
return this.nextKeyValue++;
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
reset({ from, to }) {
|
|
1159
|
+
this.keys.forEach((keyValue, rowIndex) => {
|
|
1160
|
+
if (rowIndex < from || rowIndex >= to) {
|
|
1161
|
+
this.free.push(keyValue);
|
|
1162
|
+
this.keys.delete(rowIndex);
|
|
1163
|
+
}
|
|
1164
|
+
});
|
|
1165
|
+
const size = to - from;
|
|
1166
|
+
if (this.keys.size + this.free.length > size) {
|
|
1167
|
+
this.free.length = size - this.keys.size;
|
|
1168
|
+
}
|
|
1169
|
+
for (let rowIndex = from; rowIndex < to; rowIndex++) {
|
|
1170
|
+
if (!this.keys.has(rowIndex)) {
|
|
1171
|
+
const nextKeyValue = this.next();
|
|
1172
|
+
this.keys.set(rowIndex, nextKeyValue);
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
keyFor(rowIndex) {
|
|
1177
|
+
const key = this.keys.get(rowIndex);
|
|
1178
|
+
if (key === void 0) {
|
|
1179
|
+
console.log(`key not found
|
|
1180
|
+
keys: ${this.toDebugString()}
|
|
1181
|
+
free : ${this.free.join(",")}
|
|
1182
|
+
`);
|
|
1183
|
+
throw Error(`KeySet, no key found for rowIndex ${rowIndex}`);
|
|
1184
|
+
}
|
|
1185
|
+
return key;
|
|
1186
|
+
}
|
|
1187
|
+
toDebugString() {
|
|
1188
|
+
return Array.from(this.keys.entries()).map((k, v) => `${k}=>${v}`).join(",");
|
|
1189
|
+
}
|
|
1190
|
+
};
|
|
1191
|
+
|
|
931
1192
|
// src/nanoid/index.ts
|
|
932
1193
|
var uuid = (size = 21) => {
|
|
933
1194
|
let id = "";
|
|
@@ -947,35 +1208,35 @@ var uuid = (size = 21) => {
|
|
|
947
1208
|
return id;
|
|
948
1209
|
};
|
|
949
1210
|
|
|
950
|
-
// src/
|
|
951
|
-
function
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
}
|
|
957
|
-
function indexRows(rows, indexField) {
|
|
958
|
-
return addRowsToIndex(rows, {}, indexField);
|
|
959
|
-
}
|
|
960
|
-
function isEmptyRow(row) {
|
|
961
|
-
return row[0] === void 0;
|
|
1211
|
+
// src/perf-utils.ts
|
|
1212
|
+
function debounce(callback, timeInterval) {
|
|
1213
|
+
let timeout;
|
|
1214
|
+
return (...args) => {
|
|
1215
|
+
clearTimeout(timeout);
|
|
1216
|
+
timeout = window.setTimeout(() => callback(...args), timeInterval);
|
|
1217
|
+
};
|
|
962
1218
|
}
|
|
963
|
-
function
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
const row = rows[idx].slice();
|
|
970
|
-
for (let j = 1; j < updates[i].length; j += 3) {
|
|
971
|
-
row[updates[i][j]] = updates[i][j + 2];
|
|
972
|
-
}
|
|
973
|
-
results[idx] = row;
|
|
1219
|
+
function throttle(callback, limit) {
|
|
1220
|
+
let wait = false;
|
|
1221
|
+
let lastArgs = void 0;
|
|
1222
|
+
function checkLastArgs() {
|
|
1223
|
+
if (lastArgs == void 0) {
|
|
1224
|
+
wait = false;
|
|
974
1225
|
} else {
|
|
975
|
-
|
|
1226
|
+
callback(...lastArgs);
|
|
1227
|
+
lastArgs = void 0;
|
|
1228
|
+
setTimeout(checkLastArgs, limit);
|
|
976
1229
|
}
|
|
977
1230
|
}
|
|
978
|
-
return
|
|
1231
|
+
return (...args) => {
|
|
1232
|
+
if (wait) {
|
|
1233
|
+
lastArgs = args;
|
|
1234
|
+
} else {
|
|
1235
|
+
callback(...args);
|
|
1236
|
+
wait = true;
|
|
1237
|
+
setTimeout(checkLastArgs, limit);
|
|
1238
|
+
}
|
|
1239
|
+
};
|
|
979
1240
|
}
|
|
980
1241
|
|
|
981
1242
|
// src/selection-utils.ts
|
|
@@ -1000,7 +1261,9 @@ var selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExisting
|
|
|
1000
1261
|
const singleSelect = selectionModel === "single";
|
|
1001
1262
|
const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
|
|
1002
1263
|
const actsLikeSingleSelect = singleSelect || multiSelect && !keepExistingSelection && !rangeSelect;
|
|
1003
|
-
if (
|
|
1264
|
+
if (selectionModel === "none") {
|
|
1265
|
+
return NO_SELECTION;
|
|
1266
|
+
} else if (actsLikeSingleSelect) {
|
|
1004
1267
|
return [itemIndex];
|
|
1005
1268
|
} else if (rangeSelect) {
|
|
1006
1269
|
if (selected.length === 0) {
|
|
@@ -1168,53 +1431,18 @@ var lastWord = (text) => {
|
|
|
1168
1431
|
return trimmedText.slice(pos + 1);
|
|
1169
1432
|
}
|
|
1170
1433
|
};
|
|
1171
|
-
|
|
1172
|
-
// src/logging-utils.ts
|
|
1173
|
-
var NO_OP = () => {
|
|
1174
|
-
};
|
|
1175
|
-
var ConsoleLogger = class {
|
|
1176
|
-
constructor(options, level) {
|
|
1177
|
-
const { buildEnv } = options || {};
|
|
1178
|
-
if (buildEnv === "production") {
|
|
1179
|
-
this.log = NO_OP;
|
|
1180
|
-
this.warn = NO_OP;
|
|
1181
|
-
this.error = NO_OP;
|
|
1182
|
-
this.group = NO_OP;
|
|
1183
|
-
this.groupCollapsed = NO_OP;
|
|
1184
|
-
this.groupEnd = NO_OP;
|
|
1185
|
-
this.assert = NO_OP;
|
|
1186
|
-
this.trace = NO_OP;
|
|
1187
|
-
this.debug = NO_OP;
|
|
1188
|
-
this.info = NO_OP;
|
|
1189
|
-
this.table = NO_OP;
|
|
1190
|
-
return;
|
|
1191
|
-
}
|
|
1192
|
-
this.log = console.log.bind(console);
|
|
1193
|
-
this.warn = console.warn.bind(console);
|
|
1194
|
-
this.error = console.error.bind(console);
|
|
1195
|
-
this.group = console.group.bind(console);
|
|
1196
|
-
this.groupEnd = console.groupEnd.bind(console);
|
|
1197
|
-
this.groupCollapsed = console.groupCollapsed.bind(console);
|
|
1198
|
-
this.assert = console.assert.bind(console);
|
|
1199
|
-
this.trace = console.trace.bind(console);
|
|
1200
|
-
this.debug = console.debug.bind(console);
|
|
1201
|
-
this.info = console.info.bind(console);
|
|
1202
|
-
this.table = console.table.bind(console);
|
|
1203
|
-
}
|
|
1204
|
-
};
|
|
1205
|
-
var logger = new ConsoleLogger({ buildEnv: "development" });
|
|
1206
1434
|
export {
|
|
1207
1435
|
AggregationType,
|
|
1208
|
-
ConsoleLogger,
|
|
1209
1436
|
DOWN1,
|
|
1210
1437
|
DOWN2,
|
|
1211
1438
|
DataWindow,
|
|
1212
1439
|
EventEmitter,
|
|
1440
|
+
KeySet,
|
|
1441
|
+
RangeMonitor,
|
|
1213
1442
|
UP1,
|
|
1214
1443
|
UP2,
|
|
1215
1444
|
WindowRange,
|
|
1216
1445
|
addGroupColumn,
|
|
1217
|
-
addRowsToIndex,
|
|
1218
1446
|
addSortColumn,
|
|
1219
1447
|
applyFilterToColumns,
|
|
1220
1448
|
applyGroupByToColumns,
|
|
@@ -1222,11 +1450,13 @@ export {
|
|
|
1222
1450
|
applySortToColumns,
|
|
1223
1451
|
buildColumnMap,
|
|
1224
1452
|
createEl,
|
|
1453
|
+
debounce,
|
|
1225
1454
|
defaultValueFormatter,
|
|
1226
1455
|
deselectItem,
|
|
1227
1456
|
expandSelection,
|
|
1228
1457
|
extractFilterForColumn,
|
|
1229
1458
|
extractGroupColumn,
|
|
1459
|
+
findColumn,
|
|
1230
1460
|
flattenColumnGroup,
|
|
1231
1461
|
formatDate,
|
|
1232
1462
|
fromServerDataType,
|
|
@@ -1234,7 +1464,10 @@ export {
|
|
|
1234
1464
|
getCellRenderer,
|
|
1235
1465
|
getColumnName,
|
|
1236
1466
|
getColumnPinStyle,
|
|
1467
|
+
getColumnsInViewport,
|
|
1468
|
+
getCookieValue,
|
|
1237
1469
|
getFullRange,
|
|
1470
|
+
getLoggingConfig,
|
|
1238
1471
|
getMovingValueDirection,
|
|
1239
1472
|
getRegisteredCellRenderers,
|
|
1240
1473
|
getRowRecord,
|
|
@@ -1242,14 +1475,16 @@ export {
|
|
|
1242
1475
|
getUniqueId,
|
|
1243
1476
|
getValueFormatter,
|
|
1244
1477
|
hasHeadings,
|
|
1245
|
-
indexRows,
|
|
1246
1478
|
invariant,
|
|
1247
1479
|
isAndFilter,
|
|
1248
1480
|
isCharacterKey,
|
|
1249
|
-
|
|
1481
|
+
isDataLoading,
|
|
1250
1482
|
isFilterClause,
|
|
1251
1483
|
isGroupColumn,
|
|
1252
1484
|
isInFilter,
|
|
1485
|
+
isJsonAttribute,
|
|
1486
|
+
isJsonColumn,
|
|
1487
|
+
isJsonGroup,
|
|
1253
1488
|
isKeyedColumn,
|
|
1254
1489
|
isMultiClauseFilter,
|
|
1255
1490
|
isMultiValueFilter,
|
|
@@ -1264,6 +1499,7 @@ export {
|
|
|
1264
1499
|
isTypeDescriptor,
|
|
1265
1500
|
isValidNumber,
|
|
1266
1501
|
itemsChanged,
|
|
1502
|
+
jsonToDataSourceRows,
|
|
1267
1503
|
lastWord,
|
|
1268
1504
|
logger,
|
|
1269
1505
|
mapSortCriteria,
|
|
@@ -1280,9 +1516,9 @@ export {
|
|
|
1280
1516
|
setAggregations,
|
|
1281
1517
|
setSortColumn,
|
|
1282
1518
|
sortPinnedColumns,
|
|
1519
|
+
throttle,
|
|
1283
1520
|
toColumnDescriptor,
|
|
1284
1521
|
toDataSourceColumns,
|
|
1285
|
-
update,
|
|
1286
1522
|
uuid,
|
|
1287
1523
|
withinRange
|
|
1288
1524
|
};
|