handsontable 0.0.0-next-b0a4ea2-20231024 → 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 (446) 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 +15 -51
  76. package/dist/handsontable.full.css +15 -51
  77. package/dist/handsontable.full.js +8668 -14188
  78. package/dist/handsontable.full.min.css +7 -7
  79. package/dist/handsontable.full.min.js +136 -136
  80. package/dist/handsontable.js +22829 -28349
  81. package/dist/handsontable.min.css +6 -6
  82. package/dist/handsontable.min.js +24 -24
  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} +421 -145
  142. package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +422 -146
  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 +40 -127
  183. package/plugins/dropdownMenu/dropdownMenu.mjs +39 -126
  184. package/plugins/filters/component/_base.js +8 -23
  185. package/plugins/filters/component/_base.mjs +8 -23
  186. package/plugins/filters/component/actionBar.js +27 -29
  187. package/plugins/filters/component/actionBar.mjs +23 -26
  188. package/plugins/filters/component/condition.js +59 -46
  189. package/plugins/filters/component/condition.mjs +52 -40
  190. package/plugins/filters/component/operators.js +22 -21
  191. package/plugins/filters/component/operators.mjs +18 -18
  192. package/plugins/filters/component/value.js +26 -35
  193. package/plugins/filters/component/value.mjs +22 -32
  194. package/plugins/filters/constants.mjs +1 -1
  195. package/plugins/filters/filters.js +62 -106
  196. package/plugins/filters/filters.mjs +55 -99
  197. package/plugins/filters/ui/_base.js +13 -35
  198. package/plugins/filters/ui/_base.mjs +13 -35
  199. package/plugins/filters/ui/input.js +32 -43
  200. package/plugins/filters/ui/input.mjs +30 -42
  201. package/plugins/filters/ui/link.js +12 -44
  202. package/plugins/filters/ui/link.mjs +11 -44
  203. package/plugins/filters/ui/multipleSelect.js +129 -234
  204. package/plugins/filters/ui/multipleSelect.mjs +127 -232
  205. package/plugins/filters/ui/radioInput.js +18 -42
  206. package/plugins/filters/ui/radioInput.mjs +17 -42
  207. package/plugins/filters/ui/select.js +75 -144
  208. package/plugins/filters/ui/select.mjs +72 -142
  209. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  210. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  211. package/plugins/manualColumnMove/manualColumnMove.js +1 -3
  212. package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
  213. package/plugins/mergeCells/mergeCells.js +16 -5
  214. package/plugins/mergeCells/mergeCells.mjs +16 -5
  215. package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
  216. package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
  217. package/plugins/nestedHeaders/nestedHeaders.js +10 -240
  218. package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
  219. package/plugins/nestedHeaders/stateManager/index.js +3 -102
  220. package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
  221. package/plugins/nestedRows/nestedRows.js +0 -41
  222. package/plugins/nestedRows/nestedRows.mjs +0 -41
  223. package/plugins/nestedRows/ui/headers.js +0 -11
  224. package/plugins/nestedRows/ui/headers.mjs +1 -12
  225. package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
  226. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
  227. package/renderers/baseRenderer/baseRenderer.js +0 -17
  228. package/renderers/baseRenderer/baseRenderer.mjs +1 -18
  229. package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
  230. package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
  231. package/renderers/index.d.ts +0 -9
  232. package/selection/highlight/constants.js +15 -0
  233. package/selection/highlight/constants.mjs +6 -0
  234. package/selection/highlight/highlight.js +71 -256
  235. package/selection/highlight/highlight.mjs +71 -250
  236. package/selection/highlight/types/activeHeader.js +8 -10
  237. package/selection/highlight/types/activeHeader.mjs +8 -10
  238. package/selection/highlight/types/area.js +18 -6
  239. package/selection/highlight/types/area.mjs +18 -6
  240. package/selection/highlight/types/{focus.js → cell.js} +7 -5
  241. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  242. package/selection/highlight/types/customSelection.js +9 -7
  243. package/selection/highlight/types/customSelection.mjs +9 -7
  244. package/selection/highlight/types/fill.js +7 -5
  245. package/selection/highlight/types/fill.mjs +7 -5
  246. package/selection/highlight/types/header.js +18 -9
  247. package/selection/highlight/types/header.mjs +18 -9
  248. package/selection/highlight/types/index.js +35 -0
  249. package/selection/highlight/types/index.mjs +31 -0
  250. package/selection/highlight/visualSelection.js +27 -31
  251. package/selection/highlight/visualSelection.mjs +27 -31
  252. package/selection/index.js +7 -4
  253. package/selection/index.mjs +3 -2
  254. package/selection/mouseEventHandler.js +1 -7
  255. package/selection/mouseEventHandler.mjs +1 -7
  256. package/selection/range.js +8 -8
  257. package/selection/range.mjs +8 -8
  258. package/selection/selection.js +152 -321
  259. package/selection/selection.mjs +151 -318
  260. package/selection/transformation.js +90 -232
  261. package/selection/transformation.mjs +90 -232
  262. package/selection/utils.js +21 -15
  263. package/selection/utils.mjs +21 -16
  264. package/settings.d.ts +0 -4
  265. package/shortcuts/context.js +4 -23
  266. package/shortcuts/context.mjs +5 -23
  267. package/shortcuts/manager.js +7 -25
  268. package/shortcuts/manager.mjs +7 -26
  269. package/shortcuts/recorder.js +3 -3
  270. package/shortcuts/recorder.mjs +3 -3
  271. package/shortcuts/utils.js +5 -19
  272. package/shortcuts/utils.mjs +4 -18
  273. package/tableView.js +13 -111
  274. package/tableView.mjs +14 -112
  275. package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
  276. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  277. package/3rdparty/walkontable/src/selection/constants.js +0 -62
  278. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  279. package/3rdparty/walkontable/src/selection/index.js +0 -26
  280. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  281. package/3rdparty/walkontable/src/selection/manager.js +0 -274
  282. package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
  283. package/3rdparty/walkontable/src/selection/scanner.js +0 -270
  284. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
  285. package/3rdparty/walkontable/src/selection/selection.js +0 -101
  286. package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
  287. package/cellTypes/selectType/index.d.ts +0 -1
  288. package/cellTypes/selectType/index.js +0 -6
  289. package/cellTypes/selectType/index.mjs +0 -1
  290. package/cellTypes/selectType/selectType.d.ts +0 -14
  291. package/cellTypes/selectType/selectType.js +0 -13
  292. package/cellTypes/selectType/selectType.mjs +0 -8
  293. package/core/focusCatcher/focusDetector.js +0 -63
  294. package/core/focusCatcher/focusDetector.mjs +0 -59
  295. package/core/focusCatcher/index.js +0 -142
  296. package/core/focusCatcher/index.mjs +0 -138
  297. package/core/index.js +0 -9
  298. package/core/index.mjs +0 -1
  299. package/focusManager.d.ts +0 -12
  300. package/focusManager.js +0 -265
  301. package/focusManager.mjs +0 -261
  302. package/helpers/a11y.js +0 -79
  303. package/helpers/a11y.mjs +0 -38
  304. package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
  305. package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
  306. package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
  307. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
  308. package/plugins/comments/contextMenuItem/removeComment.js +0 -38
  309. package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
  310. package/plugins/contextMenu/menu/defaultShortcutsList.js +0 -88
  311. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +0 -84
  312. package/plugins/contextMenu/menu/index.js +0 -9
  313. package/plugins/contextMenu/menu/index.mjs +0 -1
  314. package/plugins/contextMenu/menu/menuItemRenderer.js +0 -58
  315. package/plugins/contextMenu/menu/menuItemRenderer.mjs +0 -54
  316. package/plugins/contextMenu/menu/navigator.js +0 -27
  317. package/plugins/contextMenu/menu/navigator.mjs +0 -23
  318. package/plugins/contextMenu/menu/positioner.js +0 -213
  319. package/plugins/contextMenu/menu/positioner.mjs +0 -209
  320. package/plugins/contextMenu/menu/shortcuts.js +0 -114
  321. package/plugins/contextMenu/menu/shortcuts.mjs +0 -110
  322. package/plugins/contextMenu/menu/utils.js +0 -177
  323. package/plugins/contextMenu/menu/utils.mjs +0 -163
  324. package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
  325. package/plugins/filters/menu/focusController.js +0 -123
  326. package/plugins/filters/menu/focusController.mjs +0 -119
  327. package/plugins/filters/menu/focusNavigator.js +0 -30
  328. package/plugins/filters/menu/focusNavigator.mjs +0 -26
  329. package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
  330. package/renderers/dateRenderer/dateRenderer.js +0 -29
  331. package/renderers/dateRenderer/dateRenderer.mjs +0 -24
  332. package/renderers/dateRenderer/index.d.ts +0 -1
  333. package/renderers/dateRenderer/index.js +0 -6
  334. package/renderers/dateRenderer/index.mjs +0 -1
  335. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
  336. package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
  337. package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
  338. package/renderers/handsontableRenderer/index.d.ts +0 -1
  339. package/renderers/handsontableRenderer/index.js +0 -6
  340. package/renderers/handsontableRenderer/index.mjs +0 -1
  341. package/renderers/selectRenderer/index.d.ts +0 -1
  342. package/renderers/selectRenderer/index.js +0 -6
  343. package/renderers/selectRenderer/index.mjs +0 -1
  344. package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
  345. package/renderers/selectRenderer/selectRenderer.js +0 -27
  346. package/renderers/selectRenderer/selectRenderer.mjs +0 -22
  347. package/selection/highlight/types/areaLayered.js +0 -31
  348. package/selection/highlight/types/areaLayered.mjs +0 -26
  349. package/selection/highlight/types/column.js +0 -27
  350. package/selection/highlight/types/column.mjs +0 -22
  351. package/selection/highlight/types/row.js +0 -27
  352. package/selection/highlight/types/row.mjs +0 -22
  353. package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
  354. package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
  355. package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
  356. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
  357. package/shortcutContexts/commands/editor/fastOpen.js +0 -16
  358. package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
  359. package/shortcutContexts/commands/editor/index.js +0 -16
  360. package/shortcutContexts/commands/editor/index.mjs +0 -12
  361. package/shortcutContexts/commands/editor/open.js +0 -27
  362. package/shortcutContexts/commands/editor/open.mjs +0 -23
  363. package/shortcutContexts/commands/emptySelectedCells.js +0 -11
  364. package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
  365. package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
  366. package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
  367. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
  368. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
  369. package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
  370. package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
  371. package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
  372. package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
  373. package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
  374. package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
  375. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
  376. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
  377. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
  378. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
  379. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
  380. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
  381. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
  382. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
  383. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
  384. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
  385. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
  386. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
  387. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
  388. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
  389. package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
  390. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
  391. package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
  392. package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
  393. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
  394. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
  395. package/shortcutContexts/commands/index.js +0 -35
  396. package/shortcutContexts/commands/index.mjs +0 -31
  397. package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
  398. package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
  399. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
  400. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
  401. package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
  402. package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
  403. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
  404. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
  405. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
  406. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
  407. package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
  408. package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
  409. package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
  410. package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
  411. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
  412. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
  413. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
  414. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
  415. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
  416. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
  417. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
  418. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
  419. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
  420. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
  421. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
  422. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
  423. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
  424. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
  425. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
  426. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
  427. package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
  428. package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
  429. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
  430. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
  431. package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
  432. package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
  433. package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
  434. package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
  435. package/shortcutContexts/commands/selectAll.js +0 -12
  436. package/shortcutContexts/commands/selectAll.mjs +0 -8
  437. package/shortcutContexts/constants.js +0 -13
  438. package/shortcutContexts/constants.mjs +0 -8
  439. package/shortcutContexts/editor.js +0 -25
  440. package/shortcutContexts/editor.mjs +0 -21
  441. package/shortcutContexts/grid.js +0 -163
  442. package/shortcutContexts/grid.mjs +0 -159
  443. package/shortcutContexts/index.js +0 -24
  444. package/shortcutContexts/index.mjs +0 -11
  445. package/utils/paginator.js +0 -151
  446. package/utils/paginator.mjs +0 -147
@@ -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
  }
@@ -1,23 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- require("core-js/modules/es.error.cause.js");
5
4
  var _base = require("../base");
6
5
  var _array = require("../../helpers/array");
7
- var _object = require("../../helpers/object");
8
- var _commandExecutor = require("../contextMenu/commandExecutor");
9
- var _utils = require("../contextMenu/utils");
6
+ var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
10
7
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
11
8
  var _element = require("../../helpers/dom/element");
12
- var _itemsFactory = require("../contextMenu/itemsFactory");
13
- var _menu = require("../contextMenu/menu");
9
+ var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
10
+ var _menu = _interopRequireDefault(require("../contextMenu/menu"));
14
11
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
15
12
  var _predefinedItems = require("../contextMenu/predefinedItems");
16
- var _a11y = require("../../helpers/a11y");
17
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
- function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
19
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
20
- function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
21
14
  _pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
22
15
  _pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
23
16
  _pluginHooks.default.getSingleton().register('afterDropdownMenuShow');
@@ -28,7 +21,6 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
28
21
  const PLUGIN_PRIORITY = 230;
29
22
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
30
23
  const BUTTON_CLASS_NAME = 'changeType';
31
- const SHORTCUTS_GROUP = PLUGIN_KEY;
32
24
 
33
25
  /* eslint-disable jsdoc/require-description-complete-sentence */
34
26
  /**
@@ -80,7 +72,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
80
72
  * ```
81
73
  * :::
82
74
  */
83
- var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
75
+
84
76
  class DropdownMenu extends _base.BasePlugin {
85
77
  static get PLUGIN_KEY() {
86
78
  return PLUGIN_KEY;
@@ -108,12 +100,6 @@ class DropdownMenu extends _base.BasePlugin {
108
100
  * @private
109
101
  * @type {EventManager}
110
102
  */
111
- /**
112
- * Add custom shortcuts to the provided menu instance.
113
- *
114
- * @param {Menu} menuInstance The menu instance.
115
- */
116
- _classPrivateMethodInitSpec(this, _addCustomShortcuts);
117
103
  this.eventManager = new _eventManager.default(this);
118
104
  /**
119
105
  * Instance of {@link CommandExecutor}.
@@ -121,7 +107,7 @@ class DropdownMenu extends _base.BasePlugin {
121
107
  * @private
122
108
  * @type {CommandExecutor}
123
109
  */
124
- this.commandExecutor = new _commandExecutor.CommandExecutor(this.hot);
110
+ this.commandExecutor = new _commandExecutor.default(this.hot);
125
111
  /**
126
112
  * Instance of {@link ItemsFactory}.
127
113
  *
@@ -162,7 +148,7 @@ class DropdownMenu extends _base.BasePlugin {
162
148
  if (this.enabled) {
163
149
  return;
164
150
  }
165
- this.itemsFactory = new _itemsFactory.ItemsFactory(this.hot, DropdownMenu.DEFAULT_ITEMS);
151
+ this.itemsFactory = new _itemsFactory.default(this.hot, DropdownMenu.DEFAULT_ITEMS);
166
152
  const settings = this.hot.getSettings()[PLUGIN_KEY];
167
153
  const predefinedItems = {
168
154
  items: this.itemsFactory.getItems(settings)
@@ -171,7 +157,6 @@ class DropdownMenu extends _base.BasePlugin {
171
157
  if (typeof settings.callback === 'function') {
172
158
  this.commandExecutor.setCommonCallback(settings.callback);
173
159
  }
174
- this.registerShortcuts();
175
160
  super.enablePlugin();
176
161
  this.callOnPluginsReady(() => {
177
162
  this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
@@ -180,7 +165,7 @@ class DropdownMenu extends _base.BasePlugin {
180
165
  if (this.menu) {
181
166
  this.menu.destroy();
182
167
  }
183
- this.menu = new _menu.Menu(this.hot, {
168
+ this.menu = new _menu.default(this.hot, {
184
169
  className: 'htDropdownMenu',
185
170
  keepInViewport: true,
186
171
  container: settings.uiContainer || this.hot.rootDocument.body
@@ -189,7 +174,6 @@ class DropdownMenu extends _base.BasePlugin {
189
174
  this.menu.setMenuItems(menuItems);
190
175
  this.menu.addLocalHook('beforeOpen', () => this.onMenuBeforeOpen());
191
176
  this.menu.addLocalHook('afterOpen', () => this.onMenuAfterOpen());
192
- this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.onSubMenuAfterOpen(subMenuInstance));
193
177
  this.menu.addLocalHook('afterClose', () => this.onMenuAfterClose());
194
178
  this.menu.addLocalHook('executeCommand', function () {
195
179
  for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -223,66 +207,9 @@ class DropdownMenu extends _base.BasePlugin {
223
207
  if (this.menu) {
224
208
  this.menu.destroy();
225
209
  }
226
- this.unregisterShortcuts();
227
210
  super.disablePlugin();
228
211
  }
229
212
 
230
- /**
231
- * Register shortcuts responsible for toggling dropdown menu.
232
- *
233
- * @private
234
- */
235
- registerShortcuts() {
236
- const gridContext = this.hot.getShortcutManager().getContext('grid');
237
- const callback = () => {
238
- const {
239
- highlight
240
- } = this.hot.getSelectedRangeLast();
241
- if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
242
- this.hot.selectColumns(highlight.col, highlight.col, -1);
243
- const {
244
- from
245
- } = this.hot.getSelectedRangeLast();
246
- const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
247
- const target = this.hot.getCell(-1, from.col, true);
248
- const rect = target.getBoundingClientRect();
249
- this.open({
250
- left: rect.left + offset.left,
251
- top: rect.top + target.offsetHeight + offset.top
252
- }, {
253
- left: rect.width
254
- });
255
- }
256
- };
257
- gridContext.addShortcuts([{
258
- keys: [['Shift', 'Alt', 'ArrowDown'], ['Control/Meta', 'Enter']],
259
- callback,
260
- runOnlyIf: () => {
261
- var _this$hot$getSelected;
262
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
263
- },
264
- captureCtrl: true,
265
- group: SHORTCUTS_GROUP
266
- }, {
267
- keys: [['Shift', 'Alt', 'ArrowDown']],
268
- callback,
269
- runOnlyIf: () => {
270
- var _this$hot$getSelected2;
271
- return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
272
- },
273
- group: SHORTCUTS_GROUP
274
- }]);
275
- }
276
-
277
- /**
278
- * Unregister shortcuts responsible for toggling dropdown menu.
279
- *
280
- * @private
281
- */
282
- unregisterShortcuts() {
283
- this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
284
- }
285
-
286
213
  /**
287
214
  * Registers the DOM listeners.
288
215
  *
@@ -295,30 +222,23 @@ class DropdownMenu extends _base.BasePlugin {
295
222
  /**
296
223
  * Opens menu and re-position it based on the passed coordinates.
297
224
  *
298
- * @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
299
- * which contains coordinates relative to the browsers viewport (without included scroll offsets).
300
- * Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
301
- * coordinates.
302
- * @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
303
- * 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.
304
230
  * @fires Hooks#beforeDropdownMenuShow
305
231
  * @fires Hooks#afterDropdownMenuShow
306
232
  */
233
+
307
234
  open(position) {
308
- var _this$menu;
309
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
310
- above: 0,
311
- below: 0,
312
- left: 0,
313
- right: 0
314
- };
315
- if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
235
+ if (!this.menu) {
316
236
  return;
317
237
  }
318
238
  this.menu.open();
319
- (0, _object.objectEach)(offset, (value, key) => {
320
- this.menu.setOffset(key, value);
321
- });
239
+ if (position.width) {
240
+ this.menu.setOffset('left', position.width);
241
+ }
322
242
  this.menu.setPosition(position);
323
243
  }
324
244
 
@@ -326,8 +246,10 @@ class DropdownMenu extends _base.BasePlugin {
326
246
  * Closes dropdown menu.
327
247
  */
328
248
  close() {
329
- var _this$menu2;
330
- (_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
249
+ if (!this.menu) {
250
+ return;
251
+ }
252
+ this.menu.close();
331
253
  }
332
254
 
333
255
  /**
@@ -383,6 +305,7 @@ class DropdownMenu extends _base.BasePlugin {
383
305
  }
384
306
  }
385
307
  }
308
+
386
309
  /**
387
310
  * Table click listener.
388
311
  *
@@ -391,14 +314,26 @@ class DropdownMenu extends _base.BasePlugin {
391
314
  */
392
315
  onTableClick(event) {
393
316
  event.stopPropagation();
394
- if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
395
- 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
+ }
396
331
  const rect = event.target.getBoundingClientRect();
397
332
  this.open({
398
- left: rect.left + offset.left,
399
- top: rect.top + event.target.offsetHeight + 3 + offset.top
400
- }, {
401
- 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
402
337
  });
403
338
  }
404
339
  }
@@ -437,11 +372,6 @@ class DropdownMenu extends _base.BasePlugin {
437
372
  const button = this.hot.rootDocument.createElement('button');
438
373
  button.className = BUTTON_CLASS_NAME;
439
374
  button.type = 'button';
440
- button.tabIndex = -1;
441
- if (this.hot.getSettings().ariaTags) {
442
- (0, _element.setAttribute)(button, [(0, _a11y.A11Y_HIDDEN)()]);
443
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_HASPOPUP)('menu')]);
444
- }
445
375
 
446
376
  // prevent page reload on button click
447
377
  button.onclick = function () {
@@ -468,17 +398,6 @@ class DropdownMenu extends _base.BasePlugin {
468
398
  */
469
399
  onMenuAfterOpen() {
470
400
  this.hot.runHooks('afterDropdownMenuShow', this);
471
- _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
472
- }
473
-
474
- /**
475
- * Listener for the `afterSubmenuOpen` hook.
476
- *
477
- * @private
478
- * @param {Menu} subMenuInstance The opened sub menu instance.
479
- */
480
- onSubMenuAfterOpen(subMenuInstance) {
481
- _classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
482
401
  }
483
402
 
484
403
  /**
@@ -504,12 +423,6 @@ class DropdownMenu extends _base.BasePlugin {
504
423
  }
505
424
  }
506
425
  exports.DropdownMenu = DropdownMenu;
507
- function _addCustomShortcuts2(menuInstance) {
508
- menuInstance.getKeyboardShortcutsCtrl().addCustomShortcuts([{
509
- keys: [['Control/Meta', 'A']],
510
- callback: () => false
511
- }]);
512
- }
513
426
  DropdownMenu.SEPARATOR = {
514
427
  name: _predefinedItems.SEPARATOR
515
428
  };