handsontable 0.0.0-next-010265d-20231005 → 0.0.0-next-9379dd1-20231020

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/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +12 -10
  14. package/3rdparty/walkontable/src/event.mjs +12 -10
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  26. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  27. package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
  28. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
  29. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
  30. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
  31. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  32. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  33. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  34. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  35. package/3rdparty/walkontable/src/scroll.js +2 -0
  36. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  37. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  38. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  39. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  40. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  41. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  42. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  43. package/3rdparty/walkontable/src/selection/index.js +26 -0
  44. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  45. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  46. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  47. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  48. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  49. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  50. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  51. package/3rdparty/walkontable/src/settings.js +13 -4
  52. package/3rdparty/walkontable/src/settings.mjs +13 -4
  53. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  59. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  60. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  61. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  62. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  63. package/3rdparty/walkontable/src/table.js +19 -78
  64. package/3rdparty/walkontable/src/table.mjs +20 -79
  65. package/base.js +2 -2
  66. package/base.mjs +2 -2
  67. package/cellTypes/dateType/dateType.d.ts +3 -3
  68. package/cellTypes/dateType/dateType.js +2 -2
  69. package/cellTypes/dateType/dateType.mjs +2 -2
  70. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  71. package/cellTypes/handsontableType/handsontableType.js +2 -2
  72. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  73. package/cellTypes/index.d.ts +3 -0
  74. package/cellTypes/index.js +4 -0
  75. package/cellTypes/index.mjs +3 -1
  76. package/cellTypes/selectType/index.d.ts +1 -0
  77. package/cellTypes/selectType/index.js +6 -0
  78. package/cellTypes/selectType/index.mjs +1 -0
  79. package/cellTypes/selectType/selectType.d.ts +14 -0
  80. package/cellTypes/selectType/selectType.js +13 -0
  81. package/cellTypes/selectType/selectType.mjs +8 -0
  82. package/core/focusCatcher/focusDetector.js +63 -0
  83. package/core/focusCatcher/focusDetector.mjs +59 -0
  84. package/core/focusCatcher/index.js +142 -0
  85. package/core/focusCatcher/index.mjs +138 -0
  86. package/core/index.js +9 -0
  87. package/core/index.mjs +1 -0
  88. package/core.d.ts +9 -4
  89. package/core.js +285 -327
  90. package/core.mjs +285 -327
  91. package/dataMap/metaManager/metaSchema.js +65 -0
  92. package/dataMap/metaManager/metaSchema.mjs +65 -0
  93. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  94. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  95. package/dataMap/replaceData.js +5 -0
  96. package/dataMap/replaceData.mjs +5 -0
  97. package/dist/handsontable.css +40 -5
  98. package/dist/handsontable.full.css +40 -5
  99. package/dist/handsontable.full.js +11744 -6945
  100. package/dist/handsontable.full.min.css +4 -4
  101. package/dist/handsontable.full.min.js +141 -141
  102. package/dist/handsontable.js +14036 -9237
  103. package/dist/handsontable.min.css +3 -3
  104. package/dist/handsontable.min.js +21 -21
  105. package/dist/languages/all.js +6 -2
  106. package/dist/languages/all.min.js +1 -1
  107. package/dist/languages/en-US.js +3 -1
  108. package/dist/languages/en-US.min.js +1 -1
  109. package/dist/languages/pl-PL.js +3 -1
  110. package/dist/languages/pl-PL.min.js +1 -1
  111. package/editorManager.js +15 -87
  112. package/editorManager.mjs +16 -87
  113. package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
  114. package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
  115. package/editors/dateEditor/dateEditor.js +26 -7
  116. package/editors/dateEditor/dateEditor.mjs +27 -8
  117. package/editors/handsontableEditor/handsontableEditor.js +9 -1
  118. package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
  119. package/editors/textEditor/textEditor.js +19 -27
  120. package/editors/textEditor/textEditor.mjs +22 -30
  121. package/focusManager.d.ts +12 -0
  122. package/focusManager.js +265 -0
  123. package/focusManager.mjs +261 -0
  124. package/helpers/a11y.js +79 -0
  125. package/helpers/a11y.mjs +38 -0
  126. package/helpers/dom/element.js +188 -9
  127. package/helpers/dom/element.mjs +182 -9
  128. package/helpers/mixed.js +1 -1
  129. package/helpers/mixed.mjs +1 -1
  130. package/helpers/number.d.ts +1 -0
  131. package/helpers/number.js +18 -0
  132. package/helpers/number.mjs +17 -0
  133. package/i18n/constants.js +7 -1
  134. package/i18n/constants.mjs +4 -1
  135. package/i18n/languages/en-US.js +3 -1
  136. package/i18n/languages/en-US.mjs +3 -1
  137. package/i18n/languages/pl-PL.js +3 -1
  138. package/i18n/languages/pl-PL.mjs +3 -1
  139. package/languages/all.js +6 -2
  140. package/languages/en-US.js +3 -1
  141. package/languages/en-US.mjs +3 -1
  142. package/languages/index.js +6 -2
  143. package/languages/pl-PL.js +3 -1
  144. package/languages/pl-PL.mjs +3 -1
  145. package/package.json +21 -1
  146. package/pluginHooks.d.ts +12 -1
  147. package/pluginHooks.js +152 -1
  148. package/pluginHooks.mjs +152 -1
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
  151. package/plugins/columnSorting/columnSorting.js +43 -0
  152. package/plugins/columnSorting/columnSorting.mjs +44 -3
  153. package/plugins/columnSorting/index.js +3 -1
  154. package/plugins/columnSorting/index.mjs +1 -1
  155. package/plugins/comments/commentEditor.js +1 -0
  156. package/plugins/comments/commentEditor.mjs +1 -0
  157. package/plugins/comments/comments.js +252 -189
  158. package/plugins/comments/comments.mjs +251 -190
  159. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  160. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  161. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  162. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  163. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  164. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  165. package/plugins/contextMenu/commandExecutor.js +2 -3
  166. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  167. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  168. package/plugins/contextMenu/contextMenu.js +75 -36
  169. package/plugins/contextMenu/contextMenu.mjs +74 -35
  170. package/plugins/contextMenu/itemsFactory.js +2 -3
  171. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  172. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  173. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  174. package/plugins/contextMenu/menu/index.js +9 -0
  175. package/plugins/contextMenu/menu/index.mjs +1 -0
  176. package/plugins/contextMenu/{menu.js → menu/menu.js} +96 -308
  177. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +97 -309
  178. package/plugins/contextMenu/menu/navigator.js +152 -0
  179. package/plugins/contextMenu/menu/navigator.mjs +148 -0
  180. package/plugins/contextMenu/menu/positioner.js +213 -0
  181. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  182. package/plugins/contextMenu/menu/utils.js +177 -0
  183. package/plugins/contextMenu/menu/utils.mjs +163 -0
  184. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  185. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  186. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  187. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  188. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  189. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  190. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  191. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  192. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  193. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  194. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  195. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  196. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  197. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  198. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  199. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  200. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  201. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  202. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  203. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  204. package/plugins/contextMenu/utils.js +35 -151
  205. package/plugins/contextMenu/utils.mjs +35 -144
  206. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  207. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  208. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  209. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  210. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  211. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  212. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  213. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  214. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  215. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  216. package/plugins/copyPaste/copyPaste.js +127 -78
  217. package/plugins/copyPaste/copyPaste.mjs +128 -79
  218. package/plugins/customBorders/customBorders.js +23 -20
  219. package/plugins/customBorders/customBorders.mjs +24 -21
  220. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  221. package/plugins/dropdownMenu/dropdownMenu.js +97 -38
  222. package/plugins/dropdownMenu/dropdownMenu.mjs +96 -37
  223. package/plugins/filters/constants.mjs +1 -1
  224. package/plugins/filters/filters.js +31 -14
  225. package/plugins/filters/filters.mjs +31 -14
  226. package/plugins/filters/ui/select.js +3 -3
  227. package/plugins/filters/ui/select.mjs +2 -2
  228. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  229. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  230. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  231. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  232. package/plugins/mergeCells/mergeCells.js +5 -16
  233. package/plugins/mergeCells/mergeCells.mjs +5 -16
  234. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  235. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  236. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  237. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  238. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  239. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  240. package/plugins/nestedRows/nestedRows.js +41 -0
  241. package/plugins/nestedRows/nestedRows.mjs +41 -0
  242. package/plugins/nestedRows/ui/headers.js +11 -0
  243. package/plugins/nestedRows/ui/headers.mjs +12 -1
  244. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  245. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  246. package/renderers/baseRenderer/baseRenderer.js +17 -0
  247. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  248. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  249. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  250. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  251. package/renderers/dateRenderer/dateRenderer.js +29 -0
  252. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  253. package/renderers/dateRenderer/index.d.ts +1 -0
  254. package/renderers/dateRenderer/index.js +6 -0
  255. package/renderers/dateRenderer/index.mjs +1 -0
  256. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  257. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  258. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  259. package/renderers/handsontableRenderer/index.d.ts +1 -0
  260. package/renderers/handsontableRenderer/index.js +6 -0
  261. package/renderers/handsontableRenderer/index.mjs +1 -0
  262. package/renderers/index.d.ts +9 -0
  263. package/renderers/selectRenderer/index.d.ts +1 -0
  264. package/renderers/selectRenderer/index.js +6 -0
  265. package/renderers/selectRenderer/index.mjs +1 -0
  266. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  267. package/renderers/selectRenderer/selectRenderer.js +27 -0
  268. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  269. package/selection/highlight/highlight.js +256 -71
  270. package/selection/highlight/highlight.mjs +250 -71
  271. package/selection/highlight/types/activeHeader.js +10 -8
  272. package/selection/highlight/types/activeHeader.mjs +10 -8
  273. package/selection/highlight/types/area.js +6 -18
  274. package/selection/highlight/types/area.mjs +6 -18
  275. package/selection/highlight/types/areaLayered.js +31 -0
  276. package/selection/highlight/types/areaLayered.mjs +26 -0
  277. package/selection/highlight/types/column.js +27 -0
  278. package/selection/highlight/types/column.mjs +22 -0
  279. package/selection/highlight/types/customSelection.js +7 -9
  280. package/selection/highlight/types/customSelection.mjs +7 -9
  281. package/selection/highlight/types/fill.js +5 -7
  282. package/selection/highlight/types/fill.mjs +5 -7
  283. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  284. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  285. package/selection/highlight/types/header.js +9 -18
  286. package/selection/highlight/types/header.mjs +9 -18
  287. package/selection/highlight/types/row.js +27 -0
  288. package/selection/highlight/types/row.mjs +22 -0
  289. package/selection/highlight/visualSelection.js +31 -27
  290. package/selection/highlight/visualSelection.mjs +31 -27
  291. package/selection/index.js +4 -7
  292. package/selection/index.mjs +2 -3
  293. package/selection/mouseEventHandler.js +7 -1
  294. package/selection/mouseEventHandler.mjs +7 -1
  295. package/selection/range.js +8 -8
  296. package/selection/range.mjs +8 -8
  297. package/selection/selection.js +321 -152
  298. package/selection/selection.mjs +318 -151
  299. package/selection/transformation.js +232 -90
  300. package/selection/transformation.mjs +232 -90
  301. package/selection/utils.js +15 -21
  302. package/selection/utils.mjs +16 -21
  303. package/settings.d.ts +4 -0
  304. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  305. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  306. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  307. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  308. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  309. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  310. package/shortcutContexts/commands/editor/index.js +16 -0
  311. package/shortcutContexts/commands/editor/index.mjs +12 -0
  312. package/shortcutContexts/commands/editor/open.js +27 -0
  313. package/shortcutContexts/commands/editor/open.mjs +23 -0
  314. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  315. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  316. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  317. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  318. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  319. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  320. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  321. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  322. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  323. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  324. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  325. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  326. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  327. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  328. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  329. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  330. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  331. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  332. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  333. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  334. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  335. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  336. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  337. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  338. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  339. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  340. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  341. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  342. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  343. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  344. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  345. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  346. package/shortcutContexts/commands/index.js +35 -0
  347. package/shortcutContexts/commands/index.mjs +31 -0
  348. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  349. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  350. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  351. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  352. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  353. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  354. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  355. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  356. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  357. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  358. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  359. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  360. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  361. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  362. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  363. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  364. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  365. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  366. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  367. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  368. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  369. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  370. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  371. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  372. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  373. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  374. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  375. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  376. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  377. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  378. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  383. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  384. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  385. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  386. package/shortcutContexts/commands/selectAll.js +12 -0
  387. package/shortcutContexts/commands/selectAll.mjs +8 -0
  388. package/shortcutContexts/constants.js +13 -0
  389. package/shortcutContexts/constants.mjs +8 -0
  390. package/shortcutContexts/editor.js +25 -0
  391. package/shortcutContexts/editor.mjs +21 -0
  392. package/shortcutContexts/grid.js +163 -0
  393. package/shortcutContexts/grid.mjs +159 -0
  394. package/shortcutContexts/index.js +24 -0
  395. package/shortcutContexts/index.mjs +11 -0
  396. package/shortcuts/context.js +20 -2
  397. package/shortcuts/context.mjs +20 -3
  398. package/shortcuts/manager.js +25 -7
  399. package/shortcuts/manager.mjs +26 -7
  400. package/shortcuts/recorder.js +3 -3
  401. package/shortcuts/recorder.mjs +3 -3
  402. package/shortcuts/utils.js +19 -5
  403. package/shortcuts/utils.mjs +18 -4
  404. package/tableView.js +111 -13
  405. package/tableView.mjs +112 -14
  406. package/3rdparty/walkontable/src/selection.js +0 -295
  407. package/3rdparty/walkontable/src/selection.mjs +0 -290
  408. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  409. package/plugins/copyPaste/focusableElement.js +0 -186
  410. package/plugins/copyPaste/focusableElement.mjs +0 -180
  411. package/selection/highlight/constants.js +0 -15
  412. package/selection/highlight/constants.mjs +0 -6
  413. package/selection/highlight/types/index.js +0 -35
  414. package/selection/highlight/types/index.mjs +0 -31
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
5
+ var _utils = require("./utils");
6
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
7
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
8
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
9
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
10
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
11
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
12
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
13
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
14
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
15
+ /**
16
+ * Helper class that supports navigating throughout the menu and submenus.
17
+ *
18
+ * @private
19
+ * @class Navigator
20
+ */
21
+ var _hotMenu = /*#__PURE__*/new WeakMap();
22
+ var _current = /*#__PURE__*/new WeakMap();
23
+ var _prev = /*#__PURE__*/new WeakMap();
24
+ var _visited = /*#__PURE__*/new WeakMap();
25
+ var _updateMenuSelection = /*#__PURE__*/new WeakSet();
26
+ class Navigator {
27
+ constructor() {
28
+ /**
29
+ * Selects the menu based on the internal state of the class.
30
+ */
31
+ _classPrivateMethodInitSpec(this, _updateMenuSelection);
32
+ /**
33
+ * The instance of the Handsontable as menu.
34
+ *
35
+ * @type {Handsontable}
36
+ */
37
+ _classPrivateFieldInitSpec(this, _hotMenu, {
38
+ writable: true,
39
+ value: void 0
40
+ });
41
+ /**
42
+ * The index of the current selected menu item.
43
+ *
44
+ * @type {number}
45
+ */
46
+ _classPrivateFieldInitSpec(this, _current, {
47
+ writable: true,
48
+ value: -1
49
+ });
50
+ /**
51
+ * The index of the previously selected menu item.
52
+ *
53
+ * @type {number}
54
+ */
55
+ _classPrivateFieldInitSpec(this, _prev, {
56
+ writable: true,
57
+ value: -1
58
+ });
59
+ /**
60
+ * The collection of the already visited menu item indexes. The collection allows for preventing
61
+ * infinite loops in cases when all menu items are disabled, or there is only one item available
62
+ * and the navigation is triggered.
63
+ *
64
+ * @type {Set<number>}
65
+ */
66
+ _classPrivateFieldInitSpec(this, _visited, {
67
+ writable: true,
68
+ value: new Set()
69
+ });
70
+ }
71
+ /**
72
+ * Sets the menu Handsontable instance.
73
+ *
74
+ * @param {Handsontable} hotMenu The menu Handsontable instance.
75
+ */
76
+ setMenu(hotMenu) {
77
+ _classPrivateFieldSet(this, _hotMenu, hotMenu);
78
+ }
79
+
80
+ /**
81
+ * Selects the first menu item in the menu.
82
+ */
83
+ selectFirst() {
84
+ _classPrivateFieldGet(this, _visited).clear();
85
+ _classPrivateFieldSet(this, _current, 0);
86
+ _classPrivateFieldSet(this, _prev, _classPrivateFieldGet(this, _current) - 1);
87
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
88
+ }
89
+
90
+ /**
91
+ * Selects the last menu item in the menu.
92
+ */
93
+ selectLast() {
94
+ _classPrivateFieldGet(this, _visited).clear();
95
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _hotMenu).countRows() - 1);
96
+ _classPrivateFieldSet(this, _prev, _classPrivateFieldGet(this, _current) + 1);
97
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
98
+ }
99
+
100
+ /**
101
+ * Selects the next menu item in the menu. The navigator tries to select the closes non-disabled menu
102
+ * item. When all next items are disabled the first (or next non-disabled) menu item is selected.
103
+ */
104
+ selectNext() {
105
+ _classPrivateFieldGet(this, _visited).clear();
106
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _current) + 1);
107
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
108
+ }
109
+
110
+ /**
111
+ * Selects the previous menu item in the menu. The navigator tries to select the closes non-disabled menu
112
+ * item. When all previous items are disabled the last (or previous non-disabled) menu item is selected.
113
+ */
114
+ selectPrev() {
115
+ _classPrivateFieldGet(this, _visited).clear();
116
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _current) - 1);
117
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
118
+ }
119
+
120
+ /**
121
+ * Clears the internal state to the initial values.
122
+ */
123
+ clear() {
124
+ _classPrivateFieldGet(this, _visited).clear();
125
+ _classPrivateFieldSet(this, _prev, -1);
126
+ _classPrivateFieldSet(this, _current, -1);
127
+ }
128
+ }
129
+ exports.Navigator = Navigator;
130
+ function _updateMenuSelection2() {
131
+ const maxItems = _classPrivateFieldGet(this, _hotMenu).countRows() - 1;
132
+ if (_classPrivateFieldGet(this, _current) < 0) {
133
+ _classPrivateFieldSet(this, _current, maxItems);
134
+ _classPrivateFieldSet(this, _prev, maxItems);
135
+ }
136
+ if (_classPrivateFieldGet(this, _current) > maxItems) {
137
+ _classPrivateFieldSet(this, _current, 0);
138
+ _classPrivateFieldSet(this, _prev, -1);
139
+ }
140
+ if (_classPrivateFieldGet(this, _visited).has(_classPrivateFieldGet(this, _current))) {
141
+ return;
142
+ }
143
+ const cell = _classPrivateFieldGet(this, _hotMenu).getCell(_classPrivateFieldGet(this, _current), 0);
144
+ _classPrivateFieldGet(this, _visited).add(_classPrivateFieldGet(this, _current));
145
+ if (!cell || (0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) {
146
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _current) + (_classPrivateFieldGet(this, _current) > _classPrivateFieldGet(this, _prev) ? 1 : -1));
147
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
148
+ } else {
149
+ _classPrivateFieldGet(this, _hotMenu).selectCell(_classPrivateFieldGet(this, _current), 0);
150
+ }
151
+ _classPrivateFieldSet(this, _prev, _classPrivateFieldGet(this, _current));
152
+ }
@@ -0,0 +1,148 @@
1
+ import "core-js/modules/es.error.cause.js";
2
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
6
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
7
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
8
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
9
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
10
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
11
+ import { isSeparator, isDisabled, isSelectionDisabled } from "./utils.mjs";
12
+ /**
13
+ * Helper class that supports navigating throughout the menu and submenus.
14
+ *
15
+ * @private
16
+ * @class Navigator
17
+ */
18
+ var _hotMenu = /*#__PURE__*/new WeakMap();
19
+ var _current = /*#__PURE__*/new WeakMap();
20
+ var _prev = /*#__PURE__*/new WeakMap();
21
+ var _visited = /*#__PURE__*/new WeakMap();
22
+ var _updateMenuSelection = /*#__PURE__*/new WeakSet();
23
+ export class Navigator {
24
+ constructor() {
25
+ /**
26
+ * Selects the menu based on the internal state of the class.
27
+ */
28
+ _classPrivateMethodInitSpec(this, _updateMenuSelection);
29
+ /**
30
+ * The instance of the Handsontable as menu.
31
+ *
32
+ * @type {Handsontable}
33
+ */
34
+ _classPrivateFieldInitSpec(this, _hotMenu, {
35
+ writable: true,
36
+ value: void 0
37
+ });
38
+ /**
39
+ * The index of the current selected menu item.
40
+ *
41
+ * @type {number}
42
+ */
43
+ _classPrivateFieldInitSpec(this, _current, {
44
+ writable: true,
45
+ value: -1
46
+ });
47
+ /**
48
+ * The index of the previously selected menu item.
49
+ *
50
+ * @type {number}
51
+ */
52
+ _classPrivateFieldInitSpec(this, _prev, {
53
+ writable: true,
54
+ value: -1
55
+ });
56
+ /**
57
+ * The collection of the already visited menu item indexes. The collection allows for preventing
58
+ * infinite loops in cases when all menu items are disabled, or there is only one item available
59
+ * and the navigation is triggered.
60
+ *
61
+ * @type {Set<number>}
62
+ */
63
+ _classPrivateFieldInitSpec(this, _visited, {
64
+ writable: true,
65
+ value: new Set()
66
+ });
67
+ }
68
+ /**
69
+ * Sets the menu Handsontable instance.
70
+ *
71
+ * @param {Handsontable} hotMenu The menu Handsontable instance.
72
+ */
73
+ setMenu(hotMenu) {
74
+ _classPrivateFieldSet(this, _hotMenu, hotMenu);
75
+ }
76
+
77
+ /**
78
+ * Selects the first menu item in the menu.
79
+ */
80
+ selectFirst() {
81
+ _classPrivateFieldGet(this, _visited).clear();
82
+ _classPrivateFieldSet(this, _current, 0);
83
+ _classPrivateFieldSet(this, _prev, _classPrivateFieldGet(this, _current) - 1);
84
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
85
+ }
86
+
87
+ /**
88
+ * Selects the last menu item in the menu.
89
+ */
90
+ selectLast() {
91
+ _classPrivateFieldGet(this, _visited).clear();
92
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _hotMenu).countRows() - 1);
93
+ _classPrivateFieldSet(this, _prev, _classPrivateFieldGet(this, _current) + 1);
94
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
95
+ }
96
+
97
+ /**
98
+ * Selects the next menu item in the menu. The navigator tries to select the closes non-disabled menu
99
+ * item. When all next items are disabled the first (or next non-disabled) menu item is selected.
100
+ */
101
+ selectNext() {
102
+ _classPrivateFieldGet(this, _visited).clear();
103
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _current) + 1);
104
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
105
+ }
106
+
107
+ /**
108
+ * Selects the previous menu item in the menu. The navigator tries to select the closes non-disabled menu
109
+ * item. When all previous items are disabled the last (or previous non-disabled) menu item is selected.
110
+ */
111
+ selectPrev() {
112
+ _classPrivateFieldGet(this, _visited).clear();
113
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _current) - 1);
114
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
115
+ }
116
+
117
+ /**
118
+ * Clears the internal state to the initial values.
119
+ */
120
+ clear() {
121
+ _classPrivateFieldGet(this, _visited).clear();
122
+ _classPrivateFieldSet(this, _prev, -1);
123
+ _classPrivateFieldSet(this, _current, -1);
124
+ }
125
+ }
126
+ function _updateMenuSelection2() {
127
+ const maxItems = _classPrivateFieldGet(this, _hotMenu).countRows() - 1;
128
+ if (_classPrivateFieldGet(this, _current) < 0) {
129
+ _classPrivateFieldSet(this, _current, maxItems);
130
+ _classPrivateFieldSet(this, _prev, maxItems);
131
+ }
132
+ if (_classPrivateFieldGet(this, _current) > maxItems) {
133
+ _classPrivateFieldSet(this, _current, 0);
134
+ _classPrivateFieldSet(this, _prev, -1);
135
+ }
136
+ if (_classPrivateFieldGet(this, _visited).has(_classPrivateFieldGet(this, _current))) {
137
+ return;
138
+ }
139
+ const cell = _classPrivateFieldGet(this, _hotMenu).getCell(_classPrivateFieldGet(this, _current), 0);
140
+ _classPrivateFieldGet(this, _visited).add(_classPrivateFieldGet(this, _current));
141
+ if (!cell || isSeparator(cell) || isDisabled(cell) || isSelectionDisabled(cell)) {
142
+ _classPrivateFieldSet(this, _current, _classPrivateFieldGet(this, _current) + (_classPrivateFieldGet(this, _current) > _classPrivateFieldGet(this, _prev) ? 1 : -1));
143
+ _classPrivateMethodGet(this, _updateMenuSelection, _updateMenuSelection2).call(this);
144
+ } else {
145
+ _classPrivateFieldGet(this, _hotMenu).selectCell(_classPrivateFieldGet(this, _current), 0);
146
+ }
147
+ _classPrivateFieldSet(this, _prev, _classPrivateFieldGet(this, _current));
148
+ }
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ require("core-js/modules/es.error.cause.js");
5
+ var _cursor2 = require("./cursor");
6
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
7
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
8
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
9
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
10
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
11
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
12
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
13
+ /**
14
+ * Helper class for positioning the menu and submenus in the correct place relative to the
15
+ * cursor position (DOM element or mouse coordinates).
16
+ *
17
+ * @private
18
+ * @class Positioner
19
+ */
20
+ var _container = /*#__PURE__*/new WeakMap();
21
+ var _parentContainer = /*#__PURE__*/new WeakMap();
22
+ var _cursor = /*#__PURE__*/new WeakMap();
23
+ var _keepInViewport = /*#__PURE__*/new WeakMap();
24
+ var _offset = /*#__PURE__*/new WeakMap();
25
+ class Positioner {
26
+ constructor(keepInViewport) {
27
+ /**
28
+ * The menu container element the positioning will be applied to.
29
+ *
30
+ * @type {HTMLElement}
31
+ */
32
+ _classPrivateFieldInitSpec(this, _container, {
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ /**
37
+ * For positioning the submenu, the parent element is used to calculate offsets to ensure that submenu
38
+ * is positioned right next to the parent menu.
39
+ *
40
+ * @type {HTMLElement}
41
+ */
42
+ _classPrivateFieldInitSpec(this, _parentContainer, {
43
+ writable: true,
44
+ value: void 0
45
+ });
46
+ /**
47
+ * The instance of the Cursor class.
48
+ *
49
+ * @type {Cursor}
50
+ */
51
+ _classPrivateFieldInitSpec(this, _cursor, {
52
+ writable: true,
53
+ value: void 0
54
+ });
55
+ /**
56
+ * Enabling the option allows changing the position calculation so that the menus (or submenus)
57
+ * are always placed within the visible viewport of the browser.
58
+ *
59
+ * @type {boolean}
60
+ */
61
+ _classPrivateFieldInitSpec(this, _keepInViewport, {
62
+ writable: true,
63
+ value: false
64
+ });
65
+ /**
66
+ * Allows apply the position offset for directions.
67
+ *
68
+ * @type {{above: number, below: number, left: number, right: number}}
69
+ */
70
+ _classPrivateFieldInitSpec(this, _offset, {
71
+ writable: true,
72
+ value: {
73
+ above: 0,
74
+ below: 0,
75
+ left: 0,
76
+ right: 0
77
+ }
78
+ });
79
+ _classPrivateFieldSet(this, _keepInViewport, keepInViewport);
80
+ }
81
+
82
+ /**
83
+ * Sets offset position for specified directions (`above`, `below`, `left` or `right`).
84
+ *
85
+ * @param {'above' | 'below' | 'left' | 'right'} direction A direction name.
86
+ * @param {number} [offset=0] Offset value.
87
+ * @returns {Positioner}
88
+ */
89
+ setOffset(direction) {
90
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
91
+ _classPrivateFieldGet(this, _offset)[direction] = offset;
92
+ return this;
93
+ }
94
+
95
+ /**
96
+ * Sets the menu element to work with. The element can be owned by the main menu or the submenu.
97
+ *
98
+ * @param {HTMLElement} container The menu container element.
99
+ * @returns {Positioner}
100
+ */
101
+ setElement(container) {
102
+ _classPrivateFieldSet(this, _container, container);
103
+ return this;
104
+ }
105
+
106
+ /**
107
+ * Sets the parent menu element to work with.
108
+ *
109
+ * @param {HTMLElement} container The parent menu container element.
110
+ * @returns {Positioner}
111
+ */
112
+ setParentElement(container) {
113
+ _classPrivateFieldSet(this, _parentContainer, container);
114
+ return this;
115
+ }
116
+
117
+ /**
118
+ * Updates the menu position.
119
+ *
120
+ * @param {object|MouseEvent} coords The literal object with `top`, `left`, `width` and `height` props or a
121
+ * mouse event object.
122
+ */
123
+ updatePosition(coords) {
124
+ _classPrivateFieldSet(this, _cursor, new _cursor2.Cursor(coords, _classPrivateFieldGet(this, _container).ownerDocument.defaultView));
125
+ if (_classPrivateFieldGet(this, _keepInViewport)) {
126
+ if (_classPrivateFieldGet(this, _cursor).fitsBelow(_classPrivateFieldGet(this, _container))) {
127
+ this.setPositionBelowCursor();
128
+ } else if (_classPrivateFieldGet(this, _cursor).fitsAbove(_classPrivateFieldGet(this, _container))) {
129
+ this.setPositionAboveCursor();
130
+ } else {
131
+ this.setPositionBelowCursor();
132
+ }
133
+ this.updateHorizontalPosition();
134
+ } else {
135
+ this.setPositionBelowCursor();
136
+ this.setPositionOnRightOfCursor();
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Updates the menu horizontal position.
142
+ */
143
+ updateHorizontalPosition() {
144
+ if (_classPrivateFieldGet(this, _container).dir === 'rtl') {
145
+ if (_classPrivateFieldGet(this, _cursor).fitsOnLeft(_classPrivateFieldGet(this, _container))) {
146
+ this.setPositionOnLeftOfCursor();
147
+ } else {
148
+ this.setPositionOnRightOfCursor();
149
+ }
150
+ } else if (_classPrivateFieldGet(this, _cursor).fitsOnRight(_classPrivateFieldGet(this, _container))) {
151
+ this.setPositionOnRightOfCursor();
152
+ } else {
153
+ this.setPositionOnLeftOfCursor();
154
+ }
155
+ }
156
+
157
+ /**
158
+ * Sets the menu position above the cursor object.
159
+ */
160
+ setPositionAboveCursor() {
161
+ let top = _classPrivateFieldGet(this, _offset).above + _classPrivateFieldGet(this, _cursor).top - _classPrivateFieldGet(this, _container).offsetHeight;
162
+ if (_classPrivateFieldGet(this, _parentContainer)) {
163
+ top = _classPrivateFieldGet(this, _cursor).top + _classPrivateFieldGet(this, _cursor).cellHeight - _classPrivateFieldGet(this, _container).offsetHeight + 3;
164
+ }
165
+ _classPrivateFieldGet(this, _container).style.top = `${top}px`;
166
+ }
167
+
168
+ /**
169
+ * Sets the menu position below the cursor object.
170
+ */
171
+ setPositionBelowCursor() {
172
+ let top = _classPrivateFieldGet(this, _offset).below + _classPrivateFieldGet(this, _cursor).top + 1;
173
+ if (_classPrivateFieldGet(this, _parentContainer)) {
174
+ top = _classPrivateFieldGet(this, _cursor).top - 1;
175
+ }
176
+ _classPrivateFieldGet(this, _container).style.top = `${top}px`;
177
+ }
178
+
179
+ /**
180
+ * Sets the menu position on the right of the cursor object.
181
+ */
182
+ setPositionOnRightOfCursor() {
183
+ let left = _classPrivateFieldGet(this, _cursor).left;
184
+ if (_classPrivateFieldGet(this, _parentContainer)) {
185
+ const {
186
+ right: parentMenuRight
187
+ } = _classPrivateFieldGet(this, _parentContainer).getBoundingClientRect();
188
+
189
+ // move the sub menu by the width of the parent's border (usually by 1-2 pixels)
190
+ left += _classPrivateFieldGet(this, _cursor).cellWidth + parentMenuRight - (_classPrivateFieldGet(this, _cursor).left + _classPrivateFieldGet(this, _cursor).cellWidth);
191
+ } else {
192
+ left += _classPrivateFieldGet(this, _offset).right;
193
+ }
194
+ _classPrivateFieldGet(this, _container).style.left = `${left}px`;
195
+ }
196
+
197
+ /**
198
+ * Sets the menu position on the left of the cursor object.
199
+ */
200
+ setPositionOnLeftOfCursor() {
201
+ let left = _classPrivateFieldGet(this, _offset).left + _classPrivateFieldGet(this, _cursor).left - _classPrivateFieldGet(this, _container).offsetWidth;
202
+ if (_classPrivateFieldGet(this, _parentContainer)) {
203
+ const {
204
+ left: parentMenuLeft
205
+ } = _classPrivateFieldGet(this, _parentContainer).getBoundingClientRect();
206
+
207
+ // move the sub menu by the width of the parent's border (usually by 1-2 pixels)
208
+ left -= _classPrivateFieldGet(this, _cursor).left - parentMenuLeft;
209
+ }
210
+ _classPrivateFieldGet(this, _container).style.left = `${left}px`;
211
+ }
212
+ }
213
+ exports.Positioner = Positioner;