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')
@@ -42681,7 +42681,7 @@ exports.CellRange = _base.CellRange;
42681
42681
  var _registry = __webpack_require__(764);
42682
42682
  var _eventManager = _interopRequireWildcard(__webpack_require__(522));
42683
42683
  var _translations = __webpack_require__(625);
42684
- var _jquery = _interopRequireDefault(__webpack_require__(1099));
42684
+ var _jquery = _interopRequireDefault(__webpack_require__(1100));
42685
42685
  var _ghostTable = _interopRequireDefault(__webpack_require__(843));
42686
42686
  var parseTableHelpers = _interopRequireWildcard(__webpack_require__(524));
42687
42687
  var arrayHelpers = _interopRequireWildcard(__webpack_require__(495));
@@ -42855,8 +42855,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
42855
42855
  Handsontable.CellCoords = _src.CellCoords;
42856
42856
  Handsontable.CellRange = _src.CellRange;
42857
42857
  Handsontable.packageName = 'handsontable';
42858
- Handsontable.buildDate = "10/04/2025 06:43:56";
42859
- Handsontable.version = "0.0.0-next-ff10728-20250410";
42858
+ Handsontable.buildDate = "16/04/2025 06:18:15";
42859
+ Handsontable.version = "0.0.0-next-9410a76-20250416";
42860
42860
  Handsontable.languages = {
42861
42861
  dictionaryKeys: _registry.dictionaryKeys,
42862
42862
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -43110,7 +43110,6 @@ function Core(rootElement, userSettings) {
43110
43110
  const globalMeta = metaManager.getGlobalMeta();
43111
43111
  const pluginsRegistry = (0, _uniqueMap.createUniqueMap)();
43112
43112
  this.container = this.rootDocument.createElement('div');
43113
- this.renderCall = false;
43114
43113
  rootElement.insertBefore(this.container, rootElement.firstChild);
43115
43114
  if ((0, _rootInstance.isRootInstance)(this)) {
43116
43115
  (0, _mixed._injectProductInfo)(userSettings.licenseKey, rootElement);
@@ -43142,6 +43141,9 @@ function Core(rootElement, userSettings) {
43142
43141
  this.rowIndexMapper.addLocalHook('indexesSequenceChange', source => {
43143
43142
  instance.runHooks('afterRowSequenceChange', source);
43144
43143
  });
43144
+ eventManager.addEventListener(this.rootDocument.documentElement, 'compositionstart', event => {
43145
+ instance.runHooks('beforeCompositionStart', event);
43146
+ });
43145
43147
  dataSource = new _dataSource.default(instance);
43146
43148
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
43147
43149
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -43221,6 +43223,7 @@ function Core(rootElement, userSettings) {
43221
43223
  let {
43222
43224
  hiddenIndexesChanged
43223
43225
  } = _ref;
43226
+ this.forceFullRender = true;
43224
43227
  if (hiddenIndexesChanged) {
43225
43228
  this.selection.commit();
43226
43229
  }
@@ -43504,13 +43507,6 @@ function Core(rootElement, userSettings) {
43504
43507
  }
43505
43508
  }
43506
43509
  const totalRows = instance.countRows();
43507
- if (totalRows === 0) {
43508
- selection.deselect();
43509
- } else if (source === 'ContextMenu.removeRow') {
43510
- selection.refresh();
43511
- } else {
43512
- selection.shiftRows(groupIndex, -groupAmount);
43513
- }
43514
43510
  const fixedRowsTop = tableMeta.fixedRowsTop;
43515
43511
  if (fixedRowsTop >= calcIndex + 1) {
43516
43512
  tableMeta.fixedRowsTop -= Math.min(groupAmount, fixedRowsTop - calcIndex);
@@ -43519,6 +43515,13 @@ function Core(rootElement, userSettings) {
43519
43515
  if (fixedRowsBottom && calcIndex >= totalRows - fixedRowsBottom) {
43520
43516
  tableMeta.fixedRowsBottom -= Math.min(groupAmount, fixedRowsBottom);
43521
43517
  }
43518
+ if (totalRows === 0) {
43519
+ selection.deselect();
43520
+ } else if (source === 'ContextMenu.removeRow') {
43521
+ selection.refresh();
43522
+ } else {
43523
+ selection.shiftRows(groupIndex, -groupAmount);
43524
+ }
43522
43525
  offset += groupAmount;
43523
43526
  });
43524
43527
  };
@@ -43928,8 +43931,7 @@ function Core(rootElement, userSettings) {
43928
43931
  (0, _index.installFocusCatcher)(instance);
43929
43932
  }
43930
43933
  instance.runHooks('init');
43931
- this.forceFullRender = true; // used when data was changed
43932
- this.view.render();
43934
+ this.render();
43933
43935
 
43934
43936
  // Run the logic only if it's the table's initialization and the root element is not visible.
43935
43937
  if (!!firstRun && instance.rootElement.offsetParent === null) {
@@ -44102,13 +44104,11 @@ function Core(rootElement, userSettings) {
44102
44104
  datamap.set(changes[i][0], changes[i][1], changes[i][3]);
44103
44105
  }
44104
44106
  const hasChanges = changes.length > 0;
44105
- instance.forceFullRender = true; // used when data was changed or when all cells need to be re-rendered
44106
-
44107
44107
  if (hasChanges) {
44108
44108
  grid.adjustRowsAndCols();
44109
44109
  instance.runHooks('beforeChangeRender', changes, source);
44110
44110
  editorManager.closeEditor();
44111
- instance.view.render();
44111
+ instance.render();
44112
44112
  editorManager.prepareEditor();
44113
44113
  instance.view.adjustElementsSize();
44114
44114
  instance.runHooks('afterChange', changes, source || 'edit');
@@ -44117,7 +44117,7 @@ function Core(rootElement, userSettings) {
44117
44117
  activeEditor.refreshValue();
44118
44118
  }
44119
44119
  } else {
44120
- instance.view.render();
44120
+ instance.render();
44121
44121
  }
44122
44122
  }
44123
44123
 
@@ -44267,9 +44267,22 @@ function Core(rootElement, userSettings) {
44267
44267
  ...tableMeta
44268
44268
  };
44269
44269
  }
44270
- if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
44270
+ const {
44271
+ type,
44272
+ checkedTemplate,
44273
+ uncheckedTemplate
44274
+ } = cellProperties;
44275
+ if (type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
44271
44276
  filteredChanges[i][3] = getParsedNumber(newValue);
44272
44277
  }
44278
+ if (type === 'checkbox') {
44279
+ const stringifiedValue = (0, _mixed.stringify)(newValue);
44280
+ const isChecked = stringifiedValue === (0, _mixed.stringify)(checkedTemplate);
44281
+ const isUnchecked = stringifiedValue === (0, _mixed.stringify)(uncheckedTemplate);
44282
+ if (isChecked || isUnchecked) {
44283
+ filteredChanges[i][3] = isChecked ? checkedTemplate : uncheckedTemplate;
44284
+ }
44285
+ }
44273
44286
  }
44274
44287
  return filteredChanges;
44275
44288
  }
@@ -44671,11 +44684,7 @@ function Core(rootElement, userSettings) {
44671
44684
  const nextValue = this.renderSuspendedCounter - 1;
44672
44685
  this.renderSuspendedCounter = Math.max(nextValue, 0);
44673
44686
  if (!this.isRenderSuspended() && nextValue === this.renderSuspendedCounter) {
44674
- if (this.renderCall) {
44675
- this.render();
44676
- } else {
44677
- instance.view.render();
44678
- }
44687
+ instance.view.render();
44679
44688
  }
44680
44689
  };
44681
44690
 
@@ -44691,9 +44700,8 @@ function Core(rootElement, userSettings) {
44691
44700
  */
44692
44701
  this.render = function () {
44693
44702
  if (this.view) {
44694
- this.renderCall = true;
44695
- this.forceFullRender = true; // used when data was changed or when all cells need to be re-rendered
44696
-
44703
+ // used when data was changed or when all cells need to be re-rendered (slow render)
44704
+ this.forceFullRender = true;
44697
44705
  if (!this.isRenderSuspended()) {
44698
44706
  instance.view.render();
44699
44707
  }
@@ -45306,8 +45314,7 @@ function Core(rootElement, userSettings) {
45306
45314
  }
45307
45315
  grid.adjustRowsAndCols();
45308
45316
  if (instance.view && !firstRun) {
45309
- instance.forceFullRender = true; // used when data was changed
45310
- instance.view.render();
45317
+ instance.render();
45311
45318
  instance.view._wt.wtOverlays.adjustElementsSize();
45312
45319
  }
45313
45320
  if (!init && instance.view && (currentHeight === '' || height === '' || height === undefined) && currentHeight !== height) {
@@ -51419,8 +51426,8 @@ exports.isChildOf = isChildOf;
51419
51426
  exports.isDetached = isDetached;
51420
51427
  exports.isHTMLElement = isHTMLElement;
51421
51428
  exports.isInput = isInput;
51429
+ exports.isInternalElement = isInternalElement;
51422
51430
  exports.isOutsideInput = isOutsideInput;
51423
- exports.isThisHotChild = isThisHotChild;
51424
51431
  exports.isVisible = isVisible;
51425
51432
  exports.makeElementContentEditableAndSelectItsContent = makeElementContentEditableAndSelectItsContent;
51426
51433
  exports.matchesCSSRules = matchesCSSRules;
@@ -51481,7 +51488,7 @@ function getParent(element) {
51481
51488
  * @param {HTMLElement} thisHotContainer The Handsontable container.
51482
51489
  * @returns {boolean}
51483
51490
  */
51484
- function isThisHotChild(element, thisHotContainer) {
51491
+ function isInternalElement(element, thisHotContainer) {
51485
51492
  const closestHandsontableContainer = element.closest('.handsontable');
51486
51493
  return !!closestHandsontableContainer && (closestHandsontableContainer.parentNode === thisHotContainer || closestHandsontableContainer === thisHotContainer);
51487
51494
  }
@@ -54188,7 +54195,7 @@ const domMessages = {
54188
54195
  function _injectProductInfo(key, element) {
54189
54196
  const hasValidType = !isEmpty(key);
54190
54197
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
54191
- const hotVersion = "0.0.0-next-ff10728-20250410";
54198
+ const hotVersion = "0.0.0-next-9410a76-20250416";
54192
54199
  let keyValidityDate;
54193
54200
  let consoleMessageState = 'invalid';
54194
54201
  let domMessageState = 'invalid';
@@ -54196,7 +54203,7 @@ function _injectProductInfo(key, element) {
54196
54203
  const schemaValidity = _checkKeySchema(key);
54197
54204
  if (hasValidType || isNonCommercial || schemaValidity) {
54198
54205
  if (schemaValidity) {
54199
- const releaseDate = (0, _moment.default)("20/02/2025", 'DD/MM/YYYY');
54206
+ const releaseDate = (0, _moment.default)("19/03/2025", 'DD/MM/YYYY');
54200
54207
  const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
54201
54208
  const keyValidityDays = _extractTime(key);
54202
54209
  keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
@@ -61903,7 +61910,7 @@ const platforms = {
61903
61910
  mac: tester(platform => /^Mac/.test(platform)),
61904
61911
  win: tester(platform => /^Win/.test(platform)),
61905
61912
  linux: tester(platform => /^Linux/.test(platform)),
61906
- ios: tester(ua => /iPhone|iPad|iPod/i.test(ua))
61913
+ ios: tester(platform => /iPhone|iPad|iPod/i.test(platform))
61907
61914
  };
61908
61915
 
61909
61916
  /**
@@ -62331,6 +62338,9 @@ function getProperty(object, name) {
62331
62338
  * @param {*} value Value to be assigned at the provided property.
62332
62339
  */
62333
62340
  function setProperty(object, name, value) {
62341
+ if (typeof name !== 'string') {
62342
+ return;
62343
+ }
62334
62344
  const names = name.split('.');
62335
62345
  let workingObject = object;
62336
62346
  names.forEach((propName, index) => {
@@ -62697,13 +62707,7 @@ class EditorManager {
62697
62707
  this.selection = _selection;
62698
62708
  this.eventManager = new _eventManager.default(hotInstance);
62699
62709
  this.hot.addHook('afterDocumentKeyDown', event => _assertClassBrand(_EditorManager_brand, this, _onAfterDocumentKeyDown).call(this, event));
62700
-
62701
- // Open editor when text composition is started (IME editor)
62702
- this.eventManager.addEventListener(this.hot.rootDocument.documentElement, 'compositionstart', event => {
62703
- if (!this.destroyed && this.hot.isListening()) {
62704
- this.openEditor('', event);
62705
- }
62706
- });
62710
+ this.hot.addHook('beforeCompositionStart', event => _assertClassBrand(_EditorManager_brand, this, _onAfterDocumentKeyDown).call(this, event));
62707
62711
  this.hot.view._wt.update('onCellDblClick', (event, coords, elem) => _assertClassBrand(_EditorManager_brand, this, _onCellDblClick).call(this, event, coords, elem));
62708
62712
  }
62709
62713
 
@@ -64179,6 +64183,14 @@ const REGISTERED_HOOKS = exports.REGISTERED_HOOKS = [/* eslint-disable jsdoc/req
64179
64183
  * @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.
64180
64184
  */
64181
64185
  'beforeRemoveCellClassNames',
64186
+ /**
64187
+ * Hook fired after `compositionstart` event is handled.
64188
+ *
64189
+ * @event Hooks#beforeCompositionStart
64190
+ * @since 15.3.0
64191
+ * @param {Event} event A native `composition` event object.
64192
+ */
64193
+ 'beforeCompositionStart',
64182
64194
  /**
64183
64195
  * Fired after getting the cell settings.
64184
64196
  *
@@ -68795,16 +68807,16 @@ class TableView {
68795
68807
  */
68796
68808
  render() {
68797
68809
  if (!this.hot.isRenderSuspended()) {
68798
- this.hot.runHooks('beforeRender', this.hot.forceFullRender);
68810
+ const isFullRender = this.hot.forceFullRender;
68811
+ this.hot.runHooks('beforeRender', isFullRender);
68799
68812
  if (this.postponedAdjustElementsSize) {
68800
68813
  this.postponedAdjustElementsSize = false;
68801
68814
  this.adjustElementsSize();
68802
68815
  }
68803
- this._wt.draw(!this.hot.forceFullRender);
68816
+ this._wt.draw(!isFullRender);
68804
68817
  _assertClassBrand(_TableView_brand, this, _updateScrollbarClassNames).call(this);
68805
- this.hot.runHooks('afterRender', this.hot.forceFullRender);
68818
+ this.hot.runHooks('afterRender', isFullRender);
68806
68819
  this.hot.forceFullRender = false;
68807
- this.hot.renderCall = false;
68808
68820
  }
68809
68821
  }
68810
68822
 
@@ -69711,8 +69723,7 @@ class TableView {
69711
69723
  this.eventManager.addEventListener(this.hot.rootDocument.documentElement, 'click', () => {
69712
69724
  if (this.settings.observeDOMVisibility) {
69713
69725
  if (this._wt.drawInterrupted) {
69714
- this.hot.forceFullRender = true;
69715
- this.render();
69726
+ this.hot.render();
69716
69727
  }
69717
69728
  }
69718
69729
  });
@@ -69785,7 +69796,6 @@ class TableView {
69785
69796
  */
69786
69797
  beforeRender(force, skipRender) {
69787
69798
  if (force) {
69788
- // this.hot.forceFullRender = did Handsontable request full render?
69789
69799
  this.hot.runHooks('beforeViewRender', this.hot.forceFullRender, skipRender);
69790
69800
  }
69791
69801
  }
@@ -69799,7 +69809,6 @@ class TableView {
69799
69809
  */
69800
69810
  afterRender(force) {
69801
69811
  if (force) {
69802
- // this.hot.forceFullRender = did Handsontable request full render?
69803
69812
  this.hot.runHooks('afterViewRender', this.hot.forceFullRender);
69804
69813
  }
69805
69814
  }
@@ -71905,6 +71914,20 @@ class CellRange {
71905
71914
  return this;
71906
71915
  }
71907
71916
 
71917
+ /**
71918
+ * Normalizes the coordinates in your `CellRange` instance to the nearest valid position.
71919
+ *
71920
+ * Coordinates that point to headers (negative values) are normalized to `0`.
71921
+ *
71922
+ * @returns {CellRange}
71923
+ */
71924
+ normalize() {
71925
+ this.highlight.normalize();
71926
+ this.from.normalize();
71927
+ this.to.normalize();
71928
+ return this;
71929
+ }
71930
+
71908
71931
  /**
71909
71932
  * Checks if the coordinates in your `CellRange` instance are valid
71910
71933
  * in the context of given table parameters.
@@ -74526,8 +74549,8 @@ class Table {
74526
74549
  } else {
74527
74550
  this.tableOffset = this.dataAccessObject.parentTableOffset;
74528
74551
  }
74529
- const startRow = totalRows > 0 ? this.getFirstRenderedRow() : 0;
74530
- const startColumn = totalColumns > 0 ? this.getFirstRenderedColumn() : 0;
74552
+ const startRow = Math.max(this.getFirstRenderedRow(), 0);
74553
+ const startColumn = Math.max(this.getFirstRenderedColumn(), 0);
74531
74554
  this.rowFilter = new _row.default(startRow, totalRows, columnHeadersCount);
74532
74555
  this.columnFilter = new _column.default(startColumn, totalColumns, rowHeadersCount);
74533
74556
  let performRedraw = true;
@@ -74845,6 +74868,9 @@ class Table {
74845
74868
  return null;
74846
74869
  }
74847
74870
  const TR = cellElement.parentNode;
74871
+ if (!TR) {
74872
+ return null;
74873
+ }
74848
74874
  const CONTAINER = TR.parentNode;
74849
74875
  let row = (0, _element.index)(TR);
74850
74876
  let col = cellElement.cellIndex;
@@ -75664,7 +75690,10 @@ class RowHeadersRenderer extends _base.BaseRenderer {
75664
75690
  const orderView = this.obtainOrderView(TR);
75665
75691
  const cellsView = cells.obtainOrderView(TR);
75666
75692
  orderView.appendView(cellsView).setSize(rowHeadersCount).setOffset(0).start();
75667
- for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) {
75693
+
75694
+ // Reading the row header renderers in reverse because of how the Eco Renderers handle rendering
75695
+ // (prepending the nodes when rendering row headers).
75696
+ for (let visibleColumnIndex = rowHeadersCount - 1; visibleColumnIndex >= 0; visibleColumnIndex--) {
75668
75697
  orderView.render();
75669
75698
  const TH = orderView.getCurrentNode();
75670
75699
  TH.className = '';
@@ -77529,16 +77558,11 @@ const stickyRowsBottom = {
77529
77558
  * @this Table
77530
77559
  */
77531
77560
  getFirstRenderedRow() {
77532
- const totalRows = this.wtSettings.getSetting('totalRows');
77533
- const fixedRowsBottom = this.wtSettings.getSetting('fixedRowsBottom');
77534
- const index = totalRows - fixedRowsBottom;
77535
- if (totalRows === 0 || fixedRowsBottom === 0) {
77561
+ const allStickyRows = this.getRenderedRowsCount();
77562
+ if (allStickyRows === 0) {
77536
77563
  return -1;
77537
77564
  }
77538
- if (index < 0) {
77539
- return 0;
77540
- }
77541
- return index;
77565
+ return this.wtSettings.getSetting('totalRows') - allStickyRows;
77542
77566
  },
77543
77567
  /**
77544
77568
  * Get the source index of the first row fully visible in the viewport. If no rows are fully visible, returns an error code: -1.
@@ -77567,6 +77591,10 @@ const stickyRowsBottom = {
77567
77591
  * @this Table
77568
77592
  */
77569
77593
  getLastRenderedRow() {
77594
+ const allStickyRows = this.getRenderedRowsCount();
77595
+ if (allStickyRows === 0) {
77596
+ return -1;
77597
+ }
77570
77598
  return this.wtSettings.getSetting('totalRows') - 1;
77571
77599
  },
77572
77600
  /**
@@ -77596,8 +77624,7 @@ const stickyRowsBottom = {
77596
77624
  * @this Table
77597
77625
  */
77598
77626
  getRenderedRowsCount() {
77599
- const totalRows = this.wtSettings.getSetting('totalRows');
77600
- return Math.min(this.wtSettings.getSetting('fixedRowsBottom'), totalRows);
77627
+ return Math.min(this.wtSettings.getSetting('totalRows'), this.wtSettings.getSetting('fixedRowsBottom'));
77601
77628
  },
77602
77629
  /**
77603
77630
  * Get the number of fully visible rows in the viewport.
@@ -77652,8 +77679,8 @@ const stickyColumnsStart = {
77652
77679
  * @this Table
77653
77680
  */
77654
77681
  getFirstRenderedColumn() {
77655
- const totalColumns = this.wtSettings.getSetting('totalColumns');
77656
- if (totalColumns === 0) {
77682
+ const allStickyColumns = this.getRenderedColumnsCount();
77683
+ if (allStickyColumns === 0) {
77657
77684
  return -1;
77658
77685
  }
77659
77686
  return 0;
@@ -77714,8 +77741,7 @@ const stickyColumnsStart = {
77714
77741
  * @this Table
77715
77742
  */
77716
77743
  getRenderedColumnsCount() {
77717
- const totalColumns = this.wtSettings.getSetting('totalColumns');
77718
- return Math.min(this.wtSettings.getSetting('fixedColumnsStart'), totalColumns);
77744
+ return Math.min(this.wtSettings.getSetting('totalColumns'), this.wtSettings.getSetting('fixedColumnsStart'));
77719
77745
  },
77720
77746
  /**
77721
77747
  * Get the number of fully visible columns in the viewport.
@@ -81169,6 +81195,11 @@ class Border {
81169
81195
  const lastRenderedRow = wtTable.getLastRenderedRow();
81170
81196
  const firstRenderedColumn = wtTable.getFirstRenderedColumn();
81171
81197
  const lastRenderedColumn = wtTable.getLastRenderedColumn();
81198
+ if (firstRenderedColumn < 0 && lastRenderedColumn < 0 || firstRenderedRow < 0 && lastRenderedRow < 0) {
81199
+ // ...also when overlays have rendered only headers skip it
81200
+ this.disappear();
81201
+ return;
81202
+ }
81172
81203
  let fromTD;
81173
81204
  if (isMultiple) {
81174
81205
  fromColumn = Math.max(fromColumn, firstRenderedColumn);
@@ -81663,8 +81694,8 @@ const stickyRowsTop = {
81663
81694
  * @this Table
81664
81695
  */
81665
81696
  getFirstRenderedRow() {
81666
- const totalRows = this.wtSettings.getSetting('totalRows');
81667
- if (totalRows === 0) {
81697
+ const allStickyRows = this.getRenderedRowsCount();
81698
+ if (allStickyRows === 0) {
81668
81699
  return -1;
81669
81700
  }
81670
81701
  return 0;
@@ -81725,8 +81756,7 @@ const stickyRowsTop = {
81725
81756
  * @this Table
81726
81757
  */
81727
81758
  getRenderedRowsCount() {
81728
- const totalRows = this.wtSettings.getSetting('totalRows');
81729
- return Math.min(this.wtSettings.getSetting('fixedRowsTop'), totalRows);
81759
+ return Math.min(this.wtSettings.getSetting('totalRows'), this.wtSettings.getSetting('fixedRowsTop'));
81730
81760
  },
81731
81761
  /**
81732
81762
  * Get the number of fully visible rows in the viewport.
@@ -87974,7 +88004,9 @@ class Selection {
87974
88004
  col: (0, _number.clamp)(to.col, 0, countColumns - 1)
87975
88005
  });
87976
88006
  this.selectedRange.ranges.push(range);
87977
- this.highlight.getFocus().add(highlight).commit().syncWith(range);
88007
+ if (this.highlight.isEnabledFor(_highlight.FOCUS_TYPE, this.selectedRange.current().highlight)) {
88008
+ this.highlight.getFocus().add(highlight).commit().syncWith(range);
88009
+ }
87978
88010
  this.applyAndCommit(range);
87979
88011
  }
87980
88012
 
@@ -90127,8 +90159,6 @@ class DataMap {
90127
90159
  }
90128
90160
  }
90129
90161
  this.hot.runHooks('afterCreateRow', newVisualRowIndex, numberOfCreatedRows, source);
90130
- this.hot.forceFullRender = true; // used when data was changed
90131
-
90132
90162
  return {
90133
90163
  delta: numberOfCreatedRows,
90134
90164
  startPhysicalIndex: physicalRowIndex
@@ -90214,8 +90244,6 @@ class DataMap {
90214
90244
  }
90215
90245
  const newVisualColumnIndex = this.hot.toVisualColumn(startPhysicalIndex);
90216
90246
  this.hot.runHooks('afterCreateCol', newVisualColumnIndex, numberOfCreatedCols, source);
90217
- this.hot.forceFullRender = true; // used when data was changed
90218
-
90219
90247
  this.refreshDuckSchema();
90220
90248
  return {
90221
90249
  delta: numberOfCreatedCols,
@@ -90262,8 +90290,6 @@ class DataMap {
90262
90290
  this.metaManager.removeRow(rowPhysicalIndex, 1);
90263
90291
  });
90264
90292
  this.hot.runHooks('afterRemoveRow', rowIndex, numberOfRemovedIndexes, removedPhysicalIndexes, source);
90265
- this.hot.forceFullRender = true; // used when data was changed
90266
-
90267
90293
  return true;
90268
90294
  }
90269
90295
 
@@ -90323,7 +90349,6 @@ class DataMap {
90323
90349
  }
90324
90350
  }
90325
90351
  this.hot.runHooks('afterRemoveCol', columnIndex, amount, removedPhysicalIndexes, source);
90326
- this.hot.forceFullRender = true; // used when data was changed
90327
90352
  this.refreshDuckSchema();
90328
90353
  return true;
90329
90354
  }
@@ -94112,6 +94137,7 @@ var _default = () => {
94112
94137
  * | `'de-CH'` | German - Switzerland |
94113
94138
  * | `'de-DE'` | German - Germany |
94114
94139
  * | `'es-MX'` | Spanish - Mexico |
94140
+ * | `'fa-IR'` | Persian - Iran |
94115
94141
  * | `'fr-FR'` | French - France |
94116
94142
  * | `'hr-HR'` | Croatian - Croatia |
94117
94143
  * | `'it-IT'` | Italian - Italy |
@@ -99943,7 +99969,7 @@ function createInputElement(hot) {
99943
99969
  input.name = '__htFocusCatcher';
99944
99970
  input.classList.add('htFocusCatcher');
99945
99971
  if (hot.getSettings().ariaTags) {
99946
- (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
99972
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_LABEL)('Focus catcher')]);
99947
99973
  }
99948
99974
  return input;
99949
99975
  }
@@ -101185,7 +101211,7 @@ class TextEditor extends _baseEditor.BaseEditor {
101185
101211
  */
101186
101212
  close() {
101187
101213
  this.autoResize.unObserve();
101188
- if ((0, _element.isThisHotChild)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
101214
+ if ((0, _element.isInternalElement)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
101189
101215
  this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
101190
101216
  }
101191
101217
  this.hideEditableElement();
@@ -102028,6 +102054,7 @@ var _string = __webpack_require__(352);
102028
102054
  var _unicode = __webpack_require__(508);
102029
102055
  var _textRenderer = __webpack_require__(760);
102030
102056
  var _a11y = __webpack_require__(496);
102057
+ var _function = __webpack_require__(497);
102031
102058
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
102032
102059
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
102033
102060
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -102040,6 +102067,7 @@ const EDITOR_TYPE = exports.EDITOR_TYPE = 'autocomplete';
102040
102067
  * @class AutocompleteEditor
102041
102068
  */
102042
102069
  var _idPrefix = /*#__PURE__*/new WeakMap();
102070
+ var _focusDebounced = /*#__PURE__*/new WeakMap();
102043
102071
  var _AutocompleteEditor_brand = /*#__PURE__*/new WeakSet();
102044
102072
  class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
102045
102073
  constructor() {
@@ -102072,6 +102100,12 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
102072
102100
  * @type {string}
102073
102101
  */
102074
102102
  _classPrivateFieldInitSpec(this, _idPrefix, this.hot.guid.slice(0, 9));
102103
+ /**
102104
+ * Runs focus method after debounce.
102105
+ */
102106
+ _classPrivateFieldInitSpec(this, _focusDebounced, (0, _function.debounce)(() => {
102107
+ this.focus();
102108
+ }, 100));
102075
102109
  /**
102076
102110
  * Filters and sorts by relevance.
102077
102111
  *
@@ -102157,7 +102191,6 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
102157
102191
  }
102158
102192
  return this.TEXTAREA.value;
102159
102193
  }
102160
-
102161
102194
  /**
102162
102195
  * Creates an editor's elements and adds necessary CSS classnames.
102163
102196
  */
@@ -102203,10 +102236,10 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
102203
102236
  this.showEditableElement();
102204
102237
  this.focus();
102205
102238
  this.addHook('beforeKeyDown', event => this.onBeforeKeyDown(event));
102239
+ this.htEditor.addHook('afterScroll', _classPrivateFieldGet(_focusDebounced, this));
102206
102240
  this.htEditor.updateSettings({
102207
102241
  colWidths: trimDropdown ? [(0, _element.outerWidth)(this.TEXTAREA) - 2] : undefined,
102208
102242
  autoColumnSize: true,
102209
- autoRowSize: true,
102210
102243
  renderer: (hotInstance, TD, row, col, prop, value, cellProperties) => {
102211
102244
  (0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, value, cellProperties);
102212
102245
  const {
@@ -102478,7 +102511,10 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
102478
102511
  const maxItems = Math.min(this.cellProperties.visibleRows, this.strippedChoices.length);
102479
102512
  const height = Array.from({
102480
102513
  length: maxItems
102481
- }, (_, i) => i).reduce((h, index) => h + this.htEditor.getRowHeight(index), 0);
102514
+ }, (_, i) => i).reduce((totalHeight, index) => {
102515
+ const rowHeight = this.htEditor.getRowHeight(index) || this.htEditor.view.getDefaultRowHeight();
102516
+ return totalHeight + rowHeight;
102517
+ }, 0);
102482
102518
  return height + borderVerticalCompensation + 1;
102483
102519
  }
102484
102520
 
@@ -102576,7 +102612,7 @@ exports.AutocompleteEditor = AutocompleteEditor;
102576
102612
  function _fixDropdownWidth() {
102577
102613
  if (this.htEditor.view.hasVerticalScroll()) {
102578
102614
  this.htEditor.updateSettings({
102579
- width: this.htEditor.getSettings().width + (0, _element.getScrollbarWidth)(this.hot.rootDocument)
102615
+ width: this.getWidth() + (0, _element.getScrollbarWidth)(this.hot.rootDocument)
102580
102616
  });
102581
102617
  }
102582
102618
  }
@@ -111981,25 +112017,25 @@ var _manualRowResize = __webpack_require__(1020);
111981
112017
  exports.ManualRowResize = _manualRowResize.ManualRowResize;
111982
112018
  var _mergeCells = __webpack_require__(1022);
111983
112019
  exports.MergeCells = _mergeCells.MergeCells;
111984
- var _multiColumnSorting = __webpack_require__(1036);
112020
+ var _multiColumnSorting = __webpack_require__(1037);
111985
112021
  exports.MultiColumnSorting = _multiColumnSorting.MultiColumnSorting;
111986
- var _multipleSelectionHandles = __webpack_require__(1040);
112022
+ var _multipleSelectionHandles = __webpack_require__(1041);
111987
112023
  exports.MultipleSelectionHandles = _multipleSelectionHandles.MultipleSelectionHandles;
111988
- var _nestedHeaders = __webpack_require__(1042);
112024
+ var _nestedHeaders = __webpack_require__(1043);
111989
112025
  exports.NestedHeaders = _nestedHeaders.NestedHeaders;
111990
- var _nestedRows = __webpack_require__(1058);
112026
+ var _nestedRows = __webpack_require__(1059);
111991
112027
  exports.NestedRows = _nestedRows.NestedRows;
111992
- var _persistentState = __webpack_require__(1066);
112028
+ var _persistentState = __webpack_require__(1067);
111993
112029
  exports.PersistentState = _persistentState.PersistentState;
111994
- var _search = __webpack_require__(1069);
112030
+ var _search = __webpack_require__(1070);
111995
112031
  exports.Search = _search.Search;
111996
- var _stretchColumns = __webpack_require__(1071);
112032
+ var _stretchColumns = __webpack_require__(1072);
111997
112033
  exports.StretchColumns = _stretchColumns.StretchColumns;
111998
- var _touchScroll = __webpack_require__(1077);
112034
+ var _touchScroll = __webpack_require__(1078);
111999
112035
  exports.TouchScroll = _touchScroll.TouchScroll;
112000
- var _trimRows = __webpack_require__(1079);
112036
+ var _trimRows = __webpack_require__(1080);
112001
112037
  exports.TrimRows = _trimRows.TrimRows;
112002
- var _undoRedo = __webpack_require__(1081);
112038
+ var _undoRedo = __webpack_require__(1082);
112003
112039
  exports.UndoRedo = _undoRedo.UndoRedo;
112004
112040
  var _registry = __webpack_require__(532);
112005
112041
  exports.registerPlugin = _registry.registerPlugin;
@@ -112388,7 +112424,7 @@ class AutoColumnSize extends _base.BasePlugin {
112388
112424
  if (firstVisibleColumn === -1 || lastVisibleColumn === -1) {
112389
112425
  return;
112390
112426
  }
112391
- const overwriteCache = this.hot.renderCall;
112427
+ const overwriteCache = this.hot.forceFullRender;
112392
112428
  this.calculateColumnsWidth({
112393
112429
  from: firstVisibleColumn,
112394
112430
  to: lastVisibleColumn
@@ -113195,6 +113231,9 @@ class GhostTable {
113195
113231
  this.table = this.createTable(this.hot.table.className);
113196
113232
  this.table.colGroup.appendChild(this.createColGroupsCol(row));
113197
113233
  this.table.tr.appendChild(this.createRow(row));
113234
+ if (row === 0) {
113235
+ (0, _element.addClass)(this.table.table, 'htGhostTableFirstRow');
113236
+ }
113198
113237
  this.container.container.appendChild(this.table.fragment);
113199
113238
  rowObject.table = this.table.table;
113200
113239
  }
@@ -114782,7 +114821,7 @@ class AutoRowSize extends _base.BasePlugin {
114782
114821
  if (firstVisibleRow === -1 || lastVisibleRow === -1) {
114783
114822
  return;
114784
114823
  }
114785
- const overwriteCache = this.hot.renderCall;
114824
+ const overwriteCache = this.hot.forceFullRender;
114786
114825
  this.calculateRowsHeight({
114787
114826
  from: firstVisibleRow,
114788
114827
  to: lastVisibleRow
@@ -114883,11 +114922,6 @@ class AutoRowSize extends _base.BasePlugin {
114883
114922
 
114884
114923
  // @TODO Should call once per render cycle, currently fired separately in different plugins
114885
114924
  this.hot.view.adjustElementsSize();
114886
-
114887
- // tmp
114888
- if (this.hot.view._wt.wtOverlays.inlineStartOverlay.needFullRender) {
114889
- this.hot.view._wt.wtOverlays.inlineStartOverlay.clone.draw();
114890
- }
114891
114925
  }
114892
114926
  };
114893
114927
  const syncLimit = this.getSyncCalculationLimit();
@@ -116338,10 +116372,6 @@ class ColumnSorting extends _base.BasePlugin {
116338
116372
  this.hot.runHooks('afterColumnSort', currentSortConfig, sortPossible ? destinationSortConfigs : currentSortConfig, sortPossible);
116339
116373
  if (sortPossible) {
116340
116374
  this.hot.render();
116341
- // TODO: Workaround? This triggers fast redraw. One test won't pass after removal.
116342
- // It should be refactored / described.
116343
- this.hot.forceFullRender = false;
116344
- this.hot.view.render();
116345
116375
  }
116346
116376
  }
116347
116377
 
@@ -119008,6 +119038,7 @@ class Comments extends _base.BasePlugin {
119008
119038
  this.addHook('afterScroll', () => _assertClassBrand(_Comments_brand, this, _onAfterScroll).call(this));
119009
119039
  this.addHook('afterBeginEditing', () => this.hide());
119010
119040
  this.addHook('afterDocumentKeyDown', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
119041
+ this.addHook('beforeCompositionStart', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
119011
119042
  this.addHook('afterSetTheme', function () {
119012
119043
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
119013
119044
  args[_key2] = arguments[_key2];
@@ -122142,6 +122173,7 @@ class Menu {
122142
122173
  layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
122143
122174
  ariaTags: false,
122144
122175
  themeName: this.hot.getCurrentThemeName(),
122176
+ beforeRefreshDimensions: () => false,
122145
122177
  beforeOnCellMouseOver: (event, coords) => {
122146
122178
  _classPrivateFieldGet(_navigator, this).setCurrentPage(coords.row);
122147
122179
  },
@@ -122685,7 +122717,11 @@ class Positioner {
122685
122717
  setPositionAboveCursor() {
122686
122718
  let top = _classPrivateFieldGet(_offset, this).above + _classPrivateFieldGet(_cursor, this).top - _classPrivateFieldGet(_container, this).offsetHeight;
122687
122719
  if (_classPrivateFieldGet(_parentContainer, this)) {
122688
- top = _classPrivateFieldGet(_cursor, this).top + _classPrivateFieldGet(_cursor, this).cellHeight - _classPrivateFieldGet(_container, this).offsetHeight + 3;
122720
+ const rootWindow = _classPrivateFieldGet(_parentContainer, this).ownerDocument.defaultView;
122721
+ const style = rootWindow.getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.ht_master'));
122722
+ const paddingTop = Number.parseInt(style.paddingTop, 10);
122723
+ const borderTop = Number.parseInt(style.borderTop, 10);
122724
+ top = _classPrivateFieldGet(_cursor, this).top + _classPrivateFieldGet(_cursor, this).cellHeight - _classPrivateFieldGet(_container, this).scrollHeight + paddingTop + borderTop;
122689
122725
  }
122690
122726
  _classPrivateFieldGet(_container, this).style.top = `${top}px`;
122691
122727
  }
@@ -122696,7 +122732,11 @@ class Positioner {
122696
122732
  setPositionBelowCursor() {
122697
122733
  let top = _classPrivateFieldGet(_offset, this).below + _classPrivateFieldGet(_cursor, this).top + 1;
122698
122734
  if (_classPrivateFieldGet(_parentContainer, this)) {
122699
- top = _classPrivateFieldGet(_cursor, this).top - 1;
122735
+ const rootWindow = _classPrivateFieldGet(_parentContainer, this).ownerDocument.defaultView;
122736
+ const style = rootWindow.getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.ht_master'));
122737
+ const paddingTop = Number.parseInt(style.paddingTop, 10);
122738
+ const borderTop = Number.parseInt(style.borderTop, 10);
122739
+ top = _classPrivateFieldGet(_cursor, this).top - paddingTop - borderTop - 1;
122700
122740
  }
122701
122741
  _classPrivateFieldGet(_container, this).style.top = `${top}px`;
122702
122742
  }
@@ -123437,7 +123477,7 @@ function createDefaultShortcutsList(menu) {
123437
123477
  keys: [['ArrowUp']],
123438
123478
  callback: () => menu.getNavigator().toPreviousItem()
123439
123479
  }, {
123440
- keys: [['ArrowRight']],
123480
+ keys: [[hot.isRtl() ? 'ArrowLeft' : 'ArrowRight']],
123441
123481
  callback: () => {
123442
123482
  const selection = hotMenu.getSelectedLast();
123443
123483
  if (selection) {
@@ -123448,7 +123488,7 @@ function createDefaultShortcutsList(menu) {
123448
123488
  }
123449
123489
  }
123450
123490
  }, {
123451
- keys: [['ArrowLeft']],
123491
+ keys: [[hot.isRtl() ? 'ArrowRight' : 'ArrowLeft']],
123452
123492
  callback: () => {
123453
123493
  const selection = hotMenu.getSelectedLast();
123454
123494
  if (selection && menu.isSubMenu()) {
@@ -123838,6 +123878,9 @@ class CopyPaste extends _base.BasePlugin {
123838
123878
  return _assertClassBrand(_CopyPaste_brand, _this, _onAfterSelection).call(_this, ...args);
123839
123879
  });
123840
123880
  this.addHook('afterSelectionEnd', () => _assertClassBrand(_CopyPaste_brand, this, _onAfterSelectionEnd).call(this));
123881
+
123882
+ // Events are attached to the document, not the root table element - as it should,
123883
+ // for Chrome 133 and lower to copy/paste/cut work properly (#dev-2277).
123841
123884
  this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
123842
123885
  return _this.onCopy(...arguments);
123843
123886
  });
@@ -124144,12 +124187,10 @@ class CopyPaste extends _base.BasePlugin {
124144
124187
  * @private
124145
124188
  */
124146
124189
  onCopy(event) {
124147
- var _event$target, _this$hot$getSelected;
124190
+ const eventTarget = event.composedPath()[0];
124148
124191
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
124149
- const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
124150
- const selectedCell = (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight;
124151
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
124152
- 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)) {
124192
+ const isHotInput = eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.hasAttribute('data-hot-input');
124193
+ 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))) {
124153
124194
  return;
124154
124195
  }
124155
124196
  event.preventDefault();
@@ -124179,12 +124220,10 @@ class CopyPaste extends _base.BasePlugin {
124179
124220
  * @private
124180
124221
  */
124181
124222
  onCut(event) {
124182
- var _event$target2, _this$hot$getSelected2;
124223
+ const eventTarget = event.composedPath()[0];
124183
124224
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
124184
- const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
124185
- const selectedCell = (_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight;
124186
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
124187
- 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)) {
124225
+ const isHotInput = eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.hasAttribute('data-hot-input');
124226
+ 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))) {
124188
124227
  return;
124189
124228
  }
124190
124229
  event.preventDefault();
@@ -124213,12 +124252,10 @@ class CopyPaste extends _base.BasePlugin {
124213
124252
  * @private
124214
124253
  */
124215
124254
  onPaste(event) {
124216
- var _event$target3, _this$hot$getSelected3;
124255
+ const eventTarget = event.composedPath()[0];
124217
124256
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
124218
- const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
124219
- const selectedCell = (_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight;
124220
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
124221
- 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)) {
124257
+ const isHotInput = eventTarget === null || eventTarget === void 0 ? void 0 : eventTarget.hasAttribute('data-hot-input');
124258
+ 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))) {
124222
124259
  return;
124223
124260
  }
124224
124261
  event.preventDefault();
@@ -124665,6 +124702,9 @@ class PasteEvent {
124665
124702
  this.clipboardData = new _clipboardData.default();
124666
124703
  }
124667
124704
  preventDefault() {}
124705
+ composedPath() {
124706
+ return [];
124707
+ }
124668
124708
  }
124669
124709
  exports["default"] = PasteEvent;
124670
124710
 
@@ -128132,10 +128172,10 @@ class Filters extends _base.BasePlugin {
128132
128172
  *
128133
128173
  * @returns {Array}
128134
128174
  */
128135
- /* eslint-enable jsdoc/require-description-complete-sentence */
128136
128175
  exportConditions() {
128137
128176
  return this.conditionCollection.exportAllConditions();
128138
128177
  }
128178
+ /* eslint-enable jsdoc/require-description-complete-sentence */
128139
128179
 
128140
128180
  /**
128141
128181
  * Filters data based on added filter conditions.
@@ -128152,38 +128192,39 @@ class Filters extends _base.BasePlugin {
128152
128192
  let visibleVisualRows = [];
128153
128193
  const conditions = this.exportConditions();
128154
128194
  const allowFiltering = this.hot.runHooks('beforeFilter', conditions, _classPrivateFieldGet(_previousConditionStack, this));
128155
- if (allowFiltering !== false) {
128156
- if (needToFilter) {
128157
- const trimmedRows = [];
128158
- this.hot.batchExecution(() => {
128159
- this.filtersRowsMap.clear();
128160
- visibleVisualRows = (0, _array.arrayMap)(dataFilter.filter(), rowData => rowData.meta.visualRow);
128161
- const visibleVisualRowsAssertion = (0, _utils.createArrayAssertion)(visibleVisualRows);
128162
- (0, _number.rangeEach)(this.hot.countSourceRows() - 1, row => {
128163
- if (!visibleVisualRowsAssertion(row)) {
128164
- trimmedRows.push(row);
128165
- }
128166
- });
128167
- (0, _array.arrayEach)(trimmedRows, physicalRow => {
128168
- this.filtersRowsMap.setValueAtIndex(physicalRow, true);
128169
- });
128170
- }, true);
128171
- if (!navigableHeaders && !visibleVisualRows.length) {
128172
- this.hot.deselectCell();
128173
- }
128174
- } else {
128195
+ if (allowFiltering !== false && needToFilter) {
128196
+ const trimmedRows = [];
128197
+ this.hot.batchExecution(() => {
128175
128198
  this.filtersRowsMap.clear();
128199
+ visibleVisualRows = (0, _array.arrayMap)(dataFilter.filter(), rowData => rowData.meta.visualRow);
128200
+ const visibleVisualRowsAssertion = (0, _utils.createArrayAssertion)(visibleVisualRows);
128201
+ (0, _number.rangeEach)(this.hot.countSourceRows() - 1, row => {
128202
+ if (!visibleVisualRowsAssertion(row)) {
128203
+ trimmedRows.push(row);
128204
+ }
128205
+ });
128206
+ (0, _array.arrayEach)(trimmedRows, physicalRow => {
128207
+ this.filtersRowsMap.setValueAtIndex(physicalRow, true);
128208
+ });
128209
+ }, true);
128210
+ if (!navigableHeaders && !visibleVisualRows.length) {
128211
+ this.hot.deselectCell();
128176
128212
  }
128177
128213
  _classPrivateFieldSet(_previousConditionStack, this, this.exportConditions());
128178
- this.hot.runHooks('afterFilter', conditions);
128179
- this.hot.view.adjustElementsSize();
128180
- this.hot.render();
128214
+ } else if (allowFiltering !== false && !needToFilter) {
128215
+ _classPrivateFieldSet(_previousConditionStack, this, this.exportConditions());
128216
+ this.filtersRowsMap.clear();
128181
128217
  } else {
128182
128218
  this.importConditions(_classPrivateFieldGet(_previousConditionStack, this));
128183
128219
  }
128184
128220
  if (this.hot.selection.isSelected()) {
128185
128221
  this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
128186
128222
  }
128223
+ if (allowFiltering !== false) {
128224
+ this.hot.runHooks('afterFilter', conditions);
128225
+ this.hot.view.adjustElementsSize();
128226
+ this.hot.render();
128227
+ }
128187
128228
  }
128188
128229
 
128189
128230
  /**
@@ -131610,7 +131651,13 @@ class MultipleSelectUI extends _base.BaseUI {
131610
131651
  beforeOnCellMouseUp: () => {
131611
131652
  _classPrivateFieldGet(_itemsBox, this).listen();
131612
131653
  },
131613
- colWidths: () => _classPrivateFieldGet(_itemsBox, this).container.scrollWidth - (0, _element.getScrollbarWidth)(rootDocument),
131654
+ modifyColWidth: width => {
131655
+ const minWidth = _classPrivateFieldGet(_itemsBox, this).container.scrollWidth - (0, _element.getScrollbarWidth)(rootDocument);
131656
+ if (width !== undefined && width < minWidth) {
131657
+ return minWidth;
131658
+ }
131659
+ return width;
131660
+ },
131614
131661
  maxCols: 1,
131615
131662
  autoWrapCol: true,
131616
131663
  height: 110,
@@ -135323,8 +135370,8 @@ class HiddenColumns extends _base.BasePlugin {
135323
135370
  * Disables the plugin functionality for this Handsontable instance.
135324
135371
  */
135325
135372
  disablePlugin() {
135326
- this.hot.columnIndexMapper.unregisterMap(this.pluginName);
135327
135373
  super.disablePlugin();
135374
+ this.hot.columnIndexMapper.unregisterMap(this.pluginName);
135328
135375
  this.resetCellsMeta();
135329
135376
  }
135330
135377
 
@@ -136012,8 +136059,8 @@ class HiddenRows extends _base.BasePlugin {
136012
136059
  * Disables the plugin functionality for this Handsontable instance.
136013
136060
  */
136014
136061
  disablePlugin() {
136015
- this.hot.rowIndexMapper.unregisterMap(this.pluginName);
136016
136062
  super.disablePlugin();
136063
+ this.hot.rowIndexMapper.unregisterMap(this.pluginName);
136017
136064
  this.resetCellsMeta();
136018
136065
  }
136019
136066
 
@@ -138052,12 +138099,12 @@ class ManualColumnResize extends _base.BasePlugin {
138052
138099
  setupGuidePosition() {
138053
138100
  const handleHeight = parseInt((0, _element.outerHeight)(_classPrivateFieldGet(_handle, this)), 10);
138054
138101
  const handleBottomPosition = parseInt(_classPrivateFieldGet(_handle, this).style.top, 10) + handleHeight;
138055
- const maximumVisibleElementHeight = parseInt(this.hot.view.maximumVisibleElementHeight(0), 10);
138102
+ const tableHeight = this.hot.view.getTableHeight();
138056
138103
  (0, _element.addClass)(_classPrivateFieldGet(_handle, this), 'active');
138057
138104
  (0, _element.addClass)(_classPrivateFieldGet(_guide, this), 'active');
138058
138105
  _classPrivateFieldGet(_guide, this).style.top = `${handleBottomPosition}px`;
138059
138106
  this.refreshGuidePosition();
138060
- _classPrivateFieldGet(_guide, this).style.height = `${maximumVisibleElementHeight - handleHeight}px`;
138107
+ _classPrivateFieldGet(_guide, this).style.height = `${tableHeight - handleHeight}px`;
138061
138108
  this.hot.rootElement.appendChild(_classPrivateFieldGet(_guide, this));
138062
138109
  }
138063
138110
 
@@ -138128,8 +138175,7 @@ class ManualColumnResize extends _base.BasePlugin {
138128
138175
  */
138129
138176
  afterMouseDownTimeout() {
138130
138177
  const render = () => {
138131
- this.hot.forceFullRender = true;
138132
- this.hot.view.render(); // updates all
138178
+ this.hot.render();
138133
138179
  this.hot.view.adjustElementsSize();
138134
138180
  };
138135
138181
  const resize = (column, forceRender) => {
@@ -138289,8 +138335,7 @@ function _onMouseMove(event) {
138289
138335
  */
138290
138336
  function _onMouseUp() {
138291
138337
  const render = () => {
138292
- this.hot.forceFullRender = true;
138293
- this.hot.view.render(); // updates all
138338
+ this.hot.render();
138294
138339
  this.hot.view.adjustElementsSize();
138295
138340
  };
138296
138341
  const resize = (column, forceRender) => {
@@ -139614,12 +139659,12 @@ class ManualRowResize extends _base.BasePlugin {
139614
139659
  setupGuidePosition() {
139615
139660
  const handleWidth = parseInt((0, _element.outerWidth)(_classPrivateFieldGet(_handle, this)), 10);
139616
139661
  const handleEndPosition = parseInt(_classPrivateFieldGet(_handle, this).style[this.inlineDir], 10) + handleWidth;
139617
- const maximumVisibleElementWidth = parseInt(this.hot.view.maximumVisibleElementWidth(0), 10);
139662
+ const tableWidth = this.hot.view.getTableWidth();
139618
139663
  (0, _element.addClass)(_classPrivateFieldGet(_handle, this), 'active');
139619
139664
  (0, _element.addClass)(_classPrivateFieldGet(_guide, this), 'active');
139620
139665
  _classPrivateFieldGet(_guide, this).style.top = _classPrivateFieldGet(_handle, this).style.top;
139621
139666
  _classPrivateFieldGet(_guide, this).style[this.inlineDir] = `${handleEndPosition}px`;
139622
- _classPrivateFieldGet(_guide, this).style.width = `${maximumVisibleElementWidth - handleWidth}px`;
139667
+ _classPrivateFieldGet(_guide, this).style.width = `${tableWidth - handleWidth}px`;
139623
139668
  this.hot.rootElement.appendChild(_classPrivateFieldGet(_guide, this));
139624
139669
  }
139625
139670
 
@@ -139700,8 +139745,7 @@ class ManualRowResize extends _base.BasePlugin {
139700
139745
  */
139701
139746
  afterMouseDownTimeout() {
139702
139747
  const render = () => {
139703
- this.hot.forceFullRender = true;
139704
- this.hot.view.render(); // updates all
139748
+ this.hot.render();
139705
139749
  this.hot.view.adjustElementsSize();
139706
139750
  };
139707
139751
  const resize = (row, forceRender) => {
@@ -139829,8 +139873,7 @@ function _onMouseMove(event) {
139829
139873
  */
139830
139874
  function _onMouseUp() {
139831
139875
  const render = () => {
139832
- this.hot.forceFullRender = true;
139833
- this.hot.view.render(); // updates all
139876
+ this.hot.render();
139834
139877
  this.hot.view.adjustElementsSize();
139835
139878
  };
139836
139879
  const runHooks = (row, forceRender) => {
@@ -139963,6 +140006,7 @@ var _element = __webpack_require__(351);
139963
140006
  var _browser = __webpack_require__(498);
139964
140007
  var _focusOrder2 = __webpack_require__(1033);
139965
140008
  var _renderer = __webpack_require__(1035);
140009
+ var _utils = __webpack_require__(1036);
139966
140010
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
139967
140011
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
139968
140012
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -140595,8 +140639,12 @@ class MergeCells extends _base.BasePlugin {
140595
140639
  * @param {CellRange} cellRange The cell range to merge or unmerged.
140596
140640
  */
140597
140641
  toggleMerge(cellRange) {
140598
- const mergedCell = this.mergedCellsCollection.get(cellRange.from.row, cellRange.from.col);
140599
- 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;
140642
+ const {
140643
+ from,
140644
+ to
140645
+ } = cellRange.clone().normalize();
140646
+ const mergedCell = this.mergedCellsCollection.get(from.row, from.col);
140647
+ const mergedCellCoversWholeRange = mergedCell.row === from.row && mergedCell.col === from.col && mergedCell.row + mergedCell.rowspan - 1 === to.row && mergedCell.col + mergedCell.colspan - 1 === to.col;
140600
140648
  if (mergedCellCoversWholeRange) {
140601
140649
  this.unmergeRange(cellRange);
140602
140650
  } else {
@@ -141408,36 +141456,10 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
141408
141456
  } else {
141409
141457
  rowspanAfterCorrection = rowspan - rowspanCorrection;
141410
141458
  }
141411
- height = Math.max(height !== null && height !== void 0 ? height : 0, _assertClassBrand(_MergeCells_brand, this, _sumCellsHeights).call(this, row, rowspanAfterCorrection));
141459
+ height = Math.max(height !== null && height !== void 0 ? height : 0, (0, _utils.sumCellsHeights)(this.hot, row, rowspanAfterCorrection));
141412
141460
  });
141413
141461
  return height;
141414
141462
  }
141415
- /**
141416
- * Sums the heights of the all cells that the merge cell consists of.
141417
- *
141418
- * @param {number} row The visual row index of the merged cell.
141419
- * @param {number} rowspan The rowspan value of the merged cell.
141420
- * @returns {number}
141421
- */
141422
- function _sumCellsHeights(row, rowspan) {
141423
- const {
141424
- view,
141425
- rowIndexMapper
141426
- } = this.hot;
141427
- const stylesHandler = view.getStylesHandler();
141428
- const defaultHeight = view.getDefaultRowHeight();
141429
- let height = 0;
141430
- for (let i = row; i < row + rowspan; i++) {
141431
- if (!rowIndexMapper.isHidden(i)) {
141432
- var _this$hot$getRowHeigh;
141433
- height += (_this$hot$getRowHeigh = this.hot.getRowHeight(i)) !== null && _this$hot$getRowHeigh !== void 0 ? _this$hot$getRowHeigh : defaultHeight;
141434
- if (i === 0 && !stylesHandler.isClassicTheme()) {
141435
- height += 1; // border-top-width
141436
- }
141437
- }
141438
- }
141439
- return height;
141440
- }
141441
141463
 
141442
141464
  /***/ }),
141443
141465
  /* 1024 */
@@ -143622,6 +143644,8 @@ var _default = exports["default"] = LinkedList;
143622
143644
  exports.__esModule = true;
143623
143645
  exports.createMergeCellRenderer = createMergeCellRenderer;
143624
143646
  var _object = __webpack_require__(499);
143647
+ var _browser = __webpack_require__(498);
143648
+ var _utils = __webpack_require__(1036);
143625
143649
  /**
143626
143650
  * Creates a renderer object for the `MergeCells` plugin.
143627
143651
  *
@@ -143637,6 +143661,7 @@ function createMergeCellRenderer(plugin) {
143637
143661
  rowIndexMapper: rowMapper,
143638
143662
  columnIndexMapper: columnMapper
143639
143663
  } = hot;
143664
+ const updateNextCellsHeight = new Map();
143640
143665
 
143641
143666
  /**
143642
143667
  * Runs before the cell is rendered.
@@ -143658,6 +143683,10 @@ function createMergeCellRenderer(plugin) {
143658
143683
  if (!(0, _object.isObject)(mergedCell)) {
143659
143684
  TD.removeAttribute('rowspan');
143660
143685
  TD.removeAttribute('colspan');
143686
+ if ((0, _browser.isSafari)() && updateNextCellsHeight.has(row) && !hot.getSettings().rowHeaders) {
143687
+ TD.style.height = `${updateNextCellsHeight.get(row)}px`;
143688
+ updateNextCellsHeight.delete(row);
143689
+ }
143661
143690
  TD.style.display = '';
143662
143691
  return;
143663
143692
  }
@@ -143669,6 +143698,14 @@ function createMergeCellRenderer(plugin) {
143669
143698
  } = mergedCell;
143670
143699
  const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
143671
143700
  const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
143701
+
143702
+ // Safari bug fix - the height of the cells next to the merged cell must be defined
143703
+ // so that their height is proportional to the height of the merged cell
143704
+ // (this emulates default behavior in Chrome, FF etc.)
143705
+ if ((0, _browser.isSafari)() && origColumn === 0 && !hot.getSettings().rowHeaders) {
143706
+ const height = (0, _utils.sumCellsHeights)(hot, origRow, origRowspan);
143707
+ updateNextCellsHeight.set(row, height / origRowspan);
143708
+ }
143672
143709
  const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
143673
143710
  const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
143674
143711
  const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
@@ -143704,19 +143741,56 @@ function createMergeCellRenderer(plugin) {
143704
143741
 
143705
143742
  /***/ }),
143706
143743
  /* 1036 */
143744
+ /***/ ((__unused_webpack_module, exports) => {
143745
+
143746
+ "use strict";
143747
+
143748
+
143749
+ exports.__esModule = true;
143750
+ exports.sumCellsHeights = sumCellsHeights;
143751
+ /**
143752
+ * Calculates the total height of the merged cell.
143753
+ *
143754
+ * @param {Core} hotInstance The Handsontable instance.
143755
+ * @param {*} row The merged cell's row index.
143756
+ * @param {*} rowspan The merged cell height.
143757
+ * @returns {number}
143758
+ */
143759
+ function sumCellsHeights(hotInstance, row, rowspan) {
143760
+ const {
143761
+ view,
143762
+ rowIndexMapper
143763
+ } = hotInstance;
143764
+ const stylesHandler = view.getStylesHandler();
143765
+ const defaultHeight = view.getDefaultRowHeight();
143766
+ let height = 0;
143767
+ for (let i = row; i < row + rowspan; i++) {
143768
+ if (!rowIndexMapper.isHidden(i)) {
143769
+ var _hotInstance$getRowHe;
143770
+ height += (_hotInstance$getRowHe = hotInstance.getRowHeight(i)) !== null && _hotInstance$getRowHe !== void 0 ? _hotInstance$getRowHe : defaultHeight;
143771
+ if (i === 0 && !stylesHandler.isClassicTheme()) {
143772
+ height += 1; // border-top-width
143773
+ }
143774
+ }
143775
+ }
143776
+ return height;
143777
+ }
143778
+
143779
+ /***/ }),
143780
+ /* 1037 */
143707
143781
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
143708
143782
 
143709
143783
  "use strict";
143710
143784
 
143711
143785
 
143712
143786
  exports.__esModule = true;
143713
- var _multiColumnSorting = __webpack_require__(1037);
143787
+ var _multiColumnSorting = __webpack_require__(1038);
143714
143788
  exports.PLUGIN_KEY = _multiColumnSorting.PLUGIN_KEY;
143715
143789
  exports.PLUGIN_PRIORITY = _multiColumnSorting.PLUGIN_PRIORITY;
143716
143790
  exports.MultiColumnSorting = _multiColumnSorting.MultiColumnSorting;
143717
143791
 
143718
143792
  /***/ }),
143719
- /* 1037 */
143793
+ /* 1038 */
143720
143794
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
143721
143795
 
143722
143796
  "use strict";
@@ -143729,8 +143803,8 @@ var _columnSorting = __webpack_require__(856);
143729
143803
  var _sortService = __webpack_require__(860);
143730
143804
  var _utils = __webpack_require__(859);
143731
143805
  var _element = __webpack_require__(351);
143732
- var _rootComparator = __webpack_require__(1038);
143733
- var _domHelpers = __webpack_require__(1039);
143806
+ var _rootComparator = __webpack_require__(1039);
143807
+ var _domHelpers = __webpack_require__(1040);
143734
143808
  var _shortcutContexts = __webpack_require__(686);
143735
143809
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'multiColumnSorting';
143736
143810
  const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 170;
@@ -144016,7 +144090,7 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
144016
144090
  exports.MultiColumnSorting = MultiColumnSorting;
144017
144091
 
144018
144092
  /***/ }),
144019
- /* 1038 */
144093
+ /* 1039 */
144020
144094
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
144021
144095
 
144022
144096
  "use strict";
@@ -144058,7 +144132,7 @@ function rootComparator(sortingOrders, columnMetas) {
144058
144132
  }
144059
144133
 
144060
144134
  /***/ }),
144061
- /* 1039 */
144135
+ /* 1040 */
144062
144136
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
144063
144137
 
144064
144138
  "use strict";
@@ -144104,20 +144178,20 @@ function getClassesToRemove(htmlElement) {
144104
144178
  }
144105
144179
 
144106
144180
  /***/ }),
144107
- /* 1040 */
144181
+ /* 1041 */
144108
144182
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
144109
144183
 
144110
144184
  "use strict";
144111
144185
 
144112
144186
 
144113
144187
  exports.__esModule = true;
144114
- var _multipleSelectionHandles = __webpack_require__(1041);
144188
+ var _multipleSelectionHandles = __webpack_require__(1042);
144115
144189
  exports.PLUGIN_KEY = _multipleSelectionHandles.PLUGIN_KEY;
144116
144190
  exports.PLUGIN_PRIORITY = _multipleSelectionHandles.PLUGIN_PRIORITY;
144117
144191
  exports.MultipleSelectionHandles = _multipleSelectionHandles.MultipleSelectionHandles;
144118
144192
 
144119
144193
  /***/ }),
144120
- /* 1041 */
144194
+ /* 1042 */
144121
144195
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
144122
144196
 
144123
144197
  "use strict";
@@ -144456,20 +144530,20 @@ class MultipleSelectionHandles extends _base.BasePlugin {
144456
144530
  exports.MultipleSelectionHandles = MultipleSelectionHandles;
144457
144531
 
144458
144532
  /***/ }),
144459
- /* 1042 */
144533
+ /* 1043 */
144460
144534
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
144461
144535
 
144462
144536
  "use strict";
144463
144537
 
144464
144538
 
144465
144539
  exports.__esModule = true;
144466
- var _nestedHeaders = __webpack_require__(1043);
144540
+ var _nestedHeaders = __webpack_require__(1044);
144467
144541
  exports.PLUGIN_KEY = _nestedHeaders.PLUGIN_KEY;
144468
144542
  exports.PLUGIN_PRIORITY = _nestedHeaders.PLUGIN_PRIORITY;
144469
144543
  exports.NestedHeaders = _nestedHeaders.NestedHeaders;
144470
144544
 
144471
144545
  /***/ }),
144472
- /* 1043 */
144546
+ /* 1044 */
144473
144547
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
144474
144548
 
144475
144549
  "use strict";
@@ -144489,8 +144563,8 @@ var _event = __webpack_require__(509);
144489
144563
  var _console = __webpack_require__(512);
144490
144564
  var _selection = __webpack_require__(652);
144491
144565
  var _base = __webpack_require__(841);
144492
- var _stateManager2 = _interopRequireDefault(__webpack_require__(1044));
144493
- var _ghostTable = _interopRequireDefault(__webpack_require__(1057));
144566
+ var _stateManager2 = _interopRequireDefault(__webpack_require__(1045));
144567
+ var _ghostTable = _interopRequireDefault(__webpack_require__(1058));
144494
144568
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
144495
144569
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
144496
144570
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -145478,7 +145552,7 @@ function _onAfterLoadData(sourceData, initialLoad) {
145478
145552
  }
145479
145553
 
145480
145554
  /***/ }),
145481
- /* 1044 */
145555
+ /* 1045 */
145482
145556
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
145483
145557
 
145484
145558
  "use strict";
@@ -145491,11 +145565,11 @@ __webpack_require__(283);
145491
145565
  __webpack_require__(311);
145492
145566
  __webpack_require__(338);
145493
145567
  var _array = __webpack_require__(495);
145494
- var _sourceSettings2 = _interopRequireDefault(__webpack_require__(1045));
145495
- var _headersTree2 = _interopRequireDefault(__webpack_require__(1048));
145496
- var _nodeModifiers = __webpack_require__(1050);
145497
- var _matrixGenerator = __webpack_require__(1056);
145498
- var _tree = __webpack_require__(1049);
145568
+ var _sourceSettings2 = _interopRequireDefault(__webpack_require__(1046));
145569
+ var _headersTree2 = _interopRequireDefault(__webpack_require__(1049));
145570
+ var _nodeModifiers = __webpack_require__(1051);
145571
+ var _matrixGenerator = __webpack_require__(1057);
145572
+ var _tree = __webpack_require__(1050);
145499
145573
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
145500
145574
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
145501
145575
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
@@ -145970,7 +146044,7 @@ class StateManager {
145970
146044
  exports["default"] = StateManager;
145971
146045
 
145972
146046
  /***/ }),
145973
- /* 1045 */
146047
+ /* 1046 */
145974
146048
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
145975
146049
 
145976
146050
  "use strict";
@@ -145981,7 +146055,7 @@ __webpack_require__(201);
145981
146055
  __webpack_require__(283);
145982
146056
  var _object = __webpack_require__(499);
145983
146057
  var _array = __webpack_require__(495);
145984
- var _settingsNormalizer = __webpack_require__(1046);
146058
+ var _settingsNormalizer = __webpack_require__(1047);
145985
146059
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
145986
146060
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
145987
146061
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -146192,7 +146266,7 @@ class SourceSettings {
146192
146266
  exports["default"] = SourceSettings;
146193
146267
 
146194
146268
  /***/ }),
146195
- /* 1046 */
146269
+ /* 1047 */
146196
146270
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
146197
146271
 
146198
146272
  "use strict";
@@ -146204,7 +146278,7 @@ __webpack_require__(283);
146204
146278
  var _array = __webpack_require__(495);
146205
146279
  var _object = __webpack_require__(499);
146206
146280
  var _mixed = __webpack_require__(354);
146207
- var _utils = __webpack_require__(1047);
146281
+ var _utils = __webpack_require__(1048);
146208
146282
  /* eslint-disable jsdoc/require-description-complete-sentence */
146209
146283
 
146210
146284
  /**
@@ -146306,7 +146380,7 @@ function normalizeSettings(sourceSettings) {
146306
146380
  }
146307
146381
 
146308
146382
  /***/ }),
146309
- /* 1047 */
146383
+ /* 1048 */
146310
146384
  /***/ ((__unused_webpack_module, exports) => {
146311
146385
 
146312
146386
  "use strict";
@@ -146383,7 +146457,7 @@ function createPlaceholderHeaderSettings() {
146383
146457
  }
146384
146458
 
146385
146459
  /***/ }),
146386
- /* 1048 */
146460
+ /* 1049 */
146387
146461
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
146388
146462
 
146389
146463
  "use strict";
@@ -146393,7 +146467,7 @@ var _interopRequireDefault = __webpack_require__(197);
146393
146467
  exports.__esModule = true;
146394
146468
  __webpack_require__(201);
146395
146469
  var _array = __webpack_require__(495);
146396
- var _tree = _interopRequireDefault(__webpack_require__(1049));
146470
+ var _tree = _interopRequireDefault(__webpack_require__(1050));
146397
146471
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
146398
146472
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
146399
146473
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -146621,7 +146695,7 @@ class HeadersTree {
146621
146695
  exports["default"] = HeadersTree;
146622
146696
 
146623
146697
  /***/ }),
146624
- /* 1049 */
146698
+ /* 1050 */
146625
146699
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
146626
146700
 
146627
146701
  "use strict";
@@ -146840,7 +146914,7 @@ class TreeNode {
146840
146914
  exports["default"] = TreeNode;
146841
146915
 
146842
146916
  /***/ }),
146843
- /* 1050 */
146917
+ /* 1051 */
146844
146918
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
146845
146919
 
146846
146920
  "use strict";
@@ -146849,10 +146923,10 @@ exports["default"] = TreeNode;
146849
146923
  exports.__esModule = true;
146850
146924
  exports.triggerNodeModification = triggerNodeModification;
146851
146925
  __webpack_require__(201);
146852
- var _collapse = __webpack_require__(1051);
146853
- var _expand = __webpack_require__(1052);
146854
- var _hideColumn = __webpack_require__(1054);
146855
- var _showColumn = __webpack_require__(1055);
146926
+ var _collapse = __webpack_require__(1052);
146927
+ var _expand = __webpack_require__(1053);
146928
+ var _hideColumn = __webpack_require__(1055);
146929
+ var _showColumn = __webpack_require__(1056);
146856
146930
  /**
146857
146931
  * The NodeModifiers module is responsible for the modification of a tree structure
146858
146932
  * in a way to achieve new column headers state.
@@ -146882,7 +146956,7 @@ function triggerNodeModification(actionName, nodeToProcess, gridColumnIndex) {
146882
146956
  }
146883
146957
 
146884
146958
  /***/ }),
146885
- /* 1051 */
146959
+ /* 1052 */
146886
146960
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
146887
146961
 
146888
146962
  "use strict";
@@ -146898,8 +146972,8 @@ __webpack_require__(305);
146898
146972
  __webpack_require__(307);
146899
146973
  __webpack_require__(309);
146900
146974
  var _array = __webpack_require__(495);
146901
- var _expand = __webpack_require__(1052);
146902
- var _tree = __webpack_require__(1053);
146975
+ var _expand = __webpack_require__(1053);
146976
+ var _tree = __webpack_require__(1054);
146903
146977
  /**
146904
146978
  * Collapsing a node is a process where the processing node is collapsed
146905
146979
  * to the colspan width of the first child. All node children, except the
@@ -146992,7 +147066,7 @@ function collapseNode(nodeToProcess) {
146992
147066
  }
146993
147067
 
146994
147068
  /***/ }),
146995
- /* 1052 */
147069
+ /* 1053 */
146996
147070
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
146997
147071
 
146998
147072
  "use strict";
@@ -147008,8 +147082,8 @@ __webpack_require__(305);
147008
147082
  __webpack_require__(307);
147009
147083
  __webpack_require__(309);
147010
147084
  var _array = __webpack_require__(495);
147011
- var _collapse = __webpack_require__(1051);
147012
- var _tree = __webpack_require__(1053);
147085
+ var _collapse = __webpack_require__(1052);
147086
+ var _tree = __webpack_require__(1054);
147013
147087
  /**
147014
147088
  * Expanding a node is a process where the processing node is expanded to
147015
147089
  * its original colspan width. To restore an original state of all node
@@ -147097,7 +147171,7 @@ function expandNode(nodeToProcess) {
147097
147171
  }
147098
147172
 
147099
147173
  /***/ }),
147100
- /* 1053 */
147174
+ /* 1054 */
147101
147175
  /***/ ((__unused_webpack_module, exports) => {
147102
147176
 
147103
147177
  "use strict";
@@ -147168,7 +147242,7 @@ function isNodeReflectsFirstChildColspan(node) {
147168
147242
  }
147169
147243
 
147170
147244
  /***/ }),
147171
- /* 1054 */
147245
+ /* 1055 */
147172
147246
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
147173
147247
 
147174
147248
  "use strict";
@@ -147231,7 +147305,7 @@ the last node, the hide column modification can be applied.`);
147231
147305
  }
147232
147306
 
147233
147307
  /***/ }),
147234
- /* 1055 */
147308
+ /* 1056 */
147235
147309
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
147236
147310
 
147237
147311
  "use strict";
@@ -147292,7 +147366,7 @@ the last node, the show column modification can be applied.`);
147292
147366
  }
147293
147367
 
147294
147368
  /***/ }),
147295
- /* 1056 */
147369
+ /* 1057 */
147296
147370
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
147297
147371
 
147298
147372
  "use strict";
@@ -147302,7 +147376,7 @@ exports.__esModule = true;
147302
147376
  exports.generateMatrix = generateMatrix;
147303
147377
  __webpack_require__(283);
147304
147378
  var _array = __webpack_require__(495);
147305
- var _utils = __webpack_require__(1047);
147379
+ var _utils = __webpack_require__(1048);
147306
147380
  /* eslint-disable jsdoc/require-description-complete-sentence */
147307
147381
 
147308
147382
  /**
@@ -147398,7 +147472,7 @@ function createNestedArrayIfNecessary(array, index) {
147398
147472
  }
147399
147473
 
147400
147474
  /***/ }),
147401
- /* 1057 */
147475
+ /* 1058 */
147402
147476
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
147403
147477
 
147404
147478
  "use strict";
@@ -147554,20 +147628,20 @@ class GhostTable {
147554
147628
  var _default = exports["default"] = GhostTable;
147555
147629
 
147556
147630
  /***/ }),
147557
- /* 1058 */
147631
+ /* 1059 */
147558
147632
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
147559
147633
 
147560
147634
  "use strict";
147561
147635
 
147562
147636
 
147563
147637
  exports.__esModule = true;
147564
- var _nestedRows = __webpack_require__(1059);
147638
+ var _nestedRows = __webpack_require__(1060);
147565
147639
  exports.PLUGIN_KEY = _nestedRows.PLUGIN_KEY;
147566
147640
  exports.PLUGIN_PRIORITY = _nestedRows.PLUGIN_PRIORITY;
147567
147641
  exports.NestedRows = _nestedRows.NestedRows;
147568
147642
 
147569
147643
  /***/ }),
147570
- /* 1059 */
147644
+ /* 1060 */
147571
147645
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
147572
147646
 
147573
147647
  "use strict";
@@ -147589,15 +147663,15 @@ __webpack_require__(329);
147589
147663
  __webpack_require__(530);
147590
147664
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
147591
147665
  var _base = __webpack_require__(841);
147592
- var _dataManager = _interopRequireDefault(__webpack_require__(1060));
147593
- var _collapsing = _interopRequireDefault(__webpack_require__(1061));
147594
- var _headers = _interopRequireDefault(__webpack_require__(1063));
147595
- var _contextMenu = _interopRequireDefault(__webpack_require__(1064));
147666
+ var _dataManager = _interopRequireDefault(__webpack_require__(1061));
147667
+ var _collapsing = _interopRequireDefault(__webpack_require__(1062));
147668
+ var _headers = _interopRequireDefault(__webpack_require__(1064));
147669
+ var _contextMenu = _interopRequireDefault(__webpack_require__(1065));
147596
147670
  var _console = __webpack_require__(512);
147597
147671
  var _data = __webpack_require__(622);
147598
147672
  var _translations = __webpack_require__(625);
147599
147673
  var _shortcutContexts = __webpack_require__(686);
147600
- var _rowMoveController = _interopRequireDefault(__webpack_require__(1065));
147674
+ var _rowMoveController = _interopRequireDefault(__webpack_require__(1066));
147601
147675
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
147602
147676
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
147603
147677
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -148129,7 +148203,7 @@ function _onBeforeLoadData(data) {
148129
148203
  }
148130
148204
 
148131
148205
  /***/ }),
148132
- /* 1060 */
148206
+ /* 1061 */
148133
148207
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
148134
148208
 
148135
148209
  "use strict";
@@ -148760,7 +148834,7 @@ class DataManager {
148760
148834
  */
148761
148835
  syncRowWithRawSource(rowElement) {
148762
148836
  let upmostParent = rowElement;
148763
- let tempParent = null;
148837
+ let tempParent = upmostParent;
148764
148838
  do {
148765
148839
  tempParent = this.getRowParent(tempParent);
148766
148840
  if (tempParent !== null) {
@@ -148768,7 +148842,7 @@ class DataManager {
148768
148842
  }
148769
148843
  } while (tempParent !== null);
148770
148844
  this.plugin.disableCoreAPIModifiers();
148771
- this.hot.setSourceDataAtCell(this.getRowIndex(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
148845
+ this.hot.setSourceDataAtCell(this.getRowIndexWithinParent(upmostParent), '__children', upmostParent.__children, 'NestedRows.syncRowWithRawSource');
148772
148846
  this.plugin.enableCoreAPIModifiers();
148773
148847
  }
148774
148848
 
@@ -148845,7 +148919,7 @@ class DataManager {
148845
148919
  var _default = exports["default"] = DataManager;
148846
148920
 
148847
148921
  /***/ }),
148848
- /* 1061 */
148922
+ /* 1062 */
148849
148923
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
148850
148924
 
148851
148925
  "use strict";
@@ -148858,8 +148932,8 @@ var _event = __webpack_require__(509);
148858
148932
  var _array = __webpack_require__(495);
148859
148933
  var _number = __webpack_require__(534);
148860
148934
  var _element = __webpack_require__(351);
148861
- var _base = _interopRequireDefault(__webpack_require__(1062));
148862
- var _headers = _interopRequireDefault(__webpack_require__(1063));
148935
+ var _base = _interopRequireDefault(__webpack_require__(1063));
148936
+ var _headers = _interopRequireDefault(__webpack_require__(1064));
148863
148937
  /**
148864
148938
  * Class responsible for the UI for collapsing and expanding groups.
148865
148939
  *
@@ -149320,7 +149394,7 @@ class CollapsingUI extends _base.default {
149320
149394
  var _default = exports["default"] = CollapsingUI;
149321
149395
 
149322
149396
  /***/ }),
149323
- /* 1062 */
149397
+ /* 1063 */
149324
149398
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
149325
149399
 
149326
149400
  "use strict";
@@ -149354,7 +149428,7 @@ class BaseUI {
149354
149428
  var _default = exports["default"] = BaseUI;
149355
149429
 
149356
149430
  /***/ }),
149357
- /* 1063 */
149431
+ /* 1064 */
149358
149432
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
149359
149433
 
149360
149434
  "use strict";
@@ -149365,7 +149439,7 @@ exports.__esModule = true;
149365
149439
  var _array = __webpack_require__(495);
149366
149440
  var _number = __webpack_require__(534);
149367
149441
  var _element = __webpack_require__(351);
149368
- var _base = _interopRequireDefault(__webpack_require__(1062));
149442
+ var _base = _interopRequireDefault(__webpack_require__(1063));
149369
149443
  var _a11y = __webpack_require__(496);
149370
149444
  /**
149371
149445
  * Class responsible for the UI in the Nested Rows' row headers.
@@ -149498,7 +149572,7 @@ class HeadersUI extends _base.default {
149498
149572
  var _default = exports["default"] = HeadersUI;
149499
149573
 
149500
149574
  /***/ }),
149501
- /* 1064 */
149575
+ /* 1065 */
149502
149576
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
149503
149577
 
149504
149578
  "use strict";
@@ -149511,7 +149585,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
149511
149585
  var _number = __webpack_require__(534);
149512
149586
  var _array = __webpack_require__(495);
149513
149587
  var C = _interopRequireWildcard(__webpack_require__(651));
149514
- var _base = _interopRequireDefault(__webpack_require__(1062));
149588
+ var _base = _interopRequireDefault(__webpack_require__(1063));
149515
149589
  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); }
149516
149590
  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; }
149517
149591
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
@@ -149617,7 +149691,7 @@ class ContextMenuUI extends _base.default {
149617
149691
  var _default = exports["default"] = ContextMenuUI;
149618
149692
 
149619
149693
  /***/ }),
149620
- /* 1065 */
149694
+ /* 1066 */
149621
149695
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
149622
149696
 
149623
149697
  "use strict";
@@ -149906,20 +149980,20 @@ class RowMoveController {
149906
149980
  exports["default"] = RowMoveController;
149907
149981
 
149908
149982
  /***/ }),
149909
- /* 1066 */
149983
+ /* 1067 */
149910
149984
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
149911
149985
 
149912
149986
  "use strict";
149913
149987
 
149914
149988
 
149915
149989
  exports.__esModule = true;
149916
- var _persistentState = __webpack_require__(1067);
149990
+ var _persistentState = __webpack_require__(1068);
149917
149991
  exports.PLUGIN_KEY = _persistentState.PLUGIN_KEY;
149918
149992
  exports.PLUGIN_PRIORITY = _persistentState.PLUGIN_PRIORITY;
149919
149993
  exports.PersistentState = _persistentState.PersistentState;
149920
149994
 
149921
149995
  /***/ }),
149922
- /* 1067 */
149996
+ /* 1068 */
149923
149997
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
149924
149998
 
149925
149999
  "use strict";
@@ -149929,7 +150003,7 @@ var _interopRequireDefault = __webpack_require__(197);
149929
150003
  exports.__esModule = true;
149930
150004
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
149931
150005
  var _base = __webpack_require__(841);
149932
- var _storage = _interopRequireDefault(__webpack_require__(1068));
150006
+ var _storage = _interopRequireDefault(__webpack_require__(1069));
149933
150007
  var _hooks = __webpack_require__(511);
149934
150008
  _hooks.Hooks.getSingleton().register('persistentStateSave');
149935
150009
  _hooks.Hooks.getSingleton().register('persistentStateLoad');
@@ -150070,7 +150144,7 @@ class PersistentState extends _base.BasePlugin {
150070
150144
  exports.PersistentState = PersistentState;
150071
150145
 
150072
150146
  /***/ }),
150073
- /* 1068 */
150147
+ /* 1069 */
150074
150148
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150075
150149
 
150076
150150
  "use strict";
@@ -150194,20 +150268,20 @@ class Storage {
150194
150268
  var _default = exports["default"] = Storage;
150195
150269
 
150196
150270
  /***/ }),
150197
- /* 1069 */
150271
+ /* 1070 */
150198
150272
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150199
150273
 
150200
150274
  "use strict";
150201
150275
 
150202
150276
 
150203
150277
  exports.__esModule = true;
150204
- var _search = __webpack_require__(1070);
150278
+ var _search = __webpack_require__(1071);
150205
150279
  exports.PLUGIN_KEY = _search.PLUGIN_KEY;
150206
150280
  exports.PLUGIN_PRIORITY = _search.PLUGIN_PRIORITY;
150207
150281
  exports.Search = _search.Search;
150208
150282
 
150209
150283
  /***/ }),
150210
- /* 1070 */
150284
+ /* 1071 */
150211
150285
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150212
150286
 
150213
150287
  "use strict";
@@ -150515,20 +150589,20 @@ function _onBeforeRenderer(TD, row, col, prop, value, cellProperties) {
150515
150589
  }
150516
150590
 
150517
150591
  /***/ }),
150518
- /* 1071 */
150592
+ /* 1072 */
150519
150593
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150520
150594
 
150521
150595
  "use strict";
150522
150596
 
150523
150597
 
150524
150598
  exports.__esModule = true;
150525
- var _stretchColumns = __webpack_require__(1072);
150599
+ var _stretchColumns = __webpack_require__(1073);
150526
150600
  exports.PLUGIN_KEY = _stretchColumns.PLUGIN_KEY;
150527
150601
  exports.PLUGIN_PRIORITY = _stretchColumns.PLUGIN_PRIORITY;
150528
150602
  exports.StretchColumns = _stretchColumns.StretchColumns;
150529
150603
 
150530
150604
  /***/ }),
150531
- /* 1072 */
150605
+ /* 1073 */
150532
150606
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150533
150607
 
150534
150608
  "use strict";
@@ -150539,7 +150613,7 @@ __webpack_require__(201);
150539
150613
  __webpack_require__(311);
150540
150614
  __webpack_require__(329);
150541
150615
  var _base = __webpack_require__(841);
150542
- var _calculator = __webpack_require__(1073);
150616
+ var _calculator = __webpack_require__(1074);
150543
150617
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
150544
150618
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
150545
150619
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -150756,7 +150830,7 @@ function _onBeforeRender(fullRender) {
150756
150830
  }
150757
150831
 
150758
150832
  /***/ }),
150759
- /* 1073 */
150833
+ /* 1074 */
150760
150834
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150761
150835
 
150762
150836
  "use strict";
@@ -150768,8 +150842,8 @@ __webpack_require__(311);
150768
150842
  __webpack_require__(329);
150769
150843
  var _src = __webpack_require__(540);
150770
150844
  var _element = __webpack_require__(351);
150771
- var _all = __webpack_require__(1074);
150772
- var _last = __webpack_require__(1076);
150845
+ var _all = __webpack_require__(1075);
150846
+ var _last = __webpack_require__(1077);
150773
150847
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
150774
150848
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
150775
150849
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -150924,7 +150998,7 @@ function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
150924
150998
  }
150925
150999
 
150926
151000
  /***/ }),
150927
- /* 1074 */
151001
+ /* 1075 */
150928
151002
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
150929
151003
 
150930
151004
  "use strict";
@@ -150936,7 +151010,7 @@ __webpack_require__(311);
150936
151010
  __webpack_require__(329);
150937
151011
  __webpack_require__(530);
150938
151012
  var _src = __webpack_require__(540);
150939
- var _base = __webpack_require__(1075);
151013
+ var _base = __webpack_require__(1076);
150940
151014
  /**
150941
151015
  * The strategy calculates the column widths by stretching all columns evenly.
150942
151016
  *
@@ -151001,7 +151075,7 @@ class StretchAllStrategy extends _base.StretchStrategy {
151001
151075
  exports.StretchAllStrategy = StretchAllStrategy;
151002
151076
 
151003
151077
  /***/ }),
151004
- /* 1075 */
151078
+ /* 1076 */
151005
151079
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151006
151080
 
151007
151081
  "use strict";
@@ -151090,7 +151164,7 @@ class StretchStrategy {
151090
151164
  exports.StretchStrategy = StretchStrategy;
151091
151165
 
151092
151166
  /***/ }),
151093
- /* 1076 */
151167
+ /* 1077 */
151094
151168
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151095
151169
 
151096
151170
  "use strict";
@@ -151100,7 +151174,7 @@ exports.__esModule = true;
151100
151174
  __webpack_require__(201);
151101
151175
  __webpack_require__(311);
151102
151176
  __webpack_require__(530);
151103
- var _base = __webpack_require__(1075);
151177
+ var _base = __webpack_require__(1076);
151104
151178
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
151105
151179
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
151106
151180
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
@@ -151175,20 +151249,20 @@ class StretchLastStrategy extends _base.StretchStrategy {
151175
151249
  exports.StretchLastStrategy = StretchLastStrategy;
151176
151250
 
151177
151251
  /***/ }),
151178
- /* 1077 */
151252
+ /* 1078 */
151179
151253
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151180
151254
 
151181
151255
  "use strict";
151182
151256
 
151183
151257
 
151184
151258
  exports.__esModule = true;
151185
- var _touchScroll = __webpack_require__(1078);
151259
+ var _touchScroll = __webpack_require__(1079);
151186
151260
  exports.PLUGIN_KEY = _touchScroll.PLUGIN_KEY;
151187
151261
  exports.PLUGIN_PRIORITY = _touchScroll.PLUGIN_PRIORITY;
151188
151262
  exports.TouchScroll = _touchScroll.TouchScroll;
151189
151263
 
151190
151264
  /***/ }),
151191
- /* 1078 */
151265
+ /* 1079 */
151192
151266
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151193
151267
 
151194
151268
  "use strict";
@@ -151377,20 +151451,20 @@ function _onAfterMomentumScroll() {
151377
151451
  }
151378
151452
 
151379
151453
  /***/ }),
151380
- /* 1079 */
151454
+ /* 1080 */
151381
151455
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151382
151456
 
151383
151457
  "use strict";
151384
151458
 
151385
151459
 
151386
151460
  exports.__esModule = true;
151387
- var _trimRows = __webpack_require__(1080);
151461
+ var _trimRows = __webpack_require__(1081);
151388
151462
  exports.PLUGIN_KEY = _trimRows.PLUGIN_KEY;
151389
151463
  exports.PLUGIN_PRIORITY = _trimRows.PLUGIN_PRIORITY;
151390
151464
  exports.TrimRows = _trimRows.TrimRows;
151391
151465
 
151392
151466
  /***/ }),
151393
- /* 1080 */
151467
+ /* 1081 */
151394
151468
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151395
151469
 
151396
151470
  "use strict";
@@ -151722,20 +151796,20 @@ function _onMapInit() {
151722
151796
  }
151723
151797
 
151724
151798
  /***/ }),
151725
- /* 1081 */
151799
+ /* 1082 */
151726
151800
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151727
151801
 
151728
151802
  "use strict";
151729
151803
 
151730
151804
 
151731
151805
  exports.__esModule = true;
151732
- var _undoRedo = __webpack_require__(1082);
151806
+ var _undoRedo = __webpack_require__(1083);
151733
151807
  exports.PLUGIN_KEY = _undoRedo.PLUGIN_KEY;
151734
151808
  exports.PLUGIN_PRIORITY = _undoRedo.PLUGIN_PRIORITY;
151735
151809
  exports.UndoRedo = _undoRedo.UndoRedo;
151736
151810
 
151737
151811
  /***/ }),
151738
- /* 1082 */
151812
+ /* 1083 */
151739
151813
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
151740
151814
 
151741
151815
  "use strict";
@@ -151758,7 +151832,7 @@ var _hooks = __webpack_require__(511);
151758
151832
  var _object = __webpack_require__(499);
151759
151833
  var _templateLiteralTag = __webpack_require__(494);
151760
151834
  var _console = __webpack_require__(512);
151761
- var _actions = __webpack_require__(1083);
151835
+ var _actions = __webpack_require__(1084);
151762
151836
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
151763
151837
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
151764
151838
  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"); }
@@ -152128,7 +152202,7 @@ function _removeAPIFromCore() {
152128
152202
  }
152129
152203
 
152130
152204
  /***/ }),
152131
- /* 1083 */
152205
+ /* 1084 */
152132
152206
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152133
152207
 
152134
152208
  "use strict";
@@ -152138,18 +152212,18 @@ exports.__esModule = true;
152138
152212
  exports.registerActions = registerActions;
152139
152213
  __webpack_require__(311);
152140
152214
  __webpack_require__(329);
152141
- var _cellAlignment = __webpack_require__(1084);
152142
- var _columnMove = __webpack_require__(1086);
152143
- var _columnSort = __webpack_require__(1087);
152144
- var _createColumn = __webpack_require__(1088);
152145
- var _createRow = __webpack_require__(1089);
152146
- var _dataChange = __webpack_require__(1090);
152147
- var _filters = __webpack_require__(1091);
152148
- var _mergeCells = __webpack_require__(1092);
152149
- var _removeColumn = __webpack_require__(1093);
152150
- var _removeRow = __webpack_require__(1096);
152151
- var _rowMove = __webpack_require__(1097);
152152
- var _unmergeCells = __webpack_require__(1098);
152215
+ var _cellAlignment = __webpack_require__(1085);
152216
+ var _columnMove = __webpack_require__(1087);
152217
+ var _columnSort = __webpack_require__(1088);
152218
+ var _createColumn = __webpack_require__(1089);
152219
+ var _createRow = __webpack_require__(1090);
152220
+ var _dataChange = __webpack_require__(1091);
152221
+ var _filters = __webpack_require__(1092);
152222
+ var _mergeCells = __webpack_require__(1093);
152223
+ var _removeColumn = __webpack_require__(1094);
152224
+ var _removeRow = __webpack_require__(1097);
152225
+ var _rowMove = __webpack_require__(1098);
152226
+ var _unmergeCells = __webpack_require__(1099);
152153
152227
  /**
152154
152228
  * Register all undo/redo actions.
152155
152229
  *
@@ -152161,7 +152235,7 @@ function registerActions(hot, undoRedoPlugin) {
152161
152235
  }
152162
152236
 
152163
152237
  /***/ }),
152164
- /* 1084 */
152238
+ /* 1085 */
152165
152239
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152166
152240
 
152167
152241
  "use strict";
@@ -152170,7 +152244,7 @@ function registerActions(hot, undoRedoPlugin) {
152170
152244
  var _interopRequireDefault = __webpack_require__(197);
152171
152245
  exports.__esModule = true;
152172
152246
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152173
- var _base = __webpack_require__(1085);
152247
+ var _base = __webpack_require__(1086);
152174
152248
  var _utils = __webpack_require__(881);
152175
152249
  var _array = __webpack_require__(495);
152176
152250
  /**
@@ -152250,7 +152324,7 @@ class CellAlignmentAction extends _base.BaseAction {
152250
152324
  exports.CellAlignmentAction = CellAlignmentAction;
152251
152325
 
152252
152326
  /***/ }),
152253
- /* 1085 */
152327
+ /* 1086 */
152254
152328
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152255
152329
 
152256
152330
  "use strict";
@@ -152284,7 +152358,7 @@ class BaseAction {
152284
152358
  exports.BaseAction = BaseAction;
152285
152359
 
152286
152360
  /***/ }),
152287
- /* 1086 */
152361
+ /* 1087 */
152288
152362
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152289
152363
 
152290
152364
  "use strict";
@@ -152295,7 +152369,7 @@ exports.__esModule = true;
152295
152369
  __webpack_require__(311);
152296
152370
  __webpack_require__(329);
152297
152371
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152298
- var _base = __webpack_require__(1085);
152372
+ var _base = __webpack_require__(1086);
152299
152373
  var _moves = __webpack_require__(995);
152300
152374
  /**
152301
152375
  * Action that tracks column move changes.
@@ -152372,7 +152446,7 @@ class ColumnMoveAction extends _base.BaseAction {
152372
152446
  exports.ColumnMoveAction = ColumnMoveAction;
152373
152447
 
152374
152448
  /***/ }),
152375
- /* 1087 */
152449
+ /* 1088 */
152376
152450
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152377
152451
 
152378
152452
  "use strict";
@@ -152381,7 +152455,7 @@ exports.ColumnMoveAction = ColumnMoveAction;
152381
152455
  var _interopRequireDefault = __webpack_require__(197);
152382
152456
  exports.__esModule = true;
152383
152457
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152384
- var _base = __webpack_require__(1085);
152458
+ var _base = __webpack_require__(1086);
152385
152459
  /**
152386
152460
  * Action that tracks column sort changes.
152387
152461
  *
@@ -152449,7 +152523,7 @@ class ColumnSortAction extends _base.BaseAction {
152449
152523
  exports.ColumnSortAction = ColumnSortAction;
152450
152524
 
152451
152525
  /***/ }),
152452
- /* 1088 */
152526
+ /* 1089 */
152453
152527
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152454
152528
 
152455
152529
  "use strict";
@@ -152458,7 +152532,7 @@ exports.ColumnSortAction = ColumnSortAction;
152458
152532
  var _interopRequireDefault = __webpack_require__(197);
152459
152533
  exports.__esModule = true;
152460
152534
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152461
- var _base = __webpack_require__(1085);
152535
+ var _base = __webpack_require__(1086);
152462
152536
  /**
152463
152537
  * Action that tracks column creation.
152464
152538
  *
@@ -152513,7 +152587,7 @@ class CreateColumnAction extends _base.BaseAction {
152513
152587
  exports.CreateColumnAction = CreateColumnAction;
152514
152588
 
152515
152589
  /***/ }),
152516
- /* 1089 */
152590
+ /* 1090 */
152517
152591
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152518
152592
 
152519
152593
  "use strict";
@@ -152522,7 +152596,7 @@ exports.CreateColumnAction = CreateColumnAction;
152522
152596
  var _interopRequireDefault = __webpack_require__(197);
152523
152597
  exports.__esModule = true;
152524
152598
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152525
- var _base = __webpack_require__(1085);
152599
+ var _base = __webpack_require__(1086);
152526
152600
  /**
152527
152601
  * Action that tracks row creation.
152528
152602
  *
@@ -152582,7 +152656,7 @@ class CreateRowAction extends _base.BaseAction {
152582
152656
  exports.CreateRowAction = CreateRowAction;
152583
152657
 
152584
152658
  /***/ }),
152585
- /* 1090 */
152659
+ /* 1091 */
152586
152660
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152587
152661
 
152588
152662
  "use strict";
@@ -152596,7 +152670,7 @@ __webpack_require__(519);
152596
152670
  __webpack_require__(329);
152597
152671
  __webpack_require__(530);
152598
152672
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152599
- var _base = __webpack_require__(1085);
152673
+ var _base = __webpack_require__(1086);
152600
152674
  var _object = __webpack_require__(499);
152601
152675
  /**
152602
152676
  * Action that tracks data changes.
@@ -152709,7 +152783,7 @@ class DataChangeAction extends _base.BaseAction {
152709
152783
  exports.DataChangeAction = DataChangeAction;
152710
152784
 
152711
152785
  /***/ }),
152712
- /* 1091 */
152786
+ /* 1092 */
152713
152787
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152714
152788
 
152715
152789
  "use strict";
@@ -152720,7 +152794,7 @@ exports.__esModule = true;
152720
152794
  __webpack_require__(311);
152721
152795
  __webpack_require__(323);
152722
152796
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152723
- var _base = __webpack_require__(1085);
152797
+ var _base = __webpack_require__(1086);
152724
152798
  /**
152725
152799
  * Action that tracks filter changes.
152726
152800
  *
@@ -152779,7 +152853,7 @@ class FiltersAction extends _base.BaseAction {
152779
152853
  exports.FiltersAction = FiltersAction;
152780
152854
 
152781
152855
  /***/ }),
152782
- /* 1092 */
152856
+ /* 1093 */
152783
152857
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152784
152858
 
152785
152859
  "use strict";
@@ -152788,7 +152862,7 @@ exports.FiltersAction = FiltersAction;
152788
152862
  var _interopRequireDefault = __webpack_require__(197);
152789
152863
  exports.__esModule = true;
152790
152864
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152791
- var _base = __webpack_require__(1085);
152865
+ var _base = __webpack_require__(1086);
152792
152866
  /**
152793
152867
  * Action that tracks changes in merged cells.
152794
152868
  *
@@ -152849,7 +152923,7 @@ class MergeCellsAction extends _base.BaseAction {
152849
152923
  exports.MergeCellsAction = MergeCellsAction;
152850
152924
 
152851
152925
  /***/ }),
152852
- /* 1093 */
152926
+ /* 1094 */
152853
152927
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
152854
152928
 
152855
152929
  "use strict";
@@ -152861,8 +152935,8 @@ __webpack_require__(283);
152861
152935
  __webpack_require__(311);
152862
152936
  __webpack_require__(329);
152863
152937
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
152864
- var _base = __webpack_require__(1085);
152865
- var _utils = __webpack_require__(1094);
152938
+ var _base = __webpack_require__(1086);
152939
+ var _utils = __webpack_require__(1095);
152866
152940
  var _number = __webpack_require__(534);
152867
152941
  var _array = __webpack_require__(495);
152868
152942
  /**
@@ -152890,7 +152964,7 @@ class RemoveColumnAction extends _base.BaseAction {
152890
152964
  */
152891
152965
  (0, _defineProperty2.default)(this, "index", void 0);
152892
152966
  /**
152893
- * @param {number[]} indexes The visual column indexes.
152967
+ * @param {number[]} indexes The physical column indexes.
152894
152968
  */
152895
152969
  (0, _defineProperty2.default)(this, "indexes", void 0);
152896
152970
  /**
@@ -152956,16 +153030,14 @@ class RemoveColumnAction extends _base.BaseAction {
152956
153030
  headers.push(hot.getSettings().colHeaders[hot.toPhysicalColumn(columnIndex + i)] || null);
152957
153031
  });
152958
153032
  }
152959
- const columnsMap = hot.columnIndexMapper.getIndexesSequence();
152960
- const rowsMap = hot.rowIndexMapper.getIndexesSequence();
152961
153033
  return new RemoveColumnAction({
152962
153034
  index: columnIndex,
152963
153035
  indexes,
152964
153036
  data: removedData,
152965
153037
  amount,
152966
153038
  headers,
152967
- columnPositions: columnsMap,
152968
- rowPositions: rowsMap,
153039
+ columnPositions: hot.columnIndexMapper.getIndexesSequence(),
153040
+ rowPositions: hot.rowIndexMapper.getIndexesSequence(),
152969
153041
  fixedColumnsStart: hot.getSettings().fixedColumnsStart,
152970
153042
  removedCellMetas: (0, _utils.getCellMetas)(hot, 0, hot.countRows(), columnIndex, lastColumnIndex)
152971
153043
  });
@@ -152992,14 +153064,27 @@ class RemoveColumnAction extends _base.BaseAction {
152992
153064
  }
152993
153065
  const sortedHeaders = (0, _array.arrayMap)(this.headers, sortByIndexes);
152994
153066
  const changes = [];
152995
- hot.alter('insert_col_start', this.indexes[0], this.indexes.length, 'UndoRedo.undo');
153067
+
153068
+ // The indexes sequence have to be applied twice.
153069
+ // * First for proper index translation. The alter method accepts a visual index
153070
+ // and we are able to retrieve the correct index indicating where to add a new row based
153071
+ // only on the previous order state of the columns;
153072
+ // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
153073
+ // the same as it was in the previous state;
153074
+ hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
153075
+ hot.alter('insert_col_start', hot.toVisualColumn(this.indexes[0]), this.indexes.length, 'UndoRedo.undo');
153076
+ hot.batchExecution(() => {
153077
+ // Restore row sequence in a case when all columns are removed. the original
153078
+ // row sequence is lost in that case.
153079
+ hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
153080
+ hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
153081
+ }, true);
152996
153082
  (0, _array.arrayEach)(hot.getSourceDataArray(), (rowData, rowIndex) => {
152997
153083
  (0, _array.arrayEach)(ascendingIndexes, (changedIndex, contiquesIndex) => {
152998
153084
  rowData[changedIndex] = sortedData[rowIndex][contiquesIndex];
152999
153085
  changes.push([rowIndex, changedIndex, rowData[changedIndex]]);
153000
153086
  });
153001
153087
  });
153002
- hot.setSourceDataAtCell(changes, undefined, undefined, 'UndoRedo.undo');
153003
153088
  if (typeof this.headers !== 'undefined') {
153004
153089
  (0, _array.arrayEach)(sortedHeaders, (headerData, columnIndex) => {
153005
153090
  hot.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;
@@ -153009,14 +153094,8 @@ class RemoveColumnAction extends _base.BaseAction {
153009
153094
  let [rowIndex, columnIndex, cellMeta] = _ref2;
153010
153095
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
153011
153096
  });
153012
- hot.batchExecution(() => {
153013
- // Restore row sequence in a case when all columns are removed. the original
153014
- // row sequence is lost in that case.
153015
- hot.rowIndexMapper.setIndexesSequence(this.rowPositions);
153016
- hot.columnIndexMapper.setIndexesSequence(this.columnPositions);
153017
- }, true);
153018
153097
  hot.addHookOnce('afterViewRender', undoneCallback);
153019
- hot.render();
153098
+ hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
153020
153099
  }
153021
153100
 
153022
153101
  /**
@@ -153031,7 +153110,7 @@ class RemoveColumnAction extends _base.BaseAction {
153031
153110
  exports.RemoveColumnAction = RemoveColumnAction;
153032
153111
 
153033
153112
  /***/ }),
153034
- /* 1094 */
153113
+ /* 1095 */
153035
153114
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
153036
153115
 
153037
153116
  "use strict";
@@ -153040,7 +153119,7 @@ exports.RemoveColumnAction = RemoveColumnAction;
153040
153119
  exports.__esModule = true;
153041
153120
  exports.getCellMetas = getCellMetas;
153042
153121
  __webpack_require__(283);
153043
- __webpack_require__(1095);
153122
+ __webpack_require__(1096);
153044
153123
  __webpack_require__(311);
153045
153124
  __webpack_require__(323);
153046
153125
  var _number = __webpack_require__(534);
@@ -153074,7 +153153,7 @@ function getCellMetas(hot, fromRow, toRow, fromColumn, toColumn) {
153074
153153
  }
153075
153154
 
153076
153155
  /***/ }),
153077
- /* 1095 */
153156
+ /* 1096 */
153078
153157
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
153079
153158
 
153080
153159
  "use strict";
@@ -153097,7 +153176,7 @@ $({ target: 'Object', stat: true }, {
153097
153176
 
153098
153177
 
153099
153178
  /***/ }),
153100
- /* 1096 */
153179
+ /* 1097 */
153101
153180
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
153102
153181
 
153103
153182
  "use strict";
@@ -153109,8 +153188,8 @@ __webpack_require__(283);
153109
153188
  __webpack_require__(311);
153110
153189
  __webpack_require__(329);
153111
153190
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
153112
- var _base = __webpack_require__(1085);
153113
- var _utils = __webpack_require__(1094);
153191
+ var _base = __webpack_require__(1086);
153192
+ var _utils = __webpack_require__(1095);
153114
153193
  var _object = __webpack_require__(499);
153115
153194
  /**
153116
153195
  * Action that tracks changes in row removal.
@@ -153130,7 +153209,7 @@ class RemoveRowAction extends _base.BaseAction {
153130
153209
  } = _ref;
153131
153210
  super('remove_row');
153132
153211
  /**
153133
- * @param {number} index The visual row index.
153212
+ * @param {number} index The physical row index.
153134
153213
  */
153135
153214
  (0, _defineProperty2.default)(this, "index", void 0);
153136
153215
  /**
@@ -153198,14 +153277,22 @@ class RemoveRowAction extends _base.BaseAction {
153198
153277
  changes.push([this.index + rowIndexDelta, isNaN(columnIndex) ? columnProp : columnIndex, dataRow[columnProp]]);
153199
153278
  });
153200
153279
  });
153201
- hot.alter('insert_row_above', this.index, this.data.length, 'UndoRedo.undo');
153280
+
153281
+ // The indexes sequence have to be applied twice.
153282
+ // * First for proper index translation. The alter method accepts a visual index
153283
+ // and we are able to retrieve the correct index indicating where to add a new row based
153284
+ // only on the previous order state of the rows;
153285
+ // * The alter method shifts the indexes (a side-effect), so we need to reapply the indexes sequence
153286
+ // the same as it was in the previous state;
153287
+ hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
153288
+ hot.alter('insert_row_above', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.undo');
153289
+ hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
153202
153290
  this.removedCellMetas.forEach(_ref2 => {
153203
153291
  let [rowIndex, columnIndex, cellMeta] = _ref2;
153204
153292
  hot.setCellMetaObject(rowIndex, columnIndex, cellMeta);
153205
153293
  });
153206
153294
  hot.addHookOnce('afterViewRender', undoneCallback);
153207
153295
  hot.setSourceDataAtCell(changes, null, null, 'UndoRedo.undo');
153208
- hot.rowIndexMapper.setIndexesSequence(this.rowIndexesSequence);
153209
153296
  }
153210
153297
 
153211
153298
  /**
@@ -153214,13 +153301,13 @@ class RemoveRowAction extends _base.BaseAction {
153214
153301
  */
153215
153302
  redo(hot, redoneCallback) {
153216
153303
  hot.addHookOnce('afterRemoveRow', redoneCallback);
153217
- hot.alter('remove_row', this.index, this.data.length, 'UndoRedo.redo');
153304
+ hot.alter('remove_row', hot.toVisualRow(this.index), this.data.length, 'UndoRedo.redo');
153218
153305
  }
153219
153306
  }
153220
153307
  exports.RemoveRowAction = RemoveRowAction;
153221
153308
 
153222
153309
  /***/ }),
153223
- /* 1097 */
153310
+ /* 1098 */
153224
153311
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
153225
153312
 
153226
153313
  "use strict";
@@ -153231,7 +153318,7 @@ exports.__esModule = true;
153231
153318
  __webpack_require__(311);
153232
153319
  __webpack_require__(329);
153233
153320
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
153234
- var _base = __webpack_require__(1085);
153321
+ var _base = __webpack_require__(1086);
153235
153322
  var _moves = __webpack_require__(995);
153236
153323
  /**
153237
153324
  * Action that tracks row move changes.
@@ -153308,7 +153395,7 @@ class RowMoveAction extends _base.BaseAction {
153308
153395
  exports.RowMoveAction = RowMoveAction;
153309
153396
 
153310
153397
  /***/ }),
153311
- /* 1098 */
153398
+ /* 1099 */
153312
153399
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
153313
153400
 
153314
153401
  "use strict";
@@ -153317,7 +153404,7 @@ exports.RowMoveAction = RowMoveAction;
153317
153404
  var _interopRequireDefault = __webpack_require__(197);
153318
153405
  exports.__esModule = true;
153319
153406
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(504));
153320
- var _base = __webpack_require__(1085);
153407
+ var _base = __webpack_require__(1086);
153321
153408
  /**
153322
153409
  * Action that tracks changes in merged cells.
153323
153410
  *
@@ -153371,7 +153458,7 @@ class UnmergeCellsAction extends _base.BaseAction {
153371
153458
  exports.UnmergeCellsAction = UnmergeCellsAction;
153372
153459
 
153373
153460
  /***/ }),
153374
- /* 1099 */
153461
+ /* 1100 */
153375
153462
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
153376
153463
 
153377
153464
  "use strict";