handsontable 0.0.0-next-d1c8e0e-20230621 → 0.0.0-next-c765185-20230622
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.
- package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +12 -61
- package/3rdparty/walkontable/src/cell/coords.mjs +12 -61
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -44
- package/3rdparty/walkontable/src/cell/range.mjs +7 -44
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- package/3rdparty/walkontable/src/event.js +7 -7
- package/3rdparty/walkontable/src/event.mjs +7 -7
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +2 -10
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +4 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +4 -2
- package/3rdparty/walkontable/src/overlay/top.js +4 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +4 -2
- package/3rdparty/walkontable/src/selection.js +355 -0
- package/3rdparty/walkontable/src/selection.mjs +349 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +79 -7
- package/3rdparty/walkontable/src/table.mjs +80 -8
- package/CHANGELOG.md +31 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.d.ts +3 -5
- package/core.js +309 -127
- package/core.mjs +309 -127
- package/dataMap/metaManager/metaSchema.js +0 -19
- package/dataMap/metaManager/metaSchema.mjs +0 -19
- package/dist/handsontable.css +3 -8
- package/dist/handsontable.full.css +3 -8
- package/dist/handsontable.full.js +10826 -13821
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +115 -115
- package/dist/handsontable.js +13565 -16560
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +4 -4
- package/editorManager.js +94 -21
- package/editorManager.mjs +98 -26
- package/editors/textEditor/textEditor.js +11 -3
- package/editors/textEditor/textEditor.mjs +12 -4
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/package.json +1 -1
- package/pluginHooks.d.ts +1 -5
- package/pluginHooks.js +1 -89
- package/pluginHooks.mjs +1 -89
- package/plugins/collapsibleColumns/collapsibleColumns.js +24 -81
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +24 -81
- package/plugins/columnSorting/columnSorting.js +8 -50
- package/plugins/columnSorting/columnSorting.mjs +9 -49
- package/plugins/columnSorting/index.js +2 -4
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/comments.js +4 -11
- package/plugins/comments/comments.mjs +4 -11
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +29 -80
- package/plugins/contextMenu/contextMenu.mjs +30 -81
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/utils.js +16 -25
- package/plugins/contextMenu/utils.mjs +15 -24
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +1 -5
- package/plugins/copyPaste/copyPaste.mjs +1 -5
- package/plugins/customBorders/customBorders.js +53 -25
- package/plugins/customBorders/customBorders.mjs +54 -26
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +30 -94
- package/plugins/dropdownMenu/dropdownMenu.mjs +30 -94
- package/plugins/filters/filters.js +42 -62
- package/plugins/filters/filters.mjs +41 -61
- package/plugins/mergeCells/mergeCells.js +18 -5
- package/plugins/mergeCells/mergeCells.mjs +18 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +3 -42
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +3 -42
- package/plugins/nestedHeaders/nestedHeaders.js +10 -132
- package/plugins/nestedHeaders/nestedHeaders.mjs +10 -132
- package/plugins/nestedHeaders/stateManager/index.js +0 -37
- package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
- package/plugins/nestedRows/nestedRows.js +7 -52
- package/plugins/nestedRows/nestedRows.mjs +7 -52
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/constants.js +16 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +89 -312
- package/selection/highlight/highlight.mjs +85 -302
- package/selection/highlight/types/activeHeader.js +9 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +27 -12
- package/selection/highlight/types/area.mjs +30 -16
- package/selection/highlight/types/{focus.js → cell.js} +8 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +10 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +8 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +20 -10
- package/selection/highlight/types/header.mjs +19 -10
- package/selection/highlight/types/{row.js → index.js} +31 -27
- package/selection/highlight/types/{row.mjs → index.mjs} +29 -24
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +181 -315
- package/selection/selection.mjs +180 -310
- package/selection/transformation.js +96 -233
- package/selection/transformation.mjs +93 -230
- package/selection/utils.js +36 -12
- package/selection/utils.mjs +36 -13
- package/settings.d.ts +0 -1
- package/shortcuts/manager.js +0 -2
- package/shortcuts/manager.mjs +0 -2
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +5 -21
- package/shortcuts/utils.mjs +4 -20
- package/tableView.js +9 -58
- package/tableView.mjs +9 -58
- package/translations/indexMapper.js +9 -8
- package/translations/indexMapper.mjs +9 -8
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -18
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -13
- package/3rdparty/walkontable/src/selection/constants.js +0 -63
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -30
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -329
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -323
- package/3rdparty/walkontable/src/selection/scanner.js +0 -364
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -360
- package/3rdparty/walkontable/src/selection/selection.js +0 -133
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -127
- package/selection/highlight/types/areaLayered.js +0 -54
- package/selection/highlight/types/areaLayered.mjs +0 -49
- package/selection/highlight/types/column.js +0 -50
- package/selection/highlight/types/column.mjs +0 -45
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -15
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -10
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -13
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -11
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -29
- package/shortcutContexts/commands/editor/open.mjs +0 -24
- package/shortcutContexts/commands/emptySelectedCells.js +0 -12
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -10
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -16
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -10
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -10
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -14
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -22
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -17
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -17
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -12
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -12
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -40
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -35
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -40
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -35
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -22
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -17
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -14
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -10
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -16
- package/shortcutContexts/commands/index.js +0 -52
- package/shortcutContexts/commands/index.mjs +0 -48
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -7
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -29
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -11
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -11
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -16
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -11
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -12
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -16
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -11
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -36
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -36
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -16
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -11
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -7
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -29
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -24
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -35
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -30
- package/shortcutContexts/commands/selectAll.js +0 -11
- package/shortcutContexts/commands/selectAll.mjs +0 -6
- package/shortcutContexts/constants.js +0 -19
- package/shortcutContexts/constants.mjs +0 -12
- package/shortcutContexts/editor.js +0 -29
- package/shortcutContexts/editor.mjs +0 -25
- package/shortcutContexts/grid.js +0 -247
- package/shortcutContexts/grid.mjs +0 -243
- package/shortcutContexts/index.js +0 -29
- package/shortcutContexts/index.mjs +0 -15
package/selection/selection.mjs
CHANGED
@@ -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
|
30
|
-
import
|
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
|
-
|
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
|
-
|
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
|
-
|
72
|
+
this.inProgress = false;
|
66
73
|
/**
|
67
|
-
*
|
74
|
+
* The flag indicates that selection was performed by clicking the corner overlay.
|
68
75
|
*
|
69
|
-
* @type {
|
76
|
+
* @type {boolean}
|
70
77
|
*/
|
71
|
-
|
72
|
-
return _this.tableProps.createCellRange(highlight, from, to);
|
73
|
-
}));
|
78
|
+
this.selectedByCorner = false;
|
74
79
|
/**
|
75
|
-
*
|
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 {
|
83
|
+
* @type {Set.<number>}
|
78
84
|
*/
|
79
|
-
|
85
|
+
this.selectedByRowHeader = new Set();
|
80
86
|
/**
|
81
|
-
* The
|
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 {
|
90
|
+
* @type {Set.<number>}
|
84
91
|
*/
|
85
|
-
|
92
|
+
this.selectedByColumnHeader = new Set();
|
86
93
|
/**
|
87
|
-
*
|
88
|
-
* the corner header.
|
94
|
+
* Selection data layer (handle visual coordinates).
|
89
95
|
*
|
90
|
-
* @type {
|
96
|
+
* @type {SelectionRange}
|
91
97
|
*/
|
92
|
-
|
98
|
+
this.selectedRange = new SelectionRange(function (highlight, from, to) {
|
99
|
+
return _this.tableProps.createCellRange(highlight, from, to);
|
100
|
+
});
|
93
101
|
/**
|
94
|
-
*
|
95
|
-
* the corner header.
|
102
|
+
* Visualization layer.
|
96
103
|
*
|
97
|
-
* @type {
|
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
|
-
|
133
|
-
|
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
|
-
|
144
|
-
return _this.tableProps.
|
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
|
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
|
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)
|
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
|
-
|
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
|
-
//
|
321
|
-
//
|
322
|
-
|
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 (
|
329
|
-
cellRange.
|
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
|
-
//
|
339
|
-
|
340
|
-
|
341
|
-
|
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.
|
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.
|
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.
|
384
|
-
var
|
385
|
-
var
|
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
|
-
|
394
|
-
|
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
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
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
|
-
|
438
|
-
|
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 (
|
443
|
-
|
388
|
+
if (areAnyColumnsRendered) {
|
389
|
+
headerCellRange.from.col = -1;
|
444
390
|
}
|
445
|
-
if (
|
446
|
-
|
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} [
|
472
|
-
*
|
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
|
478
|
-
this.setRangeStart(this.transformation.transformStart(rowDelta, colDelta,
|
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) &&
|
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
|
-
|
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() &&
|
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
|
-
|
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.
|
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
|
-
*
|
628
|
+
* Select all cells.
|
690
629
|
*
|
691
|
-
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
692
|
-
*
|
693
|
-
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
694
|
-
*
|
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 (
|
644
|
+
if (!includeRowHeaders && !includeColumnHeaders && (nrOfRows === 0 || nrOfColumns === 0)) {
|
717
645
|
return;
|
718
646
|
}
|
719
|
-
var
|
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
|
726
|
-
|
727
|
-
|
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
|
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
|
678
|
+
return _this2.tableProps.propToCol(prop);
|
758
679
|
},
|
759
680
|
keepDirection: true
|
760
681
|
});
|
761
|
-
var
|
762
|
-
var
|
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
|
772
|
-
|
773
|
-
|
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
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
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} [
|
796
|
-
*
|
797
|
-
*
|
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
|
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
|
808
|
-
var
|
809
|
-
var
|
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
|
-
|
821
|
-
|
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} [
|
845
|
-
*
|
846
|
-
*
|
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
|
854
|
-
var
|
855
|
-
var
|
856
|
-
var
|
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
|
-
|
868
|
-
|
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
|
781
|
+
var cellHighlight = this.highlight.getCell();
|
900
782
|
var currentLayer = this.getLayerLevel();
|
901
|
-
|
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.
|
907
|
-
var
|
908
|
-
var
|
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
|
-
|
917
|
-
|
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.
|