handsontable 0.0.0-next-bfaf0f9-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 +10172 -12934
  52. package/dist/handsontable.full.min.css +3 -3
  53. package/dist/handsontable.full.min.js +112 -112
  54. package/dist/handsontable.js +13116 -15878
  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/copyPaste/copyPaste.js +1 -5
  75. package/plugins/copyPaste/copyPaste.mjs +1 -5
  76. package/plugins/customBorders/customBorders.js +53 -18
  77. package/plugins/customBorders/customBorders.mjs +54 -19
  78. package/plugins/mergeCells/mergeCells.js +18 -5
  79. package/plugins/mergeCells/mergeCells.mjs +18 -5
  80. package/plugins/nestedHeaders/nestedHeaders.js +10 -132
  81. package/plugins/nestedHeaders/nestedHeaders.mjs +10 -132
  82. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  83. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  84. package/plugins/nestedRows/nestedRows.js +7 -52
  85. package/plugins/nestedRows/nestedRows.mjs +7 -52
  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
@@ -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() {
@@ -25,8 +25,8 @@ require("core-js/modules/es.weak-map.js");
25
25
  require("core-js/modules/web.dom-collections.iterator.js");
26
26
  var _element = require("../../helpers/dom/element");
27
27
  var _number = require("../../helpers/number");
28
- var _templateLiteralTag = require("../../helpers/templateLiteralTag");
29
28
  var _event = require("../../helpers/dom/event");
29
+ var _templateLiteralTag = require("../../helpers/templateLiteralTag");
30
30
  var _console = require("../../helpers/console");
31
31
  var _selection = require("../../selection");
32
32
  var _base = require("../base");
@@ -201,12 +201,6 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
201
201
  this.addHook('beforeOnCellMouseOver', function () {
202
202
  return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
203
203
  });
204
- this.addHook('modifyTransformStart', function () {
205
- return _this2.onModifyTransformStart.apply(_this2, arguments);
206
- });
207
- this.addHook('afterSelection', function () {
208
- return _this2.updateFocusHighlightPosition();
209
- });
210
204
  this.addHook('afterGetColumnHeaderRenderers', function (array) {
211
205
  return _this2.onAfterGetColumnHeaderRenderers(array);
212
206
  });
@@ -222,18 +216,9 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
222
216
  this.addHook('beforeCopy', function () {
223
217
  return _this2.onBeforeCopy.apply(_this2, arguments);
224
218
  });
225
- this.addHook('beforeSelectColumns', function () {
226
- return _this2.onBeforeSelectColumns.apply(_this2, arguments);
227
- });
228
219
  this.addHook('afterViewportColumnCalculatorOverride', function () {
229
220
  return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
230
221
  });
231
- this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
232
- return _this2.updateFocusHighlightPosition();
233
- });
234
- this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
235
- return _this2.updateFocusHighlightPosition();
236
- });
237
222
  _get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
238
223
  this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
239
224
  }
@@ -455,34 +440,6 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
455
440
  return this.hot.getColHeader(visualColumnIndex, headerLevel);
456
441
  }
457
442
 
458
- /**
459
- * Updates the selection focus highlight position to point to the nested header root element (TH)
460
- * even when the logical coordinates point in-between the header.
461
- *
462
- * @private
463
- */
464
- }, {
465
- key: "updateFocusHighlightPosition",
466
- value: function updateFocusHighlightPosition() {
467
- var _this$hot;
468
- var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
469
- if (!selection) {
470
- return;
471
- }
472
- var highlight = selection.highlight;
473
- var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
474
- if (isNestedHeadersRange) {
475
- var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
476
- var focusHighlight = this.hot.selection.highlight.getFocus();
477
-
478
- // Correct the highlight/focus selection to highlight the correct TH element
479
- focusHighlight.visualCellRange.highlight.col = columnIndex;
480
- focusHighlight.visualCellRange.from.col = columnIndex;
481
- focusHighlight.visualCellRange.to.col = columnIndex;
482
- focusHighlight.commit();
483
- }
484
- }
485
-
486
443
  /**
487
444
  * Allows to control which header DOM element will be used to highlight.
488
445
  *
@@ -499,7 +456,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
499
456
  if (!headerNodeData) {
500
457
  return visualColumn;
501
458
  }
502
- var columnCursor = highlightMeta.columnCursor,
459
+ var classNames = highlightMeta.classNames,
460
+ columnCursor = highlightMeta.columnCursor,
503
461
  selectionType = highlightMeta.selectionType,
504
462
  selectionWidth = highlightMeta.selectionWidth;
505
463
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -511,8 +469,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
511
469
  }
512
470
  } else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
513
471
  if (colspan > selectionWidth - columnCursor || !isRoot) {
514
- // Prevents adding any CSS class names to the TH element
515
- return null;
472
+ // Reset the class names array so the generated TH element won't be modified.
473
+ classNames.length = 0;
516
474
  }
517
475
  }
518
476
  return visualColumn;
@@ -643,7 +601,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
643
601
  }, {
644
602
  key: "onBeforeOnCellMouseOver",
645
603
  value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
646
- var _this$hot2;
604
+ var _this$hot;
647
605
  if (!this.hot.view.isMouseDown()) {
648
606
  return;
649
607
  }
@@ -664,93 +622,13 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
664
622
  controller.cell = true;
665
623
  var columnsToSelect = [];
666
624
  if (coords.col < from.col) {
667
- columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
625
+ columnsToSelect.push(bottomEndCoords.col, columnIndex);
668
626
  } else if (coords.col > from.col) {
669
- columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
627
+ columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
670
628
  } else {
671
- columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
672
- }
673
- (_this$hot2 = this.hot).selectColumns.apply(_this$hot2, columnsToSelect);
674
- }
675
-
676
- /**
677
- * `modifyTransformStart` hook is called every time the keyboard navigation is used.
678
- *
679
- * @private
680
- * @param {object} delta The transformation delta.
681
- */
682
- }, {
683
- key: "onModifyTransformStart",
684
- value: function onModifyTransformStart(delta) {
685
- var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
686
- highlight = _this$hot$getSelected.highlight;
687
- var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
688
- var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
689
- if (!isNestedHeadersRange) {
690
- return;
691
- }
692
- var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
693
- var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
694
- if (delta.col < 0) {
695
- var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
696
- var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
697
- if (notHiddenColumnIndex === null) {
698
- // There are no visible columns anymore, so move the selection out of the table edge. This will
699
- // be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
700
- delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
701
- } else {
702
- delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
703
- }
704
- } else if (delta.col > 0) {
705
- var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
706
- var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
707
- if (_notHiddenColumnIndex === null) {
708
- // There are no visible columns anymore, so move the selection out of the table edge. This will
709
- // be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
710
- delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
711
- } else {
712
- delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
713
- }
714
- }
715
- }
716
-
717
- /**
718
- * The hook observes the column selection from the Selection API and modifies the column range to
719
- * ensure that the whole nested column will be covered.
720
- *
721
- * @private
722
- * @param {*} from The coords object where the selection starts.
723
- * @param {*} to The coords object where the selection ends.
724
- */
725
- }, {
726
- key: "onBeforeSelectColumns",
727
- value: function onBeforeSelectColumns(from, to) {
728
- var headerLevel = from.row;
729
- var startNodeData = this._getHeaderTreeNodeDataByCoords({
730
- row: headerLevel,
731
- col: from.col
732
- });
733
- var endNodeData = this._getHeaderTreeNodeDataByCoords({
734
- row: headerLevel,
735
- col: to.col
736
- });
737
- if (to.col < from.col) {
738
- // Column selection from right to left
739
- if (startNodeData) {
740
- from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
741
- }
742
- if (endNodeData) {
743
- to.col = endNodeData.columnIndex;
744
- }
745
- } else if (to.col >= from.col) {
746
- // Column selection from left to right or a single column selection
747
- if (startNodeData) {
748
- from.col = startNodeData.columnIndex;
749
- }
750
- if (endNodeData) {
751
- to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
752
- }
629
+ columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
753
630
  }
631
+ (_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
754
632
  }
755
633
 
756
634
  /**
@@ -45,8 +45,8 @@ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!priva
45
45
  function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
46
46
  import { addClass, removeClass } from "../../helpers/dom/element.mjs";
47
47
  import { isNumeric } from "../../helpers/number.mjs";
48
- import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
49
48
  import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
49
+ import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
50
50
  import { warn } from "../../helpers/console.mjs";
51
51
  import { ACTIVE_HEADER_TYPE, HEADER_TYPE } from "../../selection/index.mjs";
52
52
  import { BasePlugin } from "../base/index.mjs";
@@ -194,12 +194,6 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
194
194
  this.addHook('beforeOnCellMouseOver', function () {
195
195
  return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
196
196
  });
197
- this.addHook('modifyTransformStart', function () {
198
- return _this2.onModifyTransformStart.apply(_this2, arguments);
199
- });
200
- this.addHook('afterSelection', function () {
201
- return _this2.updateFocusHighlightPosition();
202
- });
203
197
  this.addHook('afterGetColumnHeaderRenderers', function (array) {
204
198
  return _this2.onAfterGetColumnHeaderRenderers(array);
205
199
  });
@@ -215,18 +209,9 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
215
209
  this.addHook('beforeCopy', function () {
216
210
  return _this2.onBeforeCopy.apply(_this2, arguments);
217
211
  });
218
- this.addHook('beforeSelectColumns', function () {
219
- return _this2.onBeforeSelectColumns.apply(_this2, arguments);
220
- });
221
212
  this.addHook('afterViewportColumnCalculatorOverride', function () {
222
213
  return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
223
214
  });
224
- this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
225
- return _this2.updateFocusHighlightPosition();
226
- });
227
- this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
228
- return _this2.updateFocusHighlightPosition();
229
- });
230
215
  _get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
231
216
  this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
232
217
  }
@@ -448,34 +433,6 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
448
433
  return this.hot.getColHeader(visualColumnIndex, headerLevel);
449
434
  }
450
435
 
451
- /**
452
- * Updates the selection focus highlight position to point to the nested header root element (TH)
453
- * even when the logical coordinates point in-between the header.
454
- *
455
- * @private
456
- */
457
- }, {
458
- key: "updateFocusHighlightPosition",
459
- value: function updateFocusHighlightPosition() {
460
- var _this$hot;
461
- var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
462
- if (!selection) {
463
- return;
464
- }
465
- var highlight = selection.highlight;
466
- var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
467
- if (isNestedHeadersRange) {
468
- var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
469
- var focusHighlight = this.hot.selection.highlight.getFocus();
470
-
471
- // Correct the highlight/focus selection to highlight the correct TH element
472
- focusHighlight.visualCellRange.highlight.col = columnIndex;
473
- focusHighlight.visualCellRange.from.col = columnIndex;
474
- focusHighlight.visualCellRange.to.col = columnIndex;
475
- focusHighlight.commit();
476
- }
477
- }
478
-
479
436
  /**
480
437
  * Allows to control which header DOM element will be used to highlight.
481
438
  *
@@ -492,7 +449,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
492
449
  if (!headerNodeData) {
493
450
  return visualColumn;
494
451
  }
495
- var columnCursor = highlightMeta.columnCursor,
452
+ var classNames = highlightMeta.classNames,
453
+ columnCursor = highlightMeta.columnCursor,
496
454
  selectionType = highlightMeta.selectionType,
497
455
  selectionWidth = highlightMeta.selectionWidth;
498
456
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -504,8 +462,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
504
462
  }
505
463
  } else if (selectionType === ACTIVE_HEADER_TYPE) {
506
464
  if (colspan > selectionWidth - columnCursor || !isRoot) {
507
- // Prevents adding any CSS class names to the TH element
508
- return null;
465
+ // Reset the class names array so the generated TH element won't be modified.
466
+ classNames.length = 0;
509
467
  }
510
468
  }
511
469
  return visualColumn;
@@ -636,7 +594,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
636
594
  }, {
637
595
  key: "onBeforeOnCellMouseOver",
638
596
  value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
639
- var _this$hot2;
597
+ var _this$hot;
640
598
  if (!this.hot.view.isMouseDown()) {
641
599
  return;
642
600
  }
@@ -657,93 +615,13 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
657
615
  controller.cell = true;
658
616
  var columnsToSelect = [];
659
617
  if (coords.col < from.col) {
660
- columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
618
+ columnsToSelect.push(bottomEndCoords.col, columnIndex);
661
619
  } else if (coords.col > from.col) {
662
- columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
620
+ columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
663
621
  } else {
664
- columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
665
- }
666
- (_this$hot2 = this.hot).selectColumns.apply(_this$hot2, columnsToSelect);
667
- }
668
-
669
- /**
670
- * `modifyTransformStart` hook is called every time the keyboard navigation is used.
671
- *
672
- * @private
673
- * @param {object} delta The transformation delta.
674
- */
675
- }, {
676
- key: "onModifyTransformStart",
677
- value: function onModifyTransformStart(delta) {
678
- var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
679
- highlight = _this$hot$getSelected.highlight;
680
- var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
681
- var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
682
- if (!isNestedHeadersRange) {
683
- return;
684
- }
685
- var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
686
- var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
687
- if (delta.col < 0) {
688
- var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
689
- var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
690
- if (notHiddenColumnIndex === null) {
691
- // There are no visible columns anymore, so move the selection out of the table edge. This will
692
- // be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
693
- delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
694
- } else {
695
- delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
696
- }
697
- } else if (delta.col > 0) {
698
- var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
699
- var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
700
- if (_notHiddenColumnIndex === null) {
701
- // There are no visible columns anymore, so move the selection out of the table edge. This will
702
- // be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
703
- delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
704
- } else {
705
- delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
706
- }
707
- }
708
- }
709
-
710
- /**
711
- * The hook observes the column selection from the Selection API and modifies the column range to
712
- * ensure that the whole nested column will be covered.
713
- *
714
- * @private
715
- * @param {*} from The coords object where the selection starts.
716
- * @param {*} to The coords object where the selection ends.
717
- */
718
- }, {
719
- key: "onBeforeSelectColumns",
720
- value: function onBeforeSelectColumns(from, to) {
721
- var headerLevel = from.row;
722
- var startNodeData = this._getHeaderTreeNodeDataByCoords({
723
- row: headerLevel,
724
- col: from.col
725
- });
726
- var endNodeData = this._getHeaderTreeNodeDataByCoords({
727
- row: headerLevel,
728
- col: to.col
729
- });
730
- if (to.col < from.col) {
731
- // Column selection from right to left
732
- if (startNodeData) {
733
- from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
734
- }
735
- if (endNodeData) {
736
- to.col = endNodeData.columnIndex;
737
- }
738
- } else if (to.col >= from.col) {
739
- // Column selection from left to right or a single column selection
740
- if (startNodeData) {
741
- from.col = startNodeData.columnIndex;
742
- }
743
- if (endNodeData) {
744
- to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
745
- }
622
+ columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
746
623
  }
624
+ (_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
747
625
  }
748
626
 
749
627
  /**
@@ -416,43 +416,6 @@ var StateManager = /*#__PURE__*/function () {
416
416
  return stepBackColumn;
417
417
  }
418
418
 
419
- /**
420
- * The method is helpful in cases where the column index targets in-between currently
421
- * collapsed column. In that case, the method returns the right-most column index
422
- * where the nested header ends.
423
- *
424
- * @param {number} headerLevel Header level (there is support for negative and positive values).
425
- * @param {number} columnIndex A visual column index.
426
- * @returns {number}
427
- */
428
- }, {
429
- key: "findRightMostColumnIndex",
430
- value: function findRightMostColumnIndex(headerLevel, columnIndex) {
431
- var _this$getHeaderSettin3;
432
- var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
433
- isRoot: true,
434
- origColspan: 1
435
- },
436
- isRoot = _ref4.isRoot,
437
- origColspan = _ref4.origColspan;
438
- if (isRoot) {
439
- return columnIndex + origColspan - 1;
440
- }
441
- var stepForthColumn = columnIndex + 1;
442
- while (stepForthColumn < this.getColumnsCount()) {
443
- var _this$getHeaderSettin4;
444
- var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
445
- isRoot: true
446
- },
447
- isRootNode = _ref5.isRoot;
448
- if (isRootNode) {
449
- break;
450
- }
451
- stepForthColumn += 1;
452
- }
453
- return stepForthColumn - 1;
454
- }
455
-
456
419
  /**
457
420
  * Gets a total number of headers levels.
458
421
  *