@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/esm/index.js CHANGED
@@ -220,6 +220,15 @@ var numericTypes = ["int", "long", "double"];
220
220
  var getDefaultAlignment = (serverDataType) => serverDataType === void 0 ? "left" : numericTypes.includes(serverDataType) ? "right" : "left";
221
221
  var isValidColumnAlignment = (v) => v === "left" || v === "right";
222
222
  var isValidPinLocation = (v) => isValidColumnAlignment(v) || v === "floating" || v === "";
223
+ var VUU_COLUMN_DATA_TYPES = [
224
+ "long",
225
+ "double",
226
+ "int",
227
+ "string",
228
+ "char",
229
+ "boolean"
230
+ ];
231
+ var isVuuColumnDataType = (value) => VUU_COLUMN_DATA_TYPES.includes(value);
223
232
  var fromServerDataType = (serverDataType) => {
224
233
  switch (serverDataType) {
225
234
  case "double":
@@ -284,6 +293,7 @@ function projectUpdates(updates) {
284
293
  }
285
294
  return results;
286
295
  }
296
+ var KEY = 6;
287
297
  var metadataKeys = {
288
298
  IDX: 0,
289
299
  RENDER_IDX: 1,
@@ -291,7 +301,7 @@ var metadataKeys = {
291
301
  IS_EXPANDED: 3,
292
302
  DEPTH: 4,
293
303
  COUNT: 5,
294
- KEY: 6,
304
+ KEY,
295
305
  SELECTED: 7,
296
306
  count: 8,
297
307
  // TODO following only used in datamodel
@@ -974,6 +984,7 @@ function applyWidthToColumns(columns, options) {
974
984
  return columns;
975
985
  }
976
986
  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]]);
987
+ 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]]);
977
988
 
978
989
  // src/cookie-utils.ts
979
990
  var getCookieValue = (name) => {
@@ -990,6 +1001,7 @@ var configEditorsMap = /* @__PURE__ */ new Map();
990
1001
  var cellConfigPanelsMap = /* @__PURE__ */ new Map();
991
1002
  var editRuleValidatorsMap = /* @__PURE__ */ new Map();
992
1003
  var optionsMap = /* @__PURE__ */ new Map();
1004
+ var rowClassGeneratorsMap = /* @__PURE__ */ new Map();
993
1005
  var isTypeCompatible = (rendererType, serverDataType) => {
994
1006
  if (rendererType === void 0 || rendererType === "private") {
995
1007
  return true;
@@ -999,11 +1011,12 @@ var isTypeCompatible = (rendererType, serverDataType) => {
999
1011
  return rendererType === serverDataType;
1000
1012
  }
1001
1013
  };
1002
- var isCellRenderer = (type, component) => type === "cell-renderer";
1014
+ var isCellRenderer = (type, component) => component !== void 0 && type === "cell-renderer";
1003
1015
  var isColumnHeaderContentRenderer = (type, component) => type === "column-header-content-renderer";
1004
1016
  var isColumnHeaderLabelRenderer = (type, component) => type === "column-header-label-renderer";
1005
1017
  var isCellConfigPanel = (type, component) => type === "cell-config-panel";
1006
1018
  var isEditRuleValidator = (type, component) => type === "data-edit-validator";
1019
+ var isRowClassGenerator = (type, component) => type === "row-class-generator";
1007
1020
  function registerComponent(componentName, component, type = "cell-renderer", options) {
1008
1021
  if (isCellRenderer(type, component)) {
1009
1022
  cellRenderersMap.set(componentName, component);
@@ -1015,6 +1028,9 @@ function registerComponent(componentName, component, type = "cell-renderer", opt
1015
1028
  cellConfigPanelsMap.set(componentName, component);
1016
1029
  } else if (isEditRuleValidator(type, component)) {
1017
1030
  editRuleValidatorsMap.set(componentName, component);
1031
+ } else if (isRowClassGenerator(type, component)) {
1032
+ console.log(`register ${componentName}`);
1033
+ rowClassGeneratorsMap.set(componentName, component);
1018
1034
  }
1019
1035
  if (options) {
1020
1036
  optionsMap.set(componentName, options);
@@ -1028,7 +1044,7 @@ var getRegisteredCellRenderers = (serverDataType) => {
1028
1044
  const allRenderers = rendererNames.map((name) => ({
1029
1045
  name,
1030
1046
  ...optionsMap.get(name)
1031
- }));
1047
+ })).filter(({ userCanAssign }) => userCanAssign !== false);
1032
1048
  if (serverDataType) {
1033
1049
  return allRenderers.filter(
1034
1050
  (renderer) => isTypeCompatible(renderer.serverDataType, serverDataType)
@@ -1051,6 +1067,7 @@ function getColumnHeaderLabelRenderer(column) {
1051
1067
  return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);
1052
1068
  }
1053
1069
  }
1070
+ var getRowClassNameGenerator = (generatorId) => rowClassGeneratorsMap.get(generatorId);
1054
1071
  function dataCellRenderer(column) {
1055
1072
  if (isTypeDescriptor(column.type)) {
1056
1073
  const { renderer } = column.type;
@@ -1139,7 +1156,7 @@ var WindowRange = class _WindowRange {
1139
1156
  };
1140
1157
 
1141
1158
  // src/DataWindow.ts
1142
- var { KEY } = metadataKeys;
1159
+ var { KEY: KEY2 } = metadataKeys;
1143
1160
  var DataWindow = class {
1144
1161
  constructor({ from, to }) {
1145
1162
  this.rowCount = 0;
@@ -1168,7 +1185,7 @@ var DataWindow = class {
1168
1185
  return this.range.isWithin(index) && this.data[index - this.range.from] != null ? this.data[index - this.range.from] : void 0;
1169
1186
  }
1170
1187
  getByKey(key) {
1171
- return this.data.find((row) => row[KEY] === key);
1188
+ return this.data.find((row) => row[KEY2] === key);
1172
1189
  }
1173
1190
  isWithinRange(index) {
1174
1191
  return this.range.isWithin(index) && index <= this.rowCount;
@@ -1296,7 +1313,7 @@ var exactlyTheSame = (a, b) => {
1296
1313
  return false;
1297
1314
  }
1298
1315
  };
1299
- var aggregationsChanged = (config, newConfig) => {
1316
+ var isAggregationsChanged = (config, newConfig) => {
1300
1317
  const { aggregations: agg1 } = config;
1301
1318
  const { aggregations: agg2 } = newConfig;
1302
1319
  if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {
@@ -1310,7 +1327,7 @@ var aggregationsChanged = (config, newConfig) => {
1310
1327
  ({ column, aggType }, i) => column !== agg2[i].column || aggType !== agg2[i].aggType
1311
1328
  );
1312
1329
  };
1313
- var columnsChanged = (config, newConfig) => {
1330
+ var isColumnsChanged = (config, newConfig) => {
1314
1331
  const { columns: cols1 } = config;
1315
1332
  const { columns: cols2 } = newConfig;
1316
1333
  if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {
@@ -1322,7 +1339,7 @@ var columnsChanged = (config, newConfig) => {
1322
1339
  }
1323
1340
  return cols1.some((column, i) => column !== (cols2 == null ? void 0 : cols2[i]));
1324
1341
  };
1325
- var filterChanged = (c1, c2) => {
1342
+ var isFilterChanged = (c1, c2) => {
1326
1343
  var _a, _b;
1327
1344
  if (equivalentFilter(c1, c2)) {
1328
1345
  return false;
@@ -1330,7 +1347,7 @@ var filterChanged = (c1, c2) => {
1330
1347
  return ((_a = c1.filter) == null ? void 0 : _a.filter) !== ((_b = c2.filter) == null ? void 0 : _b.filter);
1331
1348
  }
1332
1349
  };
1333
- var groupByChanged = (config, newConfig) => {
1350
+ var isGroupByChanged = (config, newConfig) => {
1334
1351
  const { groupBy: g1 } = config;
1335
1352
  const { groupBy: g2 } = newConfig;
1336
1353
  if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {
@@ -1342,7 +1359,7 @@ var groupByChanged = (config, newConfig) => {
1342
1359
  }
1343
1360
  return g1.some((column, i) => column !== (g2 == null ? void 0 : g2[i]));
1344
1361
  };
1345
- var sortChanged = (config, newConfig) => {
1362
+ var isSortChanged = (config, newConfig) => {
1346
1363
  const { sort: s1 } = config;
1347
1364
  const { sort: s2 } = newConfig;
1348
1365
  if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {
@@ -1356,17 +1373,45 @@ var sortChanged = (config, newConfig) => {
1356
1373
  ({ column, sortType }, i) => column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType
1357
1374
  );
1358
1375
  };
1359
- var visualLinkChanged = () => {
1376
+ var isVisualLinkChanged = () => {
1360
1377
  return false;
1361
1378
  };
1362
- var configChanged = (config, newConfig) => {
1379
+ var NO_CONFIG_CHANGES = {
1380
+ aggregationsChanged: false,
1381
+ columnsChanged: false,
1382
+ filterChanged: false,
1383
+ groupByChanged: false,
1384
+ noChanges: true,
1385
+ sortChanged: false,
1386
+ visualLinkChanged: false
1387
+ };
1388
+ var isConfigChanged = (config, newConfig) => {
1363
1389
  if (exactlyTheSame(config, newConfig)) {
1364
- return false;
1365
- }
1366
- if (config === void 0 || newConfig === void 0) {
1367
- return true;
1368
- }
1369
- return aggregationsChanged(config, newConfig) || columnsChanged(config, newConfig) || filterChanged(config, newConfig) || groupByChanged(config, newConfig) || sortChanged(config, newConfig) || visualLinkChanged(config, newConfig);
1390
+ return NO_CONFIG_CHANGES;
1391
+ }
1392
+ if (config === void 0 && newConfig == void 0) {
1393
+ return NO_CONFIG_CHANGES;
1394
+ } else if (config === void 0) {
1395
+ return isConfigChanged({}, newConfig);
1396
+ } else if (newConfig === void 0) {
1397
+ return isConfigChanged(config, {});
1398
+ }
1399
+ const aggregationsChanged = isAggregationsChanged(config, newConfig);
1400
+ const columnsChanged = isColumnsChanged(config, newConfig);
1401
+ const filterChanged = isFilterChanged(config, newConfig);
1402
+ const groupByChanged = isGroupByChanged(config, newConfig);
1403
+ const sortChanged = isSortChanged(config, newConfig);
1404
+ const visualLinkChanged = isVisualLinkChanged(config, newConfig);
1405
+ const noChanges = !(aggregationsChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
1406
+ return {
1407
+ aggregationsChanged,
1408
+ columnsChanged,
1409
+ filterChanged,
1410
+ groupByChanged,
1411
+ noChanges,
1412
+ sortChanged,
1413
+ visualLinkChanged
1414
+ };
1370
1415
  };
1371
1416
  var hasGroupBy = (config) => config !== void 0 && config.groupBy !== void 0 && config.groupBy.length > 0;
1372
1417
  var hasFilter = (config) => (config == null ? void 0 : config.filter) !== void 0 && config.filter.filter.length > 0;
@@ -2431,7 +2476,8 @@ var getElementDataIndex = (el) => {
2431
2476
  }
2432
2477
  return -1;
2433
2478
  };
2434
- var getClosest = (el, dataProperty) => el.closest(`[data-${dataProperty}]`);
2479
+ var queryClosest = (el, cssQueryString) => el.closest(cssQueryString);
2480
+ var getClosest = (el, dataProperty) => queryClosest(el, `[data-${dataProperty}]`);
2435
2481
  var getClosestIndexItem = (el) => getClosest(el, "index");
2436
2482
  function getElementByDataIndex(container, index, throwIfNotFound = false) {
2437
2483
  if (container === null && throwIfNotFound) {
@@ -3488,8 +3534,18 @@ ThemeProvider.displayName = "ThemeProvider";
3488
3534
 
3489
3535
  // src/url-utils.ts
3490
3536
  var getUrlParameter = (paramName, defaultValue) => {
3491
- var _a;
3492
- return (_a = new URL(document.location.href).searchParams.get(paramName)) != null ? _a : defaultValue;
3537
+ const url = new URL(document.location.href);
3538
+ const parameter = url.searchParams.get(paramName);
3539
+ if (parameter) {
3540
+ return parameter;
3541
+ }
3542
+ const hashParams = url.hash;
3543
+ const regex = new RegExp(`${paramName}=([a-zA-Z]*)`);
3544
+ const result = regex.exec(hashParams);
3545
+ if (result) {
3546
+ return result[1];
3547
+ }
3548
+ return defaultValue;
3493
3549
  };
3494
3550
  var hasUrlParameter = (paramName) => new URL(document.location.href).searchParams.has(paramName);
3495
3551
 
@@ -3529,6 +3585,7 @@ export {
3529
3585
  Home,
3530
3586
  KeySet,
3531
3587
  MEASURES,
3588
+ NO_CONFIG_CHANGES,
3532
3589
  NULL_RANGE,
3533
3590
  NoFilter,
3534
3591
  NoSort,
@@ -3557,10 +3614,9 @@ export {
3557
3614
  assertModuleExportsAtLeastOneComponent,
3558
3615
  boxContainsPoint,
3559
3616
  buildColumnMap,
3560
- columnsChanged,
3561
- configChanged,
3562
3617
  createEl,
3563
3618
  dataAndColumnUnchanged,
3619
+ dataColumnAndKeyUnchanged,
3564
3620
  dateTimePattern,
3565
3621
  debounce,
3566
3622
  defaultPatternsByType,
@@ -3573,7 +3629,6 @@ export {
3573
3629
  extractGroupColumn,
3574
3630
  fallbackDateTimePattern,
3575
3631
  filterAsQuery,
3576
- filterChanged,
3577
3632
  findColumn,
3578
3633
  flattenColumnGroup,
3579
3634
  focusFirstFocusableElement,
@@ -3612,6 +3667,7 @@ export {
3612
3667
  getMissingItems,
3613
3668
  getMovingValueDirection,
3614
3669
  getRegisteredCellRenderers,
3670
+ getRowClassNameGenerator,
3615
3671
  getRowElementAtIndex,
3616
3672
  getRowRecord,
3617
3673
  getScrollbarSize,
@@ -3621,7 +3677,6 @@ export {
3621
3677
  getUniqueId,
3622
3678
  getUrlParameter,
3623
3679
  getValueFormatter,
3624
- groupByChanged,
3625
3680
  hasAction,
3626
3681
  hasFilter,
3627
3682
  hasGroupBy,
@@ -3635,14 +3690,17 @@ export {
3635
3690
  isCharacterKey,
3636
3691
  isColumnTypeRenderer,
3637
3692
  isCompleteFilter,
3693
+ isConfigChanged,
3638
3694
  isConnectionQualityMetrics,
3639
3695
  isConnectionStatusMessage,
3640
3696
  isDataLoading,
3641
3697
  isDateTimeColumn,
3642
3698
  isDateTimePattern,
3643
3699
  isErrorResponse,
3700
+ isFilterChanged,
3644
3701
  isFilterClause,
3645
3702
  isFilteredColumn,
3703
+ isGroupByChanged,
3646
3704
  isGroupColumn,
3647
3705
  isGroupMenuItemDescriptor,
3648
3706
  isInFilter,
@@ -3681,6 +3739,7 @@ export {
3681
3739
  isVisualLinkCreatedAction,
3682
3740
  isVisualLinkRemovedAction,
3683
3741
  isVisualLinksAction,
3742
+ isVuuColumnDataType,
3684
3743
  isVuuFeatureAction,
3685
3744
  itemToString,
3686
3745
  itemsChanged,
@@ -3698,6 +3757,7 @@ export {
3698
3757
  numericFormatter,
3699
3758
  partition,
3700
3759
  projectUpdates,
3760
+ queryClosest,
3701
3761
  rangeNewItems,
3702
3762
  rangesAreSame,
3703
3763
  registerComponent,