handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707

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 (456) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -28
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +69 -36
  6. package/3rdparty/walkontable/src/cell/range.mjs +68 -35
  7. package/3rdparty/walkontable/src/event.js +3 -5
  8. package/3rdparty/walkontable/src/event.mjs +3 -5
  9. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  14. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  15. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  16. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  17. package/3rdparty/walkontable/src/overlays.js +55 -64
  18. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  19. package/3rdparty/walkontable/src/renderer/table.js +0 -2
  20. package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
  21. package/3rdparty/walkontable/src/scroll.js +20 -23
  22. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  23. package/3rdparty/walkontable/src/selection/border/border.js +1 -0
  24. package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
  25. package/3rdparty/walkontable/src/selection/manager.js +40 -45
  26. package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
  27. package/3rdparty/walkontable/src/selection/scanner.js +5 -4
  28. package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
  29. package/3rdparty/walkontable/src/settings.js +13 -15
  30. package/3rdparty/walkontable/src/settings.mjs +13 -15
  31. package/3rdparty/walkontable/src/table.js +23 -26
  32. package/3rdparty/walkontable/src/table.mjs +23 -26
  33. package/CHANGELOG.md +56 -0
  34. package/base.js +2 -4
  35. package/base.mjs +2 -2
  36. package/common.d.ts +1 -1
  37. package/core.d.ts +7 -9
  38. package/core.js +241 -439
  39. package/core.mjs +245 -443
  40. package/dataMap/dataMap.js +1 -0
  41. package/dataMap/dataMap.mjs +1 -0
  42. package/dataMap/dataSource.js +5 -5
  43. package/dataMap/dataSource.mjs +5 -5
  44. package/dataMap/metaManager/lazyFactoryMap.js +1 -0
  45. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
  46. package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
  47. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
  48. package/dataMap/metaManager/metaSchema.js +33 -24
  49. package/dataMap/metaManager/metaSchema.mjs +33 -24
  50. package/dist/handsontable.css +25 -3
  51. package/dist/handsontable.full.css +25 -3
  52. package/dist/handsontable.full.js +14539 -11358
  53. package/dist/handsontable.full.min.css +5 -5
  54. package/dist/handsontable.full.min.js +137 -125
  55. package/dist/handsontable.js +31414 -28455
  56. package/dist/handsontable.min.css +5 -5
  57. package/dist/handsontable.min.js +11 -3
  58. package/dist/languages/all.js +133 -0
  59. package/dist/languages/ar-AR.js +7 -0
  60. package/dist/languages/cs-CZ.js +7 -0
  61. package/dist/languages/de-CH.js +7 -0
  62. package/dist/languages/de-DE.js +7 -0
  63. package/dist/languages/en-US.js +7 -0
  64. package/dist/languages/es-MX.js +7 -0
  65. package/dist/languages/fr-FR.js +7 -0
  66. package/dist/languages/it-IT.js +7 -0
  67. package/dist/languages/ja-JP.js +7 -0
  68. package/dist/languages/ko-KR.js +7 -0
  69. package/dist/languages/lv-LV.js +7 -0
  70. package/dist/languages/nb-NO.js +7 -0
  71. package/dist/languages/nl-NL.js +7 -0
  72. package/dist/languages/pl-PL.js +7 -0
  73. package/dist/languages/pt-BR.js +7 -0
  74. package/dist/languages/ru-RU.js +7 -0
  75. package/dist/languages/sr-SP.js +7 -0
  76. package/dist/languages/zh-CN.js +7 -0
  77. package/dist/languages/zh-TW.js +7 -0
  78. package/editorManager.js +19 -89
  79. package/editorManager.mjs +24 -93
  80. package/editors/baseEditor/baseEditor.js +1 -0
  81. package/editors/baseEditor/baseEditor.mjs +1 -0
  82. package/editors/textEditor/textEditor.js +14 -20
  83. package/editors/textEditor/textEditor.mjs +16 -22
  84. package/helpers/dom/element.js +0 -11
  85. package/helpers/dom/element.mjs +0 -10
  86. package/helpers/mixed.js +2 -2
  87. package/helpers/mixed.mjs +2 -2
  88. package/helpers/number.d.ts +1 -0
  89. package/helpers/number.js +18 -0
  90. package/helpers/number.mjs +17 -0
  91. package/helpers/object.js +2 -0
  92. package/helpers/object.mjs +2 -0
  93. package/i18n/languages/ar-AR.js +7 -1
  94. package/i18n/languages/cs-CZ.js +7 -1
  95. package/i18n/languages/de-CH.js +7 -1
  96. package/i18n/languages/de-DE.js +7 -1
  97. package/i18n/languages/en-US.js +7 -1
  98. package/i18n/languages/es-MX.js +7 -1
  99. package/i18n/languages/fr-FR.js +7 -1
  100. package/i18n/languages/it-IT.js +7 -1
  101. package/i18n/languages/ja-JP.js +7 -1
  102. package/i18n/languages/ko-KR.js +7 -1
  103. package/i18n/languages/lv-LV.js +7 -1
  104. package/i18n/languages/nb-NO.js +7 -1
  105. package/i18n/languages/nl-NL.js +7 -1
  106. package/i18n/languages/pl-PL.js +7 -1
  107. package/i18n/languages/pt-BR.js +7 -1
  108. package/i18n/languages/ru-RU.js +7 -1
  109. package/i18n/languages/sr-SP.js +7 -1
  110. package/i18n/languages/zh-CN.js +7 -1
  111. package/i18n/languages/zh-TW.js +7 -1
  112. package/languages/all.js +133 -0
  113. package/languages/ar-AR.js +7 -0
  114. package/languages/cs-CZ.js +7 -0
  115. package/languages/de-CH.js +7 -0
  116. package/languages/de-DE.js +7 -0
  117. package/languages/en-US.js +7 -0
  118. package/languages/es-MX.js +7 -0
  119. package/languages/fr-FR.js +7 -0
  120. package/languages/index.js +133 -0
  121. package/languages/it-IT.js +7 -0
  122. package/languages/ja-JP.js +7 -0
  123. package/languages/ko-KR.js +7 -0
  124. package/languages/lv-LV.js +7 -0
  125. package/languages/nb-NO.js +7 -0
  126. package/languages/nl-NL.js +7 -0
  127. package/languages/pl-PL.js +7 -0
  128. package/languages/pt-BR.js +7 -0
  129. package/languages/ru-RU.js +7 -0
  130. package/languages/sr-SP.js +7 -0
  131. package/languages/zh-CN.js +7 -0
  132. package/languages/zh-TW.js +7 -0
  133. package/package.json +3 -2
  134. package/pluginHooks.d.ts +8 -2
  135. package/pluginHooks.js +116 -18
  136. package/pluginHooks.mjs +115 -15
  137. package/plugins/autoColumnSize/autoColumnSize.js +1 -0
  138. package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
  139. package/plugins/autoRowSize/autoRowSize.js +3 -2
  140. package/plugins/autoRowSize/autoRowSize.mjs +3 -2
  141. package/plugins/autofill/autofill.js +2 -2
  142. package/plugins/autofill/autofill.mjs +3 -3
  143. package/plugins/autofill/utils.js +1 -39
  144. package/plugins/autofill/utils.mjs +0 -37
  145. package/plugins/base/base.js +1 -0
  146. package/plugins/base/base.mjs +1 -0
  147. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
  148. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
  151. package/plugins/columnSorting/columnSorting.js +51 -8
  152. package/plugins/columnSorting/columnSorting.mjs +50 -9
  153. package/plugins/columnSorting/columnStatesManager.js +1 -0
  154. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  155. package/plugins/columnSorting/index.js +4 -2
  156. package/plugins/columnSorting/index.mjs +1 -1
  157. package/plugins/columnSorting/rootComparator.js +1 -0
  158. package/plugins/columnSorting/rootComparator.mjs +1 -0
  159. package/plugins/comments/commentEditor.js +1 -0
  160. package/plugins/comments/commentEditor.mjs +1 -0
  161. package/plugins/comments/comments.js +289 -224
  162. package/plugins/comments/comments.mjs +297 -234
  163. package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
  164. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  165. package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
  166. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
  167. package/plugins/comments/contextMenuItem/removeComment.js +48 -0
  168. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  169. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  170. package/plugins/contextMenu/contextMenu.js +81 -29
  171. package/plugins/contextMenu/contextMenu.mjs +82 -30
  172. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  173. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  174. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  175. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  176. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  177. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  178. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  179. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  180. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  181. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  182. package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
  183. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
  184. package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
  185. package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
  186. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  187. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  188. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  189. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  190. package/plugins/contextMenu/utils.js +25 -16
  191. package/plugins/contextMenu/utils.mjs +24 -15
  192. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  193. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  194. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  195. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  196. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  197. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  198. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  199. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  200. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  201. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  202. package/plugins/copyPaste/copyPaste.js +100 -14
  203. package/plugins/copyPaste/copyPaste.mjs +100 -14
  204. package/plugins/copyPaste/copyableRanges.js +25 -31
  205. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  206. package/plugins/copyPaste/focusableElement.js +219 -0
  207. package/plugins/copyPaste/focusableElement.mjs +213 -0
  208. package/plugins/customBorders/customBorders.d.ts +2 -0
  209. package/plugins/customBorders/customBorders.js +19 -50
  210. package/plugins/customBorders/customBorders.mjs +19 -50
  211. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  212. package/plugins/dropdownMenu/dropdownMenu.js +94 -30
  213. package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
  214. package/plugins/exportFile/dataProvider.js +1 -0
  215. package/plugins/exportFile/dataProvider.mjs +1 -0
  216. package/plugins/filters/component/value.js +1 -0
  217. package/plugins/filters/component/value.mjs +1 -0
  218. package/plugins/filters/condition/beginsWith.js +1 -0
  219. package/plugins/filters/condition/beginsWith.mjs +1 -0
  220. package/plugins/filters/condition/between.js +1 -0
  221. package/plugins/filters/condition/between.mjs +1 -0
  222. package/plugins/filters/condition/byValue.js +1 -0
  223. package/plugins/filters/condition/byValue.mjs +1 -0
  224. package/plugins/filters/condition/contains.js +1 -0
  225. package/plugins/filters/condition/contains.mjs +1 -0
  226. package/plugins/filters/condition/date/after.js +1 -0
  227. package/plugins/filters/condition/date/after.mjs +1 -0
  228. package/plugins/filters/condition/date/before.js +1 -0
  229. package/plugins/filters/condition/date/before.mjs +1 -0
  230. package/plugins/filters/condition/endsWith.js +1 -0
  231. package/plugins/filters/condition/endsWith.mjs +1 -0
  232. package/plugins/filters/condition/equal.js +1 -0
  233. package/plugins/filters/condition/equal.mjs +1 -0
  234. package/plugins/filters/condition/greaterThan.js +1 -0
  235. package/plugins/filters/condition/greaterThan.mjs +1 -0
  236. package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
  237. package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
  238. package/plugins/filters/condition/lessThan.js +1 -0
  239. package/plugins/filters/condition/lessThan.mjs +1 -0
  240. package/plugins/filters/condition/lessThanOrEqual.js +1 -0
  241. package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
  242. package/plugins/filters/conditionCollection.js +1 -0
  243. package/plugins/filters/conditionCollection.mjs +1 -0
  244. package/plugins/filters/filters.js +68 -42
  245. package/plugins/filters/filters.mjs +67 -41
  246. package/plugins/filters/ui/multipleSelect.js +1 -0
  247. package/plugins/filters/ui/multipleSelect.mjs +1 -0
  248. package/plugins/formulas/formulas.js +191 -168
  249. package/plugins/formulas/formulas.mjs +191 -168
  250. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  251. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  252. package/plugins/formulas/indexSyncer/index.js +225 -0
  253. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  254. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
  255. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
  256. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
  257. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
  258. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
  259. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
  260. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
  261. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
  262. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
  263. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
  264. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
  265. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
  266. package/plugins/manualColumnResize/manualColumnResize.js +36 -5
  267. package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
  268. package/plugins/manualRowMove/manualRowMove.js +31 -12
  269. package/plugins/manualRowMove/manualRowMove.mjs +32 -13
  270. package/plugins/manualRowResize/manualRowResize.js +40 -9
  271. package/plugins/manualRowResize/manualRowResize.mjs +40 -9
  272. package/plugins/mergeCells/calculations/autofill.js +1 -0
  273. package/plugins/mergeCells/calculations/autofill.mjs +1 -0
  274. package/plugins/mergeCells/cellsCollection.js +1 -0
  275. package/plugins/mergeCells/cellsCollection.mjs +1 -0
  276. package/plugins/mergeCells/mergeCells.js +6 -2
  277. package/plugins/mergeCells/mergeCells.mjs +6 -2
  278. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  279. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  280. package/plugins/multiColumnSorting/rootComparator.js +1 -0
  281. package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
  282. package/plugins/nestedHeaders/nestedHeaders.js +129 -6
  283. package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
  284. package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
  285. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
  286. package/plugins/nestedHeaders/stateManager/index.js +40 -3
  287. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  288. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  289. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
  290. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
  291. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  292. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  293. package/plugins/nestedRows/data/dataManager.js +1 -0
  294. package/plugins/nestedRows/data/dataManager.mjs +1 -0
  295. package/plugins/nestedRows/nestedRows.js +53 -7
  296. package/plugins/nestedRows/nestedRows.mjs +53 -7
  297. package/plugins/nestedRows/ui/collapsing.js +1 -0
  298. package/plugins/nestedRows/ui/collapsing.mjs +1 -0
  299. package/plugins/nestedRows/utils/rowMoveController.js +1 -0
  300. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
  301. package/plugins/persistentState/storage.js +1 -0
  302. package/plugins/persistentState/storage.mjs +1 -0
  303. package/plugins/registry.js +4 -1
  304. package/plugins/registry.mjs +1 -0
  305. package/plugins/undoRedo/undoRedo.js +1 -1
  306. package/plugins/undoRedo/undoRedo.mjs +1 -1
  307. package/renderers/baseRenderer/baseRenderer.js +0 -3
  308. package/renderers/baseRenderer/baseRenderer.mjs +0 -3
  309. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  310. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  311. package/selection/highlight/highlight.js +120 -98
  312. package/selection/highlight/highlight.mjs +118 -96
  313. package/selection/highlight/visualSelection.js +30 -17
  314. package/selection/highlight/visualSelection.mjs +30 -17
  315. package/selection/mouseEventHandler.js +1 -1
  316. package/selection/mouseEventHandler.mjs +1 -1
  317. package/selection/range.js +8 -8
  318. package/selection/range.mjs +8 -8
  319. package/selection/selection.js +246 -153
  320. package/selection/selection.mjs +247 -154
  321. package/selection/transformation.js +233 -96
  322. package/selection/transformation.mjs +230 -93
  323. package/selection/utils.js +12 -35
  324. package/selection/utils.mjs +13 -35
  325. package/settings.d.ts +2 -1
  326. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  327. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  328. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  329. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  330. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  331. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  332. package/shortcutContexts/commands/editor/index.js +16 -0
  333. package/shortcutContexts/commands/editor/index.mjs +12 -0
  334. package/shortcutContexts/commands/editor/open.js +29 -0
  335. package/shortcutContexts/commands/editor/open.mjs +24 -0
  336. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  337. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  338. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  339. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  342. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  343. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  344. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  345. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  346. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  348. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  349. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  350. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  351. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  352. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  353. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  354. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  355. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  364. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  365. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  366. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  367. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  368. package/shortcutContexts/commands/index.js +53 -0
  369. package/shortcutContexts/commands/index.mjs +49 -0
  370. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  371. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  372. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  373. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  374. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  375. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  376. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  377. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  378. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  380. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  381. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  382. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  383. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  384. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  385. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  386. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  387. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  388. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  389. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  390. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  391. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  401. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  402. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  403. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  404. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  405. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  406. package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
  407. package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
  408. package/shortcutContexts/commands/selectAll.js +11 -0
  409. package/shortcutContexts/commands/selectAll.mjs +6 -0
  410. package/shortcutContexts/constants.js +19 -0
  411. package/shortcutContexts/constants.mjs +12 -0
  412. package/shortcutContexts/editor.js +29 -0
  413. package/shortcutContexts/editor.mjs +25 -0
  414. package/shortcutContexts/grid.js +252 -0
  415. package/shortcutContexts/grid.mjs +248 -0
  416. package/shortcutContexts/index.js +29 -0
  417. package/shortcutContexts/index.mjs +15 -0
  418. package/shortcuts/context.js +1 -0
  419. package/shortcuts/context.mjs +1 -0
  420. package/shortcuts/manager.js +2 -0
  421. package/shortcuts/manager.mjs +2 -0
  422. package/shortcuts/recorder.js +2 -2
  423. package/shortcuts/recorder.mjs +2 -2
  424. package/shortcuts/utils.js +21 -5
  425. package/shortcuts/utils.mjs +20 -4
  426. package/tableView.js +112 -82
  427. package/tableView.mjs +112 -82
  428. package/translations/changesObservable/observable.js +41 -46
  429. package/translations/changesObservable/observable.mjs +36 -41
  430. package/translations/changesObservable/observer.js +1 -1
  431. package/translations/indexMapper.d.ts +0 -2
  432. package/translations/indexMapper.js +38 -64
  433. package/translations/indexMapper.mjs +39 -64
  434. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  435. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  436. package/translations/maps/utils/indexesSequence.js +1 -0
  437. package/translations/maps/utils/indexesSequence.mjs +1 -0
  438. package/translations/maps/utils/physicallyIndexed.js +1 -0
  439. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  440. package/utils/dataStructures/priorityMap.js +1 -0
  441. package/utils/dataStructures/priorityMap.mjs +1 -0
  442. package/utils/dataStructures/tree.js +16 -18
  443. package/utils/dataStructures/tree.mjs +16 -18
  444. package/utils/dataStructures/uniqueMap.js +1 -0
  445. package/utils/dataStructures/uniqueMap.mjs +1 -0
  446. package/utils/dataStructures/uniqueSet.js +1 -0
  447. package/utils/dataStructures/uniqueSet.mjs +1 -0
  448. package/utils/ghostTable.js +1 -0
  449. package/utils/ghostTable.mjs +1 -0
  450. package/utils/parseTable.js +5 -1
  451. package/utils/parseTable.mjs +5 -1
  452. package/utils/staticRegister.js +1 -0
  453. package/utils/staticRegister.mjs +1 -0
  454. package/focusManager.d.ts +0 -12
  455. package/focusManager.js +0 -275
  456. package/focusManager.mjs +0 -270
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.object.to-string.js");
6
+ require("core-js/modules/es.string.iterator.js");
7
+ require("core-js/modules/es.weak-map.js");
8
+ require("core-js/modules/web.dom-collections.iterator.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/es.symbol.js");
11
+ require("core-js/modules/es.symbol.description.js");
12
+ require("core-js/modules/es.symbol.iterator.js");
13
+ exports.__esModule = true;
14
+ exports.default = addEditCommentItem;
15
+ var C = _interopRequireWildcard(require("../../../i18n/constants"));
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ 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; }
18
+ /**
19
+ * @param {Comments} plugin The Comments plugin instance.
20
+ * @returns {object}
21
+ */
22
+ function addEditCommentItem(plugin) {
23
+ return {
24
+ key: 'commentsAddEdit',
25
+ name: function name() {
26
+ var _this$getSelectedRang;
27
+ var highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
28
+ if (highlight && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
29
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
30
+ }
31
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
32
+ },
33
+ callback: function callback() {
34
+ var range = this.getSelectedRangeLast();
35
+ this.deselectCell();
36
+ plugin.setRange(range);
37
+ plugin.show();
38
+ plugin.focusEditor();
39
+ },
40
+ disabled: function disabled() {
41
+ var range = this.getSelectedRangeLast();
42
+ if (!range) {
43
+ return true;
44
+ }
45
+ if (range.highlight.isHeader()) {
46
+ return true;
47
+ }
48
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
49
+ }
50
+ };
51
+ }
@@ -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: function name() {
10
+ var _this$getSelectedRang;
11
+ var highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
12
+ if (highlight && 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: function callback() {
18
+ var range = this.getSelectedRangeLast();
19
+ this.deselectCell();
20
+ plugin.setRange(range);
21
+ plugin.show();
22
+ plugin.focusEditor();
23
+ },
24
+ disabled: function disabled() {
25
+ var 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,63 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.iterator.js");
4
+ require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.string.iterator.js");
6
+ require("core-js/modules/web.dom-collections.iterator.js");
7
+ require("core-js/modules/es.weak-map.js");
8
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
9
+ exports.__esModule = true;
10
+ exports.default = readOnlyCommentItem;
11
+ require("core-js/modules/es.symbol.to-primitive.js");
12
+ require("core-js/modules/es.date.to-primitive.js");
13
+ require("core-js/modules/es.symbol.js");
14
+ require("core-js/modules/es.symbol.description.js");
15
+ require("core-js/modules/es.object.to-string.js");
16
+ require("core-js/modules/es.number.constructor.js");
17
+ var C = _interopRequireWildcard(require("../../../i18n/constants"));
18
+ var _utils = require("../../contextMenu/utils");
19
+ var _comments = require("../comments");
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+ 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; }
22
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
23
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
25
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
26
+ /**
27
+ * @param {Comments} plugin The Comments plugin instance.
28
+ * @returns {object}
29
+ */
30
+ function readOnlyCommentItem(plugin) {
31
+ return {
32
+ key: 'commentsReadOnly',
33
+ name: function name() {
34
+ var label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
35
+ var areReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), function (row, col) {
36
+ return plugin.getCommentMeta(row, col, _comments.META_READONLY);
37
+ });
38
+ return areReadOnly ? (0, _utils.markLabelAsSelected)(label) : label;
39
+ },
40
+ callback: function callback() {
41
+ var range = this.getSelectedRangeLast();
42
+ range.forAll(function (row, column) {
43
+ if (row >= 0 && column >= 0) {
44
+ var currentState = !!plugin.getCommentMeta(row, column, _comments.META_READONLY);
45
+ plugin.updateCommentMeta(row, column, _defineProperty({}, _comments.META_READONLY, !currentState));
46
+ }
47
+ });
48
+ },
49
+ disabled: function disabled() {
50
+ var range = this.getSelectedRangeLast();
51
+ if (!range) {
52
+ return true;
53
+ }
54
+ if (range.highlight.isHeader()) {
55
+ return true;
56
+ }
57
+ if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
58
+ return true;
59
+ }
60
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
61
+ }
62
+ };
63
+ }
@@ -0,0 +1,55 @@
1
+ import "core-js/modules/es.symbol.to-primitive.js";
2
+ import "core-js/modules/es.date.to-primitive.js";
3
+ import "core-js/modules/es.symbol.js";
4
+ import "core-js/modules/es.symbol.description.js";
5
+ import "core-js/modules/es.object.to-string.js";
6
+ import "core-js/modules/es.number.constructor.js";
7
+ import "core-js/modules/es.symbol.iterator.js";
8
+ import "core-js/modules/es.array.iterator.js";
9
+ import "core-js/modules/es.string.iterator.js";
10
+ import "core-js/modules/web.dom-collections.iterator.js";
11
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
12
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15
+ import * as C from "../../../i18n/constants.mjs";
16
+ import { checkSelectionConsistency, markLabelAsSelected } from "../../contextMenu/utils.mjs";
17
+ import { META_READONLY } from "../comments.mjs";
18
+ /**
19
+ * @param {Comments} plugin The Comments plugin instance.
20
+ * @returns {object}
21
+ */
22
+ export default function readOnlyCommentItem(plugin) {
23
+ return {
24
+ key: 'commentsReadOnly',
25
+ name: function name() {
26
+ var label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
27
+ var areReadOnly = checkSelectionConsistency(this.getSelectedRange(), function (row, col) {
28
+ return plugin.getCommentMeta(row, col, META_READONLY);
29
+ });
30
+ return areReadOnly ? markLabelAsSelected(label) : label;
31
+ },
32
+ callback: function callback() {
33
+ var range = this.getSelectedRangeLast();
34
+ range.forAll(function (row, column) {
35
+ if (row >= 0 && column >= 0) {
36
+ var currentState = !!plugin.getCommentMeta(row, column, META_READONLY);
37
+ plugin.updateCommentMeta(row, column, _defineProperty({}, META_READONLY, !currentState));
38
+ }
39
+ });
40
+ },
41
+ disabled: function disabled() {
42
+ var range = this.getSelectedRangeLast();
43
+ if (!range) {
44
+ return true;
45
+ }
46
+ if (range.highlight.isHeader()) {
47
+ return true;
48
+ }
49
+ if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
50
+ return true;
51
+ }
52
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
53
+ }
54
+ };
55
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ require("core-js/modules/es.array.iterator.js");
5
+ require("core-js/modules/es.object.to-string.js");
6
+ require("core-js/modules/es.string.iterator.js");
7
+ require("core-js/modules/es.weak-map.js");
8
+ require("core-js/modules/web.dom-collections.iterator.js");
9
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
10
+ require("core-js/modules/es.symbol.js");
11
+ require("core-js/modules/es.symbol.description.js");
12
+ require("core-js/modules/es.symbol.iterator.js");
13
+ exports.__esModule = true;
14
+ exports.default = removeCommentItem;
15
+ var C = _interopRequireWildcard(require("../../../i18n/constants"));
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ 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; }
18
+ /**
19
+ * @param {Comments} plugin The Comments plugin instance.
20
+ * @returns {object}
21
+ */
22
+ function removeCommentItem(plugin) {
23
+ return {
24
+ key: 'commentsRemove',
25
+ name: function name() {
26
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
27
+ },
28
+ callback: function callback() {
29
+ var range = this.getSelectedRangeLast();
30
+ range.forAll(function (row, column) {
31
+ if (row >= 0 && column >= 0) {
32
+ plugin.removeCommentAtCell(row, column, false);
33
+ }
34
+ });
35
+ this.render();
36
+ },
37
+ disabled: function disabled() {
38
+ var range = this.getSelectedRangeLast();
39
+ if (!range) {
40
+ return true;
41
+ }
42
+ if (range.highlight.isHeader()) {
43
+ return true;
44
+ }
45
+ return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
46
+ }
47
+ };
48
+ }
@@ -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: function name() {
10
+ return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
11
+ },
12
+ callback: function callback() {
13
+ var range = this.getSelectedRangeLast();
14
+ range.forAll(function (row, column) {
15
+ if (row >= 0 && column >= 0) {
16
+ plugin.removeCommentAtCell(row, column, false);
17
+ }
18
+ });
19
+ this.render();
20
+ },
21
+ disabled: function disabled() {
22
+ var 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
+ }
@@ -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
  }
@@ -22,10 +22,12 @@ require("core-js/modules/es.object.get-prototype-of.js");
22
22
  var _base = require("../base");
23
23
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
24
24
  var _array = require("../../helpers/array");
25
+ var _object = require("../../helpers/object");
25
26
  var _commandExecutor = _interopRequireDefault(require("./commandExecutor"));
26
27
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
27
28
  var _itemsFactory = _interopRequireDefault(require("./itemsFactory"));
28
29
  var _menu = _interopRequireDefault(require("./menu"));
30
+ var _utils = require("./utils");
29
31
  var _element = require("../../helpers/dom/element");
30
32
  var _predefinedItems = require("./predefinedItems");
31
33
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -47,6 +49,7 @@ var PLUGIN_KEY = 'contextMenu';
47
49
  exports.PLUGIN_KEY = PLUGIN_KEY;
48
50
  var PLUGIN_PRIORITY = 70;
49
51
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
52
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
50
53
  _pluginHooks.default.getSingleton().register('afterContextMenuDefaultOptions');
51
54
  _pluginHooks.default.getSingleton().register('beforeContextMenuShow');
52
55
  _pluginHooks.default.getSingleton().register('afterContextMenuShow');
@@ -168,6 +171,7 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
168
171
  this.addHook('afterOnCellContextMenu', function (event) {
169
172
  return _this2.onAfterOnCellContextMenu(event);
170
173
  });
174
+ this.registerShortcuts();
171
175
  _get(_getPrototypeOf(ContextMenu.prototype), "enablePlugin", this).call(this);
172
176
  }
173
177
 
@@ -182,6 +186,7 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
182
186
  value: function updatePlugin() {
183
187
  this.disablePlugin();
184
188
  this.enablePlugin();
189
+ this.unregisterShortcuts();
185
190
  _get(_getPrototypeOf(ContextMenu.prototype), "updatePlugin", this).call(this);
186
191
  }
187
192
 
@@ -199,39 +204,84 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
199
204
  _get(_getPrototypeOf(ContextMenu.prototype), "disablePlugin", this).call(this);
200
205
  }
201
206
 
207
+ /**
208
+ * Register shortcuts responsible for toggling context menu.
209
+ *
210
+ * @private
211
+ */
212
+ }, {
213
+ key: "registerShortcuts",
214
+ value: function registerShortcuts() {
215
+ var _this3 = this;
216
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
217
+ keys: [['Control/Meta', 'Shift', '\\'], ['Shift', 'F10']],
218
+ callback: function callback() {
219
+ var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
220
+ highlight = _this3$hot$getSelecte.highlight;
221
+ _this3.hot.scrollToFocusedCell();
222
+ var rect = _this3.hot.getCell(highlight.row, highlight.col, true).getBoundingClientRect();
223
+ var offset = (0, _utils.getDocumentOffsetByElement)(_this3.menu.container, _this3.hot.rootDocument);
224
+ _this3.open({
225
+ left: rect.left + offset.left,
226
+ top: rect.top + offset.top - 1 + rect.height
227
+ }, {
228
+ left: rect.width,
229
+ above: -rect.height
230
+ });
231
+ _this3.hot._registerTimeout(function () {
232
+ _this3.menu.selectFirstCell();
233
+ });
234
+ },
235
+ runOnlyIf: function runOnlyIf() {
236
+ return _this3.hot.getSelectedRangeLast() && !_this3.menu.isOpened();
237
+ },
238
+ group: SHORTCUTS_GROUP
239
+ });
240
+ }
241
+
242
+ /**
243
+ * Unregister shortcuts responsible for toggling context menu.
244
+ *
245
+ * @private
246
+ */
247
+ }, {
248
+ key: "unregisterShortcuts",
249
+ value: function unregisterShortcuts() {
250
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
251
+ }
252
+
202
253
  /**
203
254
  * Opens menu and re-position it based on the passed coordinates.
204
255
  *
205
- * @param {Event} event The mouse event object.
256
+ * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
257
+ * which contains coordinates relative to the browsers viewport (without included scroll offsets).
258
+ * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
259
+ * coordinates.
260
+ * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
261
+ * the offset to the menu position.
262
+ * @fires Hooks#beforeContextMenuShow
263
+ * @fires Hooks#afterContextMenuShow
206
264
  */
207
265
  }, {
208
266
  key: "open",
209
- value: function open(event) {
210
- if (!this.menu) {
267
+ value: function open(position) {
268
+ var _this$menu,
269
+ _this4 = this;
270
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
271
+ above: 0,
272
+ below: 0,
273
+ left: 0,
274
+ right: 0
275
+ };
276
+ if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
211
277
  return;
212
278
  }
213
279
  this.prepareMenuItems();
214
280
  this.menu.open();
215
- if (!this.menu.isOpened()) {
216
- return;
217
- }
218
- var offsetTop = 0;
219
- var offsetLeft = 0;
220
- if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
221
- var frameElement = this.hot.rootWindow.frameElement;
222
- var _frameElement$getBoun = frameElement.getBoundingClientRect(),
223
- top = _frameElement$getBoun.top,
224
- left = _frameElement$getBoun.left;
225
- offsetTop = top - (0, _element.getWindowScrollTop)(event.view);
226
- offsetLeft = left - (0, _element.getWindowScrollLeft)(event.view);
227
- } else {
228
- offsetTop = -1 * (0, _element.getWindowScrollTop)(this.menu.hotMenu.rootWindow);
229
- offsetLeft = -1 * (0, _element.getWindowScrollLeft)(this.menu.hotMenu.rootWindow);
230
- }
231
- this.menu.setPosition({
232
- top: parseInt(event.pageY, 10) + offsetTop,
233
- left: parseInt(event.pageX, 10) + offsetLeft
281
+ (0, _object.objectEach)(offset, function (value, key) {
282
+ _this4.menu.setOffset(key, value);
234
283
  });
284
+ this.menu.setPosition(position);
235
285
  }
236
286
 
237
287
  /**
@@ -240,10 +290,8 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
240
290
  }, {
241
291
  key: "close",
242
292
  value: function close() {
243
- if (!this.menu) {
244
- return;
245
- }
246
- this.menu.close();
293
+ var _this$menu2;
294
+ (_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
247
295
  this.itemsFactory = null;
248
296
  }
249
297
 
@@ -300,7 +348,7 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
300
348
  }, {
301
349
  key: "prepareMenuItems",
302
350
  value: function prepareMenuItems() {
303
- var _this3 = this;
351
+ var _this5 = this;
304
352
  this.itemsFactory = new _itemsFactory.default(this.hot, ContextMenu.DEFAULT_ITEMS);
305
353
  var settings = this.hot.getSettings()[PLUGIN_KEY];
306
354
  var predefinedItems = {
@@ -314,7 +362,7 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
314
362
 
315
363
  // Register all commands. Predefined and added by user or by plugins
316
364
  (0, _array.arrayEach)(menuItems, function (command) {
317
- return _this3.commandExecutor.registerCommand(command.key, command);
365
+ return _this5.commandExecutor.registerCommand(command.key, command);
318
366
  });
319
367
  }
320
368
 
@@ -351,7 +399,11 @@ var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
351
399
  return;
352
400
  }
353
401
  }
354
- this.open(event);
402
+ var offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
403
+ this.open({
404
+ top: event.clientY + offset.top,
405
+ left: event.clientX + offset.left
406
+ });
355
407
  }
356
408
 
357
409
  /**
@@ -32,14 +32,17 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
32
32
  import { BasePlugin } from "../base/index.mjs";
33
33
  import Hooks from "../../pluginHooks.mjs";
34
34
  import { arrayEach } from "../../helpers/array.mjs";
35
+ import { objectEach } from "../../helpers/object.mjs";
35
36
  import CommandExecutor from "./commandExecutor.mjs";
36
37
  import EventManager from "../../eventManager.mjs";
37
38
  import ItemsFactory from "./itemsFactory.mjs";
38
39
  import Menu from "./menu.mjs";
39
- import { getWindowScrollLeft, getWindowScrollTop, hasClass } from "../../helpers/dom/element.mjs";
40
+ import { getDocumentOffsetByElement } from "./utils.mjs";
41
+ import { hasClass } from "../../helpers/dom/element.mjs";
40
42
  import { ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR } from "./predefinedItems.mjs";
41
43
  export var PLUGIN_KEY = 'contextMenu';
42
44
  export var PLUGIN_PRIORITY = 70;
45
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
43
46
  Hooks.getSingleton().register('afterContextMenuDefaultOptions');
44
47
  Hooks.getSingleton().register('beforeContextMenuShow');
45
48
  Hooks.getSingleton().register('afterContextMenuShow');
@@ -161,6 +164,7 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
161
164
  this.addHook('afterOnCellContextMenu', function (event) {
162
165
  return _this2.onAfterOnCellContextMenu(event);
163
166
  });
167
+ this.registerShortcuts();
164
168
  _get(_getPrototypeOf(ContextMenu.prototype), "enablePlugin", this).call(this);
165
169
  }
166
170
 
@@ -175,6 +179,7 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
175
179
  value: function updatePlugin() {
176
180
  this.disablePlugin();
177
181
  this.enablePlugin();
182
+ this.unregisterShortcuts();
178
183
  _get(_getPrototypeOf(ContextMenu.prototype), "updatePlugin", this).call(this);
179
184
  }
180
185
 
@@ -192,39 +197,84 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
192
197
  _get(_getPrototypeOf(ContextMenu.prototype), "disablePlugin", this).call(this);
193
198
  }
194
199
 
200
+ /**
201
+ * Register shortcuts responsible for toggling context menu.
202
+ *
203
+ * @private
204
+ */
205
+ }, {
206
+ key: "registerShortcuts",
207
+ value: function registerShortcuts() {
208
+ var _this3 = this;
209
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
210
+ keys: [['Control/Meta', 'Shift', '\\'], ['Shift', 'F10']],
211
+ callback: function callback() {
212
+ var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
213
+ highlight = _this3$hot$getSelecte.highlight;
214
+ _this3.hot.scrollToFocusedCell();
215
+ var rect = _this3.hot.getCell(highlight.row, highlight.col, true).getBoundingClientRect();
216
+ var offset = getDocumentOffsetByElement(_this3.menu.container, _this3.hot.rootDocument);
217
+ _this3.open({
218
+ left: rect.left + offset.left,
219
+ top: rect.top + offset.top - 1 + rect.height
220
+ }, {
221
+ left: rect.width,
222
+ above: -rect.height
223
+ });
224
+ _this3.hot._registerTimeout(function () {
225
+ _this3.menu.selectFirstCell();
226
+ });
227
+ },
228
+ runOnlyIf: function runOnlyIf() {
229
+ return _this3.hot.getSelectedRangeLast() && !_this3.menu.isOpened();
230
+ },
231
+ group: SHORTCUTS_GROUP
232
+ });
233
+ }
234
+
235
+ /**
236
+ * Unregister shortcuts responsible for toggling context menu.
237
+ *
238
+ * @private
239
+ */
240
+ }, {
241
+ key: "unregisterShortcuts",
242
+ value: function unregisterShortcuts() {
243
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
244
+ }
245
+
195
246
  /**
196
247
  * Opens menu and re-position it based on the passed coordinates.
197
248
  *
198
- * @param {Event} event The mouse event object.
249
+ * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
250
+ * which contains coordinates relative to the browsers viewport (without included scroll offsets).
251
+ * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
252
+ * coordinates.
253
+ * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
254
+ * the offset to the menu position.
255
+ * @fires Hooks#beforeContextMenuShow
256
+ * @fires Hooks#afterContextMenuShow
199
257
  */
200
258
  }, {
201
259
  key: "open",
202
- value: function open(event) {
203
- if (!this.menu) {
260
+ value: function open(position) {
261
+ var _this$menu,
262
+ _this4 = this;
263
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
264
+ above: 0,
265
+ below: 0,
266
+ left: 0,
267
+ right: 0
268
+ };
269
+ if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
204
270
  return;
205
271
  }
206
272
  this.prepareMenuItems();
207
273
  this.menu.open();
208
- if (!this.menu.isOpened()) {
209
- return;
210
- }
211
- var offsetTop = 0;
212
- var offsetLeft = 0;
213
- if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
214
- var frameElement = this.hot.rootWindow.frameElement;
215
- var _frameElement$getBoun = frameElement.getBoundingClientRect(),
216
- top = _frameElement$getBoun.top,
217
- left = _frameElement$getBoun.left;
218
- offsetTop = top - getWindowScrollTop(event.view);
219
- offsetLeft = left - getWindowScrollLeft(event.view);
220
- } else {
221
- offsetTop = -1 * getWindowScrollTop(this.menu.hotMenu.rootWindow);
222
- offsetLeft = -1 * getWindowScrollLeft(this.menu.hotMenu.rootWindow);
223
- }
224
- this.menu.setPosition({
225
- top: parseInt(event.pageY, 10) + offsetTop,
226
- left: parseInt(event.pageX, 10) + offsetLeft
274
+ objectEach(offset, function (value, key) {
275
+ _this4.menu.setOffset(key, value);
227
276
  });
277
+ this.menu.setPosition(position);
228
278
  }
229
279
 
230
280
  /**
@@ -233,10 +283,8 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
233
283
  }, {
234
284
  key: "close",
235
285
  value: function close() {
236
- if (!this.menu) {
237
- return;
238
- }
239
- this.menu.close();
286
+ var _this$menu2;
287
+ (_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
240
288
  this.itemsFactory = null;
241
289
  }
242
290
 
@@ -293,7 +341,7 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
293
341
  }, {
294
342
  key: "prepareMenuItems",
295
343
  value: function prepareMenuItems() {
296
- var _this3 = this;
344
+ var _this5 = this;
297
345
  this.itemsFactory = new ItemsFactory(this.hot, ContextMenu.DEFAULT_ITEMS);
298
346
  var settings = this.hot.getSettings()[PLUGIN_KEY];
299
347
  var predefinedItems = {
@@ -307,7 +355,7 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
307
355
 
308
356
  // Register all commands. Predefined and added by user or by plugins
309
357
  arrayEach(menuItems, function (command) {
310
- return _this3.commandExecutor.registerCommand(command.key, command);
358
+ return _this5.commandExecutor.registerCommand(command.key, command);
311
359
  });
312
360
  }
313
361
 
@@ -344,7 +392,11 @@ export var ContextMenu = /*#__PURE__*/function (_BasePlugin) {
344
392
  return;
345
393
  }
346
394
  }
347
- this.open(event);
395
+ var offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
396
+ this.open({
397
+ top: event.clientY + offset.top,
398
+ left: event.clientX + offset.left
399
+ });
348
400
  }
349
401
 
350
402
  /**