handsontable 0.0.0-next-b66c79f-20230713 → 0.0.0-next-08765b9-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 (373) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +87 -33
  3. package/3rdparty/walkontable/src/cell/coords.mjs +87 -33
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +92 -46
  6. package/3rdparty/walkontable/src/cell/range.mjs +92 -46
  7. package/3rdparty/walkontable/src/core/_base.js +41 -33
  8. package/3rdparty/walkontable/src/core/_base.mjs +41 -33
  9. package/3rdparty/walkontable/src/core/clone.js +8 -5
  10. package/3rdparty/walkontable/src/core/clone.mjs +8 -5
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +9 -8
  14. package/3rdparty/walkontable/src/event.mjs +9 -8
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +11 -9
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +11 -9
  21. package/3rdparty/walkontable/src/overlay/bottom.js +10 -8
  22. package/3rdparty/walkontable/src/overlay/bottom.mjs +10 -8
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  25. package/3rdparty/walkontable/src/overlay/top.js +12 -14
  26. package/3rdparty/walkontable/src/overlay/top.mjs +12 -14
  27. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +16 -13
  28. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +16 -13
  29. package/3rdparty/walkontable/src/overlays.js +75 -80
  30. package/3rdparty/walkontable/src/overlays.mjs +75 -80
  31. package/3rdparty/walkontable/src/scroll.js +27 -24
  32. package/3rdparty/walkontable/src/scroll.mjs +27 -24
  33. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  34. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  35. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  36. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  37. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  38. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  39. package/3rdparty/walkontable/src/selection/index.js +26 -0
  40. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  41. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  42. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  43. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  44. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  45. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  46. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  47. package/3rdparty/walkontable/src/settings.js +18 -17
  48. package/3rdparty/walkontable/src/settings.mjs +18 -17
  49. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  50. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  51. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  52. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  53. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  59. package/3rdparty/walkontable/src/table.js +48 -115
  60. package/3rdparty/walkontable/src/table.mjs +49 -116
  61. package/base.js +2 -2
  62. package/base.mjs +2 -2
  63. package/core/focusCatcher/focusDetector.js +58 -0
  64. package/core/focusCatcher/focusDetector.mjs +54 -0
  65. package/core/focusCatcher/index.js +142 -0
  66. package/core/focusCatcher/index.mjs +138 -0
  67. package/core/index.js +9 -0
  68. package/core/index.mjs +1 -0
  69. package/core.d.ts +6 -3
  70. package/core.js +181 -298
  71. package/core.mjs +181 -298
  72. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -1
  73. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
  74. package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
  75. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  76. package/dataMap/metaManager/metaSchema.js +41 -0
  77. package/dataMap/metaManager/metaSchema.mjs +41 -0
  78. package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
  79. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +3 -2
  80. package/dataMap/metaManager/utils.js +4 -2
  81. package/dataMap/metaManager/utils.mjs +4 -2
  82. package/dist/handsontable.css +19 -3
  83. package/dist/handsontable.full.css +19 -3
  84. package/dist/handsontable.full.js +10739 -7037
  85. package/dist/handsontable.full.min.css +3 -3
  86. package/dist/handsontable.full.min.js +25 -25
  87. package/dist/handsontable.js +24884 -21182
  88. package/dist/handsontable.min.css +3 -3
  89. package/dist/handsontable.min.js +19 -19
  90. package/editorManager.js +11 -75
  91. package/editorManager.mjs +11 -74
  92. package/editors/autocompleteEditor/autocompleteEditor.js +70 -67
  93. package/editors/autocompleteEditor/autocompleteEditor.mjs +70 -67
  94. package/editors/baseEditor/baseEditor.js +1 -1
  95. package/editors/baseEditor/baseEditor.mjs +1 -1
  96. package/editors/dateEditor/dateEditor.js +2 -1
  97. package/editors/dateEditor/dateEditor.mjs +2 -1
  98. package/editors/textEditor/textEditor.js +3 -11
  99. package/editors/textEditor/textEditor.mjs +4 -12
  100. package/helpers/mixed.js +1 -1
  101. package/helpers/mixed.mjs +1 -1
  102. package/helpers/number.d.ts +1 -0
  103. package/helpers/number.js +18 -0
  104. package/helpers/number.mjs +17 -0
  105. package/helpers/object.js +1 -0
  106. package/helpers/object.mjs +1 -0
  107. package/index.js +5 -5
  108. package/index.mjs +5 -5
  109. package/package.json +1 -1
  110. package/pluginHooks.d.ts +7 -1
  111. package/pluginHooks.js +106 -1
  112. package/pluginHooks.mjs +106 -1
  113. package/plugins/autoColumnSize/autoColumnSize.js +4 -1
  114. package/plugins/autoColumnSize/autoColumnSize.mjs +4 -1
  115. package/plugins/collapsibleColumns/collapsibleColumns.js +110 -40
  116. package/plugins/collapsibleColumns/collapsibleColumns.mjs +110 -40
  117. package/plugins/columnSorting/columnSorting.js +40 -1
  118. package/plugins/columnSorting/columnSorting.mjs +40 -3
  119. package/plugins/columnSorting/columnStatesManager.js +2 -1
  120. package/plugins/columnSorting/columnStatesManager.mjs +2 -1
  121. package/plugins/columnSorting/index.js +3 -1
  122. package/plugins/columnSorting/index.mjs +1 -1
  123. package/plugins/comments/commentEditor.js +1 -0
  124. package/plugins/comments/commentEditor.mjs +1 -0
  125. package/plugins/comments/comments.js +253 -191
  126. package/plugins/comments/comments.mjs +252 -192
  127. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  128. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  129. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  130. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  131. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  132. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  133. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  134. package/plugins/contextMenu/contextMenu.js +72 -30
  135. package/plugins/contextMenu/contextMenu.mjs +73 -31
  136. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  137. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  138. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  139. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  140. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  141. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  142. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  143. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  144. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  145. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  146. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  147. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  148. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  149. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  150. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  151. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  152. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  153. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  154. package/plugins/contextMenu/utils.js +28 -16
  155. package/plugins/contextMenu/utils.mjs +27 -15
  156. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  157. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  158. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  159. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  160. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  161. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  162. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  163. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  164. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  165. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  166. package/plugins/copyPaste/copyPaste.js +12 -6
  167. package/plugins/copyPaste/copyPaste.mjs +12 -6
  168. package/plugins/customBorders/customBorders.js +36 -29
  169. package/plugins/customBorders/customBorders.mjs +37 -30
  170. package/plugins/customBorders/utils.js +3 -3
  171. package/plugins/customBorders/utils.mjs +3 -3
  172. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  173. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  174. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  175. package/plugins/filters/conditionCollection.js +6 -5
  176. package/plugins/filters/conditionCollection.mjs +6 -5
  177. package/plugins/filters/filters.js +44 -21
  178. package/plugins/filters/filters.mjs +43 -20
  179. package/plugins/formulas/engine/register.js +3 -3
  180. package/plugins/formulas/engine/register.mjs +3 -3
  181. package/plugins/formulas/engine/settings.js +6 -3
  182. package/plugins/formulas/engine/settings.mjs +6 -3
  183. package/plugins/formulas/formulas.js +151 -143
  184. package/plugins/formulas/formulas.mjs +151 -143
  185. package/plugins/formulas/indexSyncer/axisSyncer.js +115 -79
  186. package/plugins/formulas/indexSyncer/axisSyncer.mjs +115 -79
  187. package/plugins/formulas/indexSyncer/index.js +100 -64
  188. package/plugins/formulas/indexSyncer/index.mjs +100 -64
  189. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  190. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
  191. package/plugins/hiddenColumns/hiddenColumns.js +51 -34
  192. package/plugins/hiddenColumns/hiddenColumns.mjs +51 -34
  193. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  194. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
  195. package/plugins/hiddenRows/hiddenRows.js +50 -33
  196. package/plugins/hiddenRows/hiddenRows.mjs +50 -33
  197. package/plugins/manualRowResize/manualRowResize.js +2 -1
  198. package/plugins/manualRowResize/manualRowResize.mjs +2 -1
  199. package/plugins/mergeCells/mergeCells.js +6 -17
  200. package/plugins/mergeCells/mergeCells.mjs +6 -17
  201. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  202. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  203. package/plugins/nestedHeaders/nestedHeaders.js +209 -75
  204. package/plugins/nestedHeaders/nestedHeaders.mjs +208 -74
  205. package/plugins/nestedHeaders/stateManager/headersTree.js +58 -38
  206. package/plugins/nestedHeaders/stateManager/headersTree.mjs +58 -38
  207. package/plugins/nestedHeaders/stateManager/index.js +107 -49
  208. package/plugins/nestedHeaders/stateManager/index.mjs +105 -47
  209. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +1 -1
  210. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +1 -1
  211. package/plugins/nestedHeaders/stateManager/sourceSettings.js +57 -37
  212. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +57 -37
  213. package/plugins/nestedHeaders/utils/ghostTable.js +39 -35
  214. package/plugins/nestedHeaders/utils/ghostTable.mjs +39 -35
  215. package/plugins/nestedRows/data/dataManager.js +4 -2
  216. package/plugins/nestedRows/data/dataManager.mjs +4 -2
  217. package/plugins/nestedRows/nestedRows.js +41 -0
  218. package/plugins/nestedRows/nestedRows.mjs +41 -0
  219. package/plugins/persistentState/storage.js +1 -0
  220. package/plugins/persistentState/storage.mjs +1 -0
  221. package/plugins/undoRedo/undoRedo.js +2 -1
  222. package/plugins/undoRedo/undoRedo.mjs +2 -1
  223. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  224. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  225. package/selection/highlight/highlight.js +256 -71
  226. package/selection/highlight/highlight.mjs +250 -71
  227. package/selection/highlight/types/activeHeader.js +10 -8
  228. package/selection/highlight/types/activeHeader.mjs +10 -8
  229. package/selection/highlight/types/area.js +6 -18
  230. package/selection/highlight/types/area.mjs +6 -18
  231. package/selection/highlight/types/areaLayered.js +31 -0
  232. package/selection/highlight/types/areaLayered.mjs +26 -0
  233. package/selection/highlight/types/column.js +27 -0
  234. package/selection/highlight/types/column.mjs +22 -0
  235. package/selection/highlight/types/customSelection.js +7 -9
  236. package/selection/highlight/types/customSelection.mjs +7 -9
  237. package/selection/highlight/types/fill.js +5 -7
  238. package/selection/highlight/types/fill.mjs +5 -7
  239. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  240. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  241. package/selection/highlight/types/header.js +9 -18
  242. package/selection/highlight/types/header.mjs +9 -18
  243. package/selection/highlight/types/row.js +27 -0
  244. package/selection/highlight/types/row.mjs +22 -0
  245. package/selection/highlight/visualSelection.js +41 -33
  246. package/selection/highlight/visualSelection.mjs +41 -33
  247. package/selection/index.js +4 -7
  248. package/selection/index.mjs +2 -3
  249. package/selection/mouseEventHandler.js +1 -1
  250. package/selection/mouseEventHandler.mjs +1 -1
  251. package/selection/range.js +8 -8
  252. package/selection/range.mjs +8 -8
  253. package/selection/selection.js +290 -154
  254. package/selection/selection.mjs +287 -153
  255. package/selection/transformation.js +232 -90
  256. package/selection/transformation.mjs +232 -90
  257. package/selection/utils.js +15 -21
  258. package/selection/utils.mjs +16 -21
  259. package/settings.d.ts +2 -0
  260. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  261. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  262. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  263. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  264. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  265. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  266. package/shortcutContexts/commands/editor/index.js +16 -0
  267. package/shortcutContexts/commands/editor/index.mjs +12 -0
  268. package/shortcutContexts/commands/editor/open.js +27 -0
  269. package/shortcutContexts/commands/editor/open.mjs +23 -0
  270. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  271. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  272. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  273. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  274. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  275. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  276. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  277. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  278. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  279. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  280. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  281. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  282. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  283. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  284. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  285. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  286. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  287. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  288. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  289. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  290. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  291. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  292. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  293. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  294. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  295. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  296. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  297. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  298. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  299. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  300. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  301. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  302. package/shortcutContexts/commands/index.js +35 -0
  303. package/shortcutContexts/commands/index.mjs +31 -0
  304. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  305. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  306. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  307. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  308. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  309. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  310. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  311. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  312. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  313. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  314. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  315. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  316. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  317. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  318. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  319. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  320. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  321. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  322. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  323. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  324. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  325. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  326. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  327. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  328. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  329. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  330. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  331. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  332. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  333. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  334. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  335. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  336. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  337. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  338. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  339. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  340. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  341. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  342. package/shortcutContexts/commands/selectAll.js +10 -0
  343. package/shortcutContexts/commands/selectAll.mjs +6 -0
  344. package/shortcutContexts/constants.js +13 -0
  345. package/shortcutContexts/constants.mjs +8 -0
  346. package/shortcutContexts/editor.js +25 -0
  347. package/shortcutContexts/editor.mjs +21 -0
  348. package/shortcutContexts/grid.js +163 -0
  349. package/shortcutContexts/grid.mjs +159 -0
  350. package/shortcutContexts/index.js +24 -0
  351. package/shortcutContexts/index.mjs +11 -0
  352. package/shortcuts/manager.js +2 -0
  353. package/shortcuts/manager.mjs +2 -0
  354. package/shortcuts/recorder.js +2 -2
  355. package/shortcuts/recorder.mjs +2 -2
  356. package/shortcuts/utils.js +19 -5
  357. package/shortcuts/utils.mjs +18 -4
  358. package/tableView.js +163 -91
  359. package/tableView.mjs +163 -91
  360. package/translations/changesObservable/observable.js +82 -54
  361. package/translations/changesObservable/observable.mjs +82 -54
  362. package/translations/changesObservable/observer.js +24 -11
  363. package/translations/changesObservable/observer.mjs +24 -11
  364. package/translations/maps/linkedPhysicalIndexToValueMap.js +14 -8
  365. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +14 -8
  366. package/utils/dataStructures/tree.js +21 -18
  367. package/utils/dataStructures/tree.mjs +21 -18
  368. package/3rdparty/walkontable/src/selection.js +0 -295
  369. package/3rdparty/walkontable/src/selection.mjs +0 -290
  370. package/selection/highlight/constants.js +0 -15
  371. package/selection/highlight/constants.mjs +0 -6
  372. package/selection/highlight/types/index.js +0 -35
  373. package/selection/highlight/types/index.mjs +0 -31
@@ -1,4 +1,12 @@
1
1
  import "core-js/modules/es.array.push.js";
2
+ import "core-js/modules/es.error.cause.js";
3
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
6
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
7
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
8
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
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; } }
2
10
  import { BasePlugin } from "../base/index.mjs";
3
11
  import { addClass } from "../../helpers/dom/element.mjs";
4
12
  import { rangeEach } from "../../helpers/number.mjs";
@@ -123,29 +131,38 @@ export const PLUGIN_PRIORITY = 320;
123
131
  * ```
124
132
  * :::
125
133
  */
134
+ var _settings = /*#__PURE__*/new WeakMap();
135
+ var _hiddenRowsMap = /*#__PURE__*/new WeakMap();
126
136
  export class HiddenRows extends BasePlugin {
137
+ constructor() {
138
+ super(...arguments);
139
+ /**
140
+ * Cached settings from Handsontable settings.
141
+ *
142
+ * @private
143
+ * @type {object}
144
+ */
145
+ _classPrivateFieldInitSpec(this, _settings, {
146
+ writable: true,
147
+ value: {}
148
+ });
149
+ /**
150
+ * Map of hidden rows by the plugin.
151
+ *
152
+ * @private
153
+ * @type {HidingMap|null}
154
+ */
155
+ _classPrivateFieldInitSpec(this, _hiddenRowsMap, {
156
+ writable: true,
157
+ value: null
158
+ });
159
+ }
127
160
  static get PLUGIN_KEY() {
128
161
  return PLUGIN_KEY;
129
162
  }
130
163
  static get PLUGIN_PRIORITY() {
131
164
  return PLUGIN_PRIORITY;
132
165
  }
133
-
134
- /**
135
- * Cached settings from Handsontable settings.
136
- *
137
- * @private
138
- * @type {object}
139
- */
140
- #settings = {};
141
- /**
142
- * Map of hidden rows by the plugin.
143
- *
144
- * @private
145
- * @type {HidingMap|null}
146
- */
147
- #hiddenRowsMap = null;
148
-
149
166
  /**
150
167
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
151
168
  * hook and if it returns `true` then the {@link HiddenRows#enablePlugin} method is called.
@@ -166,14 +183,14 @@ export class HiddenRows extends BasePlugin {
166
183
  }
167
184
  const pluginSettings = this.hot.getSettings()[PLUGIN_KEY];
168
185
  if (isObject(pluginSettings)) {
169
- this.#settings = pluginSettings;
186
+ _classPrivateFieldSet(this, _settings, pluginSettings);
170
187
  if (isUndefined(pluginSettings.copyPasteEnabled)) {
171
188
  pluginSettings.copyPasteEnabled = true;
172
189
  }
173
190
  }
174
- this.#hiddenRowsMap = new HidingMap();
175
- this.#hiddenRowsMap.addLocalHook('init', () => this.onMapInit());
176
- this.hot.rowIndexMapper.registerMap(this.pluginName, this.#hiddenRowsMap);
191
+ _classPrivateFieldSet(this, _hiddenRowsMap, new HidingMap());
192
+ _classPrivateFieldGet(this, _hiddenRowsMap).addLocalHook('init', () => this.onMapInit());
193
+ this.hot.rowIndexMapper.registerMap(this.pluginName, _classPrivateFieldGet(this, _hiddenRowsMap));
177
194
  this.addHook('afterContextMenuDefaultOptions', function () {
178
195
  return _this.onAfterContextMenuDefaultOptions(...arguments);
179
196
  });
@@ -203,7 +220,7 @@ export class HiddenRows extends BasePlugin {
203
220
  */
204
221
  disablePlugin() {
205
222
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
206
- this.#settings = {};
223
+ _classPrivateFieldSet(this, _settings, {});
207
224
  super.disablePlugin();
208
225
  this.resetCellsMeta();
209
226
  }
@@ -217,7 +234,7 @@ export class HiddenRows extends BasePlugin {
217
234
  const currentHideConfig = this.getHiddenRows();
218
235
  const isValidConfig = this.isValidConfig(rows);
219
236
  let destinationHideConfig = currentHideConfig;
220
- const hidingMapValues = this.#hiddenRowsMap.getValues().slice();
237
+ const hidingMapValues = _classPrivateFieldGet(this, _hiddenRowsMap).getValues().slice();
221
238
  const isAnyRowShowed = rows.length > 0;
222
239
  if (isValidConfig && isAnyRowShowed) {
223
240
  const physicalRows = rows.map(visualRow => this.hot.toPhysicalRow(visualRow));
@@ -240,7 +257,7 @@ export class HiddenRows extends BasePlugin {
240
257
  return;
241
258
  }
242
259
  if (isValidConfig && isAnyRowShowed) {
243
- this.#hiddenRowsMap.setValues(hidingMapValues);
260
+ _classPrivateFieldGet(this, _hiddenRowsMap).setValues(hidingMapValues);
244
261
  }
245
262
  this.hot.runHooks('afterUnhideRows', currentHideConfig, destinationHideConfig, isValidConfig && isAnyRowShowed, isValidConfig && destinationHideConfig.length < currentHideConfig.length);
246
263
  }
@@ -276,7 +293,7 @@ export class HiddenRows extends BasePlugin {
276
293
  if (isConfigValid) {
277
294
  this.hot.batchExecution(() => {
278
295
  arrayEach(rows, visualRow => {
279
- this.#hiddenRowsMap.setValueAtIndex(this.hot.toPhysicalRow(visualRow), true);
296
+ _classPrivateFieldGet(this, _hiddenRowsMap).setValueAtIndex(this.hot.toPhysicalRow(visualRow), true);
280
297
  });
281
298
  }, true);
282
299
  }
@@ -301,7 +318,7 @@ export class HiddenRows extends BasePlugin {
301
318
  * @returns {number[]}
302
319
  */
303
320
  getHiddenRows() {
304
- return arrayMap(this.#hiddenRowsMap.getHiddenIndexes(), physicalRowIndex => {
321
+ return arrayMap(_classPrivateFieldGet(this, _hiddenRowsMap).getHiddenIndexes(), physicalRowIndex => {
305
322
  return this.hot.toVisualRow(physicalRowIndex);
306
323
  });
307
324
  }
@@ -313,7 +330,7 @@ export class HiddenRows extends BasePlugin {
313
330
  * @returns {boolean}
314
331
  */
315
332
  isHidden(row) {
316
- return this.#hiddenRowsMap.getValueAtIndex(this.hot.toPhysicalRow(row)) || false;
333
+ return _classPrivateFieldGet(this, _hiddenRowsMap).getValueAtIndex(this.hot.toPhysicalRow(row)) || false;
317
334
  }
318
335
 
319
336
  /**
@@ -369,7 +386,7 @@ export class HiddenRows extends BasePlugin {
369
386
  * @param {object} cellProperties Object containing the cell properties.
370
387
  */
371
388
  onAfterGetCellMeta(row, column, cellProperties) {
372
- if (this.#settings.copyPasteEnabled === false && this.isHidden(row)) {
389
+ if (_classPrivateFieldGet(this, _settings).copyPasteEnabled === false && this.isHidden(row)) {
373
390
  // Cell property handled by the `Autofill` and the `CopyPaste` plugins.
374
391
  cellProperties.skipRowOnPaste = true;
375
392
  }
@@ -399,7 +416,7 @@ export class HiddenRows extends BasePlugin {
399
416
  */
400
417
  onModifyCopyableRange(ranges) {
401
418
  // Ranges shouldn't be modified when `copyPasteEnabled` option is set to `true` (by default).
402
- if (this.#settings.copyPasteEnabled) {
419
+ if (_classPrivateFieldGet(this, _settings).copyPasteEnabled) {
403
420
  return ranges;
404
421
  }
405
422
  const newRanges = [];
@@ -442,7 +459,7 @@ export class HiddenRows extends BasePlugin {
442
459
  * @param {HTMLElement} TH Header's TH element.
443
460
  */
444
461
  onAfterGetRowHeader(row, TH) {
445
- if (!this.#settings.indicators || row < 0) {
462
+ if (!_classPrivateFieldGet(this, _settings).indicators || row < 0) {
446
463
  return;
447
464
  }
448
465
  const classList = [];
@@ -473,8 +490,8 @@ export class HiddenRows extends BasePlugin {
473
490
  * @private
474
491
  */
475
492
  onMapInit() {
476
- if (Array.isArray(this.#settings.rows)) {
477
- this.hideRows(this.#settings.rows);
493
+ if (Array.isArray(_classPrivateFieldGet(this, _settings).rows)) {
494
+ this.hideRows(_classPrivateFieldGet(this, _settings).rows);
478
495
  }
479
496
  }
480
497
 
@@ -482,8 +499,8 @@ export class HiddenRows extends BasePlugin {
482
499
  * Destroys the plugin instance.
483
500
  */
484
501
  destroy() {
485
- this.#settings = null;
486
- this.#hiddenRowsMap = null;
502
+ _classPrivateFieldSet(this, _settings, null);
503
+ _classPrivateFieldSet(this, _hiddenRowsMap, null);
487
504
  super.destroy();
488
505
  }
489
506
  }
@@ -292,8 +292,9 @@ class ManualRowResize extends _base.BasePlugin {
292
292
  * @returns {boolean}
293
293
  */
294
294
  checkIfRowHeader(element) {
295
+ var _element$parentNode;
295
296
  const thElement = (0, _element.closest)(element, ['TH'], this.hot.rootElement);
296
- return thElement && element.parentNode?.parentNode?.tagName === 'TBODY';
297
+ return thElement && ((_element$parentNode = element.parentNode) === null || _element$parentNode === void 0 || (_element$parentNode = _element$parentNode.parentNode) === null || _element$parentNode === void 0 ? void 0 : _element$parentNode.tagName) === 'TBODY';
297
298
  }
298
299
 
299
300
  /**
@@ -284,8 +284,9 @@ export class ManualRowResize extends BasePlugin {
284
284
  * @returns {boolean}
285
285
  */
286
286
  checkIfRowHeader(element) {
287
+ var _element$parentNode;
287
288
  const thElement = closest(element, ['TH'], this.hot.rootElement);
288
- return thElement && element.parentNode?.parentNode?.tagName === 'TBODY';
289
+ return thElement && ((_element$parentNode = element.parentNode) === null || _element$parentNode === void 0 || (_element$parentNode = _element$parentNode.parentNode) === null || _element$parentNode === void 0 ? void 0 : _element$parentNode.tagName) === 'TBODY';
289
290
  }
290
291
 
291
292
  /**
@@ -188,9 +188,6 @@ 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
- });
194
191
  this.addHook('beforeUndoStackChange', (action, source) => {
195
192
  if (source === 'MergeCells') {
196
193
  return false;
@@ -252,7 +249,7 @@ class MergeCells extends _base.BasePlugin {
252
249
  rowIndexesToRefresh = [...new Set(rowIndexesToRefresh)];
253
250
  rowIndexesToRefresh.forEach(rowIndex => {
254
251
  const renderableRowIndex = this.hot.rowIndexMapper.getRenderableFromVisualIndex(rowIndex);
255
- this.hot.view._wt.wtOverlays.getOverlays(true).map(overlay => overlay?.name === 'master' ? overlay : overlay.clone.wtTable).forEach(wtTableRef => {
252
+ this.hot.view._wt.wtOverlays.getOverlays(true).map(overlay => (overlay === null || overlay === void 0 ? void 0 : overlay.name) === 'master' ? overlay : overlay.clone.wtTable).forEach(wtTableRef => {
256
253
  const rowToRefresh = wtTableRef.getRow(renderableRowIndex);
257
254
  if (rowToRefresh) {
258
255
  // Modify the TR's `background` property to later modify it asynchronously.
@@ -574,8 +571,11 @@ class MergeCells extends _base.BasePlugin {
574
571
  gridContext.addShortcut({
575
572
  keys: [['Control', 'm']],
576
573
  callback: () => {
577
- this.toggleMerge(this.hot.getSelectedRangeLast());
578
- this.hot.render();
574
+ const range = this.hot.getSelectedRangeLast();
575
+ if (range && !range.isSingleHeader()) {
576
+ this.toggleMerge(range);
577
+ this.hot.render();
578
+ }
579
579
  },
580
580
  runOnlyIf: event => !event.altKey,
581
581
  // right ALT in some systems triggers ALT+CTRL
@@ -1198,16 +1198,5 @@ 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
- }
1212
1201
  }
1213
1202
  exports.MergeCells = MergeCells;
@@ -182,9 +182,6 @@ 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
- });
188
185
  this.addHook('beforeUndoStackChange', (action, source) => {
189
186
  if (source === 'MergeCells') {
190
187
  return false;
@@ -246,7 +243,7 @@ export class MergeCells extends BasePlugin {
246
243
  rowIndexesToRefresh = [...new Set(rowIndexesToRefresh)];
247
244
  rowIndexesToRefresh.forEach(rowIndex => {
248
245
  const renderableRowIndex = this.hot.rowIndexMapper.getRenderableFromVisualIndex(rowIndex);
249
- this.hot.view._wt.wtOverlays.getOverlays(true).map(overlay => overlay?.name === 'master' ? overlay : overlay.clone.wtTable).forEach(wtTableRef => {
246
+ this.hot.view._wt.wtOverlays.getOverlays(true).map(overlay => (overlay === null || overlay === void 0 ? void 0 : overlay.name) === 'master' ? overlay : overlay.clone.wtTable).forEach(wtTableRef => {
250
247
  const rowToRefresh = wtTableRef.getRow(renderableRowIndex);
251
248
  if (rowToRefresh) {
252
249
  // Modify the TR's `background` property to later modify it asynchronously.
@@ -568,8 +565,11 @@ export class MergeCells extends BasePlugin {
568
565
  gridContext.addShortcut({
569
566
  keys: [['Control', 'm']],
570
567
  callback: () => {
571
- this.toggleMerge(this.hot.getSelectedRangeLast());
572
- this.hot.render();
568
+ const range = this.hot.getSelectedRangeLast();
569
+ if (range && !range.isSingleHeader()) {
570
+ this.toggleMerge(range);
571
+ this.hot.render();
572
+ }
573
573
  },
574
574
  runOnlyIf: event => !event.altKey,
575
575
  // right ALT in some systems triggers ALT+CTRL
@@ -1192,15 +1192,4 @@ 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
- }
1206
1195
  }
@@ -12,8 +12,8 @@ const PLUGIN_KEY = 'multiColumnSorting';
12
12
  exports.PLUGIN_KEY = PLUGIN_KEY;
13
13
  const PLUGIN_PRIORITY = 170;
14
14
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
15
- const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
16
15
  const CONFLICTED_PLUGIN_KEY = 'columnSorting';
16
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
17
17
  (0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
18
18
 
19
19
  /**
@@ -113,6 +113,41 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
113
113
  super.disablePlugin();
114
114
  }
115
115
 
116
+ /**
117
+ * Register shortcuts responsible for toggling column sorting functionality.
118
+ *
119
+ * @private
120
+ */
121
+ registerShortcuts() {
122
+ super.registerShortcuts();
123
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
124
+ keys: [['Control/Meta', 'Enter']],
125
+ callback: () => {
126
+ const {
127
+ highlight
128
+ } = this.hot.getSelectedRangeLast();
129
+ if (highlight.row === -1 && highlight.col >= 0) {
130
+ this.sort(this.getNextSortConfig(highlight.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
131
+ }
132
+ },
133
+ runOnlyIf: () => {
134
+ var _this$hot$getSelected;
135
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
136
+ },
137
+ group: SHORTCUTS_GROUP
138
+ });
139
+ }
140
+
141
+ /**
142
+ * Unregister shortcuts responsible for toggling column sorting functionality.
143
+ *
144
+ * @private
145
+ */
146
+ unregisterShortcuts() {
147
+ super.unregisterShortcuts();
148
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
149
+ }
150
+
116
151
  /**
117
152
  * Sorts the table by chosen columns and orders.
118
153
  *
@@ -262,7 +297,7 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
262
297
  if (this.hot.getShortcutManager().isCtrlPressed()) {
263
298
  this.hot.deselectCell();
264
299
  this.hot.selectColumns(coords.col);
265
- this.sort(this.getNextSortConfig(coords.col, APPEND_COLUMN_CONFIG_STRATEGY));
300
+ this.sort(this.getNextSortConfig(coords.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
266
301
  } else {
267
302
  this.sort(this.getColumnNextConfig(coords.col));
268
303
  }
@@ -1,4 +1,4 @@
1
- import { ColumnSorting } from "../columnSorting/index.mjs";
1
+ import { APPEND_COLUMN_CONFIG_STRATEGY, ColumnSorting } from "../columnSorting/index.mjs";
2
2
  import { registerRootComparator } from "../columnSorting/sortService/index.mjs";
3
3
  import { wasHeaderClickedProperly } from "../columnSorting/utils.mjs";
4
4
  import { addClass, removeClass } from "../../helpers/dom/element.mjs";
@@ -7,8 +7,8 @@ import { warnAboutPluginsConflict } from "./utils.mjs";
7
7
  import { getClassesToAdd, getClassesToRemove } from "./domHelpers.mjs";
8
8
  export const PLUGIN_KEY = 'multiColumnSorting';
9
9
  export const PLUGIN_PRIORITY = 170;
10
- const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
11
10
  const CONFLICTED_PLUGIN_KEY = 'columnSorting';
11
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
12
12
  registerRootComparator(PLUGIN_KEY, rootComparator);
13
13
 
14
14
  /**
@@ -108,6 +108,41 @@ export class MultiColumnSorting extends ColumnSorting {
108
108
  super.disablePlugin();
109
109
  }
110
110
 
111
+ /**
112
+ * Register shortcuts responsible for toggling column sorting functionality.
113
+ *
114
+ * @private
115
+ */
116
+ registerShortcuts() {
117
+ super.registerShortcuts();
118
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
119
+ keys: [['Control/Meta', 'Enter']],
120
+ callback: () => {
121
+ const {
122
+ highlight
123
+ } = this.hot.getSelectedRangeLast();
124
+ if (highlight.row === -1 && highlight.col >= 0) {
125
+ this.sort(this.getNextSortConfig(highlight.col, APPEND_COLUMN_CONFIG_STRATEGY));
126
+ }
127
+ },
128
+ runOnlyIf: () => {
129
+ var _this$hot$getSelected;
130
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
131
+ },
132
+ group: SHORTCUTS_GROUP
133
+ });
134
+ }
135
+
136
+ /**
137
+ * Unregister shortcuts responsible for toggling column sorting functionality.
138
+ *
139
+ * @private
140
+ */
141
+ unregisterShortcuts() {
142
+ super.unregisterShortcuts();
143
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
144
+ }
145
+
111
146
  /**
112
147
  * Sorts the table by chosen columns and orders.
113
148
  *