@revolist/revogrid 4.26.2 → 4.27.0

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 (118) hide show
  1. package/dist/cjs/{cell-renderer-Cf2Pu4S0.js → cell-renderer-C7rdgaov.js} +3 -3
  2. package/dist/cjs/{column.service-C7p5eC5V.js → column.service-Bbml5C2j.js} +3 -3
  3. package/dist/cjs/{dimension.helpers-CgHhnN1d.js → dimension.helpers-CptesQOZ.js} +52 -8
  4. package/dist/cjs/{edit.utils-rAcGublN.js → edit.utils-CBAbQhGP.js} +1 -1
  5. package/dist/cjs/{header-cell-renderer-DHClfIto.js → header-cell-renderer-BljFI6wj.js} +1 -1
  6. package/dist/cjs/{index--FdNLz1Z.js → index-BVESmpqW.js} +1 -1
  7. package/dist/cjs/index.cjs.js +71 -55
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/revo-grid.cjs.entry.js +74 -49
  10. package/dist/cjs/revo-grid.cjs.js +1 -1
  11. package/dist/cjs/revogr-attribution_7.cjs.entry.js +51 -19
  12. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +4 -4
  13. package/dist/cjs/revogr-data_4.cjs.entry.js +21 -15
  14. package/dist/cjs/revogr-filter-panel.cjs.entry.js +9 -9
  15. package/dist/cjs/{column.drag.plugin-CK5HADlW.js → row-resize.plugin-BRQy_qNn.js} +573 -19
  16. package/dist/cjs/{text-editor-F04kTx53.js → text-editor-CJyQaYei.js} +2 -2
  17. package/dist/cjs/{throttle-fV6BUmM7.js → throttle-BsaP4fgu.js} +3 -3
  18. package/dist/cjs/{viewport.store-B4Clk4m9.js → viewport.store-mhsdi61t.js} +1 -1
  19. package/dist/collection/components/data/revogr-data-style.css +11 -0
  20. package/dist/collection/components/data/revogr-data.js +14 -8
  21. package/dist/collection/components/header/revogr-header-style.css +1 -0
  22. package/dist/collection/components/overlay/keyboard.service.js +33 -3
  23. package/dist/collection/components/overlay/revogr-overlay-selection.js +12 -10
  24. package/dist/collection/components/revoGrid/plugin.service.js +2 -2
  25. package/dist/collection/components/revoGrid/revo-grid.js +44 -10
  26. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +24 -13
  27. package/dist/collection/components/revoGrid/viewport.service.js +1 -1
  28. package/dist/collection/plugins/filter/filter.constants.js +9 -0
  29. package/dist/collection/plugins/filter/filter.panel.js +8 -8
  30. package/dist/collection/plugins/filter/filter.plugin.js +109 -10
  31. package/dist/collection/plugins/filter/filter.style.css +2 -0
  32. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +9 -2
  33. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +1 -1
  34. package/dist/collection/plugins/groupingRow/grouping.service.js +1 -1
  35. package/dist/collection/plugins/index.js +1 -0
  36. package/dist/collection/plugins/row-resize/index.js +6 -0
  37. package/dist/collection/plugins/row-resize/row-resize.plugin.js +385 -0
  38. package/dist/collection/plugins/row-resize/row-resize.types.js +1 -0
  39. package/dist/collection/plugins/row-resize/row-resize.utils.js +55 -0
  40. package/dist/collection/serve/controller.js +1 -1
  41. package/dist/collection/services/data.provider.js +8 -2
  42. package/dist/collection/services/local.scroll.timer.js +3 -3
  43. package/dist/collection/services/selection.store.connector.js +4 -2
  44. package/dist/collection/store/dataSource/data.pending.plugin.js +21 -0
  45. package/dist/collection/store/dataSource/data.store.js +25 -3
  46. package/dist/collection/store/dataSource/trimmed.plugin.js +9 -6
  47. package/dist/collection/store/dimension/dimension.trim.plugin.js +1 -3
  48. package/dist/collection/types/events.js +4 -1
  49. package/dist/collection/utils/column.utils.js +1 -1
  50. package/dist/esm/{cell-renderer-11cf-lu3.js → cell-renderer-BFpmdV8H.js} +3 -3
  51. package/dist/esm/{column.service-Cfw3L0PN.js → column.service-CM-wgGs8.js} +3 -3
  52. package/dist/{revo-grid/dimension.helpers-fl4HSSK9.js → esm/dimension.helpers-Cln9sALu.js} +52 -9
  53. package/dist/{revo-grid/edit.utils-4e9fsqOR.js → esm/edit.utils-3ZbhQCv_.js} +1 -1
  54. package/dist/esm/{header-cell-renderer-Cqtg1ETB.js → header-cell-renderer-Bqh1PrgH.js} +1 -1
  55. package/dist/esm/{index-D24ku9ej.js → index-BvMNbQyq.js} +1 -1
  56. package/dist/esm/index.js +14 -11
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/revo-grid.entry.js +56 -31
  59. package/dist/esm/revo-grid.js +1 -1
  60. package/dist/esm/revogr-attribution_7.entry.js +51 -19
  61. package/dist/esm/revogr-clipboard_3.entry.js +4 -4
  62. package/dist/esm/revogr-data_4.entry.js +21 -15
  63. package/dist/esm/revogr-filter-panel.entry.js +9 -9
  64. package/dist/esm/{column.drag.plugin-DDBKeTGI.js → row-resize.plugin-BRiaHlHA.js} +562 -20
  65. package/dist/{revo-grid/text-editor-DlMnLkRK.js → esm/text-editor-eHtrwvxH.js} +2 -2
  66. package/dist/{revo-grid/throttle-Cpk1LoGk.js → esm/throttle-3rhqdcLy.js} +3 -3
  67. package/dist/{revo-grid/viewport.store-BSXmsiZc.js → esm/viewport.store-DWMKRDSH.js} +1 -1
  68. package/dist/revo-grid/{cell-renderer-11cf-lu3.js → cell-renderer-BFpmdV8H.js} +3 -3
  69. package/dist/revo-grid/{column.service-Cfw3L0PN.js → column.service-CM-wgGs8.js} +3 -3
  70. package/dist/{esm/dimension.helpers-fl4HSSK9.js → revo-grid/dimension.helpers-Cln9sALu.js} +52 -9
  71. package/dist/{esm/edit.utils-4e9fsqOR.js → revo-grid/edit.utils-3ZbhQCv_.js} +1 -1
  72. package/dist/revo-grid/{header-cell-renderer-Cqtg1ETB.js → header-cell-renderer-Bqh1PrgH.js} +1 -1
  73. package/dist/revo-grid/{index-D24ku9ej.js → index-BvMNbQyq.js} +1 -1
  74. package/dist/revo-grid/index.esm.js +14 -11
  75. package/dist/revo-grid/revo-grid.entry.js +56 -31
  76. package/dist/revo-grid/revo-grid.esm.js +1 -1
  77. package/dist/revo-grid/revogr-attribution_7.entry.js +51 -19
  78. package/dist/revo-grid/revogr-clipboard_3.entry.js +4 -4
  79. package/dist/revo-grid/revogr-data_4.entry.js +21 -15
  80. package/dist/revo-grid/revogr-filter-panel.entry.js +9 -9
  81. package/dist/revo-grid/{column.drag.plugin-DDBKeTGI.js → row-resize.plugin-BRiaHlHA.js} +562 -20
  82. package/dist/{esm/text-editor-DlMnLkRK.js → revo-grid/text-editor-eHtrwvxH.js} +2 -2
  83. package/dist/{esm/throttle-Cpk1LoGk.js → revo-grid/throttle-3rhqdcLy.js} +3 -3
  84. package/dist/{esm/viewport.store-BSXmsiZc.js → revo-grid/viewport.store-DWMKRDSH.js} +1 -1
  85. package/dist/types/components/data/revogr-data.d.ts +1 -0
  86. package/dist/types/components/overlay/keyboard.service.d.ts +6 -0
  87. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -1
  88. package/dist/types/components/revoGrid/revo-grid.d.ts +7 -1
  89. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +3 -1
  90. package/dist/types/components.d.ts +23 -10
  91. package/dist/types/plugins/filter/filter.constants.d.ts +6 -0
  92. package/dist/types/plugins/filter/filter.plugin.d.ts +15 -0
  93. package/dist/types/plugins/index.d.ts +1 -0
  94. package/dist/types/plugins/row-resize/index.d.ts +3 -0
  95. package/dist/types/plugins/row-resize/row-resize.plugin.d.ts +44 -0
  96. package/dist/types/plugins/row-resize/row-resize.types.d.ts +40 -0
  97. package/dist/types/plugins/row-resize/row-resize.utils.d.ts +14 -0
  98. package/dist/types/services/data.provider.d.ts +2 -0
  99. package/dist/types/store/dataSource/data.pending.plugin.d.ts +9 -0
  100. package/dist/types/store/dataSource/data.store.d.ts +10 -0
  101. package/dist/types/store/dataSource/trimmed.plugin.d.ts +5 -0
  102. package/dist/types/types/events.d.ts +1 -1
  103. package/dist/types/types/interfaces.d.ts +3 -1
  104. package/hydrate/index.js +734 -85
  105. package/hydrate/index.mjs +734 -85
  106. package/package.json +1 -1
  107. package/readme.md +4 -1
  108. package/standalone/column.service.js +1 -1
  109. package/standalone/data.store.js +1 -1
  110. package/standalone/dimension.helpers.js +1 -1
  111. package/standalone/index.js +1 -1
  112. package/standalone/local.scroll.timer.js +1 -1
  113. package/standalone/revo-grid.js +1 -1
  114. package/standalone/revogr-data2.js +1 -1
  115. package/standalone/revogr-filter-panel.js +1 -1
  116. package/standalone/revogr-header2.js +1 -1
  117. package/standalone/revogr-overlay-selection2.js +1 -1
  118. package/standalone/revogr-row-headers2.js +1 -1
@@ -4,16 +4,16 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-DRvxCueo.js');
7
- var column_service = require('./column.service-C7p5eC5V.js');
8
- var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
7
+ var column_service = require('./column.service-Bbml5C2j.js');
8
+ var dimension_helpers = require('./dimension.helpers-CptesQOZ.js');
9
9
  var debounce = require('./debounce-CcpHiH2p.js');
10
10
  var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
11
- var column_drag_plugin = require('./column.drag.plugin-CK5HADlW.js');
12
- var viewport_store = require('./viewport.store-B4Clk4m9.js');
13
- var index$1 = require('./index--FdNLz1Z.js');
11
+ var rowResize_plugin = require('./row-resize.plugin-BRQy_qNn.js');
12
+ var viewport_store = require('./viewport.store-mhsdi61t.js');
13
+ var index$1 = require('./index-BVESmpqW.js');
14
14
  var events = require('./events-DeLDyZlb.js');
15
15
  require('./filter.button-F2Bw3UAd.js');
16
- require('./header-cell-renderer-DHClfIto.js');
16
+ require('./header-cell-renderer-BljFI6wj.js');
17
17
 
18
18
  class ColumnDataProvider {
19
19
  get stores() {
@@ -230,9 +230,15 @@ class DataProvider {
230
230
  store.addTrimmed(trimmed);
231
231
  this.dimensionProvider.setTrimmed(trimmed, type);
232
232
  if (type === 'rgRow') {
233
- this.dimensionProvider.setData(dimension_helpers.getVisibleSourceItem(store.store).length, type);
233
+ this.dimensionProvider.setData(store.store.get('items').length, type);
234
234
  }
235
235
  }
236
+ /** Keep a row source empty until its current asynchronous update is ready. */
237
+ setItemsPending(pending, type = 'rgRow') {
238
+ const store = this.stores[type];
239
+ store.setItemsPending(pending);
240
+ this.dimensionProvider.setData(store.store.get('items').length, type, type !== 'rgRow');
241
+ }
236
242
  }
237
243
 
238
244
  const DEFAULT_VIRTUAL_X = ['rgCol'];
@@ -250,7 +256,7 @@ class DimensionProvider {
250
256
  this.viewports = viewports;
251
257
  const sizeChanged = debounce.debounce((k) => config.realSizeChanged(k), dimension_helpers.RESIZE_INTERVAL);
252
258
  this.stores = [...column_service.rowTypes, ...column_service.columnTypes].reduce((sources, t) => {
253
- sources[t] = new column_drag_plugin.DimensionStore(t);
259
+ sources[t] = new rowResize_plugin.DimensionStore(t);
254
260
  sources[t].store.onChange('realSize', () => sizeChanged(t));
255
261
  return sources;
256
262
  }, {});
@@ -509,7 +515,7 @@ function getThemeTokens(tokens) {
509
515
  }
510
516
  const result = {};
511
517
  for (const [name, value] of Object.entries(tokens)) {
512
- if (Object.hasOwn(column_drag_plugin.themeTokenCssVariables, name) &&
518
+ if (Object.hasOwn(rowResize_plugin.themeTokenCssVariables, name) &&
513
519
  typeof value === 'string' &&
514
520
  value.trim()) {
515
521
  result[name] = value;
@@ -722,7 +728,7 @@ class ViewportService {
722
728
  const changedItems = {};
723
729
  for (const i of Object.keys(detail || {})) {
724
730
  const size = detail[i];
725
- const virtualIndex = parseInt(i, 10);
731
+ const virtualIndex = Number.parseInt(i, 10);
726
732
  const item = dimension_helpers.getSourceItem(store, virtualIndex);
727
733
  if (item) {
728
734
  changedItems[virtualIndex] = Object.assign(Object.assign({}, item), { size });
@@ -851,29 +857,25 @@ class GridScrollingService {
851
857
  this.elements = {};
852
858
  }
853
859
  async proxyScroll(e, key, skipEvent) {
854
- var _a;
855
860
  let newEventPromise;
856
861
  let event = e;
857
- for (let elKey in (skipEvent ? {} : this.elements)) {
862
+ for (const elKey in (skipEvent ? {} : this.elements)) {
858
863
  // skip
859
864
  if (e.dimension === 'rgCol' && elKey === 'headerRow') {
860
865
  continue;
861
866
  // pinned column only
862
867
  }
863
- else if (this.isPinnedColumn(key) && e.dimension === 'rgCol') {
868
+ if (this.isPinnedColumn(key) && e.dimension === 'rgCol') {
864
869
  if (elKey === key || !e.delta) {
865
870
  continue;
866
871
  }
867
- for (let el of this.elements[elKey]) {
868
- if (el.changeScroll) {
869
- newEventPromise = el.changeScroll(e);
870
- }
872
+ const changedEvent = this.changeScroll(this.elements[elKey], e);
873
+ if (changedEvent) {
874
+ newEventPromise = changedEvent;
871
875
  }
872
876
  }
873
877
  else {
874
- for (let el of this.elements[elKey]) {
875
- await ((_a = el.setScroll) === null || _a === void 0 ? void 0 : _a.call(el, e));
876
- }
878
+ await this.setScroll(this.elements[elKey], e);
877
879
  }
878
880
  }
879
881
  const newEvent = await newEventPromise;
@@ -883,12 +885,27 @@ class GridScrollingService {
883
885
  this.setViewport(skipEvent && this.isPinnedColumn(key)
884
886
  ? Object.assign(Object.assign({}, event), { dimension: key }) : event);
885
887
  }
888
+ changeScroll(elements, e) {
889
+ let changedEvent;
890
+ for (const element of elements) {
891
+ if (element.changeScroll) {
892
+ changedEvent = element.changeScroll(e);
893
+ }
894
+ }
895
+ return changedEvent;
896
+ }
897
+ async setScroll(elements, e) {
898
+ var _a;
899
+ for (const element of elements) {
900
+ await ((_a = element.setScroll) === null || _a === void 0 ? void 0 : _a.call(element, e));
901
+ }
902
+ }
886
903
  /**
887
904
  * Silent scroll update for mobile devices when we have negative scroll top
888
905
  */
889
906
  async scrollSilentService(e, key) {
890
907
  var _a;
891
- for (let elKey in this.elements) {
908
+ for (const elKey in this.elements) {
892
909
  // skip same element update
893
910
  if (elKey === key) {
894
911
  continue;
@@ -896,7 +913,7 @@ class GridScrollingService {
896
913
  if (column_service.columnTypes.includes(key) &&
897
914
  (elKey === 'headerRow' ||
898
915
  column_service.columnTypes.includes(elKey))) {
899
- for (let el of this.elements[elKey]) {
916
+ for (const el of this.elements[elKey]) {
900
917
  await ((_a = el.changeScroll) === null || _a === void 0 ? void 0 : _a.call(el, e, true));
901
918
  }
902
919
  continue;
@@ -904,7 +921,7 @@ class GridScrollingService {
904
921
  }
905
922
  }
906
923
  isPinnedColumn(key) {
907
- return !!key && ['colPinStart', 'colPinEnd'].indexOf(key) > -1;
924
+ return !!key && ['colPinStart', 'colPinEnd'].includes(key);
908
925
  }
909
926
  registerElements(els) {
910
927
  this.elements = els;
@@ -980,14 +997,14 @@ class SelectionStoreConnector {
980
997
  if (this.columnStores[x]) {
981
998
  return this.columnStores[x];
982
999
  }
983
- this.columnStores[x] = new column_drag_plugin.SelectionStore();
1000
+ this.columnStores[x] = new rowResize_plugin.SelectionStore();
984
1001
  return this.columnStores[x];
985
1002
  }
986
1003
  registerRow(y, type) {
987
1004
  if (this.rowStores[y]) {
988
1005
  return this.rowStores[y];
989
1006
  }
990
- this.rowStores[y] = new column_drag_plugin.SelectionStore();
1007
+ this.rowStores[y] = new rowResize_plugin.SelectionStore();
991
1008
  // build cross linking type to position
992
1009
  this.storesByType[type] = y;
993
1010
  this.storesYToType[y] = type;
@@ -1005,7 +1022,7 @@ class SelectionStoreConnector {
1005
1022
  // Store already registered. Do not register twice
1006
1023
  return store;
1007
1024
  }
1008
- this.stores[y][x] = store = new column_drag_plugin.SelectionStore();
1025
+ this.stores[y][x] = store = new rowResize_plugin.SelectionStore();
1009
1026
  // proxy update, column store trigger only range area
1010
1027
  store.onChange('range', c => {
1011
1028
  this.columnStores[x].setRangeArea(c);
@@ -1185,9 +1202,11 @@ class SelectionStoreConnector {
1185
1202
  continue;
1186
1203
  }
1187
1204
  const lastCell = store.store.get('lastCell');
1188
- if (lastCell) {
1189
- store.setRange({ x: 0, y: 0 }, { x: lastCell.x - 1, y: lastCell.y - 1 });
1205
+ if (!lastCell || lastCell.x <= 0 || lastCell.y <= 0) {
1206
+ store.setRangeArea(null);
1207
+ continue;
1190
1208
  }
1209
+ store.setRange({ x: 0, y: 0 }, { x: lastCell.x - 1, y: lastCell.y - 1 });
1191
1210
  }
1192
1211
  }
1193
1212
  }
@@ -1328,7 +1347,7 @@ function isMobileDevice() {
1328
1347
  * Note: The WCAG Plugin should be added as the last plugin in the list of plugins, as it modifies the grid's
1329
1348
  * default behavior and may conflict with other plugins if added earlier.
1330
1349
  */
1331
- class WCAGPlugin extends column_drag_plugin.BasePlugin {
1350
+ class WCAGPlugin extends rowResize_plugin.BasePlugin {
1332
1351
  constructor(revogrid, providers) {
1333
1352
  super(revogrid, providers);
1334
1353
  revogrid.setAttribute('role', 'treegrid');
@@ -1419,7 +1438,7 @@ class PluginService {
1419
1438
  return;
1420
1439
  }
1421
1440
  // Step 1: Identify plugins to remove, compare new and old plugins
1422
- const pluginsToRemove = (prevPlugins === null || prevPlugins === void 0 ? void 0 : prevPlugins.filter(prevPlugin => !plugins.some(userPlugin => userPlugin === prevPlugin))) || [];
1441
+ const pluginsToRemove = (prevPlugins === null || prevPlugins === void 0 ? void 0 : prevPlugins.filter(prevPlugin => !plugins.includes(prevPlugin))) || [];
1423
1442
  // Step 2: Remove old plugins
1424
1443
  pluginsToRemove.forEach(plugin => {
1425
1444
  var _a, _b;
@@ -1432,7 +1451,7 @@ class PluginService {
1432
1451
  // Step 3: Register user plugins
1433
1452
  plugins === null || plugins === void 0 ? void 0 : plugins.forEach(userPlugin => {
1434
1453
  // check if plugin already exists, if so, skip
1435
- const existingPlugin = this.internalPlugins.find(createdPlugin => createdPlugin instanceof userPlugin);
1454
+ const existingPlugin = this.internalPlugins.some(createdPlugin => createdPlugin instanceof userPlugin);
1436
1455
  if (existingPlugin) {
1437
1456
  return;
1438
1457
  }
@@ -1471,7 +1490,7 @@ class PluginService {
1471
1490
  * This plugin handles RTL transformation by subscribing to the beforecolumnsset event
1472
1491
  * and applying column order reversal when RTL mode is enabled.
1473
1492
  */
1474
- class RTLPlugin extends column_drag_plugin.BasePlugin {
1493
+ class RTLPlugin extends rowResize_plugin.BasePlugin {
1475
1494
  constructor(revogrid, providers) {
1476
1495
  super(revogrid, providers);
1477
1496
  this.isRTLEnabled = false;
@@ -1640,7 +1659,12 @@ const RevoGridComponent = class {
1640
1659
  /** When true, grid in read only mode. */
1641
1660
  this.readonly = false;
1642
1661
  /** When true, columns are resizable. */
1643
- this.resize = false;
1662
+ this.resize = true;
1663
+ /**
1664
+ * Enables row resizing. Pass a configuration object to customize the
1665
+ * height limits or enable resize edges across the full row.
1666
+ */
1667
+ this.resizeRow = false;
1644
1668
  /**
1645
1669
  * Prevents horizontal scroll state from being mirrored across viewport sections.
1646
1670
  */
@@ -1711,15 +1735,15 @@ const RevoGridComponent = class {
1711
1735
  */
1712
1736
  this.autoSizeColumn = false;
1713
1737
  /**
1714
- * Enables filter plugin.
1738
+ * Enables filter plugin. Enabled by default; set to `false` to opt out.
1715
1739
  * Can be boolean.
1716
1740
  * Or can be filter collection See `FilterCollection` for more info.
1717
1741
  */
1718
- this.filter = false;
1742
+ this.filter = true;
1719
1743
  /**
1720
1744
  * Enable column move plugin.
1721
1745
  */
1722
- this.canMoveColumns = false;
1746
+ this.canMoveColumns = true;
1723
1747
  /**
1724
1748
  * Trimmed rows.
1725
1749
  * Functionality which allows to hide rows from main data set.
@@ -1729,7 +1753,7 @@ const RevoGridComponent = class {
1729
1753
  /**
1730
1754
  * Enable export plugin.
1731
1755
  */
1732
- this.exporting = false;
1756
+ this.exporting = true;
1733
1757
  /**
1734
1758
  * Stretch strategy for columns by `StretchColumn` plugin.
1735
1759
  * For example if there are more space on the right last column size would be increased.
@@ -1821,7 +1845,7 @@ const RevoGridComponent = class {
1821
1845
  var _a;
1822
1846
  if (this.dataProvider && this.columnProvider && !skipDataUpdate) {
1823
1847
  const columnProp = (_a = this.columnProvider.getColumn(col, colType)) === null || _a === void 0 ? void 0 : _a.prop;
1824
- if (typeof columnProp !== 'undefined') {
1848
+ if (columnProp !== undefined) {
1825
1849
  this.dataProvider.setCellData({
1826
1850
  type: rowType,
1827
1851
  rowIndex: row,
@@ -2351,7 +2375,7 @@ const RevoGridComponent = class {
2351
2375
  '--rg-theme-row-size': `${this.themeService.rowSize}px`,
2352
2376
  };
2353
2377
  for (const [name, value] of Object.entries(this.themeService.theme.tokens)) {
2354
- const cssVariable = column_drag_plugin.themeTokenCssVariables[name];
2378
+ const cssVariable = rowResize_plugin.themeTokenCssVariables[name];
2355
2379
  if (cssVariable && value) {
2356
2380
  styles[cssVariable] = value;
2357
2381
  }
@@ -2450,7 +2474,7 @@ const RevoGridComponent = class {
2450
2474
  */
2451
2475
  groupingChanged(newVal = {}) {
2452
2476
  var _a;
2453
- (_a = this.pluginService.getByClass(column_drag_plugin.GroupingRowPlugin)) === null || _a === void 0 ? void 0 : _a.setGrouping(newVal || {});
2477
+ (_a = this.pluginService.getByClass(rowResize_plugin.GroupingRowPlugin)) === null || _a === void 0 ? void 0 : _a.setGrouping(newVal || {});
2454
2478
  }
2455
2479
  /**
2456
2480
  * Stretch Plugin Apply
@@ -2466,12 +2490,12 @@ const RevoGridComponent = class {
2466
2490
  if (!pluginData) {
2467
2491
  return;
2468
2492
  }
2469
- const stretch = this.pluginService.getByClass(column_drag_plugin.StretchColumn);
2493
+ const stretch = this.pluginService.getByClass(rowResize_plugin.StretchColumn);
2470
2494
  if ((typeof isStretch === 'boolean' && isStretch) || isStretch === 'true') {
2471
2495
  if (!stretch) {
2472
- this.pluginService.add(new column_drag_plugin.StretchColumn(this.element, pluginData));
2496
+ this.pluginService.add(new rowResize_plugin.StretchColumn(this.element, pluginData));
2473
2497
  }
2474
- else if (column_drag_plugin.isStretchPlugin(stretch)) {
2498
+ else if (rowResize_plugin.isStretchPlugin(stretch)) {
2475
2499
  stretch.applyStretch(this.columnProvider.getRawColumns());
2476
2500
  }
2477
2501
  }
@@ -2534,24 +2558,25 @@ const RevoGridComponent = class {
2534
2558
  this.pluginService.add(new RTLPlugin(this.element, pluginData));
2535
2559
  // register auto size plugin
2536
2560
  if (this.autoSizeColumn) {
2537
- this.pluginService.add(new column_drag_plugin.AutoSizeColumnPlugin(this.element, pluginData, typeof this.autoSizeColumn === 'object'
2561
+ this.pluginService.add(new rowResize_plugin.AutoSizeColumnPlugin(this.element, pluginData, typeof this.autoSizeColumn === 'object'
2538
2562
  ? this.autoSizeColumn
2539
2563
  : undefined));
2540
2564
  }
2541
2565
  // register filter plugin
2542
2566
  if (this.filter) {
2543
- this.pluginService.add(new column_drag_plugin.FilterPlugin(this.element, pluginData, typeof this.filter === 'object' ? this.filter : undefined));
2567
+ this.pluginService.add(new rowResize_plugin.FilterPlugin(this.element, pluginData, typeof this.filter === 'object' ? this.filter : undefined));
2544
2568
  }
2545
2569
  // register export plugin
2546
2570
  if (this.exporting) {
2547
- this.pluginService.add(new column_drag_plugin.ExportFilePlugin(this.element, pluginData));
2571
+ this.pluginService.add(new rowResize_plugin.ExportFilePlugin(this.element, pluginData));
2548
2572
  }
2549
2573
  // register sorting plugin
2550
- this.pluginService.add(new column_drag_plugin.SortingPlugin(this.element, pluginData));
2574
+ this.pluginService.add(new rowResize_plugin.SortingPlugin(this.element, pluginData));
2551
2575
  // register grouping plugin
2552
- this.pluginService.add(new column_drag_plugin.GroupingRowPlugin(this.element, pluginData));
2576
+ this.pluginService.add(new rowResize_plugin.GroupingRowPlugin(this.element, pluginData));
2577
+ this.pluginService.add(rowResize_plugin.RowResizePlugin.fromGridProperty(this.element, pluginData));
2553
2578
  if (this.canMoveColumns) {
2554
- this.pluginService.add(new column_drag_plugin.ColumnMovePlugin(this.element, pluginData));
2579
+ this.pluginService.add(new rowResize_plugin.ColumnMovePlugin(this.element, pluginData));
2555
2580
  }
2556
2581
  }
2557
2582
  getPluginData() {
@@ -49,7 +49,7 @@ var patchCloneNodeFix = (HTMLElementPrototype) => {
49
49
 
50
50
  patchBrowser().then(async (options) => {
51
51
  await appGlobals.globalScripts();
52
- return index.bootstrapLazy([["revo-grid.cjs",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"themeDefinitions":[16],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"virtualX":[16],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"virtualX":[{"virtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"colSize":[{"colSizeChanged":0}],"theme":[{"themeChanged":0}],"themeDefinitions":[{"themeDefinitionsChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel.cjs",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"allowDuplicateOperators":[4,"allow-duplicate-operators"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3.cjs",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4.cjs",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7.cjs",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
52
+ return index.bootstrapLazy([["revo-grid.cjs",[[260,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"resizeRow":[4,"resize-row"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyOnClose":[4,"apply-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"themeDefinitions":[16],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"sorting":[16],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"additionalData":[16],"disableVirtualX":[4,"disable-virtual-x"],"virtualX":[16],"disableVirtualY":[4,"disable-virtual-y"],"hideAttribution":[4,"hide-attribution"],"jobsBeforeRender":[16],"registerVNode":[16],"accessible":[4],"rtl":[4],"canDrag":[4,"can-drag"],"refresh":[64],"setDataAt":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64],"refreshExtraElements":[64],"getProviders":[64]},[[5,"touchstart","mousedownHandle"],[5,"mousedown","mousedownHandle"],[5,"touchend","mouseupHandle"],[5,"mouseup","mouseupHandle"],[0,"rowdragstartinit","onRowDragStarted"],[0,"rowdragendinit","onRowDragEnd"],[0,"roworderchange","onRowOrderChange"],[0,"rowdragmoveinit","onRowDrag"],[0,"rowdragmousemove","onRowMouseMove"],[0,"celleditapply","onCellEdit"],[0,"rangeeditapply","onRangeEdit"],[0,"selectionchangeinit","onRangeChanged"],[0,"rowdropinit","onRowDropped"],[0,"beforeheaderclick","onHeaderClick"],[0,"beforecellfocusinit","onCellFocus"]],{"columnTypes":[{"columnTypesChanged":0}],"columns":[{"columnChanged":0}],"disableVirtualX":[{"disableVirtualXChanged":0}],"virtualX":[{"virtualXChanged":0}],"rowSize":[{"rowSizeChanged":0}],"colSize":[{"colSizeChanged":0}],"theme":[{"themeChanged":0}],"themeDefinitions":[{"themeDefinitionsChanged":0}],"source":[{"dataSourceChanged":0}],"pinnedBottomSource":[{"dataSourceChanged":0}],"pinnedTopSource":[{"dataSourceChanged":0}],"disableVirtualY":[{"disableVirtualYChanged":0}],"rowDefinitions":[{"rowDefChanged":0}],"trimmedRows":[{"trimmedRowsChanged":0}],"grouping":[{"groupingChanged":0}],"stretch":[{"applyStretch":0}],"filter":[{"applyFilter":0}],"sorting":[{"applySorting":0}],"rowHeaders":[{"rowHeadersChange":0}],"registerVNode":[{"registerOutsideVNodes":0}],"additionalData":[{"additionalDataChanged":0}],"rtl":[{"rtlChanged":0}],"plugins":[{"pluginsChanged":0}]}]]],["revogr-filter-panel.cjs",[[260,"revogr-filter-panel",{"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"closeOnOutsideClick":[4,"close-on-outside-click"],"allowDuplicateOperators":[4,"allow-duplicate-operators"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"filterItems":[32],"draggedFilterId":[32],"dragOverFilterId":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revogr-clipboard_3.cjs",[[0,"revogr-clipboard",{"readonly":[4],"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"],[4,"cut","cutStarted"]]],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"additionalData":[8,"additional-data"],"cancelChanges":[64],"beforeDisconnect":[64]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"rowType":[1,"row-type"],"dragStart":[64],"endOrder":[64],"clearOrder":[64]}]]],["revogr-data_4.cjs",[[260,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"additionalData":[8,"additional-data"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[513],"colType":[513,"col-type"],"jobsBeforeRender":[16],"providers":[32],"updateCell":[64]},null,{"dataStore":[{"onDataStoreChange":0}],"colData":[{"onColDataChange":0}]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"groups":[16],"groupingDepth":[2,"grouping-depth"],"readonly":[4],"canResize":[4,"can-resize"],"resizeHandler":[16],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1],"additionalData":[8,"additional-data"]}],[260,"revogr-viewport-scroll",{"rowHeader":[4,"row-header"],"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"colType":[1,"col-type"],"noHorizontalScrollTransfer":[4,"no-horizontal-scroll-transfer"],"setScroll":[64],"changeScroll":[64],"applyScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]],[0,"vnode-html",{"redraw":[16]}]]],["revogr-attribution_7.cjs",[[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16],"additionalData":[8,"additional-data"],"jobsBeforeRender":[16]}],[260,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"],"additionalData":[8,"additional-data"],"isMobileDevice":[4,"is-mobile-device"]},[[5,"touchmove","onMouseMove"],[5,"mousemove","onMouseMove"],[5,"touchend","onMouseUp"],[5,"mouseup","onMouseUp"],[5,"mouseleave","onMouseUp"],[0,"dragstartcell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]],{"selectionStore":[{"selectionServiceSet":0}],"dimensionRow":[{"createAutoFillService":0}],"dimensionCol":[{"createAutoFillService":0}],"dataStore":[{"columnServiceSet":0}],"colData":[{"columnServiceSet":0}]}],[0,"revogr-attribution"],[260,"revogr-focus",{"colType":[1,"col-type"],"rowType":[1,"row-type"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"realSize":[2,"real-size"],"virtualSize":[2,"virtual-size"],"clientSize":[2,"client-size"],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-extra",{"nodes":[16],"update":[32],"refresh":[64]}]]]], options);
53
53
  });
54
54
 
55
55
  exports.setNonce = index.setNonce;
@@ -4,15 +4,15 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-DRvxCueo.js');
7
- var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
7
+ var dimension_helpers = require('./dimension.helpers-CptesQOZ.js');
8
8
  var events = require('./events-DeLDyZlb.js');
9
- var column_service = require('./column.service-C7p5eC5V.js');
10
- var edit_utils = require('./edit.utils-rAcGublN.js');
11
- var index$1 = require('./index--FdNLz1Z.js');
9
+ var column_service = require('./column.service-Bbml5C2j.js');
10
+ var edit_utils = require('./edit.utils-CBAbQhGP.js');
11
+ var index$1 = require('./index-BVESmpqW.js');
12
12
  var debounce = require('./debounce-CcpHiH2p.js');
13
- var viewport_store = require('./viewport.store-B4Clk4m9.js');
13
+ var viewport_store = require('./viewport.store-mhsdi61t.js');
14
14
  var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
15
- var throttle = require('./throttle-fV6BUmM7.js');
15
+ var throttle = require('./throttle-BsaP4fgu.js');
16
16
 
17
17
  const Attribution = class {
18
18
  constructor(hostRef) {
@@ -283,6 +283,16 @@ const DIRECTION_CODES = [
283
283
  class KeyboardService {
284
284
  constructor(sv) {
285
285
  this.sv = sv;
286
+ /** Keep focus transitions in keydown order so rendering can scroll each cell into view. */
287
+ this.keyChangeQueue = Promise.resolve(false);
288
+ this.keyChangeGeneration = 0;
289
+ this.applyingKeyChange = false;
290
+ }
291
+ /** Cancel delayed directional input after focus or edit context changes externally. */
292
+ invalidatePendingChanges() {
293
+ if (!this.applyingKeyChange) {
294
+ this.keyChangeGeneration += 1;
295
+ }
286
296
  }
287
297
  /**
288
298
  * Appends printable key input that arrives after edit mode was requested
@@ -385,13 +395,33 @@ class KeyboardService {
385
395
  if (!data) {
386
396
  return false;
387
397
  }
398
+ const keyChangeGeneration = this.keyChangeGeneration;
388
399
  // this interval needed for several cases
389
400
  // grid could be resized before next click
390
401
  // at this case to avoid screen jump we use this interval
391
402
  await index$1.timeout(dimension_helpers.RESIZE_INTERVAL + 30);
392
- const range = this.sv.selectionStore.get('range');
393
- const focus = this.sv.selectionStore.get('focus');
394
- return this.keyPositionChange(data.changes, range, focus, data.isMulti);
403
+ const applyKeyChange = async () => {
404
+ if (keyChangeGeneration !== this.keyChangeGeneration) {
405
+ return false;
406
+ }
407
+ const range = this.sv.selectionStore.get('range');
408
+ const focus = this.sv.selectionStore.get('focus');
409
+ this.applyingKeyChange = true;
410
+ let changed;
411
+ try {
412
+ changed = this.keyPositionChange(data.changes, range, focus, data.isMulti);
413
+ }
414
+ finally {
415
+ this.applyingKeyChange = false;
416
+ }
417
+ await new Promise(resolve => requestAnimationFrame(() => {
418
+ requestAnimationFrame(() => resolve());
419
+ }));
420
+ return changed;
421
+ };
422
+ const queuedChange = this.keyChangeQueue.then(applyKeyChange, applyKeyChange);
423
+ this.keyChangeQueue = queuedChange.catch(() => false);
424
+ return queuedChange;
395
425
  }
396
426
  keyPositionChange(changes, range, focus, isMulti = false) {
397
427
  if (!range || !focus) {
@@ -775,6 +805,8 @@ const OverlaySelection = class {
775
805
  * Selection & Keyboard
776
806
  */
777
807
  selectionServiceSet(selectionStore) {
808
+ var _a;
809
+ (_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.invalidatePendingChanges();
778
810
  // clear subscriptions
779
811
  this.unsubscribeSelectionStore.forEach(v => v());
780
812
  this.unsubscribeSelectionStore.length = 0;
@@ -802,6 +834,7 @@ const OverlaySelection = class {
802
834
  getData: () => this.getData(),
803
835
  selectAll: () => this.selectAll.emit(),
804
836
  });
837
+ this.unsubscribeSelectionStore.push(selectionStore.onChange('focus', () => { var _a; return (_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.invalidatePendingChanges(); }), selectionStore.onChange('edit', () => { var _a; return (_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.invalidatePendingChanges(); }));
805
838
  this.createAutoFillService();
806
839
  }
807
840
  /** Autofill */
@@ -838,11 +871,12 @@ const OverlaySelection = class {
838
871
  this.selectionServiceSet(this.selectionStore);
839
872
  }
840
873
  disconnectedCallback() {
841
- var _a;
874
+ var _a, _b;
842
875
  // clear subscriptions
876
+ (_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.invalidatePendingChanges();
843
877
  this.unsubscribeSelectionStore.forEach(v => v());
844
878
  this.unsubscribeSelectionStore.length = 0;
845
- (_a = this.columnService) === null || _a === void 0 ? void 0 : _a.destroy();
879
+ (_b = this.columnService) === null || _b === void 0 ? void 0 : _b.destroy();
846
880
  }
847
881
  async componentWillRender() {
848
882
  var _a, _b;
@@ -854,9 +888,7 @@ const OverlaySelection = class {
854
888
  renderRange(range) {
855
889
  const cell = getCell(range, this.dimensionRow.state, this.dimensionCol.state);
856
890
  const styles = styleByCellProps(cell);
857
- return [
858
- index.h("div", { class: dimension_helpers.SELECTION_BORDER_CLASS, style: styles }, this.isMobileDevice && (index.h("div", { class: "range-handlers" }, index.h("span", { class: dimension_helpers.MOBILE_CLASS }), index.h("span", { class: dimension_helpers.MOBILE_CLASS })))),
859
- ];
891
+ return (index.h("div", { class: dimension_helpers.SELECTION_BORDER_CLASS, style: styles }, this.isMobileDevice && (index.h("div", { class: "range-handlers" }, index.h("span", { class: dimension_helpers.MOBILE_CLASS }), index.h("span", { class: dimension_helpers.MOBILE_CLASS })))));
860
892
  }
861
893
  renderEditor() {
862
894
  // Check if edit access
@@ -909,7 +941,7 @@ const OverlaySelection = class {
909
941
  }
910
942
  // Range
911
943
  if (range) {
912
- nodes.push(...this.renderRange(range));
944
+ nodes.push(this.renderRange(range));
913
945
  }
914
946
  // Autofill
915
947
  if (focus && !this.readonly && this.range) {
@@ -920,9 +952,9 @@ const OverlaySelection = class {
920
952
  nodes.push(index.h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
921
953
  }
922
954
  }
923
- return (index.h(index.Host, { key: '2d8dc4fd40a883fe59b24b2cfac1c370b9f0ac16', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
955
+ return (index.h(index.Host, { key: '230e2122c5c7065c072f02019d616a64949d54d0', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
924
956
  // it's done to be able to throw events from different levels, not just from editor
925
- onCelledit: (e) => this.onEditCell(e) }, nodes, index.h("slot", { key: '8ad5df55904ca6a8b2fb0e69c5f608ec7264a0f1', name: "data" })));
957
+ onCelledit: (e) => this.onEditCell(e) }, nodes, index.h("slot", { key: '47740a79c605258b4024384510358be927d000b7', name: "data" })));
926
958
  }
927
959
  /**
928
960
  * Executes the focus operation on the specified range of cells.
@@ -1119,12 +1151,12 @@ const OverlaySelection = class {
1119
1151
  clearCell() {
1120
1152
  var _a;
1121
1153
  const range = this.selectionStore.get('range');
1122
- if (range && !column_service.isRangeSingleCell(range)) {
1154
+ const focused = this.selectionStore.get('focus');
1155
+ if (range && (!column_service.isRangeSingleCell(range) || !focused)) {
1123
1156
  const data = this.columnService.getRangeStaticData(range, '');
1124
1157
  (_a = this.autoFillService) === null || _a === void 0 ? void 0 : _a.onRangeApply(data, range, range);
1125
1158
  }
1126
1159
  else if (this.canEdit()) {
1127
- const focused = this.selectionStore.get('focus');
1128
1160
  if (!focused) {
1129
1161
  return;
1130
1162
  }
@@ -4,11 +4,11 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-DRvxCueo.js');
7
- var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
8
- var textEditor = require('./text-editor-F04kTx53.js');
9
- var edit_utils = require('./edit.utils-rAcGublN.js');
7
+ var dimension_helpers = require('./dimension.helpers-CptesQOZ.js');
8
+ var textEditor = require('./text-editor-CJyQaYei.js');
9
+ var edit_utils = require('./edit.utils-CBAbQhGP.js');
10
10
  var debounce = require('./debounce-CcpHiH2p.js');
11
- require('./index--FdNLz1Z.js');
11
+ require('./index-BVESmpqW.js');
12
12
 
13
13
  const Clipboard = class {
14
14
  constructor(hostRef) {