@vuu-ui/vuu-utils 0.8.23-debug → 0.8.24-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
@@ -51,6 +51,7 @@ __export(src_exports, {
51
51
  Home: () => Home,
52
52
  KeySet: () => KeySet,
53
53
  MEASURES: () => MEASURES,
54
+ NO_CONFIG_CHANGES: () => NO_CONFIG_CHANGES,
54
55
  NULL_RANGE: () => NULL_RANGE,
55
56
  NoFilter: () => NoFilter,
56
57
  NoSort: () => NoSort,
@@ -79,10 +80,9 @@ __export(src_exports, {
79
80
  assertModuleExportsAtLeastOneComponent: () => assertModuleExportsAtLeastOneComponent,
80
81
  boxContainsPoint: () => boxContainsPoint,
81
82
  buildColumnMap: () => buildColumnMap,
82
- columnsChanged: () => columnsChanged,
83
- configChanged: () => configChanged,
84
83
  createEl: () => createEl,
85
84
  dataAndColumnUnchanged: () => dataAndColumnUnchanged,
85
+ dataColumnAndKeyUnchanged: () => dataColumnAndKeyUnchanged,
86
86
  dateTimePattern: () => dateTimePattern,
87
87
  debounce: () => debounce,
88
88
  defaultPatternsByType: () => defaultPatternsByType,
@@ -95,7 +95,6 @@ __export(src_exports, {
95
95
  extractGroupColumn: () => extractGroupColumn,
96
96
  fallbackDateTimePattern: () => fallbackDateTimePattern,
97
97
  filterAsQuery: () => filterAsQuery,
98
- filterChanged: () => filterChanged,
99
98
  findColumn: () => findColumn,
100
99
  flattenColumnGroup: () => flattenColumnGroup,
101
100
  focusFirstFocusableElement: () => focusFirstFocusableElement,
@@ -134,6 +133,7 @@ __export(src_exports, {
134
133
  getMissingItems: () => getMissingItems,
135
134
  getMovingValueDirection: () => getMovingValueDirection,
136
135
  getRegisteredCellRenderers: () => getRegisteredCellRenderers,
136
+ getRowClassNameGenerator: () => getRowClassNameGenerator,
137
137
  getRowElementAtIndex: () => getRowElementAtIndex,
138
138
  getRowRecord: () => getRowRecord,
139
139
  getScrollbarSize: () => getScrollbarSize,
@@ -143,7 +143,6 @@ __export(src_exports, {
143
143
  getUniqueId: () => getUniqueId,
144
144
  getUrlParameter: () => getUrlParameter,
145
145
  getValueFormatter: () => getValueFormatter,
146
- groupByChanged: () => groupByChanged,
147
146
  hasAction: () => hasAction,
148
147
  hasFilter: () => hasFilter,
149
148
  hasGroupBy: () => hasGroupBy,
@@ -157,14 +156,17 @@ __export(src_exports, {
157
156
  isCharacterKey: () => isCharacterKey,
158
157
  isColumnTypeRenderer: () => isColumnTypeRenderer,
159
158
  isCompleteFilter: () => isCompleteFilter,
159
+ isConfigChanged: () => isConfigChanged,
160
160
  isConnectionQualityMetrics: () => isConnectionQualityMetrics,
161
161
  isConnectionStatusMessage: () => isConnectionStatusMessage,
162
162
  isDataLoading: () => isDataLoading,
163
163
  isDateTimeColumn: () => isDateTimeColumn,
164
164
  isDateTimePattern: () => isDateTimePattern,
165
165
  isErrorResponse: () => isErrorResponse,
166
+ isFilterChanged: () => isFilterChanged,
166
167
  isFilterClause: () => isFilterClause,
167
168
  isFilteredColumn: () => isFilteredColumn,
169
+ isGroupByChanged: () => isGroupByChanged,
168
170
  isGroupColumn: () => isGroupColumn,
169
171
  isGroupMenuItemDescriptor: () => isGroupMenuItemDescriptor,
170
172
  isInFilter: () => isInFilter,
@@ -203,6 +205,7 @@ __export(src_exports, {
203
205
  isVisualLinkCreatedAction: () => isVisualLinkCreatedAction,
204
206
  isVisualLinkRemovedAction: () => isVisualLinkRemovedAction,
205
207
  isVisualLinksAction: () => isVisualLinksAction,
208
+ isVuuColumnDataType: () => isVuuColumnDataType,
206
209
  isVuuFeatureAction: () => isVuuFeatureAction,
207
210
  itemToString: () => itemToString,
208
211
  itemsChanged: () => itemsChanged,
@@ -220,6 +223,7 @@ __export(src_exports, {
220
223
  numericFormatter: () => numericFormatter,
221
224
  partition: () => partition,
222
225
  projectUpdates: () => projectUpdates,
226
+ queryClosest: () => queryClosest,
223
227
  rangeNewItems: () => rangeNewItems,
224
228
  rangesAreSame: () => rangesAreSame,
225
229
  registerComponent: () => registerComponent,
@@ -468,6 +472,15 @@ var numericTypes = ["int", "long", "double"];
468
472
  var getDefaultAlignment = (serverDataType) => serverDataType === void 0 ? "left" : numericTypes.includes(serverDataType) ? "right" : "left";
469
473
  var isValidColumnAlignment = (v) => v === "left" || v === "right";
470
474
  var isValidPinLocation = (v) => isValidColumnAlignment(v) || v === "floating" || v === "";
475
+ var VUU_COLUMN_DATA_TYPES = [
476
+ "long",
477
+ "double",
478
+ "int",
479
+ "string",
480
+ "char",
481
+ "boolean"
482
+ ];
483
+ var isVuuColumnDataType = (value) => VUU_COLUMN_DATA_TYPES.includes(value);
471
484
  var fromServerDataType = (serverDataType) => {
472
485
  switch (serverDataType) {
473
486
  case "double":
@@ -532,6 +545,7 @@ function projectUpdates(updates) {
532
545
  }
533
546
  return results;
534
547
  }
548
+ var KEY = 6;
535
549
  var metadataKeys = {
536
550
  IDX: 0,
537
551
  RENDER_IDX: 1,
@@ -539,7 +553,7 @@ var metadataKeys = {
539
553
  IS_EXPANDED: 3,
540
554
  DEPTH: 4,
541
555
  COUNT: 5,
542
- KEY: 6,
556
+ KEY,
543
557
  SELECTED: 7,
544
558
  count: 8,
545
559
  // TODO following only used in datamodel
@@ -1222,6 +1236,7 @@ function applyWidthToColumns(columns, options) {
1222
1236
  return columns;
1223
1237
  }
1224
1238
  var dataAndColumnUnchanged = (p, p1) => p.column === p1.column && p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) === p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);
1239
+ var dataColumnAndKeyUnchanged = (p, p1) => p.column === p1.column && p.row[KEY] === p1.row[KEY] && p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) === p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);
1225
1240
 
1226
1241
  // src/cookie-utils.ts
1227
1242
  var getCookieValue = (name) => {
@@ -1238,6 +1253,7 @@ var configEditorsMap = /* @__PURE__ */ new Map();
1238
1253
  var cellConfigPanelsMap = /* @__PURE__ */ new Map();
1239
1254
  var editRuleValidatorsMap = /* @__PURE__ */ new Map();
1240
1255
  var optionsMap = /* @__PURE__ */ new Map();
1256
+ var rowClassGeneratorsMap = /* @__PURE__ */ new Map();
1241
1257
  var isTypeCompatible = (rendererType, serverDataType) => {
1242
1258
  if (rendererType === void 0 || rendererType === "private") {
1243
1259
  return true;
@@ -1247,11 +1263,12 @@ var isTypeCompatible = (rendererType, serverDataType) => {
1247
1263
  return rendererType === serverDataType;
1248
1264
  }
1249
1265
  };
1250
- var isCellRenderer = (type, component) => type === "cell-renderer";
1266
+ var isCellRenderer = (type, component) => component !== void 0 && type === "cell-renderer";
1251
1267
  var isColumnHeaderContentRenderer = (type, component) => type === "column-header-content-renderer";
1252
1268
  var isColumnHeaderLabelRenderer = (type, component) => type === "column-header-label-renderer";
1253
1269
  var isCellConfigPanel = (type, component) => type === "cell-config-panel";
1254
1270
  var isEditRuleValidator = (type, component) => type === "data-edit-validator";
1271
+ var isRowClassGenerator = (type, component) => type === "row-class-generator";
1255
1272
  function registerComponent(componentName, component, type = "cell-renderer", options) {
1256
1273
  if (isCellRenderer(type, component)) {
1257
1274
  cellRenderersMap.set(componentName, component);
@@ -1263,6 +1280,9 @@ function registerComponent(componentName, component, type = "cell-renderer", opt
1263
1280
  cellConfigPanelsMap.set(componentName, component);
1264
1281
  } else if (isEditRuleValidator(type, component)) {
1265
1282
  editRuleValidatorsMap.set(componentName, component);
1283
+ } else if (isRowClassGenerator(type, component)) {
1284
+ console.log(`register ${componentName}`);
1285
+ rowClassGeneratorsMap.set(componentName, component);
1266
1286
  }
1267
1287
  if (options) {
1268
1288
  optionsMap.set(componentName, options);
@@ -1276,7 +1296,7 @@ var getRegisteredCellRenderers = (serverDataType) => {
1276
1296
  const allRenderers = rendererNames.map((name) => ({
1277
1297
  name,
1278
1298
  ...optionsMap.get(name)
1279
- }));
1299
+ })).filter(({ userCanAssign }) => userCanAssign !== false);
1280
1300
  if (serverDataType) {
1281
1301
  return allRenderers.filter(
1282
1302
  (renderer) => isTypeCompatible(renderer.serverDataType, serverDataType)
@@ -1299,6 +1319,7 @@ function getColumnHeaderLabelRenderer(column) {
1299
1319
  return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);
1300
1320
  }
1301
1321
  }
1322
+ var getRowClassNameGenerator = (generatorId) => rowClassGeneratorsMap.get(generatorId);
1302
1323
  function dataCellRenderer(column) {
1303
1324
  if (isTypeDescriptor(column.type)) {
1304
1325
  const { renderer } = column.type;
@@ -1387,7 +1408,7 @@ var WindowRange = class _WindowRange {
1387
1408
  };
1388
1409
 
1389
1410
  // src/DataWindow.ts
1390
- var { KEY } = metadataKeys;
1411
+ var { KEY: KEY2 } = metadataKeys;
1391
1412
  var DataWindow = class {
1392
1413
  constructor({ from, to }) {
1393
1414
  this.rowCount = 0;
@@ -1416,7 +1437,7 @@ var DataWindow = class {
1416
1437
  return this.range.isWithin(index) && this.data[index - this.range.from] != null ? this.data[index - this.range.from] : void 0;
1417
1438
  }
1418
1439
  getByKey(key) {
1419
- return this.data.find((row) => row[KEY] === key);
1440
+ return this.data.find((row) => row[KEY2] === key);
1420
1441
  }
1421
1442
  isWithinRange(index) {
1422
1443
  return this.range.isWithin(index) && index <= this.rowCount;
@@ -1544,7 +1565,7 @@ var exactlyTheSame = (a, b) => {
1544
1565
  return false;
1545
1566
  }
1546
1567
  };
1547
- var aggregationsChanged = (config, newConfig) => {
1568
+ var isAggregationsChanged = (config, newConfig) => {
1548
1569
  const { aggregations: agg1 } = config;
1549
1570
  const { aggregations: agg2 } = newConfig;
1550
1571
  if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {
@@ -1558,7 +1579,7 @@ var aggregationsChanged = (config, newConfig) => {
1558
1579
  ({ column, aggType }, i) => column !== agg2[i].column || aggType !== agg2[i].aggType
1559
1580
  );
1560
1581
  };
1561
- var columnsChanged = (config, newConfig) => {
1582
+ var isColumnsChanged = (config, newConfig) => {
1562
1583
  const { columns: cols1 } = config;
1563
1584
  const { columns: cols2 } = newConfig;
1564
1585
  if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {
@@ -1570,7 +1591,7 @@ var columnsChanged = (config, newConfig) => {
1570
1591
  }
1571
1592
  return cols1.some((column, i) => column !== (cols2 == null ? void 0 : cols2[i]));
1572
1593
  };
1573
- var filterChanged = (c1, c2) => {
1594
+ var isFilterChanged = (c1, c2) => {
1574
1595
  var _a, _b;
1575
1596
  if (equivalentFilter(c1, c2)) {
1576
1597
  return false;
@@ -1578,7 +1599,7 @@ var filterChanged = (c1, c2) => {
1578
1599
  return ((_a = c1.filter) == null ? void 0 : _a.filter) !== ((_b = c2.filter) == null ? void 0 : _b.filter);
1579
1600
  }
1580
1601
  };
1581
- var groupByChanged = (config, newConfig) => {
1602
+ var isGroupByChanged = (config, newConfig) => {
1582
1603
  const { groupBy: g1 } = config;
1583
1604
  const { groupBy: g2 } = newConfig;
1584
1605
  if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {
@@ -1590,7 +1611,7 @@ var groupByChanged = (config, newConfig) => {
1590
1611
  }
1591
1612
  return g1.some((column, i) => column !== (g2 == null ? void 0 : g2[i]));
1592
1613
  };
1593
- var sortChanged = (config, newConfig) => {
1614
+ var isSortChanged = (config, newConfig) => {
1594
1615
  const { sort: s1 } = config;
1595
1616
  const { sort: s2 } = newConfig;
1596
1617
  if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {
@@ -1604,17 +1625,45 @@ var sortChanged = (config, newConfig) => {
1604
1625
  ({ column, sortType }, i) => column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType
1605
1626
  );
1606
1627
  };
1607
- var visualLinkChanged = () => {
1628
+ var isVisualLinkChanged = () => {
1608
1629
  return false;
1609
1630
  };
1610
- var configChanged = (config, newConfig) => {
1631
+ var NO_CONFIG_CHANGES = {
1632
+ aggregationsChanged: false,
1633
+ columnsChanged: false,
1634
+ filterChanged: false,
1635
+ groupByChanged: false,
1636
+ noChanges: true,
1637
+ sortChanged: false,
1638
+ visualLinkChanged: false
1639
+ };
1640
+ var isConfigChanged = (config, newConfig) => {
1611
1641
  if (exactlyTheSame(config, newConfig)) {
1612
- return false;
1613
- }
1614
- if (config === void 0 || newConfig === void 0) {
1615
- return true;
1616
- }
1617
- return aggregationsChanged(config, newConfig) || columnsChanged(config, newConfig) || filterChanged(config, newConfig) || groupByChanged(config, newConfig) || sortChanged(config, newConfig) || visualLinkChanged(config, newConfig);
1642
+ return NO_CONFIG_CHANGES;
1643
+ }
1644
+ if (config === void 0 && newConfig == void 0) {
1645
+ return NO_CONFIG_CHANGES;
1646
+ } else if (config === void 0) {
1647
+ return isConfigChanged({}, newConfig);
1648
+ } else if (newConfig === void 0) {
1649
+ return isConfigChanged(config, {});
1650
+ }
1651
+ const aggregationsChanged = isAggregationsChanged(config, newConfig);
1652
+ const columnsChanged = isColumnsChanged(config, newConfig);
1653
+ const filterChanged = isFilterChanged(config, newConfig);
1654
+ const groupByChanged = isGroupByChanged(config, newConfig);
1655
+ const sortChanged = isSortChanged(config, newConfig);
1656
+ const visualLinkChanged = isVisualLinkChanged(config, newConfig);
1657
+ const noChanges = !(aggregationsChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
1658
+ return {
1659
+ aggregationsChanged,
1660
+ columnsChanged,
1661
+ filterChanged,
1662
+ groupByChanged,
1663
+ noChanges,
1664
+ sortChanged,
1665
+ visualLinkChanged
1666
+ };
1618
1667
  };
1619
1668
  var hasGroupBy = (config) => config !== void 0 && config.groupBy !== void 0 && config.groupBy.length > 0;
1620
1669
  var hasFilter = (config) => (config == null ? void 0 : config.filter) !== void 0 && config.filter.filter.length > 0;
@@ -2679,7 +2728,8 @@ var getElementDataIndex = (el) => {
2679
2728
  }
2680
2729
  return -1;
2681
2730
  };
2682
- var getClosest = (el, dataProperty) => el.closest(`[data-${dataProperty}]`);
2731
+ var queryClosest = (el, cssQueryString) => el.closest(cssQueryString);
2732
+ var getClosest = (el, dataProperty) => queryClosest(el, `[data-${dataProperty}]`);
2683
2733
  var getClosestIndexItem = (el) => getClosest(el, "index");
2684
2734
  function getElementByDataIndex(container, index, throwIfNotFound = false) {
2685
2735
  if (container === null && throwIfNotFound) {
@@ -3731,8 +3781,18 @@ ThemeProvider.displayName = "ThemeProvider";
3731
3781
 
3732
3782
  // src/url-utils.ts
3733
3783
  var getUrlParameter = (paramName, defaultValue) => {
3734
- var _a;
3735
- return (_a = new URL(document.location.href).searchParams.get(paramName)) != null ? _a : defaultValue;
3784
+ const url = new URL(document.location.href);
3785
+ const parameter = url.searchParams.get(paramName);
3786
+ if (parameter) {
3787
+ return parameter;
3788
+ }
3789
+ const hashParams = url.hash;
3790
+ const regex = new RegExp(`${paramName}=([a-zA-Z]*)`);
3791
+ const result = regex.exec(hashParams);
3792
+ if (result) {
3793
+ return result[1];
3794
+ }
3795
+ return defaultValue;
3736
3796
  };
3737
3797
  var hasUrlParameter = (paramName) => new URL(document.location.href).searchParams.has(paramName);
3738
3798