@revolist/revogrid 4.22.1 → 4.23.1

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.
Files changed (125) hide show
  1. package/dist/cjs/{cell-renderer-BQdEGQXP.js → cell-renderer-Dcz022q7.js} +9 -3
  2. package/dist/cjs/{column.drag.plugin-RDjQhKCH.js → column.drag.plugin-DJueWxN_.js} +391 -256
  3. package/dist/cjs/{column.service-DXYMehqK.js → column.service-C1Qvcf5l.js} +10 -1
  4. package/dist/cjs/{dimension.helpers-CiiNnlLa.js → dimension.helpers-B9HgANnM.js} +14 -145
  5. package/dist/cjs/{edit.utils-CecCfA4E.js → edit.utils-pKeiYFLJ.js} +1 -1
  6. package/dist/cjs/{header-cell-renderer-DGyBrK8I.js → header-cell-renderer-QrcXXSkF.js} +1 -1
  7. package/dist/cjs/index-DxaSE5uZ.js +136 -0
  8. package/dist/cjs/index.cjs.js +37 -32
  9. package/dist/cjs/revo-grid.cjs.entry.js +124 -18
  10. package/dist/cjs/revogr-attribution_7.cjs.entry.js +43 -25
  11. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +10 -8
  12. package/dist/cjs/revogr-data_4.cjs.entry.js +74 -32
  13. package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -1
  14. package/dist/cjs/{text-editor-DnLZW1a-.js → text-editor-B4W-m-r-.js} +3 -3
  15. package/dist/cjs/{throttle-CfgQFkfR.js → throttle-BCwEuJJq.js} +59 -24
  16. package/dist/cjs/viewport.helpers-BND76K2j.js +140 -0
  17. package/dist/cjs/{viewport.store-q6YdR9mg.js → viewport.store-BlKQ4x9H.js} +16 -16
  18. package/dist/collection/components/data/revogr-data.js +5 -3
  19. package/dist/collection/components/header/header-group-renderer.js +1 -1
  20. package/dist/collection/components/header/header-renderer.js +1 -1
  21. package/dist/collection/components/header/revogr-header-style.css +13 -3
  22. package/dist/collection/components/header/revogr-header.js +53 -17
  23. package/dist/collection/components/order/order-row.service.js +6 -5
  24. package/dist/collection/components/overlay/keyboard.service.js +23 -1
  25. package/dist/collection/components/overlay/selection.utils.js +8 -6
  26. package/dist/collection/components/revoGrid/revo-grid.js +69 -5
  27. package/dist/collection/components/revoGrid/viewport.service.js +2 -1
  28. package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
  29. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +4 -10
  30. package/dist/collection/plugins/filter/filter.panel.js +2 -1
  31. package/dist/collection/plugins/filter/filter.plugin.js +11 -4
  32. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +25 -1
  33. package/dist/collection/plugins/groupingRow/grouping.service.js +9 -0
  34. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +4 -4
  35. package/dist/collection/plugins/sorting/sorting.func.js +173 -15
  36. package/dist/collection/plugins/sorting/sorting.plugin.js +167 -84
  37. package/dist/collection/plugins/sorting/sorting.sign.js +7 -1
  38. package/dist/collection/serve/controller.js +98 -37
  39. package/dist/collection/serve/data.js +273 -144
  40. package/dist/collection/services/dimension.provider.js +16 -1
  41. package/dist/collection/services/local.scroll.service.js +59 -24
  42. package/dist/collection/services/scroll.dimension.helpers.js +83 -0
  43. package/dist/collection/services/selection.store.connector.js +30 -4
  44. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +22 -9
  45. package/dist/collection/store/dimension/dimension.store.js +4 -2
  46. package/dist/collection/store/vp/viewport.helpers.js +9 -0
  47. package/dist/collection/store/vp/viewport.store.js +5 -16
  48. package/dist/collection/utils/store.utils.js +3 -3
  49. package/dist/{revo-grid/cell-renderer-CALsEsnh.js → esm/cell-renderer-BtN-NGCk.js} +9 -3
  50. package/dist/esm/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-DCZW62Uc.js} +388 -255
  51. package/dist/esm/{column.service-CCvAi5l4.js → column.service-CC_SD8W3.js} +10 -1
  52. package/dist/{revo-grid/debounce-BfO9dz9v.js → esm/debounce-PCRWZliA.js} +1 -1
  53. package/dist/{revo-grid/dimension.helpers-DmIvjIa7.js → esm/dimension.helpers-CGKwSvw6.js} +7 -128
  54. package/dist/esm/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
  55. package/dist/{revo-grid/header-cell-renderer-DU8wKAbg.js → esm/header-cell-renderer-BsvUQ8GS.js} +1 -1
  56. package/dist/esm/index-Db3qZoW5.js +127 -0
  57. package/dist/esm/index.js +11 -10
  58. package/dist/esm/revo-grid.entry.js +123 -17
  59. package/dist/esm/revogr-attribution_7.entry.js +42 -24
  60. package/dist/esm/revogr-clipboard_3.entry.js +11 -9
  61. package/dist/esm/revogr-data_4.entry.js +75 -33
  62. package/dist/esm/revogr-filter-panel.entry.js +3 -2
  63. package/dist/esm/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
  64. package/dist/esm/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
  65. package/dist/esm/viewport.helpers-CoCAvmZs.js +133 -0
  66. package/dist/{revo-grid/viewport.store-CFjDW-3l.js → esm/viewport.store-COAfzAyu.js} +15 -17
  67. package/dist/{esm/cell-renderer-CALsEsnh.js → revo-grid/cell-renderer-BtN-NGCk.js} +9 -3
  68. package/dist/revo-grid/{column.drag.plugin-Dy5ztusn.js → column.drag.plugin-DCZW62Uc.js} +388 -255
  69. package/dist/revo-grid/{column.service-CCvAi5l4.js → column.service-CC_SD8W3.js} +10 -1
  70. package/dist/{esm/debounce-BfO9dz9v.js → revo-grid/debounce-PCRWZliA.js} +1 -1
  71. package/dist/{esm/dimension.helpers-DmIvjIa7.js → revo-grid/dimension.helpers-CGKwSvw6.js} +7 -128
  72. package/dist/revo-grid/{edit.utils-DYN6XZh8.js → edit.utils-Dnnbd0xG.js} +1 -1
  73. package/dist/{esm/header-cell-renderer-DU8wKAbg.js → revo-grid/header-cell-renderer-BsvUQ8GS.js} +1 -1
  74. package/dist/revo-grid/index-Db3qZoW5.js +127 -0
  75. package/dist/revo-grid/index.esm.js +11 -10
  76. package/dist/revo-grid/revo-grid.entry.js +123 -17
  77. package/dist/revo-grid/revogr-attribution_7.entry.js +42 -24
  78. package/dist/revo-grid/revogr-clipboard_3.entry.js +11 -9
  79. package/dist/revo-grid/revogr-data_4.entry.js +75 -33
  80. package/dist/revo-grid/revogr-filter-panel.entry.js +3 -2
  81. package/dist/revo-grid/{text-editor-DpCnd6Fq.js → text-editor-C3RUSwH5.js} +2 -2
  82. package/dist/revo-grid/{throttle-ERvyruXb.js → throttle-CaUDyxyU.js} +60 -25
  83. package/dist/revo-grid/viewport.helpers-CoCAvmZs.js +133 -0
  84. package/dist/{esm/viewport.store-CFjDW-3l.js → revo-grid/viewport.store-COAfzAyu.js} +15 -17
  85. package/dist/types/components/header/header-group-renderer.d.ts +2 -0
  86. package/dist/types/components/header/header-renderer.d.ts +1 -0
  87. package/dist/types/components/header/revogr-header.d.ts +2 -0
  88. package/dist/types/components/overlay/keyboard.service.d.ts +5 -0
  89. package/dist/types/components/revoGrid/revo-grid.d.ts +12 -0
  90. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +8 -0
  91. package/dist/types/plugins/sorting/sorting.func.d.ts +25 -2
  92. package/dist/types/plugins/sorting/sorting.plugin.d.ts +84 -9
  93. package/dist/types/plugins/sorting/sorting.sign.d.ts +5 -1
  94. package/dist/types/plugins/sorting/sorting.types.d.ts +46 -1
  95. package/dist/types/services/local.scroll.service.d.ts +10 -2
  96. package/dist/types/services/scroll.dimension.helpers.d.ts +20 -0
  97. package/dist/types/services/selection.store.connector.d.ts +6 -0
  98. package/dist/types/store/vp/viewport.helpers.d.ts +2 -0
  99. package/dist/types/types/interfaces.d.ts +11 -0
  100. package/dist/types/types/selection.d.ts +13 -0
  101. package/hydrate/index.js +795 -383
  102. package/hydrate/index.mjs +795 -383
  103. package/package.json +1 -1
  104. package/standalone/column.service.js +1 -1
  105. package/standalone/data.store.js +1 -1
  106. package/standalone/debounce.js +1 -1
  107. package/standalone/dimension.helpers.js +1 -1
  108. package/standalone/index.js +1 -1
  109. package/standalone/local.scroll.timer.js +1 -1
  110. package/standalone/revo-grid.js +1 -1
  111. package/standalone/revogr-data2.js +1 -1
  112. package/standalone/revogr-filter-panel.js +1 -1
  113. package/standalone/revogr-header2.js +1 -1
  114. package/standalone/revogr-order-editor2.js +1 -1
  115. package/standalone/revogr-overlay-selection2.js +1 -1
  116. package/standalone/revogr-row-headers.js +1 -1
  117. package/standalone/revogr-row-headers2.js +1 -1
  118. package/standalone/revogr-scroll-virtual2.js +1 -1
  119. package/standalone/revogr-viewport-scroll2.js +1 -1
  120. package/standalone/selection.utils.js +1 -1
  121. package/standalone/throttle.js +1 -1
  122. package/standalone/toNumber.js +1 -1
  123. package/dist/cjs/viewport.helpers-BAovztDd.js +0 -58
  124. package/dist/esm/viewport.helpers-VXhsJZtn.js +0 -52
  125. package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +0 -52
@@ -4,16 +4,17 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var column_service = require('./column.service-DXYMehqK.js');
8
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
7
+ var column_service = require('./column.service-C1Qvcf5l.js');
8
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
9
9
  var debounce = require('./debounce-CcpHiH2p.js');
10
- var column_drag_plugin = require('./column.drag.plugin-RDjQhKCH.js');
11
- var viewport_store = require('./viewport.store-q6YdR9mg.js');
10
+ var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
11
+ var viewport_store = require('./viewport.store-BlKQ4x9H.js');
12
+ var column_drag_plugin = require('./column.drag.plugin-DJueWxN_.js');
12
13
  var theme_service = require('./theme.service-BgnxGIjK.js');
13
- var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
14
+ var index$1 = require('./index-DxaSE5uZ.js');
14
15
  var events = require('./events-DeLDyZlb.js');
15
16
  require('./filter.button-w6LWnyhi.js');
16
- require('./header-cell-renderer-DGyBrK8I.js');
17
+ require('./header-cell-renderer-QrcXXSkF.js');
17
18
 
18
19
  class ColumnDataProvider {
19
20
  get stores() {
@@ -365,6 +366,20 @@ class DimensionProvider {
365
366
  }
366
367
  setViewPortCoordinate({ type, coordinate = this.viewports.stores[type].lastCoordinate, force = false, }) {
367
368
  const dimension = this.stores[type].getCurrentState();
369
+ const viewport = this.viewports.stores[type].store;
370
+ const clientSize = viewport.get('clientSize');
371
+ const viewportSize = viewport.get('virtualSize');
372
+ const scrollDimension = viewport_helpers.getScrollDimension({
373
+ contentSize: dimension.realSize,
374
+ clientSize,
375
+ virtualSize: viewportSize,
376
+ });
377
+ const renderCoordinate = viewport_store.clampViewportCoordinate(coordinate, dimension, viewportSize);
378
+ const renderOffset = clientSize && viewportSize
379
+ ? scrollDimension.getRenderOffset(renderCoordinate)
380
+ : 0;
381
+ this.stores[type].setStore({ renderOffset });
382
+ this.viewports.stores[type].setViewport({ renderOffset });
368
383
  this.viewports.stores[type].setViewPortCoordinate(coordinate, dimension, force);
369
384
  }
370
385
  getViewPortPos(e) {
@@ -513,7 +528,8 @@ class ViewportService {
513
528
  (_a = this.config.dimensionProvider) === null || _a === void 0 ? void 0 : _a.setCustomSizes(type, detail, true);
514
529
  // set resize event
515
530
  const changedItems = {};
516
- for (const [i, size] of Object.entries(detail || {})) {
531
+ for (const i of Object.keys(detail || {})) {
532
+ const size = detail[i];
517
533
  const virtualIndex = parseInt(i, 10);
518
534
  const item = dimension_helpers.getSourceItem(store, virtualIndex);
519
535
  if (item) {
@@ -768,13 +784,11 @@ class SelectionStoreConnector {
768
784
  return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
769
785
  }
770
786
  registerColumn(x, type) {
787
+ this.updateColumnTypeMapping(x, type);
771
788
  if (this.columnStores[x]) {
772
789
  return this.columnStores[x];
773
790
  }
774
791
  this.columnStores[x] = new column_drag_plugin.SelectionStore();
775
- // build cross-linking type to position
776
- this.storesByType[type] = x;
777
- this.storesXToType[x] = type;
778
792
  return this.columnStores[x];
779
793
  }
780
794
  registerRow(y, type) {
@@ -916,7 +930,10 @@ class SelectionStoreConnector {
916
930
  const nextItem = column_service.nextCell(focus, lastCell);
917
931
  let nextStore;
918
932
  if (nextItem) {
919
- Object.entries(nextItem).forEach(([type, nextItemCoord]) => {
933
+ Object.keys(nextItem).forEach((t) => {
934
+ var _a;
935
+ const type = t;
936
+ const nextItemCoord = (_a = nextItem[type]) !== null && _a !== void 0 ? _a : 0;
920
937
  let stores;
921
938
  switch (type) {
922
939
  case 'x':
@@ -992,6 +1009,31 @@ class SelectionStoreConnector {
992
1009
  }
993
1010
  return stores;
994
1011
  }
1012
+ /**
1013
+ * Keep column viewport positions and types in sync across pin/unpin rerenders.
1014
+ * Regression case: when a selected rgCol cell was pinned left, colPinStart
1015
+ * could take over x=0 and render the stale rgCol focus store in the pinned area.
1016
+ */
1017
+ updateColumnTypeMapping(x, type) {
1018
+ const previousType = this.storesXToType[x];
1019
+ const previousX = this.storesByType[type];
1020
+ let shouldClearFocus = false;
1021
+ this.storesByType[type] = x;
1022
+ this.storesXToType[x] = type;
1023
+ if (previousType && previousType !== type) {
1024
+ shouldClearFocus = true;
1025
+ if (this.storesByType[previousType] === x) {
1026
+ delete this.storesByType[previousType];
1027
+ }
1028
+ }
1029
+ if (typeof previousX === 'number' && previousX !== x && this.storesXToType[previousX] === type) {
1030
+ delete this.storesXToType[previousX];
1031
+ shouldClearFocus = true;
1032
+ }
1033
+ if (shouldClearFocus) {
1034
+ this.clearAll();
1035
+ }
1036
+ }
995
1037
  }
996
1038
 
997
1039
  /**
@@ -1663,7 +1705,7 @@ const RevoGridComponent = class {
1663
1705
  if (!rgCol) {
1664
1706
  return;
1665
1707
  }
1666
- await dimension_helpers.timeout();
1708
+ await index$1.timeout();
1667
1709
  const colGroup = rgCol.pin || 'rgCol';
1668
1710
  if (!this.columnProvider) {
1669
1711
  throw new Error('Not connected');
@@ -1875,7 +1917,7 @@ const RevoGridComponent = class {
1875
1917
  async onCellEdit(e) {
1876
1918
  var _a;
1877
1919
  const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);
1878
- await dimension_helpers.timeout();
1920
+ await index$1.timeout();
1879
1921
  // apply data
1880
1922
  if (!defaultPrevented) {
1881
1923
  (_a = this.dataProvider) === null || _a === void 0 ? void 0 : _a.setCellData(detail);
@@ -1941,6 +1983,7 @@ const RevoGridComponent = class {
1941
1983
  if (!this.dimensionProvider || !this.columnProvider) {
1942
1984
  return;
1943
1985
  }
1986
+ const focusToRestore = init ? undefined : this.getColumnFocusRestore();
1944
1987
  const beforeGatherEvent = this.beforecolumnsgather.emit({
1945
1988
  columns: [...newVal],
1946
1989
  });
@@ -1958,14 +2001,76 @@ const RevoGridComponent = class {
1958
2001
  return;
1959
2002
  }
1960
2003
  const columns = this.columnProvider.setColumns(beforeApplyEvent.detail);
2004
+ if (focusToRestore) {
2005
+ this.pendingColumnFocusRestore = focusToRestore;
2006
+ }
2007
+ const order = {};
2008
+ for (const prop of Object.keys(beforeApplyEvent.detail.sort)) {
2009
+ order[prop] = beforeApplyEvent.detail.sort[prop].order;
2010
+ }
1961
2011
  this.aftercolumnsset.emit({
1962
2012
  columns,
1963
- order: Object.entries(beforeApplyEvent.detail.sort).reduce((acc, [prop, column]) => {
1964
- acc[prop] = column.order;
1965
- return acc;
1966
- }, {}),
2013
+ order,
1967
2014
  });
1968
2015
  }
2016
+ /**
2017
+ * Capture logical focus before columns are repartitioned by pin state.
2018
+ * Regression case: selecting a regular cell, then pinning that column left,
2019
+ * used to let the new pinned viewport reuse the old rgCol selection store.
2020
+ */
2021
+ getColumnFocusRestore() {
2022
+ var _a, _b, _c, _d;
2023
+ const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
2024
+ const prevStoreX = (_c = (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.focusedStore) === null || _c === void 0 ? void 0 : _c.position.x;
2025
+ const prop = (_d = focused === null || focused === void 0 ? void 0 : focused.column) === null || _d === void 0 ? void 0 : _d.prop;
2026
+ if (!focused || prop === undefined || prevStoreX === undefined) {
2027
+ return;
2028
+ }
2029
+ return {
2030
+ prop,
2031
+ colType: focused.colType,
2032
+ colIndex: focused.cell.x,
2033
+ prevStoreX,
2034
+ rowType: focused.rowType,
2035
+ rowIndex: focused.cell.y,
2036
+ };
2037
+ }
2038
+ /**
2039
+ * Reapply focus by column prop after render, once pinning has moved the
2040
+ * column to its new viewport and virtual index.
2041
+ */
2042
+ restoreColumnFocusAfterRender() {
2043
+ var _a, _b, _c, _d;
2044
+ const pending = this.pendingColumnFocusRestore;
2045
+ if (!pending) {
2046
+ return;
2047
+ }
2048
+ this.pendingColumnFocusRestore = undefined;
2049
+ if (!this.viewport || !this.columnProvider) {
2050
+ return;
2051
+ }
2052
+ const column = (_b = (_a = this.columnProvider.getColumnByProp(pending.prop)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : column_service.getColumnByProp(this.columns, pending.prop);
2053
+ if (!column) {
2054
+ return;
2055
+ }
2056
+ const colType = column.pin || 'rgCol';
2057
+ const columnIndex = this.columnProvider.getColumnIndexByProp(pending.prop, colType);
2058
+ if (columnIndex < 0) {
2059
+ return;
2060
+ }
2061
+ // Header-only column refreshes should not collapse an existing range.
2062
+ // Replay focus only when pin/unpin or repartitioning moved the logical column.
2063
+ if (colType === pending.colType &&
2064
+ columnIndex === pending.colIndex &&
2065
+ pending.prevStoreX === ((_d = (_c = this.selectionStoreConnector) === null || _c === void 0 ? void 0 : _c.focusedStore) === null || _d === void 0 ? void 0 : _d.position.x)) {
2066
+ return;
2067
+ }
2068
+ const cell = {
2069
+ x: columnIndex,
2070
+ y: pending.rowIndex,
2071
+ };
2072
+ this.viewport.setFocus(colType, pending.rowType, cell, cell);
2073
+ }
1969
2074
  disableVirtualXChanged(newVal = false, prevVal = false) {
1970
2075
  if (newVal === prevVal) {
1971
2076
  return;
@@ -2252,7 +2357,7 @@ const RevoGridComponent = class {
2252
2357
  if (Object.keys((_a = this.trimmedRows) !== null && _a !== void 0 ? _a : {}).length > 0) {
2253
2358
  this.trimmedRowsChanged(this.trimmedRows);
2254
2359
  }
2255
- this.rowDefChanged(this.rowDefinitions);
2360
+ this.rowDefChanged(this.rowDefinitions, undefined, undefined, false);
2256
2361
  // init grouping
2257
2362
  if (this.grouping && Object.keys(this.grouping).length > 0) {
2258
2363
  this.groupingChanged(this.grouping);
@@ -2278,6 +2383,7 @@ const RevoGridComponent = class {
2278
2383
  return Promise.all(this.jobsBeforeRender);
2279
2384
  }
2280
2385
  componentDidRender() {
2386
+ this.restoreColumnFocusAfterRender();
2281
2387
  this.aftergridrender.emit();
2282
2388
  }
2283
2389
  render() {
@@ -4,14 +4,15 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
7
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
8
8
  var events = require('./events-DeLDyZlb.js');
9
- var column_service = require('./column.service-DXYMehqK.js');
10
- var edit_utils = require('./edit.utils-CecCfA4E.js');
9
+ var column_service = require('./column.service-C1Qvcf5l.js');
10
+ var edit_utils = require('./edit.utils-pKeiYFLJ.js');
11
+ var index$1 = require('./index-DxaSE5uZ.js');
11
12
  var debounce = require('./debounce-CcpHiH2p.js');
12
- var viewport_store = require('./viewport.store-q6YdR9mg.js');
13
- var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
14
- var throttle = require('./throttle-CfgQFkfR.js');
13
+ var viewport_store = require('./viewport.store-BlKQ4x9H.js');
14
+ var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
15
+ var throttle = require('./throttle-BCwEuJJq.js');
15
16
 
16
17
  const Attribution = class {
17
18
  constructor(hostRef) {
@@ -109,8 +110,8 @@ function getCurrentCell({ x, y }, { el, rows, cols }) {
109
110
  cellX = width - 1;
110
111
  }
111
112
  // Get the row and column items based on the cell position
112
- const rgRow = dimension_helpers.getItemByPosition(rows, cellY);
113
- const rgCol = dimension_helpers.getItemByPosition(cols, cellX);
113
+ const rgRow = dimension_helpers.getItemByPosition(rows, cellY + (rows.renderOffset || 0));
114
+ const rgCol = dimension_helpers.getItemByPosition(cols, cellX + (cols.renderOffset || 0));
114
115
  // Set the row and column index to 0 if they are before the first item
115
116
  if (rgCol.itemIndex < 0) {
116
117
  rgCol.itemIndex = 0;
@@ -180,10 +181,12 @@ function styleByCellProps(styles) {
180
181
  };
181
182
  }
182
183
  function getCell({ x, y, x1, y1 }, dimensionRow, dimensionCol) {
183
- const top = dimension_helpers.getItemByIndex(dimensionRow, y).start;
184
- const left = dimension_helpers.getItemByIndex(dimensionCol, x).start;
185
- const bottom = dimension_helpers.getItemByIndex(dimensionRow, y1).end;
186
- const right = dimension_helpers.getItemByIndex(dimensionCol, x1).end;
184
+ const rowOffset = dimensionRow.renderOffset || 0;
185
+ const colOffset = dimensionCol.renderOffset || 0;
186
+ const top = dimension_helpers.getItemByIndex(dimensionRow, y).start - rowOffset;
187
+ const left = dimension_helpers.getItemByIndex(dimensionCol, x).start - colOffset;
188
+ const bottom = dimension_helpers.getItemByIndex(dimensionRow, y1).end - rowOffset;
189
+ const right = dimension_helpers.getItemByIndex(dimensionCol, x1).end - colOffset;
187
190
  return {
188
191
  left,
189
192
  right,
@@ -281,9 +284,29 @@ class KeyboardService {
281
284
  constructor(sv) {
282
285
  this.sv = sv;
283
286
  }
287
+ /**
288
+ * Appends printable key input that arrives after edit mode was requested
289
+ * but before the editor input has mounted or received focus.
290
+ */
291
+ appendPendingEditValue(e) {
292
+ if (edit_utils.isShortcutModifier(e) ||
293
+ e.key.length !== 1 ||
294
+ (e.target instanceof HTMLElement && edit_utils.isEditInput(e.target))) {
295
+ return false;
296
+ }
297
+ const editCell = this.sv.selectionStore.get('edit');
298
+ if (typeof (editCell === null || editCell === void 0 ? void 0 : editCell.val) !== 'string') {
299
+ return false;
300
+ }
301
+ this.sv.selectionStore.set('edit', Object.assign(Object.assign({}, editCell), { val: `${editCell.val}${e.key}` }));
302
+ return true;
303
+ }
284
304
  async keyDown(e, canRange, isEditMode, { range, focus }) {
285
305
  // IF EDIT MODE
286
306
  if (isEditMode) {
307
+ if (this.appendPendingEditValue(e)) {
308
+ return;
309
+ }
287
310
  switch (e.code) {
288
311
  case dimension_helpers.codesLetter.ESCAPE:
289
312
  this.sv.cancel();
@@ -362,7 +385,7 @@ class KeyboardService {
362
385
  // this interval needed for several cases
363
386
  // grid could be resized before next click
364
387
  // at this case to avoid screen jump we use this interval
365
- await dimension_helpers.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
388
+ await index$1.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
366
389
  const range = this.sv.selectionStore.get('range');
367
390
  const focus = this.sv.selectionStore.get('focus');
368
391
  return this.keyPositionChange(data.changes, range, focus, data.isMulti);
@@ -377,7 +400,8 @@ class KeyboardService {
377
400
  }
378
401
  const eData = this.sv.getData();
379
402
  if (isMulti) {
380
- if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {
403
+ const isOutOfBounds = [data.start, data.end].some(cell => isAfterLast(cell, eData.lastCell) || isBeforeFirst(cell));
404
+ if (isOutOfBounds) {
381
405
  return false;
382
406
  }
383
407
  const range = column_service.getRange(data.start, data.end);
@@ -1288,15 +1312,9 @@ const RevogrScrollVirtual = class {
1288
1312
  */
1289
1313
  async changeScroll(e) {
1290
1314
  if (e.delta) {
1291
- switch (e.dimension) {
1292
- case 'rgCol':
1293
- e.coordinate = this.element.scrollLeft + e.delta;
1294
- break;
1295
- case 'rgRow':
1296
- e.coordinate = this.element.scrollTop + e.delta;
1297
- break;
1298
- }
1299
- this.setScroll(e);
1315
+ const scrollProperty = e.dimension === 'rgRow' ? 'scrollTop' : 'scrollLeft';
1316
+ const currentPhysicalCoordinate = this.element[scrollProperty];
1317
+ return this.localScrollService.setScrollByDelta(e, currentPhysicalCoordinate);
1300
1318
  }
1301
1319
  return e;
1302
1320
  }
@@ -1317,7 +1335,7 @@ const RevogrScrollVirtual = class {
1317
1335
  this.autohideScrollPlugin.clear();
1318
1336
  }
1319
1337
  componentWillLoad() {
1320
- this.scrollSize = dimension_helpers.getScrollbarSize(document);
1338
+ this.scrollSize = index$1.getScrollbarSize(document);
1321
1339
  }
1322
1340
  componentDidRender() {
1323
1341
  let scrollSize = 0;
@@ -1359,7 +1377,7 @@ const RevogrScrollVirtual = class {
1359
1377
  }
1360
1378
  render() {
1361
1379
  const size = throttle.getContentSize(this.realSize, this.dimension === 'rgRow' ? this.element.clientHeight : this.element.clientWidth, this.clientSize);
1362
- return (index.h(index.Host, { key: '57f81ec9deb2395e96b283338c03b9ad44f1e929', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '1a8c869adab53b362c351dae8d53664f33c4212c', style: {
1380
+ return (index.h(index.Host, { key: '7213817ef941eee4050b714266598ec0c2961ee9', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '501da49c63253ab943172494b9dbf5399be56cee', style: {
1363
1381
  [this.dimension === 'rgRow' ? 'height' : 'width']: `${size}px`,
1364
1382
  } })));
1365
1383
  }
@@ -4,10 +4,11 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
8
- var textEditor = require('./text-editor-DnLZW1a-.js');
9
- var edit_utils = require('./edit.utils-CecCfA4E.js');
7
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
8
+ var textEditor = require('./text-editor-B4W-m-r-.js');
9
+ var edit_utils = require('./edit.utils-pKeiYFLJ.js');
10
10
  var debounce = require('./debounce-CcpHiH2p.js');
11
+ require('./index-DxaSE5uZ.js');
11
12
 
12
13
  const Clipboard = class {
13
14
  constructor(hostRef) {
@@ -334,11 +335,12 @@ class RowOrderService {
334
335
  getRow(y, { el, rows }) {
335
336
  const { top } = el.getBoundingClientRect();
336
337
  const topRelative = y - top;
337
- const rgRow = dimension_helpers.getItemByPosition(rows, topRelative);
338
+ const rowOffset = rows.renderOffset || 0;
339
+ const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + rowOffset);
338
340
  const absolutePosition = {
339
341
  itemIndex: rgRow.itemIndex,
340
- start: rgRow.start + top,
341
- end: rgRow.end + top,
342
+ start: rgRow.start - rowOffset + top,
343
+ end: rgRow.end - rowOffset + top,
342
344
  };
343
345
  return absolutePosition;
344
346
  }
@@ -347,8 +349,8 @@ class RowOrderService {
347
349
  const { top, left } = el.getBoundingClientRect();
348
350
  const topRelative = y - top;
349
351
  const leftRelative = x - left;
350
- const rgRow = dimension_helpers.getItemByPosition(rows, topRelative);
351
- const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative);
352
+ const rgRow = dimension_helpers.getItemByPosition(rows, topRelative + (rows.renderOffset || 0));
353
+ const rgCol = dimension_helpers.getItemByPosition(cols, leftRelative + (cols.renderOffset || 0));
352
354
  return { x: rgCol.itemIndex, y: rgRow.itemIndex };
353
355
  }
354
356
  }
@@ -4,13 +4,13 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-Dq8Xzj5l.js');
7
- var column_service = require('./column.service-DXYMehqK.js');
8
- var dimension_helpers = require('./dimension.helpers-CiiNnlLa.js');
9
- var cellRenderer = require('./cell-renderer-BQdEGQXP.js');
7
+ var column_service = require('./column.service-C1Qvcf5l.js');
8
+ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
9
+ var cellRenderer = require('./cell-renderer-Dcz022q7.js');
10
10
  var filter_button = require('./filter.button-w6LWnyhi.js');
11
- var headerCellRenderer = require('./header-cell-renderer-DGyBrK8I.js');
12
- var throttle = require('./throttle-CfgQFkfR.js');
13
- var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
11
+ var headerCellRenderer = require('./header-cell-renderer-QrcXXSkF.js');
12
+ var throttle = require('./throttle-BCwEuJJq.js');
13
+ var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
14
14
  require('./debounce-CcpHiH2p.js');
15
15
 
16
16
  /**
@@ -170,11 +170,13 @@ const RevogrData = class {
170
170
  const depth = this.dataStore.get('groupingDepth');
171
171
  const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');
172
172
  const groupDepth = this.columnService.hasGrouping ? depth : 0;
173
+ const rowRenderOffset = this.viewportRow.get('renderOffset') || 0;
174
+ const colRenderOffset = this.viewportCol.get('renderOffset') || 0;
173
175
  for (let rgRow of rows) {
174
176
  const dataItem = dimension_helpers.getSourceItem(this.dataStore, rgRow.itemIndex);
175
177
  // #region Grouping
176
178
  if (column_service.isGrouping(dataItem)) {
177
- const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
179
+ const gmodel = Object.assign(Object.assign({}, rgRow), { start: rgRow.start - rowRenderOffset, index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer,
178
180
  // Only show expand button if grouping is enabled and not in row headers
179
181
  hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders', columnItems: cols, providers: this.providers });
180
182
  rowsEls.push(index.h(cellRenderer.GroupingRowRenderer, Object.assign({}, gmodel)));
@@ -197,7 +199,7 @@ const RevogrData = class {
197
199
  [dimension_helpers.DATA_ROW]: rowProps.itemIndex,
198
200
  style: {
199
201
  width: `${columnProps.size}px`,
200
- transform: `translateX(${columnProps.start}px)`,
202
+ transform: `translateX(${columnProps.start - colRenderOffset}px)`,
201
203
  height: rowProps.size ? `${rowProps.size}px` : undefined,
202
204
  },
203
205
  };
@@ -225,7 +227,7 @@ const RevogrData = class {
225
227
  if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {
226
228
  rowClass += ` ${dimension_helpers.ROW_FOCUSED_CLASS}`;
227
229
  }
228
- const row = (index.h(cellRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start, groupingLevel: groupDepth || undefined }, cells));
230
+ const row = (index.h(cellRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start - rowRenderOffset, groupingLevel: groupDepth || undefined }, cells));
229
231
  this.beforerowrender.emit({
230
232
  node: row,
231
233
  item: rgRow,
@@ -280,7 +282,7 @@ const HeaderRenderer = (p) => {
280
282
  class: cellClass,
281
283
  style: {
282
284
  width: `${p.column.size}px`,
283
- transform: `translateX(${p.column.start}px)`,
285
+ transform: `translateX(${p.column.start - (p.renderOffset || 0)}px)`,
284
286
  },
285
287
  onResize: p.onResize,
286
288
  onDblClick(originalEvent) {
@@ -325,7 +327,7 @@ const HeaderGroupRenderer = (p) => {
325
327
  [dimension_helpers.HEADER_CLASS]: true,
326
328
  },
327
329
  style: {
328
- transform: `translateX(${p.start}px)`,
330
+ transform: `translateX(${p.start - (p.renderOffset || 0)}px)`,
329
331
  width: `${p.end - p.start}px`,
330
332
  },
331
333
  onResize: p.onResize,
@@ -333,7 +335,7 @@ const HeaderGroupRenderer = (p) => {
333
335
  return (index.h(headerCellRenderer.HeaderCellRenderer, { data: Object.assign(Object.assign({}, p.group), { prop: '', providers: p.providers, index: p.start }), props: groupProps, additionalData: p.additionalData }));
334
336
  };
335
337
 
336
- const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:"↑"}revogr-header .rgHeaderCell i.desc:after{content:"↓"}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
338
+ const revogrHeaderStyleCss = () => `@charset "UTF-8";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:hidden}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell .sort-indicator{display:inline-flex;align-items:flex-start;gap:1px}revogr-header .rgHeaderCell .sort-indicator i.asc:after,revogr-header .rgHeaderCell .sort-indicator i.desc:after{font-size:13px}revogr-header .rgHeaderCell .sort-indicator i.asc:after{content:"↑"}revogr-header .rgHeaderCell .sort-indicator i.desc:after{content:"↓"}revogr-header .rgHeaderCell .sort-indicator .sort-order-index{font-size:10px;line-height:1;top:0}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:ew-resize;width:6px;right:0;top:0;height:100%}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:w-resize;width:6px;left:0;height:100%;top:0}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}`;
337
339
 
338
340
  const RevogrHeaderComponent = class {
339
341
  constructor(hostRef) {
@@ -389,6 +391,7 @@ const RevogrHeaderComponent = class {
389
391
  }
390
392
  renderHeaderColumns(cols, range) {
391
393
  const columnsToRender = [];
394
+ const renderOffset = this.viewportCol.get('renderOffset') || 0;
392
395
  for (let rgCol of cols) {
393
396
  const colData = this.colData[rgCol.itemIndex];
394
397
  const props = {
@@ -397,6 +400,7 @@ const RevogrHeaderComponent = class {
397
400
  data: Object.assign(Object.assign({}, colData), { index: rgCol.itemIndex, providers: this.providers }),
398
401
  canFilter: !!this.columnFilter,
399
402
  canResize: this.canResize,
403
+ renderOffset,
400
404
  active: this.resizeHandler,
401
405
  additionalData: this.additionalData,
402
406
  onResize: e => this.onResize(e, rgCol.itemIndex),
@@ -432,37 +436,71 @@ const RevogrHeaderComponent = class {
432
436
  ];
433
437
  }
434
438
  renderGroupColumn(group, level, visibleGroupRange) {
435
- var _a;
436
- const groupStartIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
437
- if (groupStartIndex < 0) {
438
- return;
439
- }
440
- const groupEndIndex = groupStartIndex + group.indexes.length - 1;
441
- if (!visibleGroupRange ||
442
- !isGroupInVisibleRange(groupStartIndex, groupEndIndex, visibleGroupRange)) {
443
- return;
444
- }
445
- const groupStart = dimension_helpers.getItemByIndex(this.dimensionCol.state, groupStartIndex).start;
446
- const groupEnd = dimension_helpers.getItemByIndex(this.dimensionCol.state, groupEndIndex).end;
439
+ const groupRange = this.getGroupIndexRange(group);
440
+ const groupBounds = this.getGroupBounds(groupRange);
447
441
  const props = {
442
+ level,
448
443
  providers: this.providers,
449
- start: groupStart,
450
- end: groupEnd,
444
+ start: groupBounds.start,
445
+ end: groupBounds.end,
451
446
  group,
447
+ renderOffset: this.viewportCol.get('renderOffset') || 0,
452
448
  active: this.resizeHandler,
453
449
  canResize: this.canResize,
454
450
  additionalData: this.additionalData,
455
451
  onResize: e => {
456
452
  var _a;
457
- return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupStartIndex, groupEndIndex);
453
+ return groupRange
454
+ ? this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupRange.startIndex, groupRange.endIndex)
455
+ : undefined;
458
456
  },
459
457
  };
460
458
  const event = this.beforeGroupHeaderRender.emit(props);
461
459
  if (event.defaultPrevented) {
462
460
  return;
463
461
  }
462
+ const renderRange = this.getGroupIndexRange(event.detail.group);
463
+ if (!renderRange ||
464
+ !visibleGroupRange ||
465
+ !isGroupInVisibleRange(renderRange.startIndex, renderRange.endIndex, visibleGroupRange)) {
466
+ return;
467
+ }
468
+ if (event.detail.onResize === props.onResize) {
469
+ event.detail.onResize = e => {
470
+ var _a;
471
+ return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, renderRange.startIndex, renderRange.endIndex);
472
+ };
473
+ }
474
+ const renderBounds = this.getGroupBounds(renderRange);
475
+ if (event.detail.start === props.start) {
476
+ event.detail.start = renderBounds.start;
477
+ }
478
+ if (event.detail.end === props.end) {
479
+ event.detail.end = renderBounds.end;
480
+ }
464
481
  return index.h(HeaderGroupRenderer, Object.assign({ key: this.getGroupHeaderCellKey(event.detail.group, level) }, event.detail));
465
482
  }
483
+ getGroupIndexRange(group) {
484
+ var _a;
485
+ const startIndex = (_a = group.indexes[0]) !== null && _a !== void 0 ? _a : -1;
486
+ if (startIndex < 0) {
487
+ return;
488
+ }
489
+ const endIndex = group.indexes[group.indexes.length - 1];
490
+ return {
491
+ startIndex,
492
+ endIndex,
493
+ };
494
+ }
495
+ getGroupBounds(range) {
496
+ if (!range) {
497
+ return { start: 0, end: 0 };
498
+ }
499
+ return {
500
+ start: dimension_helpers.getItemByIndex(this.dimensionCol.state, range.startIndex).start,
501
+ end: dimension_helpers.getItemByIndex(this.dimensionCol.state, range.endIndex).end,
502
+ };
503
+ }
466
504
  getVisibleGroupRange() {
467
505
  const visibleColumns = this.viewportCol.get('items');
468
506
  if (!visibleColumns.length) {
@@ -603,7 +641,7 @@ const RevogrViewportScroll = class {
603
641
  * @param e
604
642
  */
605
643
  async changeScroll(e, silent = false) {
606
- var _a, _b;
644
+ var _a, _b, _c, _d;
607
645
  if (silent) {
608
646
  if (e.coordinate && this.verticalScroll) {
609
647
  switch (e.dimension) {
@@ -616,15 +654,16 @@ const RevogrViewportScroll = class {
616
654
  return;
617
655
  }
618
656
  if (e.delta) {
657
+ let currentPhysicalCoordinate = 0;
619
658
  switch (e.dimension) {
620
659
  case 'rgCol':
621
- e.coordinate = this.horizontalScroll.scrollLeft + e.delta;
660
+ currentPhysicalCoordinate = this.horizontalScroll.scrollLeft;
622
661
  break;
623
662
  case 'rgRow':
624
- e.coordinate = ((_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0) + e.delta;
663
+ currentPhysicalCoordinate = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
625
664
  break;
626
665
  }
627
- this.setScroll(e);
666
+ return (_d = (_c = this.localScrollService) === null || _c === void 0 ? void 0 : _c.setScrollByDelta(e, currentPhysicalCoordinate)) !== null && _d !== void 0 ? _d : e;
628
667
  }
629
668
  return e;
630
669
  }
@@ -776,7 +815,10 @@ const RevogrViewportScroll = class {
776
815
  this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
777
816
  }
778
817
  render() {
779
- return (index.h(index.Host, { key: 'adc7378dba1794ca2ec263d52b09abefe50bcbfd', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, index.h("div", { key: '7b57a8a0ea44629fefcfe4d2cd77bf0f048d8e06', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, index.h("div", { key: 'cca3de158bc2a7f0651f578a281819be5698b257', class: "header-wrapper", ref: e => (this.header = e) }, index.h("slot", { key: '1d170147dabe034f2c35481a8e2fedd6de2b6aed', name: viewport_helpers.HEADER_SLOT })), index.h("div", { key: 'b6dd29a91bb1f380a83a035dfdb749ca669936f2', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, index.h("div", { key: '9bce27bf8ec4d3b679aa9a34eb6379a8c2d46cac', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, index.h("slot", { key: 'b44a082c9fbb948fd87bd235b4cd4356fd4a3536', name: viewport_helpers.CONTENT_SLOT }))), index.h("div", { key: '28c305ff6bc664f1d1bbb117e8b8565c8d4bb6b2', class: "footer-wrapper", ref: e => (this.footer = e) }, index.h("slot", { key: '96312fb7f18198fd1feb9dcc00c79cde74ba9c9f', name: viewport_helpers.FOOTER_SLOT })))));
818
+ var _a, _b, _c, _d;
819
+ const physicalContentHeight = throttle.getContentSize(this.contentHeight, (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0);
820
+ const physicalContentWidth = throttle.getContentSize(this.contentWidth, (_d = (_c = this.horizontalScroll) === null || _c === void 0 ? void 0 : _c.clientWidth) !== null && _d !== void 0 ? _d : 0);
821
+ return (index.h(index.Host, { key: 'a0c47dede9d131dea8c8ca449e8a323f24d9b113', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, index.h("div", { key: '6c960e753ffe522ba4afb1c379264873b6c617f3', class: "inner-content-table", style: { width: `${physicalContentWidth}px` } }, index.h("div", { key: '1a6cbcbd3634e84756b54c8150aebd25c824e14a', class: "header-wrapper", ref: e => (this.header = e) }, index.h("slot", { key: 'e4202c687bc39b4f78f3ed9840e979b032f06af8', name: viewport_helpers.HEADER_SLOT })), index.h("div", { key: '651415b5b32e72735065b183317386a34042bb85', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, index.h("div", { key: 'e65623b78d80957d8676adb019618953ef267ec3', class: "content-wrapper", style: { height: `${physicalContentHeight}px` } }, index.h("slot", { key: '5af47b12ef1226587cf774233447b5252d65e836', name: viewport_helpers.CONTENT_SLOT }))), index.h("div", { key: 'cbc0fd64fbfb53d3b18e547bbe34e32b7bb9c043', class: "footer-wrapper", ref: e => (this.footer = e) }, index.h("slot", { key: 'a8e4bfaef400973121090bac3069eb85469a95f3', name: viewport_helpers.FOOTER_SLOT })))));
780
822
  }
781
823
  /**
782
824
  * Extra layer for scroll event monitoring, where MouseWheel event is not passing
@@ -269,7 +269,8 @@ const FilterPanel = class {
269
269
  const options = [];
270
270
  const prop = this.changes.prop;
271
271
  const hidden = new Set();
272
- Object.entries(this.filterItems).forEach(([_, values]) => {
272
+ Object.keys(this.filterItems).forEach((prop) => {
273
+ const values = this.filterItems[prop];
273
274
  values.forEach((filter) => {
274
275
  if (filter.hidden) {
275
276
  hidden.add(filter.type);