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