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