@vuu-ui/vuu-table 0.6.16-debug → 0.6.17-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 CHANGED
@@ -18654,6 +18654,56 @@ var FilterExpression = class {
18654
18654
  }
18655
18655
  };
18656
18656
  _filter = new WeakMap();
18657
+ var walkTree = (tree, source) => {
18658
+ const filterExpression = new FilterExpression();
18659
+ const cursor = tree.cursor();
18660
+ do {
18661
+ const { name: name2, from, to } = cursor;
18662
+ switch (name2) {
18663
+ case "ColumnValueExpression":
18664
+ filterExpression.add({});
18665
+ break;
18666
+ case "ColumnSetExpression":
18667
+ filterExpression.add({ op: "in" });
18668
+ break;
18669
+ case "Or":
18670
+ case "And":
18671
+ filterExpression.setFilterCombinatorOp(source.substring(from, to));
18672
+ break;
18673
+ case "Column":
18674
+ filterExpression.setColumn(source.substring(from, to));
18675
+ break;
18676
+ case "Operator":
18677
+ filterExpression.setOp(source.substring(from, to));
18678
+ break;
18679
+ case "String":
18680
+ filterExpression.setValue(source.substring(from + 1, to - 1));
18681
+ break;
18682
+ case "Number":
18683
+ filterExpression.setValue(parseFloat(source.substring(from, to)));
18684
+ break;
18685
+ case "True":
18686
+ filterExpression.setValue(true);
18687
+ break;
18688
+ case "False":
18689
+ filterExpression.setValue(false);
18690
+ break;
18691
+ case "FilterName":
18692
+ filterExpression.name = source.substring(from, to);
18693
+ break;
18694
+ default:
18695
+ }
18696
+ } while (cursor.next());
18697
+ return filterExpression.toJSON();
18698
+ };
18699
+
18700
+ // ../vuu-filters/src/filter-input/filter-language-parser/FilterParser.ts
18701
+ var strictParser = parser.configure({ strict: true });
18702
+ var parseFilter = (filterQuery) => {
18703
+ const parseTree = strictParser.parse(filterQuery);
18704
+ const filter = walkTree(parseTree, filterQuery);
18705
+ return filter;
18706
+ };
18657
18707
 
18658
18708
  // ../vuu-filters/src/filter-input/highlighting.ts
18659
18709
  var myHighlightStyle = HighlightStyle.define([
@@ -18746,7 +18796,77 @@ var import_vuu_utils8 = require("@vuu-ui/vuu-utils");
18746
18796
 
18747
18797
  // ../vuu-data/src/data-source.ts
18748
18798
  var isSizeOnly = (message) => message.type === "viewport-update" && message.mode === "size-only";
18799
+ var exactlyTheSame = (a, b) => {
18800
+ if (a === b) {
18801
+ return true;
18802
+ } else if (a === void 0 && b === void 0) {
18803
+ return true;
18804
+ } else {
18805
+ return false;
18806
+ }
18807
+ };
18808
+ var filterChanged = (c1, c2) => {
18809
+ var _a2, _b;
18810
+ return ((_a2 = c1.filter) == null ? void 0 : _a2.filter) !== ((_b = c2.filter) == null ? void 0 : _b.filter);
18811
+ };
18812
+ var sortChanged = ({ sort: s1 }, { sort: s2 }) => {
18813
+ if (exactlyTheSame(s1, s2)) {
18814
+ return false;
18815
+ } else if (s1 === void 0 || s2 === void 0) {
18816
+ return true;
18817
+ } else if ((s1 == null ? void 0 : s1.sortDefs.length) !== (s2 == null ? void 0 : s2.sortDefs.length)) {
18818
+ return true;
18819
+ }
18820
+ return s1.sortDefs.some(
18821
+ ({ column, sortType }, i) => column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType
18822
+ );
18823
+ };
18824
+ var groupByChanged = ({ groupBy: g1 }, { groupBy: g2 }) => {
18825
+ if (exactlyTheSame(g1, g2)) {
18826
+ return false;
18827
+ } else if (g1 === void 0 || g2 === void 0) {
18828
+ return true;
18829
+ } else if ((g1 == null ? void 0 : g1.length) !== (g2 == null ? void 0 : g2.length)) {
18830
+ return true;
18831
+ }
18832
+ return g1.some((column, i) => column !== (g2 == null ? void 0 : g2[i]));
18833
+ };
18834
+ var columnsChanged = ({ columns: cols1 }, { columns: cols2 }) => {
18835
+ if (exactlyTheSame(cols1, cols2)) {
18836
+ return false;
18837
+ } else if (cols1 === void 0 || cols2 === void 0) {
18838
+ return true;
18839
+ } else if ((cols1 == null ? void 0 : cols1.length) !== (cols2 == null ? void 0 : cols2.length)) {
18840
+ return true;
18841
+ }
18842
+ return cols1.some((column, i) => column !== (cols2 == null ? void 0 : cols2[i]));
18843
+ };
18844
+ var aggregationsChanged = ({ aggregations: agg1 }, { aggregations: agg2 }) => {
18845
+ if (exactlyTheSame(agg1, agg2)) {
18846
+ return false;
18847
+ } else if (agg1 === void 0 || agg2 === void 0) {
18848
+ return true;
18849
+ } else if (agg1.length !== agg2.length) {
18850
+ return true;
18851
+ }
18852
+ return agg1.some(
18853
+ ({ column, aggType }, i) => column !== agg2[i].column || aggType !== agg2[i].aggType
18854
+ );
18855
+ };
18856
+ var visualLinkChanged = () => {
18857
+ return false;
18858
+ };
18859
+ var configChanged2 = (config, newConfig) => {
18860
+ if (exactlyTheSame(config, newConfig)) {
18861
+ return false;
18862
+ }
18863
+ if (config === void 0 || newConfig === void 0) {
18864
+ return true;
18865
+ }
18866
+ return columnsChanged(config, newConfig) || filterChanged(config, newConfig) || sortChanged(config, newConfig) || groupByChanged(config, newConfig) || aggregationsChanged(config, newConfig) || visualLinkChanged(config, newConfig);
18867
+ };
18749
18868
  var datasourceMessages = [
18869
+ "config",
18750
18870
  "aggregate",
18751
18871
  "viewport-update",
18752
18872
  "columns",
@@ -18766,7 +18886,9 @@ var shouldMessageBeRoutedToDataSource = (message) => {
18766
18886
  const type = message.type;
18767
18887
  return datasourceMessages.includes(type);
18768
18888
  };
18769
- var isDataSourceConfigMessage = (message) => ["aggregate", "columns", "filter", "groupBy", "sort"].includes(message.type);
18889
+ var isDataSourceConfigMessage = (message) => ["config", "aggregate", "columns", "filter", "groupBy", "sort"].includes(
18890
+ message.type
18891
+ );
18770
18892
 
18771
18893
  // ../vuu-data/src/server-proxy/messages.ts
18772
18894
  var GET_TABLE_LIST = "GET_TABLE_LIST";
@@ -19537,6 +19659,9 @@ var ArrayBackedMovingWindow = class {
19537
19659
  };
19538
19660
  _range = new WeakMap();
19539
19661
 
19662
+ // src/data-source.ts
19663
+ var hasGroupBy = (config) => config !== void 0 && config.groupBy !== void 0 && config.groupBy.length > 0;
19664
+
19540
19665
  // src/server-proxy/viewport.ts
19541
19666
  var EMPTY_GROUPBY = [];
19542
19667
  var { debug: debug3, debugEnabled: debugEnabled3, error: error2, info: info2, infoEnabled, warn: warn2 } = logger("viewport");
@@ -19690,9 +19815,24 @@ var Viewport = class {
19690
19815
  warn2 == null ? void 0 : warn2("range requests sent faster than they are being ACKed");
19691
19816
  }
19692
19817
  }
19818
+ } else if (type === "config") {
19819
+ if (hasGroupBy(pendingOperation.data)) {
19820
+ this.isTree = true;
19821
+ this.groupBy = pendingOperation.data.groupBy;
19822
+ } else if (this.isTree) {
19823
+ this.isTree = false;
19824
+ this.groupBy = [];
19825
+ }
19826
+ debug3 == null ? void 0 : debug3(\`config change confirmed, isTree : \${this.isTree}\`);
19827
+ return {
19828
+ clientViewportId,
19829
+ type,
19830
+ config: pendingOperation.data
19831
+ };
19693
19832
  } else if (type === "groupBy") {
19694
19833
  this.isTree = pendingOperation.data.length > 0;
19695
19834
  this.groupBy = pendingOperation.data;
19835
+ debug3 == null ? void 0 : debug3(\`groupBy change confirmed, isTree : \${this.isTree}\`);
19696
19836
  return {
19697
19837
  clientViewportId,
19698
19838
  type,
@@ -19950,6 +20090,22 @@ var Viewport = class {
19950
20090
  info2 == null ? void 0 : info2(\`filterRequest: \${filter}\`);
19951
20091
  return this.createRequest({ filterSpec: { filter } });
19952
20092
  }
20093
+ setConfig(requestId, config) {
20094
+ this.awaitOperation(requestId, { type: "config", data: config });
20095
+ const { filter, ...remainingConfig } = config;
20096
+ debugEnabled3 ? debug3 == null ? void 0 : debug3(\`setConfig \${JSON.stringify(config)}\`) : info2 == null ? void 0 : info2(\`setConfig\`);
20097
+ return this.createRequest(
20098
+ {
20099
+ ...remainingConfig,
20100
+ filterSpec: typeof (filter == null ? void 0 : filter.filter) === "string" ? {
20101
+ filter: filter.filter
20102
+ } : {
20103
+ filter: ""
20104
+ }
20105
+ },
20106
+ true
20107
+ );
20108
+ }
19953
20109
  aggregateRequest(requestId, aggregations) {
19954
20110
  this.awaitOperation(requestId, { type: "aggregate", data: aggregations });
19955
20111
  info2 == null ? void 0 : info2(\`aggregateRequest: \${aggregations}\`);
@@ -20051,19 +20207,27 @@ var Viewport = class {
20051
20207
  }
20052
20208
  return [out, mode];
20053
20209
  }
20054
- createRequest(params) {
20055
- return {
20056
- type: "CHANGE_VP",
20057
- viewPortId: this.serverViewportId,
20058
- aggregations: this.aggregations,
20059
- columns: this.columns,
20060
- sort: this.sort,
20061
- groupBy: this.groupBy,
20062
- filterSpec: {
20063
- filter: this.filter.filter
20064
- },
20065
- ...params
20066
- };
20210
+ createRequest(params, overWrite = false) {
20211
+ if (overWrite) {
20212
+ return {
20213
+ type: "CHANGE_VP",
20214
+ viewPortId: this.serverViewportId,
20215
+ ...params
20216
+ };
20217
+ } else {
20218
+ return {
20219
+ type: "CHANGE_VP",
20220
+ viewPortId: this.serverViewportId,
20221
+ aggregations: this.aggregations,
20222
+ columns: this.columns,
20223
+ sort: this.sort,
20224
+ groupBy: this.groupBy,
20225
+ filterSpec: {
20226
+ filter: this.filter.filter
20227
+ },
20228
+ ...params
20229
+ };
20230
+ }
20067
20231
  }
20068
20232
  };
20069
20233
  var toClientRow = ({ rowIndex, rowKey, sel: isSelected, data }, keys) => {
@@ -20269,6 +20433,11 @@ var ServerProxy = class {
20269
20433
  this.postMessageToClient(debounceRequest);
20270
20434
  }
20271
20435
  }
20436
+ setConfig(viewport, message) {
20437
+ const requestId = nextRequestId();
20438
+ const request = viewport.setConfig(requestId, message.config);
20439
+ this.sendIfReady(request, requestId, viewport.status === "subscribed");
20440
+ }
20272
20441
  aggregate(viewport, message) {
20273
20442
  const requestId = nextRequestId();
20274
20443
  const request = viewport.aggregateRequest(requestId, message.aggregations);
@@ -20426,6 +20595,8 @@ var ServerProxy = class {
20426
20595
  switch (message.type) {
20427
20596
  case "setViewRange":
20428
20597
  return this.setViewRange(viewport, message);
20598
+ case "config":
20599
+ return this.setConfig(viewport, message);
20429
20600
  case "aggregate":
20430
20601
  return this.aggregate(viewport, message);
20431
20602
  case "sort":
@@ -21991,6 +22162,32 @@ var RemoteDataSource = class extends import_vuu_utils13.EventEmitter {
21991
22162
  get config() {
21992
22163
  return __privateGet(this, _config);
21993
22164
  }
22165
+ set config(config) {
22166
+ var _a2;
22167
+ if (configChanged2(__privateGet(this, _config), config)) {
22168
+ if ((config == null ? void 0 : config.filter) && (config == null ? void 0 : config.filter.filterStruct) === void 0) {
22169
+ __privateSet(this, _config, {
22170
+ ...config,
22171
+ filter: {
22172
+ filter: config.filter.filter,
22173
+ filterStruct: parseFilter(config.filter.filter)
22174
+ }
22175
+ });
22176
+ } else {
22177
+ __privateSet(this, _config, config);
22178
+ }
22179
+ if (__privateGet(this, _config) && this.viewport && this.server) {
22180
+ if (config) {
22181
+ (_a2 = this.server) == null ? void 0 : _a2.send({
22182
+ viewport: this.viewport,
22183
+ type: "config",
22184
+ config: __privateGet(this, _config)
22185
+ });
22186
+ }
22187
+ }
22188
+ this.emit("config", __privateGet(this, _config));
22189
+ }
22190
+ }
21994
22191
  get optimize() {
21995
22192
  return __privateGet(this, _optimize);
21996
22193
  }
@@ -22223,9 +22420,6 @@ var import_jsx_runtime18 = require("react/jsx-runtime");
22223
22420
  // ../vuu-filters/src/filter-toolbar/FilterToolbar.tsx
22224
22421
  var import_jsx_runtime19 = require("react/jsx-runtime");
22225
22422
 
22226
- // ../vuu-filters/src/filter-input/filter-language-parser/FilterParser.ts
22227
- var strictParser = parser.configure({ strict: true });
22228
-
22229
22423
  // ../vuu-filters/src/filter-utils.ts
22230
22424
  var import_vuu_utils15 = require("@vuu-ui/vuu-utils");
22231
22425