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.
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
- package/3rdparty/walkontable/src/core/_base.js +7 -0
- package/3rdparty/walkontable/src/core/_base.mjs +7 -0
- package/3rdparty/walkontable/src/facade/core.js +3 -0
- package/3rdparty/walkontable/src/facade/core.mjs +3 -0
- package/3rdparty/walkontable/src/overlay/_base.js +3 -0
- package/3rdparty/walkontable/src/overlay/_base.mjs +3 -0
- package/3rdparty/walkontable/src/selection/border/border.js +32 -44
- package/3rdparty/walkontable/src/selection/border/border.mjs +32 -44
- package/3rdparty/walkontable/src/selection/scanner.js +46 -11
- package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
- package/3rdparty/walkontable/src/settings.js +8 -0
- package/3rdparty/walkontable/src/settings.mjs +8 -0
- package/3rdparty/walkontable/src/table.js +6 -3
- package/3rdparty/walkontable/src/table.mjs +6 -3
- package/3rdparty/walkontable/src/viewport.js +26 -4
- package/3rdparty/walkontable/src/viewport.mjs +26 -4
- package/base.js +4 -4
- package/base.mjs +3 -3
- package/core/hooks/bucket.js +180 -0
- package/core/hooks/bucket.mjs +176 -0
- package/{pluginHooks.mjs → core/hooks/constants.js} +20 -486
- package/{pluginHooks.js → core/hooks/constants.mjs} +16 -489
- package/{pluginHooks.d.ts → core/hooks/index.d.ts} +17 -21
- package/core/hooks/index.js +385 -0
- package/core/hooks/index.mjs +381 -0
- package/core.d.ts +1 -1
- package/core.js +13 -12
- package/core.mjs +5 -4
- package/dataMap/metaManager/metaSchema.js +68 -2
- package/dataMap/metaManager/metaSchema.mjs +68 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +3019 -2585
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +60 -60
- package/dist/handsontable.js +3021 -2587
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +18 -18
- package/editorManager.js +2 -2
- package/editorManager.mjs +2 -2
- package/editors/baseEditor/baseEditor.js +23 -16
- package/editors/baseEditor/baseEditor.mjs +23 -16
- package/editors/dropdownEditor/dropdownEditor.js +2 -3
- package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
- package/editors/registry.js +2 -2
- package/editors/registry.mjs +1 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/index.d.ts +2 -1
- package/package.json +1 -1
- package/plugins/autoColumnSize/autoColumnSize.js +18 -27
- package/plugins/autoColumnSize/autoColumnSize.mjs +18 -27
- package/plugins/autoRowSize/autoRowSize.js +16 -22
- package/plugins/autoRowSize/autoRowSize.mjs +17 -23
- package/plugins/autofill/autofill.js +4 -5
- package/plugins/autofill/autofill.mjs +1 -1
- package/plugins/base/base.d.ts +1 -1
- package/plugins/base/base.js +39 -0
- package/plugins/base/base.mjs +40 -1
- package/plugins/base/index.js +2 -1
- package/plugins/base/index.mjs +1 -1
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
- package/plugins/columnSorting/columnSorting.js +3 -4
- package/plugins/columnSorting/columnSorting.mjs +1 -1
- package/plugins/comments/comments.js +7 -15
- package/plugins/comments/comments.mjs +8 -16
- package/plugins/contextMenu/contextMenu.js +6 -7
- package/plugins/contextMenu/contextMenu.mjs +1 -1
- package/plugins/copyPaste/copyPaste.js +29 -23
- package/plugins/copyPaste/copyPaste.mjs +21 -15
- package/plugins/dropdownMenu/dropdownMenu.js +6 -7
- package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
- package/plugins/formulas/formulas.js +7 -7
- package/plugins/formulas/formulas.mjs +1 -1
- package/plugins/hiddenColumns/hiddenColumns.js +19 -30
- package/plugins/hiddenColumns/hiddenColumns.mjs +15 -26
- package/plugins/hiddenRows/hiddenRows.js +18 -29
- package/plugins/hiddenRows/hiddenRows.mjs +14 -25
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +5 -5
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +3 -3
- package/plugins/manualColumnMove/manualColumnMove.mjs +1 -1
- package/plugins/manualRowMove/manualRowMove.js +5 -5
- package/plugins/manualRowMove/manualRowMove.mjs +3 -3
- package/plugins/mergeCells/cellsCollection.js +15 -3
- package/plugins/mergeCells/cellsCollection.mjs +16 -4
- package/plugins/mergeCells/mergeCells.d.ts +6 -2
- package/plugins/mergeCells/mergeCells.js +78 -55
- package/plugins/mergeCells/mergeCells.mjs +76 -53
- package/plugins/mergeCells/renderer.js +13 -3
- package/plugins/mergeCells/renderer.mjs +13 -3
- package/plugins/persistentState/persistentState.js +4 -4
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/undoRedo/undoRedo.js +4 -5
- package/plugins/undoRedo/undoRedo.mjs +3 -3
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/settings.d.ts +3 -1
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
- package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
- package/shortcutContexts/grid.js +10 -3
- package/shortcutContexts/grid.mjs +10 -3
- package/tableView.js +40 -9
- 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
|
-
|
303
|
-
|
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
|
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 |
|
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
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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('
|
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
|
254
|
-
args[
|
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
|
260
|
-
args[
|
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
|
266
|
-
args[
|
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
|
272
|
-
args[
|
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
|
278
|
-
args[
|
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
|
284
|
-
args[
|
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
|
290
|
-
args[
|
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
|
296
|
-
args[
|
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
|
302
|
-
args[
|
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
|
308
|
-
args[
|
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
|
314
|
-
args[
|
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
|
320
|
-
args[
|
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
|
326
|
-
args[
|
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
|
332
|
-
args[
|
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
|
338
|
-
args[
|
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(
|
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(
|
460
|
-
|
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(
|
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
|
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
|
-
|
1121
|
-
|
1122
|
-
mergeRow
|
1123
|
-
|
1124
|
-
|
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.
|
1424
|
-
lastColumn = this.hot.
|
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 "../../
|
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('
|
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
|
250
|
-
args[
|
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
|
256
|
-
args[
|
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
|
262
|
-
args[
|
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
|
268
|
-
args[
|
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
|
274
|
-
args[
|
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
|
280
|
-
args[
|
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
|
286
|
-
args[
|
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
|
292
|
-
args[
|
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
|
298
|
-
args[
|
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
|
304
|
-
args[
|
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
|
310
|
-
args[
|
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
|
316
|
-
args[
|
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
|
322
|
-
args[
|
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
|
328
|
-
args[
|
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
|
334
|
-
args[
|
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(
|
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(
|
456
|
-
|
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(
|
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
|
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
|
-
|
1116
|
-
|
1117
|
-
mergeRow
|
1118
|
-
|
1119
|
-
|
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.
|
1419
|
-
lastColumn = this.hot.
|
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
|