handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-21d91d0-20231025

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 (446) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -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 +12 -10
  14. package/3rdparty/walkontable/src/event.mjs +12 -10
  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 +13 -2
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  26. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  27. package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
  28. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
  29. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
  30. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
  31. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  32. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  33. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  34. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  35. package/3rdparty/walkontable/src/scroll.js +2 -0
  36. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  37. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  38. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  39. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  40. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  41. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  42. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  43. package/3rdparty/walkontable/src/selection/index.js +26 -0
  44. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  45. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  46. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  47. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  48. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  49. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  50. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  51. package/3rdparty/walkontable/src/settings.js +13 -4
  52. package/3rdparty/walkontable/src/settings.mjs +13 -4
  53. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  59. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  60. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  61. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  62. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  63. package/3rdparty/walkontable/src/table.js +19 -78
  64. package/3rdparty/walkontable/src/table.mjs +20 -79
  65. package/base.js +2 -2
  66. package/base.mjs +2 -2
  67. package/cellTypes/dateType/dateType.d.ts +3 -3
  68. package/cellTypes/dateType/dateType.js +2 -2
  69. package/cellTypes/dateType/dateType.mjs +2 -2
  70. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  71. package/cellTypes/handsontableType/handsontableType.js +2 -2
  72. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  73. package/cellTypes/index.d.ts +3 -0
  74. package/cellTypes/index.js +4 -0
  75. package/cellTypes/index.mjs +3 -1
  76. package/cellTypes/selectType/index.d.ts +1 -0
  77. package/cellTypes/selectType/index.js +6 -0
  78. package/cellTypes/selectType/index.mjs +1 -0
  79. package/cellTypes/selectType/selectType.d.ts +14 -0
  80. package/cellTypes/selectType/selectType.js +13 -0
  81. package/cellTypes/selectType/selectType.mjs +8 -0
  82. package/core/focusCatcher/focusDetector.js +63 -0
  83. package/core/focusCatcher/focusDetector.mjs +59 -0
  84. package/core/focusCatcher/index.js +142 -0
  85. package/core/focusCatcher/index.mjs +138 -0
  86. package/core/index.js +9 -0
  87. package/core/index.mjs +1 -0
  88. package/core.d.ts +9 -4
  89. package/core.js +285 -327
  90. package/core.mjs +285 -327
  91. package/dataMap/metaManager/metaSchema.js +65 -0
  92. package/dataMap/metaManager/metaSchema.mjs +65 -0
  93. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  94. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  95. package/dataMap/replaceData.js +5 -0
  96. package/dataMap/replaceData.mjs +5 -0
  97. package/dist/handsontable.css +51 -15
  98. package/dist/handsontable.full.css +51 -15
  99. package/dist/handsontable.full.js +13360 -7840
  100. package/dist/handsontable.full.min.css +7 -7
  101. package/dist/handsontable.full.min.js +136 -136
  102. package/dist/handsontable.js +20955 -15435
  103. package/dist/handsontable.min.css +6 -6
  104. package/dist/handsontable.min.js +24 -24
  105. package/dist/languages/all.js +6 -2
  106. package/dist/languages/all.min.js +1 -1
  107. package/dist/languages/en-US.js +3 -1
  108. package/dist/languages/en-US.min.js +1 -1
  109. package/dist/languages/pl-PL.js +3 -1
  110. package/dist/languages/pl-PL.min.js +1 -1
  111. package/editorManager.js +15 -87
  112. package/editorManager.mjs +16 -87
  113. package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
  114. package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
  115. package/editors/dateEditor/dateEditor.js +26 -7
  116. package/editors/dateEditor/dateEditor.mjs +27 -8
  117. package/editors/handsontableEditor/handsontableEditor.js +9 -1
  118. package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
  119. package/editors/textEditor/textEditor.js +19 -27
  120. package/editors/textEditor/textEditor.mjs +22 -30
  121. package/focusManager.d.ts +12 -0
  122. package/focusManager.js +265 -0
  123. package/focusManager.mjs +261 -0
  124. package/helpers/a11y.js +79 -0
  125. package/helpers/a11y.mjs +38 -0
  126. package/helpers/dom/element.js +188 -9
  127. package/helpers/dom/element.mjs +182 -9
  128. package/helpers/mixed.js +1 -1
  129. package/helpers/mixed.mjs +1 -1
  130. package/helpers/number.d.ts +1 -0
  131. package/helpers/number.js +18 -0
  132. package/helpers/number.mjs +17 -0
  133. package/i18n/constants.js +7 -1
  134. package/i18n/constants.mjs +4 -1
  135. package/i18n/languages/en-US.js +3 -1
  136. package/i18n/languages/en-US.mjs +3 -1
  137. package/i18n/languages/pl-PL.js +3 -1
  138. package/i18n/languages/pl-PL.mjs +3 -1
  139. package/languages/all.js +6 -2
  140. package/languages/en-US.js +3 -1
  141. package/languages/en-US.mjs +3 -1
  142. package/languages/index.js +6 -2
  143. package/languages/pl-PL.js +3 -1
  144. package/languages/pl-PL.mjs +3 -1
  145. package/package.json +21 -1
  146. package/pluginHooks.d.ts +12 -1
  147. package/pluginHooks.js +152 -1
  148. package/pluginHooks.mjs +152 -1
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
  151. package/plugins/columnSorting/columnSorting.js +43 -0
  152. package/plugins/columnSorting/columnSorting.mjs +44 -3
  153. package/plugins/columnSorting/index.js +3 -1
  154. package/plugins/columnSorting/index.mjs +1 -1
  155. package/plugins/comments/commentEditor.js +1 -0
  156. package/plugins/comments/commentEditor.mjs +1 -0
  157. package/plugins/comments/comments.js +252 -189
  158. package/plugins/comments/comments.mjs +251 -190
  159. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  160. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  161. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  162. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  163. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  164. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  165. package/plugins/contextMenu/commandExecutor.js +2 -3
  166. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  167. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  168. package/plugins/contextMenu/contextMenu.js +75 -36
  169. package/plugins/contextMenu/contextMenu.mjs +74 -35
  170. package/plugins/contextMenu/itemsFactory.js +2 -3
  171. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  172. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  173. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  174. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  175. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  176. package/plugins/contextMenu/menu/index.js +9 -0
  177. package/plugins/contextMenu/menu/index.mjs +1 -0
  178. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  179. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  180. package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
  181. package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
  182. package/plugins/contextMenu/menu/navigator.js +27 -0
  183. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  184. package/plugins/contextMenu/menu/positioner.js +213 -0
  185. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  186. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  187. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  188. package/plugins/contextMenu/menu/utils.js +177 -0
  189. package/plugins/contextMenu/menu/utils.mjs +163 -0
  190. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  191. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  192. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  193. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  194. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  195. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  196. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  197. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  198. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  199. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  200. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  201. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  202. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  203. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  204. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  205. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  206. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  207. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  208. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  209. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  210. package/plugins/contextMenu/utils.js +35 -151
  211. package/plugins/contextMenu/utils.mjs +35 -144
  212. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  213. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  214. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  215. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  216. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  217. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  218. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  219. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  220. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  221. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  222. package/plugins/copyPaste/copyPaste.js +127 -78
  223. package/plugins/copyPaste/copyPaste.mjs +128 -79
  224. package/plugins/customBorders/customBorders.js +23 -20
  225. package/plugins/customBorders/customBorders.mjs +24 -21
  226. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  227. package/plugins/dropdownMenu/dropdownMenu.js +127 -40
  228. package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
  229. package/plugins/filters/component/_base.js +23 -8
  230. package/plugins/filters/component/_base.mjs +23 -8
  231. package/plugins/filters/component/actionBar.js +29 -27
  232. package/plugins/filters/component/actionBar.mjs +26 -23
  233. package/plugins/filters/component/condition.js +46 -59
  234. package/plugins/filters/component/condition.mjs +40 -52
  235. package/plugins/filters/component/operators.js +21 -22
  236. package/plugins/filters/component/operators.mjs +18 -18
  237. package/plugins/filters/component/value.js +35 -26
  238. package/plugins/filters/component/value.mjs +32 -22
  239. package/plugins/filters/constants.mjs +1 -1
  240. package/plugins/filters/filters.js +106 -62
  241. package/plugins/filters/filters.mjs +99 -55
  242. package/plugins/filters/menu/focusController.js +123 -0
  243. package/plugins/filters/menu/focusController.mjs +119 -0
  244. package/plugins/filters/menu/focusNavigator.js +30 -0
  245. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  246. package/plugins/filters/ui/_base.js +35 -13
  247. package/plugins/filters/ui/_base.mjs +35 -13
  248. package/plugins/filters/ui/input.js +43 -32
  249. package/plugins/filters/ui/input.mjs +42 -30
  250. package/plugins/filters/ui/link.js +44 -12
  251. package/plugins/filters/ui/link.mjs +44 -11
  252. package/plugins/filters/ui/multipleSelect.js +234 -129
  253. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  254. package/plugins/filters/ui/radioInput.js +42 -18
  255. package/plugins/filters/ui/radioInput.mjs +42 -17
  256. package/plugins/filters/ui/select.js +144 -75
  257. package/plugins/filters/ui/select.mjs +142 -72
  258. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  259. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  260. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  261. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  262. package/plugins/mergeCells/mergeCells.js +5 -16
  263. package/plugins/mergeCells/mergeCells.mjs +5 -16
  264. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  265. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  266. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  267. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  268. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  269. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  270. package/plugins/nestedRows/nestedRows.js +41 -0
  271. package/plugins/nestedRows/nestedRows.mjs +41 -0
  272. package/plugins/nestedRows/ui/headers.js +11 -0
  273. package/plugins/nestedRows/ui/headers.mjs +12 -1
  274. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  275. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  276. package/renderers/baseRenderer/baseRenderer.js +17 -0
  277. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  278. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  279. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  280. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  281. package/renderers/dateRenderer/dateRenderer.js +29 -0
  282. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  283. package/renderers/dateRenderer/index.d.ts +1 -0
  284. package/renderers/dateRenderer/index.js +6 -0
  285. package/renderers/dateRenderer/index.mjs +1 -0
  286. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  287. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  288. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  289. package/renderers/handsontableRenderer/index.d.ts +1 -0
  290. package/renderers/handsontableRenderer/index.js +6 -0
  291. package/renderers/handsontableRenderer/index.mjs +1 -0
  292. package/renderers/index.d.ts +9 -0
  293. package/renderers/selectRenderer/index.d.ts +1 -0
  294. package/renderers/selectRenderer/index.js +6 -0
  295. package/renderers/selectRenderer/index.mjs +1 -0
  296. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  297. package/renderers/selectRenderer/selectRenderer.js +27 -0
  298. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  299. package/selection/highlight/highlight.js +256 -71
  300. package/selection/highlight/highlight.mjs +250 -71
  301. package/selection/highlight/types/activeHeader.js +10 -8
  302. package/selection/highlight/types/activeHeader.mjs +10 -8
  303. package/selection/highlight/types/area.js +6 -18
  304. package/selection/highlight/types/area.mjs +6 -18
  305. package/selection/highlight/types/areaLayered.js +31 -0
  306. package/selection/highlight/types/areaLayered.mjs +26 -0
  307. package/selection/highlight/types/column.js +27 -0
  308. package/selection/highlight/types/column.mjs +22 -0
  309. package/selection/highlight/types/customSelection.js +7 -9
  310. package/selection/highlight/types/customSelection.mjs +7 -9
  311. package/selection/highlight/types/fill.js +5 -7
  312. package/selection/highlight/types/fill.mjs +5 -7
  313. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  314. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  315. package/selection/highlight/types/header.js +9 -18
  316. package/selection/highlight/types/header.mjs +9 -18
  317. package/selection/highlight/types/row.js +27 -0
  318. package/selection/highlight/types/row.mjs +22 -0
  319. package/selection/highlight/visualSelection.js +31 -27
  320. package/selection/highlight/visualSelection.mjs +31 -27
  321. package/selection/index.js +4 -7
  322. package/selection/index.mjs +2 -3
  323. package/selection/mouseEventHandler.js +7 -1
  324. package/selection/mouseEventHandler.mjs +7 -1
  325. package/selection/range.js +8 -8
  326. package/selection/range.mjs +8 -8
  327. package/selection/selection.js +321 -152
  328. package/selection/selection.mjs +318 -151
  329. package/selection/transformation.js +232 -90
  330. package/selection/transformation.mjs +232 -90
  331. package/selection/utils.js +15 -21
  332. package/selection/utils.mjs +16 -21
  333. package/settings.d.ts +4 -0
  334. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  335. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  336. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  337. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  338. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  339. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  340. package/shortcutContexts/commands/editor/index.js +16 -0
  341. package/shortcutContexts/commands/editor/index.mjs +12 -0
  342. package/shortcutContexts/commands/editor/open.js +27 -0
  343. package/shortcutContexts/commands/editor/open.mjs +23 -0
  344. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  345. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  346. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  348. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  349. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  350. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  351. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  352. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  353. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  354. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  355. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  364. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  365. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  366. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  367. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  368. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  369. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  370. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  371. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  372. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  373. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  374. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  375. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  376. package/shortcutContexts/commands/index.js +35 -0
  377. package/shortcutContexts/commands/index.mjs +31 -0
  378. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  383. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  384. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  385. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  386. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  387. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  388. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  389. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  390. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  391. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  401. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  402. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  403. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  404. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  405. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  406. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  407. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  408. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  409. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  410. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  411. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  412. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  413. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  414. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  415. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  416. package/shortcutContexts/commands/selectAll.js +12 -0
  417. package/shortcutContexts/commands/selectAll.mjs +8 -0
  418. package/shortcutContexts/constants.js +13 -0
  419. package/shortcutContexts/constants.mjs +8 -0
  420. package/shortcutContexts/editor.js +25 -0
  421. package/shortcutContexts/editor.mjs +21 -0
  422. package/shortcutContexts/grid.js +163 -0
  423. package/shortcutContexts/grid.mjs +159 -0
  424. package/shortcutContexts/index.js +24 -0
  425. package/shortcutContexts/index.mjs +11 -0
  426. package/shortcuts/context.js +23 -4
  427. package/shortcuts/context.mjs +23 -5
  428. package/shortcuts/manager.js +25 -7
  429. package/shortcuts/manager.mjs +26 -7
  430. package/shortcuts/recorder.js +3 -3
  431. package/shortcuts/recorder.mjs +3 -3
  432. package/shortcuts/utils.js +19 -5
  433. package/shortcuts/utils.mjs +18 -4
  434. package/tableView.js +111 -13
  435. package/tableView.mjs +112 -14
  436. package/utils/paginator.js +151 -0
  437. package/utils/paginator.mjs +147 -0
  438. package/3rdparty/walkontable/src/selection.js +0 -295
  439. package/3rdparty/walkontable/src/selection.mjs +0 -290
  440. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  441. package/plugins/copyPaste/focusableElement.js +0 -186
  442. package/plugins/copyPaste/focusableElement.mjs +0 -180
  443. package/selection/highlight/constants.js +0 -15
  444. package/selection/highlight/constants.mjs +0 -6
  445. package/selection/highlight/types/index.js +0 -35
  446. package/selection/highlight/types/index.mjs +0 -31
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = addEditCommentItem;
5
+ var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
7
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
8
+ /**
9
+ * @param {Comments} plugin The Comments plugin instance.
10
+ * @returns {object}
11
+ */
12
+ function addEditCommentItem(plugin) {
13
+ return {
14
+ key: 'commentsAddEdit',
15
+ name() {
16
+ var _this$getSelectedRang;
17
+ const highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
18
+ if (highlight !== null && highlight !== void 0 && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
19
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
20
+ }
21
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
22
+ },
23
+ callback() {
24
+ const range = this.getSelectedRangeLast();
25
+ this.deselectCell();
26
+ plugin.setRange(range);
27
+ plugin.show();
28
+ plugin.focusEditor();
29
+ },
30
+ disabled() {
31
+ const range = this.getSelectedRangeLast();
32
+ if (!range) {
33
+ return true;
34
+ }
35
+ if (range.highlight.isHeader()) {
36
+ return true;
37
+ }
38
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
39
+ }
40
+ };
41
+ }
@@ -0,0 +1,35 @@
1
+ import * as C from "../../../i18n/constants.mjs";
2
+ /**
3
+ * @param {Comments} plugin The Comments plugin instance.
4
+ * @returns {object}
5
+ */
6
+ export default function addEditCommentItem(plugin) {
7
+ return {
8
+ key: 'commentsAddEdit',
9
+ name() {
10
+ var _this$getSelectedRang;
11
+ const highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
12
+ if (highlight !== null && highlight !== void 0 && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
13
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
14
+ }
15
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
16
+ },
17
+ callback() {
18
+ const range = this.getSelectedRangeLast();
19
+ this.deselectCell();
20
+ plugin.setRange(range);
21
+ plugin.show();
22
+ plugin.focusEditor();
23
+ },
24
+ disabled() {
25
+ const range = this.getSelectedRangeLast();
26
+ if (!range) {
27
+ return true;
28
+ }
29
+ if (range.highlight.isHeader()) {
30
+ return true;
31
+ }
32
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
33
+ }
34
+ };
35
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = readOnlyCommentItem;
5
+ var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
+ var _utils = require("../../contextMenu/utils");
7
+ var _comments = require("../comments");
8
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
+ /**
11
+ * @param {Comments} plugin The Comments plugin instance.
12
+ * @returns {object}
13
+ */
14
+ function readOnlyCommentItem(plugin) {
15
+ return {
16
+ key: 'commentsReadOnly',
17
+ name() {
18
+ const label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
19
+ const areReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
20
+ return plugin.getCommentMeta(row, col, _comments.META_READONLY);
21
+ });
22
+ return areReadOnly ? (0, _utils.markLabelAsSelected)(label) : label;
23
+ },
24
+ callback() {
25
+ const range = this.getSelectedRangeLast();
26
+ range.forAll((row, column) => {
27
+ if (row >= 0 && column >= 0) {
28
+ const currentState = !!plugin.getCommentMeta(row, column, _comments.META_READONLY);
29
+ plugin.updateCommentMeta(row, column, {
30
+ [_comments.META_READONLY]: !currentState
31
+ });
32
+ }
33
+ });
34
+ },
35
+ disabled() {
36
+ const range = this.getSelectedRangeLast();
37
+ if (!range) {
38
+ return true;
39
+ }
40
+ if (range.highlight.isHeader()) {
41
+ return true;
42
+ }
43
+ if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
44
+ return true;
45
+ }
46
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
47
+ }
48
+ };
49
+ }
@@ -0,0 +1,43 @@
1
+ import * as C from "../../../i18n/constants.mjs";
2
+ import { checkSelectionConsistency, markLabelAsSelected } from "../../contextMenu/utils.mjs";
3
+ import { META_READONLY } from "../comments.mjs";
4
+ /**
5
+ * @param {Comments} plugin The Comments plugin instance.
6
+ * @returns {object}
7
+ */
8
+ export default function readOnlyCommentItem(plugin) {
9
+ return {
10
+ key: 'commentsReadOnly',
11
+ name() {
12
+ const label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
13
+ const areReadOnly = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
14
+ return plugin.getCommentMeta(row, col, META_READONLY);
15
+ });
16
+ return areReadOnly ? markLabelAsSelected(label) : label;
17
+ },
18
+ callback() {
19
+ const range = this.getSelectedRangeLast();
20
+ range.forAll((row, column) => {
21
+ if (row >= 0 && column >= 0) {
22
+ const currentState = !!plugin.getCommentMeta(row, column, META_READONLY);
23
+ plugin.updateCommentMeta(row, column, {
24
+ [META_READONLY]: !currentState
25
+ });
26
+ }
27
+ });
28
+ },
29
+ disabled() {
30
+ const range = this.getSelectedRangeLast();
31
+ if (!range) {
32
+ return true;
33
+ }
34
+ if (range.highlight.isHeader()) {
35
+ return true;
36
+ }
37
+ if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
38
+ return true;
39
+ }
40
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
41
+ }
42
+ };
43
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = removeCommentItem;
5
+ var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
7
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
8
+ /**
9
+ * @param {Comments} plugin The Comments plugin instance.
10
+ * @returns {object}
11
+ */
12
+ function removeCommentItem(plugin) {
13
+ return {
14
+ key: 'commentsRemove',
15
+ name() {
16
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
17
+ },
18
+ callback() {
19
+ const range = this.getSelectedRangeLast();
20
+ range.forAll((row, column) => {
21
+ if (row >= 0 && column >= 0) {
22
+ plugin.removeCommentAtCell(row, column, false);
23
+ }
24
+ });
25
+ this.render();
26
+ },
27
+ disabled() {
28
+ const range = this.getSelectedRangeLast();
29
+ if (!range) {
30
+ return true;
31
+ }
32
+ if (range.highlight.isHeader()) {
33
+ return true;
34
+ }
35
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
36
+ }
37
+ };
38
+ }
@@ -0,0 +1,32 @@
1
+ import * as C from "../../../i18n/constants.mjs";
2
+ /**
3
+ * @param {Comments} plugin The Comments plugin instance.
4
+ * @returns {object}
5
+ */
6
+ export default function removeCommentItem(plugin) {
7
+ return {
8
+ key: 'commentsRemove',
9
+ name() {
10
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
11
+ },
12
+ callback() {
13
+ const range = this.getSelectedRangeLast();
14
+ range.forAll((row, column) => {
15
+ if (row >= 0 && column >= 0) {
16
+ plugin.removeCommentAtCell(row, column, false);
17
+ }
18
+ });
19
+ this.render();
20
+ },
21
+ disabled() {
22
+ const range = this.getSelectedRangeLast();
23
+ if (!range) {
24
+ return true;
25
+ }
26
+ if (range.highlight.isHeader()) {
27
+ return true;
28
+ }
29
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
30
+ }
31
+ };
32
+ }
@@ -85,6 +85,7 @@ class CommandExecutor {
85
85
  * @param {string[]} subCommands The collection of the commands.
86
86
  * @returns {boolean}
87
87
  */
88
+ exports.CommandExecutor = CommandExecutor;
88
89
  function findSubCommand(subCommandName, subCommands) {
89
90
  let command;
90
91
  (0, _array.arrayEach)(subCommands, cmd => {
@@ -95,6 +96,4 @@ function findSubCommand(subCommandName, subCommands) {
95
96
  }
96
97
  });
97
98
  return command;
98
- }
99
- var _default = CommandExecutor;
100
- exports.default = _default;
99
+ }
@@ -9,7 +9,7 @@ import { hasOwnProperty } from "../../helpers/object.mjs";
9
9
  * @private
10
10
  * @class CommandExecutor
11
11
  */
12
- class CommandExecutor {
12
+ export class CommandExecutor {
13
13
  constructor(hotInstance) {
14
14
  this.hot = hotInstance;
15
15
  this.commands = {};
@@ -92,5 +92,4 @@ function findSubCommand(subCommandName, subCommands) {
92
92
  }
93
93
  });
94
94
  return command;
95
- }
96
- export default CommandExecutor;
95
+ }
@@ -60,7 +60,7 @@ export class ContextMenu extends BasePlugin {
60
60
 
61
61
  constructor(hotInstance: Core);
62
62
  isEnabled(): boolean;
63
- open(event: Event): void;
63
+ open(position: { left: number, top: number } | Event, offset?: { above?: number, below?: number, left?: number, right?: number }): void;
64
64
  close(): void;
65
65
  executeCommand(commandName: string, ...params: any): void;
66
66
  }
@@ -4,10 +4,12 @@ exports.__esModule = true;
4
4
  var _base = require("../base");
5
5
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
6
6
  var _array = require("../../helpers/array");
7
- var _commandExecutor = _interopRequireDefault(require("./commandExecutor"));
7
+ var _object = require("../../helpers/object");
8
+ var _commandExecutor = require("./commandExecutor");
8
9
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
9
- var _itemsFactory = _interopRequireDefault(require("./itemsFactory"));
10
- var _menu = _interopRequireDefault(require("./menu"));
10
+ var _itemsFactory = require("./itemsFactory");
11
+ var _menu = require("./menu");
12
+ var _utils = require("./utils");
11
13
  var _element = require("../../helpers/dom/element");
12
14
  var _predefinedItems = require("./predefinedItems");
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -15,6 +17,7 @@ const PLUGIN_KEY = 'contextMenu';
15
17
  exports.PLUGIN_KEY = PLUGIN_KEY;
16
18
  const PLUGIN_PRIORITY = 70;
17
19
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
20
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
18
21
  _pluginHooks.default.getSingleton().register('afterContextMenuDefaultOptions');
19
22
  _pluginHooks.default.getSingleton().register('beforeContextMenuShow');
20
23
  _pluginHooks.default.getSingleton().register('afterContextMenuShow');
@@ -83,7 +86,7 @@ class ContextMenu extends _base.BasePlugin {
83
86
  * @private
84
87
  * @type {CommandExecutor}
85
88
  */
86
- this.commandExecutor = new _commandExecutor.default(this.hot);
89
+ this.commandExecutor = new _commandExecutor.CommandExecutor(this.hot);
87
90
  /**
88
91
  * Instance of {@link ItemsFactory}.
89
92
  *
@@ -122,7 +125,7 @@ class ContextMenu extends _base.BasePlugin {
122
125
  if (typeof settings.callback === 'function') {
123
126
  this.commandExecutor.setCommonCallback(settings.callback);
124
127
  }
125
- this.menu = new _menu.default(this.hot, {
128
+ this.menu = new _menu.Menu(this.hot, {
126
129
  className: 'htContextMenu',
127
130
  keepInViewport: true,
128
131
  container: settings.uiContainer || this.hot.rootDocument.body
@@ -137,6 +140,7 @@ class ContextMenu extends _base.BasePlugin {
137
140
  return _this.executeCommand.call(_this, ...params);
138
141
  });
139
142
  this.addHook('afterOnCellContextMenu', event => this.onAfterOnCellContextMenu(event));
143
+ this.registerShortcuts();
140
144
  super.enablePlugin();
141
145
  }
142
146
 
@@ -149,6 +153,7 @@ class ContextMenu extends _base.BasePlugin {
149
153
  updatePlugin() {
150
154
  this.disablePlugin();
151
155
  this.enablePlugin();
156
+ this.unregisterShortcuts();
152
157
  super.updatePlugin();
153
158
  }
154
159
 
@@ -164,50 +169,80 @@ class ContextMenu extends _base.BasePlugin {
164
169
  super.disablePlugin();
165
170
  }
166
171
 
172
+ /**
173
+ * Register shortcuts responsible for toggling context menu.
174
+ *
175
+ * @private
176
+ */
177
+ registerShortcuts() {
178
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
179
+ keys: [['Control/Meta', 'Shift', '\\'], ['Shift', 'F10']],
180
+ callback: () => {
181
+ const {
182
+ highlight
183
+ } = this.hot.getSelectedRangeLast();
184
+ this.hot.scrollToFocusedCell();
185
+ const rect = this.hot.getCell(highlight.row, highlight.col, true).getBoundingClientRect();
186
+ const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
187
+ this.open({
188
+ left: rect.left + offset.left,
189
+ top: rect.top + offset.top - 1 + rect.height
190
+ }, {
191
+ left: rect.width,
192
+ above: -rect.height
193
+ });
194
+ },
195
+ runOnlyIf: () => this.hot.getSelectedRangeLast() && !this.menu.isOpened(),
196
+ group: SHORTCUTS_GROUP
197
+ });
198
+ }
199
+
200
+ /**
201
+ * Unregister shortcuts responsible for toggling context menu.
202
+ *
203
+ * @private
204
+ */
205
+ unregisterShortcuts() {
206
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
207
+ }
208
+
167
209
  /**
168
210
  * Opens menu and re-position it based on the passed coordinates.
169
211
  *
170
- * @param {Event} event The mouse event object.
212
+ * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
213
+ * which contains coordinates relative to the browsers viewport (without included scroll offsets).
214
+ * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
215
+ * coordinates.
216
+ * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
217
+ * the offset to the menu position.
218
+ * @fires Hooks#beforeContextMenuShow
219
+ * @fires Hooks#afterContextMenuShow
171
220
  */
172
- open(event) {
173
- if (!this.menu) {
221
+ open(position) {
222
+ var _this$menu;
223
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
224
+ above: 0,
225
+ below: 0,
226
+ left: 0,
227
+ right: 0
228
+ };
229
+ if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
174
230
  return;
175
231
  }
176
232
  this.prepareMenuItems();
177
233
  this.menu.open();
178
- if (!this.menu.isOpened()) {
179
- return;
180
- }
181
- let offsetTop = 0;
182
- let offsetLeft = 0;
183
- if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
184
- const {
185
- frameElement
186
- } = this.hot.rootWindow;
187
- const {
188
- top,
189
- left
190
- } = frameElement.getBoundingClientRect();
191
- offsetTop = top - (0, _element.getWindowScrollTop)(event.view);
192
- offsetLeft = left - (0, _element.getWindowScrollLeft)(event.view);
193
- } else {
194
- offsetTop = -1 * (0, _element.getWindowScrollTop)(this.menu.hotMenu.rootWindow);
195
- offsetLeft = -1 * (0, _element.getWindowScrollLeft)(this.menu.hotMenu.rootWindow);
196
- }
197
- this.menu.setPosition({
198
- top: parseInt(event.pageY, 10) + offsetTop,
199
- left: parseInt(event.pageX, 10) + offsetLeft
234
+ (0, _object.objectEach)(offset, (value, key) => {
235
+ this.menu.setOffset(key, value);
200
236
  });
237
+ this.menu.setPosition(position);
201
238
  }
202
239
 
203
240
  /**
204
241
  * Closes the menu.
205
242
  */
206
243
  close() {
207
- if (!this.menu) {
208
- return;
209
- }
210
- this.menu.close();
244
+ var _this$menu2;
245
+ (_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
211
246
  this.itemsFactory = null;
212
247
  }
213
248
 
@@ -259,7 +294,7 @@ class ContextMenu extends _base.BasePlugin {
259
294
  * @fires Hooks#beforeContextMenuSetItems
260
295
  */
261
296
  prepareMenuItems() {
262
- this.itemsFactory = new _itemsFactory.default(this.hot, ContextMenu.DEFAULT_ITEMS);
297
+ this.itemsFactory = new _itemsFactory.ItemsFactory(this.hot, ContextMenu.DEFAULT_ITEMS);
263
298
  const settings = this.hot.getSettings()[PLUGIN_KEY];
264
299
  const predefinedItems = {
265
300
  items: this.itemsFactory.getItems(settings)
@@ -305,7 +340,11 @@ class ContextMenu extends _base.BasePlugin {
305
340
  return;
306
341
  }
307
342
  }
308
- this.open(event);
343
+ const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
344
+ this.open({
345
+ top: event.clientY + offset.top,
346
+ left: event.clientX + offset.left
347
+ });
309
348
  }
310
349
 
311
350
  /**
@@ -1,14 +1,17 @@
1
1
  import { BasePlugin } from "../base/index.mjs";
2
2
  import Hooks from "../../pluginHooks.mjs";
3
3
  import { arrayEach } from "../../helpers/array.mjs";
4
- import CommandExecutor from "./commandExecutor.mjs";
4
+ import { objectEach } from "../../helpers/object.mjs";
5
+ import { CommandExecutor } from "./commandExecutor.mjs";
5
6
  import EventManager from "../../eventManager.mjs";
6
- import ItemsFactory from "./itemsFactory.mjs";
7
- import Menu from "./menu.mjs";
8
- import { getWindowScrollLeft, getWindowScrollTop, hasClass } from "../../helpers/dom/element.mjs";
9
- import { ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR } from "./predefinedItems.mjs";
7
+ import { ItemsFactory } from "./itemsFactory.mjs";
8
+ import { Menu } from "./menu/index.mjs";
9
+ import { getDocumentOffsetByElement } from "./utils.mjs";
10
+ import { hasClass } from "../../helpers/dom/element.mjs";
11
+ import { ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR } from "./predefinedItems/index.mjs";
10
12
  export const PLUGIN_KEY = 'contextMenu';
11
13
  export const PLUGIN_PRIORITY = 70;
14
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
12
15
  Hooks.getSingleton().register('afterContextMenuDefaultOptions');
13
16
  Hooks.getSingleton().register('beforeContextMenuShow');
14
17
  Hooks.getSingleton().register('afterContextMenuShow');
@@ -131,6 +134,7 @@ export class ContextMenu extends BasePlugin {
131
134
  return _this.executeCommand.call(_this, ...params);
132
135
  });
133
136
  this.addHook('afterOnCellContextMenu', event => this.onAfterOnCellContextMenu(event));
137
+ this.registerShortcuts();
134
138
  super.enablePlugin();
135
139
  }
136
140
 
@@ -143,6 +147,7 @@ export class ContextMenu extends BasePlugin {
143
147
  updatePlugin() {
144
148
  this.disablePlugin();
145
149
  this.enablePlugin();
150
+ this.unregisterShortcuts();
146
151
  super.updatePlugin();
147
152
  }
148
153
 
@@ -158,50 +163,80 @@ export class ContextMenu extends BasePlugin {
158
163
  super.disablePlugin();
159
164
  }
160
165
 
166
+ /**
167
+ * Register shortcuts responsible for toggling context menu.
168
+ *
169
+ * @private
170
+ */
171
+ registerShortcuts() {
172
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
173
+ keys: [['Control/Meta', 'Shift', '\\'], ['Shift', 'F10']],
174
+ callback: () => {
175
+ const {
176
+ highlight
177
+ } = this.hot.getSelectedRangeLast();
178
+ this.hot.scrollToFocusedCell();
179
+ const rect = this.hot.getCell(highlight.row, highlight.col, true).getBoundingClientRect();
180
+ const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
181
+ this.open({
182
+ left: rect.left + offset.left,
183
+ top: rect.top + offset.top - 1 + rect.height
184
+ }, {
185
+ left: rect.width,
186
+ above: -rect.height
187
+ });
188
+ },
189
+ runOnlyIf: () => this.hot.getSelectedRangeLast() && !this.menu.isOpened(),
190
+ group: SHORTCUTS_GROUP
191
+ });
192
+ }
193
+
194
+ /**
195
+ * Unregister shortcuts responsible for toggling context menu.
196
+ *
197
+ * @private
198
+ */
199
+ unregisterShortcuts() {
200
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
201
+ }
202
+
161
203
  /**
162
204
  * Opens menu and re-position it based on the passed coordinates.
163
205
  *
164
- * @param {Event} event The mouse event object.
206
+ * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
207
+ * which contains coordinates relative to the browsers viewport (without included scroll offsets).
208
+ * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
209
+ * coordinates.
210
+ * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
211
+ * the offset to the menu position.
212
+ * @fires Hooks#beforeContextMenuShow
213
+ * @fires Hooks#afterContextMenuShow
165
214
  */
166
- open(event) {
167
- if (!this.menu) {
215
+ open(position) {
216
+ var _this$menu;
217
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
218
+ above: 0,
219
+ below: 0,
220
+ left: 0,
221
+ right: 0
222
+ };
223
+ if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
168
224
  return;
169
225
  }
170
226
  this.prepareMenuItems();
171
227
  this.menu.open();
172
- if (!this.menu.isOpened()) {
173
- return;
174
- }
175
- let offsetTop = 0;
176
- let offsetLeft = 0;
177
- if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
178
- const {
179
- frameElement
180
- } = this.hot.rootWindow;
181
- const {
182
- top,
183
- left
184
- } = frameElement.getBoundingClientRect();
185
- offsetTop = top - getWindowScrollTop(event.view);
186
- offsetLeft = left - getWindowScrollLeft(event.view);
187
- } else {
188
- offsetTop = -1 * getWindowScrollTop(this.menu.hotMenu.rootWindow);
189
- offsetLeft = -1 * getWindowScrollLeft(this.menu.hotMenu.rootWindow);
190
- }
191
- this.menu.setPosition({
192
- top: parseInt(event.pageY, 10) + offsetTop,
193
- left: parseInt(event.pageX, 10) + offsetLeft
228
+ objectEach(offset, (value, key) => {
229
+ this.menu.setOffset(key, value);
194
230
  });
231
+ this.menu.setPosition(position);
195
232
  }
196
233
 
197
234
  /**
198
235
  * Closes the menu.
199
236
  */
200
237
  close() {
201
- if (!this.menu) {
202
- return;
203
- }
204
- this.menu.close();
238
+ var _this$menu2;
239
+ (_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
205
240
  this.itemsFactory = null;
206
241
  }
207
242
 
@@ -299,7 +334,11 @@ export class ContextMenu extends BasePlugin {
299
334
  return;
300
335
  }
301
336
  }
302
- this.open(event);
337
+ const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
338
+ this.open({
339
+ top: event.clientY + offset.top,
340
+ left: event.clientX + offset.left
341
+ });
303
342
  }
304
343
 
305
344
  /**
@@ -66,6 +66,7 @@ class ItemsFactory {
66
66
  * @param {object} items Additional options.
67
67
  * @returns {object[]} Returns parsed and merged menu items collection ready to render.
68
68
  */
69
+ exports.ItemsFactory = ItemsFactory;
69
70
  function getItems() {
70
71
  let itemsPattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
71
72
  let defaultPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -119,6 +120,4 @@ function getItems() {
119
120
  });
120
121
  }
121
122
  return result;
122
- }
123
- var _default = ItemsFactory;
124
- exports.default = _default;
123
+ }
@@ -1,14 +1,14 @@
1
1
  import "core-js/modules/es.array.push.js";
2
2
  import { objectEach, isObject, extend } from "../../helpers/object.mjs";
3
3
  import { arrayEach } from "../../helpers/array.mjs";
4
- import { SEPARATOR, ITEMS, predefinedItems } from "./predefinedItems.mjs";
4
+ import { SEPARATOR, ITEMS, predefinedItems } from "./predefinedItems/index.mjs";
5
5
  /**
6
6
  * Predefined items class factory for menu items.
7
7
  *
8
8
  * @private
9
9
  * @class ItemsFactory
10
10
  */
11
- class ItemsFactory {
11
+ export class ItemsFactory {
12
12
  constructor(hotInstance) {
13
13
  let orderPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
14
14
  this.hot = hotInstance;
@@ -116,5 +116,4 @@ function getItems() {
116
116
  });
117
117
  }
118
118
  return result;
119
- }
120
- export default ItemsFactory;
119
+ }