handsontable 0.0.0-next-086cb13-20230613 → 0.0.0-next-ac97c93-20230617

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 (232) hide show
  1. package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
  4. package/3rdparty/walkontable/src/cell/coords.js +12 -61
  5. package/3rdparty/walkontable/src/cell/coords.mjs +12 -61
  6. package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
  7. package/3rdparty/walkontable/src/cell/range.js +7 -44
  8. package/3rdparty/walkontable/src/cell/range.mjs +7 -44
  9. package/3rdparty/walkontable/src/core/_base.js +3 -9
  10. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  11. package/3rdparty/walkontable/src/core/clone.js +2 -2
  12. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  13. package/3rdparty/walkontable/src/core/core.js +2 -3
  14. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  15. package/3rdparty/walkontable/src/event.js +7 -7
  16. package/3rdparty/walkontable/src/event.mjs +7 -7
  17. package/3rdparty/walkontable/src/facade/core.js +2 -2
  18. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  19. package/3rdparty/walkontable/src/index.js +2 -10
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +4 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +4 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +4 -2
  26. package/3rdparty/walkontable/src/overlay/top.mjs +4 -2
  27. package/3rdparty/walkontable/src/selection.js +355 -0
  28. package/3rdparty/walkontable/src/selection.mjs +349 -0
  29. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  30. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  31. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  32. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  33. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  34. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  35. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  36. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  37. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  38. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  39. package/3rdparty/walkontable/src/table.js +79 -7
  40. package/3rdparty/walkontable/src/table.mjs +80 -8
  41. package/base.js +2 -2
  42. package/base.mjs +2 -2
  43. package/common.d.ts +1 -1
  44. package/core.d.ts +6 -9
  45. package/core.js +390 -235
  46. package/core.mjs +395 -240
  47. package/dataMap/metaManager/metaSchema.js +0 -19
  48. package/dataMap/metaManager/metaSchema.mjs +0 -19
  49. package/dist/handsontable.css +3 -8
  50. package/dist/handsontable.full.css +3 -8
  51. package/dist/handsontable.full.js +10189 -12963
  52. package/dist/handsontable.full.min.css +3 -3
  53. package/dist/handsontable.full.min.js +112 -112
  54. package/dist/handsontable.js +13133 -15907
  55. package/dist/handsontable.min.css +3 -3
  56. package/dist/handsontable.min.js +4 -4
  57. package/editorManager.js +82 -21
  58. package/editorManager.mjs +86 -26
  59. package/editors/textEditor/textEditor.js +11 -3
  60. package/editors/textEditor/textEditor.mjs +12 -4
  61. package/helpers/mixed.js +1 -1
  62. package/helpers/mixed.mjs +1 -1
  63. package/helpers/number.d.ts +0 -1
  64. package/helpers/number.js +0 -18
  65. package/helpers/number.mjs +0 -17
  66. package/package.json +1 -1
  67. package/pluginHooks.d.ts +1 -6
  68. package/pluginHooks.js +1 -100
  69. package/pluginHooks.mjs +1 -100
  70. package/plugins/autofill/autofill.js +1 -2
  71. package/plugins/autofill/autofill.mjs +2 -3
  72. package/plugins/autofill/utils.js +1 -39
  73. package/plugins/autofill/utils.mjs +0 -37
  74. package/plugins/collapsibleColumns/collapsibleColumns.js +24 -81
  75. package/plugins/collapsibleColumns/collapsibleColumns.mjs +24 -81
  76. package/plugins/copyPaste/copyPaste.js +1 -5
  77. package/plugins/copyPaste/copyPaste.mjs +1 -5
  78. package/plugins/customBorders/customBorders.js +53 -18
  79. package/plugins/customBorders/customBorders.mjs +54 -19
  80. package/plugins/mergeCells/mergeCells.js +18 -5
  81. package/plugins/mergeCells/mergeCells.mjs +18 -5
  82. package/plugins/nestedHeaders/nestedHeaders.js +10 -132
  83. package/plugins/nestedHeaders/nestedHeaders.mjs +10 -132
  84. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  85. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  86. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  87. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  88. package/selection/highlight/constants.js +16 -0
  89. package/selection/highlight/constants.mjs +6 -0
  90. package/selection/highlight/highlight.js +89 -312
  91. package/selection/highlight/highlight.mjs +85 -302
  92. package/selection/highlight/types/activeHeader.js +9 -10
  93. package/selection/highlight/types/activeHeader.mjs +8 -10
  94. package/selection/highlight/types/area.js +27 -12
  95. package/selection/highlight/types/area.mjs +30 -16
  96. package/selection/highlight/types/{focus.js → cell.js} +8 -5
  97. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  98. package/selection/highlight/types/customSelection.js +10 -7
  99. package/selection/highlight/types/customSelection.mjs +9 -7
  100. package/selection/highlight/types/fill.js +8 -5
  101. package/selection/highlight/types/fill.mjs +7 -5
  102. package/selection/highlight/types/header.js +20 -10
  103. package/selection/highlight/types/header.mjs +19 -10
  104. package/selection/highlight/types/{row.js → index.js} +31 -27
  105. package/selection/highlight/types/{row.mjs → index.mjs} +29 -24
  106. package/selection/highlight/visualSelection.js +27 -31
  107. package/selection/highlight/visualSelection.mjs +27 -31
  108. package/selection/index.js +7 -4
  109. package/selection/index.mjs +3 -2
  110. package/selection/mouseEventHandler.js +1 -1
  111. package/selection/mouseEventHandler.mjs +1 -1
  112. package/selection/range.js +8 -8
  113. package/selection/range.mjs +8 -8
  114. package/selection/selection.js +181 -315
  115. package/selection/selection.mjs +180 -310
  116. package/selection/transformation.js +96 -233
  117. package/selection/transformation.mjs +93 -230
  118. package/selection/utils.js +36 -12
  119. package/selection/utils.mjs +36 -13
  120. package/settings.d.ts +0 -1
  121. package/shortcuts/manager.js +0 -2
  122. package/shortcuts/manager.mjs +0 -2
  123. package/tableView.js +9 -58
  124. package/tableView.mjs +9 -58
  125. package/translations/indexMapper.js +7 -56
  126. package/translations/indexMapper.mjs +8 -56
  127. package/3rdparty/walkontable/src/selection/border/constants.js +0 -18
  128. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -13
  129. package/3rdparty/walkontable/src/selection/constants.js +0 -63
  130. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  131. package/3rdparty/walkontable/src/selection/index.js +0 -30
  132. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  133. package/3rdparty/walkontable/src/selection/manager.js +0 -329
  134. package/3rdparty/walkontable/src/selection/manager.mjs +0 -323
  135. package/3rdparty/walkontable/src/selection/scanner.js +0 -364
  136. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -360
  137. package/3rdparty/walkontable/src/selection/selection.js +0 -133
  138. package/3rdparty/walkontable/src/selection/selection.mjs +0 -127
  139. package/selection/highlight/types/areaLayered.js +0 -54
  140. package/selection/highlight/types/areaLayered.mjs +0 -49
  141. package/selection/highlight/types/column.js +0 -50
  142. package/selection/highlight/types/column.mjs +0 -45
  143. package/shortcutContexts/commands/editor/closeAndSave.js +0 -15
  144. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -10
  145. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -13
  146. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  147. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  148. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -11
  149. package/shortcutContexts/commands/editor/index.js +0 -16
  150. package/shortcutContexts/commands/editor/index.mjs +0 -12
  151. package/shortcutContexts/commands/editor/open.js +0 -29
  152. package/shortcutContexts/commands/editor/open.mjs +0 -24
  153. package/shortcutContexts/commands/emptySelectedCells.js +0 -12
  154. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  155. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  156. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -10
  157. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  158. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -16
  159. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  160. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  161. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  162. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -10
  163. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  164. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -10
  165. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  166. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -14
  167. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -22
  168. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -17
  169. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -17
  170. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -12
  171. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -17
  172. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -12
  173. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -40
  174. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -35
  175. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -40
  176. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -35
  177. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -22
  178. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -17
  179. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  180. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -14
  181. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  182. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -10
  183. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  184. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -16
  185. package/shortcutContexts/commands/index.js +0 -52
  186. package/shortcutContexts/commands/index.mjs +0 -48
  187. package/shortcutContexts/commands/moveCellSelection/down.js +0 -12
  188. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -7
  189. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -29
  190. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -24
  191. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  192. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  193. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -13
  194. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  195. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -13
  196. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  197. package/shortcutContexts/commands/moveCellSelection/left.js +0 -11
  198. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  199. package/shortcutContexts/commands/moveCellSelection/right.js +0 -11
  200. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  201. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -16
  202. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -11
  203. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -17
  204. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -12
  205. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -13
  206. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -8
  207. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -16
  208. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -11
  209. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -36
  210. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -31
  211. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -36
  212. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -31
  213. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -16
  214. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -11
  215. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -18
  216. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -13
  217. package/shortcutContexts/commands/moveCellSelection/up.js +0 -12
  218. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -7
  219. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -29
  220. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -24
  221. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -35
  222. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -30
  223. package/shortcutContexts/commands/selectAll.js +0 -11
  224. package/shortcutContexts/commands/selectAll.mjs +0 -6
  225. package/shortcutContexts/constants.js +0 -19
  226. package/shortcutContexts/constants.mjs +0 -12
  227. package/shortcutContexts/editor.js +0 -29
  228. package/shortcutContexts/editor.mjs +0 -25
  229. package/shortcutContexts/grid.js +0 -244
  230. package/shortcutContexts/grid.mjs +0 -240
  231. package/shortcutContexts/index.js +0 -29
  232. package/shortcutContexts/index.mjs +0 -15
@@ -62,7 +62,6 @@ export var PLUGIN_KEY = 'collapsibleColumns';
62
62
  export var PLUGIN_PRIORITY = 290;
63
63
  var SETTING_KEYS = ['nestedHeaders'];
64
64
  var COLLAPSIBLE_ELEMENT_CLASS = 'collapsibleIndicator';
65
- var SHORTCUTS_GROUP = PLUGIN_KEY;
66
65
  var actionDictionary = new Map([['collapse', {
67
66
  hideColumn: true,
68
67
  beforeHook: 'beforeColumnCollapse',
@@ -231,7 +230,6 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
231
230
  this.addHook('beforeOnCellMouseDown', function (event, coords, TD) {
232
231
  return _this2.onBeforeOnCellMouseDown(event, coords, TD);
233
232
  });
234
- this.registerShortcuts();
235
233
  _get(_getPrototypeOf(CollapsibleColumns.prototype), "enablePlugin", this).call(this);
236
234
  // @TODO: Workaround for broken plugin initialization abstraction (#6806).
237
235
  this.updatePlugin();
@@ -282,65 +280,10 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
282
280
  this.hot.columnIndexMapper.unregisterMap(this.pluginName);
283
281
  _classPrivateFieldSet(this, _collapsedColumnsMap, null);
284
282
  this.nestedHeadersPlugin = null;
285
- this.unregisterShortcuts();
286
283
  this.clearButtons();
287
284
  _get(_getPrototypeOf(CollapsibleColumns.prototype), "disablePlugin", this).call(this);
288
285
  }
289
286
 
290
- /**
291
- * Register shortcuts responsible for toggling collapsible columns.
292
- *
293
- * @private
294
- */
295
- }, {
296
- key: "registerShortcuts",
297
- value: function registerShortcuts() {
298
- var _this3 = this;
299
- this.hot.getShortcutManager().getContext('grid').addShortcut({
300
- keys: [['Enter']],
301
- callback: function callback() {
302
- var _this3$headerStateMan;
303
- var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast().highlight,
304
- row = _this3$hot$getSelecte.row,
305
- col = _this3$hot$getSelecte.col;
306
- var _ref = (_this3$headerStateMan = _this3.headerStateManager.getHeaderTreeNodeData(row, col)) !== null && _this3$headerStateMan !== void 0 ? _this3$headerStateMan : {},
307
- collapsible = _ref.collapsible,
308
- isCollapsed = _ref.isCollapsed,
309
- columnIndex = _ref.columnIndex;
310
- if (!collapsible) {
311
- return;
312
- }
313
- if (isCollapsed) {
314
- _this3.expandSection({
315
- row: row,
316
- col: columnIndex
317
- });
318
- } else {
319
- _this3.collapseSection({
320
- row: row,
321
- col: columnIndex
322
- });
323
- }
324
- },
325
- runOnlyIf: function runOnlyIf() {
326
- var _this3$hot$getSelecte2;
327
- return (_this3$hot$getSelecte2 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte2 === void 0 ? void 0 : _this3$hot$getSelecte2.highlight.isHeader();
328
- },
329
- group: SHORTCUTS_GROUP
330
- });
331
- }
332
-
333
- /**
334
- * Unregister shortcuts responsible for toggling collapsible columns.
335
- *
336
- * @private
337
- */
338
- }, {
339
- key: "unregisterShortcuts",
340
- value: function unregisterShortcuts() {
341
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
342
- }
343
-
344
287
  /**
345
288
  * Clears the expand/collapse buttons.
346
289
  *
@@ -410,7 +353,7 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
410
353
  }, {
411
354
  key: "toggleAllCollapsibleSections",
412
355
  value: function toggleAllCollapsibleSections(action) {
413
- var _this4 = this;
356
+ var _this3 = this;
414
357
  var coords = this.headerStateManager.mapNodes(function (headerSettings) {
415
358
  var collapsible = headerSettings.collapsible,
416
359
  origColspan = headerSettings.origColspan,
@@ -419,7 +362,7 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
419
362
  isCollapsed = headerSettings.isCollapsed;
420
363
  if (collapsible === true && origColspan > 1 && (isCollapsed && action === 'expand' || !isCollapsed && action === 'collapse')) {
421
364
  return {
422
- row: _this4.headerStateManager.levelToRowCoords(headerLevel),
365
+ row: _this3.headerStateManager.levelToRowCoords(headerLevel),
423
366
  col: columnIndex
424
367
  };
425
368
  }
@@ -458,7 +401,7 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
458
401
  }, {
459
402
  key: "toggleCollapsibleSection",
460
403
  value: function toggleCollapsibleSection(coords, action) {
461
- var _this5 = this;
404
+ var _this4 = this;
462
405
  if (!actionDictionary.has(action)) {
463
406
  throw new Error("Unsupported action is passed (".concat(action, ")."));
464
407
  }
@@ -467,18 +410,18 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
467
410
  }
468
411
 
469
412
  // Ignore coordinates which points to the cells range.
470
- var filteredCoords = arrayFilter(coords, function (_ref2) {
471
- var row = _ref2.row;
413
+ var filteredCoords = arrayFilter(coords, function (_ref) {
414
+ var row = _ref.row;
472
415
  return row < 0;
473
416
  });
474
417
  var isActionPossible = filteredCoords.length > 0;
475
- arrayEach(filteredCoords, function (_ref3) {
476
- var _this5$headerStateMan;
477
- var row = _ref3.row,
478
- column = _ref3.col;
479
- var _ref4 = (_this5$headerStateMan = _this5.headerStateManager.getHeaderSettings(row, column)) !== null && _this5$headerStateMan !== void 0 ? _this5$headerStateMan : {},
480
- collapsible = _ref4.collapsible,
481
- isCollapsed = _ref4.isCollapsed;
418
+ arrayEach(filteredCoords, function (_ref2) {
419
+ var _this4$headerStateMan;
420
+ var row = _ref2.row,
421
+ column = _ref2.col;
422
+ var _ref3 = (_this4$headerStateMan = _this4.headerStateManager.getHeaderSettings(row, column)) !== null && _this4$headerStateMan !== void 0 ? _this4$headerStateMan : {},
423
+ collapsible = _ref3.collapsible,
424
+ isCollapsed = _ref3.isCollapsed;
482
425
  if (!collapsible || isCollapsed && action === 'collapse' || !isCollapsed && action === 'expand') {
483
426
  isActionPossible = false;
484
427
  return false;
@@ -487,13 +430,13 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
487
430
  var nodeModRollbacks = [];
488
431
  var affectedColumnsIndexes = [];
489
432
  if (isActionPossible) {
490
- arrayEach(filteredCoords, function (_ref5) {
491
- var row = _ref5.row,
492
- column = _ref5.col;
493
- var _this5$headerStateMan2 = _this5.headerStateManager.triggerNodeModification(action, row, column),
494
- colspanCompensation = _this5$headerStateMan2.colspanCompensation,
495
- affectedColumns = _this5$headerStateMan2.affectedColumns,
496
- rollbackModification = _this5$headerStateMan2.rollbackModification;
433
+ arrayEach(filteredCoords, function (_ref4) {
434
+ var row = _ref4.row,
435
+ column = _ref4.col;
436
+ var _this4$headerStateMan2 = _this4.headerStateManager.triggerNodeModification(action, row, column),
437
+ colspanCompensation = _this4$headerStateMan2.colspanCompensation,
438
+ affectedColumns = _this4$headerStateMan2.affectedColumns,
439
+ rollbackModification = _this4$headerStateMan2.rollbackModification;
497
440
  if (colspanCompensation > 0) {
498
441
  affectedColumnsIndexes.push.apply(affectedColumnsIndexes, _toConsumableArray(affectedColumns));
499
442
  nodeModRollbacks.push(rollbackModification);
@@ -520,7 +463,7 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
520
463
  }
521
464
  this.hot.batchExecution(function () {
522
465
  arrayEach(affectedColumnsIndexes, function (visualColumn) {
523
- _classPrivateFieldGet(_this5, _collapsedColumnsMap).setValueAtIndex(_this5.hot.toPhysicalColumn(visualColumn), actionTranslator.hideColumn);
466
+ _classPrivateFieldGet(_this4, _collapsedColumnsMap).setValueAtIndex(_this4.hot.toPhysicalColumn(visualColumn), actionTranslator.hideColumn);
524
467
  });
525
468
  }, true);
526
469
  var isActionPerformed = this.getCollapsedColumns().length !== currentCollapsedColumns.length;
@@ -554,10 +497,10 @@ export var CollapsibleColumns = /*#__PURE__*/function (_BasePlugin) {
554
497
  key: "onAfterGetColHeader",
555
498
  value: function onAfterGetColHeader(column, TH, headerLevel) {
556
499
  var _this$headerStateMana;
557
- var _ref6 = (_this$headerStateMana = this.headerStateManager.getHeaderSettings(headerLevel, column)) !== null && _this$headerStateMana !== void 0 ? _this$headerStateMana : {},
558
- collapsible = _ref6.collapsible,
559
- origColspan = _ref6.origColspan,
560
- isCollapsed = _ref6.isCollapsed;
500
+ var _ref5 = (_this$headerStateMana = this.headerStateManager.getHeaderSettings(headerLevel, column)) !== null && _this$headerStateMana !== void 0 ? _this$headerStateMana : {},
501
+ collapsible = _ref5.collapsible,
502
+ origColspan = _ref5.origColspan,
503
+ isCollapsed = _ref5.isCollapsed;
561
504
  var isNodeCollapsible = collapsible && origColspan > 1 && column >= this.hot.getSettings().fixedColumnsStart;
562
505
  var collapsibleElement = TH.querySelector(".".concat(COLLAPSIBLE_ELEMENT_CLASS));
563
506
  if (isNodeCollapsible) {
@@ -528,10 +528,6 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
528
528
  if (!selectionRange) {
529
529
  return;
530
530
  }
531
- if (selectionRange.isSingleHeader()) {
532
- this.copyableRanges = [];
533
- return;
534
- }
535
531
  _classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
536
532
  var groupedRanges = new Map([['headers', null], ['cells', null]]);
537
533
  if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
@@ -760,7 +756,7 @@ var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
760
756
  if (typeof pastedData === 'string') {
761
757
  pastedData = (0, _SheetClip.parse)(pastedData);
762
758
  }
763
- if (pastedData === void 0 || pastedData && pastedData.length === 0) {
759
+ if (pastedData && pastedData.length === 0) {
764
760
  return;
765
761
  }
766
762
  if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
@@ -521,10 +521,6 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
521
521
  if (!selectionRange) {
522
522
  return;
523
523
  }
524
- if (selectionRange.isSingleHeader()) {
525
- this.copyableRanges = [];
526
- return;
527
- }
528
524
  _classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
529
525
  var groupedRanges = new Map([['headers', null], ['cells', null]]);
530
526
  if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
@@ -753,7 +749,7 @@ export var CopyPaste = /*#__PURE__*/function (_BasePlugin) {
753
749
  if (typeof pastedData === 'string') {
754
750
  pastedData = parse(pastedData);
755
751
  }
756
- if (pastedData === void 0 || pastedData && pastedData.length === 0) {
752
+ if (pastedData && pastedData.length === 0) {
757
753
  return;
758
754
  }
759
755
  if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
@@ -9,6 +9,11 @@ require("core-js/modules/es.symbol.iterator.js");
9
9
  require("core-js/modules/es.array.iterator.js");
10
10
  require("core-js/modules/es.string.iterator.js");
11
11
  require("core-js/modules/web.dom-collections.iterator.js");
12
+ require("core-js/modules/es.array.slice.js");
13
+ require("core-js/modules/es.regexp.to-string.js");
14
+ require("core-js/modules/es.function.name.js");
15
+ require("core-js/modules/es.array.from.js");
16
+ require("core-js/modules/es.regexp.exec.js");
12
17
  require("core-js/modules/es.weak-map.js");
13
18
  exports.__esModule = true;
14
19
  exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.CustomBorders = void 0;
@@ -34,6 +39,12 @@ var _selection = require("../../selection");
34
39
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
36
41
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
42
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
43
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
44
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
45
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
46
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
47
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
48
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38
49
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
39
50
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -219,11 +230,25 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
219
230
  var selectionType = (0, _selection.detectSelectionType)(selectionRanges);
220
231
  var selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
221
232
  (0, _array.arrayEach)(selectionRanges, function (selection) {
222
- selectionSchemaNormalizer(selection).forAll(function (row, col) {
223
- (0, _array.arrayEach)(borderKeys, function (borderKey) {
224
- _this3.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
225
- });
226
- });
233
+ var _selectionSchemaNorma = selectionSchemaNormalizer(selection),
234
+ _selectionSchemaNorma2 = _slicedToArray(_selectionSchemaNorma, 4),
235
+ rowStart = _selectionSchemaNorma2[0],
236
+ columnStart = _selectionSchemaNorma2[1],
237
+ rowEnd = _selectionSchemaNorma2[2],
238
+ columnEnd = _selectionSchemaNorma2[3];
239
+ var _loop = function _loop(row) {
240
+ var _loop2 = function _loop2(col) {
241
+ (0, _array.arrayEach)(borderKeys, function (borderKey) {
242
+ _this3.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
243
+ });
244
+ };
245
+ for (var col = columnStart; col <= columnEnd; col += 1) {
246
+ _loop2(col);
247
+ }
248
+ };
249
+ for (var row = rowStart; row <= rowEnd; row += 1) {
250
+ _loop(row);
251
+ }
227
252
  });
228
253
 
229
254
  /*
@@ -266,13 +291,27 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
266
291
  var selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
267
292
  var selectedBorders = [];
268
293
  (0, _array.arrayEach)(selectionRanges, function (selection) {
269
- selectionSchemaNormalizer(selection).forAll(function (row, col) {
270
- (0, _array.arrayEach)(_this4.savedBorders, function (border) {
271
- if (border.row === row && border.col === col) {
272
- selectedBorders.push((0, _utils.denormalizeBorder)(border));
273
- }
274
- });
275
- });
294
+ var _selectionSchemaNorma3 = selectionSchemaNormalizer(selection),
295
+ _selectionSchemaNorma4 = _slicedToArray(_selectionSchemaNorma3, 4),
296
+ rowStart = _selectionSchemaNorma4[0],
297
+ columnStart = _selectionSchemaNorma4[1],
298
+ rowEnd = _selectionSchemaNorma4[2],
299
+ columnEnd = _selectionSchemaNorma4[3];
300
+ var _loop3 = function _loop3(row) {
301
+ var _loop4 = function _loop4(col) {
302
+ (0, _array.arrayEach)(_this4.savedBorders, function (border) {
303
+ if (border.row === row && border.col === col) {
304
+ selectedBorders.push((0, _utils.denormalizeBorder)(border));
305
+ }
306
+ });
307
+ };
308
+ for (var col = columnStart; col <= columnEnd; col += 1) {
309
+ _loop4(col);
310
+ }
311
+ };
312
+ for (var row = rowStart; row <= rowEnd; row += 1) {
313
+ _loop3(row);
314
+ }
276
315
  });
277
316
  return selectedBorders;
278
317
  }
@@ -697,12 +736,10 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
697
736
  }, {
698
737
  key: "checkCustomSelectionsFromContextMenu",
699
738
  value: function checkCustomSelectionsFromContextMenu(border, place, remove) {
700
- var _this12 = this;
701
739
  var check = false;
702
740
  (0, _array.arrayEach)(this.hot.selection.highlight.customSelections, function (customSelection) {
703
741
  if (border.id === customSelection.settings.id) {
704
- var borders = _this12.hot.view._wt.selectionManager.getBorderInstances(customSelection);
705
- (0, _array.arrayEach)(borders, function (borderObject) {
742
+ (0, _object.objectEach)(customSelection.instanceBorders, function (borderObject) {
706
743
  borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
707
744
  });
708
745
 
@@ -727,7 +764,6 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
727
764
  }, {
728
765
  key: "checkCustomSelections",
729
766
  value: function checkCustomSelections(border, cellRange, place) {
730
- var _this13 = this;
731
767
  var hideCount = this.countHide(border);
732
768
  var check = false;
733
769
  if (hideCount === 4) {
@@ -739,8 +775,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
739
775
  customSelection.visualCellRange = cellRange;
740
776
  customSelection.commit();
741
777
  if (place) {
742
- var borders = _this13.hot.view._wt.selectionManager.getBorderInstances(customSelection);
743
- (0, _array.arrayEach)(borders, function (borderObject) {
778
+ (0, _object.objectEach)(customSelection.instanceBorders, function (borderObject) {
744
779
  borderObject.changeBorderStyle(place, border);
745
780
  });
746
781
  }
@@ -1,4 +1,10 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
6
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
7
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
2
8
  import "core-js/modules/es.array.concat.js";
3
9
  import "core-js/modules/es.object.keys.js";
4
10
  import "core-js/modules/es.object.assign.js";
@@ -19,6 +25,11 @@ import "core-js/modules/es.symbol.iterator.js";
19
25
  import "core-js/modules/es.array.iterator.js";
20
26
  import "core-js/modules/es.string.iterator.js";
21
27
  import "core-js/modules/web.dom-collections.iterator.js";
28
+ import "core-js/modules/es.array.slice.js";
29
+ import "core-js/modules/es.regexp.to-string.js";
30
+ import "core-js/modules/es.function.name.js";
31
+ import "core-js/modules/es.array.from.js";
32
+ import "core-js/modules/es.regexp.exec.js";
22
33
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23
34
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
24
35
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -35,7 +46,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
35
46
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
36
47
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
37
48
  import { BasePlugin } from "../base/index.mjs";
38
- import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
49
+ import { hasOwnProperty, objectEach, deepClone } from "../../helpers/object.mjs";
39
50
  import { rangeEach } from "../../helpers/number.mjs";
40
51
  import { arrayEach, arrayReduce, arrayMap } from "../../helpers/array.mjs";
41
52
  import * as C from "../../i18n/constants.mjs";
@@ -210,11 +221,25 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
210
221
  var selectionType = detectSelectionType(selectionRanges);
211
222
  var selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
212
223
  arrayEach(selectionRanges, function (selection) {
213
- selectionSchemaNormalizer(selection).forAll(function (row, col) {
214
- arrayEach(borderKeys, function (borderKey) {
215
- _this3.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
216
- });
217
- });
224
+ var _selectionSchemaNorma = selectionSchemaNormalizer(selection),
225
+ _selectionSchemaNorma2 = _slicedToArray(_selectionSchemaNorma, 4),
226
+ rowStart = _selectionSchemaNorma2[0],
227
+ columnStart = _selectionSchemaNorma2[1],
228
+ rowEnd = _selectionSchemaNorma2[2],
229
+ columnEnd = _selectionSchemaNorma2[3];
230
+ var _loop = function _loop(row) {
231
+ var _loop2 = function _loop2(col) {
232
+ arrayEach(borderKeys, function (borderKey) {
233
+ _this3.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
234
+ });
235
+ };
236
+ for (var col = columnStart; col <= columnEnd; col += 1) {
237
+ _loop2(col);
238
+ }
239
+ };
240
+ for (var row = rowStart; row <= rowEnd; row += 1) {
241
+ _loop(row);
242
+ }
218
243
  });
219
244
 
220
245
  /*
@@ -257,13 +282,27 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
257
282
  var selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
258
283
  var selectedBorders = [];
259
284
  arrayEach(selectionRanges, function (selection) {
260
- selectionSchemaNormalizer(selection).forAll(function (row, col) {
261
- arrayEach(_this4.savedBorders, function (border) {
262
- if (border.row === row && border.col === col) {
263
- selectedBorders.push(denormalizeBorder(border));
264
- }
265
- });
266
- });
285
+ var _selectionSchemaNorma3 = selectionSchemaNormalizer(selection),
286
+ _selectionSchemaNorma4 = _slicedToArray(_selectionSchemaNorma3, 4),
287
+ rowStart = _selectionSchemaNorma4[0],
288
+ columnStart = _selectionSchemaNorma4[1],
289
+ rowEnd = _selectionSchemaNorma4[2],
290
+ columnEnd = _selectionSchemaNorma4[3];
291
+ var _loop3 = function _loop3(row) {
292
+ var _loop4 = function _loop4(col) {
293
+ arrayEach(_this4.savedBorders, function (border) {
294
+ if (border.row === row && border.col === col) {
295
+ selectedBorders.push(denormalizeBorder(border));
296
+ }
297
+ });
298
+ };
299
+ for (var col = columnStart; col <= columnEnd; col += 1) {
300
+ _loop4(col);
301
+ }
302
+ };
303
+ for (var row = rowStart; row <= rowEnd; row += 1) {
304
+ _loop3(row);
305
+ }
267
306
  });
268
307
  return selectedBorders;
269
308
  }
@@ -688,12 +727,10 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
688
727
  }, {
689
728
  key: "checkCustomSelectionsFromContextMenu",
690
729
  value: function checkCustomSelectionsFromContextMenu(border, place, remove) {
691
- var _this12 = this;
692
730
  var check = false;
693
731
  arrayEach(this.hot.selection.highlight.customSelections, function (customSelection) {
694
732
  if (border.id === customSelection.settings.id) {
695
- var borders = _this12.hot.view._wt.selectionManager.getBorderInstances(customSelection);
696
- arrayEach(borders, function (borderObject) {
733
+ objectEach(customSelection.instanceBorders, function (borderObject) {
697
734
  borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
698
735
  });
699
736
 
@@ -718,7 +755,6 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
718
755
  }, {
719
756
  key: "checkCustomSelections",
720
757
  value: function checkCustomSelections(border, cellRange, place) {
721
- var _this13 = this;
722
758
  var hideCount = this.countHide(border);
723
759
  var check = false;
724
760
  if (hideCount === 4) {
@@ -730,8 +766,7 @@ export var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
730
766
  customSelection.visualCellRange = cellRange;
731
767
  customSelection.commit();
732
768
  if (place) {
733
- var borders = _this13.hot.view._wt.selectionManager.getBorderInstances(customSelection);
734
- arrayEach(borders, function (borderObject) {
769
+ objectEach(customSelection.instanceBorders, function (borderObject) {
735
770
  borderObject.changeBorderStyle(place, border);
736
771
  });
737
772
  }
@@ -243,6 +243,9 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
243
243
  this.addHook('afterDrawSelection', function () {
244
244
  return _this2.onAfterDrawSelection.apply(_this2, arguments);
245
245
  });
246
+ this.addHook('beforeRemoveCellClassNames', function () {
247
+ return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
248
+ });
246
249
  this.addHook('beforeUndoStackChange', function (action, source) {
247
250
  if (source === 'MergeCells') {
248
251
  return false;
@@ -659,11 +662,8 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
659
662
  gridContext.addShortcut({
660
663
  keys: [['Control', 'm']],
661
664
  callback: function callback() {
662
- var range = _this7.hot.getSelectedRangeLast();
663
- if (range && !range.isSingleHeader()) {
664
- _this7.toggleMerge(range);
665
- _this7.hot.render();
666
- }
665
+ _this7.toggleMerge(_this7.hot.getSelectedRangeLast());
666
+ _this7.hot.render();
667
667
  },
668
668
  runOnlyIf: function runOnlyIf(event) {
669
669
  return !event.altKey;
@@ -1340,6 +1340,19 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1340
1340
  }
1341
1341
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1342
1342
  }
1343
+
1344
+ /**
1345
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1346
+ *
1347
+ * @private
1348
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1349
+ * all the cells in the table.
1350
+ */
1351
+ }, {
1352
+ key: "onBeforeRemoveCellClassNames",
1353
+ value: function onBeforeRemoveCellClassNames() {
1354
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1355
+ }
1343
1356
  }], [{
1344
1357
  key: "PLUGIN_KEY",
1345
1358
  get: function get() {
@@ -236,6 +236,9 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
236
236
  this.addHook('afterDrawSelection', function () {
237
237
  return _this2.onAfterDrawSelection.apply(_this2, arguments);
238
238
  });
239
+ this.addHook('beforeRemoveCellClassNames', function () {
240
+ return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
241
+ });
239
242
  this.addHook('beforeUndoStackChange', function (action, source) {
240
243
  if (source === 'MergeCells') {
241
244
  return false;
@@ -652,11 +655,8 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
652
655
  gridContext.addShortcut({
653
656
  keys: [['Control', 'm']],
654
657
  callback: function callback() {
655
- var range = _this7.hot.getSelectedRangeLast();
656
- if (range && !range.isSingleHeader()) {
657
- _this7.toggleMerge(range);
658
- _this7.hot.render();
659
- }
658
+ _this7.toggleMerge(_this7.hot.getSelectedRangeLast());
659
+ _this7.hot.render();
660
660
  },
661
661
  runOnlyIf: function runOnlyIf(event) {
662
662
  return !event.altKey;
@@ -1333,6 +1333,19 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1333
1333
  }
1334
1334
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1335
1335
  }
1336
+
1337
+ /**
1338
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1339
+ *
1340
+ * @private
1341
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1342
+ * all the cells in the table.
1343
+ */
1344
+ }, {
1345
+ key: "onBeforeRemoveCellClassNames",
1346
+ value: function onBeforeRemoveCellClassNames() {
1347
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1348
+ }
1336
1349
  }], [{
1337
1350
  key: "PLUGIN_KEY",
1338
1351
  get: function get() {