handsontable 0.0.0-next-7026906-20231107 → 0.0.0-next-7b93b7d-20231107
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/SheetClip/SheetClip.js +2 -2
- package/3rdparty/SheetClip/SheetClip.mjs +2 -2
- package/3rdparty/autoResize/autoResize.js +2 -2
- package/3rdparty/autoResize/autoResize.mjs +2 -2
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +108 -85
- package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +108 -85
- package/3rdparty/walkontable/src/calculator/viewportRows.js +60 -52
- package/3rdparty/walkontable/src/calculator/viewportRows.mjs +60 -52
- package/3rdparty/walkontable/src/core/clone.js +6 -0
- package/3rdparty/walkontable/src/core/clone.mjs +6 -0
- package/3rdparty/walkontable/src/event.js +125 -74
- package/3rdparty/walkontable/src/event.mjs +125 -74
- package/3rdparty/walkontable/src/filter/column.js +16 -0
- package/3rdparty/walkontable/src/filter/column.mjs +16 -0
- package/3rdparty/walkontable/src/filter/row.js +16 -0
- package/3rdparty/walkontable/src/filter/row.mjs +16 -0
- package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
- package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/top.js +1 -1
- package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
- package/3rdparty/walkontable/src/renderer/_base.js +12 -5
- package/3rdparty/walkontable/src/renderer/_base.mjs +12 -5
- package/3rdparty/walkontable/src/renderer/cells.js +6 -2
- package/3rdparty/walkontable/src/renderer/cells.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +6 -2
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/rows.js +5 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/table.js +24 -17
- package/3rdparty/walkontable/src/renderer/table.mjs +24 -17
- package/3rdparty/walkontable/src/scroll.js +2 -2
- package/3rdparty/walkontable/src/scroll.mjs +2 -2
- package/3rdparty/walkontable/src/selection/border/border.js +1 -1
- package/3rdparty/walkontable/src/selection/border/border.mjs +1 -1
- package/3rdparty/walkontable/src/settings.js +10 -10
- package/3rdparty/walkontable/src/settings.mjs +10 -10
- package/3rdparty/walkontable/src/table.js +3 -3
- package/3rdparty/walkontable/src/table.mjs +3 -3
- package/3rdparty/walkontable/src/utils/column.js +19 -4
- package/3rdparty/walkontable/src/utils/column.mjs +19 -4
- package/3rdparty/walkontable/src/utils/nodesPool.js +5 -0
- package/3rdparty/walkontable/src/utils/nodesPool.mjs +5 -0
- package/3rdparty/walkontable/src/utils/orderView/view.js +13 -6
- package/3rdparty/walkontable/src/utils/orderView/view.mjs +13 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSize.js +9 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +9 -6
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +7 -4
- package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +7 -4
- package/3rdparty/walkontable/src/utils/row.js +14 -2
- package/3rdparty/walkontable/src/utils/row.mjs +14 -2
- package/3rdparty/walkontable/src/viewport.js +9 -9
- package/3rdparty/walkontable/src/viewport.mjs +9 -9
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.js +25 -25
- package/core.mjs +25 -25
- package/dataMap/dataMap.js +99 -90
- package/dataMap/dataMap.mjs +99 -90
- package/dataMap/dataSource.js +14 -8
- package/dataMap/dataSource.mjs +14 -8
- package/dataMap/metaManager/lazyFactoryMap.js +19 -7
- package/dataMap/metaManager/lazyFactoryMap.mjs +19 -7
- package/dataMap/metaManager/metaLayers/cellMeta.js +8 -3
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +8 -3
- package/dataMap/metaManager/metaLayers/columnMeta.js +7 -1
- package/dataMap/metaManager/metaLayers/columnMeta.mjs +7 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +6 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +6 -1
- package/dataMap/metaManager/metaLayers/tableMeta.js +6 -2
- package/dataMap/metaManager/metaLayers/tableMeta.mjs +6 -2
- package/dataMap/metaManager/metaSchema.js +55 -55
- package/dataMap/metaManager/metaSchema.mjs +55 -55
- package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -2
- package/dataMap/metaManager/mods/extendMetaProperties.js +8 -4
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +8 -4
- package/dataMap/metaManager/utils.js +2 -2
- package/dataMap/metaManager/utils.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +7244 -6347
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +120 -120
- package/dist/handsontable.js +7243 -6346
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +28 -28
- package/editorManager.js +105 -95
- package/editorManager.mjs +105 -95
- package/editors/autocompleteEditor/autocompleteEditor.js +47 -46
- package/editors/autocompleteEditor/autocompleteEditor.mjs +46 -45
- package/editors/baseEditor/baseEditor.js +23 -26
- package/editors/baseEditor/baseEditor.mjs +23 -26
- package/editors/dateEditor/dateEditor.js +24 -15
- package/editors/dateEditor/dateEditor.mjs +24 -15
- package/editors/dropdownEditor/dropdownEditor.js +1 -1
- package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
- package/editors/handsontableEditor/handsontableEditor.js +4 -4
- package/editors/handsontableEditor/handsontableEditor.mjs +4 -4
- package/editors/textEditor/textEditor.js +23 -17
- package/editors/textEditor/textEditor.mjs +24 -18
- package/eventManager.js +8 -0
- package/eventManager.mjs +8 -0
- package/helpers/array.js +2 -2
- package/helpers/array.mjs +2 -2
- package/helpers/dom/element.js +7 -7
- package/helpers/dom/element.mjs +7 -7
- package/helpers/function.js +1 -1
- package/helpers/function.mjs +1 -1
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/object.js +4 -4
- package/helpers/object.mjs +4 -4
- package/helpers/string.js +1 -1
- package/helpers/string.mjs +1 -1
- package/package.json +1 -1
- package/pluginHooks.d.ts +0 -2
- package/pluginHooks.js +12 -3
- package/pluginHooks.mjs +12 -3
- package/plugins/autoColumnSize/autoColumnSize.js +141 -130
- package/plugins/autoColumnSize/autoColumnSize.mjs +140 -129
- package/plugins/autoRowSize/autoRowSize.js +112 -125
- package/plugins/autoRowSize/autoRowSize.mjs +110 -123
- package/plugins/autofill/autofill.js +97 -102
- package/plugins/autofill/autofill.mjs +96 -101
- package/plugins/base/base.js +57 -22
- package/plugins/base/base.mjs +56 -22
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +29 -24
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +28 -23
- package/plugins/collapsibleColumns/collapsibleColumns.js +104 -107
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +102 -104
- package/plugins/columnSorting/columnSorting.js +105 -98
- package/plugins/columnSorting/columnSorting.mjs +104 -97
- package/plugins/columnSorting/columnStatesManager.js +12 -6
- package/plugins/columnSorting/columnStatesManager.mjs +12 -6
- package/plugins/columnSummary/columnSummary.js +71 -58
- package/plugins/columnSummary/columnSummary.mjs +70 -57
- package/plugins/columnSummary/endpoints.js +20 -14
- package/plugins/columnSummary/endpoints.mjs +20 -14
- package/plugins/comments/commentEditor.js +30 -2
- package/plugins/comments/commentEditor.mjs +30 -2
- package/plugins/comments/comments.js +158 -169
- package/plugins/comments/comments.mjs +157 -168
- package/plugins/comments/displaySwitch.js +7 -3
- package/plugins/comments/displaySwitch.mjs +7 -3
- package/plugins/contextMenu/commandExecutor.js +15 -2
- package/plugins/contextMenu/commandExecutor.mjs +15 -2
- package/plugins/contextMenu/contextMenu.js +91 -101
- package/plugins/contextMenu/contextMenu.mjs +90 -100
- package/plugins/contextMenu/itemsFactory.js +19 -4
- package/plugins/contextMenu/itemsFactory.mjs +19 -4
- package/plugins/contextMenu/menu/cursor.js +36 -0
- package/plugins/contextMenu/menu/cursor.mjs +36 -0
- package/plugins/contextMenu/menu/menu.js +57 -5
- package/plugins/contextMenu/menu/menu.mjs +57 -5
- package/plugins/copyPaste/copyPaste.js +74 -75
- package/plugins/copyPaste/copyPaste.mjs +74 -75
- package/plugins/customBorders/customBorders.js +49 -48
- package/plugins/customBorders/customBorders.mjs +48 -47
- package/plugins/dragToScroll/dragToScroll.js +50 -54
- package/plugins/dragToScroll/dragToScroll.mjs +49 -52
- package/plugins/dropdownMenu/dropdownMenu.js +132 -129
- package/plugins/dropdownMenu/dropdownMenu.mjs +132 -129
- package/plugins/exportFile/dataProvider.js +7 -2
- package/plugins/exportFile/dataProvider.mjs +7 -2
- package/plugins/exportFile/exportFile.js +1 -1
- package/plugins/exportFile/exportFile.mjs +1 -1
- package/plugins/exportFile/types/_base.js +14 -6
- package/plugins/exportFile/types/_base.mjs +14 -6
- package/plugins/filters/component/actionBar.js +9 -0
- package/plugins/filters/component/actionBar.mjs +9 -0
- package/plugins/filters/component/condition.js +13 -0
- package/plugins/filters/component/condition.mjs +13 -0
- package/plugins/filters/component/operators.js +9 -0
- package/plugins/filters/component/operators.mjs +9 -0
- package/plugins/filters/component/value.js +9 -0
- package/plugins/filters/component/value.mjs +9 -0
- package/plugins/filters/conditionCollection.js +9 -4
- package/plugins/filters/conditionCollection.mjs +9 -4
- package/plugins/filters/conditionUpdateObserver.js +53 -42
- package/plugins/filters/conditionUpdateObserver.mjs +53 -42
- package/plugins/filters/dataFilter.js +9 -3
- package/plugins/filters/dataFilter.mjs +9 -3
- package/plugins/filters/filters.js +184 -189
- package/plugins/filters/filters.mjs +182 -187
- package/plugins/filters/ui/_base.js +1 -1
- package/plugins/filters/ui/_base.mjs +1 -1
- package/plugins/filters/utils.js +1 -1
- package/plugins/filters/utils.mjs +1 -1
- package/plugins/formulas/engine/settings.js +1 -1
- package/plugins/formulas/engine/settings.mjs +1 -1
- package/plugins/formulas/formulas.js +684 -602
- package/plugins/formulas/formulas.mjs +682 -600
- package/plugins/hiddenColumns/hiddenColumns.js +174 -169
- package/plugins/hiddenColumns/hiddenColumns.mjs +173 -168
- package/plugins/hiddenRows/hiddenRows.js +170 -165
- package/plugins/hiddenRows/hiddenRows.mjs +169 -164
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +67 -54
- package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +64 -51
- package/plugins/manualColumnMove/manualColumnMove.js +287 -232
- package/plugins/manualColumnMove/manualColumnMove.mjs +286 -231
- package/plugins/manualColumnMove/ui/_base.js +9 -3
- package/plugins/manualColumnMove/ui/_base.mjs +9 -3
- package/plugins/manualColumnResize/manualColumnResize.js +291 -246
- package/plugins/manualColumnResize/manualColumnResize.mjs +290 -244
- package/plugins/manualRowMove/manualRowMove.js +223 -208
- package/plugins/manualRowMove/manualRowMove.mjs +222 -207
- package/plugins/manualRowMove/ui/_base.js +10 -5
- package/plugins/manualRowMove/ui/_base.mjs +10 -5
- package/plugins/manualRowResize/manualRowResize.js +254 -209
- package/plugins/manualRowResize/manualRowResize.mjs +253 -207
- package/plugins/mergeCells/calculations/autofill.js +9 -3
- package/plugins/mergeCells/calculations/autofill.mjs +9 -3
- package/plugins/mergeCells/calculations/selection.js +10 -4
- package/plugins/mergeCells/calculations/selection.mjs +10 -4
- package/plugins/mergeCells/cellCoords.js +16 -6
- package/plugins/mergeCells/cellCoords.mjs +16 -6
- package/plugins/mergeCells/cellsCollection.js +10 -4
- package/plugins/mergeCells/cellsCollection.mjs +10 -4
- package/plugins/mergeCells/mergeCells.js +582 -502
- package/plugins/mergeCells/mergeCells.mjs +580 -500
- package/plugins/multiColumnSorting/multiColumnSorting.js +13 -10
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +13 -10
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +16 -28
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +16 -27
- package/plugins/nestedHeaders/nestedHeaders.js +542 -499
- package/plugins/nestedHeaders/nestedHeaders.mjs +554 -511
- package/plugins/nestedHeaders/stateManager/index.js +1 -1
- package/plugins/nestedHeaders/stateManager/index.mjs +1 -1
- package/plugins/nestedRows/data/dataManager.js +21 -15
- package/plugins/nestedRows/data/dataManager.mjs +21 -15
- package/plugins/nestedRows/nestedRows.js +326 -278
- package/plugins/nestedRows/nestedRows.mjs +325 -277
- package/plugins/nestedRows/ui/_base.js +7 -1
- package/plugins/nestedRows/ui/_base.mjs +7 -1
- package/plugins/nestedRows/ui/collapsing.js +2 -2
- package/plugins/nestedRows/ui/collapsing.mjs +2 -2
- package/plugins/nestedRows/ui/contextMenu.js +28 -18
- package/plugins/nestedRows/ui/contextMenu.mjs +28 -18
- package/plugins/nestedRows/utils/rowMoveController.js +12 -4
- package/plugins/nestedRows/utils/rowMoveController.mjs +12 -4
- package/plugins/persistentState/persistentState.js +14 -11
- package/plugins/persistentState/persistentState.mjs +14 -11
- package/plugins/persistentState/storage.js +11 -6
- package/plugins/persistentState/storage.mjs +11 -6
- package/plugins/registry.js +2 -2
- package/plugins/registry.mjs +2 -2
- package/plugins/search/search.js +57 -46
- package/plugins/search/search.mjs +56 -45
- package/plugins/touchScroll/touchScroll.js +102 -100
- package/plugins/touchScroll/touchScroll.mjs +100 -98
- package/plugins/trimRows/trimRows.js +33 -28
- package/plugins/trimRows/trimRows.mjs +32 -27
- package/plugins/undoRedo/undoRedo.js +2 -2
- package/plugins/undoRedo/undoRedo.mjs +2 -2
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +11 -11
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +11 -11
- package/renderers/baseRenderer/baseRenderer.js +2 -2
- package/renderers/baseRenderer/baseRenderer.mjs +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.js +23 -23
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +23 -23
- package/renderers/dateRenderer/dateRenderer.js +4 -4
- package/renderers/dateRenderer/dateRenderer.mjs +4 -4
- package/renderers/handsontableRenderer/handsontableRenderer.js +4 -4
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +4 -4
- package/renderers/htmlRenderer/htmlRenderer.js +4 -4
- package/renderers/htmlRenderer/htmlRenderer.mjs +4 -4
- package/renderers/numericRenderer/numericRenderer.js +3 -3
- package/renderers/numericRenderer/numericRenderer.mjs +3 -3
- package/renderers/passwordRenderer/passwordRenderer.js +3 -3
- package/renderers/passwordRenderer/passwordRenderer.mjs +3 -3
- package/renderers/selectRenderer/selectRenderer.js +4 -4
- package/renderers/selectRenderer/selectRenderer.mjs +4 -4
- package/renderers/textRenderer/textRenderer.js +5 -5
- package/renderers/textRenderer/textRenderer.mjs +5 -5
- package/renderers/timeRenderer/timeRenderer.js +3 -3
- package/renderers/timeRenderer/timeRenderer.mjs +3 -3
- package/selection/range.js +12 -2
- package/selection/range.mjs +12 -2
- package/selection/selection.js +3 -3
- package/selection/selection.mjs +3 -3
- package/tableView.js +208 -200
- package/tableView.mjs +208 -200
- package/translations/changesObservable/utils.js +2 -2
- package/translations/changesObservable/utils.mjs +2 -2
- package/translations/indexMapper.js +25 -22
- package/translations/indexMapper.mjs +25 -22
- package/translations/mapCollections/aggregatedCollection.js +8 -2
- package/translations/mapCollections/aggregatedCollection.mjs +8 -2
- package/translations/mapCollections/mapCollection.js +5 -2
- package/translations/mapCollections/mapCollection.mjs +5 -2
- package/translations/maps/indexMap.js +6 -1
- package/translations/maps/indexMap.mjs +6 -1
- package/translations/maps/utils/physicallyIndexed.js +2 -2
- package/translations/maps/utils/physicallyIndexed.mjs +2 -2
- package/utils/dataStructures/linkedList.js +10 -6
- package/utils/dataStructures/linkedList.mjs +10 -6
- package/utils/dataStructures/queue.js +1 -1
- package/utils/dataStructures/queue.mjs +1 -1
- package/utils/dataStructures/stack.js +1 -1
- package/utils/dataStructures/stack.mjs +1 -1
- package/utils/ghostTable.js +2 -2
- package/utils/ghostTable.mjs +2 -2
- package/utils/interval.js +73 -36
- package/utils/interval.mjs +73 -36
- package/utils/parseTable.js +1 -1
- package/utils/parseTable.mjs +1 -1
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
- package/validators/autocompleteValidator/autocompleteValidator.mjs +1 -1
- package/validators/dateValidator/dateValidator.js +1 -1
- package/validators/dateValidator/dateValidator.mjs +1 -1
- package/validators/numericValidator/numericValidator.js +1 -1
- package/validators/numericValidator/numericValidator.mjs +1 -1
@@ -1,6 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
5
|
+
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; }
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
7
|
+
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); }
|
4
8
|
/**
|
5
9
|
* Helper class for checking if element will fit at the desired side of cursor.
|
6
10
|
*
|
@@ -9,6 +13,38 @@ exports.__esModule = true;
|
|
9
13
|
*/
|
10
14
|
class Cursor {
|
11
15
|
constructor(object, rootWindow) {
|
16
|
+
/**
|
17
|
+
* @type {number}
|
18
|
+
*/
|
19
|
+
_defineProperty(this, "top", void 0);
|
20
|
+
/**
|
21
|
+
* @type {number}
|
22
|
+
*/
|
23
|
+
_defineProperty(this, "topRelative", void 0);
|
24
|
+
/**
|
25
|
+
* @type {number}
|
26
|
+
*/
|
27
|
+
_defineProperty(this, "left", void 0);
|
28
|
+
/**
|
29
|
+
* @type {number}
|
30
|
+
*/
|
31
|
+
_defineProperty(this, "leftRelative", void 0);
|
32
|
+
/**
|
33
|
+
* @type {number}
|
34
|
+
*/
|
35
|
+
_defineProperty(this, "scrollTop", void 0);
|
36
|
+
/**
|
37
|
+
* @type {number}
|
38
|
+
*/
|
39
|
+
_defineProperty(this, "scrollLeft", void 0);
|
40
|
+
/**
|
41
|
+
* @type {number}
|
42
|
+
*/
|
43
|
+
_defineProperty(this, "cellHeight", void 0);
|
44
|
+
/**
|
45
|
+
* @type {number}
|
46
|
+
*/
|
47
|
+
_defineProperty(this, "cellWidth", void 0);
|
12
48
|
const windowScrollTop = rootWindow.scrollY;
|
13
49
|
const windowScrollLeft = rootWindow.scrollX;
|
14
50
|
let top;
|
@@ -1,3 +1,7 @@
|
|
1
|
+
import "core-js/modules/es.error.cause.js";
|
2
|
+
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; }
|
3
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
4
|
+
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); }
|
1
5
|
/**
|
2
6
|
* Helper class for checking if element will fit at the desired side of cursor.
|
3
7
|
*
|
@@ -6,6 +10,38 @@
|
|
6
10
|
*/
|
7
11
|
export class Cursor {
|
8
12
|
constructor(object, rootWindow) {
|
13
|
+
/**
|
14
|
+
* @type {number}
|
15
|
+
*/
|
16
|
+
_defineProperty(this, "top", void 0);
|
17
|
+
/**
|
18
|
+
* @type {number}
|
19
|
+
*/
|
20
|
+
_defineProperty(this, "topRelative", void 0);
|
21
|
+
/**
|
22
|
+
* @type {number}
|
23
|
+
*/
|
24
|
+
_defineProperty(this, "left", void 0);
|
25
|
+
/**
|
26
|
+
* @type {number}
|
27
|
+
*/
|
28
|
+
_defineProperty(this, "leftRelative", void 0);
|
29
|
+
/**
|
30
|
+
* @type {number}
|
31
|
+
*/
|
32
|
+
_defineProperty(this, "scrollTop", void 0);
|
33
|
+
/**
|
34
|
+
* @type {number}
|
35
|
+
*/
|
36
|
+
_defineProperty(this, "scrollLeft", void 0);
|
37
|
+
/**
|
38
|
+
* @type {number}
|
39
|
+
*/
|
40
|
+
_defineProperty(this, "cellHeight", void 0);
|
41
|
+
/**
|
42
|
+
* @type {number}
|
43
|
+
*/
|
44
|
+
_defineProperty(this, "cellWidth", void 0);
|
9
45
|
const windowScrollTop = rootWindow.scrollY;
|
10
46
|
const windowScrollLeft = rootWindow.scrollX;
|
11
47
|
let top;
|
@@ -22,6 +22,9 @@ var _a11y = require("../../../helpers/a11y");
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
23
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
24
24
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
25
|
+
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; }
|
26
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
27
|
+
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); }
|
25
28
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
26
29
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
27
30
|
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
@@ -53,6 +56,60 @@ class Menu {
|
|
53
56
|
*/
|
54
57
|
constructor(hotInstance, options) {
|
55
58
|
var _this = this;
|
59
|
+
/**
|
60
|
+
* The Handsontable instance.
|
61
|
+
*
|
62
|
+
* @type {Core}
|
63
|
+
*/
|
64
|
+
_defineProperty(this, "hot", void 0);
|
65
|
+
/**
|
66
|
+
* The Menu options.
|
67
|
+
*
|
68
|
+
* @type {object}
|
69
|
+
*/
|
70
|
+
_defineProperty(this, "options", void 0);
|
71
|
+
/**
|
72
|
+
* @type {EventManager}
|
73
|
+
*/
|
74
|
+
_defineProperty(this, "eventManager", new _eventManager.default(this));
|
75
|
+
/**
|
76
|
+
* The Menu container element.
|
77
|
+
*
|
78
|
+
* @type {HTMLElement}
|
79
|
+
*/
|
80
|
+
_defineProperty(this, "container", void 0);
|
81
|
+
/**
|
82
|
+
* @type {Positioner}
|
83
|
+
*/
|
84
|
+
_defineProperty(this, "positioner", void 0);
|
85
|
+
/**
|
86
|
+
* The instance of the Handsontable that is used as a menu.
|
87
|
+
*
|
88
|
+
* @type {Core}
|
89
|
+
*/
|
90
|
+
_defineProperty(this, "hotMenu", null);
|
91
|
+
/**
|
92
|
+
* The collection of the Handsontable instances that are used as sub-menus.
|
93
|
+
*
|
94
|
+
* @type {object}
|
95
|
+
*/
|
96
|
+
_defineProperty(this, "hotSubMenus", {});
|
97
|
+
/**
|
98
|
+
* If the menu acts as the sub-menu then this property contains the reference to the parent menu.
|
99
|
+
*
|
100
|
+
* @type {Menu}
|
101
|
+
*/
|
102
|
+
_defineProperty(this, "parentMenu", void 0);
|
103
|
+
/**
|
104
|
+
* The menu items entries.
|
105
|
+
*
|
106
|
+
* @type {object[]}
|
107
|
+
*/
|
108
|
+
_defineProperty(this, "menuItems", null);
|
109
|
+
/**
|
110
|
+
* @type {boolean}
|
111
|
+
*/
|
112
|
+
_defineProperty(this, "origOutsideClickDeselects", null);
|
56
113
|
/**
|
57
114
|
* The controller module that allows modifying the menu item selection positions.
|
58
115
|
*
|
@@ -81,14 +138,9 @@ class Menu {
|
|
81
138
|
minWidth: MIN_WIDTH,
|
82
139
|
container: this.hot.rootDocument.documentElement
|
83
140
|
};
|
84
|
-
this.eventManager = new _eventManager.default(this);
|
85
141
|
this.container = this.createContainer(this.options.name);
|
86
142
|
this.positioner = new _positioner.Positioner(this.options.keepInViewport);
|
87
|
-
this.hotMenu = null;
|
88
|
-
this.hotSubMenus = {};
|
89
143
|
this.parentMenu = this.options.parent || null;
|
90
|
-
this.menuItems = null;
|
91
|
-
this.origOutsideClickDeselects = null;
|
92
144
|
this.registerEvents();
|
93
145
|
if (this.isSubMenu()) {
|
94
146
|
this.addLocalHook('afterSelectionChange', function () {
|
@@ -2,6 +2,9 @@ import "core-js/modules/es.array.push.js";
|
|
2
2
|
import "core-js/modules/es.error.cause.js";
|
3
3
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
4
4
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
5
|
+
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; }
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
7
|
+
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); }
|
5
8
|
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
6
9
|
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
7
10
|
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
@@ -49,6 +52,60 @@ export class Menu {
|
|
49
52
|
*/
|
50
53
|
constructor(hotInstance, options) {
|
51
54
|
var _this = this;
|
55
|
+
/**
|
56
|
+
* The Handsontable instance.
|
57
|
+
*
|
58
|
+
* @type {Core}
|
59
|
+
*/
|
60
|
+
_defineProperty(this, "hot", void 0);
|
61
|
+
/**
|
62
|
+
* The Menu options.
|
63
|
+
*
|
64
|
+
* @type {object}
|
65
|
+
*/
|
66
|
+
_defineProperty(this, "options", void 0);
|
67
|
+
/**
|
68
|
+
* @type {EventManager}
|
69
|
+
*/
|
70
|
+
_defineProperty(this, "eventManager", new EventManager(this));
|
71
|
+
/**
|
72
|
+
* The Menu container element.
|
73
|
+
*
|
74
|
+
* @type {HTMLElement}
|
75
|
+
*/
|
76
|
+
_defineProperty(this, "container", void 0);
|
77
|
+
/**
|
78
|
+
* @type {Positioner}
|
79
|
+
*/
|
80
|
+
_defineProperty(this, "positioner", void 0);
|
81
|
+
/**
|
82
|
+
* The instance of the Handsontable that is used as a menu.
|
83
|
+
*
|
84
|
+
* @type {Core}
|
85
|
+
*/
|
86
|
+
_defineProperty(this, "hotMenu", null);
|
87
|
+
/**
|
88
|
+
* The collection of the Handsontable instances that are used as sub-menus.
|
89
|
+
*
|
90
|
+
* @type {object}
|
91
|
+
*/
|
92
|
+
_defineProperty(this, "hotSubMenus", {});
|
93
|
+
/**
|
94
|
+
* If the menu acts as the sub-menu then this property contains the reference to the parent menu.
|
95
|
+
*
|
96
|
+
* @type {Menu}
|
97
|
+
*/
|
98
|
+
_defineProperty(this, "parentMenu", void 0);
|
99
|
+
/**
|
100
|
+
* The menu items entries.
|
101
|
+
*
|
102
|
+
* @type {object[]}
|
103
|
+
*/
|
104
|
+
_defineProperty(this, "menuItems", null);
|
105
|
+
/**
|
106
|
+
* @type {boolean}
|
107
|
+
*/
|
108
|
+
_defineProperty(this, "origOutsideClickDeselects", null);
|
52
109
|
/**
|
53
110
|
* The controller module that allows modifying the menu item selection positions.
|
54
111
|
*
|
@@ -77,14 +134,9 @@ export class Menu {
|
|
77
134
|
minWidth: MIN_WIDTH,
|
78
135
|
container: this.hot.rootDocument.documentElement
|
79
136
|
};
|
80
|
-
this.eventManager = new EventManager(this);
|
81
137
|
this.container = this.createContainer(this.options.name);
|
82
138
|
this.positioner = new Positioner(this.options.keepInViewport);
|
83
|
-
this.hotMenu = null;
|
84
|
-
this.hotSubMenus = {};
|
85
139
|
this.parentMenu = this.options.parent || null;
|
86
|
-
this.menuItems = null;
|
87
|
-
this.origOutsideClickDeselects = null;
|
88
140
|
this.registerEvents();
|
89
141
|
if (this.isSubMenu()) {
|
90
142
|
this.addLocalHook('afterSelectionChange', function () {
|
@@ -18,7 +18,6 @@ var _cut = _interopRequireDefault(require("./contextMenuItem/cut"));
|
|
18
18
|
var _pasteEvent = _interopRequireDefault(require("./pasteEvent"));
|
19
19
|
var _copyableRanges = require("./copyableRanges");
|
20
20
|
var _parseTable = require("../../utils/parseTable");
|
21
|
-
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
22
21
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
22
|
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
24
23
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
@@ -93,9 +92,38 @@ var _ensureClipboardEventsGetTriggered = /*#__PURE__*/new WeakSet();
|
|
93
92
|
var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
|
94
93
|
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
95
94
|
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
95
|
+
var _onAfterContextMenuDefaultOptions = /*#__PURE__*/new WeakSet();
|
96
|
+
var _onAfterSelectionEnd = /*#__PURE__*/new WeakSet();
|
97
|
+
var _onSafariMouseEnter = /*#__PURE__*/new WeakSet();
|
98
|
+
var _onSafariMouseLeave = /*#__PURE__*/new WeakSet();
|
99
|
+
var _onSafariAfterSelection = /*#__PURE__*/new WeakSet();
|
96
100
|
class CopyPaste extends _base.BasePlugin {
|
97
101
|
constructor() {
|
98
102
|
super(...arguments);
|
103
|
+
/**
|
104
|
+
* `afterSelection` hook callback triggered only on Safari.
|
105
|
+
*/
|
106
|
+
_classPrivateMethodInitSpec(this, _onSafariAfterSelection);
|
107
|
+
/**
|
108
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
109
|
+
* browser's menu.
|
110
|
+
*/
|
111
|
+
_classPrivateMethodInitSpec(this, _onSafariMouseLeave);
|
112
|
+
/**
|
113
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
114
|
+
* browser's menu.
|
115
|
+
*/
|
116
|
+
_classPrivateMethodInitSpec(this, _onSafariMouseEnter);
|
117
|
+
/**
|
118
|
+
* Force focus on focusableElement after end of the selection.
|
119
|
+
*/
|
120
|
+
_classPrivateMethodInitSpec(this, _onAfterSelectionEnd);
|
121
|
+
/**
|
122
|
+
* Add copy and cut options to the Context Menu.
|
123
|
+
*
|
124
|
+
* @param {object} options Contains default added options of the Context Menu.
|
125
|
+
*/
|
126
|
+
_classPrivateMethodInitSpec(this, _onAfterContextMenuDefaultOptions);
|
99
127
|
/**
|
100
128
|
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
101
129
|
*/
|
@@ -279,9 +307,8 @@ class CopyPaste extends _base.BasePlugin {
|
|
279
307
|
_classPrivateFieldSet(this, _enableCopyColumnHeadersOnly, !!settings.copyColumnHeadersOnly);
|
280
308
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
281
309
|
}
|
282
|
-
this.addHook('afterContextMenuDefaultOptions', options => this.
|
283
|
-
this.addHook('afterSelectionEnd', () => this.
|
284
|
-
this.eventManager = new _eventManager.default(this);
|
310
|
+
this.addHook('afterContextMenuDefaultOptions', options => _classPrivateMethodGet(this, _onAfterContextMenuDefaultOptions, _onAfterContextMenuDefaultOptions2).call(this, options));
|
311
|
+
this.addHook('afterSelectionEnd', () => _classPrivateMethodGet(this, _onAfterSelectionEnd, _onAfterSelectionEnd2).call(this));
|
285
312
|
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
286
313
|
return _this.onCopy(...arguments);
|
287
314
|
});
|
@@ -295,12 +322,18 @@ class CopyPaste extends _base.BasePlugin {
|
|
295
322
|
// Without this workaround Safari (tested on Safari@16.5.2) does allow copying/cutting from the browser menu.
|
296
323
|
if ((0, _browser.isSafari)()) {
|
297
324
|
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseenter', function () {
|
298
|
-
|
325
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
326
|
+
args[_key] = arguments[_key];
|
327
|
+
}
|
328
|
+
return _classPrivateMethodGet(_this, _onSafariMouseEnter, _onSafariMouseEnter2).call(_this, ...args);
|
299
329
|
});
|
300
330
|
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
301
|
-
|
331
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
332
|
+
args[_key2] = arguments[_key2];
|
333
|
+
}
|
334
|
+
return _classPrivateMethodGet(_this, _onSafariMouseLeave, _onSafariMouseLeave2).call(_this, ...args);
|
302
335
|
});
|
303
|
-
this.addHook('afterSelection', () => this.
|
336
|
+
this.addHook('afterSelection', () => _classPrivateMethodGet(this, _onSafariAfterSelection, _onSafariAfterSelection2).call(this));
|
304
337
|
}
|
305
338
|
super.enablePlugin();
|
306
339
|
}
|
@@ -566,7 +599,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
566
599
|
}
|
567
600
|
newRows.push(newRow);
|
568
601
|
}
|
569
|
-
this.hot.populateFromArray(startRow, startColumn, newRows,
|
602
|
+
this.hot.populateFromArray(startRow, startColumn, newRows, undefined, undefined, 'CopyPaste.paste', this.pasteMode);
|
570
603
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
571
604
|
}
|
572
605
|
/**
|
@@ -670,73 +703,6 @@ class CopyPaste extends _base.BasePlugin {
|
|
670
703
|
this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
|
671
704
|
this.hot.runHooks('afterPaste', pastedData, this.copyableRanges);
|
672
705
|
}
|
673
|
-
|
674
|
-
/**
|
675
|
-
* Add copy and cut options to the Context Menu.
|
676
|
-
*
|
677
|
-
* @private
|
678
|
-
* @param {object} options Contains default added options of the Context Menu.
|
679
|
-
*/
|
680
|
-
onAfterContextMenuDefaultOptions(options) {
|
681
|
-
options.items.push({
|
682
|
-
name: '---------'
|
683
|
-
}, (0, _copy.default)(this));
|
684
|
-
if (_classPrivateFieldGet(this, _enableCopyColumnHeaders)) {
|
685
|
-
options.items.push((0, _copyWithColumnHeaders.default)(this));
|
686
|
-
}
|
687
|
-
if (_classPrivateFieldGet(this, _enableCopyColumnGroupHeaders)) {
|
688
|
-
options.items.push((0, _copyWithColumnGroupHeaders.default)(this));
|
689
|
-
}
|
690
|
-
if (_classPrivateFieldGet(this, _enableCopyColumnHeadersOnly)) {
|
691
|
-
options.items.push((0, _copyColumnHeadersOnly.default)(this));
|
692
|
-
}
|
693
|
-
options.items.push((0, _cut.default)(this));
|
694
|
-
}
|
695
|
-
|
696
|
-
/**
|
697
|
-
* Force focus on focusableElement after end of the selection.
|
698
|
-
*
|
699
|
-
* @private
|
700
|
-
*/
|
701
|
-
onAfterSelectionEnd() {
|
702
|
-
if (this.isEditorOpened()) {
|
703
|
-
return;
|
704
|
-
}
|
705
|
-
if (this.hot.getSettings().fragmentSelection) {
|
706
|
-
return;
|
707
|
-
}
|
708
|
-
this.setCopyableText();
|
709
|
-
}
|
710
|
-
|
711
|
-
/**
|
712
|
-
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
713
|
-
* browser's menu.
|
714
|
-
*
|
715
|
-
* @private
|
716
|
-
*/
|
717
|
-
onSafariMouseEnter() {
|
718
|
-
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
719
|
-
}
|
720
|
-
|
721
|
-
/**
|
722
|
-
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
723
|
-
* browser's menu.
|
724
|
-
*
|
725
|
-
* @private
|
726
|
-
*/
|
727
|
-
onSafariMouseLeave() {
|
728
|
-
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
729
|
-
}
|
730
|
-
|
731
|
-
/**
|
732
|
-
* `afterSelection` hook callback triggered only on Safari.
|
733
|
-
*
|
734
|
-
* @private
|
735
|
-
*/
|
736
|
-
onSafariAfterSelection() {
|
737
|
-
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
738
|
-
}
|
739
|
-
|
740
706
|
/**
|
741
707
|
* Destroys the `CopyPaste` plugin instance.
|
742
708
|
*/
|
@@ -810,4 +776,37 @@ function _removeContentEditableFromHighlightedCell2() {
|
|
810
776
|
}
|
811
777
|
}
|
812
778
|
}
|
779
|
+
}
|
780
|
+
function _onAfterContextMenuDefaultOptions2(options) {
|
781
|
+
options.items.push({
|
782
|
+
name: '---------'
|
783
|
+
}, (0, _copy.default)(this));
|
784
|
+
if (_classPrivateFieldGet(this, _enableCopyColumnHeaders)) {
|
785
|
+
options.items.push((0, _copyWithColumnHeaders.default)(this));
|
786
|
+
}
|
787
|
+
if (_classPrivateFieldGet(this, _enableCopyColumnGroupHeaders)) {
|
788
|
+
options.items.push((0, _copyWithColumnGroupHeaders.default)(this));
|
789
|
+
}
|
790
|
+
if (_classPrivateFieldGet(this, _enableCopyColumnHeadersOnly)) {
|
791
|
+
options.items.push((0, _copyColumnHeadersOnly.default)(this));
|
792
|
+
}
|
793
|
+
options.items.push((0, _cut.default)(this));
|
794
|
+
}
|
795
|
+
function _onAfterSelectionEnd2() {
|
796
|
+
if (this.isEditorOpened()) {
|
797
|
+
return;
|
798
|
+
}
|
799
|
+
if (this.hot.getSettings().fragmentSelection) {
|
800
|
+
return;
|
801
|
+
}
|
802
|
+
this.setCopyableText();
|
803
|
+
}
|
804
|
+
function _onSafariMouseEnter2() {
|
805
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
806
|
+
}
|
807
|
+
function _onSafariMouseLeave2() {
|
808
|
+
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
809
|
+
}
|
810
|
+
function _onSafariAfterSelection2() {
|
811
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
813
812
|
}
|
@@ -27,7 +27,6 @@ import cutItem from "./contextMenuItem/cut.mjs";
|
|
27
27
|
import PasteEvent from "./pasteEvent.mjs";
|
28
28
|
import { CopyableRangesFactory, normalizeRanges } from "./copyableRanges.mjs";
|
29
29
|
import { _dataToHTML, htmlToGridSettings } from "../../utils/parseTable.mjs";
|
30
|
-
import EventManager from "../../eventManager.mjs";
|
31
30
|
Hooks.getSingleton().register('afterCopyLimit');
|
32
31
|
Hooks.getSingleton().register('modifyCopyableRange');
|
33
32
|
Hooks.getSingleton().register('beforeCut');
|
@@ -87,9 +86,38 @@ var _ensureClipboardEventsGetTriggered = /*#__PURE__*/new WeakSet();
|
|
87
86
|
var _countCopiedHeaders = /*#__PURE__*/new WeakSet();
|
88
87
|
var _addContentEditableToHighlightedCell = /*#__PURE__*/new WeakSet();
|
89
88
|
var _removeContentEditableFromHighlightedCell = /*#__PURE__*/new WeakSet();
|
89
|
+
var _onAfterContextMenuDefaultOptions = /*#__PURE__*/new WeakSet();
|
90
|
+
var _onAfterSelectionEnd = /*#__PURE__*/new WeakSet();
|
91
|
+
var _onSafariMouseEnter = /*#__PURE__*/new WeakSet();
|
92
|
+
var _onSafariMouseLeave = /*#__PURE__*/new WeakSet();
|
93
|
+
var _onSafariAfterSelection = /*#__PURE__*/new WeakSet();
|
90
94
|
export class CopyPaste extends BasePlugin {
|
91
95
|
constructor() {
|
92
96
|
super(...arguments);
|
97
|
+
/**
|
98
|
+
* `afterSelection` hook callback triggered only on Safari.
|
99
|
+
*/
|
100
|
+
_classPrivateMethodInitSpec(this, _onSafariAfterSelection);
|
101
|
+
/**
|
102
|
+
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
103
|
+
* browser's menu.
|
104
|
+
*/
|
105
|
+
_classPrivateMethodInitSpec(this, _onSafariMouseLeave);
|
106
|
+
/**
|
107
|
+
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
108
|
+
* browser's menu.
|
109
|
+
*/
|
110
|
+
_classPrivateMethodInitSpec(this, _onSafariMouseEnter);
|
111
|
+
/**
|
112
|
+
* Force focus on focusableElement after end of the selection.
|
113
|
+
*/
|
114
|
+
_classPrivateMethodInitSpec(this, _onAfterSelectionEnd);
|
115
|
+
/**
|
116
|
+
* Add copy and cut options to the Context Menu.
|
117
|
+
*
|
118
|
+
* @param {object} options Contains default added options of the Context Menu.
|
119
|
+
*/
|
120
|
+
_classPrivateMethodInitSpec(this, _onAfterContextMenuDefaultOptions);
|
93
121
|
/**
|
94
122
|
* Remove the `contenteditable` attribute from the highlighted cell and deselect its content.
|
95
123
|
*/
|
@@ -273,9 +301,8 @@ export class CopyPaste extends BasePlugin {
|
|
273
301
|
_classPrivateFieldSet(this, _enableCopyColumnHeadersOnly, !!settings.copyColumnHeadersOnly);
|
274
302
|
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
275
303
|
}
|
276
|
-
this.addHook('afterContextMenuDefaultOptions', options => this.
|
277
|
-
this.addHook('afterSelectionEnd', () => this.
|
278
|
-
this.eventManager = new EventManager(this);
|
304
|
+
this.addHook('afterContextMenuDefaultOptions', options => _classPrivateMethodGet(this, _onAfterContextMenuDefaultOptions, _onAfterContextMenuDefaultOptions2).call(this, options));
|
305
|
+
this.addHook('afterSelectionEnd', () => _classPrivateMethodGet(this, _onAfterSelectionEnd, _onAfterSelectionEnd2).call(this));
|
279
306
|
this.eventManager.addEventListener(this.hot.rootDocument, 'copy', function () {
|
280
307
|
return _this.onCopy(...arguments);
|
281
308
|
});
|
@@ -289,12 +316,18 @@ export class CopyPaste extends BasePlugin {
|
|
289
316
|
// Without this workaround Safari (tested on Safari@16.5.2) does allow copying/cutting from the browser menu.
|
290
317
|
if (isSafari()) {
|
291
318
|
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseenter', function () {
|
292
|
-
|
319
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
320
|
+
args[_key] = arguments[_key];
|
321
|
+
}
|
322
|
+
return _classPrivateMethodGet(_this, _onSafariMouseEnter, _onSafariMouseEnter2).call(_this, ...args);
|
293
323
|
});
|
294
324
|
this.eventManager.addEventListener(this.hot.rootDocument.body, 'mouseleave', function () {
|
295
|
-
|
325
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
326
|
+
args[_key2] = arguments[_key2];
|
327
|
+
}
|
328
|
+
return _classPrivateMethodGet(_this, _onSafariMouseLeave, _onSafariMouseLeave2).call(_this, ...args);
|
296
329
|
});
|
297
|
-
this.addHook('afterSelection', () => this.
|
330
|
+
this.addHook('afterSelection', () => _classPrivateMethodGet(this, _onSafariAfterSelection, _onSafariAfterSelection2).call(this));
|
298
331
|
}
|
299
332
|
super.enablePlugin();
|
300
333
|
}
|
@@ -560,7 +593,7 @@ export class CopyPaste extends BasePlugin {
|
|
560
593
|
}
|
561
594
|
newRows.push(newRow);
|
562
595
|
}
|
563
|
-
this.hot.populateFromArray(startRow, startColumn, newRows,
|
596
|
+
this.hot.populateFromArray(startRow, startColumn, newRows, undefined, undefined, 'CopyPaste.paste', this.pasteMode);
|
564
597
|
return [startRow, startColumn, lastVisualRow, lastVisualColumn];
|
565
598
|
}
|
566
599
|
/**
|
@@ -664,73 +697,6 @@ export class CopyPaste extends BasePlugin {
|
|
664
697
|
this.hot.selectCell(startRow, startColumn, Math.min(this.hot.countRows() - 1, endRow), Math.min(this.hot.countCols() - 1, endColumn));
|
665
698
|
this.hot.runHooks('afterPaste', pastedData, this.copyableRanges);
|
666
699
|
}
|
667
|
-
|
668
|
-
/**
|
669
|
-
* Add copy and cut options to the Context Menu.
|
670
|
-
*
|
671
|
-
* @private
|
672
|
-
* @param {object} options Contains default added options of the Context Menu.
|
673
|
-
*/
|
674
|
-
onAfterContextMenuDefaultOptions(options) {
|
675
|
-
options.items.push({
|
676
|
-
name: '---------'
|
677
|
-
}, copyItem(this));
|
678
|
-
if (_classPrivateFieldGet(this, _enableCopyColumnHeaders)) {
|
679
|
-
options.items.push(copyWithColumnHeadersItem(this));
|
680
|
-
}
|
681
|
-
if (_classPrivateFieldGet(this, _enableCopyColumnGroupHeaders)) {
|
682
|
-
options.items.push(copyWithColumnGroupHeadersItem(this));
|
683
|
-
}
|
684
|
-
if (_classPrivateFieldGet(this, _enableCopyColumnHeadersOnly)) {
|
685
|
-
options.items.push(copyColumnHeadersOnlyItem(this));
|
686
|
-
}
|
687
|
-
options.items.push(cutItem(this));
|
688
|
-
}
|
689
|
-
|
690
|
-
/**
|
691
|
-
* Force focus on focusableElement after end of the selection.
|
692
|
-
*
|
693
|
-
* @private
|
694
|
-
*/
|
695
|
-
onAfterSelectionEnd() {
|
696
|
-
if (this.isEditorOpened()) {
|
697
|
-
return;
|
698
|
-
}
|
699
|
-
if (this.hot.getSettings().fragmentSelection) {
|
700
|
-
return;
|
701
|
-
}
|
702
|
-
this.setCopyableText();
|
703
|
-
}
|
704
|
-
|
705
|
-
/**
|
706
|
-
* `document.body` `mouseenter` callback used to work around a Safari's problem with copying/cutting from the
|
707
|
-
* browser's menu.
|
708
|
-
*
|
709
|
-
* @private
|
710
|
-
*/
|
711
|
-
onSafariMouseEnter() {
|
712
|
-
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
713
|
-
}
|
714
|
-
|
715
|
-
/**
|
716
|
-
* `document.body` `mouseleave` callback used to work around a Safari's problem with copying/cutting from the
|
717
|
-
* browser's menu.
|
718
|
-
*
|
719
|
-
* @private
|
720
|
-
*/
|
721
|
-
onSafariMouseLeave() {
|
722
|
-
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
723
|
-
}
|
724
|
-
|
725
|
-
/**
|
726
|
-
* `afterSelection` hook callback triggered only on Safari.
|
727
|
-
*
|
728
|
-
* @private
|
729
|
-
*/
|
730
|
-
onSafariAfterSelection() {
|
731
|
-
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
732
|
-
}
|
733
|
-
|
734
700
|
/**
|
735
701
|
* Destroys the `CopyPaste` plugin instance.
|
736
702
|
*/
|
@@ -803,4 +769,37 @@ function _removeContentEditableFromHighlightedCell2() {
|
|
803
769
|
}
|
804
770
|
}
|
805
771
|
}
|
772
|
+
}
|
773
|
+
function _onAfterContextMenuDefaultOptions2(options) {
|
774
|
+
options.items.push({
|
775
|
+
name: '---------'
|
776
|
+
}, copyItem(this));
|
777
|
+
if (_classPrivateFieldGet(this, _enableCopyColumnHeaders)) {
|
778
|
+
options.items.push(copyWithColumnHeadersItem(this));
|
779
|
+
}
|
780
|
+
if (_classPrivateFieldGet(this, _enableCopyColumnGroupHeaders)) {
|
781
|
+
options.items.push(copyWithColumnGroupHeadersItem(this));
|
782
|
+
}
|
783
|
+
if (_classPrivateFieldGet(this, _enableCopyColumnHeadersOnly)) {
|
784
|
+
options.items.push(copyColumnHeadersOnlyItem(this));
|
785
|
+
}
|
786
|
+
options.items.push(cutItem(this));
|
787
|
+
}
|
788
|
+
function _onAfterSelectionEnd2() {
|
789
|
+
if (this.isEditorOpened()) {
|
790
|
+
return;
|
791
|
+
}
|
792
|
+
if (this.hot.getSettings().fragmentSelection) {
|
793
|
+
return;
|
794
|
+
}
|
795
|
+
this.setCopyableText();
|
796
|
+
}
|
797
|
+
function _onSafariMouseEnter2() {
|
798
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
799
|
+
}
|
800
|
+
function _onSafariMouseLeave2() {
|
801
|
+
_classPrivateMethodGet(this, _addContentEditableToHighlightedCell, _addContentEditableToHighlightedCell2).call(this);
|
802
|
+
}
|
803
|
+
function _onSafariAfterSelection2() {
|
804
|
+
_classPrivateMethodGet(this, _removeContentEditableFromHighlightedCell, _removeContentEditableFromHighlightedCell2).call(this);
|
806
805
|
}
|