handsontable 14.0.0-next-07c0a60-20231107 → 14.0.0-next-7ee54cb-20231108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/cell/coords.js +7 -5
- package/3rdparty/walkontable/src/cell/coords.mjs +7 -5
- 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 +31 -26
- package/core.mjs +31 -26
- 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 +7337 -6394
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +154 -154
- package/dist/handsontable.js +7336 -6393
- 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 +98 -102
- package/plugins/autofill/autofill.mjs +97 -101
- package/plugins/base/base.js +61 -28
- package/plugins/base/base.mjs +60 -28
- 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 +107 -99
- package/plugins/columnSorting/columnSorting.mjs +106 -98
- 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 +96 -102
- package/plugins/contextMenu/contextMenu.mjs +95 -101
- 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/contextMenu/predefinedItems/removeColumn.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -1
- package/plugins/copyPaste/copyPaste.js +74 -75
- package/plugins/copyPaste/copyPaste.mjs +74 -75
- package/plugins/customBorders/customBorders.js +57 -50
- package/plugins/customBorders/customBorders.mjs +56 -49
- package/plugins/dragToScroll/dragToScroll.js +50 -54
- package/plugins/dragToScroll/dragToScroll.mjs +49 -52
- package/plugins/dropdownMenu/dropdownMenu.js +136 -131
- package/plugins/dropdownMenu/dropdownMenu.mjs +136 -131
- 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 +66 -53
- 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 +15 -11
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +15 -11
- 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 +328 -279
- package/plugins/nestedRows/nestedRows.mjs +327 -278
- 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/highlight/highlight.js +1 -4
- package/selection/highlight/highlight.mjs +1 -4
- package/selection/range.js +12 -2
- package/selection/range.mjs +12 -2
- package/selection/selection.js +28 -10
- package/selection/selection.mjs +28 -10
- package/selection/utils.js +24 -14
- package/selection/utils.mjs +25 -15
- package/shortcuts/manager.js +1 -1
- package/shortcuts/manager.mjs +1 -1
- 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
@@ -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
|
}
|
@@ -13,9 +13,12 @@ var _utils = require("./utils");
|
|
13
13
|
var _selection = require("../../selection");
|
14
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
15
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
16
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
17
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
16
18
|
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; }
|
17
19
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
18
20
|
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); }
|
21
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
19
22
|
const PLUGIN_KEY = exports.PLUGIN_KEY = 'customBorders';
|
20
23
|
const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 90;
|
21
24
|
|
@@ -74,9 +77,21 @@ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 90;
|
|
74
77
|
* ],
|
75
78
|
* ```
|
76
79
|
*/
|
80
|
+
var _onAfterContextMenuDefaultOptions = /*#__PURE__*/new WeakSet();
|
81
|
+
var _onAfterInit = /*#__PURE__*/new WeakSet();
|
77
82
|
class CustomBorders extends _base.BasePlugin {
|
78
83
|
constructor() {
|
79
84
|
super(...arguments);
|
85
|
+
/**
|
86
|
+
* `afterInit` hook callback.
|
87
|
+
*/
|
88
|
+
_classPrivateMethodInitSpec(this, _onAfterInit);
|
89
|
+
/**
|
90
|
+
* Add border options to context menu.
|
91
|
+
*
|
92
|
+
* @param {object} defaultOptions Context menu items.
|
93
|
+
*/
|
94
|
+
_classPrivateMethodInitSpec(this, _onAfterContextMenuDefaultOptions);
|
80
95
|
/**
|
81
96
|
* Saved borders.
|
82
97
|
*
|
@@ -108,8 +123,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
108
123
|
if (this.enabled) {
|
109
124
|
return;
|
110
125
|
}
|
111
|
-
this.addHook('afterContextMenuDefaultOptions', options => this.
|
112
|
-
this.addHook('init', () => this.
|
126
|
+
this.addHook('afterContextMenuDefaultOptions', options => _classPrivateMethodGet(this, _onAfterContextMenuDefaultOptions, _onAfterContextMenuDefaultOptions2).call(this, options));
|
127
|
+
this.addHook('init', () => _classPrivateMethodGet(this, _onAfterInit, _onAfterInit2).call(this));
|
113
128
|
super.enablePlugin();
|
114
129
|
}
|
115
130
|
|
@@ -163,7 +178,10 @@ class CustomBorders extends _base.BasePlugin {
|
|
163
178
|
normBorder = (0, _utils.normalizeBorder)(borderObject);
|
164
179
|
}
|
165
180
|
const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
|
166
|
-
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType
|
181
|
+
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType, {
|
182
|
+
createCellCoords: this.hot._createCellCoords.bind(this.hot),
|
183
|
+
createCellRange: this.hot._createCellRange.bind(this.hot)
|
184
|
+
});
|
167
185
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
168
186
|
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
169
187
|
(0, _array.arrayEach)(borderKeys, borderKey => {
|
@@ -206,7 +224,10 @@ class CustomBorders extends _base.BasePlugin {
|
|
206
224
|
return this.savedBorders;
|
207
225
|
}
|
208
226
|
const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
|
209
|
-
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType
|
227
|
+
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType, {
|
228
|
+
createCellCoords: this.hot._createCellCoords.bind(this.hot),
|
229
|
+
createCellRange: this.hot._createCellRange.bind(this.hot)
|
230
|
+
});
|
210
231
|
const selectedBorders = [];
|
211
232
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
212
233
|
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
@@ -385,7 +406,7 @@ class CustomBorders extends _base.BasePlugin {
|
|
385
406
|
*/
|
386
407
|
setBorder(row, column, place, remove) {
|
387
408
|
let bordersMeta = this.hot.getCellMeta(row, column).borders;
|
388
|
-
if (!bordersMeta || bordersMeta.border ===
|
409
|
+
if (!bordersMeta || bordersMeta.border === undefined) {
|
389
410
|
bordersMeta = (0, _utils.createEmptyBorders)(row, column);
|
390
411
|
} else {
|
391
412
|
bordersMeta = (0, _utils.normalizeBorder)(bordersMeta);
|
@@ -669,7 +690,7 @@ class CustomBorders extends _base.BasePlugin {
|
|
669
690
|
this.savedBorders = bordersClone;
|
670
691
|
}
|
671
692
|
this.createCustomBorders(bordersClone);
|
672
|
-
} else if (customBorders !==
|
693
|
+
} else if (customBorders !== undefined) {
|
673
694
|
this.createCustomBorders(this.savedBorders);
|
674
695
|
}
|
675
696
|
}
|
@@ -691,49 +712,6 @@ class CustomBorders extends _base.BasePlugin {
|
|
691
712
|
throw new Error('The "left"/"right" properties are not supported for RTL. Please use option "start"/"end".');
|
692
713
|
}
|
693
714
|
}
|
694
|
-
|
695
|
-
/**
|
696
|
-
* Add border options to context menu.
|
697
|
-
*
|
698
|
-
* @private
|
699
|
-
* @param {object} defaultOptions Context menu items.
|
700
|
-
*/
|
701
|
-
onAfterContextMenuDefaultOptions(defaultOptions) {
|
702
|
-
if (!this.hot.getSettings()[PLUGIN_KEY]) {
|
703
|
-
return;
|
704
|
-
}
|
705
|
-
defaultOptions.items.push({
|
706
|
-
name: '---------'
|
707
|
-
}, {
|
708
|
-
key: 'borders',
|
709
|
-
name() {
|
710
|
-
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
711
|
-
},
|
712
|
-
disabled() {
|
713
|
-
const range = this.getSelectedRangeLast();
|
714
|
-
if (!range) {
|
715
|
-
return true;
|
716
|
-
}
|
717
|
-
if (range.isSingleHeader()) {
|
718
|
-
return true;
|
719
|
-
}
|
720
|
-
return this.selection.isSelectedByCorner();
|
721
|
-
},
|
722
|
-
submenu: {
|
723
|
-
items: [(0, _contextMenuItem.top)(this), (0, _contextMenuItem.right)(this), (0, _contextMenuItem.bottom)(this), (0, _contextMenuItem.left)(this), (0, _contextMenuItem.noBorders)(this)]
|
724
|
-
}
|
725
|
-
});
|
726
|
-
}
|
727
|
-
|
728
|
-
/**
|
729
|
-
* `afterInit` hook callback.
|
730
|
-
*
|
731
|
-
* @private
|
732
|
-
*/
|
733
|
-
onAfterInit() {
|
734
|
-
this.changeBorderSettings();
|
735
|
-
}
|
736
|
-
|
737
715
|
/**
|
738
716
|
* Destroys the plugin instance.
|
739
717
|
*/
|
@@ -741,4 +719,33 @@ class CustomBorders extends _base.BasePlugin {
|
|
741
719
|
super.destroy();
|
742
720
|
}
|
743
721
|
}
|
744
|
-
exports.CustomBorders = CustomBorders;
|
722
|
+
exports.CustomBorders = CustomBorders;
|
723
|
+
function _onAfterContextMenuDefaultOptions2(defaultOptions) {
|
724
|
+
if (!this.hot.getSettings()[PLUGIN_KEY]) {
|
725
|
+
return;
|
726
|
+
}
|
727
|
+
defaultOptions.items.push({
|
728
|
+
name: '---------'
|
729
|
+
}, {
|
730
|
+
key: 'borders',
|
731
|
+
name() {
|
732
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
733
|
+
},
|
734
|
+
disabled() {
|
735
|
+
const range = this.getSelectedRangeLast();
|
736
|
+
if (!range) {
|
737
|
+
return true;
|
738
|
+
}
|
739
|
+
if (range.isSingleHeader()) {
|
740
|
+
return true;
|
741
|
+
}
|
742
|
+
return this.selection.isSelectedByCorner();
|
743
|
+
},
|
744
|
+
submenu: {
|
745
|
+
items: [(0, _contextMenuItem.top)(this), (0, _contextMenuItem.right)(this), (0, _contextMenuItem.bottom)(this), (0, _contextMenuItem.left)(this), (0, _contextMenuItem.noBorders)(this)]
|
746
|
+
}
|
747
|
+
});
|
748
|
+
}
|
749
|
+
function _onAfterInit2() {
|
750
|
+
this.changeBorderSettings();
|
751
|
+
}
|
@@ -1,8 +1,11 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
2
|
import "core-js/modules/es.error.cause.js";
|
3
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
4
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
3
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; }
|
4
6
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
5
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); }
|
8
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
6
9
|
import { BasePlugin } from "../base/index.mjs";
|
7
10
|
import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
|
8
11
|
import { rangeEach } from "../../helpers/number.mjs";
|
@@ -69,9 +72,21 @@ export const PLUGIN_PRIORITY = 90;
|
|
69
72
|
* ],
|
70
73
|
* ```
|
71
74
|
*/
|
75
|
+
var _onAfterContextMenuDefaultOptions = /*#__PURE__*/new WeakSet();
|
76
|
+
var _onAfterInit = /*#__PURE__*/new WeakSet();
|
72
77
|
export class CustomBorders extends BasePlugin {
|
73
78
|
constructor() {
|
74
79
|
super(...arguments);
|
80
|
+
/**
|
81
|
+
* `afterInit` hook callback.
|
82
|
+
*/
|
83
|
+
_classPrivateMethodInitSpec(this, _onAfterInit);
|
84
|
+
/**
|
85
|
+
* Add border options to context menu.
|
86
|
+
*
|
87
|
+
* @param {object} defaultOptions Context menu items.
|
88
|
+
*/
|
89
|
+
_classPrivateMethodInitSpec(this, _onAfterContextMenuDefaultOptions);
|
75
90
|
/**
|
76
91
|
* Saved borders.
|
77
92
|
*
|
@@ -103,8 +118,8 @@ export class CustomBorders extends BasePlugin {
|
|
103
118
|
if (this.enabled) {
|
104
119
|
return;
|
105
120
|
}
|
106
|
-
this.addHook('afterContextMenuDefaultOptions', options => this.
|
107
|
-
this.addHook('init', () => this.
|
121
|
+
this.addHook('afterContextMenuDefaultOptions', options => _classPrivateMethodGet(this, _onAfterContextMenuDefaultOptions, _onAfterContextMenuDefaultOptions2).call(this, options));
|
122
|
+
this.addHook('init', () => _classPrivateMethodGet(this, _onAfterInit, _onAfterInit2).call(this));
|
108
123
|
super.enablePlugin();
|
109
124
|
}
|
110
125
|
|
@@ -158,7 +173,10 @@ export class CustomBorders extends BasePlugin {
|
|
158
173
|
normBorder = normalizeBorder(borderObject);
|
159
174
|
}
|
160
175
|
const selectionType = detectSelectionType(selectionRanges);
|
161
|
-
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType
|
176
|
+
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType, {
|
177
|
+
createCellCoords: this.hot._createCellCoords.bind(this.hot),
|
178
|
+
createCellRange: this.hot._createCellRange.bind(this.hot)
|
179
|
+
});
|
162
180
|
arrayEach(selectionRanges, selection => {
|
163
181
|
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
164
182
|
arrayEach(borderKeys, borderKey => {
|
@@ -201,7 +219,10 @@ export class CustomBorders extends BasePlugin {
|
|
201
219
|
return this.savedBorders;
|
202
220
|
}
|
203
221
|
const selectionType = detectSelectionType(selectionRanges);
|
204
|
-
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType
|
222
|
+
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType, {
|
223
|
+
createCellCoords: this.hot._createCellCoords.bind(this.hot),
|
224
|
+
createCellRange: this.hot._createCellRange.bind(this.hot)
|
225
|
+
});
|
205
226
|
const selectedBorders = [];
|
206
227
|
arrayEach(selectionRanges, selection => {
|
207
228
|
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
@@ -380,7 +401,7 @@ export class CustomBorders extends BasePlugin {
|
|
380
401
|
*/
|
381
402
|
setBorder(row, column, place, remove) {
|
382
403
|
let bordersMeta = this.hot.getCellMeta(row, column).borders;
|
383
|
-
if (!bordersMeta || bordersMeta.border ===
|
404
|
+
if (!bordersMeta || bordersMeta.border === undefined) {
|
384
405
|
bordersMeta = createEmptyBorders(row, column);
|
385
406
|
} else {
|
386
407
|
bordersMeta = normalizeBorder(bordersMeta);
|
@@ -664,7 +685,7 @@ export class CustomBorders extends BasePlugin {
|
|
664
685
|
this.savedBorders = bordersClone;
|
665
686
|
}
|
666
687
|
this.createCustomBorders(bordersClone);
|
667
|
-
} else if (customBorders !==
|
688
|
+
} else if (customBorders !== undefined) {
|
668
689
|
this.createCustomBorders(this.savedBorders);
|
669
690
|
}
|
670
691
|
}
|
@@ -686,53 +707,39 @@ export class CustomBorders extends BasePlugin {
|
|
686
707
|
throw new Error('The "left"/"right" properties are not supported for RTL. Please use option "start"/"end".');
|
687
708
|
}
|
688
709
|
}
|
689
|
-
|
690
|
-
/**
|
691
|
-
* Add border options to context menu.
|
692
|
-
*
|
693
|
-
* @private
|
694
|
-
* @param {object} defaultOptions Context menu items.
|
695
|
-
*/
|
696
|
-
onAfterContextMenuDefaultOptions(defaultOptions) {
|
697
|
-
if (!this.hot.getSettings()[PLUGIN_KEY]) {
|
698
|
-
return;
|
699
|
-
}
|
700
|
-
defaultOptions.items.push({
|
701
|
-
name: '---------'
|
702
|
-
}, {
|
703
|
-
key: 'borders',
|
704
|
-
name() {
|
705
|
-
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
706
|
-
},
|
707
|
-
disabled() {
|
708
|
-
const range = this.getSelectedRangeLast();
|
709
|
-
if (!range) {
|
710
|
-
return true;
|
711
|
-
}
|
712
|
-
if (range.isSingleHeader()) {
|
713
|
-
return true;
|
714
|
-
}
|
715
|
-
return this.selection.isSelectedByCorner();
|
716
|
-
},
|
717
|
-
submenu: {
|
718
|
-
items: [menuItemTop(this), menuItemRight(this), menuItemBottom(this), menuItemLeft(this), menuItemNoBorders(this)]
|
719
|
-
}
|
720
|
-
});
|
721
|
-
}
|
722
|
-
|
723
|
-
/**
|
724
|
-
* `afterInit` hook callback.
|
725
|
-
*
|
726
|
-
* @private
|
727
|
-
*/
|
728
|
-
onAfterInit() {
|
729
|
-
this.changeBorderSettings();
|
730
|
-
}
|
731
|
-
|
732
710
|
/**
|
733
711
|
* Destroys the plugin instance.
|
734
712
|
*/
|
735
713
|
destroy() {
|
736
714
|
super.destroy();
|
737
715
|
}
|
716
|
+
}
|
717
|
+
function _onAfterContextMenuDefaultOptions2(defaultOptions) {
|
718
|
+
if (!this.hot.getSettings()[PLUGIN_KEY]) {
|
719
|
+
return;
|
720
|
+
}
|
721
|
+
defaultOptions.items.push({
|
722
|
+
name: '---------'
|
723
|
+
}, {
|
724
|
+
key: 'borders',
|
725
|
+
name() {
|
726
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
727
|
+
},
|
728
|
+
disabled() {
|
729
|
+
const range = this.getSelectedRangeLast();
|
730
|
+
if (!range) {
|
731
|
+
return true;
|
732
|
+
}
|
733
|
+
if (range.isSingleHeader()) {
|
734
|
+
return true;
|
735
|
+
}
|
736
|
+
return this.selection.isSelectedByCorner();
|
737
|
+
},
|
738
|
+
submenu: {
|
739
|
+
items: [menuItemTop(this), menuItemRight(this), menuItemBottom(this), menuItemLeft(this), menuItemNoBorders(this)]
|
740
|
+
}
|
741
|
+
});
|
742
|
+
}
|
743
|
+
function _onAfterInit2() {
|
744
|
+
this.changeBorderSettings();
|
738
745
|
}
|