@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/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
- return { from, to: Math.min(to, rowCount) };
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._events = {};
791
+ __privateAdd(this, _events, /* @__PURE__ */ new Map());
653
792
  }
654
- addListener(type, listener) {
655
- if (!this._events) {
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._events[type] = listener;
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._events[type] = [listeners, listener];
800
+ __privateGet(this, _events).set(event, [listeners, listener]);
665
801
  }
666
802
  }
667
- removeListener(type, listener) {
668
- if (!this._events || !this._events[type]) {
803
+ removeListener(event, listener) {
804
+ if (!__privateGet(this, _events).has(event)) {
669
805
  return;
670
806
  }
671
- const listenerOrListeners = this._events[type];
807
+ const listenerOrListeners = __privateGet(this, _events).get(event);
672
808
  let position = -1;
673
809
  if (listenerOrListeners === listener) {
674
- delete this._events[type];
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
- delete this._events[type];
823
+ __privateGet(this, _events).delete(event);
688
824
  } else {
689
825
  listenerOrListeners.splice(position, 1);
690
826
  }
691
827
  }
692
828
  }
693
- removeAllListeners(type) {
694
- if (!this._events) {
695
- return;
696
- } else if (type === void 0) {
697
- delete this._events;
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(type, ...args) {
703
- if (this._events) {
704
- const handler = this._events[type];
836
+ emit(event, ...args) {
837
+ if (__privateGet(this, _events)) {
838
+ const handler = __privateGet(this, _events).get(event);
705
839
  if (handler) {
706
- invokeHandler(handler, type, args);
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(type, listener) {
715
- const handler = (evtName, message) => {
716
- this.removeListener(evtName, handler);
717
- listener(evtName, message);
844
+ once(event, listener) {
845
+ const handler = (...args) => {
846
+ this.removeListener(event, handler);
847
+ listener(...args);
718
848
  };
719
- this.on(type, handler);
849
+ this.on(event, handler);
720
850
  }
721
- on(type, listener) {
722
- return this.addListener(type, listener);
851
+ on(event, listener) {
852
+ this.addListener(event, listener);
723
853
  }
724
- };
725
- function invokeHandler(handler, type, args) {
726
- if (isArrayOfListeners(handler)) {
727
- handler.slice().forEach((listener) => invokeHandler(listener, type, args));
728
- } else {
729
- switch (args.length) {
730
- case 0:
731
- handler(type);
732
- break;
733
- case 1:
734
- handler(type, args[0]);
735
- break;
736
- case 2:
737
- handler(type, args[0], args[1]);
738
- break;
739
- default:
740
- handler.call(null, type, ...args);
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/row-utils.ts
951
- function addRowsToIndex(rows, index, indexField) {
952
- for (let idx = 0, len = rows.length; idx < len; idx++) {
953
- index[rows[idx][indexField]] = idx;
954
- }
955
- return index;
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 update(rows, updates) {
964
- const results = rows.slice();
965
- const [[offsetIdx]] = rows;
966
- for (let i = 0; i < updates.length; i++) {
967
- const idx = updates[i][0] - offsetIdx;
968
- if (rows[idx]) {
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
- console.log(`row not found in rows`);
1226
+ callback(...lastArgs);
1227
+ lastArgs = void 0;
1228
+ setTimeout(checkLastArgs, limit);
976
1229
  }
977
1230
  }
978
- return results;
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 (actsLikeSingleSelect) {
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
- isEmptyRow,
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
  };