handsontable 0.0.0-next-d1c8e0e-20230621 → 0.0.0-next-dcd0acc-20230621

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 (279) 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/core.d.ts +3 -5
  44. package/core.js +309 -127
  45. package/core.mjs +309 -127
  46. package/dataMap/metaManager/metaSchema.js +0 -19
  47. package/dataMap/metaManager/metaSchema.mjs +0 -19
  48. package/dist/handsontable.css +3 -8
  49. package/dist/handsontable.full.css +3 -8
  50. package/dist/handsontable.full.js +10651 -13658
  51. package/dist/handsontable.full.min.css +3 -3
  52. package/dist/handsontable.full.min.js +112 -112
  53. package/dist/handsontable.js +13425 -16432
  54. package/dist/handsontable.min.css +3 -3
  55. package/dist/handsontable.min.js +4 -4
  56. package/editorManager.js +94 -21
  57. package/editorManager.mjs +98 -26
  58. package/editors/textEditor/textEditor.js +11 -3
  59. package/editors/textEditor/textEditor.mjs +12 -4
  60. package/helpers/mixed.js +1 -1
  61. package/helpers/mixed.mjs +1 -1
  62. package/helpers/number.d.ts +0 -1
  63. package/helpers/number.js +0 -18
  64. package/helpers/number.mjs +0 -17
  65. package/package.json +1 -1
  66. package/pluginHooks.d.ts +1 -5
  67. package/pluginHooks.js +1 -89
  68. package/pluginHooks.mjs +1 -89
  69. package/plugins/collapsibleColumns/collapsibleColumns.js +24 -81
  70. package/plugins/collapsibleColumns/collapsibleColumns.mjs +24 -81
  71. package/plugins/columnSorting/columnSorting.js +8 -50
  72. package/plugins/columnSorting/columnSorting.mjs +9 -49
  73. package/plugins/columnSorting/index.js +2 -4
  74. package/plugins/columnSorting/index.mjs +1 -1
  75. package/plugins/comments/comments.js +4 -11
  76. package/plugins/comments/comments.mjs +4 -11
  77. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  78. package/plugins/contextMenu/contextMenu.js +29 -80
  79. package/plugins/contextMenu/contextMenu.mjs +30 -81
  80. package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
  81. package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
  82. package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
  83. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
  84. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
  85. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
  86. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
  87. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
  88. package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
  89. package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
  90. package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
  91. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
  92. package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
  93. package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
  94. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
  95. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
  96. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
  97. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
  98. package/plugins/contextMenu/utils.js +16 -25
  99. package/plugins/contextMenu/utils.mjs +15 -24
  100. package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
  101. package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
  102. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
  103. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
  104. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
  105. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
  106. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
  107. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
  108. package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
  109. package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
  110. package/plugins/copyPaste/copyPaste.js +1 -5
  111. package/plugins/copyPaste/copyPaste.mjs +1 -5
  112. package/plugins/customBorders/customBorders.js +53 -25
  113. package/plugins/customBorders/customBorders.mjs +54 -26
  114. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  115. package/plugins/dropdownMenu/dropdownMenu.js +30 -94
  116. package/plugins/dropdownMenu/dropdownMenu.mjs +30 -94
  117. package/plugins/filters/filters.js +42 -62
  118. package/plugins/filters/filters.mjs +41 -61
  119. package/plugins/mergeCells/mergeCells.js +18 -5
  120. package/plugins/mergeCells/mergeCells.mjs +18 -5
  121. package/plugins/multiColumnSorting/multiColumnSorting.js +3 -42
  122. package/plugins/multiColumnSorting/multiColumnSorting.mjs +3 -42
  123. package/plugins/nestedHeaders/nestedHeaders.js +10 -132
  124. package/plugins/nestedHeaders/nestedHeaders.mjs +10 -132
  125. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  126. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  127. package/plugins/nestedRows/nestedRows.js +7 -52
  128. package/plugins/nestedRows/nestedRows.mjs +7 -52
  129. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  130. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  131. package/selection/highlight/constants.js +16 -0
  132. package/selection/highlight/constants.mjs +6 -0
  133. package/selection/highlight/highlight.js +89 -312
  134. package/selection/highlight/highlight.mjs +85 -302
  135. package/selection/highlight/types/activeHeader.js +9 -10
  136. package/selection/highlight/types/activeHeader.mjs +8 -10
  137. package/selection/highlight/types/area.js +27 -12
  138. package/selection/highlight/types/area.mjs +30 -16
  139. package/selection/highlight/types/{focus.js → cell.js} +8 -5
  140. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  141. package/selection/highlight/types/customSelection.js +10 -7
  142. package/selection/highlight/types/customSelection.mjs +9 -7
  143. package/selection/highlight/types/fill.js +8 -5
  144. package/selection/highlight/types/fill.mjs +7 -5
  145. package/selection/highlight/types/header.js +20 -10
  146. package/selection/highlight/types/header.mjs +19 -10
  147. package/selection/highlight/types/{row.js → index.js} +31 -27
  148. package/selection/highlight/types/{row.mjs → index.mjs} +29 -24
  149. package/selection/highlight/visualSelection.js +27 -31
  150. package/selection/highlight/visualSelection.mjs +27 -31
  151. package/selection/index.js +7 -4
  152. package/selection/index.mjs +3 -2
  153. package/selection/mouseEventHandler.js +1 -1
  154. package/selection/mouseEventHandler.mjs +1 -1
  155. package/selection/range.js +8 -8
  156. package/selection/range.mjs +8 -8
  157. package/selection/selection.js +181 -315
  158. package/selection/selection.mjs +180 -310
  159. package/selection/transformation.js +96 -233
  160. package/selection/transformation.mjs +93 -230
  161. package/selection/utils.js +36 -12
  162. package/selection/utils.mjs +36 -13
  163. package/settings.d.ts +0 -1
  164. package/shortcuts/manager.js +0 -2
  165. package/shortcuts/manager.mjs +0 -2
  166. package/shortcuts/recorder.js +2 -2
  167. package/shortcuts/recorder.mjs +2 -2
  168. package/shortcuts/utils.js +5 -21
  169. package/shortcuts/utils.mjs +4 -20
  170. package/tableView.js +9 -58
  171. package/tableView.mjs +9 -58
  172. package/translations/indexMapper.js +9 -8
  173. package/translations/indexMapper.mjs +9 -8
  174. package/3rdparty/walkontable/src/selection/border/constants.js +0 -18
  175. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -13
  176. package/3rdparty/walkontable/src/selection/constants.js +0 -63
  177. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  178. package/3rdparty/walkontable/src/selection/index.js +0 -30
  179. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  180. package/3rdparty/walkontable/src/selection/manager.js +0 -329
  181. package/3rdparty/walkontable/src/selection/manager.mjs +0 -323
  182. package/3rdparty/walkontable/src/selection/scanner.js +0 -364
  183. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -360
  184. package/3rdparty/walkontable/src/selection/selection.js +0 -133
  185. package/3rdparty/walkontable/src/selection/selection.mjs +0 -127
  186. package/selection/highlight/types/areaLayered.js +0 -54
  187. package/selection/highlight/types/areaLayered.mjs +0 -49
  188. package/selection/highlight/types/column.js +0 -50
  189. package/selection/highlight/types/column.mjs +0 -45
  190. package/shortcutContexts/commands/editor/closeAndSave.js +0 -15
  191. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -10
  192. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -13
  193. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  194. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  195. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -11
  196. package/shortcutContexts/commands/editor/index.js +0 -16
  197. package/shortcutContexts/commands/editor/index.mjs +0 -12
  198. package/shortcutContexts/commands/editor/open.js +0 -29
  199. package/shortcutContexts/commands/editor/open.mjs +0 -24
  200. package/shortcutContexts/commands/emptySelectedCells.js +0 -12
  201. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  202. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  203. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -10
  204. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  205. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -16
  206. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  207. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  208. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  209. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -10
  210. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  211. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -10
  212. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  213. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -14
  214. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -22
  215. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -17
  216. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -17
  217. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -12
  218. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -17
  219. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -12
  220. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -40
  221. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -35
  222. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -40
  223. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -35
  224. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -22
  225. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -17
  226. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  227. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -14
  228. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  229. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -10
  230. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  231. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -16
  232. package/shortcutContexts/commands/index.js +0 -52
  233. package/shortcutContexts/commands/index.mjs +0 -48
  234. package/shortcutContexts/commands/moveCellSelection/down.js +0 -12
  235. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -7
  236. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -29
  237. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -24
  238. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  239. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  240. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -13
  241. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  242. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -13
  243. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  244. package/shortcutContexts/commands/moveCellSelection/left.js +0 -11
  245. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  246. package/shortcutContexts/commands/moveCellSelection/right.js +0 -11
  247. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  248. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -16
  249. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -11
  250. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -17
  251. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -12
  252. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -13
  253. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -8
  254. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -16
  255. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -11
  256. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -36
  257. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -31
  258. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -36
  259. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -31
  260. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -16
  261. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -11
  262. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -18
  263. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -13
  264. package/shortcutContexts/commands/moveCellSelection/up.js +0 -12
  265. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -7
  266. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -29
  267. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -24
  268. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -35
  269. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -30
  270. package/shortcutContexts/commands/selectAll.js +0 -11
  271. package/shortcutContexts/commands/selectAll.mjs +0 -6
  272. package/shortcutContexts/constants.js +0 -19
  273. package/shortcutContexts/constants.mjs +0 -12
  274. package/shortcutContexts/editor.js +0 -29
  275. package/shortcutContexts/editor.mjs +0 -25
  276. package/shortcutContexts/grid.js +0 -247
  277. package/shortcutContexts/grid.mjs +0 -243
  278. package/shortcutContexts/index.js +0 -29
  279. package/shortcutContexts/index.mjs +0 -15
@@ -1,5 +1,11 @@
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
2
  var _templateObject;
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+ 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."); }
5
+ 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); }
6
+ 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; }
7
+ 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; } }
8
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
3
9
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
4
10
  import "core-js/modules/es.array.iterator.js";
5
11
  import "core-js/modules/es.object.to-string.js";
@@ -20,22 +26,23 @@ import "core-js/modules/es.symbol.description.js";
20
26
  import "core-js/modules/es.array.slice.js";
21
27
  import "core-js/modules/es.object.freeze.js";
22
28
  import "core-js/modules/es.symbol.iterator.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.regexp.exec.js";
23
32
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24
33
  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); } }
25
34
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
26
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
35
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
28
36
  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); }
29
- import { CellCoords, CellRange } from "./../3rdparty/walkontable/src/index.mjs";
30
- import Highlight, { AREA_TYPE, HEADER_TYPE, FOCUS_TYPE } from "./highlight/highlight.mjs";
37
+ import Highlight from "./highlight/highlight.mjs";
38
+ import { AREA_TYPE, HEADER_TYPE, CELL_TYPE } from "./highlight/constants.mjs";
31
39
  import SelectionRange from "./range.mjs";
32
40
  import { createObjectPropListener, mixin } from "./../helpers/object.mjs";
33
41
  import { isUndefined } from "./../helpers/mixed.mjs";
34
- import { clamp } from "./../helpers/number.mjs";
35
42
  import { arrayEach } from "./../helpers/array.mjs";
36
43
  import localHooks from "./../mixins/localHooks.mjs";
37
44
  import Transformation from "./transformation.mjs";
38
- import { detectSelectionType, normalizeSelectionFactory, SELECTION_TYPE_EMPTY, SELECTION_TYPE_UNRECOGNIZED } from "./utils.mjs";
45
+ import { detectSelectionType, isValidCoord, normalizeSelectionFactory, SELECTION_TYPE_EMPTY, SELECTION_TYPE_UNRECOGNIZED } from "./utils.mjs";
39
46
  import { toSingleLine } from "./../helpers/templateLiteralTag.mjs";
40
47
  /**
41
48
  * @class Selection
@@ -50,62 +57,57 @@ var Selection = /*#__PURE__*/function () {
50
57
  *
51
58
  * @type {GridSettings}
52
59
  */
53
- _defineProperty(this, "settings", void 0);
60
+ this.settings = settings;
54
61
  /**
55
62
  * An additional object with dynamically defined properties which describes table state.
56
63
  *
57
64
  * @type {object}
58
65
  */
59
- _defineProperty(this, "tableProps", void 0);
66
+ this.tableProps = tableProps;
60
67
  /**
61
68
  * The flag which determines if the selection is in progress.
62
69
  *
63
70
  * @type {boolean}
64
71
  */
65
- _defineProperty(this, "inProgress", false);
72
+ this.inProgress = false;
66
73
  /**
67
- * Selection data layer (handle visual coordinates).
74
+ * The flag indicates that selection was performed by clicking the corner overlay.
68
75
  *
69
- * @type {SelectionRange}
76
+ * @type {boolean}
70
77
  */
71
- _defineProperty(this, "selectedRange", new SelectionRange(function (highlight, from, to) {
72
- return _this.tableProps.createCellRange(highlight, from, to);
73
- }));
78
+ this.selectedByCorner = false;
74
79
  /**
75
- * Visualization layer.
80
+ * The collection of the selection layer levels where the whole row was selected using the row header or
81
+ * the corner header.
76
82
  *
77
- * @type {Highlight}
83
+ * @type {Set.<number>}
78
84
  */
79
- _defineProperty(this, "highlight", void 0);
85
+ this.selectedByRowHeader = new Set();
80
86
  /**
81
- * The module for modifying coordinates.
87
+ * The collection of the selection layer levels where the whole column was selected using the column header or
88
+ * the corner header.
82
89
  *
83
- * @type {Transformation}
90
+ * @type {Set.<number>}
84
91
  */
85
- _defineProperty(this, "transformation", void 0);
92
+ this.selectedByColumnHeader = new Set();
86
93
  /**
87
- * The collection of the selection layer levels where the whole row was selected using the row header or
88
- * the corner header.
94
+ * Selection data layer (handle visual coordinates).
89
95
  *
90
- * @type {Set<number>}
96
+ * @type {SelectionRange}
91
97
  */
92
- _defineProperty(this, "selectedByRowHeader", new Set());
98
+ this.selectedRange = new SelectionRange(function (highlight, from, to) {
99
+ return _this.tableProps.createCellRange(highlight, from, to);
100
+ });
93
101
  /**
94
- * The collection of the selection layer levels where the whole column was selected using the column header or
95
- * the corner header.
102
+ * Visualization layer.
96
103
  *
97
- * @type {Set<number>}
104
+ * @type {Highlight}
98
105
  */
99
- _defineProperty(this, "selectedByColumnHeader", new Set());
100
- this.settings = settings;
101
- this.tableProps = tableProps;
102
106
  this.highlight = new Highlight({
103
107
  headerClassName: settings.currentHeaderClassName,
104
108
  activeHeaderClassName: settings.activeHeaderClassName,
105
109
  rowClassName: settings.currentRowClassName,
106
110
  columnClassName: settings.currentColClassName,
107
- rowIndexMapper: this.tableProps.rowIndexMapper,
108
- columnIndexMapper: this.tableProps.columnIndexMapper,
109
111
  disabledCellSelection: function disabledCellSelection(row, column) {
110
112
  return _this.tableProps.isDisabledCellSelection(row, column);
111
113
  },
@@ -126,22 +128,25 @@ var Selection = /*#__PURE__*/function () {
126
128
  },
127
129
  createCellRange: function createCellRange(highlight, from, to) {
128
130
  return _this.tableProps.createCellRange(highlight, from, to);
131
+ },
132
+ rowIndexMapper: function rowIndexMapper() {
133
+ return _this.tableProps.rowIndexMapper();
134
+ },
135
+ columnIndexMapper: function columnIndexMapper() {
136
+ return _this.tableProps.columnIndexMapper();
129
137
  }
130
138
  });
139
+ /**
140
+ * The module for modifying coordinates.
141
+ *
142
+ * @type {Transformation}
143
+ */
131
144
  this.transformation = new Transformation(this.selectedRange, {
132
- rowIndexMapper: this.tableProps.rowIndexMapper,
133
- columnIndexMapper: this.tableProps.columnIndexMapper,
134
- countRenderableRows: function countRenderableRows() {
135
- return _this.tableProps.countRenderableRows();
136
- },
137
- countRenderableColumns: function countRenderableColumns() {
138
- return _this.tableProps.countRenderableColumns();
139
- },
140
- countRowHeaders: function countRowHeaders() {
141
- return _this.tableProps.countRowHeaders();
145
+ countRows: function countRows() {
146
+ return _this.tableProps.countRowsTranslated();
142
147
  },
143
- countColHeaders: function countColHeaders() {
144
- return _this.tableProps.countColHeaders();
148
+ countCols: function countCols() {
149
+ return _this.tableProps.countColsTranslated();
145
150
  },
146
151
  visualToRenderableCoords: function visualToRenderableCoords(coords) {
147
152
  return _this.tableProps.visualToRenderableCoords(coords);
@@ -152,9 +157,6 @@ var Selection = /*#__PURE__*/function () {
152
157
  createCellCoords: function createCellCoords(row, column) {
153
158
  return _this.tableProps.createCellCoords(row, column);
154
159
  },
155
- navigableHeaders: function navigableHeaders() {
156
- return settings.navigableHeaders;
157
- },
158
160
  fixedRowsBottom: function fixedRowsBottom() {
159
161
  return settings.fixedRowsBottom;
160
162
  },
@@ -221,7 +223,7 @@ var Selection = /*#__PURE__*/function () {
221
223
  }
222
224
 
223
225
  /**
224
- * Indicate that selection process began. It sets internally `.inProgress` property to `true`.
226
+ * Indicate that selection process began. It sets internaly `.inProgress` property to `true`.
225
227
  */
226
228
  }, {
227
229
  key: "begin",
@@ -230,7 +232,7 @@ var Selection = /*#__PURE__*/function () {
230
232
  }
231
233
 
232
234
  /**
233
- * Indicate that selection process finished. It sets internally `.inProgress` property to `false`.
235
+ * Indicate that selection process finished. It sets internaly `.inProgress` property to `false`.
234
236
  */
235
237
  }, {
236
238
  key: "finish",
@@ -259,27 +261,35 @@ var Selection = /*#__PURE__*/function () {
259
261
  * the default trigger will be used.
260
262
  * @param {boolean} [fragment=false] If `true`, the selection will be treated as a partial selection where the
261
263
  * `setRangeEnd` method won't be called on every `setRangeStart` call.
262
- * @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
263
264
  */
264
265
  }, {
265
266
  key: "setRangeStart",
266
267
  value: function setRangeStart(coords, multipleSelection) {
267
268
  var fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
268
- var highlightCoords = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : coords;
269
269
  var isMultipleMode = this.settings.selectionMode === 'multiple';
270
270
  var isMultipleSelection = isUndefined(multipleSelection) ? this.tableProps.getShortcutManager().isCtrlPressed() : multipleSelection;
271
+ var isRowNegative = coords.row < 0;
272
+ var isColumnNegative = coords.col < 0;
273
+ var selectedByCorner = isRowNegative && isColumnNegative;
271
274
  // We are creating copy. We would like to modify just the start of the selection by below hook. Then original coords
272
275
  // should be handled by next methods.
273
276
  var coordsClone = coords.clone();
277
+ this.selectedByCorner = selectedByCorner;
274
278
  this.runLocalHooks("beforeSetRangeStart".concat(fragment ? 'Only' : ''), coordsClone);
275
279
  if (!isMultipleMode || isMultipleMode && !isMultipleSelection && isUndefined(multipleSelection)) {
276
280
  this.selectedRange.clear();
277
281
  }
278
- this.selectedRange.add(coordsClone).current().setHighlight(highlightCoords.clone());
282
+ this.selectedRange.add(coordsClone);
279
283
  if (this.getLayerLevel() === 0) {
280
284
  this.selectedByRowHeader.clear();
281
285
  this.selectedByColumnHeader.clear();
282
286
  }
287
+ if (!selectedByCorner && isColumnNegative) {
288
+ this.selectedByRowHeader.add(this.getLayerLevel());
289
+ }
290
+ if (!selectedByCorner && isRowNegative) {
291
+ this.selectedByColumnHeader.add(this.getLayerLevel());
292
+ }
283
293
  if (!fragment) {
284
294
  this.setRangeEnd(coords);
285
295
  }
@@ -292,13 +302,11 @@ var Selection = /*#__PURE__*/function () {
292
302
  * @param {boolean} [multipleSelection] If `true`, selection will be worked in 'multiple' mode. This option works
293
303
  * only when 'selectionMode' is set as 'multiple'. If the argument is not defined
294
304
  * the default trigger will be used.
295
- * @param {CellCoords} [highlightCoords] If set, allows changing the coordinates of the highlight/focus cell.
296
305
  */
297
306
  }, {
298
307
  key: "setRangeStartOnly",
299
308
  value: function setRangeStartOnly(coords, multipleSelection) {
300
- var highlightCoords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : coords;
301
- this.setRangeStart(coords, multipleSelection, true, highlightCoords);
309
+ this.setRangeStart(coords, multipleSelection, true);
302
310
  }
303
311
 
304
312
  /**
@@ -312,39 +320,21 @@ var Selection = /*#__PURE__*/function () {
312
320
  if (this.selectedRange.isEmpty()) {
313
321
  return;
314
322
  }
315
- var coordsClone = coords.clone();
316
- var countRows = this.tableProps.countRows();
317
- var countCols = this.tableProps.countCols();
318
- var isSingle = this.selectedRange.current().clone().setTo(coords).isSingleHeader();
319
323
 
320
- // Ignore processing the end range when the header selection starts overlapping the corner and
321
- // the selection is not a single header highlight.
322
- if ((countRows > 0 || countCols > 0) && (countRows === 0 && coordsClone.col < 0 && !isSingle || countCols === 0 && coordsClone.row < 0 && !isSingle)) {
323
- return;
324
- }
324
+ // We are creating copy. We would like to modify just the end of the selection by below hook. Then original coords
325
+ // should be handled by next methods.
326
+ var coordsClone = coords.clone();
325
327
  this.runLocalHooks('beforeSetRangeEnd', coordsClone);
326
328
  this.begin();
327
329
  var cellRange = this.selectedRange.current();
328
- if (!this.settings.navigableHeaders) {
329
- cellRange.highlight.normalize();
330
- }
331
- if (this.settings.selectionMode === 'single') {
332
- cellRange.setFrom(cellRange.highlight);
333
- cellRange.setTo(cellRange.highlight);
334
- } else {
335
- cellRange.setTo(coordsClone);
330
+ if (this.settings.selectionMode !== 'single') {
331
+ cellRange.setTo(this.tableProps.createCellCoords(coordsClone.row, coordsClone.col));
336
332
  }
337
333
 
338
- // Prevent creating "area" selection that overlaps headers.
339
- if (countRows > 0 && countCols > 0) {
340
- if (!this.settings.navigableHeaders || this.settings.navigableHeaders && !cellRange.isSingleHeader()) {
341
- cellRange.to.normalize();
342
- }
343
- }
344
- var focusHighlight = this.highlight.getFocus();
345
- focusHighlight.clear();
346
- if (this.highlight.isEnabledFor(FOCUS_TYPE, cellRange.highlight)) {
347
- focusHighlight.add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
334
+ // Set up current selection.
335
+ this.highlight.getCell().clear();
336
+ if (this.highlight.isEnabledFor(CELL_TYPE, cellRange.highlight)) {
337
+ this.highlight.getCell().add(this.selectedRange.current().highlight).commit().syncWith(cellRange);
348
338
  }
349
339
  var layerLevel = this.getLayerLevel();
350
340
 
@@ -354,96 +344,73 @@ var Selection = /*#__PURE__*/function () {
354
344
  arrayEach(this.highlight.getAreas(), function (highlight) {
355
345
  return void highlight.clear();
356
346
  });
357
- arrayEach(this.highlight.getLayeredAreas(), function (highlight) {
358
- return void highlight.clear();
359
- });
360
- arrayEach(this.highlight.getRowHeaders(), function (highlight) {
361
- return void highlight.clear();
362
- });
363
- arrayEach(this.highlight.getColumnHeaders(), function (highlight) {
364
- return void highlight.clear();
365
- });
366
- arrayEach(this.highlight.getActiveRowHeaders(), function (highlight) {
367
- return void highlight.clear();
368
- });
369
- arrayEach(this.highlight.getActiveColumnHeaders(), function (highlight) {
370
- return void highlight.clear();
371
- });
372
- arrayEach(this.highlight.getActiveCornerHeaders(), function (highlight) {
347
+ arrayEach(this.highlight.getHeaders(), function (highlight) {
373
348
  return void highlight.clear();
374
349
  });
375
- arrayEach(this.highlight.getRowHighlights(), function (highlight) {
376
- return void highlight.clear();
377
- });
378
- arrayEach(this.highlight.getColumnHighlights(), function (highlight) {
350
+ arrayEach(this.highlight.getActiveHeaders(), function (highlight) {
379
351
  return void highlight.clear();
380
352
  });
381
353
  }
382
354
  this.highlight.useLayerLevel(layerLevel);
383
- var areaHighlight = this.highlight.createArea();
384
- var layeredAreaHighlight = this.highlight.createLayeredArea();
385
- var rowHeaderHighlight = this.highlight.createRowHeader();
386
- var columnHeaderHighlight = this.highlight.createColumnHeader();
387
- var activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
388
- var activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
389
- var activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
390
- var rowHighlight = this.highlight.createRowHighlight();
391
- var columnHighlight = this.highlight.createColumnHighlight();
355
+ var areaHighlight = this.highlight.createOrGetArea();
356
+ var headerHighlight = this.highlight.createOrGetHeader();
357
+ var activeHeaderHighlight = this.highlight.createOrGetActiveHeader();
392
358
  areaHighlight.clear();
393
- layeredAreaHighlight.clear();
394
- rowHeaderHighlight.clear();
395
- columnHeaderHighlight.clear();
396
- activeRowHeaderHighlight.clear();
397
- activeColumnHeaderHighlight.clear();
398
- activeCornerHeaderHighlight.clear();
399
- rowHighlight.clear();
400
- columnHighlight.clear();
359
+ headerHighlight.clear();
360
+ activeHeaderHighlight.clear();
401
361
  if (this.highlight.isEnabledFor(AREA_TYPE, cellRange.highlight) && (this.isMultiple() || layerLevel >= 1)) {
402
362
  areaHighlight.add(cellRange.from).add(cellRange.to).commit();
403
- layeredAreaHighlight.add(cellRange.from).add(cellRange.to).commit();
404
363
  if (layerLevel === 1) {
405
364
  // For single cell selection in the same layer, we do not create area selection to prevent blue background.
406
365
  // When non-consecutive selection is performed we have to add that missing area selection to the previous layer
407
366
  // based on previous coordinates. It only occurs when the previous selection wasn't select multiple cells.
408
367
  var previousRange = this.selectedRange.previous();
409
- this.highlight.useLayerLevel(layerLevel - 1);
410
- this.highlight.createArea().add(previousRange.from).commit()
411
- // Range may start with hidden indexes. Commit would not found start point (as we add just the `from` coords).
412
- .syncWith(previousRange);
413
- this.highlight.createLayeredArea().add(previousRange.from).commit()
368
+ this.highlight.useLayerLevel(layerLevel - 1).createOrGetArea().add(previousRange.from).commit()
414
369
  // Range may start with hidden indexes. Commit would not found start point (as we add just the `from` coords).
415
370
  .syncWith(previousRange);
416
371
  this.highlight.useLayerLevel(layerLevel);
417
372
  }
418
373
  }
419
374
  if (this.highlight.isEnabledFor(HEADER_TYPE, cellRange.highlight)) {
420
- if (!cellRange.isSingleHeader()) {
421
- var rowCoordsFrom = this.tableProps.createCellCoords(Math.max(cellRange.from.row, 0), -1);
422
- var rowCoordsTo = this.tableProps.createCellCoords(cellRange.to.row, -1);
423
- var columnCoordsFrom = this.tableProps.createCellCoords(-1, Math.max(cellRange.from.col, 0));
424
- var columnCoordsTo = this.tableProps.createCellCoords(-1, cellRange.to.col);
425
- if (this.settings.selectionMode === 'single') {
426
- rowHeaderHighlight.add(rowCoordsFrom).commit();
427
- columnHeaderHighlight.add(columnCoordsFrom).commit();
428
- rowHighlight.add(rowCoordsFrom).commit();
429
- columnHighlight.add(columnCoordsFrom).commit();
430
- } else {
431
- rowHeaderHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
432
- columnHeaderHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
433
- rowHighlight.add(rowCoordsFrom).add(rowCoordsTo).commit();
434
- columnHighlight.add(columnCoordsFrom).add(columnCoordsTo).commit();
435
- }
375
+ // The header selection generally contains cell selection. In a case when all rows (or columns)
376
+ // are hidden that visual coordinates are translated to renderable coordinates that do not exist.
377
+ // Hence no header highlight is generated. In that case, to make a column (or a row) header
378
+ // highlight, the row and column index has to point to the header (the negative value). See #7052.
379
+ var areAnyRowsRendered = this.tableProps.countRowsTranslated() === 0;
380
+ var areAnyColumnsRendered = this.tableProps.countColsTranslated() === 0;
381
+ var headerCellRange = cellRange;
382
+ if (areAnyRowsRendered || areAnyColumnsRendered) {
383
+ headerCellRange = cellRange.clone();
436
384
  }
437
- var highlightRowHeaders = this.isEntireRowSelected() && (countCols > 0 && countCols === cellRange.getWidth() || countCols === 0 && (this.isSelectedByRowHeader() || this.isSelectedByCorner()));
438
- var highlightColumnHeaders = this.isEntireColumnSelected() && (countRows > 0 && countRows === cellRange.getHeight() || countRows === 0 && (this.isSelectedByColumnHeader() || this.isSelectedByCorner()));
439
- if (highlightRowHeaders) {
440
- activeRowHeaderHighlight.add(this.tableProps.createCellCoords(Math.max(cellRange.from.row, 0), Math.min(-this.tableProps.countRowHeaders(), -1))).add(this.tableProps.createCellCoords(Math.max(cellRange.to.row, 0), -1)).commit();
385
+ if (areAnyRowsRendered) {
386
+ headerCellRange.from.row = -1;
441
387
  }
442
- if (highlightColumnHeaders) {
443
- activeColumnHeaderHighlight.add(this.tableProps.createCellCoords(Math.min(-this.tableProps.countColHeaders(), -1), Math.max(cellRange.from.col, 0))).add(this.tableProps.createCellCoords(-1, Math.max(cellRange.to.col, 0))).commit();
388
+ if (areAnyColumnsRendered) {
389
+ headerCellRange.from.col = -1;
444
390
  }
445
- if (highlightRowHeaders && highlightColumnHeaders) {
446
- activeCornerHeaderHighlight.add(this.tableProps.createCellCoords(-this.tableProps.countColHeaders(), -this.tableProps.countRowHeaders())).add(this.tableProps.createCellCoords(-1, -1)).commit();
391
+ if (this.settings.selectionMode === 'single') {
392
+ if (this.isSelectedByAnyHeader()) {
393
+ headerCellRange.from.normalize();
394
+ }
395
+ headerHighlight.add(headerCellRange.from).commit();
396
+ } else {
397
+ headerHighlight.add(headerCellRange.from).add(headerCellRange.to).commit();
398
+ }
399
+ if (this.isEntireRowSelected()) {
400
+ var isRowSelected = this.tableProps.countCols() === cellRange.getWidth();
401
+
402
+ // Make sure that the whole row is selected (in case where selectionMode is set to 'single')
403
+ if (isRowSelected) {
404
+ activeHeaderHighlight.add(this.tableProps.createCellCoords(cellRange.from.row, -1)).add(this.tableProps.createCellCoords(cellRange.to.row, -1)).commit();
405
+ }
406
+ }
407
+ if (this.isEntireColumnSelected()) {
408
+ var isColumnSelected = this.tableProps.countRows() === cellRange.getHeight();
409
+
410
+ // Make sure that the whole column is selected (in case where selectionMode is set to 'single')
411
+ if (isColumnSelected) {
412
+ activeHeaderHighlight.add(this.tableProps.createCellCoords(-1, cellRange.from.col)).add(this.tableProps.createCellCoords(-1, cellRange.to.col)).commit();
413
+ }
447
414
  }
448
415
  }
449
416
  this.runLocalHooks('afterSetRangeEnd', coords);
@@ -468,14 +435,14 @@ var Selection = /*#__PURE__*/function () {
468
435
  *
469
436
  * @param {number} rowDelta Rows number to move, value can be passed as negative number.
470
437
  * @param {number} colDelta Columns number to move, value can be passed as negative number.
471
- * @param {boolean} [createMissingRecords=false] If `true` the new rows/columns will be created if necessary.
472
- * Otherwise, row/column will be created according to `minSpareRows/minSpareCols` settings of Handsontable.
438
+ * @param {boolean} [force=false] If `true` the new rows/columns will be created if necessary. Otherwise, row/column will
439
+ * be created according to `minSpareRows/minSpareCols` settings of Handsontable.
473
440
  */
474
441
  }, {
475
442
  key: "transformStart",
476
443
  value: function transformStart(rowDelta, colDelta) {
477
- var createMissingRecords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
478
- this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta, createMissingRecords));
444
+ var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
445
+ this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta, force));
479
446
  }
480
447
 
481
448
  /**
@@ -524,7 +491,7 @@ var Selection = /*#__PURE__*/function () {
524
491
  key: "isSelectedByRowHeader",
525
492
  value: function isSelectedByRowHeader() {
526
493
  var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
527
- return !this.isSelectedByCorner(layerLevel) && (layerLevel === -1 ? this.selectedByRowHeader.size > 0 : this.selectedByRowHeader.has(layerLevel));
494
+ return !this.isSelectedByCorner(layerLevel) && this.isEntireRowSelected(layerLevel);
528
495
  }
529
496
 
530
497
  /**
@@ -537,22 +504,8 @@ var Selection = /*#__PURE__*/function () {
537
504
  }, {
538
505
  key: "isEntireRowSelected",
539
506
  value: function isEntireRowSelected() {
540
- var _this2 = this;
541
507
  var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
542
- var tester = function tester(range) {
543
- var _range$getOuterTopSta = range.getOuterTopStartCorner(),
544
- col = _range$getOuterTopSta.col;
545
- var rowHeaders = _this2.tableProps.countRowHeaders();
546
- var countCols = _this2.tableProps.countCols();
547
- return (rowHeaders > 0 && col < 0 || rowHeaders === 0) && range.getWidth() === countCols;
548
- };
549
- if (layerLevel === -1) {
550
- return Array.from(this.selectedRange).some(function (range) {
551
- return tester(range);
552
- });
553
- }
554
- var range = this.selectedRange.peekByIndex(layerLevel);
555
- return range ? tester(range) : false;
508
+ return layerLevel === -1 ? this.selectedByRowHeader.size > 0 : this.selectedByRowHeader.has(layerLevel);
556
509
  }
557
510
 
558
511
  /**
@@ -567,7 +520,7 @@ var Selection = /*#__PURE__*/function () {
567
520
  key: "isSelectedByColumnHeader",
568
521
  value: function isSelectedByColumnHeader() {
569
522
  var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
570
- return !this.isSelectedByCorner() && (layerLevel === -1 ? this.selectedByColumnHeader.size > 0 : this.selectedByColumnHeader.has(layerLevel));
523
+ return !this.isSelectedByCorner() && this.isEntireColumnSelected(layerLevel);
571
524
  }
572
525
 
573
526
  /**
@@ -580,22 +533,8 @@ var Selection = /*#__PURE__*/function () {
580
533
  }, {
581
534
  key: "isEntireColumnSelected",
582
535
  value: function isEntireColumnSelected() {
583
- var _this3 = this;
584
536
  var layerLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getLayerLevel();
585
- var tester = function tester(range) {
586
- var _range$getOuterTopSta2 = range.getOuterTopStartCorner(),
587
- row = _range$getOuterTopSta2.row;
588
- var colHeaders = _this3.tableProps.countColHeaders();
589
- var countRows = _this3.tableProps.countRows();
590
- return (colHeaders > 0 && row < 0 || colHeaders === 0) && range.getHeight() === countRows;
591
- };
592
- if (layerLevel === -1) {
593
- return Array.from(this.selectedRange).some(function (range) {
594
- return tester(range);
595
- });
596
- }
597
- var range = this.selectedRange.peekByIndex(layerLevel);
598
- return range ? tester(range) : false;
537
+ return layerLevel === -1 ? this.selectedByColumnHeader.size > 0 : this.selectedByColumnHeader.has(layerLevel);
599
538
  }
600
539
 
601
540
  /**
@@ -617,7 +556,7 @@ var Selection = /*#__PURE__*/function () {
617
556
  }, {
618
557
  key: "isSelectedByCorner",
619
558
  value: function isSelectedByCorner() {
620
- return this.selectedByColumnHeader.has(this.getLayerLevel()) && this.selectedByRowHeader.has(this.getLayerLevel());
559
+ return this.selectedByCorner;
621
560
  }
622
561
 
623
562
  /**
@@ -686,49 +625,31 @@ var Selection = /*#__PURE__*/function () {
686
625
  }
687
626
 
688
627
  /**
689
- * Selects all cells and headers.
628
+ * Select all cells.
690
629
  *
691
- * @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
692
- * `false` otherwise.
693
- * @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
694
- * headers, `false` otherwise.
695
- * @param {{row: number, col: number}} [focusPosition] The argument allows changing the cell/header
696
- * focus position. The value takes an object with a `row` and `col` properties from -N to N, where
697
- * negative values point to the headers and positive values point to the cell range.
630
+ * @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers, `false`
631
+ * otherwise.
632
+ * @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column headers, `false`
633
+ * otherwise.
698
634
  */
699
635
  }, {
700
636
  key: "selectAll",
701
637
  value: function selectAll() {
702
638
  var includeRowHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
703
639
  var includeColumnHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
704
- var focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
705
- row: this.tableProps.countColHeaders() > 0 ? -this.tableProps.countColHeaders() : 0,
706
- col: this.tableProps.countRowHeaders() > 0 ? -this.tableProps.countRowHeaders() : 0
707
- };
708
640
  var nrOfRows = this.tableProps.countRows();
709
641
  var nrOfColumns = this.tableProps.countCols();
710
- var countRowHeaders = this.tableProps.countRowHeaders();
711
- var countColHeaders = this.tableProps.countColHeaders();
712
- var rowFrom = includeRowHeaders ? -countColHeaders : 0;
713
- var columnFrom = includeColumnHeaders ? -countRowHeaders : 0;
714
642
 
715
643
  // We can't select cells when there is no data.
716
- if (rowFrom === 0 && columnFrom === 0 && (nrOfRows === 0 || nrOfColumns === 0)) {
644
+ if (!includeRowHeaders && !includeColumnHeaders && (nrOfRows === 0 || nrOfColumns === 0)) {
717
645
  return;
718
646
  }
719
- var highlightRow = Number.isInteger(focusPosition.row) ? focusPosition.row : 0;
720
- var highlightColumn = Number.isInteger(focusPosition.col) ? focusPosition.col : 0;
721
- var startCoords = this.tableProps.createCellCoords(rowFrom, columnFrom);
722
- var highlight = this.tableProps.createCellCoords(clamp(highlightRow, rowFrom, nrOfRows - 1), clamp(highlightColumn, columnFrom, nrOfColumns - 1));
647
+ var startCoords = this.tableProps.createCellCoords(includeColumnHeaders ? -1 : 0, includeRowHeaders ? -1 : 0);
723
648
  var endCoords = this.tableProps.createCellCoords(nrOfRows - 1, nrOfColumns - 1);
724
649
  this.clear();
725
- this.setRangeStartOnly(startCoords, void 0, highlight);
726
- if (columnFrom < 0) {
727
- this.selectedByRowHeader.add(this.getLayerLevel());
728
- }
729
- if (rowFrom < 0) {
730
- this.selectedByColumnHeader.add(this.getLayerLevel());
731
- }
650
+ this.setRangeStartOnly(startCoords);
651
+ this.selectedByRowHeader.add(this.getLayerLevel());
652
+ this.selectedByColumnHeader.add(this.getLayerLevel());
732
653
  this.setRangeEnd(endCoords);
733
654
  this.finish();
734
655
  }
@@ -745,7 +666,7 @@ var Selection = /*#__PURE__*/function () {
745
666
  }, {
746
667
  key: "selectCells",
747
668
  value: function selectCells(selectionRanges) {
748
- var _this4 = this;
669
+ var _this2 = this;
749
670
  var selectionType = detectSelectionType(selectionRanges);
750
671
  if (selectionType === SELECTION_TYPE_EMPTY) {
751
672
  return false;
@@ -754,33 +675,36 @@ var Selection = /*#__PURE__*/function () {
754
675
  }
755
676
  var selectionSchemaNormalizer = normalizeSelectionFactory(selectionType, {
756
677
  propToCol: function propToCol(prop) {
757
- return _this4.tableProps.propToCol(prop);
678
+ return _this2.tableProps.propToCol(prop);
758
679
  },
759
680
  keepDirection: true
760
681
  });
761
- var navigableHeaders = this.settings.navigableHeaders;
762
- var tableParams = {
763
- countRows: this.tableProps.countRows(),
764
- countCols: this.tableProps.countCols(),
765
- countRowHeaders: navigableHeaders ? this.tableProps.countRowHeaders() : 0,
766
- countColHeaders: navigableHeaders ? this.tableProps.countColHeaders() : 0
767
- };
682
+ var nrOfRows = this.tableProps.countRows();
683
+ var nrOfColumns = this.tableProps.countCols();
768
684
 
769
685
  // Check if every layer of the coordinates are valid.
770
686
  var isValid = !selectionRanges.some(function (selection) {
771
- var cellRange = selectionSchemaNormalizer(selection);
772
- var rangeValidity = cellRange.isValid(tableParams);
773
- return !(rangeValidity && !cellRange.containsHeaders() || rangeValidity && cellRange.containsHeaders() && cellRange.isSingleHeader());
687
+ var _selectionSchemaNorma = selectionSchemaNormalizer(selection),
688
+ _selectionSchemaNorma2 = _slicedToArray(_selectionSchemaNorma, 4),
689
+ rowStart = _selectionSchemaNorma2[0],
690
+ columnStart = _selectionSchemaNorma2[1],
691
+ rowEnd = _selectionSchemaNorma2[2],
692
+ columnEnd = _selectionSchemaNorma2[3];
693
+ var _isValid = isValidCoord(rowStart, nrOfRows) && isValidCoord(columnStart, nrOfColumns) && isValidCoord(rowEnd, nrOfRows) && isValidCoord(columnEnd, nrOfColumns);
694
+ return !_isValid;
774
695
  });
775
696
  if (isValid) {
776
697
  this.clear();
777
698
  arrayEach(selectionRanges, function (selection) {
778
- var _selectionSchemaNorma = selectionSchemaNormalizer(selection),
779
- from = _selectionSchemaNorma.from,
780
- to = _selectionSchemaNorma.to;
781
- _this4.setRangeStartOnly(from.clone(), false);
782
- _this4.setRangeEnd(to.clone());
783
- _this4.finish();
699
+ var _selectionSchemaNorma3 = selectionSchemaNormalizer(selection),
700
+ _selectionSchemaNorma4 = _slicedToArray(_selectionSchemaNorma3, 4),
701
+ rowStart = _selectionSchemaNorma4[0],
702
+ columnStart = _selectionSchemaNorma4[1],
703
+ rowEnd = _selectionSchemaNorma4[2],
704
+ columnEnd = _selectionSchemaNorma4[3];
705
+ _this2.setRangeStartOnly(_this2.tableProps.createCellCoords(rowStart, columnStart), false);
706
+ _this2.setRangeEnd(_this2.tableProps.createCellCoords(rowEnd, columnEnd));
707
+ _this2.finish();
784
708
  });
785
709
  }
786
710
  return isValid;
@@ -792,45 +716,24 @@ var Selection = /*#__PURE__*/function () {
792
716
  *
793
717
  * @param {number|string} startColumn Visual column index or column property from which the selection starts.
794
718
  * @param {number|string} [endColumn] Visual column index or column property from to the selection finishes.
795
- * @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
796
- * The value can take visual row index from -N to N, where negative values
797
- * point to the headers and positive values point to the cell range.
719
+ * @param {number} [headerLevel=-1] A row header index that triggers the column selection. The value can
720
+ * take -1 to -N, where -1 means the header closest to the cells.
721
+ *
798
722
  * @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
799
723
  */
800
724
  }, {
801
725
  key: "selectColumns",
802
726
  value: function selectColumns(startColumn) {
803
727
  var endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;
804
- var focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
728
+ var headerLevel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
805
729
  var start = typeof startColumn === 'string' ? this.tableProps.propToCol(startColumn) : startColumn;
806
730
  var end = typeof endColumn === 'string' ? this.tableProps.propToCol(endColumn) : endColumn;
807
- var countRows = this.tableProps.countRows();
808
- var countCols = this.tableProps.countCols();
809
- var countColHeaders = this.tableProps.countColHeaders();
810
- var columnHeaderLastIndex = countColHeaders === 0 ? 0 : -countColHeaders;
811
- var fromCoords = new CellCoords(columnHeaderLastIndex, start);
812
- var toCoords = new CellCoords(countRows - 1, end);
813
- var isValid = new CellRange(fromCoords, fromCoords, toCoords).isValid({
814
- countRows: countRows,
815
- countCols: countCols,
816
- countRowHeaders: 0,
817
- countColHeaders: countColHeaders
818
- });
731
+ var nrOfColumns = this.tableProps.countCols();
732
+ var nrOfRows = this.tableProps.countRows();
733
+ var isValid = isValidCoord(start, nrOfColumns) && isValidCoord(end, nrOfColumns);
819
734
  if (isValid) {
820
- var fromRow = countColHeaders === 0 ? 0 : clamp(focusPosition, columnHeaderLastIndex, -1);
821
- var toRow = countRows - 1;
822
- var from = this.tableProps.createCellCoords(fromRow, start);
823
- var to = this.tableProps.createCellCoords(toRow, end);
824
- var highlight = this.tableProps.createCellCoords(clamp(focusPosition, columnHeaderLastIndex, countRows - 1), start);
825
- this.runLocalHooks('beforeSelectColumns', from, to, highlight);
826
-
827
- // disallow modifying row axis for that hooks
828
- from.row = fromRow;
829
- to.row = toRow;
830
- this.setRangeStartOnly(from, void 0, highlight);
831
- this.selectedByColumnHeader.add(this.getLayerLevel());
832
- this.setRangeEnd(to);
833
- this.runLocalHooks('afterSelectColumns', from, to, highlight);
735
+ this.setRangeStartOnly(this.tableProps.createCellCoords(headerLevel, start));
736
+ this.setRangeEnd(this.tableProps.createCellCoords(nrOfRows - 1, end));
834
737
  this.finish();
835
738
  }
836
739
  return isValid;
@@ -841,43 +744,22 @@ var Selection = /*#__PURE__*/function () {
841
744
  *
842
745
  * @param {number} startRow Visual row index from which the selection starts.
843
746
  * @param {number} [endRow] Visual row index from to the selection finishes.
844
- * @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
845
- * The value can take visual column index from -N to N, where negative values
846
- * point to the headers and positive values point to the cell range.
747
+ * @param {number} [headerLevel=-1] A column header index that triggers the row selection.
748
+ * The value can take -1 to -N, where -1 means the header
749
+ * closest to the cells.
847
750
  * @returns {boolean} Returns `true` if selection was successful, `false` otherwise.
848
751
  */
849
752
  }, {
850
753
  key: "selectRows",
851
754
  value: function selectRows(startRow) {
852
755
  var endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;
853
- var focusPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
854
- var countRows = this.tableProps.countRows();
855
- var countCols = this.tableProps.countCols();
856
- var countRowHeaders = this.tableProps.countRowHeaders();
857
- var rowHeaderLastIndex = countRowHeaders === 0 ? 0 : -countRowHeaders;
858
- var fromCoords = new CellCoords(startRow, rowHeaderLastIndex);
859
- var toCoords = new CellCoords(endRow, countCols - 1);
860
- var isValid = new CellRange(fromCoords, fromCoords, toCoords).isValid({
861
- countRows: countRows,
862
- countCols: countCols,
863
- countRowHeaders: countRowHeaders,
864
- countColHeaders: 0
865
- });
756
+ var headerLevel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
757
+ var nrOfRows = this.tableProps.countRows();
758
+ var nrOfColumns = this.tableProps.countCols();
759
+ var isValid = isValidCoord(startRow, nrOfRows) && isValidCoord(endRow, nrOfRows);
866
760
  if (isValid) {
867
- var fromColumn = countRowHeaders === 0 ? 0 : clamp(focusPosition, rowHeaderLastIndex, -1);
868
- var toColumn = countCols - 1;
869
- var from = this.tableProps.createCellCoords(startRow, fromColumn);
870
- var to = this.tableProps.createCellCoords(endRow, toColumn);
871
- var highlight = this.tableProps.createCellCoords(startRow, clamp(focusPosition, rowHeaderLastIndex, countCols - 1));
872
- this.runLocalHooks('beforeSelectRows', from, to, highlight);
873
-
874
- // disallow modifying column axis for that hooks
875
- from.col = fromColumn;
876
- to.col = toColumn;
877
- this.setRangeStartOnly(from, void 0, highlight);
878
- this.selectedByRowHeader.add(this.getLayerLevel());
879
- this.setRangeEnd(to);
880
- this.runLocalHooks('afterSelectRows', from, to, highlight);
761
+ this.setRangeStartOnly(this.tableProps.createCellCoords(startRow, headerLevel));
762
+ this.setRangeEnd(this.tableProps.createCellCoords(endRow, nrOfColumns - 1));
881
763
  this.finish();
882
764
  }
883
765
  return isValid;
@@ -896,31 +778,19 @@ var Selection = /*#__PURE__*/function () {
896
778
  if (!this.isSelected()) {
897
779
  return;
898
780
  }
899
- var focusHighlight = this.highlight.getFocus();
781
+ var cellHighlight = this.highlight.getCell();
900
782
  var currentLayer = this.getLayerLevel();
901
- focusHighlight.commit().syncWith(this.selectedRange.current());
783
+ cellHighlight.commit().syncWith(this.selectedRange.current());
902
784
 
903
785
  // Rewriting rendered ranges going through all layers.
904
786
  for (var layerLevel = 0; layerLevel < this.selectedRange.size(); layerLevel += 1) {
905
787
  this.highlight.useLayerLevel(layerLevel);
906
- var areaHighlight = this.highlight.createArea();
907
- var areaLayeredHighlight = this.highlight.createLayeredArea();
908
- var rowHeaderHighlight = this.highlight.createRowHeader();
909
- var columnHeaderHighlight = this.highlight.createColumnHeader();
910
- var activeRowHeaderHighlight = this.highlight.createActiveRowHeader();
911
- var activeColumnHeaderHighlight = this.highlight.createActiveColumnHeader();
912
- var activeCornerHeaderHighlight = this.highlight.createActiveCornerHeader();
913
- var rowHighlight = this.highlight.createRowHighlight();
914
- var columnHighlight = this.highlight.createColumnHighlight();
788
+ var areaHighlight = this.highlight.createOrGetArea();
789
+ var headerHighlight = this.highlight.createOrGetHeader();
790
+ var activeHeaderHighlight = this.highlight.createOrGetActiveHeader();
915
791
  areaHighlight.commit();
916
- areaLayeredHighlight.commit();
917
- rowHeaderHighlight.commit();
918
- columnHeaderHighlight.commit();
919
- activeRowHeaderHighlight.commit();
920
- activeColumnHeaderHighlight.commit();
921
- activeCornerHeaderHighlight.commit();
922
- rowHighlight.commit();
923
- columnHighlight.commit();
792
+ headerHighlight.commit();
793
+ activeHeaderHighlight.commit();
924
794
  }
925
795
 
926
796
  // Reverting starting layer for the Highlight.