handsontable 0.0.0-next-ff10728-20250410 → 0.0.0-next-9410a76-20250416

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.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (106) hide show
  1. package/3rdparty/walkontable/src/cell/range.js +14 -0
  2. package/3rdparty/walkontable/src/cell/range.mjs +14 -0
  3. package/3rdparty/walkontable/src/renderer/rowHeaders.js +4 -1
  4. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +4 -1
  5. package/3rdparty/walkontable/src/selection/border/border.js +5 -0
  6. package/3rdparty/walkontable/src/selection/border/border.mjs +5 -0
  7. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +3 -4
  8. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +3 -4
  9. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +8 -10
  10. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +8 -10
  11. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +3 -4
  12. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +3 -4
  13. package/3rdparty/walkontable/src/table.js +5 -2
  14. package/3rdparty/walkontable/src/table.mjs +5 -2
  15. package/CHANGELOG.md +39 -0
  16. package/base.js +2 -2
  17. package/base.mjs +2 -2
  18. package/core/focusCatcher/focusDetector.js +1 -1
  19. package/core/focusCatcher/focusDetector.mjs +2 -2
  20. package/core/hooks/constants.js +8 -0
  21. package/core/hooks/constants.mjs +8 -0
  22. package/core/hooks/index.d.ts +1 -0
  23. package/core.d.ts +0 -1
  24. package/core.js +32 -25
  25. package/core.mjs +33 -26
  26. package/dataMap/dataMap.js +0 -7
  27. package/dataMap/dataMap.mjs +0 -7
  28. package/dataMap/metaManager/metaSchema.js +1 -0
  29. package/dataMap/metaManager/metaSchema.mjs +1 -0
  30. package/dist/handsontable.css +3 -3
  31. package/dist/handsontable.full.css +3 -3
  32. package/dist/handsontable.full.js +437 -350
  33. package/dist/handsontable.full.min.css +3 -3
  34. package/dist/handsontable.full.min.js +17 -17
  35. package/dist/handsontable.js +437 -350
  36. package/dist/handsontable.min.css +3 -3
  37. package/dist/handsontable.min.js +18 -18
  38. package/editorManager.js +1 -7
  39. package/editorManager.mjs +1 -7
  40. package/editors/autocompleteEditor/autocompleteEditor.js +14 -4
  41. package/editors/autocompleteEditor/autocompleteEditor.mjs +14 -4
  42. package/editors/textEditor/textEditor.js +1 -1
  43. package/editors/textEditor/textEditor.mjs +2 -2
  44. package/helpers/browser.js +1 -1
  45. package/helpers/browser.mjs +1 -1
  46. package/helpers/dom/element.js +2 -2
  47. package/helpers/dom/element.mjs +1 -1
  48. package/helpers/mixed.js +2 -2
  49. package/helpers/mixed.mjs +2 -2
  50. package/helpers/object.js +3 -0
  51. package/helpers/object.mjs +3 -0
  52. package/package.json +1 -1
  53. package/plugins/autoColumnSize/autoColumnSize.js +1 -1
  54. package/plugins/autoColumnSize/autoColumnSize.mjs +1 -1
  55. package/plugins/autoRowSize/autoRowSize.js +1 -6
  56. package/plugins/autoRowSize/autoRowSize.mjs +1 -6
  57. package/plugins/columnSorting/columnSorting.js +0 -4
  58. package/plugins/columnSorting/columnSorting.mjs +0 -4
  59. package/plugins/comments/comments.js +1 -0
  60. package/plugins/comments/comments.mjs +1 -0
  61. package/plugins/contextMenu/menu/defaultShortcutsList.js +2 -2
  62. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +2 -2
  63. package/plugins/contextMenu/menu/menu.js +1 -0
  64. package/plugins/contextMenu/menu/menu.mjs +1 -0
  65. package/plugins/contextMenu/menu/positioner.js +10 -2
  66. package/plugins/contextMenu/menu/positioner.mjs +10 -2
  67. package/plugins/copyPaste/copyPaste.js +12 -15
  68. package/plugins/copyPaste/copyPaste.mjs +13 -16
  69. package/plugins/copyPaste/pasteEvent.js +3 -0
  70. package/plugins/copyPaste/pasteEvent.mjs +3 -0
  71. package/plugins/filters/filters.js +25 -24
  72. package/plugins/filters/filters.mjs +25 -24
  73. package/plugins/filters/ui/multipleSelect.js +7 -1
  74. package/plugins/filters/ui/multipleSelect.mjs +7 -1
  75. package/plugins/hiddenColumns/hiddenColumns.js +1 -1
  76. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  77. package/plugins/hiddenRows/hiddenRows.js +1 -1
  78. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  79. package/plugins/manualColumnResize/manualColumnResize.js +4 -6
  80. package/plugins/manualColumnResize/manualColumnResize.mjs +4 -6
  81. package/plugins/manualRowResize/manualRowResize.js +4 -6
  82. package/plugins/manualRowResize/manualRowResize.mjs +4 -6
  83. package/plugins/mergeCells/mergeCells.js +8 -29
  84. package/plugins/mergeCells/mergeCells.mjs +8 -29
  85. package/plugins/mergeCells/renderer.js +15 -0
  86. package/plugins/mergeCells/renderer.mjs +15 -0
  87. package/plugins/mergeCells/utils.js +31 -0
  88. package/plugins/mergeCells/utils.mjs +27 -0
  89. package/plugins/nestedRows/data/dataManager.js +2 -2
  90. package/plugins/nestedRows/data/dataManager.mjs +2 -2
  91. package/plugins/undoRedo/actions/removeColumn.js +19 -14
  92. package/plugins/undoRedo/actions/removeColumn.mjs +19 -14
  93. package/plugins/undoRedo/actions/removeRow.js +12 -4
  94. package/plugins/undoRedo/actions/removeRow.mjs +12 -4
  95. package/selection/selection.js +3 -1
  96. package/selection/selection.mjs +3 -1
  97. package/styles/handsontable.css +14 -15
  98. package/styles/handsontable.min.css +3 -3
  99. package/styles/ht-theme-horizon.css +2 -2
  100. package/styles/ht-theme-horizon.min.css +2 -2
  101. package/styles/ht-theme-main.css +2 -2
  102. package/styles/ht-theme-main.min.css +2 -2
  103. package/tableView.js +5 -8
  104. package/tableView.mjs +5 -8
  105. package/utils/ghostTable.js +3 -0
  106. package/utils/ghostTable.mjs +3 -0
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-ff10728-20250410
29
- * Release date: 20/02/2025 (built at 10/04/2025 06:43:56)
28
+ * Version: 0.0.0-next-9410a76-20250416
29
+ * Release date: 19/03/2025 (built at 16/04/2025 06:18:15)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -104,8 +104,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
104
104
  Handsontable.CellCoords = _src.CellCoords;
105
105
  Handsontable.CellRange = _src.CellRange;
106
106
  Handsontable.packageName = 'handsontable';
107
- Handsontable.buildDate = "10/04/2025 06:43:56";
108
- Handsontable.version = "0.0.0-next-ff10728-20250410";
107
+ Handsontable.buildDate = "16/04/2025 06:18:15";
108
+ Handsontable.version = "0.0.0-next-9410a76-20250416";
109
109
  Handsontable.languages = {
110
110
  dictionaryKeys: _registry.dictionaryKeys,
111
111
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -362,7 +362,6 @@ function Core(rootElement, userSettings) {
362
362
  const globalMeta = metaManager.getGlobalMeta();
363
363
  const pluginsRegistry = (0, _uniqueMap.createUniqueMap)();
364
364
  this.container = this.rootDocument.createElement('div');
365
- this.renderCall = false;
366
365
  rootElement.insertBefore(this.container, rootElement.firstChild);
367
366
  if ((0, _rootInstance.isRootInstance)(this)) {
368
367
  (0, _mixed._injectProductInfo)(userSettings.licenseKey, rootElement);
@@ -394,6 +393,9 @@ function Core(rootElement, userSettings) {
394
393
  this.rowIndexMapper.addLocalHook('indexesSequenceChange', source => {
395
394
  instance.runHooks('afterRowSequenceChange', source);
396
395
  });
396
+ eventManager.addEventListener(this.rootDocument.documentElement, 'compositionstart', event => {
397
+ instance.runHooks('beforeCompositionStart', event);
398
+ });
397
399
  dataSource = new _dataSource.default(instance);
398
400
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
399
401
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -473,6 +475,7 @@ function Core(rootElement, userSettings) {
473
475
  let {
474
476
  hiddenIndexesChanged
475
477
  } = _ref;
478
+ this.forceFullRender = true;
476
479
  if (hiddenIndexesChanged) {
477
480
  this.selection.commit();
478
481
  }
@@ -756,13 +759,6 @@ function Core(rootElement, userSettings) {
756
759
  }
757
760
  }
758
761
  const totalRows = instance.countRows();
759
- if (totalRows === 0) {
760
- selection.deselect();
761
- } else if (source === 'ContextMenu.removeRow') {
762
- selection.refresh();
763
- } else {
764
- selection.shiftRows(groupIndex, -groupAmount);
765
- }
766
762
  const fixedRowsTop = tableMeta.fixedRowsTop;
767
763
  if (fixedRowsTop >= calcIndex + 1) {
768
764
  tableMeta.fixedRowsTop -= Math.min(groupAmount, fixedRowsTop - calcIndex);
@@ -771,6 +767,13 @@ function Core(rootElement, userSettings) {
771
767
  if (fixedRowsBottom && calcIndex >= totalRows - fixedRowsBottom) {
772
768
  tableMeta.fixedRowsBottom -= Math.min(groupAmount, fixedRowsBottom);
773
769
  }
770
+ if (totalRows === 0) {
771
+ selection.deselect();
772
+ } else if (source === 'ContextMenu.removeRow') {
773
+ selection.refresh();
774
+ } else {
775
+ selection.shiftRows(groupIndex, -groupAmount);
776
+ }
774
777
  offset += groupAmount;
775
778
  });
776
779
  };
@@ -1180,8 +1183,7 @@ function Core(rootElement, userSettings) {
1180
1183
  (0, _index.installFocusCatcher)(instance);
1181
1184
  }
1182
1185
  instance.runHooks('init');
1183
- this.forceFullRender = true; // used when data was changed
1184
- this.view.render();
1186
+ this.render();
1185
1187
 
1186
1188
  // Run the logic only if it's the table's initialization and the root element is not visible.
1187
1189
  if (!!firstRun && instance.rootElement.offsetParent === null) {
@@ -1354,13 +1356,11 @@ function Core(rootElement, userSettings) {
1354
1356
  datamap.set(changes[i][0], changes[i][1], changes[i][3]);
1355
1357
  }
1356
1358
  const hasChanges = changes.length > 0;
1357
- instance.forceFullRender = true; // used when data was changed or when all cells need to be re-rendered
1358
-
1359
1359
  if (hasChanges) {
1360
1360
  grid.adjustRowsAndCols();
1361
1361
  instance.runHooks('beforeChangeRender', changes, source);
1362
1362
  editorManager.closeEditor();
1363
- instance.view.render();
1363
+ instance.render();
1364
1364
  editorManager.prepareEditor();
1365
1365
  instance.view.adjustElementsSize();
1366
1366
  instance.runHooks('afterChange', changes, source || 'edit');
@@ -1369,7 +1369,7 @@ function Core(rootElement, userSettings) {
1369
1369
  activeEditor.refreshValue();
1370
1370
  }
1371
1371
  } else {
1372
- instance.view.render();
1372
+ instance.render();
1373
1373
  }
1374
1374
  }
1375
1375
 
@@ -1519,9 +1519,22 @@ function Core(rootElement, userSettings) {
1519
1519
  ...tableMeta
1520
1520
  };
1521
1521
  }
1522
- if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
1522
+ const {
1523
+ type,
1524
+ checkedTemplate,
1525
+ uncheckedTemplate
1526
+ } = cellProperties;
1527
+ if (type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
1523
1528
  filteredChanges[i][3] = getParsedNumber(newValue);
1524
1529
  }
1530
+ if (type === 'checkbox') {
1531
+ const stringifiedValue = (0, _mixed.stringify)(newValue);
1532
+ const isChecked = stringifiedValue === (0, _mixed.stringify)(checkedTemplate);
1533
+ const isUnchecked = stringifiedValue === (0, _mixed.stringify)(uncheckedTemplate);
1534
+ if (isChecked || isUnchecked) {
1535
+ filteredChanges[i][3] = isChecked ? checkedTemplate : uncheckedTemplate;
1536
+ }
1537
+ }
1525
1538
  }
1526
1539
  return filteredChanges;
1527
1540
  }
@@ -1923,11 +1936,7 @@ function Core(rootElement, userSettings) {
1923
1936
  const nextValue = this.renderSuspendedCounter - 1;
1924
1937
  this.renderSuspendedCounter = Math.max(nextValue, 0);
1925
1938
  if (!this.isRenderSuspended() && nextValue === this.renderSuspendedCounter) {
1926
- if (this.renderCall) {
1927
- this.render();
1928
- } else {
1929
- instance.view.render();
1930
- }
1939
+ instance.view.render();
1931
1940
  }
1932
1941
  };
1933
1942
 
@@ -1943,9 +1952,8 @@ function Core(rootElement, userSettings) {
1943
1952
  */
1944
1953
  this.render = function () {
1945
1954
  if (this.view) {
1946
- this.renderCall = true;
1947
- this.forceFullRender = true; // used when data was changed or when all cells need to be re-rendered
1948
-
1955
+ // used when data was changed or when all cells need to be re-rendered (slow render)
1956
+ this.forceFullRender = true;
1949
1957
  if (!this.isRenderSuspended()) {
1950
1958
  instance.view.render();
1951
1959
  }
@@ -2558,8 +2566,7 @@ function Core(rootElement, userSettings) {
2558
2566
  }
2559
2567
  grid.adjustRowsAndCols();
2560
2568
  if (instance.view && !firstRun) {
2561
- instance.forceFullRender = true; // used when data was changed
2562
- instance.view.render();
2569
+ instance.render();
2563
2570
  instance.view._wt.wtOverlays.adjustElementsSize();
2564
2571
  }
2565
2572
  if (!init && instance.view && (currentHeight === '' || height === '' || height === undefined) && currentHeight !== height) {
@@ -8671,8 +8678,8 @@ exports.isChildOf = isChildOf;
8671
8678
  exports.isDetached = isDetached;
8672
8679
  exports.isHTMLElement = isHTMLElement;
8673
8680
  exports.isInput = isInput;
8681
+ exports.isInternalElement = isInternalElement;
8674
8682
  exports.isOutsideInput = isOutsideInput;
8675
- exports.isThisHotChild = isThisHotChild;
8676
8683
  exports.isVisible = isVisible;
8677
8684
  exports.makeElementContentEditableAndSelectItsContent = makeElementContentEditableAndSelectItsContent;
8678
8685
  exports.matchesCSSRules = matchesCSSRules;
@@ -8733,7 +8740,7 @@ function getParent(element) {
8733
8740
  * @param {HTMLElement} thisHotContainer The Handsontable container.
8734
8741
  * @returns {boolean}
8735
8742
  */
8736
- function isThisHotChild(element, thisHotContainer) {
8743
+ function isInternalElement(element, thisHotContainer) {
8737
8744
  const closestHandsontableContainer = element.closest('.handsontable');
8738
8745
  return !!closestHandsontableContainer && (closestHandsontableContainer.parentNode === thisHotContainer || closestHandsontableContainer === thisHotContainer);
8739
8746
  }
@@ -10097,7 +10104,7 @@ const domMessages = {
10097
10104
  function _injectProductInfo(key, element) {
10098
10105
  const hasValidType = !isEmpty(key);
10099
10106
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
10100
- const hotVersion = "0.0.0-next-ff10728-20250410";
10107
+ const hotVersion = "0.0.0-next-9410a76-20250416";
10101
10108
  let keyValidityDate;
10102
10109
  let consoleMessageState = 'invalid';
10103
10110
  let domMessageState = 'invalid';
@@ -10105,7 +10112,7 @@ function _injectProductInfo(key, element) {
10105
10112
  const schemaValidity = _checkKeySchema(key);
10106
10113
  if (hasValidType || isNonCommercial || schemaValidity) {
10107
10114
  if (schemaValidity) {
10108
- const releaseDate = (0, _moment.default)("20/02/2025", 'DD/MM/YYYY');
10115
+ const releaseDate = (0, _moment.default)("19/03/2025", 'DD/MM/YYYY');
10109
10116
  const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
10110
10117
  const keyValidityDays = _extractTime(key);
10111
10118
  keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
@@ -10999,7 +11006,7 @@ const platforms = {
10999
11006
  mac: tester(platform => /^Mac/.test(platform)),
11000
11007
  win: tester(platform => /^Win/.test(platform)),
11001
11008
  linux: tester(platform => /^Linux/.test(platform)),
11002
- ios: tester(ua => /iPhone|iPad|iPod/i.test(ua))
11009
+ ios: tester(platform => /iPhone|iPad|iPod/i.test(platform))
11003
11010
  };
11004
11011
 
11005
11012
  /**
@@ -11427,6 +11434,9 @@ function getProperty(object, name) {
11427
11434
  * @param {*} value Value to be assigned at the provided property.
11428
11435
  */
11429
11436
  function setProperty(object, name, value) {
11437
+ if (typeof name !== 'string') {
11438
+ return;
11439
+ }
11430
11440
  const names = name.split('.');
11431
11441
  let workingObject = object;
11432
11442
  names.forEach((propName, index) => {
@@ -11793,13 +11803,7 @@ class EditorManager {
11793
11803
  this.selection = _selection;
11794
11804
  this.eventManager = new _eventManager.default(hotInstance);
11795
11805
  this.hot.addHook('afterDocumentKeyDown', event => _assertClassBrand(_EditorManager_brand, this, _onAfterDocumentKeyDown).call(this, event));
11796
-
11797
- // Open editor when text composition is started (IME editor)
11798
- this.eventManager.addEventListener(this.hot.rootDocument.documentElement, 'compositionstart', event => {
11799
- if (!this.destroyed && this.hot.isListening()) {
11800
- this.openEditor('', event);
11801
- }
11802
- });
11806
+ this.hot.addHook('beforeCompositionStart', event => _assertClassBrand(_EditorManager_brand, this, _onAfterDocumentKeyDown).call(this, event));
11803
11807
  this.hot.view._wt.update('onCellDblClick', (event, coords, elem) => _assertClassBrand(_EditorManager_brand, this, _onCellDblClick).call(this, event, coords, elem));
11804
11808
  }
11805
11809
 
@@ -13275,6 +13279,14 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
13275
13279
  * @returns {string[]|undefined} Can return an `Array` of `String`s. Each of these strings will act like class names to be removed from all the cells in the table.
13276
13280
  */
13277
13281
  'beforeRemoveCellClassNames',
13282
+ /**
13283
+ * Hook fired after `compositionstart` event is handled.
13284
+ *
13285
+ * @event Hooks#beforeCompositionStart
13286
+ * @since 15.3.0
13287
+ * @param {Event} event A native `composition` event object.
13288
+ */
13289
+ 'beforeCompositionStart',
13278
13290
  /**
13279
13291
  * Fired after getting the cell settings.
13280
13292
  *
@@ -17891,16 +17903,16 @@ class TableView {
17891
17903
  */
17892
17904
  render() {
17893
17905
  if (!this.hot.isRenderSuspended()) {
17894
- this.hot.runHooks('beforeRender', this.hot.forceFullRender);
17906
+ const isFullRender = this.hot.forceFullRender;
17907
+ this.hot.runHooks('beforeRender', isFullRender);
17895
17908
  if (this.postponedAdjustElementsSize) {
17896
17909
  this.postponedAdjustElementsSize = false;
17897
17910
  this.adjustElementsSize();
17898
17911
  }
17899
- this._wt.draw(!this.hot.forceFullRender);
17912
+ this._wt.draw(!isFullRender);
17900
17913
  _assertClassBrand(_TableView_brand, this, _updateScrollbarClassNames).call(this);
17901
- this.hot.runHooks('afterRender', this.hot.forceFullRender);
17914
+ this.hot.runHooks('afterRender', isFullRender);
17902
17915
  this.hot.forceFullRender = false;
17903
- this.hot.renderCall = false;
17904
17916
  }
17905
17917
  }
17906
17918
 
@@ -18807,8 +18819,7 @@ class TableView {
18807
18819
  this.eventManager.addEventListener(this.hot.rootDocument.documentElement, 'click', () => {
18808
18820
  if (this.settings.observeDOMVisibility) {
18809
18821
  if (this._wt.drawInterrupted) {
18810
- this.hot.forceFullRender = true;
18811
- this.render();
18822
+ this.hot.render();
18812
18823
  }
18813
18824
  }
18814
18825
  });
@@ -18881,7 +18892,6 @@ class TableView {
18881
18892
  */
18882
18893
  beforeRender(force, skipRender) {
18883
18894
  if (force) {
18884
- // this.hot.forceFullRender = did Handsontable request full render?
18885
18895
  this.hot.runHooks('beforeViewRender', this.hot.forceFullRender, skipRender);
18886
18896
  }
18887
18897
  }
@@ -18895,7 +18905,6 @@ class TableView {
18895
18905
  */
18896
18906
  afterRender(force) {
18897
18907
  if (force) {
18898
- // this.hot.forceFullRender = did Handsontable request full render?
18899
18908
  this.hot.runHooks('afterViewRender', this.hot.forceFullRender);
18900
18909
  }
18901
18910
  }
@@ -21001,6 +21010,20 @@ class CellRange {
21001
21010
  return this;
21002
21011
  }
21003
21012
 
21013
+ /**
21014
+ * Normalizes the coordinates in your `CellRange` instance to the nearest valid position.
21015
+ *
21016
+ * Coordinates that point to headers (negative values) are normalized to `0`.
21017
+ *
21018
+ * @returns {CellRange}
21019
+ */
21020
+ normalize() {
21021
+ this.highlight.normalize();
21022
+ this.from.normalize();
21023
+ this.to.normalize();
21024
+ return this;
21025
+ }
21026
+
21004
21027
  /**
21005
21028
  * Checks if the coordinates in your `CellRange` instance are valid
21006
21029
  * in the context of given table parameters.
@@ -23622,8 +23645,8 @@ class Table {
23622
23645
  } else {
23623
23646
  this.tableOffset = this.dataAccessObject.parentTableOffset;
23624
23647
  }
23625
- const startRow = totalRows > 0 ? this.getFirstRenderedRow() : 0;
23626
- const startColumn = totalColumns > 0 ? this.getFirstRenderedColumn() : 0;
23648
+ const startRow = Math.max(this.getFirstRenderedRow(), 0);
23649
+ const startColumn = Math.max(this.getFirstRenderedColumn(), 0);
23627
23650
  this.rowFilter = new _row.default(startRow, totalRows, columnHeadersCount);
23628
23651
  this.columnFilter = new _column.default(startColumn, totalColumns, rowHeadersCount);
23629
23652
  let performRedraw = true;
@@ -23941,6 +23964,9 @@ class Table {
23941
23964
  return null;
23942
23965
  }
23943
23966
  const TR = cellElement.parentNode;
23967
+ if (!TR) {
23968
+ return null;
23969
+ }
23944
23970
  const CONTAINER = TR.parentNode;
23945
23971
  let row = (0, _element.index)(TR);
23946
23972
  let col = cellElement.cellIndex;
@@ -24760,7 +24786,10 @@ class RowHeadersRenderer extends _base.BaseRenderer {
24760
24786
  const orderView = this.obtainOrderView(TR);
24761
24787
  const cellsView = cells.obtainOrderView(TR);
24762
24788
  orderView.appendView(cellsView).setSize(rowHeadersCount).setOffset(0).start();
24763
- for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) {
24789
+
24790
+ // Reading the row header renderers in reverse because of how the Eco Renderers handle rendering
24791
+ // (prepending the nodes when rendering row headers).
24792
+ for (let visibleColumnIndex = rowHeadersCount - 1; visibleColumnIndex >= 0; visibleColumnIndex--) {
24764
24793
  orderView.render();
24765
24794
  const TH = orderView.getCurrentNode();
24766
24795
  TH.className = '';
@@ -26625,16 +26654,11 @@ const stickyRowsBottom = {
26625
26654
  * @this Table
26626
26655
  */
26627
26656
  getFirstRenderedRow() {
26628
- const totalRows = this.wtSettings.getSetting('totalRows');
26629
- const fixedRowsBottom = this.wtSettings.getSetting('fixedRowsBottom');
26630
- const index = totalRows - fixedRowsBottom;
26631
- if (totalRows === 0 || fixedRowsBottom === 0) {
26657
+ const allStickyRows = this.getRenderedRowsCount();
26658
+ if (allStickyRows === 0) {
26632
26659
  return -1;
26633
26660
  }
26634
- if (index < 0) {
26635
- return 0;
26636
- }
26637
- return index;
26661
+ return this.wtSettings.getSetting('totalRows') - allStickyRows;
26638
26662
  },
26639
26663
  /**
26640
26664
  * Get the source index of the first row fully visible in the viewport. If no rows are fully visible, returns an error code: -1.
@@ -26663,6 +26687,10 @@ const stickyRowsBottom = {
26663
26687
  * @this Table
26664
26688
  */
26665
26689
  getLastRenderedRow() {
26690
+ const allStickyRows = this.getRenderedRowsCount();
26691
+ if (allStickyRows === 0) {
26692
+ return -1;
26693
+ }
26666
26694
  return this.wtSettings.getSetting('totalRows') - 1;
26667
26695
  },
26668
26696
  /**
@@ -26692,8 +26720,7 @@ const stickyRowsBottom = {
26692
26720
  * @this Table
26693
26721
  */
26694
26722
  getRenderedRowsCount() {
26695
- const totalRows = this.wtSettings.getSetting('totalRows');
26696
- return Math.min(this.wtSettings.getSetting('fixedRowsBottom'), totalRows);
26723
+ return Math.min(this.wtSettings.getSetting('totalRows'), this.wtSettings.getSetting('fixedRowsBottom'));
26697
26724
  },
26698
26725
  /**
26699
26726
  * Get the number of fully visible rows in the viewport.
@@ -26748,8 +26775,8 @@ const stickyColumnsStart = {
26748
26775
  * @this Table
26749
26776
  */
26750
26777
  getFirstRenderedColumn() {
26751
- const totalColumns = this.wtSettings.getSetting('totalColumns');
26752
- if (totalColumns === 0) {
26778
+ const allStickyColumns = this.getRenderedColumnsCount();
26779
+ if (allStickyColumns === 0) {
26753
26780
  return -1;
26754
26781
  }
26755
26782
  return 0;
@@ -26810,8 +26837,7 @@ const stickyColumnsStart = {
26810
26837
  * @this Table
26811
26838
  */
26812
26839
  getRenderedColumnsCount() {
26813
- const totalColumns = this.wtSettings.getSetting('totalColumns');
26814
- return Math.min(this.wtSettings.getSetting('fixedColumnsStart'), totalColumns);
26840
+ return Math.min(this.wtSettings.getSetting('totalColumns'), this.wtSettings.getSetting('fixedColumnsStart'));
26815
26841
  },
26816
26842
  /**
26817
26843
  * Get the number of fully visible columns in the viewport.
@@ -30265,6 +30291,11 @@ class Border {
30265
30291
  const lastRenderedRow = wtTable.getLastRenderedRow();
30266
30292
  const firstRenderedColumn = wtTable.getFirstRenderedColumn();
30267
30293
  const lastRenderedColumn = wtTable.getLastRenderedColumn();
30294
+ if (firstRenderedColumn < 0 && lastRenderedColumn < 0 || firstRenderedRow < 0 && lastRenderedRow < 0) {
30295
+ // ...also when overlays have rendered only headers skip it
30296
+ this.disappear();
30297
+ return;
30298
+ }
30268
30299
  let fromTD;
30269
30300
  if (isMultiple) {
30270
30301
  fromColumn = Math.max(fromColumn, firstRenderedColumn);
@@ -30759,8 +30790,8 @@ const stickyRowsTop = {
30759
30790
  * @this Table
30760
30791
  */
30761
30792
  getFirstRenderedRow() {
30762
- const totalRows = this.wtSettings.getSetting('totalRows');
30763
- if (totalRows === 0) {
30793
+ const allStickyRows = this.getRenderedRowsCount();
30794
+ if (allStickyRows === 0) {
30764
30795
  return -1;
30765
30796
  }
30766
30797
  return 0;
@@ -30821,8 +30852,7 @@ const stickyRowsTop = {
30821
30852
  * @this Table
30822
30853
  */
30823
30854
  getRenderedRowsCount() {
30824
- const totalRows = this.wtSettings.getSetting('totalRows');
30825
- return Math.min(this.wtSettings.getSetting('fixedRowsTop'), totalRows);
30855
+ return Math.min(this.wtSettings.getSetting('totalRows'), this.wtSettings.getSetting('fixedRowsTop'));
30826
30856
  },
30827
30857
  /**
30828
30858
  * Get the number of fully visible rows in the viewport.
@@ -37070,7 +37100,9 @@ class Selection {
37070
37100
  col: (0, _number.clamp)(to.col, 0, countColumns - 1)
37071
37101
  });
37072
37102
  this.selectedRange.ranges.push(range);
37073
- this.highlight.getFocus().add(highlight).commit().syncWith(range);
37103
+ if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, this.selectedRange.current().highlight)) {
37104
+ this.highlight.getFocus().add(highlight).commit().syncWith(range);
37105
+ }
37074
37106
  this.applyAndCommit(range);
37075
37107
  }
37076
37108
 
@@ -39223,8 +39255,6 @@ class DataMap {
39223
39255
  }
39224
39256
  }
39225
39257
  this.hot.runHooks('afterCreateRow', newVisualRowIndex, numberOfCreatedRows, source);
39226
- this.hot.forceFullRender = true; // used when data was changed
39227
-
39228
39258
  return {
39229
39259
  delta: numberOfCreatedRows,
39230
39260
  startPhysicalIndex: physicalRowIndex
@@ -39310,8 +39340,6 @@ class DataMap {
39310
39340
  }
39311
39341
  const newVisualColumnIndex = this.hot.toVisualColumn(startPhysicalIndex);
39312
39342
  this.hot.runHooks('afterCreateCol', newVisualColumnIndex, numberOfCreatedCols, source);
39313
- this.hot.forceFullRender = true; // used when data was changed
39314
-
39315
39343
  this.refreshDuckSchema();
39316
39344
  return {
39317
39345
  delta: numberOfCreatedCols,
@@ -39358,8 +39386,6 @@ class DataMap {
39358
39386
  this.metaManager.removeRow(rowPhysicalIndex, 1);
39359
39387
  });
39360
39388
  this.hot.runHooks('afterRemoveRow', rowIndex, numberOfRemovedIndexes, removedPhysicalIndexes, source);
39361
- this.hot.forceFullRender = true; // used when data was changed
39362
-
39363
39389
  return true;
39364
39390
  }
39365
39391
 
@@ -39419,7 +39445,6 @@ class DataMap {
39419
39445
  }
39420
39446
  }
39421
39447
  this.hot.runHooks('afterRemoveCol', columnIndex, amount, removedPhysicalIndexes, source);
39422
- this.hot.forceFullRender = true; // used when data was changed
39423
39448
  this.refreshDuckSchema();
39424
39449
  return true;
39425
39450
  }
@@ -43208,6 +43233,7 @@ var _default = () => {
43208
43233
  * | `'de-CH'` | German - Switzerland |
43209
43234
  * | `'de-DE'` | German - Germany |
43210
43235
  * | `'es-MX'` | Spanish - Mexico |
43236
+ * | `'fa-IR'` | Persian - Iran |
43211
43237
  * | `'fr-FR'` | French - France |
43212
43238
  * | `'hr-HR'` | Croatian - Croatia |
43213
43239
  * | `'it-IT'` | Italian - Italy |
@@ -49039,7 +49065,7 @@ function createInputElement(hot) {
49039
49065
  input.name = '__htFocusCatcher';
49040
49066
  input.classList.add('htFocusCatcher');
49041
49067
  if (hot.getSettings().ariaTags) {
49042
- (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
49068
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_LABEL)('Focus catcher')]);
49043
49069
  }
49044
49070
  return input;
49045
49071
  }
@@ -50281,7 +50307,7 @@ class TextEditor extends _baseEditor.BaseEditor {
50281
50307
  */
50282
50308
  close() {
50283
50309
  this.autoResize.unObserve();
50284
- if ((0, _element.isThisHotChild)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
50310
+ if ((0, _element.isInternalElement)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
50285
50311
  this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
50286
50312
  }
50287
50313
  this.hideEditableElement();
@@ -51124,6 +51150,7 @@ var _string = __webpack_require__(156);
51124
51150
  var _unicode = __webpack_require__(174);
51125
51151
  var _textRenderer = __webpack_require__(426);
51126
51152
  var _a11y = __webpack_require__(162);
51153
+ var _function = __webpack_require__(163);
51127
51154
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
51128
51155
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
51129
51156
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -51136,6 +51163,7 @@ const EDITOR_TYPE = exports.EDITOR_TYPE = 'autocomplete';
51136
51163
  * @class AutocompleteEditor
51137
51164
  */
51138
51165
  var _idPrefix = /*#__PURE__*/new WeakMap();
51166
+ var _focusDebounced = /*#__PURE__*/new WeakMap();
51139
51167
  var _AutocompleteEditor_brand = /*#__PURE__*/new WeakSet();
51140
51168
  class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
51141
51169
  constructor() {
@@ -51168,6 +51196,12 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
51168
51196
  * @type {string}
51169
51197
  */
51170
51198
  _classPrivateFieldInitSpec(this, _idPrefix, this.hot.guid.slice(0, 9));
51199
+ /**
51200
+ * Runs focus method after debounce.
51201
+ */
51202
+ _classPrivateFieldInitSpec(this, _focusDebounced, (0, _function.debounce)(() => {
51203
+ this.focus();
51204
+ }, 100));
51171
51205
  /**
51172
51206
  * Filters and sorts by relevance.
51173
51207
  *
@@ -51253,7 +51287,6 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
51253
51287
  }
51254
51288
  return this.TEXTAREA.value;
51255
51289
  }
51256
-
51257
51290
  /**
51258
51291
  * Creates an editor's elements and adds necessary CSS classnames.
51259
51292
  */
@@ -51299,10 +51332,10 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
51299
51332
  this.showEditableElement();
51300
51333
  this.focus();
51301
51334
  this.addHook('beforeKeyDown', event => this.onBeforeKeyDown(event));
51335
+ this.htEditor.addHook('afterScroll', _classPrivateFieldGet(_focusDebounced, this));
51302
51336
  this.htEditor.updateSettings({
51303
51337
  colWidths: trimDropdown ? [(0, _element.outerWidth)(this.TEXTAREA) - 2] : undefined,
51304
51338
  autoColumnSize: true,
51305
- autoRowSize: true,
51306
51339
  renderer: (hotInstance, TD, row, col, prop, value, cellProperties) => {
51307
51340
  (0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, value, cellProperties);
51308
51341
  const {
@@ -51574,7 +51607,10 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
51574
51607
  const maxItems = Math.min(this.cellProperties.visibleRows, this.strippedChoices.length);
51575
51608
  const height = Array.from({
51576
51609
  length: maxItems
51577
- }, (_, i) => i).reduce((h, index) => h + this.htEditor.getRowHeight(index), 0);
51610
+ }, (_, i) => i).reduce((totalHeight, index) => {
51611
+ const rowHeight = this.htEditor.getRowHeight(index) || this.htEditor.view.getDefaultRowHeight();
51612
+ return totalHeight + rowHeight;
51613
+ }, 0);
51578
51614
  return height + borderVerticalCompensation + 1;
51579
51615
  }
51580
51616
 
@@ -51672,7 +51708,7 @@ exports.AutocompleteEditor = AutocompleteEditor;
51672
51708
  function _fixDropdownWidth() {
51673
51709
  if (this.htEditor.view.hasVerticalScroll()) {
51674
51710
  this.htEditor.updateSettings({
51675
- width: this.htEditor.getSettings().width + (0, _element.getScrollbarWidth)(this.hot.rootDocument)
51711
+ width: this.getWidth() + (0, _element.getScrollbarWidth)(this.hot.rootDocument)
51676
51712
  });
51677
51713
  }
51678
51714
  }
@@ -54671,25 +54707,25 @@ var _manualRowResize = __webpack_require__(686);
54671
54707
  exports.ManualRowResize = _manualRowResize.ManualRowResize;
54672
54708
  var _mergeCells = __webpack_require__(688);
54673
54709
  exports.MergeCells = _mergeCells.MergeCells;
54674
- var _multiColumnSorting = __webpack_require__(702);
54710
+ var _multiColumnSorting = __webpack_require__(703);
54675
54711
  exports.MultiColumnSorting = _multiColumnSorting.MultiColumnSorting;
54676
- var _multipleSelectionHandles = __webpack_require__(706);
54712
+ var _multipleSelectionHandles = __webpack_require__(707);
54677
54713
  exports.MultipleSelectionHandles = _multipleSelectionHandles.MultipleSelectionHandles;
54678
- var _nestedHeaders = __webpack_require__(708);
54714
+ var _nestedHeaders = __webpack_require__(709);
54679
54715
  exports.NestedHeaders = _nestedHeaders.NestedHeaders;
54680
- var _nestedRows = __webpack_require__(724);
54716
+ var _nestedRows = __webpack_require__(725);
54681
54717
  exports.NestedRows = _nestedRows.NestedRows;
54682
- var _persistentState = __webpack_require__(732);
54718
+ var _persistentState = __webpack_require__(733);
54683
54719
  exports.PersistentState = _persistentState.PersistentState;
54684
- var _search = __webpack_require__(735);
54720
+ var _search = __webpack_require__(736);
54685
54721
  exports.Search = _search.Search;
54686
- var _stretchColumns = __webpack_require__(737);
54722
+ var _stretchColumns = __webpack_require__(738);
54687
54723
  exports.StretchColumns = _stretchColumns.StretchColumns;
54688
- var _touchScroll = __webpack_require__(743);
54724
+ var _touchScroll = __webpack_require__(744);
54689
54725
  exports.TouchScroll = _touchScroll.TouchScroll;
54690
- var _trimRows = __webpack_require__(745);
54726
+ var _trimRows = __webpack_require__(746);
54691
54727
  exports.TrimRows = _trimRows.TrimRows;
54692
- var _undoRedo = __webpack_require__(747);
54728
+ var _undoRedo = __webpack_require__(748);
54693
54729
  exports.UndoRedo = _undoRedo.UndoRedo;
54694
54730
  var _registry = __webpack_require__(198);
54695
54731
  exports.registerPlugin = _registry.registerPlugin;
@@ -55078,7 +55114,7 @@ class AutoColumnSize extends _base.BasePlugin {
55078
55114
  if (firstVisibleColumn === -1 || lastVisibleColumn === -1) {
55079
55115
  return;
55080
55116
  }
55081
- const overwriteCache = this.hot.renderCall;
55117
+ const overwriteCache = this.hot.forceFullRender;
55082
55118
  this.calculateColumnsWidth({
55083
55119
  from: firstVisibleColumn,
55084
55120
  to: lastVisibleColumn
@@ -55885,6 +55921,9 @@ class GhostTable {
55885
55921
  this.table = this.createTable(this.hot.table.className);
55886
55922
  this.table.colGroup.appendChild(this.createColGroupsCol(row));
55887
55923
  this.table.tr.appendChild(this.createRow(row));
55924
+ if (row === 0) {
55925
+ (0, _element.addClass)(this.table.table, 'htGhostTableFirstRow');
55926
+ }
55888
55927
  this.container.container.appendChild(this.table.fragment);
55889
55928
  rowObject.table = this.table.table;
55890
55929
  }
@@ -57472,7 +57511,7 @@ class AutoRowSize extends _base.BasePlugin {
57472
57511
  if (firstVisibleRow === -1 || lastVisibleRow === -1) {
57473
57512
  return;
57474
57513
  }
57475
- const overwriteCache = this.hot.renderCall;
57514
+ const overwriteCache = this.hot.forceFullRender;
57476
57515
  this.calculateRowsHeight({
57477
57516
  from: firstVisibleRow,
57478
57517
  to: lastVisibleRow
@@ -57573,11 +57612,6 @@ class AutoRowSize extends _base.BasePlugin {
57573
57612
 
57574
57613
  // @TODO Should call once per render cycle, currently fired separately in different plugins
57575
57614
  this.hot.view.adjustElementsSize();
57576
-
57577
- // tmp
57578
- if (this.hot.view._wt.wtOverlays.inlineStartOverlay.needFullRender) {
57579
- this.hot.view._wt.wtOverlays.inlineStartOverlay.clone.draw();
57580
- }
57581
57615
  }
57582
57616
  };
57583
57617
  const syncLimit = this.getSyncCalculationLimit();
@@ -59028,10 +59062,6 @@ class ColumnSorting extends _base.BasePlugin {
59028
59062
  this.hot.runHooks('afterColumnSort', currentSortConfig, sortPossible ? destinationSortConfigs : currentSortConfig, sortPossible);
59029
59063
  if (sortPossible) {
59030
59064
  this.hot.render();
59031
- // TODO: Workaround? This triggers fast redraw. One test won't pass after removal.
59032
- // It should be refactored / described.
59033
- this.hot.forceFullRender = false;
59034
- this.hot.view.render();
59035
59065
  }
59036
59066
  }
59037
59067
 
@@ -61698,6 +61728,7 @@ class Comments extends _base.BasePlugin {
61698
61728
  this.addHook('afterScroll', () => _assertClassBrand(_Comments_brand, this, _onAfterScroll).call(this));
61699
61729
  this.addHook('afterBeginEditing', () => this.hide());
61700
61730
  this.addHook('afterDocumentKeyDown', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
61731
+ this.addHook('beforeCompositionStart', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
61701
61732
  this.addHook('afterSetTheme', function () {
61702
61733
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
61703
61734
  args[_key2] = arguments[_key2];
@@ -64832,6 +64863,7 @@ class Menu {
64832
64863
  layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
64833
64864
  ariaTags: false,
64834
64865
  themeName: this.hot.getCurrentThemeName(),
64866
+ beforeRefreshDimensions: () => false,
64835
64867
  beforeOnCellMouseOver: (event, coords) => {
64836
64868
  _classPrivateFieldGet(_navigator, this).setCurrentPage(coords.row);
64837
64869
  },
@@ -65375,7 +65407,11 @@ class Positioner {
65375
65407
  setPositionAboveCursor() {
65376
65408
  let top = _classPrivateFieldGet(_offset, this).above + _classPrivateFieldGet(_cursor, this).top - _classPrivateFieldGet(_container, this).offsetHeight;
65377
65409
  if (_classPrivateFieldGet(_parentContainer, this)) {
65378
- top = _classPrivateFieldGet(_cursor, this).top + _classPrivateFieldGet(_cursor, this).cellHeight - _classPrivateFieldGet(_container, this).offsetHeight + 3;
65410
+ const rootWindow = _classPrivateFieldGet(_parentContainer, this).ownerDocument.defaultView;
65411
+ const style = rootWindow.getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.ht_master'));
65412
+ const paddingTop = Number.parseInt(style.paddingTop, 10);
65413
+ const borderTop = Number.parseInt(style.borderTop, 10);
65414
+ top = _classPrivateFieldGet(_cursor, this).top + _classPrivateFieldGet(_cursor, this).cellHeight - _classPrivateFieldGet(_container, this).scrollHeight + paddingTop + borderTop;
65379
65415
  }
65380
65416
  _classPrivateFieldGet(_container, this).style.top = `${top}px`;
65381
65417
  }
@@ -65386,7 +65422,11 @@ class Positioner {
65386
65422
  setPositionBelowCursor() {
65387
65423
  let top = _classPrivateFieldGet(_offset, this).below + _classPrivateFieldGet(_cursor, this).top + 1;
65388
65424
  if (_classPrivateFieldGet(_parentContainer, this)) {
65389
- top = _classPrivateFieldGet(_cursor, this).top - 1;
65425
+ const rootWindow = _classPrivateFieldGet(_parentContainer, this).ownerDocument.defaultView;
65426
+ const style = rootWindow.getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.ht_master'));
65427
+ const paddingTop = Number.parseInt(style.paddingTop, 10);
65428
+ const borderTop = Number.parseInt(style.borderTop, 10);
65429
+ top = _classPrivateFieldGet(_cursor, this).top - paddingTop - borderTop - 1;
65390
65430
  }
65391
65431
  _classPrivateFieldGet(_container, this).style.top = `${top}px`;
65392
65432
  }
@@ -66127,7 +66167,7 @@ function createDefaultShortcutsList(menu) {
66127
66167
  keys: [['ArrowUp']],
66128
66168
  callback: () => menu.getNavigator().toPreviousItem()
66129
66169
  }, {
66130
- keys: [['ArrowRight']],
66170
+ keys: [[hot.isRtl() ? 'ArrowLeft' : 'ArrowRight']],
66131
66171
  callback: () => {
66132
66172
  const selection = hotMenu.getSelectedLast();
66133
66173
  if (selection) {
@@ -66138,7 +66178,7 @@ function createDefaultShortcutsList(menu) {
66138
66178
  }
66139
66179
  }
66140
66180
  }, {
66141
- keys: [['ArrowLeft']],
66181
+ keys: [[hot.isRtl() ? 'ArrowRight' : 'ArrowLeft']],
66142
66182
  callback: () => {
66143
66183
  const selection = hotMenu.getSelectedLast();
66144
66184
  if (selection && menu.isSubMenu()) {
@@ -66528,6 +66568,9 @@ class CopyPaste extends _base.BasePlugin {
66528
66568
  return _assertClassBrand(_CopyPaste_brand, _this, _onAfterSelection).call(_this, ...args);
66529
66569
  });
66530
66570
  this.addHook('afterSelectionEnd', () => _assertClassBrand(_CopyPaste_brand, this, _onAfterSelectionEnd).call(this));
66571
+
66572
+ // Events are attached to the document, not the root table element - as it should,
66573
+ // for Chrome 133 and lower to copy/paste/cut work properly (#dev-2277).
66531
66574
  this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
66532
66575
  return _this.onCopy(...arguments);
66533
66576
  });
@@ -66834,12 +66877,10 @@ class CopyPaste extends _base.BasePlugin {
66834
66877
  * @private
66835
66878
  */
66836
66879
  onCopy(event) {
66837
- var _event$target, _this$hot$getSelected;
66880
+ const eventTarget = event.composedPath()[0];
66838
66881
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
66839
- const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
66840
- const selectedCell = (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight;
66841
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
66842
- if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
66882
+ const isHotInput = eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.hasAttribute('data-hot-input');
66883
+ if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(eventTarget) && (isHotInput && eventTarget !== focusedElement || !isHotInput && eventTarget !== this.hot.rootDocument.body && !(0, _element.isInternalElement)(eventTarget, this.hot.rootElement))) {
66843
66884
  return;
66844
66885
  }
66845
66886
  event.preventDefault();
@@ -66869,12 +66910,10 @@ class CopyPaste extends _base.BasePlugin {
66869
66910
  * @private
66870
66911
  */
66871
66912
  onCut(event) {
66872
- var _event$target2, _this$hot$getSelected2;
66913
+ const eventTarget = event.composedPath()[0];
66873
66914
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
66874
- const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
66875
- const selectedCell = (_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight;
66876
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
66877
- if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
66915
+ const isHotInput = eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.hasAttribute('data-hot-input');
66916
+ if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || (0, _element.isHTMLElement)(eventTarget) && (isHotInput && eventTarget !== focusedElement || !isHotInput && eventTarget !== this.hot.rootDocument.body && !(0, _element.isInternalElement)(eventTarget, this.hot.rootElement))) {
66878
66917
  return;
66879
66918
  }
66880
66919
  event.preventDefault();
@@ -66903,12 +66942,10 @@ class CopyPaste extends _base.BasePlugin {
66903
66942
  * @private
66904
66943
  */
66905
66944
  onPaste(event) {
66906
- var _event$target3, _this$hot$getSelected3;
66945
+ const eventTarget = event.composedPath()[0];
66907
66946
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
66908
- const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
66909
- const selectedCell = (_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight;
66910
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
66911
- if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || (0, _element.isHTMLElement)(event.target) && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
66947
+ const isHotInput = eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.hasAttribute('data-hot-input');
66948
+ if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || (0, _element.isHTMLElement)(eventTarget) && (isHotInput && eventTarget !== focusedElement || !isHotInput && eventTarget !== this.hot.rootDocument.body && !(0, _element.isInternalElement)(eventTarget, this.hot.rootElement))) {
66912
66949
  return;
66913
66950
  }
66914
66951
  event.preventDefault();
@@ -67355,6 +67392,9 @@ class PasteEvent {
67355
67392
  this.clipboardData = new _clipboardData.default();
67356
67393
  }
67357
67394
  preventDefault() {}
67395
+ composedPath() {
67396
+ return [];
67397
+ }
67358
67398
  }
67359
67399
  exports["default"] = PasteEvent;
67360
67400
 
@@ -70822,10 +70862,10 @@ class Filters extends _base.BasePlugin {
70822
70862
  *
70823
70863
  * @returns {Array}
70824
70864
  */
70825
- /* eslint-enable jsdoc/require-description-complete-sentence */
70826
70865
  exportConditions() {
70827
70866
  return this.conditionCollection.exportAllConditions();
70828
70867
  }
70868
+ /* eslint-enable jsdoc/require-description-complete-sentence */
70829
70869
 
70830
70870
  /**
70831
70871
  * Filters data based on added filter conditions.
@@ -70842,38 +70882,39 @@ class Filters extends _base.BasePlugin {
70842
70882
  let visibleVisualRows = [];
70843
70883
  const conditions = this.exportConditions();
70844
70884
  const allowFiltering = this.hot.runHooks('beforeFilter', conditions, _classPrivateFieldGet(_previousConditionStack, this));
70845
- if (allowFiltering !== false) {
70846
- if (needToFilter) {
70847
- const trimmedRows = [];
70848
- this.hot.batchExecution(() => {
70849
- this.filtersRowsMap.clear();
70850
- visibleVisualRows = (0, _array.arrayMap)(dataFilter.filter(), rowData => rowData.meta.visualRow);
70851
- const visibleVisualRowsAssertion = (0, _utils.createArrayAssertion)(visibleVisualRows);
70852
- (0, _number.rangeEach)(this.hot.countSourceRows() - 1, row => {
70853
- if (!visibleVisualRowsAssertion(row)) {
70854
- trimmedRows.push(row);
70855
- }
70856
- });
70857
- (0, _array.arrayEach)(trimmedRows, physicalRow => {
70858
- this.filtersRowsMap.setValueAtIndex(physicalRow, true);
70859
- });
70860
- }, true);
70861
- if (!navigableHeaders && !visibleVisualRows.length) {
70862
- this.hot.deselectCell();
70863
- }
70864
- } else {
70885
+ if (allowFiltering !== false && needToFilter) {
70886
+ const trimmedRows = [];
70887
+ this.hot.batchExecution(() => {
70865
70888
  this.filtersRowsMap.clear();
70889
+ visibleVisualRows = (0, _array.arrayMap)(dataFilter.filter(), rowData => rowData.meta.visualRow);
70890
+ const visibleVisualRowsAssertion = (0, _utils.createArrayAssertion)(visibleVisualRows);
70891
+ (0, _number.rangeEach)(this.hot.countSourceRows() - 1, row => {
70892
+ if (!visibleVisualRowsAssertion(row)) {
70893
+ trimmedRows.push(row);
70894
+ }
70895
+ });
70896
+ (0, _array.arrayEach)(trimmedRows, physicalRow => {
70897
+ this.filtersRowsMap.setValueAtIndex(physicalRow, true);
70898
+ });
70899
+ }, true);
70900
+ if (!navigableHeaders && !visibleVisualRows.length) {
70901
+ this.hot.deselectCell();
70866
70902
  }
70867
70903
  _classPrivateFieldSet(_previousConditionStack, this, this.exportConditions());
70868
- this.hot.runHooks('afterFilter', conditions);
70869
- this.hot.view.adjustElementsSize();
70870
- this.hot.render();
70904
+ } else if (allowFiltering !== false && !needToFilter) {
70905
+ _classPrivateFieldSet(_previousConditionStack, this, this.exportConditions());
70906
+ this.filtersRowsMap.clear();
70871
70907
  } else {
70872
70908
  this.importConditions(_classPrivateFieldGet(_previousConditionStack, this));
70873
70909
  }
70874
70910
  if (this.hot.selection.isSelected()) {
70875
70911
  this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
70876
70912
  }
70913
+ if (allowFiltering !== false) {
70914
+ this.hot.runHooks('afterFilter', conditions);
70915
+ this.hot.view.adjustElementsSize();
70916
+ this.hot.render();
70917
+ }
70877
70918
  }
70878
70919
 
70879
70920
  /**
@@ -74300,7 +74341,13 @@ class MultipleSelectUI extends _base.BaseUI {
74300
74341
  beforeOnCellMouseUp: () => {
74301
74342
  _classPrivateFieldGet(_itemsBox, this).listen();
74302
74343
  },
74303
- colWidths: () => _classPrivateFieldGet(_itemsBox, this).container.scrollWidth - (0, _element.getScrollbarWidth)(rootDocument),
74344
+ modifyColWidth: width => {
74345
+ const minWidth = _classPrivateFieldGet(_itemsBox, this).container.scrollWidth - (0, _element.getScrollbarWidth)(rootDocument);
74346
+ if (width !== undefined && width < minWidth) {
74347
+ return minWidth;
74348
+ }
74349
+ return width;
74350
+ },
74304
74351
  maxCols: 1,
74305
74352
  autoWrapCol: true,
74306
74353
  height: 110,
@@ -78013,8 +78060,8 @@ class HiddenColumns extends _base.BasePlugin {
78013
78060
  * Disables the plugin functionality for this Handsontable instance.
78014
78061
  */
78015
78062
  disablePlugin() {
78016
- this.hot.columnIndexMapper.unregisterMap(this.pluginName);
78017
78063
  super.disablePlugin();
78064
+ this.hot.columnIndexMapper.unregisterMap(this.pluginName);
78018
78065
  this.resetCellsMeta();
78019
78066
  }
78020
78067
 
@@ -78702,8 +78749,8 @@ class HiddenRows extends _base.BasePlugin {
78702
78749
  * Disables the plugin functionality for this Handsontable instance.
78703
78750
  */
78704
78751
  disablePlugin() {
78705
- this.hot.rowIndexMapper.unregisterMap(this.pluginName);
78706
78752
  super.disablePlugin();
78753
+ this.hot.rowIndexMapper.unregisterMap(this.pluginName);
78707
78754
  this.resetCellsMeta();
78708
78755
  }
78709
78756
 
@@ -80742,12 +80789,12 @@ class ManualColumnResize extends _base.BasePlugin {
80742
80789
  setupGuidePosition() {
80743
80790
  const handleHeight = parseInt((0, _element.outerHeight)(_classPrivateFieldGet(_handle, this)), 10);
80744
80791
  const handleBottomPosition = parseInt(_classPrivateFieldGet(_handle, this).style.top, 10) + handleHeight;
80745
- const maximumVisibleElementHeight = parseInt(this.hot.view.maximumVisibleElementHeight(0), 10);
80792
+ const tableHeight = this.hot.view.getTableHeight();
80746
80793
  (0, _element.addClass)(_classPrivateFieldGet(_handle, this), 'active');
80747
80794
  (0, _element.addClass)(_classPrivateFieldGet(_guide, this), 'active');
80748
80795
  _classPrivateFieldGet(_guide, this).style.top = `${handleBottomPosition}px`;
80749
80796
  this.refreshGuidePosition();
80750
- _classPrivateFieldGet(_guide, this).style.height = `${maximumVisibleElementHeight - handleHeight}px`;
80797
+ _classPrivateFieldGet(_guide, this).style.height = `${tableHeight - handleHeight}px`;
80751
80798
  this.hot.rootElement.appendChild(_classPrivateFieldGet(_guide, this));
80752
80799
  }
80753
80800
 
@@ -80818,8 +80865,7 @@ class ManualColumnResize extends _base.BasePlugin {
80818
80865
  */
80819
80866
  afterMouseDownTimeout() {
80820
80867
  const render = () => {
80821
- this.hot.forceFullRender = true;
80822
- this.hot.view.render(); // updates all
80868
+ this.hot.render();
80823
80869
  this.hot.view.adjustElementsSize();
80824
80870
  };
80825
80871
  const resize = (column, forceRender) => {
@@ -80979,8 +81025,7 @@ function _onMouseMove(event) {
80979
81025
  */
80980
81026
  function _onMouseUp() {
80981
81027
  const render = () => {
80982
- this.hot.forceFullRender = true;
80983
- this.hot.view.render(); // updates all
81028
+ this.hot.render();
80984
81029
  this.hot.view.adjustElementsSize();
80985
81030
  };
80986
81031
  const resize = (column, forceRender) => {
@@ -82304,12 +82349,12 @@ class ManualRowResize extends _base.BasePlugin {
82304
82349
  setupGuidePosition() {
82305
82350
  const handleWidth = parseInt((0, _element.outerWidth)(_classPrivateFieldGet(_handle, this)), 10);
82306
82351
  const handleEndPosition = parseInt(_classPrivateFieldGet(_handle, this).style[this.inlineDir], 10) + handleWidth;
82307
- const maximumVisibleElementWidth = parseInt(this.hot.view.maximumVisibleElementWidth(0), 10);
82352
+ const tableWidth = this.hot.view.getTableWidth();
82308
82353
  (0, _element.addClass)(_classPrivateFieldGet(_handle, this), 'active');
82309
82354
  (0, _element.addClass)(_classPrivateFieldGet(_guide, this), 'active');
82310
82355
  _classPrivateFieldGet(_guide, this).style.top = _classPrivateFieldGet(_handle, this).style.top;
82311
82356
  _classPrivateFieldGet(_guide, this).style[this.inlineDir] = `${handleEndPosition}px`;
82312
- _classPrivateFieldGet(_guide, this).style.width = `${maximumVisibleElementWidth - handleWidth}px`;
82357
+ _classPrivateFieldGet(_guide, this).style.width = `${tableWidth - handleWidth}px`;
82313
82358
  this.hot.rootElement.appendChild(_classPrivateFieldGet(_guide, this));
82314
82359
  }
82315
82360
 
@@ -82390,8 +82435,7 @@ class ManualRowResize extends _base.BasePlugin {
82390
82435
  */
82391
82436
  afterMouseDownTimeout() {
82392
82437
  const render = () => {
82393
- this.hot.forceFullRender = true;
82394
- this.hot.view.render(); // updates all
82438
+ this.hot.render();
82395
82439
  this.hot.view.adjustElementsSize();
82396
82440
  };
82397
82441
  const resize = (row, forceRender) => {
@@ -82519,8 +82563,7 @@ function _onMouseMove(event) {
82519
82563
  */
82520
82564
  function _onMouseUp() {
82521
82565
  const render = () => {
82522
- this.hot.forceFullRender = true;
82523
- this.hot.view.render(); // updates all
82566
+ this.hot.render();
82524
82567
  this.hot.view.adjustElementsSize();
82525
82568
  };
82526
82569
  const runHooks = (row, forceRender) => {
@@ -82653,6 +82696,7 @@ var _element = __webpack_require__(155);
82653
82696
  var _browser = __webpack_require__(164);
82654
82697
  var _focusOrder2 = __webpack_require__(699);
82655
82698
  var _renderer = __webpack_require__(701);
82699
+ var _utils = __webpack_require__(702);
82656
82700
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
82657
82701
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
82658
82702
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -83285,8 +83329,12 @@ class MergeCells extends _base.BasePlugin {
83285
83329
  * @param {CellRange} cellRange The cell range to merge or unmerged.
83286
83330
  */
83287
83331
  toggleMerge(cellRange) {
83288
- const mergedCell = this.mergedCellsCollection.get(cellRange.from.row, cellRange.from.col);
83289
- const mergedCellCoversWholeRange = mergedCell.row === cellRange.from.row && mergedCell.col === cellRange.from.col && mergedCell.row + mergedCell.rowspan - 1 === cellRange.to.row && mergedCell.col + mergedCell.colspan - 1 === cellRange.to.col;
83332
+ const {
83333
+ from,
83334
+ to
83335
+ } = cellRange.clone().normalize();
83336
+ const mergedCell = this.mergedCellsCollection.get(from.row, from.col);
83337
+ const mergedCellCoversWholeRange = mergedCell.row === from.row && mergedCell.col === from.col && mergedCell.row + mergedCell.rowspan - 1 === to.row && mergedCell.col + mergedCell.colspan - 1 === to.col;
83290
83338
  if (mergedCellCoversWholeRange) {
83291
83339
  this.unmergeRange(cellRange);
83292
83340
  } else {
@@ -84098,36 +84146,10 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
84098
84146
  } else {
84099
84147
  rowspanAfterCorrection = rowspan - rowspanCorrection;
84100
84148
  }
84101
- height = Math.max(height !== null && height !== void 0 ? height : 0, _assertClassBrand(_MergeCells_brand, this, _sumCellsHeights).call(this, row, rowspanAfterCorrection));
84149
+ height = Math.max(height !== null && height !== void 0 ? height : 0, (0, _utils.sumCellsHeights)(this.hot, row, rowspanAfterCorrection));
84102
84150
  });
84103
84151
  return height;
84104
84152
  }
84105
- /**
84106
- * Sums the heights of the all cells that the merge cell consists of.
84107
- *
84108
- * @param {number} row The visual row index of the merged cell.
84109
- * @param {number} rowspan The rowspan value of the merged cell.
84110
- * @returns {number}
84111
- */
84112
- function _sumCellsHeights(row, rowspan) {
84113
- const {
84114
- view,
84115
- rowIndexMapper
84116
- } = this.hot;
84117
- const stylesHandler = view.getStylesHandler();
84118
- const defaultHeight = view.getDefaultRowHeight();
84119
- let height = 0;
84120
- for (let i = row; i < row + rowspan; i++) {
84121
- if (!rowIndexMapper.isHidden(i)) {
84122
- var _this$hot$getRowHeigh;
84123
- height += (_this$hot$getRowHeigh = this.hot.getRowHeight(i)) !== null && _this$hot$getRowHeigh !== void 0 ? _this$hot$getRowHeigh : defaultHeight;
84124
- if (i === 0 && !stylesHandler.isClassicTheme()) {
84125
- height += 1; // border-top-width
84126
- }
84127
- }
84128
- }
84129
- return height;
84130
- }
84131
84153
 
84132
84154
  /***/ }),
84133
84155
  /* 690 */
@@ -86312,6 +86334,8 @@ var _default = exports["default"] = LinkedList;
86312
86334
  exports.__esModule = true;
86313
86335
  exports.createMergeCellRenderer = createMergeCellRenderer;
86314
86336
  var _object = __webpack_require__(165);
86337
+ var _browser = __webpack_require__(164);
86338
+ var _utils = __webpack_require__(702);
86315
86339
  /**
86316
86340
  * Creates a renderer object for the `MergeCells` plugin.
86317
86341
  *
@@ -86327,6 +86351,7 @@ function createMergeCellRenderer(plugin) {
86327
86351
  rowIndexMapper: rowMapper,
86328
86352
  columnIndexMapper: columnMapper
86329
86353
  } = hot;
86354
+ const updateNextCellsHeight = new Map();
86330
86355
 
86331
86356
  /**
86332
86357
  * Runs before the cell is rendered.
@@ -86348,6 +86373,10 @@ function createMergeCellRenderer(plugin) {
86348
86373
  if (!(0, _object.isObject)(mergedCell)) {
86349
86374
  TD.removeAttribute('rowspan');
86350
86375
  TD.removeAttribute('colspan');
86376
+ if ((0, _browser.isSafari)() && updateNextCellsHeight.has(row) && !hot.getSettings().rowHeaders) {
86377
+ TD.style.height = `${updateNextCellsHeight.get(row)}px`;
86378
+ updateNextCellsHeight.delete(row);
86379
+ }
86351
86380
  TD.style.display = '';
86352
86381
  return;
86353
86382
  }
@@ -86359,6 +86388,14 @@ function createMergeCellRenderer(plugin) {
86359
86388
  } = mergedCell;
86360
86389
  const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
86361
86390
  const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
86391
+
86392
+ // Safari bug fix - the height of the cells next to the merged cell must be defined
86393
+ // so that their height is proportional to the height of the merged cell
86394
+ // (this emulates default behavior in Chrome, FF etc.)
86395
+ if ((0, _browser.isSafari)() && origColumn === 0 && !hot.getSettings().rowHeaders) {
86396
+ const height = (0, _utils.sumCellsHeights)(hot, origRow, origRowspan);
86397
+ updateNextCellsHeight.set(row, height / origRowspan);
86398
+ }
86362
86399
  const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
86363
86400
  const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
86364
86401
  const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
@@ -86394,19 +86431,56 @@ function createMergeCellRenderer(plugin) {
86394
86431
 
86395
86432
  /***/ }),
86396
86433
  /* 702 */
86434
+ /***/ ((__unused_webpack_module, exports) => {
86435
+
86436
+ "use strict";
86437
+
86438
+
86439
+ exports.__esModule = true;
86440
+ exports.sumCellsHeights = sumCellsHeights;
86441
+ /**
86442
+ * Calculates the total height of the merged cell.
86443
+ *
86444
+ * @param {Core} hotInstance The Handsontable instance.
86445
+ * @param {*} row The merged cell's row index.
86446
+ * @param {*} rowspan The merged cell height.
86447
+ * @returns {number}
86448
+ */
86449
+ function sumCellsHeights(hotInstance, row, rowspan) {
86450
+ const {
86451
+ view,
86452
+ rowIndexMapper
86453
+ } = hotInstance;
86454
+ const stylesHandler = view.getStylesHandler();
86455
+ const defaultHeight = view.getDefaultRowHeight();
86456
+ let height = 0;
86457
+ for (let i = row; i < row + rowspan; i++) {
86458
+ if (!rowIndexMapper.isHidden(i)) {
86459
+ var _hotInstance$getRowHe;
86460
+ height += (_hotInstance$getRowHe = hotInstance.getRowHeight(i)) !== null && _hotInstance$getRowHe !== void 0 ? _hotInstance$getRowHe : defaultHeight;
86461
+ if (i === 0 && !stylesHandler.isClassicTheme()) {
86462
+ height += 1; // border-top-width
86463
+ }
86464
+ }
86465
+ }
86466
+ return height;
86467
+ }
86468
+
86469
+ /***/ }),
86470
+ /* 703 */
86397
86471
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86398
86472
 
86399
86473
  "use strict";
86400
86474
 
86401
86475
 
86402
86476
  exports.__esModule = true;
86403
- var _multiColumnSorting = __webpack_require__(703);
86477
+ var _multiColumnSorting = __webpack_require__(704);
86404
86478
  exports.PLUGIN_KEY = _multiColumnSorting.PLUGIN_KEY;
86405
86479
  exports.PLUGIN_PRIORITY = _multiColumnSorting.PLUGIN_PRIORITY;
86406
86480
  exports.MultiColumnSorting = _multiColumnSorting.MultiColumnSorting;
86407
86481
 
86408
86482
  /***/ }),
86409
- /* 703 */
86483
+ /* 704 */
86410
86484
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86411
86485
 
86412
86486
  "use strict";
@@ -86419,8 +86493,8 @@ var _columnSorting = __webpack_require__(522);
86419
86493
  var _sortService = __webpack_require__(526);
86420
86494
  var _utils = __webpack_require__(525);
86421
86495
  var _element = __webpack_require__(155);
86422
- var _rootComparator = __webpack_require__(704);
86423
- var _domHelpers = __webpack_require__(705);
86496
+ var _rootComparator = __webpack_require__(705);
86497
+ var _domHelpers = __webpack_require__(706);
86424
86498
  var _shortcutContexts = __webpack_require__(352);
86425
86499
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'multiColumnSorting';
86426
86500
  const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 170;
@@ -86706,7 +86780,7 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
86706
86780
  exports.MultiColumnSorting = MultiColumnSorting;
86707
86781
 
86708
86782
  /***/ }),
86709
- /* 704 */
86783
+ /* 705 */
86710
86784
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86711
86785
 
86712
86786
  "use strict";
@@ -86748,7 +86822,7 @@ function rootComparator(sortingOrders, columnMetas) {
86748
86822
  }
86749
86823
 
86750
86824
  /***/ }),
86751
- /* 705 */
86825
+ /* 706 */
86752
86826
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86753
86827
 
86754
86828
  "use strict";
@@ -86794,20 +86868,20 @@ function getClassesToRemove(htmlElement) {
86794
86868
  }
86795
86869
 
86796
86870
  /***/ }),
86797
- /* 706 */
86871
+ /* 707 */
86798
86872
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86799
86873
 
86800
86874
  "use strict";
86801
86875
 
86802
86876
 
86803
86877
  exports.__esModule = true;
86804
- var _multipleSelectionHandles = __webpack_require__(707);
86878
+ var _multipleSelectionHandles = __webpack_require__(708);
86805
86879
  exports.PLUGIN_KEY = _multipleSelectionHandles.PLUGIN_KEY;
86806
86880
  exports.PLUGIN_PRIORITY = _multipleSelectionHandles.PLUGIN_PRIORITY;
86807
86881
  exports.MultipleSelectionHandles = _multipleSelectionHandles.MultipleSelectionHandles;
86808
86882
 
86809
86883
  /***/ }),
86810
- /* 707 */
86884
+ /* 708 */
86811
86885
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
86812
86886
 
86813
86887
  "use strict";
@@ -87146,20 +87220,20 @@ class MultipleSelectionHandles extends _base.BasePlugin {
87146
87220
  exports.MultipleSelectionHandles = MultipleSelectionHandles;
87147
87221
 
87148
87222
  /***/ }),
87149
- /* 708 */
87223
+ /* 709 */
87150
87224
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
87151
87225
 
87152
87226
  "use strict";
87153
87227
 
87154
87228
 
87155
87229
  exports.__esModule = true;
87156
- var _nestedHeaders = __webpack_require__(709);
87230
+ var _nestedHeaders = __webpack_require__(710);
87157
87231
  exports.PLUGIN_KEY = _nestedHeaders.PLUGIN_KEY;
87158
87232
  exports.PLUGIN_PRIORITY = _nestedHeaders.PLUGIN_PRIORITY;
87159
87233
  exports.NestedHeaders = _nestedHeaders.NestedHeaders;
87160
87234
 
87161
87235
  /***/ }),
87162
- /* 709 */
87236
+ /* 710 */
87163
87237
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
87164
87238
 
87165
87239
  "use strict";
@@ -87179,8 +87253,8 @@ var _event = __webpack_require__(175);
87179
87253
  var _console = __webpack_require__(178);
87180
87254
  var _selection = __webpack_require__(318);
87181
87255
  var _base = __webpack_require__(507);
87182
- var _stateManager2 = _interopRequireDefault(__webpack_require__(710));
87183
- var _ghostTable = _interopRequireDefault(__webpack_require__(723));
87256
+ var _stateManager2 = _interopRequireDefault(__webpack_require__(711));
87257
+ var _ghostTable = _interopRequireDefault(__webpack_require__(724));
87184
87258
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
87185
87259
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
87186
87260
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -88168,7 +88242,7 @@ function _onAfterLoadData(sourceData, initialLoad) {
88168
88242
  }
88169
88243
 
88170
88244
  /***/ }),
88171
- /* 710 */
88245
+ /* 711 */
88172
88246
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
88173
88247
 
88174
88248
  "use strict";
@@ -88181,11 +88255,11 @@ __webpack_require__(87);
88181
88255
  __webpack_require__(115);
88182
88256
  __webpack_require__(142);
88183
88257
  var _array = __webpack_require__(161);
88184
- var _sourceSettings2 = _interopRequireDefault(__webpack_require__(711));
88185
- var _headersTree2 = _interopRequireDefault(__webpack_require__(714));
88186
- var _nodeModifiers = __webpack_require__(716);
88187
- var _matrixGenerator = __webpack_require__(722);
88188
- var _tree = __webpack_require__(715);
88258
+ var _sourceSettings2 = _interopRequireDefault(__webpack_require__(712));
88259
+ var _headersTree2 = _interopRequireDefault(__webpack_require__(715));
88260
+ var _nodeModifiers = __webpack_require__(717);
88261
+ var _matrixGenerator = __webpack_require__(723);
88262
+ var _tree = __webpack_require__(716);
88189
88263
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
88190
88264
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
88191
88265
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
@@ -88660,7 +88734,7 @@ class StateManager {
88660
88734
  exports["default"] = StateManager;
88661
88735
 
88662
88736
  /***/ }),
88663
- /* 711 */
88737
+ /* 712 */
88664
88738
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
88665
88739
 
88666
88740
  "use strict";
@@ -88671,7 +88745,7 @@ __webpack_require__(5);
88671
88745
  __webpack_require__(87);
88672
88746
  var _object = __webpack_require__(165);
88673
88747
  var _array = __webpack_require__(161);
88674
- var _settingsNormalizer = __webpack_require__(712);
88748
+ var _settingsNormalizer = __webpack_require__(713);
88675
88749
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
88676
88750
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
88677
88751
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -88882,7 +88956,7 @@ class SourceSettings {
88882
88956
  exports["default"] = SourceSettings;
88883
88957
 
88884
88958
  /***/ }),
88885
- /* 712 */
88959
+ /* 713 */
88886
88960
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
88887
88961
 
88888
88962
  "use strict";
@@ -88894,7 +88968,7 @@ __webpack_require__(87);
88894
88968
  var _array = __webpack_require__(161);
88895
88969
  var _object = __webpack_require__(165);
88896
88970
  var _mixed = __webpack_require__(158);
88897
- var _utils = __webpack_require__(713);
88971
+ var _utils = __webpack_require__(714);
88898
88972
  /* eslint-disable jsdoc/require-description-complete-sentence */
88899
88973
 
88900
88974
  /**
@@ -88996,7 +89070,7 @@ function normalizeSettings(sourceSettings) {
88996
89070
  }
88997
89071
 
88998
89072
  /***/ }),
88999
- /* 713 */
89073
+ /* 714 */
89000
89074
  /***/ ((__unused_webpack_module, exports) => {
89001
89075
 
89002
89076
  "use strict";
@@ -89073,7 +89147,7 @@ function createPlaceholderHeaderSettings() {
89073
89147
  }
89074
89148
 
89075
89149
  /***/ }),
89076
- /* 714 */
89150
+ /* 715 */
89077
89151
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89078
89152
 
89079
89153
  "use strict";
@@ -89083,7 +89157,7 @@ var _interopRequireDefault = __webpack_require__(1);
89083
89157
  exports.__esModule = true;
89084
89158
  __webpack_require__(5);
89085
89159
  var _array = __webpack_require__(161);
89086
- var _tree = _interopRequireDefault(__webpack_require__(715));
89160
+ var _tree = _interopRequireDefault(__webpack_require__(716));
89087
89161
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
89088
89162
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
89089
89163
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -89311,7 +89385,7 @@ class HeadersTree {
89311
89385
  exports["default"] = HeadersTree;
89312
89386
 
89313
89387
  /***/ }),
89314
- /* 715 */
89388
+ /* 716 */
89315
89389
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89316
89390
 
89317
89391
  "use strict";
@@ -89530,7 +89604,7 @@ class TreeNode {
89530
89604
  exports["default"] = TreeNode;
89531
89605
 
89532
89606
  /***/ }),
89533
- /* 716 */
89607
+ /* 717 */
89534
89608
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89535
89609
 
89536
89610
  "use strict";
@@ -89539,10 +89613,10 @@ exports["default"] = TreeNode;
89539
89613
  exports.__esModule = true;
89540
89614
  exports.triggerNodeModification = triggerNodeModification;
89541
89615
  __webpack_require__(5);
89542
- var _collapse = __webpack_require__(717);
89543
- var _expand = __webpack_require__(718);
89544
- var _hideColumn = __webpack_require__(720);
89545
- var _showColumn = __webpack_require__(721);
89616
+ var _collapse = __webpack_require__(718);
89617
+ var _expand = __webpack_require__(719);
89618
+ var _hideColumn = __webpack_require__(721);
89619
+ var _showColumn = __webpack_require__(722);
89546
89620
  /**
89547
89621
  * The NodeModifiers module is responsible for the modification of a tree structure
89548
89622
  * in a way to achieve new column headers state.
@@ -89572,7 +89646,7 @@ function triggerNodeModification(actionName, nodeToProcess, gridColumnIndex) {
89572
89646
  }
89573
89647
 
89574
89648
  /***/ }),
89575
- /* 717 */
89649
+ /* 718 */
89576
89650
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89577
89651
 
89578
89652
  "use strict";
@@ -89588,8 +89662,8 @@ __webpack_require__(109);
89588
89662
  __webpack_require__(111);
89589
89663
  __webpack_require__(113);
89590
89664
  var _array = __webpack_require__(161);
89591
- var _expand = __webpack_require__(718);
89592
- var _tree = __webpack_require__(719);
89665
+ var _expand = __webpack_require__(719);
89666
+ var _tree = __webpack_require__(720);
89593
89667
  /**
89594
89668
  * Collapsing a node is a process where the processing node is collapsed
89595
89669
  * to the colspan width of the first child. All node children, except the
@@ -89682,7 +89756,7 @@ function collapseNode(nodeToProcess) {
89682
89756
  }
89683
89757
 
89684
89758
  /***/ }),
89685
- /* 718 */
89759
+ /* 719 */
89686
89760
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89687
89761
 
89688
89762
  "use strict";
@@ -89698,8 +89772,8 @@ __webpack_require__(109);
89698
89772
  __webpack_require__(111);
89699
89773
  __webpack_require__(113);
89700
89774
  var _array = __webpack_require__(161);
89701
- var _collapse = __webpack_require__(717);
89702
- var _tree = __webpack_require__(719);
89775
+ var _collapse = __webpack_require__(718);
89776
+ var _tree = __webpack_require__(720);
89703
89777
  /**
89704
89778
  * Expanding a node is a process where the processing node is expanded to
89705
89779
  * its original colspan width. To restore an original state of all node
@@ -89787,7 +89861,7 @@ function expandNode(nodeToProcess) {
89787
89861
  }
89788
89862
 
89789
89863
  /***/ }),
89790
- /* 719 */
89864
+ /* 720 */
89791
89865
  /***/ ((__unused_webpack_module, exports) => {
89792
89866
 
89793
89867
  "use strict";
@@ -89858,7 +89932,7 @@ function isNodeReflectsFirstChildColspan(node) {
89858
89932
  }
89859
89933
 
89860
89934
  /***/ }),
89861
- /* 720 */
89935
+ /* 721 */
89862
89936
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89863
89937
 
89864
89938
  "use strict";
@@ -89921,7 +89995,7 @@ the last node, the hide column modification can be applied.`);
89921
89995
  }
89922
89996
 
89923
89997
  /***/ }),
89924
- /* 721 */
89998
+ /* 722 */
89925
89999
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89926
90000
 
89927
90001
  "use strict";
@@ -89982,7 +90056,7 @@ the last node, the show column modification can be applied.`);
89982
90056
  }
89983
90057
 
89984
90058
  /***/ }),
89985
- /* 722 */
90059
+ /* 723 */
89986
90060
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
89987
90061
 
89988
90062
  "use strict";
@@ -89992,7 +90066,7 @@ exports.__esModule = true;
89992
90066
  exports.generateMatrix = generateMatrix;
89993
90067
  __webpack_require__(87);
89994
90068
  var _array = __webpack_require__(161);
89995
- var _utils = __webpack_require__(713);
90069
+ var _utils = __webpack_require__(714);
89996
90070
  /* eslint-disable jsdoc/require-description-complete-sentence */
89997
90071
 
89998
90072
  /**
@@ -90088,7 +90162,7 @@ function createNestedArrayIfNecessary(array, index) {
90088
90162
  }
90089
90163
 
90090
90164
  /***/ }),
90091
- /* 723 */
90165
+ /* 724 */
90092
90166
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
90093
90167
 
90094
90168
  "use strict";
@@ -90244,20 +90318,20 @@ class GhostTable {
90244
90318
  var _default = exports["default"] = GhostTable;
90245
90319
 
90246
90320
  /***/ }),
90247
- /* 724 */
90321
+ /* 725 */
90248
90322
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
90249
90323
 
90250
90324
  "use strict";
90251
90325
 
90252
90326
 
90253
90327
  exports.__esModule = true;
90254
- var _nestedRows = __webpack_require__(725);
90328
+ var _nestedRows = __webpack_require__(726);
90255
90329
  exports.PLUGIN_KEY = _nestedRows.PLUGIN_KEY;
90256
90330
  exports.PLUGIN_PRIORITY = _nestedRows.PLUGIN_PRIORITY;
90257
90331
  exports.NestedRows = _nestedRows.NestedRows;
90258
90332
 
90259
90333
  /***/ }),
90260
- /* 725 */
90334
+ /* 726 */
90261
90335
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
90262
90336
 
90263
90337
  "use strict";
@@ -90279,15 +90353,15 @@ __webpack_require__(133);
90279
90353
  __webpack_require__(196);
90280
90354
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
90281
90355
  var _base = __webpack_require__(507);
90282
- var _dataManager = _interopRequireDefault(__webpack_require__(726));
90283
- var _collapsing = _interopRequireDefault(__webpack_require__(727));
90284
- var _headers = _interopRequireDefault(__webpack_require__(729));
90285
- var _contextMenu = _interopRequireDefault(__webpack_require__(730));
90356
+ var _dataManager = _interopRequireDefault(__webpack_require__(727));
90357
+ var _collapsing = _interopRequireDefault(__webpack_require__(728));
90358
+ var _headers = _interopRequireDefault(__webpack_require__(730));
90359
+ var _contextMenu = _interopRequireDefault(__webpack_require__(731));
90286
90360
  var _console = __webpack_require__(178);
90287
90361
  var _data = __webpack_require__(288);
90288
90362
  var _translations = __webpack_require__(291);
90289
90363
  var _shortcutContexts = __webpack_require__(352);
90290
- var _rowMoveController = _interopRequireDefault(__webpack_require__(731));
90364
+ var _rowMoveController = _interopRequireDefault(__webpack_require__(732));
90291
90365
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
90292
90366
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
90293
90367
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -90819,7 +90893,7 @@ function _onBeforeLoadData(data) {
90819
90893
  }
90820
90894
 
90821
90895
  /***/ }),
90822
- /* 726 */
90896
+ /* 727 */
90823
90897
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
90824
90898
 
90825
90899
  "use strict";
@@ -91450,7 +91524,7 @@ class DataManager {
91450
91524
  */
91451
91525
  syncRowWithRawSource(rowElement) {
91452
91526
  let upmostParent = rowElement;
91453
- let tempParent = null;
91527
+ let tempParent = upmostParent;
91454
91528
  do {
91455
91529
  tempParent = this.getRowParent(tempParent);
91456
91530
  if (tempParent !== null) {
@@ -91458,7 +91532,7 @@ class DataManager {
91458
91532
  }
91459
91533
  } while (tempParent !== null);
91460
91534
  this.plugin.disableCoreAPIModifiers();
91461
- this.hot.setSourceDataAtCell(this.getRowIndex(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
91535
+ this.hot.setSourceDataAtCell(this.getRowIndexWithinParent(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
91462
91536
  this.plugin.enableCoreAPIModifiers();
91463
91537
  }
91464
91538
 
@@ -91535,7 +91609,7 @@ class DataManager {
91535
91609
  var _default = exports["default"] = DataManager;
91536
91610
 
91537
91611
  /***/ }),
91538
- /* 727 */
91612
+ /* 728 */
91539
91613
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
91540
91614
 
91541
91615
  "use strict";
@@ -91548,8 +91622,8 @@ var _event = __webpack_require__(175);
91548
91622
  var _array = __webpack_require__(161);
91549
91623
  var _number = __webpack_require__(200);
91550
91624
  var _element = __webpack_require__(155);
91551
- var _base = _interopRequireDefault(__webpack_require__(728));
91552
- var _headers = _interopRequireDefault(__webpack_require__(729));
91625
+ var _base = _interopRequireDefault(__webpack_require__(729));
91626
+ var _headers = _interopRequireDefault(__webpack_require__(730));
91553
91627
  /**
91554
91628
  * Class responsible for the UI for collapsing and expanding groups.
91555
91629
  *
@@ -92010,7 +92084,7 @@ class CollapsingUI extends _base.default {
92010
92084
  var _default = exports["default"] = CollapsingUI;
92011
92085
 
92012
92086
  /***/ }),
92013
- /* 728 */
92087
+ /* 729 */
92014
92088
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92015
92089
 
92016
92090
  "use strict";
@@ -92044,7 +92118,7 @@ class BaseUI {
92044
92118
  var _default = exports["default"] = BaseUI;
92045
92119
 
92046
92120
  /***/ }),
92047
- /* 729 */
92121
+ /* 730 */
92048
92122
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92049
92123
 
92050
92124
  "use strict";
@@ -92055,7 +92129,7 @@ exports.__esModule = true;
92055
92129
  var _array = __webpack_require__(161);
92056
92130
  var _number = __webpack_require__(200);
92057
92131
  var _element = __webpack_require__(155);
92058
- var _base = _interopRequireDefault(__webpack_require__(728));
92132
+ var _base = _interopRequireDefault(__webpack_require__(729));
92059
92133
  var _a11y = __webpack_require__(162);
92060
92134
  /**
92061
92135
  * Class responsible for the UI in the Nested Rows' row headers.
@@ -92188,7 +92262,7 @@ class HeadersUI extends _base.default {
92188
92262
  var _default = exports["default"] = HeadersUI;
92189
92263
 
92190
92264
  /***/ }),
92191
- /* 730 */
92265
+ /* 731 */
92192
92266
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92193
92267
 
92194
92268
  "use strict";
@@ -92201,7 +92275,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
92201
92275
  var _number = __webpack_require__(200);
92202
92276
  var _array = __webpack_require__(161);
92203
92277
  var C = _interopRequireWildcard(__webpack_require__(317));
92204
- var _base = _interopRequireDefault(__webpack_require__(728));
92278
+ var _base = _interopRequireDefault(__webpack_require__(729));
92205
92279
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
92206
92280
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
92207
92281
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
@@ -92307,7 +92381,7 @@ class ContextMenuUI extends _base.default {
92307
92381
  var _default = exports["default"] = ContextMenuUI;
92308
92382
 
92309
92383
  /***/ }),
92310
- /* 731 */
92384
+ /* 732 */
92311
92385
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92312
92386
 
92313
92387
  "use strict";
@@ -92596,20 +92670,20 @@ class RowMoveController {
92596
92670
  exports["default"] = RowMoveController;
92597
92671
 
92598
92672
  /***/ }),
92599
- /* 732 */
92673
+ /* 733 */
92600
92674
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92601
92675
 
92602
92676
  "use strict";
92603
92677
 
92604
92678
 
92605
92679
  exports.__esModule = true;
92606
- var _persistentState = __webpack_require__(733);
92680
+ var _persistentState = __webpack_require__(734);
92607
92681
  exports.PLUGIN_KEY = _persistentState.PLUGIN_KEY;
92608
92682
  exports.PLUGIN_PRIORITY = _persistentState.PLUGIN_PRIORITY;
92609
92683
  exports.PersistentState = _persistentState.PersistentState;
92610
92684
 
92611
92685
  /***/ }),
92612
- /* 733 */
92686
+ /* 734 */
92613
92687
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92614
92688
 
92615
92689
  "use strict";
@@ -92619,7 +92693,7 @@ var _interopRequireDefault = __webpack_require__(1);
92619
92693
  exports.__esModule = true;
92620
92694
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
92621
92695
  var _base = __webpack_require__(507);
92622
- var _storage = _interopRequireDefault(__webpack_require__(734));
92696
+ var _storage = _interopRequireDefault(__webpack_require__(735));
92623
92697
  var _hooks = __webpack_require__(177);
92624
92698
  _hooks.Hooks.getSingleton().register('persistentStateSave');
92625
92699
  _hooks.Hooks.getSingleton().register('persistentStateLoad');
@@ -92760,7 +92834,7 @@ class PersistentState extends _base.BasePlugin {
92760
92834
  exports.PersistentState = PersistentState;
92761
92835
 
92762
92836
  /***/ }),
92763
- /* 734 */
92837
+ /* 735 */
92764
92838
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92765
92839
 
92766
92840
  "use strict";
@@ -92884,20 +92958,20 @@ class Storage {
92884
92958
  var _default = exports["default"] = Storage;
92885
92959
 
92886
92960
  /***/ }),
92887
- /* 735 */
92961
+ /* 736 */
92888
92962
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92889
92963
 
92890
92964
  "use strict";
92891
92965
 
92892
92966
 
92893
92967
  exports.__esModule = true;
92894
- var _search = __webpack_require__(736);
92968
+ var _search = __webpack_require__(737);
92895
92969
  exports.PLUGIN_KEY = _search.PLUGIN_KEY;
92896
92970
  exports.PLUGIN_PRIORITY = _search.PLUGIN_PRIORITY;
92897
92971
  exports.Search = _search.Search;
92898
92972
 
92899
92973
  /***/ }),
92900
- /* 736 */
92974
+ /* 737 */
92901
92975
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
92902
92976
 
92903
92977
  "use strict";
@@ -93205,20 +93279,20 @@ function _onBeforeRenderer(TD, row, col, prop, value, cellProperties) {
93205
93279
  }
93206
93280
 
93207
93281
  /***/ }),
93208
- /* 737 */
93282
+ /* 738 */
93209
93283
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93210
93284
 
93211
93285
  "use strict";
93212
93286
 
93213
93287
 
93214
93288
  exports.__esModule = true;
93215
- var _stretchColumns = __webpack_require__(738);
93289
+ var _stretchColumns = __webpack_require__(739);
93216
93290
  exports.PLUGIN_KEY = _stretchColumns.PLUGIN_KEY;
93217
93291
  exports.PLUGIN_PRIORITY = _stretchColumns.PLUGIN_PRIORITY;
93218
93292
  exports.StretchColumns = _stretchColumns.StretchColumns;
93219
93293
 
93220
93294
  /***/ }),
93221
- /* 738 */
93295
+ /* 739 */
93222
93296
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93223
93297
 
93224
93298
  "use strict";
@@ -93229,7 +93303,7 @@ __webpack_require__(5);
93229
93303
  __webpack_require__(115);
93230
93304
  __webpack_require__(133);
93231
93305
  var _base = __webpack_require__(507);
93232
- var _calculator = __webpack_require__(739);
93306
+ var _calculator = __webpack_require__(740);
93233
93307
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
93234
93308
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
93235
93309
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -93446,7 +93520,7 @@ function _onBeforeRender(fullRender) {
93446
93520
  }
93447
93521
 
93448
93522
  /***/ }),
93449
- /* 739 */
93523
+ /* 740 */
93450
93524
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93451
93525
 
93452
93526
  "use strict";
@@ -93458,8 +93532,8 @@ __webpack_require__(115);
93458
93532
  __webpack_require__(133);
93459
93533
  var _src = __webpack_require__(206);
93460
93534
  var _element = __webpack_require__(155);
93461
- var _all = __webpack_require__(740);
93462
- var _last = __webpack_require__(742);
93535
+ var _all = __webpack_require__(741);
93536
+ var _last = __webpack_require__(743);
93463
93537
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
93464
93538
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
93465
93539
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -93614,7 +93688,7 @@ function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
93614
93688
  }
93615
93689
 
93616
93690
  /***/ }),
93617
- /* 740 */
93691
+ /* 741 */
93618
93692
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93619
93693
 
93620
93694
  "use strict";
@@ -93626,7 +93700,7 @@ __webpack_require__(115);
93626
93700
  __webpack_require__(133);
93627
93701
  __webpack_require__(196);
93628
93702
  var _src = __webpack_require__(206);
93629
- var _base = __webpack_require__(741);
93703
+ var _base = __webpack_require__(742);
93630
93704
  /**
93631
93705
  * The strategy calculates the column widths by stretching all columns evenly.
93632
93706
  *
@@ -93691,7 +93765,7 @@ class StretchAllStrategy extends _base.StretchStrategy {
93691
93765
  exports.StretchAllStrategy = StretchAllStrategy;
93692
93766
 
93693
93767
  /***/ }),
93694
- /* 741 */
93768
+ /* 742 */
93695
93769
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93696
93770
 
93697
93771
  "use strict";
@@ -93780,7 +93854,7 @@ class StretchStrategy {
93780
93854
  exports.StretchStrategy = StretchStrategy;
93781
93855
 
93782
93856
  /***/ }),
93783
- /* 742 */
93857
+ /* 743 */
93784
93858
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93785
93859
 
93786
93860
  "use strict";
@@ -93790,7 +93864,7 @@ exports.__esModule = true;
93790
93864
  __webpack_require__(5);
93791
93865
  __webpack_require__(115);
93792
93866
  __webpack_require__(196);
93793
- var _base = __webpack_require__(741);
93867
+ var _base = __webpack_require__(742);
93794
93868
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
93795
93869
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
93796
93870
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -93865,20 +93939,20 @@ class StretchLastStrategy extends _base.StretchStrategy {
93865
93939
  exports.StretchLastStrategy = StretchLastStrategy;
93866
93940
 
93867
93941
  /***/ }),
93868
- /* 743 */
93942
+ /* 744 */
93869
93943
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93870
93944
 
93871
93945
  "use strict";
93872
93946
 
93873
93947
 
93874
93948
  exports.__esModule = true;
93875
- var _touchScroll = __webpack_require__(744);
93949
+ var _touchScroll = __webpack_require__(745);
93876
93950
  exports.PLUGIN_KEY = _touchScroll.PLUGIN_KEY;
93877
93951
  exports.PLUGIN_PRIORITY = _touchScroll.PLUGIN_PRIORITY;
93878
93952
  exports.TouchScroll = _touchScroll.TouchScroll;
93879
93953
 
93880
93954
  /***/ }),
93881
- /* 744 */
93955
+ /* 745 */
93882
93956
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
93883
93957
 
93884
93958
  "use strict";
@@ -94067,20 +94141,20 @@ function _onAfterMomentumScroll() {
94067
94141
  }
94068
94142
 
94069
94143
  /***/ }),
94070
- /* 745 */
94144
+ /* 746 */
94071
94145
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94072
94146
 
94073
94147
  "use strict";
94074
94148
 
94075
94149
 
94076
94150
  exports.__esModule = true;
94077
- var _trimRows = __webpack_require__(746);
94151
+ var _trimRows = __webpack_require__(747);
94078
94152
  exports.PLUGIN_KEY = _trimRows.PLUGIN_KEY;
94079
94153
  exports.PLUGIN_PRIORITY = _trimRows.PLUGIN_PRIORITY;
94080
94154
  exports.TrimRows = _trimRows.TrimRows;
94081
94155
 
94082
94156
  /***/ }),
94083
- /* 746 */
94157
+ /* 747 */
94084
94158
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94085
94159
 
94086
94160
  "use strict";
@@ -94412,20 +94486,20 @@ function _onMapInit() {
94412
94486
  }
94413
94487
 
94414
94488
  /***/ }),
94415
- /* 747 */
94489
+ /* 748 */
94416
94490
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94417
94491
 
94418
94492
  "use strict";
94419
94493
 
94420
94494
 
94421
94495
  exports.__esModule = true;
94422
- var _undoRedo = __webpack_require__(748);
94496
+ var _undoRedo = __webpack_require__(749);
94423
94497
  exports.PLUGIN_KEY = _undoRedo.PLUGIN_KEY;
94424
94498
  exports.PLUGIN_PRIORITY = _undoRedo.PLUGIN_PRIORITY;
94425
94499
  exports.UndoRedo = _undoRedo.UndoRedo;
94426
94500
 
94427
94501
  /***/ }),
94428
- /* 748 */
94502
+ /* 749 */
94429
94503
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94430
94504
 
94431
94505
  "use strict";
@@ -94448,7 +94522,7 @@ var _hooks = __webpack_require__(177);
94448
94522
  var _object = __webpack_require__(165);
94449
94523
  var _templateLiteralTag = __webpack_require__(160);
94450
94524
  var _console = __webpack_require__(178);
94451
- var _actions = __webpack_require__(749);
94525
+ var _actions = __webpack_require__(750);
94452
94526
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
94453
94527
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
94454
94528
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
@@ -94818,7 +94892,7 @@ function _removeAPIFromCore() {
94818
94892
  }
94819
94893
 
94820
94894
  /***/ }),
94821
- /* 749 */
94895
+ /* 750 */
94822
94896
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94823
94897
 
94824
94898
  "use strict";
@@ -94828,18 +94902,18 @@ exports.__esModule = true;
94828
94902
  exports.registerActions = registerActions;
94829
94903
  __webpack_require__(115);
94830
94904
  __webpack_require__(133);
94831
- var _cellAlignment = __webpack_require__(750);
94832
- var _columnMove = __webpack_require__(752);
94833
- var _columnSort = __webpack_require__(753);
94834
- var _createColumn = __webpack_require__(754);
94835
- var _createRow = __webpack_require__(755);
94836
- var _dataChange = __webpack_require__(756);
94837
- var _filters = __webpack_require__(757);
94838
- var _mergeCells = __webpack_require__(758);
94839
- var _removeColumn = __webpack_require__(759);
94840
- var _removeRow = __webpack_require__(762);
94841
- var _rowMove = __webpack_require__(763);
94842
- var _unmergeCells = __webpack_require__(764);
94905
+ var _cellAlignment = __webpack_require__(751);
94906
+ var _columnMove = __webpack_require__(753);
94907
+ var _columnSort = __webpack_require__(754);
94908
+ var _createColumn = __webpack_require__(755);
94909
+ var _createRow = __webpack_require__(756);
94910
+ var _dataChange = __webpack_require__(757);
94911
+ var _filters = __webpack_require__(758);
94912
+ var _mergeCells = __webpack_require__(759);
94913
+ var _removeColumn = __webpack_require__(760);
94914
+ var _removeRow = __webpack_require__(763);
94915
+ var _rowMove = __webpack_require__(764);
94916
+ var _unmergeCells = __webpack_require__(765);
94843
94917
  /**
94844
94918
  * Register all undo/redo actions.
94845
94919
  *
@@ -94851,7 +94925,7 @@ function registerActions(hot, undoRedoPlugin) {
94851
94925
  }
94852
94926
 
94853
94927
  /***/ }),
94854
- /* 750 */
94928
+ /* 751 */
94855
94929
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94856
94930
 
94857
94931
  "use strict";
@@ -94860,7 +94934,7 @@ function registerActions(hot, undoRedoPlugin) {
94860
94934
  var _interopRequireDefault = __webpack_require__(1);
94861
94935
  exports.__esModule = true;
94862
94936
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
94863
- var _base = __webpack_require__(751);
94937
+ var _base = __webpack_require__(752);
94864
94938
  var _utils = __webpack_require__(547);
94865
94939
  var _array = __webpack_require__(161);
94866
94940
  /**
@@ -94940,7 +95014,7 @@ class CellAlignmentAction extends _base.BaseAction {
94940
95014
  exports.CellAlignmentAction = CellAlignmentAction;
94941
95015
 
94942
95016
  /***/ }),
94943
- /* 751 */
95017
+ /* 752 */
94944
95018
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94945
95019
 
94946
95020
  "use strict";
@@ -94974,7 +95048,7 @@ class BaseAction {
94974
95048
  exports.BaseAction = BaseAction;
94975
95049
 
94976
95050
  /***/ }),
94977
- /* 752 */
95051
+ /* 753 */
94978
95052
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
94979
95053
 
94980
95054
  "use strict";
@@ -94985,7 +95059,7 @@ exports.__esModule = true;
94985
95059
  __webpack_require__(115);
94986
95060
  __webpack_require__(133);
94987
95061
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
94988
- var _base = __webpack_require__(751);
95062
+ var _base = __webpack_require__(752);
94989
95063
  var _moves = __webpack_require__(661);
94990
95064
  /**
94991
95065
  * Action that tracks column move changes.
@@ -95062,7 +95136,7 @@ class ColumnMoveAction extends _base.BaseAction {
95062
95136
  exports.ColumnMoveAction = ColumnMoveAction;
95063
95137
 
95064
95138
  /***/ }),
95065
- /* 753 */
95139
+ /* 754 */
95066
95140
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95067
95141
 
95068
95142
  "use strict";
@@ -95071,7 +95145,7 @@ exports.ColumnMoveAction = ColumnMoveAction;
95071
95145
  var _interopRequireDefault = __webpack_require__(1);
95072
95146
  exports.__esModule = true;
95073
95147
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95074
- var _base = __webpack_require__(751);
95148
+ var _base = __webpack_require__(752);
95075
95149
  /**
95076
95150
  * Action that tracks column sort changes.
95077
95151
  *
@@ -95139,7 +95213,7 @@ class ColumnSortAction extends _base.BaseAction {
95139
95213
  exports.ColumnSortAction = ColumnSortAction;
95140
95214
 
95141
95215
  /***/ }),
95142
- /* 754 */
95216
+ /* 755 */
95143
95217
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95144
95218
 
95145
95219
  "use strict";
@@ -95148,7 +95222,7 @@ exports.ColumnSortAction = ColumnSortAction;
95148
95222
  var _interopRequireDefault = __webpack_require__(1);
95149
95223
  exports.__esModule = true;
95150
95224
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95151
- var _base = __webpack_require__(751);
95225
+ var _base = __webpack_require__(752);
95152
95226
  /**
95153
95227
  * Action that tracks column creation.
95154
95228
  *
@@ -95203,7 +95277,7 @@ class CreateColumnAction extends _base.BaseAction {
95203
95277
  exports.CreateColumnAction = CreateColumnAction;
95204
95278
 
95205
95279
  /***/ }),
95206
- /* 755 */
95280
+ /* 756 */
95207
95281
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95208
95282
 
95209
95283
  "use strict";
@@ -95212,7 +95286,7 @@ exports.CreateColumnAction = CreateColumnAction;
95212
95286
  var _interopRequireDefault = __webpack_require__(1);
95213
95287
  exports.__esModule = true;
95214
95288
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95215
- var _base = __webpack_require__(751);
95289
+ var _base = __webpack_require__(752);
95216
95290
  /**
95217
95291
  * Action that tracks row creation.
95218
95292
  *
@@ -95272,7 +95346,7 @@ class CreateRowAction extends _base.BaseAction {
95272
95346
  exports.CreateRowAction = CreateRowAction;
95273
95347
 
95274
95348
  /***/ }),
95275
- /* 756 */
95349
+ /* 757 */
95276
95350
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95277
95351
 
95278
95352
  "use strict";
@@ -95286,7 +95360,7 @@ __webpack_require__(185);
95286
95360
  __webpack_require__(133);
95287
95361
  __webpack_require__(196);
95288
95362
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95289
- var _base = __webpack_require__(751);
95363
+ var _base = __webpack_require__(752);
95290
95364
  var _object = __webpack_require__(165);
95291
95365
  /**
95292
95366
  * Action that tracks data changes.
@@ -95399,7 +95473,7 @@ class DataChangeAction extends _base.BaseAction {
95399
95473
  exports.DataChangeAction = DataChangeAction;
95400
95474
 
95401
95475
  /***/ }),
95402
- /* 757 */
95476
+ /* 758 */
95403
95477
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95404
95478
 
95405
95479
  "use strict";
@@ -95410,7 +95484,7 @@ exports.__esModule = true;
95410
95484
  __webpack_require__(115);
95411
95485
  __webpack_require__(127);
95412
95486
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95413
- var _base = __webpack_require__(751);
95487
+ var _base = __webpack_require__(752);
95414
95488
  /**
95415
95489
  * Action that tracks filter changes.
95416
95490
  *
@@ -95469,7 +95543,7 @@ class FiltersAction extends _base.BaseAction {
95469
95543
  exports.FiltersAction = FiltersAction;
95470
95544
 
95471
95545
  /***/ }),
95472
- /* 758 */
95546
+ /* 759 */
95473
95547
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95474
95548
 
95475
95549
  "use strict";
@@ -95478,7 +95552,7 @@ exports.FiltersAction = FiltersAction;
95478
95552
  var _interopRequireDefault = __webpack_require__(1);
95479
95553
  exports.__esModule = true;
95480
95554
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95481
- var _base = __webpack_require__(751);
95555
+ var _base = __webpack_require__(752);
95482
95556
  /**
95483
95557
  * Action that tracks changes in merged cells.
95484
95558
  *
@@ -95539,7 +95613,7 @@ class MergeCellsAction extends _base.BaseAction {
95539
95613
  exports.MergeCellsAction = MergeCellsAction;
95540
95614
 
95541
95615
  /***/ }),
95542
- /* 759 */
95616
+ /* 760 */
95543
95617
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95544
95618
 
95545
95619
  "use strict";
@@ -95551,8 +95625,8 @@ __webpack_require__(87);
95551
95625
  __webpack_require__(115);
95552
95626
  __webpack_require__(133);
95553
95627
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95554
- var _base = __webpack_require__(751);
95555
- var _utils = __webpack_require__(760);
95628
+ var _base = __webpack_require__(752);
95629
+ var _utils = __webpack_require__(761);
95556
95630
  var _number = __webpack_require__(200);
95557
95631
  var _array = __webpack_require__(161);
95558
95632
  /**
@@ -95580,7 +95654,7 @@ class RemoveColumnAction extends _base.BaseAction {
95580
95654
  */
95581
95655
  (0, _defineProperty2.default)(this, "index", void 0);
95582
95656
  /**
95583
- * @param {number[]} indexes The visual column indexes.
95657
+ * @param {number[]} indexes The physical column indexes.
95584
95658
  */
95585
95659
  (0, _defineProperty2.default)(this, "indexes", void 0);
95586
95660
  /**
@@ -95646,16 +95720,14 @@ class RemoveColumnAction extends _base.BaseAction {
95646
95720
  headers.push(hot.getSettings().colHeaders[hot.toPhysicalColumn(columnIndex + i)] || null);
95647
95721
  });
95648
95722
  }
95649
- const columnsMap = hot.columnIndexMapper.getIndexesSequence();
95650
- const rowsMap = hot.rowIndexMapper.getIndexesSequence();
95651
95723
  return new RemoveColumnAction({
95652
95724
  index: columnIndex,
95653
95725
  indexes,
95654
95726
  data: removedData,
95655
95727
  amount,
95656
95728
  headers,
95657
- columnPositions: columnsMap,
95658
- rowPositions: rowsMap,
95729
+ columnPositions: hot.columnIndexMapper.getIndexesSequence(),
95730
+ rowPositions: hot.rowIndexMapper.getIndexesSequence(),
95659
95731
  fixedColumnsStart: hot.getSettings().fixedColumnsStart,
95660
95732
  removedCellMetas: (0, _utils.getCellMetas)(hot, 0, hot.countRows(), columnIndex, lastColumnIndex)
95661
95733
  });
@@ -95682,14 +95754,27 @@ class RemoveColumnAction extends _base.BaseAction {
95682
95754
  }
95683
95755
  const sortedHeaders = (0, _array.arrayMap)(this.headers, sortByIndexes);
95684
95756
  const changes = [];
95685
- hot.alter('insert_col_start', this.indexes[0], this.indexes.length, 'UndoRedo.undo');
95757
+
95758
+ // The indexes sequence have to be applied twice.
95759
+ // * First for proper index translation. The alter method accepts a visual index
95760
+ // and we are able to retrieve the correct index indicating where to add a new row based
95761
+ // only on the previous order state of the columns;
95762
+ // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
95763
+ // the same as it was in the previous state;
95764
+ hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
95765
+ hot.alter('insert_col_start', hot.toVisualColumn(this.indexes[0]), this.indexes.length, 'UndoRedo.undo');
95766
+ hot.batchExecution(() => {
95767
+ // Restore row sequence in a case when all columns are removed. the original
95768
+ // row sequence is lost in that case.
95769
+ hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
95770
+ hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
95771
+ }, true);
95686
95772
  (0, _array.arrayEach)(hot.getSourceDataArray(), (rowData, rowIndex) => {
95687
95773
  (0, _array.arrayEach)(ascendingIndexes, (changedIndex, contiquesIndex) => {
95688
95774
  rowData[changedIndex] = sortedData[rowIndex][contiquesIndex];
95689
95775
  changes.push([rowIndex, changedIndex, rowData[changedIndex]]);
95690
95776
  });
95691
95777
  });
95692
- hot.setSourceDataAtCell(changes, undefined, undefined, 'UndoRedo.undo');
95693
95778
  if (typeof this.headers !== 'undefined') {
95694
95779
  (0, _array.arrayEach)(sortedHeaders, (headerData, columnIndex) => {
95695
95780
  hot.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;
@@ -95699,14 +95784,8 @@ class RemoveColumnAction extends _base.BaseAction {
95699
95784
  let [rowIndex, columnIndex, cellMeta] = _ref2;
95700
95785
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
95701
95786
  });
95702
- hot.batchExecution(() => {
95703
- // Restore row sequence in a case when all columns are removed. the original
95704
- // row sequence is lost in that case.
95705
- hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
95706
- hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
95707
- }, true);
95708
95787
  hot.addHookOnce('afterViewRender', undoneCallback);
95709
- hot.render();
95788
+ hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
95710
95789
  }
95711
95790
 
95712
95791
  /**
@@ -95721,7 +95800,7 @@ class RemoveColumnAction extends _base.BaseAction {
95721
95800
  exports.RemoveColumnAction = RemoveColumnAction;
95722
95801
 
95723
95802
  /***/ }),
95724
- /* 760 */
95803
+ /* 761 */
95725
95804
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95726
95805
 
95727
95806
  "use strict";
@@ -95730,7 +95809,7 @@ exports.RemoveColumnAction = RemoveColumnAction;
95730
95809
  exports.__esModule = true;
95731
95810
  exports.getCellMetas = getCellMetas;
95732
95811
  __webpack_require__(87);
95733
- __webpack_require__(761);
95812
+ __webpack_require__(762);
95734
95813
  __webpack_require__(115);
95735
95814
  __webpack_require__(127);
95736
95815
  var _number = __webpack_require__(200);
@@ -95764,7 +95843,7 @@ function getCellMetas(hot, fromRow, toRow, fromColumn, toColumn) {
95764
95843
  }
95765
95844
 
95766
95845
  /***/ }),
95767
- /* 761 */
95846
+ /* 762 */
95768
95847
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
95769
95848
 
95770
95849
  "use strict";
@@ -95787,7 +95866,7 @@ $({ target: 'Object', stat: true }, {
95787
95866
 
95788
95867
 
95789
95868
  /***/ }),
95790
- /* 762 */
95869
+ /* 763 */
95791
95870
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95792
95871
 
95793
95872
  "use strict";
@@ -95799,8 +95878,8 @@ __webpack_require__(87);
95799
95878
  __webpack_require__(115);
95800
95879
  __webpack_require__(133);
95801
95880
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95802
- var _base = __webpack_require__(751);
95803
- var _utils = __webpack_require__(760);
95881
+ var _base = __webpack_require__(752);
95882
+ var _utils = __webpack_require__(761);
95804
95883
  var _object = __webpack_require__(165);
95805
95884
  /**
95806
95885
  * Action that tracks changes in row removal.
@@ -95820,7 +95899,7 @@ class RemoveRowAction extends _base.BaseAction {
95820
95899
  } = _ref;
95821
95900
  super('remove_row');
95822
95901
  /**
95823
- * @param {number} index The visual row index.
95902
+ * @param {number} index The physical row index.
95824
95903
  */
95825
95904
  (0, _defineProperty2.default)(this, "index", void 0);
95826
95905
  /**
@@ -95888,14 +95967,22 @@ class RemoveRowAction extends _base.BaseAction {
95888
95967
  changes.push([this.index + rowIndexDelta, isNaN(columnIndex) ? columnProp : columnIndex, dataRow[columnProp]]);
95889
95968
  });
95890
95969
  });
95891
- hot.alter('insert_row_above', this.index, this.data.length, 'UndoRedo.undo');
95970
+
95971
+ // The indexes sequence have to be applied twice.
95972
+ // * First for proper index translation. The alter method accepts a visual index
95973
+ // and we are able to retrieve the correct index indicating where to add a new row based
95974
+ // only on the previous order state of the rows;
95975
+ // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
95976
+ // the same as it was in the previous state;
95977
+ hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
95978
+ hot.alter('insert_row_above', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.undo');
95979
+ hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
95892
95980
  this.removedCellMetas.forEach(_ref2 => {
95893
95981
  let [rowIndex, columnIndex, cellMeta] = _ref2;
95894
95982
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
95895
95983
  });
95896
95984
  hot.addHookOnce('afterViewRender', undoneCallback);
95897
95985
  hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
95898
- hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
95899
95986
  }
95900
95987
 
95901
95988
  /**
@@ -95904,13 +95991,13 @@ class RemoveRowAction extends _base.BaseAction {
95904
95991
  */
95905
95992
  redo(hot, redoneCallback) {
95906
95993
  hot.addHookOnce('afterRemoveRow', redoneCallback);
95907
- hot.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo');
95994
+ hot.alter('remove_row', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.redo');
95908
95995
  }
95909
95996
  }
95910
95997
  exports.RemoveRowAction = RemoveRowAction;
95911
95998
 
95912
95999
  /***/ }),
95913
- /* 763 */
96000
+ /* 764 */
95914
96001
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
95915
96002
 
95916
96003
  "use strict";
@@ -95921,7 +96008,7 @@ exports.__esModule = true;
95921
96008
  __webpack_require__(115);
95922
96009
  __webpack_require__(133);
95923
96010
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
95924
- var _base = __webpack_require__(751);
96011
+ var _base = __webpack_require__(752);
95925
96012
  var _moves = __webpack_require__(661);
95926
96013
  /**
95927
96014
  * Action that tracks row move changes.
@@ -95998,7 +96085,7 @@ class RowMoveAction extends _base.BaseAction {
95998
96085
  exports.RowMoveAction = RowMoveAction;
95999
96086
 
96000
96087
  /***/ }),
96001
- /* 764 */
96088
+ /* 765 */
96002
96089
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
96003
96090
 
96004
96091
  "use strict";
@@ -96007,7 +96094,7 @@ exports.RowMoveAction = RowMoveAction;
96007
96094
  var _interopRequireDefault = __webpack_require__(1);
96008
96095
  exports.__esModule = true;
96009
96096
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
96010
- var _base = __webpack_require__(751);
96097
+ var _base = __webpack_require__(752);
96011
96098
  /**
96012
96099
  * Action that tracks changes in merged cells.
96013
96100
  *
@@ -96061,7 +96148,7 @@ class UnmergeCellsAction extends _base.BaseAction {
96061
96148
  exports.UnmergeCellsAction = UnmergeCellsAction;
96062
96149
 
96063
96150
  /***/ }),
96064
- /* 765 */
96151
+ /* 766 */
96065
96152
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
96066
96153
 
96067
96154
  "use strict";
@@ -96170,7 +96257,7 @@ exports.CellRange = _base.CellRange;
96170
96257
  var _registry = __webpack_require__(430);
96171
96258
  var _eventManager = _interopRequireWildcard(__webpack_require__(188));
96172
96259
  var _translations = __webpack_require__(291);
96173
- var _jquery = _interopRequireDefault(__webpack_require__(765));
96260
+ var _jquery = _interopRequireDefault(__webpack_require__(766));
96174
96261
  var _ghostTable = _interopRequireDefault(__webpack_require__(509));
96175
96262
  var parseTableHelpers = _interopRequireWildcard(__webpack_require__(190));
96176
96263
  var arrayHelpers = _interopRequireWildcard(__webpack_require__(161));