handsontable 0.0.0-next-bfaf0f9-20230613 → 0.0.0-next-ea1e0b3-20230620

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 (236) 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 +9243 -11930
  52. package/dist/handsontable.full.min.css +3 -3
  53. package/dist/handsontable.full.min.js +107 -107
  54. package/dist/handsontable.js +12402 -15089
  55. package/dist/handsontable.min.css +3 -3
  56. package/dist/handsontable.min.js +4 -4
  57. package/editorManager.js +94 -21
  58. package/editorManager.mjs +98 -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/manualColumnResize/manualColumnResize.js +36 -5
  79. package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
  80. package/plugins/manualRowResize/manualRowResize.js +40 -9
  81. package/plugins/manualRowResize/manualRowResize.mjs +40 -9
  82. package/plugins/mergeCells/mergeCells.js +18 -5
  83. package/plugins/mergeCells/mergeCells.mjs +18 -5
  84. package/plugins/nestedHeaders/nestedHeaders.js +10 -132
  85. package/plugins/nestedHeaders/nestedHeaders.mjs +10 -132
  86. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  87. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  88. package/plugins/nestedRows/nestedRows.js +7 -52
  89. package/plugins/nestedRows/nestedRows.mjs +7 -52
  90. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  91. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  92. package/selection/highlight/constants.js +16 -0
  93. package/selection/highlight/constants.mjs +6 -0
  94. package/selection/highlight/highlight.js +89 -312
  95. package/selection/highlight/highlight.mjs +85 -302
  96. package/selection/highlight/types/activeHeader.js +9 -10
  97. package/selection/highlight/types/activeHeader.mjs +8 -10
  98. package/selection/highlight/types/area.js +27 -12
  99. package/selection/highlight/types/area.mjs +30 -16
  100. package/selection/highlight/types/{focus.js → cell.js} +8 -5
  101. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  102. package/selection/highlight/types/customSelection.js +10 -7
  103. package/selection/highlight/types/customSelection.mjs +9 -7
  104. package/selection/highlight/types/fill.js +8 -5
  105. package/selection/highlight/types/fill.mjs +7 -5
  106. package/selection/highlight/types/header.js +20 -10
  107. package/selection/highlight/types/header.mjs +19 -10
  108. package/selection/highlight/types/{row.js → index.js} +31 -27
  109. package/selection/highlight/types/{row.mjs → index.mjs} +29 -24
  110. package/selection/highlight/visualSelection.js +27 -31
  111. package/selection/highlight/visualSelection.mjs +27 -31
  112. package/selection/index.js +7 -4
  113. package/selection/index.mjs +3 -2
  114. package/selection/mouseEventHandler.js +1 -1
  115. package/selection/mouseEventHandler.mjs +1 -1
  116. package/selection/range.js +8 -8
  117. package/selection/range.mjs +8 -8
  118. package/selection/selection.js +181 -315
  119. package/selection/selection.mjs +180 -310
  120. package/selection/transformation.js +96 -233
  121. package/selection/transformation.mjs +93 -230
  122. package/selection/utils.js +36 -12
  123. package/selection/utils.mjs +36 -13
  124. package/settings.d.ts +0 -1
  125. package/shortcuts/manager.js +0 -2
  126. package/shortcuts/manager.mjs +0 -2
  127. package/tableView.js +9 -58
  128. package/tableView.mjs +9 -58
  129. package/translations/indexMapper.js +7 -56
  130. package/translations/indexMapper.mjs +8 -56
  131. package/3rdparty/walkontable/src/selection/border/constants.js +0 -18
  132. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -13
  133. package/3rdparty/walkontable/src/selection/constants.js +0 -63
  134. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  135. package/3rdparty/walkontable/src/selection/index.js +0 -30
  136. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  137. package/3rdparty/walkontable/src/selection/manager.js +0 -329
  138. package/3rdparty/walkontable/src/selection/manager.mjs +0 -323
  139. package/3rdparty/walkontable/src/selection/scanner.js +0 -364
  140. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -360
  141. package/3rdparty/walkontable/src/selection/selection.js +0 -133
  142. package/3rdparty/walkontable/src/selection/selection.mjs +0 -127
  143. package/selection/highlight/types/areaLayered.js +0 -54
  144. package/selection/highlight/types/areaLayered.mjs +0 -49
  145. package/selection/highlight/types/column.js +0 -50
  146. package/selection/highlight/types/column.mjs +0 -45
  147. package/shortcutContexts/commands/editor/closeAndSave.js +0 -15
  148. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -10
  149. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -13
  150. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  151. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  152. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -11
  153. package/shortcutContexts/commands/editor/index.js +0 -16
  154. package/shortcutContexts/commands/editor/index.mjs +0 -12
  155. package/shortcutContexts/commands/editor/open.js +0 -29
  156. package/shortcutContexts/commands/editor/open.mjs +0 -24
  157. package/shortcutContexts/commands/emptySelectedCells.js +0 -12
  158. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  159. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  160. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -10
  161. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  162. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -16
  163. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  164. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  165. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  166. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -10
  167. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  168. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -10
  169. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  170. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -14
  171. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -22
  172. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -17
  173. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -17
  174. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -12
  175. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -17
  176. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -12
  177. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -40
  178. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -35
  179. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -40
  180. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -35
  181. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -22
  182. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -17
  183. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  184. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -14
  185. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  186. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -10
  187. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  188. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -16
  189. package/shortcutContexts/commands/index.js +0 -52
  190. package/shortcutContexts/commands/index.mjs +0 -48
  191. package/shortcutContexts/commands/moveCellSelection/down.js +0 -12
  192. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -7
  193. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -29
  194. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -24
  195. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  196. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  197. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -13
  198. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  199. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -13
  200. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  201. package/shortcutContexts/commands/moveCellSelection/left.js +0 -11
  202. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  203. package/shortcutContexts/commands/moveCellSelection/right.js +0 -11
  204. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  205. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -16
  206. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -11
  207. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -17
  208. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -12
  209. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -13
  210. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -8
  211. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -16
  212. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -11
  213. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -36
  214. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -31
  215. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -36
  216. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -31
  217. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -16
  218. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -11
  219. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -18
  220. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -13
  221. package/shortcutContexts/commands/moveCellSelection/up.js +0 -12
  222. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -7
  223. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -29
  224. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -24
  225. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -35
  226. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -30
  227. package/shortcutContexts/commands/selectAll.js +0 -11
  228. package/shortcutContexts/commands/selectAll.mjs +0 -6
  229. package/shortcutContexts/constants.js +0 -19
  230. package/shortcutContexts/constants.mjs +0 -12
  231. package/shortcutContexts/editor.js +0 -29
  232. package/shortcutContexts/editor.mjs +0 -25
  233. package/shortcutContexts/grid.js +0 -244
  234. package/shortcutContexts/grid.mjs +0 -240
  235. package/shortcutContexts/index.js +0 -29
  236. 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
  }
@@ -87,6 +87,7 @@ var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
87
87
  _this.guide = rootDocument.createElement('DIV');
88
88
  _this.eventManager = new _eventManager.default(_assertThisInitialized(_this));
89
89
  _this.pressed = null;
90
+ _this.isTriggeredByRMB = false;
90
91
  _this.dblclick = 0;
91
92
  _this.autoresizeTimeout = null;
92
93
 
@@ -437,6 +438,11 @@ var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
437
438
  if ((0, _element.isDetached)(event.target)) {
438
439
  return;
439
440
  }
441
+
442
+ // A "mouseover" action is triggered right after executing "contextmenu" event. It should be ignored.
443
+ if (this.isTriggeredByRMB === true) {
444
+ return;
445
+ }
440
446
  if (this.checkIfColumnHeader(event.target)) {
441
447
  var th = this.getClosestTHParent(event.target);
442
448
  if (!th) {
@@ -593,6 +599,28 @@ var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
593
599
  }
594
600
  }
595
601
 
602
+ /**
603
+ * Callback for "contextmenu" event triggered on element showing move handle. It removes handle and guide elements.
604
+ *
605
+ * @private
606
+ */
607
+ }, {
608
+ key: "onContextMenu",
609
+ value: function onContextMenu() {
610
+ var _this9 = this;
611
+ this.hideHandleAndGuide();
612
+ this.hot.rootElement.removeChild(this.handle);
613
+ this.hot.rootElement.removeChild(this.guide);
614
+ this.pressed = false;
615
+ this.isTriggeredByRMB = true;
616
+
617
+ // There is thrown "mouseover" event right after opening a context menu. This flag inform that handle
618
+ // shouldn't be drawn just after removing it.
619
+ this.hot._registerImmediate(function () {
620
+ _this9.isTriggeredByRMB = false;
621
+ });
622
+ }
623
+
596
624
  /**
597
625
  * Binds the mouse events.
598
626
  *
@@ -601,21 +629,24 @@ var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
601
629
  }, {
602
630
  key: "bindEvents",
603
631
  value: function bindEvents() {
604
- var _this9 = this;
632
+ var _this10 = this;
605
633
  var _this$hot = this.hot,
606
634
  rootWindow = _this$hot.rootWindow,
607
635
  rootElement = _this$hot.rootElement;
608
636
  this.eventManager.addEventListener(rootElement, 'mouseover', function (e) {
609
- return _this9.onMouseOver(e);
637
+ return _this10.onMouseOver(e);
610
638
  });
611
639
  this.eventManager.addEventListener(rootElement, 'mousedown', function (e) {
612
- return _this9.onMouseDown(e);
640
+ return _this10.onMouseDown(e);
613
641
  });
614
642
  this.eventManager.addEventListener(rootWindow, 'mousemove', function (e) {
615
- return _this9.onMouseMove(e);
643
+ return _this10.onMouseMove(e);
616
644
  });
617
645
  this.eventManager.addEventListener(rootWindow, 'mouseup', function () {
618
- return _this9.onMouseUp();
646
+ return _this10.onMouseUp();
647
+ });
648
+ this.eventManager.addEventListener(this.handle, 'contextmenu', function () {
649
+ return _this10.onContextMenu();
619
650
  });
620
651
  }
621
652
 
@@ -78,6 +78,7 @@ export var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
78
78
  _this.guide = rootDocument.createElement('DIV');
79
79
  _this.eventManager = new EventManager(_assertThisInitialized(_this));
80
80
  _this.pressed = null;
81
+ _this.isTriggeredByRMB = false;
81
82
  _this.dblclick = 0;
82
83
  _this.autoresizeTimeout = null;
83
84
 
@@ -428,6 +429,11 @@ export var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
428
429
  if (isDetached(event.target)) {
429
430
  return;
430
431
  }
432
+
433
+ // A "mouseover" action is triggered right after executing "contextmenu" event. It should be ignored.
434
+ if (this.isTriggeredByRMB === true) {
435
+ return;
436
+ }
431
437
  if (this.checkIfColumnHeader(event.target)) {
432
438
  var th = this.getClosestTHParent(event.target);
433
439
  if (!th) {
@@ -584,6 +590,28 @@ export var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
584
590
  }
585
591
  }
586
592
 
593
+ /**
594
+ * Callback for "contextmenu" event triggered on element showing move handle. It removes handle and guide elements.
595
+ *
596
+ * @private
597
+ */
598
+ }, {
599
+ key: "onContextMenu",
600
+ value: function onContextMenu() {
601
+ var _this9 = this;
602
+ this.hideHandleAndGuide();
603
+ this.hot.rootElement.removeChild(this.handle);
604
+ this.hot.rootElement.removeChild(this.guide);
605
+ this.pressed = false;
606
+ this.isTriggeredByRMB = true;
607
+
608
+ // There is thrown "mouseover" event right after opening a context menu. This flag inform that handle
609
+ // shouldn't be drawn just after removing it.
610
+ this.hot._registerImmediate(function () {
611
+ _this9.isTriggeredByRMB = false;
612
+ });
613
+ }
614
+
587
615
  /**
588
616
  * Binds the mouse events.
589
617
  *
@@ -592,21 +620,24 @@ export var ManualColumnResize = /*#__PURE__*/function (_BasePlugin) {
592
620
  }, {
593
621
  key: "bindEvents",
594
622
  value: function bindEvents() {
595
- var _this9 = this;
623
+ var _this10 = this;
596
624
  var _this$hot = this.hot,
597
625
  rootWindow = _this$hot.rootWindow,
598
626
  rootElement = _this$hot.rootElement;
599
627
  this.eventManager.addEventListener(rootElement, 'mouseover', function (e) {
600
- return _this9.onMouseOver(e);
628
+ return _this10.onMouseOver(e);
601
629
  });
602
630
  this.eventManager.addEventListener(rootElement, 'mousedown', function (e) {
603
- return _this9.onMouseDown(e);
631
+ return _this10.onMouseDown(e);
604
632
  });
605
633
  this.eventManager.addEventListener(rootWindow, 'mousemove', function (e) {
606
- return _this9.onMouseMove(e);
634
+ return _this10.onMouseMove(e);
607
635
  });
608
636
  this.eventManager.addEventListener(rootWindow, 'mouseup', function () {
609
- return _this9.onMouseUp();
637
+ return _this10.onMouseUp();
638
+ });
639
+ this.eventManager.addEventListener(this.handle, 'contextmenu', function () {
640
+ return _this10.onContextMenu();
610
641
  });
611
642
  }
612
643
 
@@ -88,6 +88,7 @@ var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
88
88
  _this.guide = rootDocument.createElement('DIV');
89
89
  _this.eventManager = new _eventManager.default(_assertThisInitialized(_this));
90
90
  _this.pressed = null;
91
+ _this.isTriggeredByRMB = false;
91
92
  _this.dblclick = 0;
92
93
  _this.autoresizeTimeout = null;
93
94
 
@@ -409,6 +410,11 @@ var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
409
410
  if ((0, _element.isDetached)(event.target)) {
410
411
  return;
411
412
  }
413
+
414
+ // A "mouseover" action is triggered right after executing "contextmenu" event. It should be ignored.
415
+ if (this.isTriggeredByRMB === true) {
416
+ return;
417
+ }
412
418
  if (this.checkIfRowHeader(event.target)) {
413
419
  var th = this.getClosestTHParent(event.target);
414
420
  if (th) {
@@ -555,6 +561,28 @@ var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
555
561
  }
556
562
  }
557
563
 
564
+ /**
565
+ * Callback for "contextmenu" event triggered on element showing move handle. It removes handle and guide elements.
566
+ *
567
+ * @private
568
+ */
569
+ }, {
570
+ key: "onContextMenu",
571
+ value: function onContextMenu() {
572
+ var _this8 = this;
573
+ this.hideHandleAndGuide();
574
+ this.hot.rootElement.removeChild(this.handle);
575
+ this.hot.rootElement.removeChild(this.guide);
576
+ this.pressed = false;
577
+ this.isTriggeredByRMB = true;
578
+
579
+ // There is thrown "mouseover" event right after opening a context menu. This flag inform that handle
580
+ // shouldn't be drawn just after removing it.
581
+ this.hot._registerImmediate(function () {
582
+ _this8.isTriggeredByRMB = false;
583
+ });
584
+ }
585
+
558
586
  /**
559
587
  * Binds the mouse events.
560
588
  *
@@ -563,21 +591,24 @@ var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
563
591
  }, {
564
592
  key: "bindEvents",
565
593
  value: function bindEvents() {
566
- var _this8 = this;
594
+ var _this9 = this;
567
595
  var _this$hot = this.hot,
568
596
  rootElement = _this$hot.rootElement,
569
597
  rootWindow = _this$hot.rootWindow;
570
598
  this.eventManager.addEventListener(rootElement, 'mouseover', function (e) {
571
- return _this8.onMouseOver(e);
599
+ return _this9.onMouseOver(e);
572
600
  });
573
601
  this.eventManager.addEventListener(rootElement, 'mousedown', function (e) {
574
- return _this8.onMouseDown(e);
602
+ return _this9.onMouseDown(e);
575
603
  });
576
604
  this.eventManager.addEventListener(rootWindow, 'mousemove', function (e) {
577
- return _this8.onMouseMove(e);
605
+ return _this9.onMouseMove(e);
578
606
  });
579
607
  this.eventManager.addEventListener(rootWindow, 'mouseup', function () {
580
- return _this8.onMouseUp();
608
+ return _this9.onMouseUp();
609
+ });
610
+ this.eventManager.addEventListener(this.handle, 'contextmenu', function () {
611
+ return _this9.onContextMenu();
581
612
  });
582
613
  }
583
614
 
@@ -611,23 +642,23 @@ var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
611
642
  }, {
612
643
  key: "onMapInit",
613
644
  value: function onMapInit() {
614
- var _this9 = this;
645
+ var _this10 = this;
615
646
  var priv = privatePool.get(this);
616
647
  var initialSetting = this.hot.getSettings()[PLUGIN_KEY];
617
648
  var loadedManualRowHeights = this.loadManualRowHeights();
618
649
  this.hot.batchExecution(function () {
619
650
  if (typeof loadedManualRowHeights !== 'undefined') {
620
651
  loadedManualRowHeights.forEach(function (height, index) {
621
- _this9.rowHeightsMap.setValueAtIndex(index, height);
652
+ _this10.rowHeightsMap.setValueAtIndex(index, height);
622
653
  });
623
654
  } else if (Array.isArray(initialSetting)) {
624
655
  initialSetting.forEach(function (height, index) {
625
- _this9.rowHeightsMap.setValueAtIndex(index, height);
656
+ _this10.rowHeightsMap.setValueAtIndex(index, height);
626
657
  });
627
658
  priv.config = initialSetting;
628
659
  } else if (initialSetting === true && Array.isArray(priv.config)) {
629
660
  priv.config.forEach(function (height, index) {
630
- _this9.rowHeightsMap.setValueAtIndex(index, height);
661
+ _this10.rowHeightsMap.setValueAtIndex(index, height);
631
662
  });
632
663
  }
633
664
  }, true);
@@ -79,6 +79,7 @@ export var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
79
79
  _this.guide = rootDocument.createElement('DIV');
80
80
  _this.eventManager = new EventManager(_assertThisInitialized(_this));
81
81
  _this.pressed = null;
82
+ _this.isTriggeredByRMB = false;
82
83
  _this.dblclick = 0;
83
84
  _this.autoresizeTimeout = null;
84
85
 
@@ -400,6 +401,11 @@ export var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
400
401
  if (isDetached(event.target)) {
401
402
  return;
402
403
  }
404
+
405
+ // A "mouseover" action is triggered right after executing "contextmenu" event. It should be ignored.
406
+ if (this.isTriggeredByRMB === true) {
407
+ return;
408
+ }
403
409
  if (this.checkIfRowHeader(event.target)) {
404
410
  var th = this.getClosestTHParent(event.target);
405
411
  if (th) {
@@ -546,6 +552,28 @@ export var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
546
552
  }
547
553
  }
548
554
 
555
+ /**
556
+ * Callback for "contextmenu" event triggered on element showing move handle. It removes handle and guide elements.
557
+ *
558
+ * @private
559
+ */
560
+ }, {
561
+ key: "onContextMenu",
562
+ value: function onContextMenu() {
563
+ var _this8 = this;
564
+ this.hideHandleAndGuide();
565
+ this.hot.rootElement.removeChild(this.handle);
566
+ this.hot.rootElement.removeChild(this.guide);
567
+ this.pressed = false;
568
+ this.isTriggeredByRMB = true;
569
+
570
+ // There is thrown "mouseover" event right after opening a context menu. This flag inform that handle
571
+ // shouldn't be drawn just after removing it.
572
+ this.hot._registerImmediate(function () {
573
+ _this8.isTriggeredByRMB = false;
574
+ });
575
+ }
576
+
549
577
  /**
550
578
  * Binds the mouse events.
551
579
  *
@@ -554,21 +582,24 @@ export var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
554
582
  }, {
555
583
  key: "bindEvents",
556
584
  value: function bindEvents() {
557
- var _this8 = this;
585
+ var _this9 = this;
558
586
  var _this$hot = this.hot,
559
587
  rootElement = _this$hot.rootElement,
560
588
  rootWindow = _this$hot.rootWindow;
561
589
  this.eventManager.addEventListener(rootElement, 'mouseover', function (e) {
562
- return _this8.onMouseOver(e);
590
+ return _this9.onMouseOver(e);
563
591
  });
564
592
  this.eventManager.addEventListener(rootElement, 'mousedown', function (e) {
565
- return _this8.onMouseDown(e);
593
+ return _this9.onMouseDown(e);
566
594
  });
567
595
  this.eventManager.addEventListener(rootWindow, 'mousemove', function (e) {
568
- return _this8.onMouseMove(e);
596
+ return _this9.onMouseMove(e);
569
597
  });
570
598
  this.eventManager.addEventListener(rootWindow, 'mouseup', function () {
571
- return _this8.onMouseUp();
599
+ return _this9.onMouseUp();
600
+ });
601
+ this.eventManager.addEventListener(this.handle, 'contextmenu', function () {
602
+ return _this9.onContextMenu();
572
603
  });
573
604
  }
574
605
 
@@ -602,23 +633,23 @@ export var ManualRowResize = /*#__PURE__*/function (_BasePlugin) {
602
633
  }, {
603
634
  key: "onMapInit",
604
635
  value: function onMapInit() {
605
- var _this9 = this;
636
+ var _this10 = this;
606
637
  var priv = privatePool.get(this);
607
638
  var initialSetting = this.hot.getSettings()[PLUGIN_KEY];
608
639
  var loadedManualRowHeights = this.loadManualRowHeights();
609
640
  this.hot.batchExecution(function () {
610
641
  if (typeof loadedManualRowHeights !== 'undefined') {
611
642
  loadedManualRowHeights.forEach(function (height, index) {
612
- _this9.rowHeightsMap.setValueAtIndex(index, height);
643
+ _this10.rowHeightsMap.setValueAtIndex(index, height);
613
644
  });
614
645
  } else if (Array.isArray(initialSetting)) {
615
646
  initialSetting.forEach(function (height, index) {
616
- _this9.rowHeightsMap.setValueAtIndex(index, height);
647
+ _this10.rowHeightsMap.setValueAtIndex(index, height);
617
648
  });
618
649
  priv.config = initialSetting;
619
650
  } else if (initialSetting === true && Array.isArray(priv.config)) {
620
651
  priv.config.forEach(function (height, index) {
621
- _this9.rowHeightsMap.setValueAtIndex(index, height);
652
+ _this10.rowHeightsMap.setValueAtIndex(index, height);
622
653
  });
623
654
  }
624
655
  }, true);
@@ -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() {