handsontable 0.0.0-next-08765b9-20230714 → 0.0.0-next-6b996e8-20230714

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (296) hide show
  1. package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
  4. package/3rdparty/walkontable/src/cell/coords.js +11 -50
  5. package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
  6. package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
  7. package/3rdparty/walkontable/src/cell/range.js +7 -38
  8. package/3rdparty/walkontable/src/cell/range.mjs +7 -38
  9. package/3rdparty/walkontable/src/core/_base.js +3 -9
  10. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  11. package/3rdparty/walkontable/src/core/clone.js +2 -2
  12. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  13. package/3rdparty/walkontable/src/core/core.js +2 -3
  14. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  15. package/3rdparty/walkontable/src/event.js +7 -7
  16. package/3rdparty/walkontable/src/event.mjs +7 -7
  17. package/3rdparty/walkontable/src/facade/core.js +2 -2
  18. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  19. package/3rdparty/walkontable/src/index.js +2 -10
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +6 -2
  26. package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
  27. package/3rdparty/walkontable/src/selection.js +295 -0
  28. package/3rdparty/walkontable/src/selection.mjs +290 -0
  29. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  30. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  31. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  32. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  33. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  34. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  35. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  36. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  37. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  38. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  39. package/3rdparty/walkontable/src/table.js +78 -6
  40. package/3rdparty/walkontable/src/table.mjs +79 -7
  41. package/base.js +2 -2
  42. package/base.mjs +2 -2
  43. package/common.d.ts +1 -1
  44. package/core.d.ts +3 -6
  45. package/core.js +290 -173
  46. package/core.mjs +290 -173
  47. package/dataMap/metaManager/metaSchema.js +0 -41
  48. package/dataMap/metaManager/metaSchema.mjs +0 -41
  49. package/dist/handsontable.css +3 -19
  50. package/dist/handsontable.full.css +3 -19
  51. package/dist/handsontable.full.js +5369 -8671
  52. package/dist/handsontable.full.min.css +3 -3
  53. package/dist/handsontable.full.min.js +25 -25
  54. package/dist/handsontable.js +8117 -11419
  55. package/dist/handsontable.min.css +3 -3
  56. package/dist/handsontable.min.js +19 -19
  57. package/editorManager.js +75 -11
  58. package/editorManager.mjs +74 -11
  59. package/editors/textEditor/textEditor.js +11 -3
  60. package/editors/textEditor/textEditor.mjs +12 -4
  61. package/helpers/mixed.js +1 -1
  62. package/helpers/mixed.mjs +1 -1
  63. package/helpers/number.d.ts +0 -1
  64. package/helpers/number.js +0 -18
  65. package/helpers/number.mjs +0 -17
  66. package/package.json +1 -1
  67. package/pluginHooks.d.ts +1 -7
  68. package/pluginHooks.js +1 -106
  69. package/pluginHooks.mjs +1 -106
  70. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -58
  71. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -58
  72. package/plugins/columnSorting/columnSorting.js +0 -38
  73. package/plugins/columnSorting/columnSorting.mjs +2 -38
  74. package/plugins/columnSorting/index.js +1 -3
  75. package/plugins/columnSorting/index.mjs +1 -1
  76. package/plugins/comments/commentEditor.js +0 -1
  77. package/plugins/comments/commentEditor.mjs +0 -1
  78. package/plugins/comments/comments.js +189 -251
  79. package/plugins/comments/comments.mjs +190 -250
  80. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  81. package/plugins/contextMenu/contextMenu.js +30 -72
  82. package/plugins/contextMenu/contextMenu.mjs +31 -73
  83. package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
  84. package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
  85. package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
  86. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
  87. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
  88. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
  89. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
  90. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
  91. package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
  92. package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
  93. package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
  94. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
  95. package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
  96. package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
  97. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
  98. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
  99. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
  100. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
  101. package/plugins/contextMenu/utils.js +16 -28
  102. package/plugins/contextMenu/utils.mjs +15 -27
  103. package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
  104. package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
  105. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
  106. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
  107. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
  108. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
  109. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
  110. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
  111. package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
  112. package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
  113. package/plugins/copyPaste/copyPaste.js +2 -6
  114. package/plugins/copyPaste/copyPaste.mjs +2 -6
  115. package/plugins/customBorders/customBorders.js +20 -23
  116. package/plugins/customBorders/customBorders.mjs +21 -24
  117. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  118. package/plugins/dropdownMenu/dropdownMenu.js +32 -89
  119. package/plugins/dropdownMenu/dropdownMenu.mjs +32 -89
  120. package/plugins/filters/filters.js +14 -31
  121. package/plugins/filters/filters.mjs +13 -30
  122. package/plugins/mergeCells/mergeCells.js +16 -5
  123. package/plugins/mergeCells/mergeCells.mjs +16 -5
  124. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
  125. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
  126. package/plugins/nestedHeaders/nestedHeaders.js +8 -121
  127. package/plugins/nestedHeaders/nestedHeaders.mjs +8 -121
  128. package/plugins/nestedHeaders/stateManager/index.js +0 -37
  129. package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
  130. package/plugins/nestedRows/nestedRows.js +0 -41
  131. package/plugins/nestedRows/nestedRows.mjs +0 -41
  132. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  133. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  134. package/selection/highlight/constants.js +15 -0
  135. package/selection/highlight/constants.mjs +6 -0
  136. package/selection/highlight/highlight.js +71 -256
  137. package/selection/highlight/highlight.mjs +71 -250
  138. package/selection/highlight/types/activeHeader.js +8 -10
  139. package/selection/highlight/types/activeHeader.mjs +8 -10
  140. package/selection/highlight/types/area.js +18 -6
  141. package/selection/highlight/types/area.mjs +18 -6
  142. package/selection/highlight/types/{focus.js → cell.js} +7 -5
  143. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  144. package/selection/highlight/types/customSelection.js +9 -7
  145. package/selection/highlight/types/customSelection.mjs +9 -7
  146. package/selection/highlight/types/fill.js +7 -5
  147. package/selection/highlight/types/fill.mjs +7 -5
  148. package/selection/highlight/types/header.js +18 -9
  149. package/selection/highlight/types/header.mjs +18 -9
  150. package/selection/highlight/types/index.js +35 -0
  151. package/selection/highlight/types/index.mjs +31 -0
  152. package/selection/highlight/visualSelection.js +27 -31
  153. package/selection/highlight/visualSelection.mjs +27 -31
  154. package/selection/index.js +7 -4
  155. package/selection/index.mjs +3 -2
  156. package/selection/mouseEventHandler.js +1 -1
  157. package/selection/mouseEventHandler.mjs +1 -1
  158. package/selection/range.js +8 -8
  159. package/selection/range.mjs +8 -8
  160. package/selection/selection.js +154 -290
  161. package/selection/selection.mjs +153 -287
  162. package/selection/transformation.js +90 -232
  163. package/selection/transformation.mjs +90 -232
  164. package/selection/utils.js +21 -15
  165. package/selection/utils.mjs +21 -16
  166. package/settings.d.ts +0 -2
  167. package/shortcuts/manager.js +0 -2
  168. package/shortcuts/manager.mjs +0 -2
  169. package/shortcuts/recorder.js +2 -2
  170. package/shortcuts/recorder.mjs +2 -2
  171. package/shortcuts/utils.js +5 -19
  172. package/shortcuts/utils.mjs +4 -18
  173. package/tableView.js +13 -67
  174. package/tableView.mjs +13 -67
  175. package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
  176. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  177. package/3rdparty/walkontable/src/selection/constants.js +0 -62
  178. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  179. package/3rdparty/walkontable/src/selection/index.js +0 -26
  180. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  181. package/3rdparty/walkontable/src/selection/manager.js +0 -259
  182. package/3rdparty/walkontable/src/selection/manager.mjs +0 -254
  183. package/3rdparty/walkontable/src/selection/scanner.js +0 -270
  184. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
  185. package/3rdparty/walkontable/src/selection/selection.js +0 -101
  186. package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
  187. package/core/focusCatcher/focusDetector.js +0 -58
  188. package/core/focusCatcher/focusDetector.mjs +0 -54
  189. package/core/focusCatcher/index.js +0 -142
  190. package/core/focusCatcher/index.mjs +0 -138
  191. package/core/index.js +0 -9
  192. package/core/index.mjs +0 -1
  193. package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
  194. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
  195. package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
  196. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
  197. package/plugins/comments/contextMenuItem/removeComment.js +0 -38
  198. package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
  199. package/selection/highlight/types/areaLayered.js +0 -31
  200. package/selection/highlight/types/areaLayered.mjs +0 -26
  201. package/selection/highlight/types/column.js +0 -27
  202. package/selection/highlight/types/column.mjs +0 -22
  203. package/selection/highlight/types/row.js +0 -27
  204. package/selection/highlight/types/row.mjs +0 -22
  205. package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
  206. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
  207. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
  208. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  209. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  210. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
  211. package/shortcutContexts/commands/editor/index.js +0 -16
  212. package/shortcutContexts/commands/editor/index.mjs +0 -12
  213. package/shortcutContexts/commands/editor/open.js +0 -27
  214. package/shortcutContexts/commands/editor/open.mjs +0 -23
  215. package/shortcutContexts/commands/emptySelectedCells.js +0 -11
  216. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  217. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  218. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
  219. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
  220. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -17
  221. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  222. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  223. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  224. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
  225. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  226. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
  227. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  228. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
  229. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
  230. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
  231. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
  232. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
  233. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
  234. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
  235. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
  236. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
  237. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
  238. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
  239. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
  240. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
  241. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  242. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
  243. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  244. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
  245. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
  246. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -17
  247. package/shortcutContexts/commands/index.js +0 -35
  248. package/shortcutContexts/commands/index.mjs +0 -31
  249. package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
  250. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
  251. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -31
  252. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -27
  253. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  254. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  255. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
  256. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  257. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
  258. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  259. package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
  260. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  261. package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
  262. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  263. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
  264. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
  265. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
  266. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
  267. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
  268. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
  269. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
  270. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
  271. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
  272. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
  273. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
  274. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
  275. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
  276. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
  277. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
  278. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
  279. package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
  280. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
  281. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -31
  282. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -27
  283. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
  284. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
  285. package/shortcutContexts/commands/scrollToFocusedCell.js +0 -36
  286. package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -32
  287. package/shortcutContexts/commands/selectAll.js +0 -10
  288. package/shortcutContexts/commands/selectAll.mjs +0 -6
  289. package/shortcutContexts/constants.js +0 -13
  290. package/shortcutContexts/constants.mjs +0 -8
  291. package/shortcutContexts/editor.js +0 -25
  292. package/shortcutContexts/editor.mjs +0 -21
  293. package/shortcutContexts/grid.js +0 -163
  294. package/shortcutContexts/grid.mjs +0 -159
  295. package/shortcutContexts/index.js +0 -24
  296. package/shortcutContexts/index.mjs +0 -11
@@ -3,9 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  var _base = require("../base");
5
5
  var _array = require("../../helpers/array");
6
- var _object = require("../../helpers/object");
7
6
  var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
8
- var _utils = require("../contextMenu/utils");
9
7
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
10
8
  var _element = require("../../helpers/dom/element");
11
9
  var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
@@ -23,7 +21,6 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
23
21
  const PLUGIN_PRIORITY = 230;
24
22
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
25
23
  const BUTTON_CLASS_NAME = 'changeType';
26
- const SHORTCUTS_GROUP = PLUGIN_KEY;
27
24
 
28
25
  /* eslint-disable jsdoc/require-description-complete-sentence */
29
26
  /**
@@ -160,7 +157,6 @@ class DropdownMenu extends _base.BasePlugin {
160
157
  if (typeof settings.callback === 'function') {
161
158
  this.commandExecutor.setCommonCallback(settings.callback);
162
159
  }
163
- this.registerShortcuts();
164
160
  super.enablePlugin();
165
161
  this.callOnPluginsReady(() => {
166
162
  this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
@@ -211,68 +207,9 @@ class DropdownMenu extends _base.BasePlugin {
211
207
  if (this.menu) {
212
208
  this.menu.destroy();
213
209
  }
214
- this.unregisterShortcuts();
215
210
  super.disablePlugin();
216
211
  }
217
212
 
218
- /**
219
- * Register shortcuts responsible for toggling dropdown menu.
220
- *
221
- * @private
222
- */
223
- registerShortcuts() {
224
- const context = this.hot.getShortcutManager().getContext('grid');
225
- const callback = () => {
226
- const {
227
- highlight
228
- } = this.hot.getSelectedRangeLast();
229
- if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
230
- this.hot.selectColumns(highlight.col, highlight.col, -1);
231
- const {
232
- from
233
- } = this.hot.getSelectedRangeLast();
234
- const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
235
- const target = this.hot.getCell(-1, from.col, true);
236
- const rect = target.getBoundingClientRect();
237
- this.open({
238
- left: rect.left + offset.left,
239
- top: rect.top + target.offsetHeight + offset.top
240
- }, {
241
- left: rect.width
242
- });
243
- this.hot._registerTimeout(() => {
244
- this.menu.selectFirstCell();
245
- });
246
- }
247
- };
248
- context.addShortcuts([{
249
- keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
250
- callback,
251
- runOnlyIf: () => {
252
- var _this$hot$getSelected;
253
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
254
- },
255
- group: SHORTCUTS_GROUP
256
- }, {
257
- keys: [['Shift', 'Alt', 'ArrowDown']],
258
- callback,
259
- runOnlyIf: () => {
260
- var _this$hot$getSelected2;
261
- return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
262
- },
263
- group: SHORTCUTS_GROUP
264
- }]);
265
- }
266
-
267
- /**
268
- * Unregister shortcuts responsible for toggling dropdown menu.
269
- *
270
- * @private
271
- */
272
- unregisterShortcuts() {
273
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
274
- }
275
-
276
213
  /**
277
214
  * Registers the DOM listeners.
278
215
  *
@@ -285,30 +222,23 @@ class DropdownMenu extends _base.BasePlugin {
285
222
  /**
286
223
  * Opens menu and re-position it based on the passed coordinates.
287
224
  *
288
- * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
289
- * which contains coordinates relative to the browsers viewport (without included scroll offsets).
290
- * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
291
- * coordinates.
292
- * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
293
- * the offset to the menu position.
225
+ * @param {object|Event} position An object with `pageX` and `pageY` properties which contains values relative to
226
+ * the top left of the fully rendered content area in the browser or with `clientX`
227
+ * and `clientY` properties which contains values relative to the upper left edge
228
+ * of the content area (the viewport) of the browser window. This object is structurally
229
+ * compatible with native mouse event so it can be used either.
294
230
  * @fires Hooks#beforeDropdownMenuShow
295
231
  * @fires Hooks#afterDropdownMenuShow
296
232
  */
233
+
297
234
  open(position) {
298
- var _this$menu;
299
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
300
- above: 0,
301
- below: 0,
302
- left: 0,
303
- right: 0
304
- };
305
- if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
235
+ if (!this.menu) {
306
236
  return;
307
237
  }
308
238
  this.menu.open();
309
- (0, _object.objectEach)(offset, (value, key) => {
310
- this.menu.setOffset(key, value);
311
- });
239
+ if (position.width) {
240
+ this.menu.setOffset('left', position.width);
241
+ }
312
242
  this.menu.setPosition(position);
313
243
  }
314
244
 
@@ -316,8 +246,10 @@ class DropdownMenu extends _base.BasePlugin {
316
246
  * Closes dropdown menu.
317
247
  */
318
248
  close() {
319
- var _this$menu2;
320
- (_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
249
+ if (!this.menu) {
250
+ return;
251
+ }
252
+ this.menu.close();
321
253
  }
322
254
 
323
255
  /**
@@ -382,14 +314,26 @@ class DropdownMenu extends _base.BasePlugin {
382
314
  */
383
315
  onTableClick(event) {
384
316
  event.stopPropagation();
385
- if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
386
- const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
317
+ if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME) && !this.menu.isOpened()) {
318
+ let offsetTop = 0;
319
+ let offsetLeft = 0;
320
+ if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
321
+ const {
322
+ frameElement
323
+ } = this.hot.rootWindow;
324
+ const {
325
+ top,
326
+ left
327
+ } = frameElement.getBoundingClientRect();
328
+ offsetTop = top;
329
+ offsetLeft = left;
330
+ }
387
331
  const rect = event.target.getBoundingClientRect();
388
332
  this.open({
389
- left: rect.left + offset.left,
390
- top: rect.top + event.target.offsetHeight + 3 + offset.top
391
- }, {
392
- left: rect.width
333
+ left: rect.left + offsetLeft,
334
+ top: rect.top + event.target.offsetHeight + 3 + offsetTop,
335
+ width: rect.width,
336
+ height: rect.height
393
337
  });
394
338
  }
395
339
  }
@@ -428,7 +372,6 @@ class DropdownMenu extends _base.BasePlugin {
428
372
  const button = this.hot.rootDocument.createElement('button');
429
373
  button.className = BUTTON_CLASS_NAME;
430
374
  button.type = 'button';
431
- button.tabIndex = -1;
432
375
 
433
376
  // prevent page reload on button click
434
377
  button.onclick = function () {
@@ -1,8 +1,6 @@
1
1
  import { BasePlugin } from "../base/index.mjs";
2
2
  import { arrayEach } from "../../helpers/array.mjs";
3
- import { objectEach } from "../../helpers/object.mjs";
4
3
  import CommandExecutor from "../contextMenu/commandExecutor.mjs";
5
- import { getDocumentOffsetByElement } from "../contextMenu/utils.mjs";
6
4
  import EventManager from "../../eventManager.mjs";
7
5
  import { hasClass } from "../../helpers/dom/element.mjs";
8
6
  import ItemsFactory from "../contextMenu/itemsFactory.mjs";
@@ -17,7 +15,6 @@ Hooks.getSingleton().register('afterDropdownMenuExecute');
17
15
  export const PLUGIN_KEY = 'dropdownMenu';
18
16
  export const PLUGIN_PRIORITY = 230;
19
17
  const BUTTON_CLASS_NAME = 'changeType';
20
- const SHORTCUTS_GROUP = PLUGIN_KEY;
21
18
 
22
19
  /* eslint-disable jsdoc/require-description-complete-sentence */
23
20
  /**
@@ -154,7 +151,6 @@ export class DropdownMenu extends BasePlugin {
154
151
  if (typeof settings.callback === 'function') {
155
152
  this.commandExecutor.setCommonCallback(settings.callback);
156
153
  }
157
- this.registerShortcuts();
158
154
  super.enablePlugin();
159
155
  this.callOnPluginsReady(() => {
160
156
  this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
@@ -205,68 +201,9 @@ export class DropdownMenu extends BasePlugin {
205
201
  if (this.menu) {
206
202
  this.menu.destroy();
207
203
  }
208
- this.unregisterShortcuts();
209
204
  super.disablePlugin();
210
205
  }
211
206
 
212
- /**
213
- * Register shortcuts responsible for toggling dropdown menu.
214
- *
215
- * @private
216
- */
217
- registerShortcuts() {
218
- const context = this.hot.getShortcutManager().getContext('grid');
219
- const callback = () => {
220
- const {
221
- highlight
222
- } = this.hot.getSelectedRangeLast();
223
- if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
224
- this.hot.selectColumns(highlight.col, highlight.col, -1);
225
- const {
226
- from
227
- } = this.hot.getSelectedRangeLast();
228
- const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
229
- const target = this.hot.getCell(-1, from.col, true);
230
- const rect = target.getBoundingClientRect();
231
- this.open({
232
- left: rect.left + offset.left,
233
- top: rect.top + target.offsetHeight + offset.top
234
- }, {
235
- left: rect.width
236
- });
237
- this.hot._registerTimeout(() => {
238
- this.menu.selectFirstCell();
239
- });
240
- }
241
- };
242
- context.addShortcuts([{
243
- keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
244
- callback,
245
- runOnlyIf: () => {
246
- var _this$hot$getSelected;
247
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
248
- },
249
- group: SHORTCUTS_GROUP
250
- }, {
251
- keys: [['Shift', 'Alt', 'ArrowDown']],
252
- callback,
253
- runOnlyIf: () => {
254
- var _this$hot$getSelected2;
255
- return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
256
- },
257
- group: SHORTCUTS_GROUP
258
- }]);
259
- }
260
-
261
- /**
262
- * Unregister shortcuts responsible for toggling dropdown menu.
263
- *
264
- * @private
265
- */
266
- unregisterShortcuts() {
267
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
268
- }
269
-
270
207
  /**
271
208
  * Registers the DOM listeners.
272
209
  *
@@ -279,30 +216,23 @@ export class DropdownMenu extends BasePlugin {
279
216
  /**
280
217
  * Opens menu and re-position it based on the passed coordinates.
281
218
  *
282
- * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
283
- * which contains coordinates relative to the browsers viewport (without included scroll offsets).
284
- * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
285
- * coordinates.
286
- * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
287
- * the offset to the menu position.
219
+ * @param {object|Event} position An object with `pageX` and `pageY` properties which contains values relative to
220
+ * the top left of the fully rendered content area in the browser or with `clientX`
221
+ * and `clientY` properties which contains values relative to the upper left edge
222
+ * of the content area (the viewport) of the browser window. This object is structurally
223
+ * compatible with native mouse event so it can be used either.
288
224
  * @fires Hooks#beforeDropdownMenuShow
289
225
  * @fires Hooks#afterDropdownMenuShow
290
226
  */
227
+
291
228
  open(position) {
292
- var _this$menu;
293
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
294
- above: 0,
295
- below: 0,
296
- left: 0,
297
- right: 0
298
- };
299
- if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
229
+ if (!this.menu) {
300
230
  return;
301
231
  }
302
232
  this.menu.open();
303
- objectEach(offset, (value, key) => {
304
- this.menu.setOffset(key, value);
305
- });
233
+ if (position.width) {
234
+ this.menu.setOffset('left', position.width);
235
+ }
306
236
  this.menu.setPosition(position);
307
237
  }
308
238
 
@@ -310,8 +240,10 @@ export class DropdownMenu extends BasePlugin {
310
240
  * Closes dropdown menu.
311
241
  */
312
242
  close() {
313
- var _this$menu2;
314
- (_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
243
+ if (!this.menu) {
244
+ return;
245
+ }
246
+ this.menu.close();
315
247
  }
316
248
 
317
249
  /**
@@ -376,14 +308,26 @@ export class DropdownMenu extends BasePlugin {
376
308
  */
377
309
  onTableClick(event) {
378
310
  event.stopPropagation();
379
- if (hasClass(event.target, BUTTON_CLASS_NAME)) {
380
- const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
311
+ if (hasClass(event.target, BUTTON_CLASS_NAME) && !this.menu.isOpened()) {
312
+ let offsetTop = 0;
313
+ let offsetLeft = 0;
314
+ if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
315
+ const {
316
+ frameElement
317
+ } = this.hot.rootWindow;
318
+ const {
319
+ top,
320
+ left
321
+ } = frameElement.getBoundingClientRect();
322
+ offsetTop = top;
323
+ offsetLeft = left;
324
+ }
381
325
  const rect = event.target.getBoundingClientRect();
382
326
  this.open({
383
- left: rect.left + offset.left,
384
- top: rect.top + event.target.offsetHeight + 3 + offset.top
385
- }, {
386
- left: rect.width
327
+ left: rect.left + offsetLeft,
328
+ top: rect.top + event.target.offsetHeight + 3 + offsetTop,
329
+ width: rect.width,
330
+ height: rect.height
387
331
  });
388
332
  }
389
333
  }
@@ -422,7 +366,6 @@ export class DropdownMenu extends BasePlugin {
422
366
  const button = this.hot.rootDocument.createElement('button');
423
367
  button.className = BUTTON_CLASS_NAME;
424
368
  button.type = 'button';
425
- button.tabIndex = -1;
426
369
 
427
370
  // prevent page reload on button click
428
371
  button.onclick = function () {
@@ -27,8 +27,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
27
27
  const PLUGIN_KEY = 'filters';
28
28
  exports.PLUGIN_KEY = PLUGIN_KEY;
29
29
  const PLUGIN_PRIORITY = 250;
30
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
31
- const SHORTCUTS_GROUP = PLUGIN_KEY;
32
30
 
33
31
  /**
34
32
  * @plugin Filters
@@ -65,6 +63,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
65
63
  * ```
66
64
  * :::
67
65
  */
66
+ exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
68
67
  class Filters extends _base.BasePlugin {
69
68
  static get PLUGIN_KEY() {
70
69
  return PLUGIN_KEY;
@@ -211,7 +210,6 @@ class Filters extends _base.BasePlugin {
211
210
  this.dropdownMenuPlugin.disablePlugin();
212
211
  this.dropdownMenuPlugin.enablePlugin();
213
212
  }
214
- this.registerShortcuts();
215
213
  super.enablePlugin();
216
214
  }
217
215
 
@@ -232,36 +230,9 @@ class Filters extends _base.BasePlugin {
232
230
  this.conditionCollection = null;
233
231
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
234
232
  }
235
- this.unregisterShortcuts();
236
233
  super.disablePlugin();
237
234
  }
238
235
 
239
- /**
240
- * Register shortcuts responsible for clearing the filters.
241
- *
242
- * @private
243
- */
244
- registerShortcuts() {
245
- this.hot.getShortcutManager().getContext('grid').addShortcut({
246
- keys: [['Alt', 'A']],
247
- stopPropagation: true,
248
- callback: () => {
249
- this.clearConditions();
250
- this.filter();
251
- },
252
- group: SHORTCUTS_GROUP
253
- });
254
- }
255
-
256
- /**
257
- * Unregister shortcuts responsible for clearing the filters.
258
- *
259
- * @private
260
- */
261
- unregisterShortcuts() {
262
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
263
- }
264
-
265
236
  /* eslint-disable jsdoc/require-description-complete-sentence */
266
237
  /**
267
238
  * @memberof Filters#
@@ -451,6 +422,7 @@ class Filters extends _base.BasePlugin {
451
422
  this.hot.runHooks('afterFilter', conditions);
452
423
  this.hot.view.adjustElementsSize(true);
453
424
  this.hot.render();
425
+ this.clearColumnSelection();
454
426
  }
455
427
 
456
428
  /**
@@ -472,6 +444,18 @@ class Filters extends _base.BasePlugin {
472
444
  };
473
445
  }
474
446
 
447
+ /**
448
+ * Clears column selection.
449
+ *
450
+ * @private
451
+ */
452
+ clearColumnSelection() {
453
+ const selectedColumn = this.getSelectedColumn();
454
+ if (selectedColumn !== null) {
455
+ this.hot.selectCell(0, selectedColumn.visualIndex);
456
+ }
457
+ }
458
+
475
459
  /**
476
460
  * Returns handsontable source data with cell meta based on current selection.
477
461
  *
@@ -671,7 +655,6 @@ class Filters extends _base.BasePlugin {
671
655
  this.components.forEach(component => component.saveState(physicalIndex));
672
656
  this.filtersRowsMap.clear();
673
657
  this.filter();
674
- this.hot.selectCell(0, selectedColumn.visualIndex);
675
658
  }
676
659
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 ? void 0 : _this$dropdownMenuPlu3.close();
677
660
  }
@@ -20,7 +20,6 @@ import { CONDITION_NONE, CONDITION_BY_VALUE, OPERATION_AND, OPERATION_OR, OPERAT
20
20
  import { TrimmingMap } from "../../translations/index.mjs";
21
21
  export const PLUGIN_KEY = 'filters';
22
22
  export const PLUGIN_PRIORITY = 250;
23
- const SHORTCUTS_GROUP = PLUGIN_KEY;
24
23
 
25
24
  /**
26
25
  * @plugin Filters
@@ -203,7 +202,6 @@ export class Filters extends BasePlugin {
203
202
  this.dropdownMenuPlugin.disablePlugin();
204
203
  this.dropdownMenuPlugin.enablePlugin();
205
204
  }
206
- this.registerShortcuts();
207
205
  super.enablePlugin();
208
206
  }
209
207
 
@@ -224,36 +222,9 @@ export class Filters extends BasePlugin {
224
222
  this.conditionCollection = null;
225
223
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
226
224
  }
227
- this.unregisterShortcuts();
228
225
  super.disablePlugin();
229
226
  }
230
227
 
231
- /**
232
- * Register shortcuts responsible for clearing the filters.
233
- *
234
- * @private
235
- */
236
- registerShortcuts() {
237
- this.hot.getShortcutManager().getContext('grid').addShortcut({
238
- keys: [['Alt', 'A']],
239
- stopPropagation: true,
240
- callback: () => {
241
- this.clearConditions();
242
- this.filter();
243
- },
244
- group: SHORTCUTS_GROUP
245
- });
246
- }
247
-
248
- /**
249
- * Unregister shortcuts responsible for clearing the filters.
250
- *
251
- * @private
252
- */
253
- unregisterShortcuts() {
254
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
255
- }
256
-
257
228
  /* eslint-disable jsdoc/require-description-complete-sentence */
258
229
  /**
259
230
  * @memberof Filters#
@@ -443,6 +414,7 @@ export class Filters extends BasePlugin {
443
414
  this.hot.runHooks('afterFilter', conditions);
444
415
  this.hot.view.adjustElementsSize(true);
445
416
  this.hot.render();
417
+ this.clearColumnSelection();
446
418
  }
447
419
 
448
420
  /**
@@ -464,6 +436,18 @@ export class Filters extends BasePlugin {
464
436
  };
465
437
  }
466
438
 
439
+ /**
440
+ * Clears column selection.
441
+ *
442
+ * @private
443
+ */
444
+ clearColumnSelection() {
445
+ const selectedColumn = this.getSelectedColumn();
446
+ if (selectedColumn !== null) {
447
+ this.hot.selectCell(0, selectedColumn.visualIndex);
448
+ }
449
+ }
450
+
467
451
  /**
468
452
  * Returns handsontable source data with cell meta based on current selection.
469
453
  *
@@ -663,7 +647,6 @@ export class Filters extends BasePlugin {
663
647
  this.components.forEach(component => component.saveState(physicalIndex));
664
648
  this.filtersRowsMap.clear();
665
649
  this.filter();
666
- this.hot.selectCell(0, selectedColumn.visualIndex);
667
650
  }
668
651
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 ? void 0 : _this$dropdownMenuPlu3.close();
669
652
  }
@@ -188,6 +188,9 @@ class MergeCells extends _base.BasePlugin {
188
188
  this.addHook('afterDrawSelection', function () {
189
189
  return _this.onAfterDrawSelection(...arguments);
190
190
  });
191
+ this.addHook('beforeRemoveCellClassNames', function () {
192
+ return _this.onBeforeRemoveCellClassNames(...arguments);
193
+ });
191
194
  this.addHook('beforeUndoStackChange', (action, source) => {
192
195
  if (source === 'MergeCells') {
193
196
  return false;
@@ -571,11 +574,8 @@ class MergeCells extends _base.BasePlugin {
571
574
  gridContext.addShortcut({
572
575
  keys: [['Control', 'm']],
573
576
  callback: () => {
574
- const range = this.hot.getSelectedRangeLast();
575
- if (range && !range.isSingleHeader()) {
576
- this.toggleMerge(range);
577
- this.hot.render();
578
- }
577
+ this.toggleMerge(this.hot.getSelectedRangeLast());
578
+ this.hot.render();
579
579
  },
580
580
  runOnlyIf: event => !event.altKey,
581
581
  // right ALT in some systems triggers ALT+CTRL
@@ -1198,5 +1198,16 @@ class MergeCells extends _base.BasePlugin {
1198
1198
  }
1199
1199
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1200
1200
  }
1201
+
1202
+ /**
1203
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1204
+ *
1205
+ * @private
1206
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1207
+ * all the cells in the table.
1208
+ */
1209
+ onBeforeRemoveCellClassNames() {
1210
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1211
+ }
1201
1212
  }
1202
1213
  exports.MergeCells = MergeCells;
@@ -182,6 +182,9 @@ export class MergeCells extends BasePlugin {
182
182
  this.addHook('afterDrawSelection', function () {
183
183
  return _this.onAfterDrawSelection(...arguments);
184
184
  });
185
+ this.addHook('beforeRemoveCellClassNames', function () {
186
+ return _this.onBeforeRemoveCellClassNames(...arguments);
187
+ });
185
188
  this.addHook('beforeUndoStackChange', (action, source) => {
186
189
  if (source === 'MergeCells') {
187
190
  return false;
@@ -565,11 +568,8 @@ export class MergeCells extends BasePlugin {
565
568
  gridContext.addShortcut({
566
569
  keys: [['Control', 'm']],
567
570
  callback: () => {
568
- const range = this.hot.getSelectedRangeLast();
569
- if (range && !range.isSingleHeader()) {
570
- this.toggleMerge(range);
571
- this.hot.render();
572
- }
571
+ this.toggleMerge(this.hot.getSelectedRangeLast());
572
+ this.hot.render();
573
573
  },
574
574
  runOnlyIf: event => !event.altKey,
575
575
  // right ALT in some systems triggers ALT+CTRL
@@ -1192,4 +1192,15 @@ export class MergeCells extends BasePlugin {
1192
1192
  }
1193
1193
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1194
1194
  }
1195
+
1196
+ /**
1197
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1198
+ *
1199
+ * @private
1200
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1201
+ * all the cells in the table.
1202
+ */
1203
+ onBeforeRemoveCellClassNames() {
1204
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1205
+ }
1195
1206
  }