handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-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 (414) hide show
  1. package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
  4. package/3rdparty/walkontable/src/cell/coords.js +11 -50
  5. package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
  6. package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
  7. package/3rdparty/walkontable/src/cell/range.js +7 -38
  8. package/3rdparty/walkontable/src/cell/range.mjs +7 -38
  9. package/3rdparty/walkontable/src/core/_base.js +3 -9
  10. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  11. package/3rdparty/walkontable/src/core/clone.js +2 -2
  12. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  13. package/3rdparty/walkontable/src/core/core.js +2 -3
  14. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  15. package/3rdparty/walkontable/src/event.js +10 -12
  16. package/3rdparty/walkontable/src/event.mjs +10 -12
  17. package/3rdparty/walkontable/src/facade/core.js +2 -2
  18. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  19. package/3rdparty/walkontable/src/index.js +2 -10
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +2 -13
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +3 -14
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +6 -2
  26. package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
  27. package/3rdparty/walkontable/src/renderer/cells.js +0 -10
  28. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -11
  29. package/3rdparty/walkontable/src/renderer/columnHeaders.js +0 -10
  30. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -11
  31. package/3rdparty/walkontable/src/renderer/rowHeaders.js +0 -5
  32. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +0 -5
  33. package/3rdparty/walkontable/src/renderer/rows.js +0 -13
  34. package/3rdparty/walkontable/src/renderer/rows.mjs +0 -13
  35. package/3rdparty/walkontable/src/renderer/table.js +0 -9
  36. package/3rdparty/walkontable/src/renderer/table.mjs +0 -9
  37. package/3rdparty/walkontable/src/scroll.js +0 -2
  38. package/3rdparty/walkontable/src/scroll.mjs +0 -2
  39. package/3rdparty/walkontable/src/selection.js +295 -0
  40. package/3rdparty/walkontable/src/selection.mjs +290 -0
  41. package/3rdparty/walkontable/src/settings.js +4 -13
  42. package/3rdparty/walkontable/src/settings.mjs +4 -13
  43. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  44. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  45. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  46. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  47. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  48. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  49. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  50. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  51. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  52. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  53. package/3rdparty/walkontable/src/table.js +78 -19
  54. package/3rdparty/walkontable/src/table.mjs +79 -20
  55. package/base.js +2 -2
  56. package/base.mjs +2 -2
  57. package/cellTypes/dateType/dateType.d.ts +3 -3
  58. package/cellTypes/dateType/dateType.js +2 -2
  59. package/cellTypes/dateType/dateType.mjs +2 -2
  60. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  61. package/cellTypes/handsontableType/handsontableType.js +2 -2
  62. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  63. package/cellTypes/index.d.ts +0 -3
  64. package/cellTypes/index.js +0 -4
  65. package/cellTypes/index.mjs +1 -3
  66. package/core.d.ts +4 -9
  67. package/core.js +327 -285
  68. package/core.mjs +327 -285
  69. package/dataMap/metaManager/metaSchema.js +0 -65
  70. package/dataMap/metaManager/metaSchema.mjs +0 -65
  71. package/dataMap/metaManager/mods/extendMetaProperties.js +1 -7
  72. package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -7
  73. package/dataMap/replaceData.js +0 -5
  74. package/dataMap/replaceData.mjs +0 -5
  75. package/dist/handsontable.css +5 -40
  76. package/dist/handsontable.full.css +5 -40
  77. package/dist/handsontable.full.js +8038 -12837
  78. package/dist/handsontable.full.min.css +4 -4
  79. package/dist/handsontable.full.min.js +141 -141
  80. package/dist/handsontable.js +11488 -16287
  81. package/dist/handsontable.min.css +3 -3
  82. package/dist/handsontable.min.js +21 -21
  83. package/dist/languages/all.js +2 -6
  84. package/dist/languages/all.min.js +1 -1
  85. package/dist/languages/en-US.js +1 -3
  86. package/dist/languages/en-US.min.js +1 -1
  87. package/dist/languages/pl-PL.js +1 -3
  88. package/dist/languages/pl-PL.min.js +1 -1
  89. package/editorManager.js +87 -15
  90. package/editorManager.mjs +87 -16
  91. package/editors/autocompleteEditor/autocompleteEditor.js +2 -53
  92. package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -54
  93. package/editors/dateEditor/dateEditor.js +7 -26
  94. package/editors/dateEditor/dateEditor.mjs +8 -27
  95. package/editors/handsontableEditor/handsontableEditor.js +1 -9
  96. package/editors/handsontableEditor/handsontableEditor.mjs +2 -10
  97. package/editors/textEditor/textEditor.js +27 -19
  98. package/editors/textEditor/textEditor.mjs +30 -22
  99. package/helpers/dom/element.js +9 -188
  100. package/helpers/dom/element.mjs +9 -182
  101. package/helpers/mixed.js +1 -1
  102. package/helpers/mixed.mjs +1 -1
  103. package/helpers/number.d.ts +0 -1
  104. package/helpers/number.js +0 -18
  105. package/helpers/number.mjs +0 -17
  106. package/i18n/constants.js +1 -7
  107. package/i18n/constants.mjs +1 -4
  108. package/i18n/languages/en-US.js +1 -3
  109. package/i18n/languages/en-US.mjs +1 -3
  110. package/i18n/languages/pl-PL.js +1 -3
  111. package/i18n/languages/pl-PL.mjs +1 -3
  112. package/languages/all.js +2 -6
  113. package/languages/en-US.js +1 -3
  114. package/languages/en-US.mjs +1 -3
  115. package/languages/index.js +2 -6
  116. package/languages/pl-PL.js +1 -3
  117. package/languages/pl-PL.mjs +1 -3
  118. package/package.json +99 -116
  119. package/pluginHooks.d.ts +1 -12
  120. package/pluginHooks.js +1 -152
  121. package/pluginHooks.mjs +1 -152
  122. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -74
  123. package/plugins/collapsibleColumns/collapsibleColumns.mjs +5 -75
  124. package/plugins/columnSorting/columnSorting.js +0 -43
  125. package/plugins/columnSorting/columnSorting.mjs +3 -44
  126. package/plugins/columnSorting/index.js +1 -3
  127. package/plugins/columnSorting/index.mjs +1 -1
  128. package/plugins/comments/commentEditor.js +0 -1
  129. package/plugins/comments/commentEditor.mjs +0 -1
  130. package/plugins/comments/comments.js +189 -252
  131. package/plugins/comments/comments.mjs +190 -251
  132. package/plugins/contextMenu/commandExecutor.js +3 -2
  133. package/plugins/contextMenu/commandExecutor.mjs +3 -2
  134. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  135. package/plugins/contextMenu/contextMenu.js +36 -75
  136. package/plugins/contextMenu/contextMenu.mjs +35 -74
  137. package/plugins/contextMenu/{menu/cursor.mjs → cursor.js} +10 -4
  138. package/plugins/contextMenu/{menu/cursor.js → cursor.mjs} +4 -6
  139. package/plugins/contextMenu/itemsFactory.js +3 -2
  140. package/plugins/contextMenu/itemsFactory.mjs +4 -3
  141. package/plugins/contextMenu/{menu/menu.js → menu.js} +308 -96
  142. package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +309 -97
  143. package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
  144. package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
  145. package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
  146. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
  147. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
  148. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
  149. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
  150. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
  151. package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
  152. package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
  153. package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
  154. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
  155. package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
  156. package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
  157. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
  158. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
  159. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
  160. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
  161. package/plugins/contextMenu/{predefinedItems/index.js → predefinedItems.js} +14 -14
  162. package/plugins/contextMenu/predefinedItems.mjs +68 -0
  163. package/plugins/contextMenu/utils.js +151 -35
  164. package/plugins/contextMenu/utils.mjs +144 -35
  165. package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
  166. package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
  167. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
  168. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
  169. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
  170. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
  171. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
  172. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
  173. package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
  174. package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
  175. package/plugins/copyPaste/copyPaste.js +78 -127
  176. package/plugins/copyPaste/copyPaste.mjs +79 -128
  177. package/plugins/copyPaste/focusableElement.js +186 -0
  178. package/plugins/copyPaste/focusableElement.mjs +180 -0
  179. package/plugins/customBorders/customBorders.js +20 -23
  180. package/plugins/customBorders/customBorders.mjs +21 -24
  181. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  182. package/plugins/dropdownMenu/dropdownMenu.js +38 -97
  183. package/plugins/dropdownMenu/dropdownMenu.mjs +37 -96
  184. package/plugins/filters/constants.mjs +1 -1
  185. package/plugins/filters/filters.js +14 -31
  186. package/plugins/filters/filters.mjs +14 -31
  187. package/plugins/filters/ui/select.js +3 -3
  188. package/plugins/filters/ui/select.mjs +2 -2
  189. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  190. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  191. package/plugins/manualColumnMove/manualColumnMove.js +1 -3
  192. package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
  193. package/plugins/mergeCells/mergeCells.js +16 -5
  194. package/plugins/mergeCells/mergeCells.mjs +16 -5
  195. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
  196. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
  197. package/plugins/nestedHeaders/nestedHeaders.js +10 -240
  198. package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
  199. package/plugins/nestedHeaders/stateManager/index.js +3 -102
  200. package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
  201. package/plugins/nestedRows/nestedRows.js +0 -41
  202. package/plugins/nestedRows/nestedRows.mjs +0 -41
  203. package/plugins/nestedRows/ui/headers.js +0 -11
  204. package/plugins/nestedRows/ui/headers.mjs +1 -12
  205. package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
  206. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
  207. package/renderers/baseRenderer/baseRenderer.js +0 -17
  208. package/renderers/baseRenderer/baseRenderer.mjs +1 -18
  209. package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
  210. package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
  211. package/renderers/index.d.ts +0 -9
  212. package/selection/highlight/constants.js +15 -0
  213. package/selection/highlight/constants.mjs +6 -0
  214. package/selection/highlight/highlight.js +71 -256
  215. package/selection/highlight/highlight.mjs +71 -250
  216. package/selection/highlight/types/activeHeader.js +8 -10
  217. package/selection/highlight/types/activeHeader.mjs +8 -10
  218. package/selection/highlight/types/area.js +18 -6
  219. package/selection/highlight/types/area.mjs +18 -6
  220. package/selection/highlight/types/{focus.js → cell.js} +7 -5
  221. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  222. package/selection/highlight/types/customSelection.js +9 -7
  223. package/selection/highlight/types/customSelection.mjs +9 -7
  224. package/selection/highlight/types/fill.js +7 -5
  225. package/selection/highlight/types/fill.mjs +7 -5
  226. package/selection/highlight/types/header.js +18 -9
  227. package/selection/highlight/types/header.mjs +18 -9
  228. package/selection/highlight/types/index.js +35 -0
  229. package/selection/highlight/types/index.mjs +31 -0
  230. package/selection/highlight/visualSelection.js +27 -31
  231. package/selection/highlight/visualSelection.mjs +27 -31
  232. package/selection/index.js +7 -4
  233. package/selection/index.mjs +3 -2
  234. package/selection/mouseEventHandler.js +1 -7
  235. package/selection/mouseEventHandler.mjs +1 -7
  236. package/selection/range.js +8 -8
  237. package/selection/range.mjs +8 -8
  238. package/selection/selection.js +152 -321
  239. package/selection/selection.mjs +151 -318
  240. package/selection/transformation.js +90 -232
  241. package/selection/transformation.mjs +90 -232
  242. package/selection/utils.js +21 -15
  243. package/selection/utils.mjs +21 -16
  244. package/settings.d.ts +0 -4
  245. package/shortcuts/context.js +2 -20
  246. package/shortcuts/context.mjs +3 -20
  247. package/shortcuts/manager.js +7 -25
  248. package/shortcuts/manager.mjs +7 -26
  249. package/shortcuts/recorder.js +3 -3
  250. package/shortcuts/recorder.mjs +3 -3
  251. package/shortcuts/utils.js +5 -19
  252. package/shortcuts/utils.mjs +4 -18
  253. package/tableView.js +13 -111
  254. package/tableView.mjs +14 -112
  255. package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
  256. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  257. package/3rdparty/walkontable/src/selection/constants.js +0 -62
  258. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  259. package/3rdparty/walkontable/src/selection/index.js +0 -26
  260. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  261. package/3rdparty/walkontable/src/selection/manager.js +0 -274
  262. package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
  263. package/3rdparty/walkontable/src/selection/scanner.js +0 -270
  264. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
  265. package/3rdparty/walkontable/src/selection/selection.js +0 -101
  266. package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
  267. package/cellTypes/selectType/index.d.ts +0 -1
  268. package/cellTypes/selectType/index.js +0 -6
  269. package/cellTypes/selectType/index.mjs +0 -1
  270. package/cellTypes/selectType/selectType.d.ts +0 -14
  271. package/cellTypes/selectType/selectType.js +0 -13
  272. package/cellTypes/selectType/selectType.mjs +0 -8
  273. package/core/focusCatcher/focusDetector.js +0 -63
  274. package/core/focusCatcher/focusDetector.mjs +0 -59
  275. package/core/focusCatcher/index.js +0 -142
  276. package/core/focusCatcher/index.mjs +0 -138
  277. package/core/index.js +0 -9
  278. package/core/index.mjs +0 -1
  279. package/focusManager.d.ts +0 -12
  280. package/focusManager.js +0 -265
  281. package/focusManager.mjs +0 -261
  282. package/helpers/a11y.js +0 -79
  283. package/helpers/a11y.mjs +0 -38
  284. package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
  285. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
  286. package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
  287. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
  288. package/plugins/comments/contextMenuItem/removeComment.js +0 -38
  289. package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
  290. package/plugins/contextMenu/menu/index.js +0 -9
  291. package/plugins/contextMenu/menu/index.mjs +0 -1
  292. package/plugins/contextMenu/menu/navigator.js +0 -152
  293. package/plugins/contextMenu/menu/navigator.mjs +0 -148
  294. package/plugins/contextMenu/menu/positioner.js +0 -213
  295. package/plugins/contextMenu/menu/positioner.mjs +0 -209
  296. package/plugins/contextMenu/menu/utils.js +0 -177
  297. package/plugins/contextMenu/menu/utils.mjs +0 -163
  298. package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
  299. package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
  300. package/renderers/dateRenderer/dateRenderer.js +0 -29
  301. package/renderers/dateRenderer/dateRenderer.mjs +0 -24
  302. package/renderers/dateRenderer/index.d.ts +0 -1
  303. package/renderers/dateRenderer/index.js +0 -6
  304. package/renderers/dateRenderer/index.mjs +0 -1
  305. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
  306. package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
  307. package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
  308. package/renderers/handsontableRenderer/index.d.ts +0 -1
  309. package/renderers/handsontableRenderer/index.js +0 -6
  310. package/renderers/handsontableRenderer/index.mjs +0 -1
  311. package/renderers/selectRenderer/index.d.ts +0 -1
  312. package/renderers/selectRenderer/index.js +0 -6
  313. package/renderers/selectRenderer/index.mjs +0 -1
  314. package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
  315. package/renderers/selectRenderer/selectRenderer.js +0 -27
  316. package/renderers/selectRenderer/selectRenderer.mjs +0 -22
  317. package/selection/highlight/types/areaLayered.js +0 -31
  318. package/selection/highlight/types/areaLayered.mjs +0 -26
  319. package/selection/highlight/types/column.js +0 -27
  320. package/selection/highlight/types/column.mjs +0 -22
  321. package/selection/highlight/types/row.js +0 -27
  322. package/selection/highlight/types/row.mjs +0 -22
  323. package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
  324. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
  325. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
  326. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  327. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  328. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
  329. package/shortcutContexts/commands/editor/index.js +0 -16
  330. package/shortcutContexts/commands/editor/index.mjs +0 -12
  331. package/shortcutContexts/commands/editor/open.js +0 -27
  332. package/shortcutContexts/commands/editor/open.mjs +0 -23
  333. package/shortcutContexts/commands/emptySelectedCells.js +0 -11
  334. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  335. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  336. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
  337. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
  338. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
  339. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  340. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  341. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  342. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
  343. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  344. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
  345. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  346. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
  347. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
  348. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
  349. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
  350. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
  351. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
  352. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
  353. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
  354. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
  355. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
  356. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
  357. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
  358. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
  359. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  360. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
  361. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  362. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
  363. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
  364. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
  365. package/shortcutContexts/commands/index.js +0 -35
  366. package/shortcutContexts/commands/index.mjs +0 -31
  367. package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
  368. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
  369. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
  370. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
  371. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  372. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  373. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
  374. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  375. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
  376. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  377. package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
  378. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  379. package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
  380. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  381. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
  382. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
  383. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
  384. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
  385. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
  386. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
  387. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
  388. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
  389. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
  390. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
  391. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
  392. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
  393. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
  394. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
  395. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
  396. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
  397. package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
  398. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
  399. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
  400. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
  401. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
  402. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
  403. package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
  404. package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
  405. package/shortcutContexts/commands/selectAll.js +0 -12
  406. package/shortcutContexts/commands/selectAll.mjs +0 -8
  407. package/shortcutContexts/constants.js +0 -13
  408. package/shortcutContexts/constants.mjs +0 -8
  409. package/shortcutContexts/editor.js +0 -25
  410. package/shortcutContexts/editor.mjs +0 -21
  411. package/shortcutContexts/grid.js +0 -163
  412. package/shortcutContexts/grid.mjs +0 -159
  413. package/shortcutContexts/index.js +0 -24
  414. package/shortcutContexts/index.mjs +0 -11
@@ -0,0 +1,180 @@
1
+ import EventManager from "../../eventManager.mjs";
2
+ import localHooks from "../../mixins/localHooks.mjs";
3
+ import { mixin } from "../../helpers/object.mjs";
4
+ import { isMobileBrowser } from "../../helpers/browser.mjs";
5
+ import { selectElementIfAllowed } from "../../helpers/dom/element.mjs";
6
+ /**
7
+ * @private
8
+ * @class FocusableWrapper
9
+ */
10
+ class FocusableWrapper {
11
+ constructor(container) {
12
+ this.rootDocument = container.defaultView ? container : container.ownerDocument;
13
+ /**
14
+ * The main/operational focusable element.
15
+ *
16
+ * @type {HTMLElement}
17
+ */
18
+ this.mainElement = null;
19
+ /**
20
+ * Instance of EventManager.
21
+ *
22
+ * @type {EventManager}
23
+ */
24
+ this.eventManager = new EventManager(this);
25
+ /**
26
+ * An object for tracking information about event listeners attached to the focusable element.
27
+ *
28
+ * @type {WeakSet}
29
+ */
30
+ this.listenersCount = new WeakSet();
31
+ /**
32
+ * Parent for an focusable element.
33
+ *
34
+ * @type {HTMLElement}
35
+ */
36
+ this.container = container;
37
+ }
38
+
39
+ /**
40
+ * Switch to the secondary focusable element. Used when no any main focusable element is provided.
41
+ */
42
+ useSecondaryElement() {
43
+ const el = createOrGetSecondaryElement(this.container);
44
+ if (!this.listenersCount.has(el)) {
45
+ this.listenersCount.add(el);
46
+ forwardEventsToLocalHooks(this.eventManager, el, this);
47
+ }
48
+ this.mainElement = el;
49
+ }
50
+
51
+ /**
52
+ * Switch to the main focusable element.
53
+ *
54
+ * @param {HTMLElement} element The DOM element.
55
+ */
56
+ setFocusableElement(element) {
57
+ if (!this.listenersCount.has(element)) {
58
+ this.listenersCount.add(element);
59
+ forwardEventsToLocalHooks(this.eventManager, element, this);
60
+ }
61
+ this.mainElement = element;
62
+ }
63
+
64
+ /**
65
+ * Get currently set focusable element.
66
+ *
67
+ * @returns {HTMLElement}
68
+ */
69
+ getFocusableElement() {
70
+ return this.mainElement;
71
+ }
72
+
73
+ /**
74
+ * Set focus to the focusable element.
75
+ */
76
+ focus() {
77
+ // Add an empty space to texarea. It is necessary for safari to enable "copy" command from menu bar.
78
+ this.mainElement.value = ' ';
79
+ if (!isMobileBrowser()) {
80
+ selectElementIfAllowed(this.mainElement);
81
+ }
82
+ }
83
+ }
84
+ mixin(FocusableWrapper, localHooks);
85
+ const refCounter = new WeakMap();
86
+
87
+ /**
88
+ * Create and return the FocusableWrapper instance.
89
+ *
90
+ * @param {HTMLElement} container The container element, holder for focusable elements.
91
+ * @returns {FocusableWrapper}
92
+ */
93
+ function createElement(container) {
94
+ const focusableWrapper = new FocusableWrapper(container);
95
+ let counter = refCounter.get(container);
96
+ counter = isNaN(counter) ? 0 : counter;
97
+ refCounter.set(container, counter + 1);
98
+ return focusableWrapper;
99
+ }
100
+
101
+ /**
102
+ * Deactivate the FocusableWrapper instance.
103
+ *
104
+ * @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
105
+ */
106
+ function deactivateElement(wrapper) {
107
+ wrapper.eventManager.clear();
108
+ }
109
+ const runLocalHooks = (eventName, subject) => event => subject.runLocalHooks(eventName, event);
110
+
111
+ /**
112
+ * Register copy/cut/paste events and forward their actions to the subject local hooks system.
113
+ *
114
+ * @param {EventManager} eventManager The instance of the EventManager class.
115
+ * @param {HTMLElement} element The element on which the listeners are mounted.
116
+ * @param {FocusableWrapper} subject The subject object for local hooks.
117
+ */
118
+ function forwardEventsToLocalHooks(eventManager, element, subject) {
119
+ eventManager.addEventListener(element, 'copy', runLocalHooks('copy', subject));
120
+ eventManager.addEventListener(element, 'cut', runLocalHooks('cut', subject));
121
+ eventManager.addEventListener(element, 'paste', runLocalHooks('paste', subject));
122
+ }
123
+ const secondaryElements = new WeakMap();
124
+
125
+ /**
126
+ * Create and attach newly created focusable element to the DOM.
127
+ *
128
+ * @param {HTMLElement} container The container element, holder for focusable elements.
129
+ * @returns {HTMLElement}
130
+ */
131
+ function createOrGetSecondaryElement(container) {
132
+ const secondaryElement = secondaryElements.get(container);
133
+ if (secondaryElement) {
134
+ if (!secondaryElement.parentElement) {
135
+ container.appendChild(secondaryElement);
136
+ }
137
+ return secondaryElement;
138
+ }
139
+ const doc = container.defaultView ? container : container.ownerDocument;
140
+ const element = doc.createElement('textarea');
141
+ secondaryElements.set(container, element);
142
+ element.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
143
+ element.className = 'HandsontableCopyPaste';
144
+ element.tabIndex = -1;
145
+ element.autocomplete = 'off';
146
+ element.wrap = 'hard';
147
+ element.value = ' ';
148
+ container.appendChild(element);
149
+ return element;
150
+ }
151
+
152
+ /**
153
+ * Destroy the FocusableWrapper instance.
154
+ *
155
+ * @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
156
+ */
157
+ function destroyElement(wrapper) {
158
+ if (!(wrapper instanceof FocusableWrapper)) {
159
+ return;
160
+ }
161
+ let counter = refCounter.get(wrapper.container);
162
+ counter = isNaN(counter) ? 0 : counter;
163
+ if (counter > 0) {
164
+ counter -= 1;
165
+ }
166
+ deactivateElement(wrapper);
167
+ if (counter <= 0) {
168
+ counter = 0;
169
+
170
+ // Detach secondary element from the DOM.
171
+ const secondaryElement = secondaryElements.get(wrapper.container);
172
+ if (secondaryElement && secondaryElement.parentNode) {
173
+ secondaryElement.parentNode.removeChild(secondaryElement);
174
+ secondaryElements.delete(wrapper.container);
175
+ }
176
+ wrapper.mainElement = null;
177
+ }
178
+ refCounter.set(wrapper.container, counter);
179
+ }
180
+ export { createElement, deactivateElement, destroyElement };
@@ -167,11 +167,14 @@ class CustomBorders extends _base.BasePlugin {
167
167
  const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
168
168
  const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
169
169
  (0, _array.arrayEach)(selectionRanges, selection => {
170
- selectionSchemaNormalizer(selection).forAll((row, col) => {
171
- (0, _array.arrayEach)(borderKeys, borderKey => {
172
- this.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
173
- });
174
- });
170
+ const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
171
+ for (let row = rowStart; row <= rowEnd; row += 1) {
172
+ for (let col = columnStart; col <= columnEnd; col += 1) {
173
+ (0, _array.arrayEach)(borderKeys, borderKey => {
174
+ this.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
175
+ });
176
+ }
177
+ }
175
178
  });
176
179
 
177
180
  /*
@@ -211,13 +214,16 @@ class CustomBorders extends _base.BasePlugin {
211
214
  const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
212
215
  const selectedBorders = [];
213
216
  (0, _array.arrayEach)(selectionRanges, selection => {
214
- selectionSchemaNormalizer(selection).forAll((row, col) => {
215
- (0, _array.arrayEach)(this.savedBorders, border => {
216
- if (border.row === row && border.col === col) {
217
- selectedBorders.push((0, _utils.denormalizeBorder)(border));
218
- }
219
- });
220
- });
217
+ const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
218
+ for (let row = rowStart; row <= rowEnd; row += 1) {
219
+ for (let col = columnStart; col <= columnEnd; col += 1) {
220
+ (0, _array.arrayEach)(this.savedBorders, border => {
221
+ if (border.row === row && border.col === col) {
222
+ selectedBorders.push((0, _utils.denormalizeBorder)(border));
223
+ }
224
+ });
225
+ }
226
+ }
221
227
  });
222
228
  return selectedBorders;
223
229
  }
@@ -608,8 +614,7 @@ class CustomBorders extends _base.BasePlugin {
608
614
  let check = false;
609
615
  (0, _array.arrayEach)(this.hot.selection.highlight.customSelections, customSelection => {
610
616
  if (border.id === customSelection.settings.id) {
611
- const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
612
- (0, _array.arrayEach)(borders, borderObject => {
617
+ (0, _object.objectEach)(customSelection.instanceBorders, borderObject => {
613
618
  borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
614
619
  });
615
620
 
@@ -643,8 +648,7 @@ class CustomBorders extends _base.BasePlugin {
643
648
  customSelection.visualCellRange = cellRange;
644
649
  customSelection.commit();
645
650
  if (place) {
646
- const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
647
- (0, _array.arrayEach)(borders, borderObject => {
651
+ (0, _object.objectEach)(customSelection.instanceBorders, borderObject => {
648
652
  borderObject.changeBorderStyle(place, border);
649
653
  });
650
654
  }
@@ -712,13 +716,6 @@ class CustomBorders extends _base.BasePlugin {
712
716
  return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
713
717
  },
714
718
  disabled() {
715
- const range = this.getSelectedRangeLast();
716
- if (!range) {
717
- return true;
718
- }
719
- if (range.isSingleHeader()) {
720
- return true;
721
- }
722
719
  return this.selection.isSelectedByCorner();
723
720
  },
724
721
  submenu: {
@@ -4,7 +4,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
4
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
5
  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); }
6
6
  import { BasePlugin } from "../base/index.mjs";
7
- import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
7
+ import { hasOwnProperty, objectEach, deepClone } from "../../helpers/object.mjs";
8
8
  import { rangeEach } from "../../helpers/number.mjs";
9
9
  import { arrayEach, arrayReduce, arrayMap } from "../../helpers/array.mjs";
10
10
  import * as C from "../../i18n/constants.mjs";
@@ -160,11 +160,14 @@ export class CustomBorders extends BasePlugin {
160
160
  const selectionType = detectSelectionType(selectionRanges);
161
161
  const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
162
162
  arrayEach(selectionRanges, selection => {
163
- selectionSchemaNormalizer(selection).forAll((row, col) => {
164
- arrayEach(borderKeys, borderKey => {
165
- this.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
166
- });
167
- });
163
+ const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
164
+ for (let row = rowStart; row <= rowEnd; row += 1) {
165
+ for (let col = columnStart; col <= columnEnd; col += 1) {
166
+ arrayEach(borderKeys, borderKey => {
167
+ this.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
168
+ });
169
+ }
170
+ }
168
171
  });
169
172
 
170
173
  /*
@@ -204,13 +207,16 @@ export class CustomBorders extends BasePlugin {
204
207
  const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
205
208
  const selectedBorders = [];
206
209
  arrayEach(selectionRanges, selection => {
207
- selectionSchemaNormalizer(selection).forAll((row, col) => {
208
- arrayEach(this.savedBorders, border => {
209
- if (border.row === row && border.col === col) {
210
- selectedBorders.push(denormalizeBorder(border));
211
- }
212
- });
213
- });
210
+ const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
211
+ for (let row = rowStart; row <= rowEnd; row += 1) {
212
+ for (let col = columnStart; col <= columnEnd; col += 1) {
213
+ arrayEach(this.savedBorders, border => {
214
+ if (border.row === row && border.col === col) {
215
+ selectedBorders.push(denormalizeBorder(border));
216
+ }
217
+ });
218
+ }
219
+ }
214
220
  });
215
221
  return selectedBorders;
216
222
  }
@@ -601,8 +607,7 @@ export class CustomBorders extends BasePlugin {
601
607
  let check = false;
602
608
  arrayEach(this.hot.selection.highlight.customSelections, customSelection => {
603
609
  if (border.id === customSelection.settings.id) {
604
- const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
605
- arrayEach(borders, borderObject => {
610
+ objectEach(customSelection.instanceBorders, borderObject => {
606
611
  borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
607
612
  });
608
613
 
@@ -636,8 +641,7 @@ export class CustomBorders extends BasePlugin {
636
641
  customSelection.visualCellRange = cellRange;
637
642
  customSelection.commit();
638
643
  if (place) {
639
- const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
640
- arrayEach(borders, borderObject => {
644
+ objectEach(customSelection.instanceBorders, borderObject => {
641
645
  borderObject.changeBorderStyle(place, border);
642
646
  });
643
647
  }
@@ -705,13 +709,6 @@ export class CustomBorders extends BasePlugin {
705
709
  return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
706
710
  },
707
711
  disabled() {
708
- const range = this.getSelectedRangeLast();
709
- if (!range) {
710
- return true;
711
- }
712
- if (range.isSingleHeader()) {
713
- return true;
714
- }
715
712
  return this.selection.isSelectedByCorner();
716
713
  },
717
714
  submenu: {
@@ -18,7 +18,7 @@ export class DropdownMenu extends BasePlugin {
18
18
 
19
19
  constructor(hotInstance: Core);
20
20
  isEnabled(): boolean;
21
- open(position: { left: number, top: number } | Event, offset?: { above?: number, below?: number, left?: number, right?: number }): void;
21
+ open(event: Event): void;
22
22
  close(): void;
23
23
  executeCommand(commandName: string, ...params: any): void;
24
24
  }
@@ -3,16 +3,13 @@
3
3
  exports.__esModule = true;
4
4
  var _base = require("../base");
5
5
  var _array = require("../../helpers/array");
6
- var _object = require("../../helpers/object");
7
- var _commandExecutor = require("../contextMenu/commandExecutor");
8
- var _utils = require("../contextMenu/utils");
6
+ var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
9
7
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
10
8
  var _element = require("../../helpers/dom/element");
11
- var _itemsFactory = require("../contextMenu/itemsFactory");
12
- var _menu = require("../contextMenu/menu");
9
+ var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
10
+ var _menu = _interopRequireDefault(require("../contextMenu/menu"));
13
11
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
14
12
  var _predefinedItems = require("../contextMenu/predefinedItems");
15
- var _a11y = require("../../helpers/a11y");
16
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
14
  _pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
18
15
  _pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
@@ -24,7 +21,6 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
24
21
  const PLUGIN_PRIORITY = 230;
25
22
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
26
23
  const BUTTON_CLASS_NAME = 'changeType';
27
- const SHORTCUTS_GROUP = PLUGIN_KEY;
28
24
 
29
25
  /* eslint-disable jsdoc/require-description-complete-sentence */
30
26
  /**
@@ -111,7 +107,7 @@ class DropdownMenu extends _base.BasePlugin {
111
107
  * @private
112
108
  * @type {CommandExecutor}
113
109
  */
114
- this.commandExecutor = new _commandExecutor.CommandExecutor(this.hot);
110
+ this.commandExecutor = new _commandExecutor.default(this.hot);
115
111
  /**
116
112
  * Instance of {@link ItemsFactory}.
117
113
  *
@@ -152,7 +148,7 @@ class DropdownMenu extends _base.BasePlugin {
152
148
  if (this.enabled) {
153
149
  return;
154
150
  }
155
- this.itemsFactory = new _itemsFactory.ItemsFactory(this.hot, DropdownMenu.DEFAULT_ITEMS);
151
+ this.itemsFactory = new _itemsFactory.default(this.hot, DropdownMenu.DEFAULT_ITEMS);
156
152
  const settings = this.hot.getSettings()[PLUGIN_KEY];
157
153
  const predefinedItems = {
158
154
  items: this.itemsFactory.getItems(settings)
@@ -161,7 +157,6 @@ class DropdownMenu extends _base.BasePlugin {
161
157
  if (typeof settings.callback === 'function') {
162
158
  this.commandExecutor.setCommonCallback(settings.callback);
163
159
  }
164
- this.registerShortcuts();
165
160
  super.enablePlugin();
166
161
  this.callOnPluginsReady(() => {
167
162
  this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
@@ -170,7 +165,7 @@ class DropdownMenu extends _base.BasePlugin {
170
165
  if (this.menu) {
171
166
  this.menu.destroy();
172
167
  }
173
- this.menu = new _menu.Menu(this.hot, {
168
+ this.menu = new _menu.default(this.hot, {
174
169
  className: 'htDropdownMenu',
175
170
  keepInViewport: true,
176
171
  container: settings.uiContainer || this.hot.rootDocument.body
@@ -212,66 +207,9 @@ class DropdownMenu extends _base.BasePlugin {
212
207
  if (this.menu) {
213
208
  this.menu.destroy();
214
209
  }
215
- this.unregisterShortcuts();
216
210
  super.disablePlugin();
217
211
  }
218
212
 
219
- /**
220
- * Register shortcuts responsible for toggling dropdown menu.
221
- *
222
- * @private
223
- */
224
- registerShortcuts() {
225
- const context = this.hot.getShortcutManager().getContext('grid');
226
- const callback = () => {
227
- const {
228
- highlight
229
- } = this.hot.getSelectedRangeLast();
230
- if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
231
- this.hot.selectColumns(highlight.col, highlight.col, -1);
232
- const {
233
- from
234
- } = this.hot.getSelectedRangeLast();
235
- const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
236
- const target = this.hot.getCell(-1, from.col, true);
237
- const rect = target.getBoundingClientRect();
238
- this.open({
239
- left: rect.left + offset.left,
240
- top: rect.top + target.offsetHeight + offset.top
241
- }, {
242
- left: rect.width
243
- });
244
- }
245
- };
246
- context.addShortcuts([{
247
- keys: [['Shift', 'Alt', 'ArrowDown'], ['Control/Meta', 'Enter']],
248
- callback,
249
- runOnlyIf: () => {
250
- var _this$hot$getSelected;
251
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
252
- },
253
- captureCtrl: true,
254
- group: SHORTCUTS_GROUP
255
- }, {
256
- keys: [['Shift', 'Alt', 'ArrowDown']],
257
- callback,
258
- runOnlyIf: () => {
259
- var _this$hot$getSelected2;
260
- return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
261
- },
262
- group: SHORTCUTS_GROUP
263
- }]);
264
- }
265
-
266
- /**
267
- * Unregister shortcuts responsible for toggling dropdown menu.
268
- *
269
- * @private
270
- */
271
- unregisterShortcuts() {
272
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
273
- }
274
-
275
213
  /**
276
214
  * Registers the DOM listeners.
277
215
  *
@@ -284,30 +222,23 @@ class DropdownMenu extends _base.BasePlugin {
284
222
  /**
285
223
  * Opens menu and re-position it based on the passed coordinates.
286
224
  *
287
- * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
288
- * which contains coordinates relative to the browsers viewport (without included scroll offsets).
289
- * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
290
- * coordinates.
291
- * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
292
- * the offset to the menu position.
225
+ * @param {object|Event} position An object with `pageX` and `pageY` properties which contains values relative to
226
+ * the top left of the fully rendered content area in the browser or with `clientX`
227
+ * and `clientY` properties which contains values relative to the upper left edge
228
+ * of the content area (the viewport) of the browser window. This object is structurally
229
+ * compatible with native mouse event so it can be used either.
293
230
  * @fires Hooks#beforeDropdownMenuShow
294
231
  * @fires Hooks#afterDropdownMenuShow
295
232
  */
233
+
296
234
  open(position) {
297
- var _this$menu;
298
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
299
- above: 0,
300
- below: 0,
301
- left: 0,
302
- right: 0
303
- };
304
- if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
235
+ if (!this.menu) {
305
236
  return;
306
237
  }
307
238
  this.menu.open();
308
- (0, _object.objectEach)(offset, (value, key) => {
309
- this.menu.setOffset(key, value);
310
- });
239
+ if (position.width) {
240
+ this.menu.setOffset('left', position.width);
241
+ }
311
242
  this.menu.setPosition(position);
312
243
  }
313
244
 
@@ -315,8 +246,10 @@ class DropdownMenu extends _base.BasePlugin {
315
246
  * Closes dropdown menu.
316
247
  */
317
248
  close() {
318
- var _this$menu2;
319
- (_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
249
+ if (!this.menu) {
250
+ return;
251
+ }
252
+ this.menu.close();
320
253
  }
321
254
 
322
255
  /**
@@ -381,14 +314,26 @@ class DropdownMenu extends _base.BasePlugin {
381
314
  */
382
315
  onTableClick(event) {
383
316
  event.stopPropagation();
384
- if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
385
- const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
317
+ if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME) && !this.menu.isOpened()) {
318
+ let offsetTop = 0;
319
+ let offsetLeft = 0;
320
+ if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
321
+ const {
322
+ frameElement
323
+ } = this.hot.rootWindow;
324
+ const {
325
+ top,
326
+ left
327
+ } = frameElement.getBoundingClientRect();
328
+ offsetTop = top;
329
+ offsetLeft = left;
330
+ }
386
331
  const rect = event.target.getBoundingClientRect();
387
332
  this.open({
388
- left: rect.left + offset.left,
389
- top: rect.top + event.target.offsetHeight + 3 + offset.top
390
- }, {
391
- left: rect.width
333
+ left: rect.left + offsetLeft,
334
+ top: rect.top + event.target.offsetHeight + 3 + offsetTop,
335
+ width: rect.width,
336
+ height: rect.height
392
337
  });
393
338
  }
394
339
  }
@@ -427,10 +372,6 @@ class DropdownMenu extends _base.BasePlugin {
427
372
  const button = this.hot.rootDocument.createElement('button');
428
373
  button.className = BUTTON_CLASS_NAME;
429
374
  button.type = 'button';
430
- button.tabIndex = -1;
431
- if (this.hot.getSettings().ariaTags) {
432
- (0, _element.setAttribute)(button, [(0, _a11y.A11Y_HIDDEN)()]);
433
- }
434
375
 
435
376
  // prevent page reload on button click
436
377
  button.onclick = function () {