handsontable 0.0.0-next-06a64be-20230621 → 0.0.0-next-be250b6-20230621

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.

Potentially problematic release.


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

Files changed (237) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +61 -12
  3. package/3rdparty/walkontable/src/cell/coords.mjs +61 -12
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +44 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +44 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  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 +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  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 +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -4
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -4
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +63 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +30 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +329 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +323 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +364 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +360 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +133 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +7 -79
  50. package/3rdparty/walkontable/src/table.mjs +8 -80
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/core.d.ts +5 -3
  54. package/core.js +127 -309
  55. package/core.mjs +127 -309
  56. package/dataMap/metaManager/metaSchema.js +19 -0
  57. package/dataMap/metaManager/metaSchema.mjs +19 -0
  58. package/dist/handsontable.css +8 -3
  59. package/dist/handsontable.full.css +8 -3
  60. package/dist/handsontable.full.js +11930 -9113
  61. package/dist/handsontable.full.min.css +3 -3
  62. package/dist/handsontable.full.min.js +107 -107
  63. package/dist/handsontable.js +15163 -12346
  64. package/dist/handsontable.min.css +3 -3
  65. package/dist/handsontable.min.js +4 -4
  66. package/editorManager.js +21 -94
  67. package/editorManager.mjs +26 -98
  68. package/editors/textEditor/textEditor.js +3 -11
  69. package/editors/textEditor/textEditor.mjs +4 -12
  70. package/helpers/mixed.js +1 -1
  71. package/helpers/mixed.mjs +1 -1
  72. package/helpers/number.d.ts +1 -0
  73. package/helpers/number.js +18 -0
  74. package/helpers/number.mjs +17 -0
  75. package/package.json +1 -1
  76. package/pluginHooks.d.ts +5 -1
  77. package/pluginHooks.js +89 -1
  78. package/pluginHooks.mjs +89 -1
  79. package/plugins/collapsibleColumns/collapsibleColumns.js +81 -24
  80. package/plugins/collapsibleColumns/collapsibleColumns.mjs +81 -24
  81. package/plugins/columnSorting/columnSorting.js +50 -8
  82. package/plugins/columnSorting/columnSorting.mjs +49 -9
  83. package/plugins/columnSorting/index.js +4 -2
  84. package/plugins/columnSorting/index.mjs +1 -1
  85. package/plugins/copyPaste/copyPaste.js +5 -1
  86. package/plugins/copyPaste/copyPaste.mjs +5 -1
  87. package/plugins/customBorders/customBorders.js +18 -53
  88. package/plugins/customBorders/customBorders.mjs +19 -54
  89. package/plugins/mergeCells/mergeCells.js +5 -18
  90. package/plugins/mergeCells/mergeCells.mjs +5 -18
  91. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  92. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  93. package/plugins/nestedHeaders/nestedHeaders.js +132 -10
  94. package/plugins/nestedHeaders/nestedHeaders.mjs +132 -10
  95. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  96. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  97. package/plugins/nestedRows/nestedRows.js +52 -7
  98. package/plugins/nestedRows/nestedRows.mjs +52 -7
  99. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  100. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  101. package/selection/highlight/highlight.js +312 -89
  102. package/selection/highlight/highlight.mjs +302 -85
  103. package/selection/highlight/types/activeHeader.js +10 -9
  104. package/selection/highlight/types/activeHeader.mjs +10 -8
  105. package/selection/highlight/types/area.js +12 -27
  106. package/selection/highlight/types/area.mjs +16 -30
  107. package/selection/highlight/types/areaLayered.js +54 -0
  108. package/selection/highlight/types/areaLayered.mjs +49 -0
  109. package/selection/highlight/types/column.js +50 -0
  110. package/selection/highlight/types/column.mjs +45 -0
  111. package/selection/highlight/types/customSelection.js +7 -10
  112. package/selection/highlight/types/customSelection.mjs +7 -9
  113. package/selection/highlight/types/fill.js +5 -8
  114. package/selection/highlight/types/fill.mjs +5 -7
  115. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  116. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  117. package/selection/highlight/types/header.js +10 -20
  118. package/selection/highlight/types/header.mjs +10 -19
  119. package/selection/highlight/types/{index.js → row.js} +27 -31
  120. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  121. package/selection/highlight/visualSelection.js +31 -27
  122. package/selection/highlight/visualSelection.mjs +31 -27
  123. package/selection/index.js +4 -7
  124. package/selection/index.mjs +2 -3
  125. package/selection/mouseEventHandler.js +1 -1
  126. package/selection/mouseEventHandler.mjs +1 -1
  127. package/selection/range.js +8 -8
  128. package/selection/range.mjs +8 -8
  129. package/selection/selection.js +315 -181
  130. package/selection/selection.mjs +310 -180
  131. package/selection/transformation.js +233 -96
  132. package/selection/transformation.mjs +230 -93
  133. package/selection/utils.js +12 -36
  134. package/selection/utils.mjs +13 -36
  135. package/settings.d.ts +1 -0
  136. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  137. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  138. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  139. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  140. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  141. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  142. package/shortcutContexts/commands/editor/index.js +16 -0
  143. package/shortcutContexts/commands/editor/index.mjs +12 -0
  144. package/shortcutContexts/commands/editor/open.js +29 -0
  145. package/shortcutContexts/commands/editor/open.mjs +24 -0
  146. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  147. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  148. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  149. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  150. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  151. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  152. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  153. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  154. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  155. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  156. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  157. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  158. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  159. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  160. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  161. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  162. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  163. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  164. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  165. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  166. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  167. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  168. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  169. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  170. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  171. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  172. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  173. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  174. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  175. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  176. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  177. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  178. package/shortcutContexts/commands/index.js +53 -0
  179. package/shortcutContexts/commands/index.mjs +49 -0
  180. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  181. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  182. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  183. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  184. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  185. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  186. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  187. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  188. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  189. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  190. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  191. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  192. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  193. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  194. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  195. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  196. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  197. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  198. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  199. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  200. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  201. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  202. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  203. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  204. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  205. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  206. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  207. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  208. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  209. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  210. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  211. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  212. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  213. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  214. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  215. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  216. package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
  217. package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
  218. package/shortcutContexts/commands/selectAll.js +11 -0
  219. package/shortcutContexts/commands/selectAll.mjs +6 -0
  220. package/shortcutContexts/constants.js +19 -0
  221. package/shortcutContexts/constants.mjs +12 -0
  222. package/shortcutContexts/editor.js +29 -0
  223. package/shortcutContexts/editor.mjs +25 -0
  224. package/shortcutContexts/grid.js +252 -0
  225. package/shortcutContexts/grid.mjs +248 -0
  226. package/shortcutContexts/index.js +29 -0
  227. package/shortcutContexts/index.mjs +15 -0
  228. package/shortcuts/manager.js +2 -0
  229. package/shortcuts/manager.mjs +2 -0
  230. package/tableView.js +58 -9
  231. package/tableView.mjs +58 -9
  232. package/translations/indexMapper.js +8 -9
  233. package/translations/indexMapper.mjs +8 -9
  234. package/3rdparty/walkontable/src/selection.js +0 -355
  235. package/3rdparty/walkontable/src/selection.mjs +0 -349
  236. package/selection/highlight/constants.js +0 -16
  237. package/selection/highlight/constants.mjs +0 -6
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.shortcutsGridContext = shortcutsGridContext;
5
+ var _mixed = require("../helpers/mixed");
6
+ var _constants = require("./constants");
7
+ var _commands = require("./commands");
8
+ /**
9
+ * The context that defines shortcut list available for selected cell or cells.
10
+ *
11
+ * @param {Handsontable} hot The Handsontable instance.
12
+ */
13
+ function shortcutsGridContext(hot) {
14
+ var context = hot.getShortcutManager().addContext('grid');
15
+ var commandsPool = (0, _commands.createKeyboardShortcutCommandsPool)(hot);
16
+ var config = {
17
+ runOnlyIf: function runOnlyIf() {
18
+ var _hot$getSettings = hot.getSettings(),
19
+ navigableHeaders = _hot$getSettings.navigableHeaders;
20
+ return (0, _mixed.isDefined)(hot.getSelected()) && (navigableHeaders || !navigableHeaders && hot.countRenderedRows() > 0 && hot.countRenderedCols() > 0);
21
+ },
22
+ group: _constants.GRID_GROUP
23
+ };
24
+ context.addShortcuts([{
25
+ keys: [['F2']],
26
+ callback: function callback(event) {
27
+ return commandsPool.editorFastOpen(event);
28
+ }
29
+ }, {
30
+ keys: [['Enter'], ['Enter', 'Shift']],
31
+ callback: function callback(event, keys) {
32
+ return commandsPool.editorOpen(event, keys);
33
+ }
34
+ }, {
35
+ keys: [['Backspace'], ['Delete']],
36
+ callback: function callback() {
37
+ return commandsPool.emptySelectedCells();
38
+ }
39
+ }], {
40
+ group: _constants.EDITOR_EDIT_GROUP,
41
+ runOnlyIf: function runOnlyIf() {
42
+ return (0, _mixed.isDefined)(hot.getSelected());
43
+ }
44
+ });
45
+ context.addShortcuts([{
46
+ keys: [['Control/Meta', 'A'], ['Control/Meta', 'Shift', 'Space']],
47
+ callback: function callback() {
48
+ return commandsPool.selectAll();
49
+ }
50
+ }, {
51
+ keys: [['Control/Meta', 'Enter']],
52
+ callback: function callback() {
53
+ return commandsPool.populateSelectedCellsData();
54
+ },
55
+ runOnlyIf: function runOnlyIf() {
56
+ return !hot.getSelectedRangeLast().highlight.isHeader() && hot.getSelectedRangeLast().getCellsCount() > 1;
57
+ }
58
+ }, {
59
+ keys: [['Control', 'Space']],
60
+ captureCtrl: true,
61
+ callback: function callback() {
62
+ return commandsPool.extendCellsSelectionToColumns();
63
+ }
64
+ }, {
65
+ keys: [['Shift', 'Space']],
66
+ stopPropagation: true,
67
+ callback: function callback() {
68
+ return commandsPool.extendCellsSelectionToRows();
69
+ }
70
+ }, {
71
+ keys: [['ArrowUp']],
72
+ callback: function callback() {
73
+ return commandsPool.moveCellSelectionUp();
74
+ }
75
+ }, {
76
+ keys: [['ArrowUp', 'Control/Meta']],
77
+ captureCtrl: true,
78
+ callback: function callback() {
79
+ return commandsPool.moveCellSelectionToMostTop();
80
+ }
81
+ }, {
82
+ keys: [['ArrowUp', 'Shift']],
83
+ callback: function callback() {
84
+ return commandsPool.extendCellsSelectionUp();
85
+ }
86
+ }, {
87
+ keys: [['ArrowUp', 'Shift', 'Control/Meta']],
88
+ captureCtrl: true,
89
+ callback: function callback() {
90
+ return commandsPool.extendCellsSelectionToMostTop();
91
+ },
92
+ runOnlyIf: function runOnlyIf() {
93
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByColumnHeader());
94
+ }
95
+ }, {
96
+ keys: [['ArrowDown']],
97
+ callback: function callback() {
98
+ return commandsPool.moveCellSelectionDown();
99
+ }
100
+ }, {
101
+ keys: [['ArrowDown', 'Control/Meta']],
102
+ captureCtrl: true,
103
+ callback: function callback() {
104
+ return commandsPool.moveCellSelectionToMostBottom();
105
+ }
106
+ }, {
107
+ keys: [['ArrowDown', 'Shift']],
108
+ callback: function callback() {
109
+ return commandsPool.extendCellsSelectionDown();
110
+ }
111
+ }, {
112
+ keys: [['ArrowDown', 'Shift', 'Control/Meta']],
113
+ captureCtrl: true,
114
+ callback: function callback() {
115
+ return commandsPool.extendCellsSelectionToMostBottom();
116
+ },
117
+ runOnlyIf: function runOnlyIf() {
118
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByColumnHeader());
119
+ }
120
+ }, {
121
+ keys: [['ArrowLeft']],
122
+ callback: function callback() {
123
+ return commandsPool.moveCellSelectionLeft();
124
+ }
125
+ }, {
126
+ keys: [['ArrowLeft', 'Control/Meta']],
127
+ captureCtrl: true,
128
+ callback: function callback() {
129
+ return commandsPool.moveCellSelectionToMostLeft();
130
+ }
131
+ }, {
132
+ keys: [['ArrowLeft', 'Shift']],
133
+ callback: function callback() {
134
+ return commandsPool.extendCellsSelectionLeft();
135
+ }
136
+ }, {
137
+ keys: [['ArrowLeft', 'Shift', 'Control/Meta']],
138
+ captureCtrl: true,
139
+ callback: function callback() {
140
+ return commandsPool.extendCellsSelectionToMostLeft();
141
+ },
142
+ runOnlyIf: function runOnlyIf() {
143
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByRowHeader());
144
+ }
145
+ }, {
146
+ keys: [['ArrowRight']],
147
+ callback: function callback() {
148
+ return commandsPool.moveCellSelectionRight();
149
+ }
150
+ }, {
151
+ keys: [['ArrowRight', 'Control/Meta']],
152
+ captureCtrl: true,
153
+ callback: function callback() {
154
+ return commandsPool.moveCellSelectionToMostRight();
155
+ }
156
+ }, {
157
+ keys: [['ArrowRight', 'Shift']],
158
+ callback: function callback() {
159
+ return commandsPool.extendCellsSelectionRight();
160
+ }
161
+ }, {
162
+ keys: [['ArrowRight', 'Shift', 'Control/Meta']],
163
+ captureCtrl: true,
164
+ callback: function callback() {
165
+ return commandsPool.extendCellsSelectionToMostRight();
166
+ },
167
+ runOnlyIf: function runOnlyIf() {
168
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByRowHeader());
169
+ }
170
+ }, {
171
+ keys: [['Home']],
172
+ captureCtrl: true,
173
+ callback: function callback() {
174
+ return commandsPool.moveCellSelectionToMostInlineStart();
175
+ },
176
+ runOnlyIf: function runOnlyIf() {
177
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
178
+ }
179
+ }, {
180
+ keys: [['Home', 'Shift']],
181
+ callback: function callback() {
182
+ return commandsPool.extendCellsSelectionToMostInlineStart();
183
+ }
184
+ }, {
185
+ keys: [['Home', 'Control/Meta']],
186
+ captureCtrl: true,
187
+ callback: function callback() {
188
+ return commandsPool.moveCellSelectionToMostTopInlineStart();
189
+ },
190
+ runOnlyIf: function runOnlyIf() {
191
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
192
+ }
193
+ }, {
194
+ keys: [['End']],
195
+ captureCtrl: true,
196
+ callback: function callback() {
197
+ return commandsPool.moveCellSelectionToMostInlineEnd();
198
+ },
199
+ runOnlyIf: function runOnlyIf() {
200
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
201
+ }
202
+ }, {
203
+ keys: [['End', 'Shift']],
204
+ callback: function callback() {
205
+ return commandsPool.extendCellsSelectionToMostInlineEnd();
206
+ }
207
+ }, {
208
+ keys: [['End', 'Control/Meta']],
209
+ captureCtrl: true,
210
+ callback: function callback() {
211
+ return commandsPool.moveCellSelectionToMostBottomInlineEnd();
212
+ },
213
+ runOnlyIf: function runOnlyIf() {
214
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
215
+ }
216
+ }, {
217
+ keys: [['PageUp']],
218
+ callback: function callback() {
219
+ return commandsPool.moveCellSelectionUpByViewportHight();
220
+ }
221
+ }, {
222
+ keys: [['PageUp', 'Shift']],
223
+ callback: function callback() {
224
+ return commandsPool.extendCellsSelectionUpByViewportHeight();
225
+ }
226
+ }, {
227
+ keys: [['PageDown']],
228
+ callback: function callback() {
229
+ return commandsPool.moveCellSelectionDownByViewportHeight();
230
+ }
231
+ }, {
232
+ keys: [['PageDown', 'Shift']],
233
+ callback: function callback() {
234
+ return commandsPool.extendCellsSelectionDownByViewportHeight();
235
+ }
236
+ }, {
237
+ keys: [['Tab']],
238
+ callback: function callback() {
239
+ return commandsPool.moveCellSelectionInlineStart();
240
+ }
241
+ }, {
242
+ keys: [['Shift', 'Tab']],
243
+ callback: function callback() {
244
+ return commandsPool.moveCellSelectionInlineEnd();
245
+ }
246
+ }, {
247
+ keys: [['Control/Meta', 'Backspace']],
248
+ callback: function callback() {
249
+ return commandsPool.scrollToFocusedCell();
250
+ }
251
+ }], config);
252
+ }
@@ -0,0 +1,248 @@
1
+ import { isDefined } from "../helpers/mixed.mjs";
2
+ import { GRID_GROUP, EDITOR_EDIT_GROUP } from "./constants.mjs";
3
+ import { createKeyboardShortcutCommandsPool } from "./commands/index.mjs";
4
+ /**
5
+ * The context that defines shortcut list available for selected cell or cells.
6
+ *
7
+ * @param {Handsontable} hot The Handsontable instance.
8
+ */
9
+ export function shortcutsGridContext(hot) {
10
+ var context = hot.getShortcutManager().addContext('grid');
11
+ var commandsPool = createKeyboardShortcutCommandsPool(hot);
12
+ var config = {
13
+ runOnlyIf: function runOnlyIf() {
14
+ var _hot$getSettings = hot.getSettings(),
15
+ navigableHeaders = _hot$getSettings.navigableHeaders;
16
+ return isDefined(hot.getSelected()) && (navigableHeaders || !navigableHeaders && hot.countRenderedRows() > 0 && hot.countRenderedCols() > 0);
17
+ },
18
+ group: GRID_GROUP
19
+ };
20
+ context.addShortcuts([{
21
+ keys: [['F2']],
22
+ callback: function callback(event) {
23
+ return commandsPool.editorFastOpen(event);
24
+ }
25
+ }, {
26
+ keys: [['Enter'], ['Enter', 'Shift']],
27
+ callback: function callback(event, keys) {
28
+ return commandsPool.editorOpen(event, keys);
29
+ }
30
+ }, {
31
+ keys: [['Backspace'], ['Delete']],
32
+ callback: function callback() {
33
+ return commandsPool.emptySelectedCells();
34
+ }
35
+ }], {
36
+ group: EDITOR_EDIT_GROUP,
37
+ runOnlyIf: function runOnlyIf() {
38
+ return isDefined(hot.getSelected());
39
+ }
40
+ });
41
+ context.addShortcuts([{
42
+ keys: [['Control/Meta', 'A'], ['Control/Meta', 'Shift', 'Space']],
43
+ callback: function callback() {
44
+ return commandsPool.selectAll();
45
+ }
46
+ }, {
47
+ keys: [['Control/Meta', 'Enter']],
48
+ callback: function callback() {
49
+ return commandsPool.populateSelectedCellsData();
50
+ },
51
+ runOnlyIf: function runOnlyIf() {
52
+ return !hot.getSelectedRangeLast().highlight.isHeader() && hot.getSelectedRangeLast().getCellsCount() > 1;
53
+ }
54
+ }, {
55
+ keys: [['Control', 'Space']],
56
+ captureCtrl: true,
57
+ callback: function callback() {
58
+ return commandsPool.extendCellsSelectionToColumns();
59
+ }
60
+ }, {
61
+ keys: [['Shift', 'Space']],
62
+ stopPropagation: true,
63
+ callback: function callback() {
64
+ return commandsPool.extendCellsSelectionToRows();
65
+ }
66
+ }, {
67
+ keys: [['ArrowUp']],
68
+ callback: function callback() {
69
+ return commandsPool.moveCellSelectionUp();
70
+ }
71
+ }, {
72
+ keys: [['ArrowUp', 'Control/Meta']],
73
+ captureCtrl: true,
74
+ callback: function callback() {
75
+ return commandsPool.moveCellSelectionToMostTop();
76
+ }
77
+ }, {
78
+ keys: [['ArrowUp', 'Shift']],
79
+ callback: function callback() {
80
+ return commandsPool.extendCellsSelectionUp();
81
+ }
82
+ }, {
83
+ keys: [['ArrowUp', 'Shift', 'Control/Meta']],
84
+ captureCtrl: true,
85
+ callback: function callback() {
86
+ return commandsPool.extendCellsSelectionToMostTop();
87
+ },
88
+ runOnlyIf: function runOnlyIf() {
89
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByColumnHeader());
90
+ }
91
+ }, {
92
+ keys: [['ArrowDown']],
93
+ callback: function callback() {
94
+ return commandsPool.moveCellSelectionDown();
95
+ }
96
+ }, {
97
+ keys: [['ArrowDown', 'Control/Meta']],
98
+ captureCtrl: true,
99
+ callback: function callback() {
100
+ return commandsPool.moveCellSelectionToMostBottom();
101
+ }
102
+ }, {
103
+ keys: [['ArrowDown', 'Shift']],
104
+ callback: function callback() {
105
+ return commandsPool.extendCellsSelectionDown();
106
+ }
107
+ }, {
108
+ keys: [['ArrowDown', 'Shift', 'Control/Meta']],
109
+ captureCtrl: true,
110
+ callback: function callback() {
111
+ return commandsPool.extendCellsSelectionToMostBottom();
112
+ },
113
+ runOnlyIf: function runOnlyIf() {
114
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByColumnHeader());
115
+ }
116
+ }, {
117
+ keys: [['ArrowLeft']],
118
+ callback: function callback() {
119
+ return commandsPool.moveCellSelectionLeft();
120
+ }
121
+ }, {
122
+ keys: [['ArrowLeft', 'Control/Meta']],
123
+ captureCtrl: true,
124
+ callback: function callback() {
125
+ return commandsPool.moveCellSelectionToMostLeft();
126
+ }
127
+ }, {
128
+ keys: [['ArrowLeft', 'Shift']],
129
+ callback: function callback() {
130
+ return commandsPool.extendCellsSelectionLeft();
131
+ }
132
+ }, {
133
+ keys: [['ArrowLeft', 'Shift', 'Control/Meta']],
134
+ captureCtrl: true,
135
+ callback: function callback() {
136
+ return commandsPool.extendCellsSelectionToMostLeft();
137
+ },
138
+ runOnlyIf: function runOnlyIf() {
139
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByRowHeader());
140
+ }
141
+ }, {
142
+ keys: [['ArrowRight']],
143
+ callback: function callback() {
144
+ return commandsPool.moveCellSelectionRight();
145
+ }
146
+ }, {
147
+ keys: [['ArrowRight', 'Control/Meta']],
148
+ captureCtrl: true,
149
+ callback: function callback() {
150
+ return commandsPool.moveCellSelectionToMostRight();
151
+ }
152
+ }, {
153
+ keys: [['ArrowRight', 'Shift']],
154
+ callback: function callback() {
155
+ return commandsPool.extendCellsSelectionRight();
156
+ }
157
+ }, {
158
+ keys: [['ArrowRight', 'Shift', 'Control/Meta']],
159
+ captureCtrl: true,
160
+ callback: function callback() {
161
+ return commandsPool.extendCellsSelectionToMostRight();
162
+ },
163
+ runOnlyIf: function runOnlyIf() {
164
+ return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByRowHeader());
165
+ }
166
+ }, {
167
+ keys: [['Home']],
168
+ captureCtrl: true,
169
+ callback: function callback() {
170
+ return commandsPool.moveCellSelectionToMostInlineStart();
171
+ },
172
+ runOnlyIf: function runOnlyIf() {
173
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
174
+ }
175
+ }, {
176
+ keys: [['Home', 'Shift']],
177
+ callback: function callback() {
178
+ return commandsPool.extendCellsSelectionToMostInlineStart();
179
+ }
180
+ }, {
181
+ keys: [['Home', 'Control/Meta']],
182
+ captureCtrl: true,
183
+ callback: function callback() {
184
+ return commandsPool.moveCellSelectionToMostTopInlineStart();
185
+ },
186
+ runOnlyIf: function runOnlyIf() {
187
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
188
+ }
189
+ }, {
190
+ keys: [['End']],
191
+ captureCtrl: true,
192
+ callback: function callback() {
193
+ return commandsPool.moveCellSelectionToMostInlineEnd();
194
+ },
195
+ runOnlyIf: function runOnlyIf() {
196
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
197
+ }
198
+ }, {
199
+ keys: [['End', 'Shift']],
200
+ callback: function callback() {
201
+ return commandsPool.extendCellsSelectionToMostInlineEnd();
202
+ }
203
+ }, {
204
+ keys: [['End', 'Control/Meta']],
205
+ captureCtrl: true,
206
+ callback: function callback() {
207
+ return commandsPool.moveCellSelectionToMostBottomInlineEnd();
208
+ },
209
+ runOnlyIf: function runOnlyIf() {
210
+ return hot.view.isMainTableNotFullyCoveredByOverlays();
211
+ }
212
+ }, {
213
+ keys: [['PageUp']],
214
+ callback: function callback() {
215
+ return commandsPool.moveCellSelectionUpByViewportHight();
216
+ }
217
+ }, {
218
+ keys: [['PageUp', 'Shift']],
219
+ callback: function callback() {
220
+ return commandsPool.extendCellsSelectionUpByViewportHeight();
221
+ }
222
+ }, {
223
+ keys: [['PageDown']],
224
+ callback: function callback() {
225
+ return commandsPool.moveCellSelectionDownByViewportHeight();
226
+ }
227
+ }, {
228
+ keys: [['PageDown', 'Shift']],
229
+ callback: function callback() {
230
+ return commandsPool.extendCellsSelectionDownByViewportHeight();
231
+ }
232
+ }, {
233
+ keys: [['Tab']],
234
+ callback: function callback() {
235
+ return commandsPool.moveCellSelectionInlineStart();
236
+ }
237
+ }, {
238
+ keys: [['Shift', 'Tab']],
239
+ callback: function callback() {
240
+ return commandsPool.moveCellSelectionInlineEnd();
241
+ }
242
+ }, {
243
+ keys: [['Control/Meta', 'Backspace']],
244
+ callback: function callback() {
245
+ return commandsPool.scrollToFocusedCell();
246
+ }
247
+ }], config);
248
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.keys.js");
4
+ exports.__esModule = true;
5
+ var _exportNames = {
6
+ registerAllShortcutContexts: true
7
+ };
8
+ exports.registerAllShortcutContexts = registerAllShortcutContexts;
9
+ require("core-js/modules/es.object.to-string.js");
10
+ require("core-js/modules/web.dom-collections.for-each.js");
11
+ var _editor = require("./editor");
12
+ var _grid = require("./grid");
13
+ var _constants = require("./constants");
14
+ Object.keys(_constants).forEach(function (key) {
15
+ if (key === "default" || key === "__esModule") return;
16
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
17
+ if (key in exports && exports[key] === _constants[key]) return;
18
+ exports[key] = _constants[key];
19
+ });
20
+ /**
21
+ * Register all shortcut contexts.
22
+ *
23
+ * @param {Handsontable} hotInstance The Handsontable instance.
24
+ */
25
+ function registerAllShortcutContexts(hotInstance) {
26
+ [_editor.shortcutsEditorContext, _grid.shortcutsGridContext].forEach(function (context) {
27
+ return context(hotInstance);
28
+ });
29
+ }
@@ -0,0 +1,15 @@
1
+ import "core-js/modules/es.object.to-string.js";
2
+ import "core-js/modules/web.dom-collections.for-each.js";
3
+ import { shortcutsEditorContext } from "./editor.mjs";
4
+ import { shortcutsGridContext } from "./grid.mjs";
5
+ export * from "./constants.mjs";
6
+ /**
7
+ * Register all shortcut contexts.
8
+ *
9
+ * @param {Handsontable} hotInstance The Handsontable instance.
10
+ */
11
+ export function registerAllShortcutContexts(hotInstance) {
12
+ [shortcutsEditorContext, shortcutsGridContext].forEach(function (context) {
13
+ return context(hotInstance);
14
+ });
15
+ }
@@ -3,6 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  exports.createShortcutManager = void 0;
5
5
  var _uniqueMap = require("../utils/dataStructures/uniqueMap");
6
+ var _event = require("../helpers/dom/event");
6
7
  var _context = require("./context");
7
8
  var _recorder = require("./recorder");
8
9
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -126,6 +127,7 @@ var createShortcutManager = function createShortcutManager(_ref) {
126
127
  event.preventDefault();
127
128
  }
128
129
  if (stopPropagation) {
130
+ (0, _event.stopImmediatePropagation)(event);
129
131
  event.stopPropagation();
130
132
  }
131
133
  if (isExecutionCancelled) {
@@ -1,4 +1,5 @@
1
1
  import { createUniqueMap } from "../utils/dataStructures/uniqueMap.mjs";
2
+ import { stopImmediatePropagation } from "../helpers/dom/event.mjs";
2
3
  import { createContext } from "./context.mjs";
3
4
  import { useRecorder } from "./recorder.mjs";
4
5
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -121,6 +122,7 @@ export var createShortcutManager = function createShortcutManager(_ref) {
121
122
  event.preventDefault();
122
123
  }
123
124
  if (stopPropagation) {
125
+ stopImmediatePropagation(event);
124
126
  event.stopPropagation();
125
127
  }
126
128
  if (isExecutionCancelled) {
package/tableView.js CHANGED
@@ -613,6 +613,44 @@ var TableView = /*#__PURE__*/function () {
613
613
  return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
614
614
  }
615
615
 
616
+ /**
617
+ * The function returns the number of renderable column indexes within the passed range of the visual indexes.
618
+ *
619
+ * @param {number} columnStart The column visual start index.
620
+ * @param {number} columnEnd The column visual end index.
621
+ * @returns {number}
622
+ */
623
+ }, {
624
+ key: "countRenderableColumnsInRange",
625
+ value: function countRenderableColumnsInRange(columnStart, columnEnd) {
626
+ var count = 0;
627
+ for (var column = columnStart; column <= columnEnd; column++) {
628
+ if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
629
+ count += 1;
630
+ }
631
+ }
632
+ return count;
633
+ }
634
+
635
+ /**
636
+ * The function returns the number of renderable row indexes within the passed range of the visual indexes.
637
+ *
638
+ * @param {number} rowStart The row visual start index.
639
+ * @param {number} rowEnd The row visual end index.
640
+ * @returns {number}
641
+ */
642
+ }, {
643
+ key: "countRenderableRowsInRange",
644
+ value: function countRenderableRowsInRange(rowStart, rowEnd) {
645
+ var count = 0;
646
+ for (var row = rowStart; row <= rowEnd; row++) {
647
+ if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
648
+ count += 1;
649
+ }
650
+ }
651
+ return count;
652
+ }
653
+
616
654
  /**
617
655
  * Checks if at least one cell than belongs to the main table is not covered by the top, left or
618
656
  * bottom overlay.
@@ -884,15 +922,29 @@ var TableView = /*#__PURE__*/function () {
884
922
  },
885
923
  onBeforeHighlightingRowHeader: function onBeforeHighlightingRowHeader(renderableRow, headerLevel, highlightMeta) {
886
924
  var rowMapper = _this2.instance.rowIndexMapper;
887
- var visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
925
+ var areColumnHeadersSelected = renderableRow < 0;
926
+ var visualRow = renderableRow;
927
+ if (!areColumnHeadersSelected) {
928
+ visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
929
+ }
888
930
  var newVisualRow = _this2.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
889
- return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
931
+ if (!areColumnHeadersSelected) {
932
+ return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
933
+ }
934
+ return newVisualRow;
890
935
  },
891
936
  onBeforeHighlightingColumnHeader: function onBeforeHighlightingColumnHeader(renderableColumn, headerLevel, highlightMeta) {
892
937
  var columnMapper = _this2.instance.columnIndexMapper;
893
- var visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
938
+ var areRowHeadersSelected = renderableColumn < 0;
939
+ var visualColumn = renderableColumn;
940
+ if (!areRowHeadersSelected) {
941
+ visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
942
+ }
894
943
  var newVisualColumn = _this2.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
895
- return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
944
+ if (!areRowHeadersSelected) {
945
+ return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
946
+ }
947
+ return newVisualColumn;
896
948
  },
897
949
  onAfterDrawSelection: function onAfterDrawSelection(currentRow, currentColumn, layerLevel) {
898
950
  var cornersOfSelection;
@@ -903,10 +955,7 @@ var TableView = /*#__PURE__*/function () {
903
955
  var selectedRange = _this2.instance.selection.getSelectedRange();
904
956
  var selectionRangeSize = selectedRange.size();
905
957
  if (selectionRangeSize > 0) {
906
- // Selection layers are stored from the "oldest" to the "newest". We should calculate the offset.
907
- // Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
908
- var selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
909
- var selectionForLayer = selectedRange.peekByIndex(selectionOffset);
958
+ var selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
910
959
  cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
911
960
  }
912
961
  return _this2.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
@@ -1080,7 +1129,7 @@ var TableView = /*#__PURE__*/function () {
1080
1129
  key: "isSelectedOnlyCell",
1081
1130
  value: function isSelectedOnlyCell() {
1082
1131
  var _this$instance$getSel, _this$instance$getSel2;
1083
- return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingle()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
1132
+ return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
1084
1133
  }
1085
1134
 
1086
1135
  /**