handsontable 0.0.0-next-fad35d5-20240924 → 0.0.0-next-ffdf116-20240926
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 +0 -23
- package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +0 -23
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +0 -23
- package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +0 -23
- package/3rdparty/walkontable/src/core/_base.js +0 -7
- package/3rdparty/walkontable/src/core/_base.mjs +0 -7
- package/3rdparty/walkontable/src/facade/core.js +0 -3
- package/3rdparty/walkontable/src/facade/core.mjs +0 -3
- package/3rdparty/walkontable/src/overlay/_base.js +0 -3
- package/3rdparty/walkontable/src/overlay/_base.mjs +0 -3
- package/3rdparty/walkontable/src/selection/border/border.js +45 -33
- package/3rdparty/walkontable/src/selection/border/border.mjs +46 -34
- package/3rdparty/walkontable/src/selection/scanner.js +11 -46
- package/3rdparty/walkontable/src/selection/scanner.mjs +11 -46
- package/3rdparty/walkontable/src/settings.js +0 -8
- package/3rdparty/walkontable/src/settings.mjs +0 -8
- package/3rdparty/walkontable/src/table/master.js +1 -1
- package/3rdparty/walkontable/src/table/master.mjs +2 -2
- package/3rdparty/walkontable/src/table.js +3 -6
- package/3rdparty/walkontable/src/table.mjs +3 -6
- package/3rdparty/walkontable/src/viewport.js +4 -26
- package/3rdparty/walkontable/src/viewport.mjs +4 -26
- package/base.js +4 -4
- package/base.mjs +3 -3
- package/core.d.ts +1 -1
- package/core.js +12 -13
- package/core.mjs +4 -5
- package/dataMap/metaManager/metaSchema.js +2 -68
- package/dataMap/metaManager/metaSchema.mjs +2 -68
- package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
- 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 +2685 -3046
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +60 -60
- package/dist/handsontable.js +2687 -3048
- 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/autocompleteEditor/autocompleteEditor.js +31 -14
- package/editors/autocompleteEditor/autocompleteEditor.mjs +31 -14
- package/editors/baseEditor/baseEditor.js +17 -24
- package/editors/baseEditor/baseEditor.mjs +18 -25
- package/editors/dropdownEditor/dropdownEditor.js +3 -2
- package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
- package/editors/handsontableEditor/handsontableEditor.js +24 -0
- package/editors/handsontableEditor/handsontableEditor.mjs +24 -0
- package/editors/registry.js +2 -2
- package/editors/registry.mjs +1 -1
- package/editors/textEditor/textEditor.js +2 -2
- package/editors/textEditor/textEditor.mjs +3 -3
- package/helpers/dom/element.js +4 -17
- package/helpers/dom/element.mjs +4 -16
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/index.d.ts +1 -2
- package/package.json +1 -1
- package/{core/hooks/index.d.ts → pluginHooks.d.ts} +21 -17
- package/{core/hooks/constants.mjs → pluginHooks.js} +489 -16
- package/{core/hooks/constants.js → pluginHooks.mjs} +486 -20
- package/plugins/autoColumnSize/autoColumnSize.js +27 -18
- package/plugins/autoColumnSize/autoColumnSize.mjs +27 -18
- package/plugins/autoRowSize/autoRowSize.js +22 -16
- package/plugins/autoRowSize/autoRowSize.mjs +23 -17
- package/plugins/autofill/autofill.js +5 -4
- package/plugins/autofill/autofill.mjs +1 -1
- package/plugins/base/base.d.ts +1 -1
- package/plugins/base/base.js +0 -39
- package/plugins/base/base.mjs +1 -40
- package/plugins/base/index.js +1 -2
- package/plugins/base/index.mjs +1 -1
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +5 -2
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -2
- package/plugins/columnSorting/columnSorting.js +4 -3
- package/plugins/columnSorting/columnSorting.mjs +1 -1
- package/plugins/comments/comments.js +15 -7
- package/plugins/comments/comments.mjs +16 -8
- package/plugins/contextMenu/contextMenu.js +7 -6
- package/plugins/contextMenu/contextMenu.mjs +1 -1
- package/plugins/contextMenu/menu/menu.js +1 -1
- package/plugins/contextMenu/menu/menu.mjs +2 -2
- package/plugins/contextMenu/menu/positioner.js +4 -2
- package/plugins/contextMenu/menu/positioner.mjs +4 -2
- package/plugins/copyPaste/copyPaste.js +23 -29
- package/plugins/copyPaste/copyPaste.mjs +15 -21
- package/plugins/dropdownMenu/dropdownMenu.js +7 -6
- 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 +30 -19
- package/plugins/hiddenColumns/hiddenColumns.mjs +26 -15
- package/plugins/hiddenRows/hiddenRows.js +29 -18
- package/plugins/hiddenRows/hiddenRows.mjs +25 -14
- 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 +3 -15
- package/plugins/mergeCells/cellsCollection.mjs +4 -16
- package/plugins/mergeCells/mergeCells.d.ts +2 -6
- package/plugins/mergeCells/mergeCells.js +55 -78
- package/plugins/mergeCells/mergeCells.mjs +53 -76
- package/plugins/mergeCells/renderer.js +3 -13
- package/plugins/mergeCells/renderer.mjs +3 -13
- package/plugins/persistentState/persistentState.js +4 -4
- package/plugins/persistentState/persistentState.mjs +1 -1
- package/plugins/undoRedo/undoRedo.js +5 -4
- 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 +1 -3
- 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/tableView.js +43 -38
- package/tableView.mjs +43 -38
- package/core/hooks/bucket.js +0 -180
- package/core/hooks/bucket.mjs +0 -176
- package/core/hooks/index.js +0 -385
- package/core/hooks/index.mjs +0 -381
@@ -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 _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
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
|
+
_pluginHooks.default.getSingleton().register('beforeMergeCells');
|
39
|
+
_pluginHooks.default.getSingleton().register('afterMergeCells');
|
40
|
+
_pluginHooks.default.getSingleton().register('beforeUnmergeCells');
|
41
|
+
_pluginHooks.default.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,13 +153,6 @@ 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
|
-
}
|
163
156
|
/**
|
164
157
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
165
158
|
* hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
|
@@ -247,108 +240,102 @@ class MergeCells extends _base.BasePlugin {
|
|
247
240
|
}
|
248
241
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
|
249
242
|
});
|
250
|
-
this.addHook('
|
243
|
+
this.addHook('afterIsMultipleSelection', function () {
|
251
244
|
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
252
245
|
args[_key12] = arguments[_key12];
|
253
246
|
}
|
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
|
-
}
|
260
247
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
|
261
248
|
});
|
262
249
|
this.addHook('afterRenderer', function () {
|
263
250
|
return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
|
264
251
|
});
|
265
252
|
this.addHook('afterContextMenuDefaultOptions', function () {
|
266
|
-
for (var
|
267
|
-
args[
|
253
|
+
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
254
|
+
args[_key13] = arguments[_key13];
|
268
255
|
}
|
269
256
|
return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
|
270
257
|
});
|
271
258
|
this.addHook('afterGetCellMeta', function () {
|
272
|
-
for (var
|
273
|
-
args[
|
259
|
+
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
260
|
+
args[_key14] = arguments[_key14];
|
274
261
|
}
|
275
262
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
|
276
263
|
});
|
277
264
|
this.addHook('afterViewportRowCalculatorOverride', function () {
|
278
|
-
for (var
|
279
|
-
args[
|
265
|
+
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
266
|
+
args[_key15] = arguments[_key15];
|
280
267
|
}
|
281
268
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
|
282
269
|
});
|
283
270
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
284
|
-
for (var
|
285
|
-
args[
|
271
|
+
for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
272
|
+
args[_key16] = arguments[_key16];
|
286
273
|
}
|
287
274
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
288
275
|
});
|
289
276
|
this.addHook('modifyAutofillRange', function () {
|
290
|
-
for (var
|
291
|
-
args[
|
277
|
+
for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
|
278
|
+
args[_key17] = arguments[_key17];
|
292
279
|
}
|
293
280
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
|
294
281
|
});
|
295
282
|
this.addHook('afterCreateCol', function () {
|
296
|
-
for (var
|
297
|
-
args[
|
283
|
+
for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
|
284
|
+
args[_key18] = arguments[_key18];
|
298
285
|
}
|
299
286
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
|
300
287
|
});
|
301
288
|
this.addHook('afterRemoveCol', function () {
|
302
|
-
for (var
|
303
|
-
args[
|
289
|
+
for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
|
290
|
+
args[_key19] = arguments[_key19];
|
304
291
|
}
|
305
292
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
|
306
293
|
});
|
307
294
|
this.addHook('afterCreateRow', function () {
|
308
|
-
for (var
|
309
|
-
args[
|
295
|
+
for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
|
296
|
+
args[_key20] = arguments[_key20];
|
310
297
|
}
|
311
298
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
|
312
299
|
});
|
313
300
|
this.addHook('afterRemoveRow', function () {
|
314
|
-
for (var
|
315
|
-
args[
|
301
|
+
for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
|
302
|
+
args[_key21] = arguments[_key21];
|
316
303
|
}
|
317
304
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
|
318
305
|
});
|
319
306
|
this.addHook('afterChange', function () {
|
320
|
-
for (var
|
321
|
-
args[
|
307
|
+
for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
|
308
|
+
args[_key22] = arguments[_key22];
|
322
309
|
}
|
323
310
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
|
324
311
|
});
|
325
312
|
this.addHook('beforeDrawBorders', function () {
|
326
|
-
for (var
|
327
|
-
args[
|
313
|
+
for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
|
314
|
+
args[_key23] = arguments[_key23];
|
328
315
|
}
|
329
316
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
|
330
317
|
});
|
331
318
|
this.addHook('afterDrawSelection', function () {
|
332
|
-
for (var
|
333
|
-
args[
|
319
|
+
for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
|
320
|
+
args[_key24] = arguments[_key24];
|
334
321
|
}
|
335
322
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
|
336
323
|
});
|
337
324
|
this.addHook('beforeRemoveCellClassNames', function () {
|
338
|
-
for (var
|
339
|
-
args[
|
325
|
+
for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
|
326
|
+
args[_key25] = arguments[_key25];
|
340
327
|
}
|
341
328
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
|
342
329
|
});
|
343
330
|
this.addHook('beforeBeginEditing', function () {
|
344
|
-
for (var
|
345
|
-
args[
|
331
|
+
for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
332
|
+
args[_key26] = arguments[_key26];
|
346
333
|
}
|
347
334
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
|
348
335
|
});
|
349
336
|
this.addHook('modifyRowHeightByOverlayName', function () {
|
350
|
-
for (var
|
351
|
-
args[
|
337
|
+
for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
|
338
|
+
args[_key27] = arguments[_key27];
|
352
339
|
}
|
353
340
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
|
354
341
|
});
|
@@ -379,9 +366,10 @@ class MergeCells extends _base.BasePlugin {
|
|
379
366
|
* - [`mergeCells`](@/api/options.md#mergecells)
|
380
367
|
*/
|
381
368
|
updatePlugin() {
|
369
|
+
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
382
370
|
this.disablePlugin();
|
383
371
|
this.enablePlugin();
|
384
|
-
this.generateFromSettings();
|
372
|
+
this.generateFromSettings(settings);
|
385
373
|
super.updatePlugin();
|
386
374
|
}
|
387
375
|
|
@@ -466,9 +454,13 @@ class MergeCells extends _base.BasePlugin {
|
|
466
454
|
* Generates the merged cells from the settings provided to the plugin.
|
467
455
|
*
|
468
456
|
* @private
|
457
|
+
* @param {Array|boolean} settings The settings provided to the plugin.
|
469
458
|
*/
|
470
|
-
generateFromSettings() {
|
471
|
-
|
459
|
+
generateFromSettings(settings) {
|
460
|
+
if (!Array.isArray(settings)) {
|
461
|
+
return;
|
462
|
+
}
|
463
|
+
const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
|
472
464
|
const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
|
473
465
|
const populatedNulls = [];
|
474
466
|
nonOverlappingSettings.forEach(mergeCellInfo => {
|
@@ -911,7 +903,7 @@ class MergeCells extends _base.BasePlugin {
|
|
911
903
|
}
|
912
904
|
exports.MergeCells = MergeCells;
|
913
905
|
function _onAfterInit() {
|
914
|
-
this.generateFromSettings();
|
906
|
+
this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
|
915
907
|
this.hot.render();
|
916
908
|
}
|
917
909
|
function _onAfterIsMultipleSelection(isMultiple) {
|
@@ -1105,16 +1097,13 @@ function _onBeforeSelectionHighlightSet() {
|
|
1105
1097
|
}
|
1106
1098
|
}
|
1107
1099
|
/**
|
1108
|
-
*
|
1109
|
-
* to the root element of the cell.
|
1100
|
+
* `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
|
1110
1101
|
*
|
1111
1102
|
* @param {number} row Row index.
|
1112
1103
|
* @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.
|
1115
1104
|
* @returns {Array|undefined} Visual coordinates of the merge.
|
1116
1105
|
*/
|
1117
|
-
function _onModifyGetCellCoords(row, column
|
1106
|
+
function _onModifyGetCellCoords(row, column) {
|
1118
1107
|
if (row < 0 || column < 0) {
|
1119
1108
|
return;
|
1120
1109
|
}
|
@@ -1128,17 +1117,11 @@ function _onModifyGetCellCoords(row, column, topmost, source) {
|
|
1128
1117
|
colspan,
|
1129
1118
|
rowspan
|
1130
1119
|
} = mergeParent;
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
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];
|
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];
|
1142
1125
|
}
|
1143
1126
|
/**
|
1144
1127
|
* `afterContextMenuDefaultOptions` hook callback.
|
@@ -1274,17 +1257,11 @@ function _onAfterGetCellMeta(row, col, cellProperties) {
|
|
1274
1257
|
* @param {object} calc The row calculator object.
|
1275
1258
|
*/
|
1276
1259
|
function _onAfterViewportRowCalculatorOverride(calc) {
|
1277
|
-
if (this.getSetting('virtualized')) {
|
1278
|
-
return;
|
1279
|
-
}
|
1280
1260
|
const nrOfColumns = this.hot.countCols();
|
1281
1261
|
this.modifyViewportRowStart(calc, nrOfColumns);
|
1282
1262
|
this.modifyViewportRowEnd(calc, nrOfColumns);
|
1283
1263
|
}
|
1284
1264
|
function _onAfterViewportColumnCalculatorOverride(calc) {
|
1285
|
-
if (this.getSetting('virtualized')) {
|
1286
|
-
return;
|
1287
|
-
}
|
1288
1265
|
const nrOfRows = this.hot.countRows();
|
1289
1266
|
this.modifyViewportColumnStart(calc, nrOfRows);
|
1290
1267
|
this.modifyViewportColumnEnd(calc, nrOfRows);
|
@@ -1443,8 +1420,8 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1443
1420
|
let firstColumn;
|
1444
1421
|
let lastColumn;
|
1445
1422
|
if (overlayType === 'master') {
|
1446
|
-
firstColumn = this.hot.getFirstRenderedVisibleColumn();
|
1447
|
-
lastColumn = this.hot.getLastRenderedVisibleColumn();
|
1423
|
+
firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
|
1424
|
+
lastColumn = this.hot.view.getLastRenderedVisibleColumn();
|
1448
1425
|
} else {
|
1449
1426
|
const activeOverlay = this.hot.view.getOverlayByName(overlayType);
|
1450
1427
|
firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
|
@@ -1457,7 +1434,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1457
1434
|
const from = this.hot._createCellCoords(row, firstColumn);
|
1458
1435
|
const to = this.hot._createCellCoords(row, lastColumn);
|
1459
1436
|
const viewportRange = this.hot._createCellRange(from, from, to);
|
1460
|
-
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange
|
1437
|
+
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
|
1461
1438
|
const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
|
1462
1439
|
let {
|
1463
1440
|
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
|
20
|
-
import
|
19
|
+
import { BasePlugin } from "../base/index.mjs";
|
20
|
+
import Hooks from "../../pluginHooks.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
|
29
|
+
import { rangeEach } 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,13 +149,6 @@ 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
|
-
}
|
159
152
|
/**
|
160
153
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
161
154
|
* hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
|
@@ -243,108 +236,102 @@ export class MergeCells extends BasePlugin {
|
|
243
236
|
}
|
244
237
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
|
245
238
|
});
|
246
|
-
this.addHook('
|
239
|
+
this.addHook('afterIsMultipleSelection', function () {
|
247
240
|
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
248
241
|
args[_key12] = arguments[_key12];
|
249
242
|
}
|
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
|
-
}
|
256
243
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
|
257
244
|
});
|
258
245
|
this.addHook('afterRenderer', function () {
|
259
246
|
return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
|
260
247
|
});
|
261
248
|
this.addHook('afterContextMenuDefaultOptions', function () {
|
262
|
-
for (var
|
263
|
-
args[
|
249
|
+
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
250
|
+
args[_key13] = arguments[_key13];
|
264
251
|
}
|
265
252
|
return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
|
266
253
|
});
|
267
254
|
this.addHook('afterGetCellMeta', function () {
|
268
|
-
for (var
|
269
|
-
args[
|
255
|
+
for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
|
256
|
+
args[_key14] = arguments[_key14];
|
270
257
|
}
|
271
258
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
|
272
259
|
});
|
273
260
|
this.addHook('afterViewportRowCalculatorOverride', function () {
|
274
|
-
for (var
|
275
|
-
args[
|
261
|
+
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
262
|
+
args[_key15] = arguments[_key15];
|
276
263
|
}
|
277
264
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
|
278
265
|
});
|
279
266
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
280
|
-
for (var
|
281
|
-
args[
|
267
|
+
for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
268
|
+
args[_key16] = arguments[_key16];
|
282
269
|
}
|
283
270
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
|
284
271
|
});
|
285
272
|
this.addHook('modifyAutofillRange', function () {
|
286
|
-
for (var
|
287
|
-
args[
|
273
|
+
for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
|
274
|
+
args[_key17] = arguments[_key17];
|
288
275
|
}
|
289
276
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
|
290
277
|
});
|
291
278
|
this.addHook('afterCreateCol', function () {
|
292
|
-
for (var
|
293
|
-
args[
|
279
|
+
for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
|
280
|
+
args[_key18] = arguments[_key18];
|
294
281
|
}
|
295
282
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
|
296
283
|
});
|
297
284
|
this.addHook('afterRemoveCol', function () {
|
298
|
-
for (var
|
299
|
-
args[
|
285
|
+
for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
|
286
|
+
args[_key19] = arguments[_key19];
|
300
287
|
}
|
301
288
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
|
302
289
|
});
|
303
290
|
this.addHook('afterCreateRow', function () {
|
304
|
-
for (var
|
305
|
-
args[
|
291
|
+
for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
|
292
|
+
args[_key20] = arguments[_key20];
|
306
293
|
}
|
307
294
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
|
308
295
|
});
|
309
296
|
this.addHook('afterRemoveRow', function () {
|
310
|
-
for (var
|
311
|
-
args[
|
297
|
+
for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
|
298
|
+
args[_key21] = arguments[_key21];
|
312
299
|
}
|
313
300
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
|
314
301
|
});
|
315
302
|
this.addHook('afterChange', function () {
|
316
|
-
for (var
|
317
|
-
args[
|
303
|
+
for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
|
304
|
+
args[_key22] = arguments[_key22];
|
318
305
|
}
|
319
306
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
|
320
307
|
});
|
321
308
|
this.addHook('beforeDrawBorders', function () {
|
322
|
-
for (var
|
323
|
-
args[
|
309
|
+
for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
|
310
|
+
args[_key23] = arguments[_key23];
|
324
311
|
}
|
325
312
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
|
326
313
|
});
|
327
314
|
this.addHook('afterDrawSelection', function () {
|
328
|
-
for (var
|
329
|
-
args[
|
315
|
+
for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
|
316
|
+
args[_key24] = arguments[_key24];
|
330
317
|
}
|
331
318
|
return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
|
332
319
|
});
|
333
320
|
this.addHook('beforeRemoveCellClassNames', function () {
|
334
|
-
for (var
|
335
|
-
args[
|
321
|
+
for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
|
322
|
+
args[_key25] = arguments[_key25];
|
336
323
|
}
|
337
324
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
|
338
325
|
});
|
339
326
|
this.addHook('beforeBeginEditing', function () {
|
340
|
-
for (var
|
341
|
-
args[
|
327
|
+
for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
328
|
+
args[_key26] = arguments[_key26];
|
342
329
|
}
|
343
330
|
return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
|
344
331
|
});
|
345
332
|
this.addHook('modifyRowHeightByOverlayName', function () {
|
346
|
-
for (var
|
347
|
-
args[
|
333
|
+
for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
|
334
|
+
args[_key27] = arguments[_key27];
|
348
335
|
}
|
349
336
|
return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
|
350
337
|
});
|
@@ -375,9 +362,10 @@ export class MergeCells extends BasePlugin {
|
|
375
362
|
* - [`mergeCells`](@/api/options.md#mergecells)
|
376
363
|
*/
|
377
364
|
updatePlugin() {
|
365
|
+
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
378
366
|
this.disablePlugin();
|
379
367
|
this.enablePlugin();
|
380
|
-
this.generateFromSettings();
|
368
|
+
this.generateFromSettings(settings);
|
381
369
|
super.updatePlugin();
|
382
370
|
}
|
383
371
|
|
@@ -462,9 +450,13 @@ export class MergeCells extends BasePlugin {
|
|
462
450
|
* Generates the merged cells from the settings provided to the plugin.
|
463
451
|
*
|
464
452
|
* @private
|
453
|
+
* @param {Array|boolean} settings The settings provided to the plugin.
|
465
454
|
*/
|
466
|
-
generateFromSettings() {
|
467
|
-
|
455
|
+
generateFromSettings(settings) {
|
456
|
+
if (!Array.isArray(settings)) {
|
457
|
+
return;
|
458
|
+
}
|
459
|
+
const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
|
468
460
|
const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
|
469
461
|
const populatedNulls = [];
|
470
462
|
nonOverlappingSettings.forEach(mergeCellInfo => {
|
@@ -906,7 +898,7 @@ export class MergeCells extends BasePlugin {
|
|
906
898
|
*/
|
907
899
|
}
|
908
900
|
function _onAfterInit() {
|
909
|
-
this.generateFromSettings();
|
901
|
+
this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
|
910
902
|
this.hot.render();
|
911
903
|
}
|
912
904
|
function _onAfterIsMultipleSelection(isMultiple) {
|
@@ -1100,16 +1092,13 @@ function _onBeforeSelectionHighlightSet() {
|
|
1100
1092
|
}
|
1101
1093
|
}
|
1102
1094
|
/**
|
1103
|
-
*
|
1104
|
-
* to the root element of the cell.
|
1095
|
+
* `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
|
1105
1096
|
*
|
1106
1097
|
* @param {number} row Row index.
|
1107
1098
|
* @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.
|
1110
1099
|
* @returns {Array|undefined} Visual coordinates of the merge.
|
1111
1100
|
*/
|
1112
|
-
function _onModifyGetCellCoords(row, column
|
1101
|
+
function _onModifyGetCellCoords(row, column) {
|
1113
1102
|
if (row < 0 || column < 0) {
|
1114
1103
|
return;
|
1115
1104
|
}
|
@@ -1123,17 +1112,11 @@ function _onModifyGetCellCoords(row, column, topmost, source) {
|
|
1123
1112
|
colspan,
|
1124
1113
|
rowspan
|
1125
1114
|
} = mergeParent;
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
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];
|
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];
|
1137
1120
|
}
|
1138
1121
|
/**
|
1139
1122
|
* `afterContextMenuDefaultOptions` hook callback.
|
@@ -1269,17 +1252,11 @@ function _onAfterGetCellMeta(row, col, cellProperties) {
|
|
1269
1252
|
* @param {object} calc The row calculator object.
|
1270
1253
|
*/
|
1271
1254
|
function _onAfterViewportRowCalculatorOverride(calc) {
|
1272
|
-
if (this.getSetting('virtualized')) {
|
1273
|
-
return;
|
1274
|
-
}
|
1275
1255
|
const nrOfColumns = this.hot.countCols();
|
1276
1256
|
this.modifyViewportRowStart(calc, nrOfColumns);
|
1277
1257
|
this.modifyViewportRowEnd(calc, nrOfColumns);
|
1278
1258
|
}
|
1279
1259
|
function _onAfterViewportColumnCalculatorOverride(calc) {
|
1280
|
-
if (this.getSetting('virtualized')) {
|
1281
|
-
return;
|
1282
|
-
}
|
1283
1260
|
const nrOfRows = this.hot.countRows();
|
1284
1261
|
this.modifyViewportColumnStart(calc, nrOfRows);
|
1285
1262
|
this.modifyViewportColumnEnd(calc, nrOfRows);
|
@@ -1438,8 +1415,8 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1438
1415
|
let firstColumn;
|
1439
1416
|
let lastColumn;
|
1440
1417
|
if (overlayType === 'master') {
|
1441
|
-
firstColumn = this.hot.getFirstRenderedVisibleColumn();
|
1442
|
-
lastColumn = this.hot.getLastRenderedVisibleColumn();
|
1418
|
+
firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
|
1419
|
+
lastColumn = this.hot.view.getLastRenderedVisibleColumn();
|
1443
1420
|
} else {
|
1444
1421
|
const activeOverlay = this.hot.view.getOverlayByName(overlayType);
|
1445
1422
|
firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
|
@@ -1452,7 +1429,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
|
|
1452
1429
|
const from = this.hot._createCellCoords(row, firstColumn);
|
1453
1430
|
const to = this.hot._createCellCoords(row, lastColumn);
|
1454
1431
|
const viewportRange = this.hot._createCellRange(from, from, to);
|
1455
|
-
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange
|
1432
|
+
const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
|
1456
1433
|
const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
|
1457
1434
|
let {
|
1458
1435
|
rowspan
|
@@ -31,7 +31,7 @@ function createMergeCellRenderer(plugin) {
|
|
31
31
|
*
|
32
32
|
* @private
|
33
33
|
* @param {HTMLElement} TD The cell to be modified.
|
34
|
-
* @param {number} row
|
34
|
+
* @param {number} row Row index.
|
35
35
|
* @param {number} col Visual column index.
|
36
36
|
*/
|
37
37
|
function after(TD, row, col) {
|
@@ -49,23 +49,13 @@ function createMergeCellRenderer(plugin) {
|
|
49
49
|
rowspan: origRowspan
|
50
50
|
} = mergedCell;
|
51
51
|
const [lastMergedRowIndex, lastMergedColumnIndex] = plugin.translateMergedCellToRenderable(origRow, origRowspan, origColumn, origColspan);
|
52
|
-
const isVirtualRenderingEnabled = plugin.getSetting('virtualized');
|
53
52
|
const renderedRowIndex = rowMapper.getRenderableFromVisualIndex(row);
|
54
53
|
const renderedColumnIndex = columnMapper.getRenderableFromVisualIndex(col);
|
55
54
|
const maxRowSpan = lastMergedRowIndex - renderedRowIndex + 1; // Number of rendered columns.
|
56
55
|
const maxColSpan = lastMergedColumnIndex - renderedColumnIndex + 1; // Number of rendered columns.
|
57
56
|
|
58
|
-
|
59
|
-
|
60
|
-
if (isVirtualRenderingEnabled) {
|
61
|
-
const overlayName = hot.view.getActiveOverlayName();
|
62
|
-
if (!['top', 'top_inline_start_corner'].includes(overlayName)) {
|
63
|
-
notHiddenRow = Math.max(notHiddenRow, hot.getFirstRenderedVisibleRow());
|
64
|
-
}
|
65
|
-
if (!['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName)) {
|
66
|
-
notHiddenColumn = Math.max(notHiddenColumn, hot.getFirstRenderedVisibleColumn());
|
67
|
-
}
|
68
|
-
}
|
57
|
+
const notHiddenRow = rowMapper.getNearestNotHiddenIndex(origRow, 1);
|
58
|
+
const notHiddenColumn = columnMapper.getNearestNotHiddenIndex(origColumn, 1);
|
69
59
|
const notHiddenRowspan = Math.min(origRowspan, maxRowSpan);
|
70
60
|
const notHiddenColspan = Math.min(origColspan, maxColSpan);
|
71
61
|
if (notHiddenRow === row && notHiddenColumn === col) {
|