handsontable 0.0.0-next-dd5893f-20240918 → 0.0.0-next-fad35d5-20240924

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (115) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
  5. package/3rdparty/walkontable/src/core/_base.js +7 -0
  6. package/3rdparty/walkontable/src/core/_base.mjs +7 -0
  7. package/3rdparty/walkontable/src/facade/core.js +3 -0
  8. package/3rdparty/walkontable/src/facade/core.mjs +3 -0
  9. package/3rdparty/walkontable/src/overlay/_base.js +3 -0
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +3 -0
  11. package/3rdparty/walkontable/src/selection/border/border.js +32 -44
  12. package/3rdparty/walkontable/src/selection/border/border.mjs +32 -44
  13. package/3rdparty/walkontable/src/selection/scanner.js +46 -11
  14. package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
  15. package/3rdparty/walkontable/src/settings.js +8 -0
  16. package/3rdparty/walkontable/src/settings.mjs +8 -0
  17. package/3rdparty/walkontable/src/table.js +6 -3
  18. package/3rdparty/walkontable/src/table.mjs +6 -3
  19. package/3rdparty/walkontable/src/viewport.js +26 -4
  20. package/3rdparty/walkontable/src/viewport.mjs +26 -4
  21. package/base.js +4 -4
  22. package/base.mjs +3 -3
  23. package/core/hooks/bucket.js +180 -0
  24. package/core/hooks/bucket.mjs +176 -0
  25. package/{pluginHooks.mjs → core/hooks/constants.js} +20 -486
  26. package/{pluginHooks.js → core/hooks/constants.mjs} +16 -489
  27. package/{pluginHooks.d.ts → core/hooks/index.d.ts} +17 -21
  28. package/core/hooks/index.js +385 -0
  29. package/core/hooks/index.mjs +381 -0
  30. package/core.d.ts +1 -1
  31. package/core.js +13 -12
  32. package/core.mjs +5 -4
  33. package/dataMap/metaManager/metaSchema.js +68 -2
  34. package/dataMap/metaManager/metaSchema.mjs +68 -2
  35. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
  36. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  37. package/dist/handsontable.css +2 -2
  38. package/dist/handsontable.full.css +2 -2
  39. package/dist/handsontable.full.js +3019 -2585
  40. package/dist/handsontable.full.min.css +2 -2
  41. package/dist/handsontable.full.min.js +60 -60
  42. package/dist/handsontable.js +3021 -2587
  43. package/dist/handsontable.min.css +2 -2
  44. package/dist/handsontable.min.js +18 -18
  45. package/editorManager.js +2 -2
  46. package/editorManager.mjs +2 -2
  47. package/editors/baseEditor/baseEditor.js +23 -16
  48. package/editors/baseEditor/baseEditor.mjs +23 -16
  49. package/editors/dropdownEditor/dropdownEditor.js +2 -3
  50. package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
  51. package/editors/registry.js +2 -2
  52. package/editors/registry.mjs +1 -1
  53. package/helpers/mixed.js +1 -1
  54. package/helpers/mixed.mjs +1 -1
  55. package/index.d.ts +2 -1
  56. package/package.json +1 -1
  57. package/plugins/autoColumnSize/autoColumnSize.js +18 -27
  58. package/plugins/autoColumnSize/autoColumnSize.mjs +18 -27
  59. package/plugins/autoRowSize/autoRowSize.js +16 -22
  60. package/plugins/autoRowSize/autoRowSize.mjs +17 -23
  61. package/plugins/autofill/autofill.js +4 -5
  62. package/plugins/autofill/autofill.mjs +1 -1
  63. package/plugins/base/base.d.ts +1 -1
  64. package/plugins/base/base.js +39 -0
  65. package/plugins/base/base.mjs +40 -1
  66. package/plugins/base/index.js +2 -1
  67. package/plugins/base/index.mjs +1 -1
  68. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
  69. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
  70. package/plugins/columnSorting/columnSorting.js +3 -4
  71. package/plugins/columnSorting/columnSorting.mjs +1 -1
  72. package/plugins/comments/comments.js +7 -15
  73. package/plugins/comments/comments.mjs +8 -16
  74. package/plugins/contextMenu/contextMenu.js +6 -7
  75. package/plugins/contextMenu/contextMenu.mjs +1 -1
  76. package/plugins/copyPaste/copyPaste.js +29 -23
  77. package/plugins/copyPaste/copyPaste.mjs +21 -15
  78. package/plugins/dropdownMenu/dropdownMenu.js +6 -7
  79. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
  80. package/plugins/formulas/formulas.js +7 -7
  81. package/plugins/formulas/formulas.mjs +1 -1
  82. package/plugins/hiddenColumns/hiddenColumns.js +19 -30
  83. package/plugins/hiddenColumns/hiddenColumns.mjs +15 -26
  84. package/plugins/hiddenRows/hiddenRows.js +18 -29
  85. package/plugins/hiddenRows/hiddenRows.mjs +14 -25
  86. package/plugins/manualColumnFreeze/manualColumnFreeze.js +5 -5
  87. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +1 -1
  88. package/plugins/manualColumnMove/manualColumnMove.js +3 -3
  89. package/plugins/manualColumnMove/manualColumnMove.mjs +1 -1
  90. package/plugins/manualRowMove/manualRowMove.js +5 -5
  91. package/plugins/manualRowMove/manualRowMove.mjs +3 -3
  92. package/plugins/mergeCells/cellsCollection.js +15 -3
  93. package/plugins/mergeCells/cellsCollection.mjs +16 -4
  94. package/plugins/mergeCells/mergeCells.d.ts +6 -2
  95. package/plugins/mergeCells/mergeCells.js +78 -55
  96. package/plugins/mergeCells/mergeCells.mjs +76 -53
  97. package/plugins/mergeCells/renderer.js +13 -3
  98. package/plugins/mergeCells/renderer.mjs +13 -3
  99. package/plugins/persistentState/persistentState.js +4 -4
  100. package/plugins/persistentState/persistentState.mjs +1 -1
  101. package/plugins/undoRedo/undoRedo.js +4 -5
  102. package/plugins/undoRedo/undoRedo.mjs +3 -3
  103. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  104. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  105. package/settings.d.ts +3 -1
  106. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
  107. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
  108. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
  109. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
  110. package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
  111. package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
  112. package/shortcutContexts/grid.js +10 -3
  113. package/shortcutContexts/grid.mjs +10 -3
  114. package/tableView.js +40 -9
  115. package/tableView.mjs +40 -9
@@ -15,7 +15,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
15
15
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
16
  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"); }
17
17
  import MergedCellCoords from "./cellCoords.mjs";
18
- import { rangeEach } from "../../helpers/number.mjs";
18
+ import { rangeEach, clamp } from "../../helpers/number.mjs";
19
19
  import { warn } from "../../helpers/console.mjs";
20
20
  import { arrayEach } from "../../helpers/array.mjs";
21
21
  import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
@@ -298,9 +298,21 @@ class MergedCellsCollection {
298
298
  */
299
299
  isFirstRenderableMergedCell(row, column) {
300
300
  const mergeParent = this.get(row, column);
301
-
302
- // Return if row and column indexes are within merge area and if they are first rendered indexes within the area.
303
- return mergeParent && this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1) === column;
301
+ if (!mergeParent) {
302
+ return false;
303
+ }
304
+ const {
305
+ row: mergeRow,
306
+ col: mergeColumn,
307
+ rowspan,
308
+ colspan
309
+ } = mergeParent;
310
+ const overlayName = this.hot.view.getActiveOverlayName();
311
+ const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
312
+ const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
313
+ const mergeCellsTopRow = clamp(firstRenderedRow, mergeRow, mergeRow + rowspan - 1);
314
+ const mergeCellsStartColumn = clamp(firstRenderedColumn, mergeColumn, mergeColumn + colspan - 1);
315
+ return this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeCellsTopRow, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeCellsStartColumn, 1) === column;
304
316
  }
305
317
 
306
318
  /**
@@ -2,14 +2,18 @@ import Core from '../../core';
2
2
  import { BasePlugin } from '../base';
3
3
  import CellRange from '../../3rdparty/walkontable/src/cell/range';
4
4
 
5
- export interface DetailedSettings {
5
+ export interface MergeCellsSettings {
6
6
  row: number;
7
7
  col: number;
8
8
  rowspan: number;
9
9
  colspan: number;
10
10
  }
11
+ export interface DetailedSettings {
12
+ virtualized: boolean;
13
+ cells: MergeCellsSettings[];
14
+ }
11
15
 
12
- export type Settings = boolean | DetailedSettings[];
16
+ export type Settings = boolean | MergeCellsSettings[] | DetailedSettings;
13
17
 
14
18
  export class MergeCells extends BasePlugin {
15
19
  constructor(hotInstance: Core);
@@ -11,7 +11,7 @@ require("core-js/modules/esnext.set.is-superset-of.v2.js");
11
11
  require("core-js/modules/esnext.set.symmetric-difference.v2.js");
12
12
  require("core-js/modules/esnext.set.union.v2.js");
13
13
  var _base = require("../base");
14
- var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
14
+ var _hooks = require("../../core/hooks");
15
15
  var _cellsCollection = _interopRequireDefault(require("./cellsCollection"));
16
16
  var _cellCoords = _interopRequireDefault(require("./cellCoords"));
17
17
  var _autofill = _interopRequireDefault(require("./calculations/autofill"));
@@ -35,10 +35,10 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
35
35
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
36
36
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
37
37
  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"); }
38
- _pluginHooks.default.getSingleton().register('beforeMergeCells');
39
- _pluginHooks.default.getSingleton().register('afterMergeCells');
40
- _pluginHooks.default.getSingleton().register('beforeUnmergeCells');
41
- _pluginHooks.default.getSingleton().register('afterUnmergeCells');
38
+ _hooks.Hooks.getSingleton().register('beforeMergeCells');
39
+ _hooks.Hooks.getSingleton().register('afterMergeCells');
40
+ _hooks.Hooks.getSingleton().register('beforeUnmergeCells');
41
+ _hooks.Hooks.getSingleton().register('afterUnmergeCells');
42
42
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'mergeCells';
43
43
  const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 150;
44
44
  const SHORTCUTS_GROUP = PLUGIN_KEY;
@@ -153,6 +153,13 @@ class MergeCells extends _base.BasePlugin {
153
153
  static get PLUGIN_PRIORITY() {
154
154
  return PLUGIN_PRIORITY;
155
155
  }
156
+ static get DEFAULT_SETTINGS() {
157
+ return {
158
+ [_base.defaultMainSettingSymbol]: 'cells',
159
+ virtualized: false,
160
+ cells: []
161
+ };
162
+ }
156
163
  /**
157
164
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
158
165
  * hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
@@ -240,102 +247,108 @@ class MergeCells extends _base.BasePlugin {
240
247
  }
241
248
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
242
249
  });
243
- this.addHook('afterIsMultipleSelection', function () {
250
+ this.addHook('modifyGetCoordsElement', function () {
244
251
  for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
245
252
  args[_key12] = arguments[_key12];
246
253
  }
254
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
255
+ });
256
+ this.addHook('afterIsMultipleSelection', function () {
257
+ for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
258
+ args[_key13] = arguments[_key13];
259
+ }
247
260
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
248
261
  });
249
262
  this.addHook('afterRenderer', function () {
250
263
  return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
251
264
  });
252
265
  this.addHook('afterContextMenuDefaultOptions', function () {
253
- for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
254
- args[_key13] = arguments[_key13];
266
+ for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
267
+ args[_key14] = arguments[_key14];
255
268
  }
256
269
  return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
257
270
  });
258
271
  this.addHook('afterGetCellMeta', function () {
259
- for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
260
- args[_key14] = arguments[_key14];
272
+ for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
273
+ args[_key15] = arguments[_key15];
261
274
  }
262
275
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
263
276
  });
264
277
  this.addHook('afterViewportRowCalculatorOverride', function () {
265
- for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
266
- args[_key15] = arguments[_key15];
278
+ for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
279
+ args[_key16] = arguments[_key16];
267
280
  }
268
281
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
269
282
  });
270
283
  this.addHook('afterViewportColumnCalculatorOverride', function () {
271
- for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
272
- args[_key16] = arguments[_key16];
284
+ for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
285
+ args[_key17] = arguments[_key17];
273
286
  }
274
287
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
275
288
  });
276
289
  this.addHook('modifyAutofillRange', function () {
277
- for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
278
- args[_key17] = arguments[_key17];
290
+ for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
291
+ args[_key18] = arguments[_key18];
279
292
  }
280
293
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
281
294
  });
282
295
  this.addHook('afterCreateCol', function () {
283
- for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
284
- args[_key18] = arguments[_key18];
296
+ for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
297
+ args[_key19] = arguments[_key19];
285
298
  }
286
299
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
287
300
  });
288
301
  this.addHook('afterRemoveCol', function () {
289
- for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
290
- args[_key19] = arguments[_key19];
302
+ for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
303
+ args[_key20] = arguments[_key20];
291
304
  }
292
305
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
293
306
  });
294
307
  this.addHook('afterCreateRow', function () {
295
- for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
296
- args[_key20] = arguments[_key20];
308
+ for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
309
+ args[_key21] = arguments[_key21];
297
310
  }
298
311
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
299
312
  });
300
313
  this.addHook('afterRemoveRow', function () {
301
- for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
302
- args[_key21] = arguments[_key21];
314
+ for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
315
+ args[_key22] = arguments[_key22];
303
316
  }
304
317
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
305
318
  });
306
319
  this.addHook('afterChange', function () {
307
- for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
308
- args[_key22] = arguments[_key22];
320
+ for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
321
+ args[_key23] = arguments[_key23];
309
322
  }
310
323
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
311
324
  });
312
325
  this.addHook('beforeDrawBorders', function () {
313
- for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
314
- args[_key23] = arguments[_key23];
326
+ for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
327
+ args[_key24] = arguments[_key24];
315
328
  }
316
329
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
317
330
  });
318
331
  this.addHook('afterDrawSelection', function () {
319
- for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
320
- args[_key24] = arguments[_key24];
332
+ for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
333
+ args[_key25] = arguments[_key25];
321
334
  }
322
335
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
323
336
  });
324
337
  this.addHook('beforeRemoveCellClassNames', function () {
325
- for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
326
- args[_key25] = arguments[_key25];
338
+ for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
339
+ args[_key26] = arguments[_key26];
327
340
  }
328
341
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
329
342
  });
330
343
  this.addHook('beforeBeginEditing', function () {
331
- for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
332
- args[_key26] = arguments[_key26];
344
+ for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
345
+ args[_key27] = arguments[_key27];
333
346
  }
334
347
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
335
348
  });
336
349
  this.addHook('modifyRowHeightByOverlayName', function () {
337
- for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
338
- args[_key27] = arguments[_key27];
350
+ for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
351
+ args[_key28] = arguments[_key28];
339
352
  }
340
353
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
341
354
  });
@@ -366,10 +379,9 @@ class MergeCells extends _base.BasePlugin {
366
379
  * - [`mergeCells`](@/api/options.md#mergecells)
367
380
  */
368
381
  updatePlugin() {
369
- const settings = this.hot.getSettings()[PLUGIN_KEY];
370
382
  this.disablePlugin();
371
383
  this.enablePlugin();
372
- this.generateFromSettings(settings);
384
+ this.generateFromSettings();
373
385
  super.updatePlugin();
374
386
  }
375
387
 
@@ -454,13 +466,9 @@ class MergeCells extends _base.BasePlugin {
454
466
  * Generates the merged cells from the settings provided to the plugin.
455
467
  *
456
468
  * @private
457
- * @param {Array|boolean} settings The settings provided to the plugin.
458
469
  */
459
- generateFromSettings(settings) {
460
- if (!Array.isArray(settings)) {
461
- return;
462
- }
463
- const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
470
+ generateFromSettings() {
471
+ const validSettings = this.getSetting('cells').filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
464
472
  const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
465
473
  const populatedNulls = [];
466
474
  nonOverlappingSettings.forEach(mergeCellInfo => {
@@ -903,7 +911,7 @@ class MergeCells extends _base.BasePlugin {
903
911
  }
904
912
  exports.MergeCells = MergeCells;
905
913
  function _onAfterInit() {
906
- this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
914
+ this.generateFromSettings();
907
915
  this.hot.render();
908
916
  }
909
917
  function _onAfterIsMultipleSelection(isMultiple) {
@@ -1097,13 +1105,16 @@ function _onBeforeSelectionHighlightSet() {
1097
1105
  }
1098
1106
  }
1099
1107
  /**
1100
- * `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
1108
+ * The `modifyGetCellCoords` hook callback allows forwarding all `getCell` calls that point in-between the merged cells
1109
+ * to the root element of the cell.
1101
1110
  *
1102
1111
  * @param {number} row Row index.
1103
1112
  * @param {number} column Visual column index.
1113
+ * @param {boolean} topmost Indicates if the requested element belongs to the topmost layer (any overlay) or not.
1114
+ * @param {string} [source] String that identifies how this coords change will be processed.
1104
1115
  * @returns {Array|undefined} Visual coordinates of the merge.
1105
1116
  */
1106
- function _onModifyGetCellCoords(row, column) {
1117
+ function _onModifyGetCellCoords(row, column, topmost, source) {
1107
1118
  if (row < 0 || column < 0) {
1108
1119
  return;
1109
1120
  }
@@ -1117,11 +1128,17 @@ function _onModifyGetCellCoords(row, column) {
1117
1128
  colspan,
1118
1129
  rowspan
1119
1130
  } = mergeParent;
1120
- return [
1121
- // Most top-left merged cell coords.
1122
- mergeRow, mergeColumn,
1123
- // Most bottom-right merged cell coords.
1124
- mergeRow + rowspan - 1, mergeColumn + colspan - 1];
1131
+ const topStartRow = mergeRow;
1132
+ const topStartColumn = mergeColumn;
1133
+ const bottomEndRow = mergeRow + rowspan - 1;
1134
+ const bottomEndColumn = mergeColumn + colspan - 1;
1135
+ if (source === 'render' && this.getSetting('virtualized')) {
1136
+ const overlayName = this.hot.view.getActiveOverlayName();
1137
+ const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
1138
+ const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
1139
+ return [(0, _number.clamp)(firstRenderedRow, topStartRow, bottomEndRow), (0, _number.clamp)(firstRenderedColumn, topStartColumn, bottomEndColumn), (0, _number.clamp)(this.hot.getLastRenderedVisibleRow(), topStartRow, bottomEndRow), (0, _number.clamp)(this.hot.getLastRenderedVisibleColumn(), topStartColumn, bottomEndColumn)];
1140
+ }
1141
+ return [topStartRow, topStartColumn, bottomEndRow, bottomEndColumn];
1125
1142
  }
1126
1143
  /**
1127
1144
  * `afterContextMenuDefaultOptions` hook callback.
@@ -1257,11 +1274,17 @@ function _onAfterGetCellMeta(row, col, cellProperties) {
1257
1274
  * @param {object} calc The row calculator object.
1258
1275
  */
1259
1276
  function _onAfterViewportRowCalculatorOverride(calc) {
1277
+ if (this.getSetting('virtualized')) {
1278
+ return;
1279
+ }
1260
1280
  const nrOfColumns = this.hot.countCols();
1261
1281
  this.modifyViewportRowStart(calc, nrOfColumns);
1262
1282
  this.modifyViewportRowEnd(calc, nrOfColumns);
1263
1283
  }
1264
1284
  function _onAfterViewportColumnCalculatorOverride(calc) {
1285
+ if (this.getSetting('virtualized')) {
1286
+ return;
1287
+ }
1265
1288
  const nrOfRows = this.hot.countRows();
1266
1289
  this.modifyViewportColumnStart(calc, nrOfRows);
1267
1290
  this.modifyViewportColumnEnd(calc, nrOfRows);
@@ -1420,8 +1443,8 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1420
1443
  let firstColumn;
1421
1444
  let lastColumn;
1422
1445
  if (overlayType === 'master') {
1423
- firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
1424
- lastColumn = this.hot.view.getLastRenderedVisibleColumn();
1446
+ firstColumn = this.hot.getFirstRenderedVisibleColumn();
1447
+ lastColumn = this.hot.getLastRenderedVisibleColumn();
1425
1448
  } else {
1426
1449
  const activeOverlay = this.hot.view.getOverlayByName(overlayType);
1427
1450
  firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
@@ -1434,7 +1457,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1434
1457
  const from = this.hot._createCellCoords(row, firstColumn);
1435
1458
  const to = this.hot._createCellCoords(row, lastColumn);
1436
1459
  const viewportRange = this.hot._createCellRange(from, from, to);
1437
- const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
1460
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange, true);
1438
1461
  const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
1439
1462
  let {
1440
1463
  rowspan
@@ -16,8 +16,8 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
16
16
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
17
17
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
18
18
  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"); }
19
- import { BasePlugin } from "../base/index.mjs";
20
- import Hooks from "../../pluginHooks.mjs";
19
+ import { BasePlugin, defaultMainSettingSymbol } from "../base/index.mjs";
20
+ import { Hooks } from "../../core/hooks/index.mjs";
21
21
  import MergedCellsCollection from "./cellsCollection.mjs";
22
22
  import MergedCellCoords from "./cellCoords.mjs";
23
23
  import AutofillCalculations from "./calculations/autofill.mjs";
@@ -26,7 +26,7 @@ import toggleMergeItem from "./contextMenuItem/toggleMerge.mjs";
26
26
  import { arrayEach } from "../../helpers/array.mjs";
27
27
  import { isObject } from "../../helpers/object.mjs";
28
28
  import { warn } from "../../helpers/console.mjs";
29
- import { rangeEach } from "../../helpers/number.mjs";
29
+ import { rangeEach, clamp } from "../../helpers/number.mjs";
30
30
  import { getStyle } from "../../helpers/dom/element.mjs";
31
31
  import { isChrome } from "../../helpers/browser.mjs";
32
32
  import { FocusOrder } from "./focusOrder.mjs";
@@ -149,6 +149,13 @@ export class MergeCells extends BasePlugin {
149
149
  static get PLUGIN_PRIORITY() {
150
150
  return PLUGIN_PRIORITY;
151
151
  }
152
+ static get DEFAULT_SETTINGS() {
153
+ return {
154
+ [defaultMainSettingSymbol]: 'cells',
155
+ virtualized: false,
156
+ cells: []
157
+ };
158
+ }
152
159
  /**
153
160
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
154
161
  * hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
@@ -236,102 +243,108 @@ export class MergeCells extends BasePlugin {
236
243
  }
237
244
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
238
245
  });
239
- this.addHook('afterIsMultipleSelection', function () {
246
+ this.addHook('modifyGetCoordsElement', function () {
240
247
  for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
241
248
  args[_key12] = arguments[_key12];
242
249
  }
250
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
251
+ });
252
+ this.addHook('afterIsMultipleSelection', function () {
253
+ for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
254
+ args[_key13] = arguments[_key13];
255
+ }
243
256
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
244
257
  });
245
258
  this.addHook('afterRenderer', function () {
246
259
  return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
247
260
  });
248
261
  this.addHook('afterContextMenuDefaultOptions', function () {
249
- for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
250
- args[_key13] = arguments[_key13];
262
+ for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
263
+ args[_key14] = arguments[_key14];
251
264
  }
252
265
  return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
253
266
  });
254
267
  this.addHook('afterGetCellMeta', function () {
255
- for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
256
- args[_key14] = arguments[_key14];
268
+ for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
269
+ args[_key15] = arguments[_key15];
257
270
  }
258
271
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
259
272
  });
260
273
  this.addHook('afterViewportRowCalculatorOverride', function () {
261
- for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
262
- args[_key15] = arguments[_key15];
274
+ for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
275
+ args[_key16] = arguments[_key16];
263
276
  }
264
277
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
265
278
  });
266
279
  this.addHook('afterViewportColumnCalculatorOverride', function () {
267
- for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
268
- args[_key16] = arguments[_key16];
280
+ for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
281
+ args[_key17] = arguments[_key17];
269
282
  }
270
283
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
271
284
  });
272
285
  this.addHook('modifyAutofillRange', function () {
273
- for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
274
- args[_key17] = arguments[_key17];
286
+ for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
287
+ args[_key18] = arguments[_key18];
275
288
  }
276
289
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
277
290
  });
278
291
  this.addHook('afterCreateCol', function () {
279
- for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
280
- args[_key18] = arguments[_key18];
292
+ for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
293
+ args[_key19] = arguments[_key19];
281
294
  }
282
295
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
283
296
  });
284
297
  this.addHook('afterRemoveCol', function () {
285
- for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
286
- args[_key19] = arguments[_key19];
298
+ for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
299
+ args[_key20] = arguments[_key20];
287
300
  }
288
301
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
289
302
  });
290
303
  this.addHook('afterCreateRow', function () {
291
- for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
292
- args[_key20] = arguments[_key20];
304
+ for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
305
+ args[_key21] = arguments[_key21];
293
306
  }
294
307
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
295
308
  });
296
309
  this.addHook('afterRemoveRow', function () {
297
- for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
298
- args[_key21] = arguments[_key21];
310
+ for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
311
+ args[_key22] = arguments[_key22];
299
312
  }
300
313
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
301
314
  });
302
315
  this.addHook('afterChange', function () {
303
- for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
304
- args[_key22] = arguments[_key22];
316
+ for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
317
+ args[_key23] = arguments[_key23];
305
318
  }
306
319
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
307
320
  });
308
321
  this.addHook('beforeDrawBorders', function () {
309
- for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
310
- args[_key23] = arguments[_key23];
322
+ for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
323
+ args[_key24] = arguments[_key24];
311
324
  }
312
325
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
313
326
  });
314
327
  this.addHook('afterDrawSelection', function () {
315
- for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
316
- args[_key24] = arguments[_key24];
328
+ for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
329
+ args[_key25] = arguments[_key25];
317
330
  }
318
331
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
319
332
  });
320
333
  this.addHook('beforeRemoveCellClassNames', function () {
321
- for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
322
- args[_key25] = arguments[_key25];
334
+ for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
335
+ args[_key26] = arguments[_key26];
323
336
  }
324
337
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
325
338
  });
326
339
  this.addHook('beforeBeginEditing', function () {
327
- for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
328
- args[_key26] = arguments[_key26];
340
+ for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
341
+ args[_key27] = arguments[_key27];
329
342
  }
330
343
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
331
344
  });
332
345
  this.addHook('modifyRowHeightByOverlayName', function () {
333
- for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
334
- args[_key27] = arguments[_key27];
346
+ for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
347
+ args[_key28] = arguments[_key28];
335
348
  }
336
349
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
337
350
  });
@@ -362,10 +375,9 @@ export class MergeCells extends BasePlugin {
362
375
  * - [`mergeCells`](@/api/options.md#mergecells)
363
376
  */
364
377
  updatePlugin() {
365
- const settings = this.hot.getSettings()[PLUGIN_KEY];
366
378
  this.disablePlugin();
367
379
  this.enablePlugin();
368
- this.generateFromSettings(settings);
380
+ this.generateFromSettings();
369
381
  super.updatePlugin();
370
382
  }
371
383
 
@@ -450,13 +462,9 @@ export class MergeCells extends BasePlugin {
450
462
  * Generates the merged cells from the settings provided to the plugin.
451
463
  *
452
464
  * @private
453
- * @param {Array|boolean} settings The settings provided to the plugin.
454
465
  */
455
- generateFromSettings(settings) {
456
- if (!Array.isArray(settings)) {
457
- return;
458
- }
459
- const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
466
+ generateFromSettings() {
467
+ const validSettings = this.getSetting('cells').filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
460
468
  const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
461
469
  const populatedNulls = [];
462
470
  nonOverlappingSettings.forEach(mergeCellInfo => {
@@ -898,7 +906,7 @@ export class MergeCells extends BasePlugin {
898
906
  */
899
907
  }
900
908
  function _onAfterInit() {
901
- this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
909
+ this.generateFromSettings();
902
910
  this.hot.render();
903
911
  }
904
912
  function _onAfterIsMultipleSelection(isMultiple) {
@@ -1092,13 +1100,16 @@ function _onBeforeSelectionHighlightSet() {
1092
1100
  }
1093
1101
  }
1094
1102
  /**
1095
- * `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
1103
+ * The `modifyGetCellCoords` hook callback allows forwarding all `getCell` calls that point in-between the merged cells
1104
+ * to the root element of the cell.
1096
1105
  *
1097
1106
  * @param {number} row Row index.
1098
1107
  * @param {number} column Visual column index.
1108
+ * @param {boolean} topmost Indicates if the requested element belongs to the topmost layer (any overlay) or not.
1109
+ * @param {string} [source] String that identifies how this coords change will be processed.
1099
1110
  * @returns {Array|undefined} Visual coordinates of the merge.
1100
1111
  */
1101
- function _onModifyGetCellCoords(row, column) {
1112
+ function _onModifyGetCellCoords(row, column, topmost, source) {
1102
1113
  if (row < 0 || column < 0) {
1103
1114
  return;
1104
1115
  }
@@ -1112,11 +1123,17 @@ function _onModifyGetCellCoords(row, column) {
1112
1123
  colspan,
1113
1124
  rowspan
1114
1125
  } = mergeParent;
1115
- return [
1116
- // Most top-left merged cell coords.
1117
- mergeRow, mergeColumn,
1118
- // Most bottom-right merged cell coords.
1119
- mergeRow + rowspan - 1, mergeColumn + colspan - 1];
1126
+ const topStartRow = mergeRow;
1127
+ const topStartColumn = mergeColumn;
1128
+ const bottomEndRow = mergeRow + rowspan - 1;
1129
+ const bottomEndColumn = mergeColumn + colspan - 1;
1130
+ if (source === 'render' && this.getSetting('virtualized')) {
1131
+ const overlayName = this.hot.view.getActiveOverlayName();
1132
+ const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
1133
+ const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
1134
+ return [clamp(firstRenderedRow, topStartRow, bottomEndRow), clamp(firstRenderedColumn, topStartColumn, bottomEndColumn), clamp(this.hot.getLastRenderedVisibleRow(), topStartRow, bottomEndRow), clamp(this.hot.getLastRenderedVisibleColumn(), topStartColumn, bottomEndColumn)];
1135
+ }
1136
+ return [topStartRow, topStartColumn, bottomEndRow, bottomEndColumn];
1120
1137
  }
1121
1138
  /**
1122
1139
  * `afterContextMenuDefaultOptions` hook callback.
@@ -1252,11 +1269,17 @@ function _onAfterGetCellMeta(row, col, cellProperties) {
1252
1269
  * @param {object} calc The row calculator object.
1253
1270
  */
1254
1271
  function _onAfterViewportRowCalculatorOverride(calc) {
1272
+ if (this.getSetting('virtualized')) {
1273
+ return;
1274
+ }
1255
1275
  const nrOfColumns = this.hot.countCols();
1256
1276
  this.modifyViewportRowStart(calc, nrOfColumns);
1257
1277
  this.modifyViewportRowEnd(calc, nrOfColumns);
1258
1278
  }
1259
1279
  function _onAfterViewportColumnCalculatorOverride(calc) {
1280
+ if (this.getSetting('virtualized')) {
1281
+ return;
1282
+ }
1260
1283
  const nrOfRows = this.hot.countRows();
1261
1284
  this.modifyViewportColumnStart(calc, nrOfRows);
1262
1285
  this.modifyViewportColumnEnd(calc, nrOfRows);
@@ -1415,8 +1438,8 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1415
1438
  let firstColumn;
1416
1439
  let lastColumn;
1417
1440
  if (overlayType === 'master') {
1418
- firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
1419
- lastColumn = this.hot.view.getLastRenderedVisibleColumn();
1441
+ firstColumn = this.hot.getFirstRenderedVisibleColumn();
1442
+ lastColumn = this.hot.getLastRenderedVisibleColumn();
1420
1443
  } else {
1421
1444
  const activeOverlay = this.hot.view.getOverlayByName(overlayType);
1422
1445
  firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
@@ -1429,7 +1452,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1429
1452
  const from = this.hot._createCellCoords(row, firstColumn);
1430
1453
  const to = this.hot._createCellCoords(row, lastColumn);
1431
1454
  const viewportRange = this.hot._createCellRange(from, from, to);
1432
- const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
1455
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange, true);
1433
1456
  const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
1434
1457
  let {
1435
1458
  rowspan