handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-cecf979-20231026

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 (447) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +12 -10
  14. package/3rdparty/walkontable/src/event.mjs +12 -10
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  26. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  27. package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
  28. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
  29. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
  30. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
  31. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  32. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  33. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  34. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  35. package/3rdparty/walkontable/src/scroll.js +2 -0
  36. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  37. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  38. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  39. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  40. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  41. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  42. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  43. package/3rdparty/walkontable/src/selection/index.js +26 -0
  44. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  45. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  46. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  47. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  48. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  49. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  50. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  51. package/3rdparty/walkontable/src/settings.js +13 -4
  52. package/3rdparty/walkontable/src/settings.mjs +13 -4
  53. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  59. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  60. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  61. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  62. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  63. package/3rdparty/walkontable/src/table.js +19 -78
  64. package/3rdparty/walkontable/src/table.mjs +20 -79
  65. package/base.js +2 -2
  66. package/base.mjs +2 -2
  67. package/cellTypes/dateType/dateType.d.ts +3 -3
  68. package/cellTypes/dateType/dateType.js +2 -2
  69. package/cellTypes/dateType/dateType.mjs +2 -2
  70. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  71. package/cellTypes/handsontableType/handsontableType.js +2 -2
  72. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  73. package/cellTypes/index.d.ts +3 -0
  74. package/cellTypes/index.js +4 -0
  75. package/cellTypes/index.mjs +3 -1
  76. package/cellTypes/selectType/index.d.ts +1 -0
  77. package/cellTypes/selectType/index.js +6 -0
  78. package/cellTypes/selectType/index.mjs +1 -0
  79. package/cellTypes/selectType/selectType.d.ts +14 -0
  80. package/cellTypes/selectType/selectType.js +13 -0
  81. package/cellTypes/selectType/selectType.mjs +8 -0
  82. package/core/focusCatcher/focusDetector.js +63 -0
  83. package/core/focusCatcher/focusDetector.mjs +59 -0
  84. package/core/focusCatcher/index.js +142 -0
  85. package/core/focusCatcher/index.mjs +138 -0
  86. package/core/index.js +9 -0
  87. package/core/index.mjs +1 -0
  88. package/core.d.ts +9 -4
  89. package/core.js +285 -327
  90. package/core.mjs +285 -327
  91. package/dataMap/metaManager/metaSchema.js +65 -0
  92. package/dataMap/metaManager/metaSchema.mjs +65 -0
  93. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  94. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  95. package/dataMap/replaceData.js +5 -0
  96. package/dataMap/replaceData.mjs +5 -0
  97. package/dist/handsontable.css +51 -15
  98. package/dist/handsontable.full.css +51 -15
  99. package/dist/handsontable.full.js +13360 -7840
  100. package/dist/handsontable.full.min.css +7 -7
  101. package/dist/handsontable.full.min.js +136 -136
  102. package/dist/handsontable.js +20955 -15435
  103. package/dist/handsontable.min.css +6 -6
  104. package/dist/handsontable.min.js +24 -24
  105. package/dist/languages/all.js +6 -2
  106. package/dist/languages/all.min.js +1 -1
  107. package/dist/languages/en-US.js +3 -1
  108. package/dist/languages/en-US.min.js +1 -1
  109. package/dist/languages/pl-PL.js +3 -1
  110. package/dist/languages/pl-PL.min.js +1 -1
  111. package/editorManager.js +15 -87
  112. package/editorManager.mjs +16 -87
  113. package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
  114. package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
  115. package/editors/dateEditor/dateEditor.js +26 -7
  116. package/editors/dateEditor/dateEditor.mjs +27 -8
  117. package/editors/handsontableEditor/handsontableEditor.js +9 -1
  118. package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
  119. package/editors/textEditor/textEditor.js +19 -27
  120. package/editors/textEditor/textEditor.mjs +22 -30
  121. package/focusManager.d.ts +12 -0
  122. package/focusManager.js +265 -0
  123. package/focusManager.mjs +261 -0
  124. package/helpers/a11y.js +79 -0
  125. package/helpers/a11y.mjs +38 -0
  126. package/helpers/dom/element.js +188 -9
  127. package/helpers/dom/element.mjs +182 -9
  128. package/helpers/mixed.js +1 -1
  129. package/helpers/mixed.mjs +1 -1
  130. package/helpers/number.d.ts +1 -0
  131. package/helpers/number.js +18 -0
  132. package/helpers/number.mjs +17 -0
  133. package/i18n/constants.js +7 -1
  134. package/i18n/constants.mjs +4 -1
  135. package/i18n/languages/en-US.js +3 -1
  136. package/i18n/languages/en-US.mjs +3 -1
  137. package/i18n/languages/pl-PL.js +3 -1
  138. package/i18n/languages/pl-PL.mjs +3 -1
  139. package/languages/all.js +6 -2
  140. package/languages/en-US.js +3 -1
  141. package/languages/en-US.mjs +3 -1
  142. package/languages/index.js +6 -2
  143. package/languages/pl-PL.js +3 -1
  144. package/languages/pl-PL.mjs +3 -1
  145. package/package.json +21 -1
  146. package/pluginHooks.d.ts +12 -1
  147. package/pluginHooks.js +152 -1
  148. package/pluginHooks.mjs +152 -1
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
  151. package/plugins/columnSorting/columnSorting.js +43 -0
  152. package/plugins/columnSorting/columnSorting.mjs +44 -3
  153. package/plugins/columnSorting/index.js +3 -1
  154. package/plugins/columnSorting/index.mjs +1 -1
  155. package/plugins/comments/commentEditor.js +1 -0
  156. package/plugins/comments/commentEditor.mjs +1 -0
  157. package/plugins/comments/comments.js +252 -189
  158. package/plugins/comments/comments.mjs +251 -190
  159. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  160. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  161. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  162. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  163. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  164. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  165. package/plugins/contextMenu/commandExecutor.js +2 -3
  166. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  167. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  168. package/plugins/contextMenu/contextMenu.js +75 -36
  169. package/plugins/contextMenu/contextMenu.mjs +74 -35
  170. package/plugins/contextMenu/itemsFactory.js +2 -3
  171. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  172. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  173. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  174. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  175. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  176. package/plugins/contextMenu/menu/index.js +9 -0
  177. package/plugins/contextMenu/menu/index.mjs +1 -0
  178. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  179. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  180. package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
  181. package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
  182. package/plugins/contextMenu/menu/navigator.js +27 -0
  183. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  184. package/plugins/contextMenu/menu/positioner.js +213 -0
  185. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  186. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  187. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  188. package/plugins/contextMenu/menu/utils.js +177 -0
  189. package/plugins/contextMenu/menu/utils.mjs +163 -0
  190. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  191. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  192. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  193. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  194. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  195. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  196. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  197. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  198. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  199. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  200. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  201. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  202. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  203. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  204. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  205. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  206. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  207. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  208. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  209. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  210. package/plugins/contextMenu/utils.js +35 -151
  211. package/plugins/contextMenu/utils.mjs +35 -144
  212. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  213. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  214. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  215. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  216. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  217. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  218. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  219. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  220. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  221. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  222. package/plugins/copyPaste/copyPaste.js +127 -78
  223. package/plugins/copyPaste/copyPaste.mjs +128 -79
  224. package/plugins/customBorders/customBorders.js +23 -20
  225. package/plugins/customBorders/customBorders.mjs +24 -21
  226. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  227. package/plugins/dropdownMenu/dropdownMenu.js +127 -40
  228. package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
  229. package/plugins/filters/component/_base.js +23 -8
  230. package/plugins/filters/component/_base.mjs +23 -8
  231. package/plugins/filters/component/actionBar.js +29 -27
  232. package/plugins/filters/component/actionBar.mjs +26 -23
  233. package/plugins/filters/component/condition.js +46 -59
  234. package/plugins/filters/component/condition.mjs +40 -52
  235. package/plugins/filters/component/operators.js +21 -22
  236. package/plugins/filters/component/operators.mjs +18 -18
  237. package/plugins/filters/component/value.js +35 -26
  238. package/plugins/filters/component/value.mjs +32 -22
  239. package/plugins/filters/constants.mjs +1 -1
  240. package/plugins/filters/filters.js +106 -62
  241. package/plugins/filters/filters.mjs +99 -55
  242. package/plugins/filters/menu/focusController.js +123 -0
  243. package/plugins/filters/menu/focusController.mjs +119 -0
  244. package/plugins/filters/menu/focusNavigator.js +30 -0
  245. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  246. package/plugins/filters/ui/_base.js +35 -13
  247. package/plugins/filters/ui/_base.mjs +35 -13
  248. package/plugins/filters/ui/input.js +43 -32
  249. package/plugins/filters/ui/input.mjs +42 -30
  250. package/plugins/filters/ui/link.js +44 -12
  251. package/plugins/filters/ui/link.mjs +44 -11
  252. package/plugins/filters/ui/multipleSelect.js +234 -129
  253. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  254. package/plugins/filters/ui/radioInput.js +42 -18
  255. package/plugins/filters/ui/radioInput.mjs +42 -17
  256. package/plugins/filters/ui/select.js +144 -75
  257. package/plugins/filters/ui/select.mjs +142 -72
  258. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  259. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  260. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  261. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  262. package/plugins/mergeCells/mergeCells.js +5 -16
  263. package/plugins/mergeCells/mergeCells.mjs +5 -16
  264. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  265. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  266. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  267. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  268. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  269. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  270. package/plugins/nestedRows/nestedRows.js +41 -0
  271. package/plugins/nestedRows/nestedRows.mjs +41 -0
  272. package/plugins/nestedRows/ui/headers.js +11 -0
  273. package/plugins/nestedRows/ui/headers.mjs +12 -1
  274. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  275. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  276. package/renderers/baseRenderer/baseRenderer.js +17 -0
  277. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  278. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  279. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  280. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  281. package/renderers/dateRenderer/dateRenderer.js +29 -0
  282. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  283. package/renderers/dateRenderer/index.d.ts +1 -0
  284. package/renderers/dateRenderer/index.js +6 -0
  285. package/renderers/dateRenderer/index.mjs +1 -0
  286. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  287. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  288. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  289. package/renderers/handsontableRenderer/index.d.ts +1 -0
  290. package/renderers/handsontableRenderer/index.js +6 -0
  291. package/renderers/handsontableRenderer/index.mjs +1 -0
  292. package/renderers/index.d.ts +9 -0
  293. package/renderers/selectRenderer/index.d.ts +1 -0
  294. package/renderers/selectRenderer/index.js +6 -0
  295. package/renderers/selectRenderer/index.mjs +1 -0
  296. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  297. package/renderers/selectRenderer/selectRenderer.js +27 -0
  298. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  299. package/selection/highlight/highlight.js +256 -71
  300. package/selection/highlight/highlight.mjs +250 -71
  301. package/selection/highlight/types/activeHeader.js +10 -8
  302. package/selection/highlight/types/activeHeader.mjs +10 -8
  303. package/selection/highlight/types/area.js +6 -18
  304. package/selection/highlight/types/area.mjs +6 -18
  305. package/selection/highlight/types/areaLayered.js +31 -0
  306. package/selection/highlight/types/areaLayered.mjs +26 -0
  307. package/selection/highlight/types/column.js +27 -0
  308. package/selection/highlight/types/column.mjs +22 -0
  309. package/selection/highlight/types/customSelection.js +7 -9
  310. package/selection/highlight/types/customSelection.mjs +7 -9
  311. package/selection/highlight/types/fill.js +5 -7
  312. package/selection/highlight/types/fill.mjs +5 -7
  313. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  314. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  315. package/selection/highlight/types/header.js +9 -18
  316. package/selection/highlight/types/header.mjs +9 -18
  317. package/selection/highlight/types/row.js +27 -0
  318. package/selection/highlight/types/row.mjs +22 -0
  319. package/selection/highlight/visualSelection.js +31 -27
  320. package/selection/highlight/visualSelection.mjs +31 -27
  321. package/selection/index.js +4 -7
  322. package/selection/index.mjs +2 -3
  323. package/selection/mouseEventHandler.js +7 -1
  324. package/selection/mouseEventHandler.mjs +7 -1
  325. package/selection/range.js +8 -8
  326. package/selection/range.mjs +8 -8
  327. package/selection/selection.js +321 -152
  328. package/selection/selection.mjs +318 -151
  329. package/selection/transformation.js +232 -90
  330. package/selection/transformation.mjs +232 -90
  331. package/selection/utils.js +15 -21
  332. package/selection/utils.mjs +16 -21
  333. package/settings.d.ts +4 -0
  334. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  335. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  336. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  337. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  338. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  339. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  340. package/shortcutContexts/commands/editor/index.js +16 -0
  341. package/shortcutContexts/commands/editor/index.mjs +12 -0
  342. package/shortcutContexts/commands/editor/open.js +27 -0
  343. package/shortcutContexts/commands/editor/open.mjs +23 -0
  344. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  345. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  346. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  348. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  349. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  350. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  351. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  352. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  353. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  354. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  355. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  364. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  365. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  366. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  367. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  368. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  369. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  370. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  371. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  372. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  373. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  374. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  375. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  376. package/shortcutContexts/commands/index.js +35 -0
  377. package/shortcutContexts/commands/index.mjs +31 -0
  378. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  383. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  384. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  385. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  386. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  387. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  388. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  389. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  390. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  391. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  401. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  402. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  403. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  404. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  405. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  406. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  407. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  408. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  409. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  410. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  411. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  412. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  413. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  414. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  415. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  416. package/shortcutContexts/commands/selectAll.js +12 -0
  417. package/shortcutContexts/commands/selectAll.mjs +8 -0
  418. package/shortcutContexts/constants.js +13 -0
  419. package/shortcutContexts/constants.mjs +8 -0
  420. package/shortcutContexts/editor.js +25 -0
  421. package/shortcutContexts/editor.mjs +21 -0
  422. package/shortcutContexts/grid.js +163 -0
  423. package/shortcutContexts/grid.mjs +159 -0
  424. package/shortcutContexts/index.js +24 -0
  425. package/shortcutContexts/index.mjs +11 -0
  426. package/shortcuts/context.d.ts +1 -0
  427. package/shortcuts/context.js +23 -4
  428. package/shortcuts/context.mjs +23 -5
  429. package/shortcuts/manager.js +25 -7
  430. package/shortcuts/manager.mjs +26 -7
  431. package/shortcuts/recorder.js +3 -3
  432. package/shortcuts/recorder.mjs +3 -3
  433. package/shortcuts/utils.js +19 -5
  434. package/shortcuts/utils.mjs +18 -4
  435. package/tableView.js +111 -13
  436. package/tableView.mjs +112 -14
  437. package/utils/paginator.js +151 -0
  438. package/utils/paginator.mjs +147 -0
  439. package/3rdparty/walkontable/src/selection.js +0 -295
  440. package/3rdparty/walkontable/src/selection.mjs +0 -290
  441. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  442. package/plugins/copyPaste/focusableElement.js +0 -186
  443. package/plugins/copyPaste/focusableElement.mjs +0 -180
  444. package/selection/highlight/constants.js +0 -15
  445. package/selection/highlight/constants.mjs +0 -6
  446. package/selection/highlight/types/index.js +0 -35
  447. package/selection/highlight/types/index.mjs +0 -31
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.installFocusDetector = installFocusDetector;
5
+ var _element = require("../../helpers/dom/element");
6
+ var _a11y = require("../../helpers/a11y");
7
+ /**
8
+ * Installs a focus detector module. The module appends two input elements into the DOM side by side.
9
+ * When the first input is focused, then it means that a user entered to the component using the TAB key
10
+ * from the element above. When the second input is focused, a user enters to the component from
11
+ * the element below the table. Each action, once detected, triggers the specific hook.
12
+ *
13
+ * @param {Handsontable} hot The Handsontable instance.
14
+ * @param {{ onFocusFromTop: Function, onFocusFromBottom: Function }} hooks An object with defined callbacks to call.
15
+ * @returns {{ activate: Function, deactivate: Function }}
16
+ */
17
+ function installFocusDetector(hot) {
18
+ let hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
19
+ const rootElement = hot.rootElement;
20
+ const inputTrapTop = createInputElement(hot);
21
+ const inputTrapBottom = createInputElement(hot);
22
+ inputTrapTop.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromTop());
23
+ inputTrapBottom.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromBottom());
24
+ rootElement.firstChild.before(inputTrapTop);
25
+ rootElement.lastChild.after(inputTrapBottom);
26
+ return {
27
+ /**
28
+ * Activates the detector by resetting the tabIndex of the input elements.
29
+ */
30
+ activate() {
31
+ hot._registerTimeout(() => {
32
+ inputTrapTop.tabIndex = 0;
33
+ inputTrapBottom.tabIndex = 0;
34
+ }, 10);
35
+ },
36
+ /**
37
+ * Deactivates the detector by setting tabIndex to -1.
38
+ */
39
+ deactivate() {
40
+ hot._registerTimeout(() => {
41
+ inputTrapTop.tabIndex = -1;
42
+ inputTrapBottom.tabIndex = -1;
43
+ }, 10);
44
+ }
45
+ };
46
+ }
47
+
48
+ /**
49
+ * Creates a new HTML input element.
50
+ *
51
+ * @param {Handsontable} hot The Handsontable instance.
52
+ * @returns {HTMLInputElement}
53
+ */
54
+ function createInputElement(hot) {
55
+ const rootDocument = hot.rootDocument;
56
+ const input = rootDocument.createElement('input');
57
+ input.type = 'text';
58
+ input.classList.add('htFocusCatcher');
59
+ if (hot.getSettings().ariaTags) {
60
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
61
+ }
62
+ return input;
63
+ }
@@ -0,0 +1,59 @@
1
+ import { setAttribute } from "../../helpers/dom/element.mjs";
2
+ import { A11Y_PRESENTATION } from "../../helpers/a11y.mjs";
3
+ /**
4
+ * Installs a focus detector module. The module appends two input elements into the DOM side by side.
5
+ * When the first input is focused, then it means that a user entered to the component using the TAB key
6
+ * from the element above. When the second input is focused, a user enters to the component from
7
+ * the element below the table. Each action, once detected, triggers the specific hook.
8
+ *
9
+ * @param {Handsontable} hot The Handsontable instance.
10
+ * @param {{ onFocusFromTop: Function, onFocusFromBottom: Function }} hooks An object with defined callbacks to call.
11
+ * @returns {{ activate: Function, deactivate: Function }}
12
+ */
13
+ export function installFocusDetector(hot) {
14
+ let hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15
+ const rootElement = hot.rootElement;
16
+ const inputTrapTop = createInputElement(hot);
17
+ const inputTrapBottom = createInputElement(hot);
18
+ inputTrapTop.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromTop());
19
+ inputTrapBottom.addEventListener('focus', () => hooks === null || hooks === void 0 ? void 0 : hooks.onFocusFromBottom());
20
+ rootElement.firstChild.before(inputTrapTop);
21
+ rootElement.lastChild.after(inputTrapBottom);
22
+ return {
23
+ /**
24
+ * Activates the detector by resetting the tabIndex of the input elements.
25
+ */
26
+ activate() {
27
+ hot._registerTimeout(() => {
28
+ inputTrapTop.tabIndex = 0;
29
+ inputTrapBottom.tabIndex = 0;
30
+ }, 10);
31
+ },
32
+ /**
33
+ * Deactivates the detector by setting tabIndex to -1.
34
+ */
35
+ deactivate() {
36
+ hot._registerTimeout(() => {
37
+ inputTrapTop.tabIndex = -1;
38
+ inputTrapBottom.tabIndex = -1;
39
+ }, 10);
40
+ }
41
+ };
42
+ }
43
+
44
+ /**
45
+ * Creates a new HTML input element.
46
+ *
47
+ * @param {Handsontable} hot The Handsontable instance.
48
+ * @returns {HTMLInputElement}
49
+ */
50
+ function createInputElement(hot) {
51
+ const rootDocument = hot.rootDocument;
52
+ const input = rootDocument.createElement('input');
53
+ input.type = 'text';
54
+ input.classList.add('htFocusCatcher');
55
+ if (hot.getSettings().ariaTags) {
56
+ setAttribute(input, [A11Y_PRESENTATION()]);
57
+ }
58
+ return input;
59
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.installFocusCatcher = installFocusCatcher;
5
+ var _shortcutContexts = require("../../shortcutContexts");
6
+ var _focusDetector = require("./focusDetector");
7
+ /**
8
+ * Installs a focus catcher module. The module observes when the table is focused and depending on
9
+ * from the which side it was focused on it selects a specified cell or releases the TAB navigation
10
+ * to the browser.
11
+ *
12
+ * @param {Core} hot The Handsontable instance.
13
+ */
14
+ function installFocusCatcher(hot) {
15
+ let recentlyAddedFocusCoords;
16
+ const {
17
+ activate,
18
+ deactivate
19
+ } = (0, _focusDetector.installFocusDetector)(hot, {
20
+ onFocusFromTop() {
21
+ var _recentlyAddedFocusCo;
22
+ const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
23
+ if (mostTopStartCoords) {
24
+ hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
25
+ hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
26
+ }
27
+ hot.listen();
28
+ },
29
+ onFocusFromBottom() {
30
+ var _recentlyAddedFocusCo2;
31
+ const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
32
+ if (mostBottomEndCoords) {
33
+ hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
34
+ hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
35
+ }
36
+ hot.listen();
37
+ }
38
+ });
39
+ hot.addHook('afterListen', () => deactivate());
40
+ hot.addHook('afterUnlisten', () => activate());
41
+ hot.addHook('afterSelection', () => {
42
+ var _hot$getSelectedRange;
43
+ recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
44
+ });
45
+ hot.getShortcutManager().getContext('grid').addShortcut({
46
+ keys: [['Tab'], ['Shift', 'Tab']],
47
+ callback: event => {
48
+ var _hot$getSelectedRange2;
49
+ const {
50
+ disableTabNavigation,
51
+ autoWrapRow
52
+ } = hot.getSettings();
53
+ if (disableTabNavigation) {
54
+ hot.deselectCell();
55
+ hot.unlisten();
56
+ return false;
57
+ }
58
+ const isSelected = hot.selection.isSelected();
59
+ const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
60
+ const mostTopStartCoords = getMostTopStartPosition(hot);
61
+ const mostBottomEndCoords = getMostBottomEndPosition(hot);
62
+
63
+ // For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
64
+ if (!autoWrapRow) {
65
+ mostTopStartCoords.row = highlight.row;
66
+ mostBottomEndCoords.row = highlight.row;
67
+ }
68
+ if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
69
+ hot.deselectCell();
70
+ hot.unlisten();
71
+ return false;
72
+ }
73
+ return true;
74
+ },
75
+ runOnlyIf: () => !hot.getSettings().minSpareCols,
76
+ preventDefault: false,
77
+ stopPropagation: false,
78
+ position: 'before',
79
+ relativeToGroup: _shortcutContexts.GRID_GROUP,
80
+ group: 'focusCatcher'
81
+ });
82
+ }
83
+
84
+ /**
85
+ * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
86
+ *
87
+ * @param {Core} hot The Handsontable instance.
88
+ * @returns {CellCoords|null}
89
+ */
90
+ function getMostTopStartPosition(hot) {
91
+ const {
92
+ rowIndexMapper,
93
+ columnIndexMapper
94
+ } = hot;
95
+ const {
96
+ navigableHeaders
97
+ } = hot.getSettings();
98
+ let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
99
+ let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
100
+ if (topRow === 0) {
101
+ topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
102
+ }
103
+ if (startColumn === 0) {
104
+ startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
105
+ }
106
+ if (topRow === null || startColumn === null) {
107
+ return null;
108
+ }
109
+ return hot._createCellCoords(topRow, startColumn);
110
+ }
111
+
112
+ /**
113
+ * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
114
+ *
115
+ * @param {Core} hot The Handsontable instance.
116
+ * @returns {CellCoords|null}
117
+ */
118
+ function getMostBottomEndPosition(hot) {
119
+ var _rowIndexMapper$getVi, _columnIndexMapper$ge;
120
+ const {
121
+ rowIndexMapper,
122
+ columnIndexMapper
123
+ } = hot;
124
+ const {
125
+ navigableHeaders
126
+ } = hot.getSettings();
127
+ let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
128
+ let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
129
+ if (bottomRow < 0) {
130
+ if (!navigableHeaders || hot.countColHeaders() === 0) {
131
+ return null;
132
+ }
133
+ bottomRow = -1;
134
+ }
135
+ if (endColumn < 0) {
136
+ if (!navigableHeaders || hot.countColHeaders() === 0) {
137
+ return null;
138
+ }
139
+ endColumn = -1;
140
+ }
141
+ return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
142
+ }
@@ -0,0 +1,138 @@
1
+ import { GRID_GROUP } from "../../shortcutContexts/index.mjs";
2
+ import { installFocusDetector } from "./focusDetector.mjs";
3
+ /**
4
+ * Installs a focus catcher module. The module observes when the table is focused and depending on
5
+ * from the which side it was focused on it selects a specified cell or releases the TAB navigation
6
+ * to the browser.
7
+ *
8
+ * @param {Core} hot The Handsontable instance.
9
+ */
10
+ export function installFocusCatcher(hot) {
11
+ let recentlyAddedFocusCoords;
12
+ const {
13
+ activate,
14
+ deactivate
15
+ } = installFocusDetector(hot, {
16
+ onFocusFromTop() {
17
+ var _recentlyAddedFocusCo;
18
+ const mostTopStartCoords = (_recentlyAddedFocusCo = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo !== void 0 ? _recentlyAddedFocusCo : getMostTopStartPosition(hot);
19
+ if (mostTopStartCoords) {
20
+ hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
21
+ hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
22
+ }
23
+ hot.listen();
24
+ },
25
+ onFocusFromBottom() {
26
+ var _recentlyAddedFocusCo2;
27
+ const mostBottomEndCoords = (_recentlyAddedFocusCo2 = recentlyAddedFocusCoords) !== null && _recentlyAddedFocusCo2 !== void 0 ? _recentlyAddedFocusCo2 : getMostBottomEndPosition(hot);
28
+ if (mostBottomEndCoords) {
29
+ hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
30
+ hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
31
+ }
32
+ hot.listen();
33
+ }
34
+ });
35
+ hot.addHook('afterListen', () => deactivate());
36
+ hot.addHook('afterUnlisten', () => activate());
37
+ hot.addHook('afterSelection', () => {
38
+ var _hot$getSelectedRange;
39
+ recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
40
+ });
41
+ hot.getShortcutManager().getContext('grid').addShortcut({
42
+ keys: [['Tab'], ['Shift', 'Tab']],
43
+ callback: event => {
44
+ var _hot$getSelectedRange2;
45
+ const {
46
+ disableTabNavigation,
47
+ autoWrapRow
48
+ } = hot.getSettings();
49
+ if (disableTabNavigation) {
50
+ hot.deselectCell();
51
+ hot.unlisten();
52
+ return false;
53
+ }
54
+ const isSelected = hot.selection.isSelected();
55
+ const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
56
+ const mostTopStartCoords = getMostTopStartPosition(hot);
57
+ const mostBottomEndCoords = getMostBottomEndPosition(hot);
58
+
59
+ // For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
60
+ if (!autoWrapRow) {
61
+ mostTopStartCoords.row = highlight.row;
62
+ mostBottomEndCoords.row = highlight.row;
63
+ }
64
+ if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
65
+ hot.deselectCell();
66
+ hot.unlisten();
67
+ return false;
68
+ }
69
+ return true;
70
+ },
71
+ runOnlyIf: () => !hot.getSettings().minSpareCols,
72
+ preventDefault: false,
73
+ stopPropagation: false,
74
+ position: 'before',
75
+ relativeToGroup: GRID_GROUP,
76
+ group: 'focusCatcher'
77
+ });
78
+ }
79
+
80
+ /**
81
+ * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
82
+ *
83
+ * @param {Core} hot The Handsontable instance.
84
+ * @returns {CellCoords|null}
85
+ */
86
+ function getMostTopStartPosition(hot) {
87
+ const {
88
+ rowIndexMapper,
89
+ columnIndexMapper
90
+ } = hot;
91
+ const {
92
+ navigableHeaders
93
+ } = hot.getSettings();
94
+ let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
95
+ let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
96
+ if (topRow === 0) {
97
+ topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
98
+ }
99
+ if (startColumn === 0) {
100
+ startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
101
+ }
102
+ if (topRow === null || startColumn === null) {
103
+ return null;
104
+ }
105
+ return hot._createCellCoords(topRow, startColumn);
106
+ }
107
+
108
+ /**
109
+ * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
110
+ *
111
+ * @param {Core} hot The Handsontable instance.
112
+ * @returns {CellCoords|null}
113
+ */
114
+ function getMostBottomEndPosition(hot) {
115
+ var _rowIndexMapper$getVi, _columnIndexMapper$ge;
116
+ const {
117
+ rowIndexMapper,
118
+ columnIndexMapper
119
+ } = hot;
120
+ const {
121
+ navigableHeaders
122
+ } = hot.getSettings();
123
+ let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
124
+ let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
125
+ if (bottomRow < 0) {
126
+ if (!navigableHeaders || hot.countColHeaders() === 0) {
127
+ return null;
128
+ }
129
+ bottomRow = -1;
130
+ }
131
+ if (endColumn < 0) {
132
+ if (!navigableHeaders || hot.countColHeaders() === 0) {
133
+ return null;
134
+ }
135
+ endColumn = -1;
136
+ }
137
+ return hot._createCellCoords((_rowIndexMapper$getVi = rowIndexMapper.getVisualFromRenderableIndex(bottomRow)) !== null && _rowIndexMapper$getVi !== void 0 ? _rowIndexMapper$getVi : bottomRow, (_columnIndexMapper$ge = columnIndexMapper.getVisualFromRenderableIndex(endColumn)) !== null && _columnIndexMapper$ge !== void 0 ? _columnIndexMapper$ge : endColumn);
138
+ }
package/core/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _focusCatcher = require("./focusCatcher");
5
+ Object.keys(_focusCatcher).forEach(function (key) {
6
+ if (key === "default" || key === "__esModule") return;
7
+ if (key in exports && exports[key] === _focusCatcher[key]) return;
8
+ exports[key] = _focusCatcher[key];
9
+ });
package/core/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export * from "./focusCatcher/index.mjs";
package/core.d.ts CHANGED
@@ -17,6 +17,7 @@ import { BaseValidator } from './validators/base';
17
17
  import { Plugins } from './plugins';
18
18
  import { CellType } from './cellTypes';
19
19
  import { ShortcutManager } from './shortcuts';
20
+ import { FocusManager } from './focusManager';
20
21
 
21
22
  type AlterActions = 'insert_row_above' | 'insert_row_below' |
22
23
  'insert_col_start' | 'insert_col_end' |
@@ -45,6 +46,8 @@ export default class Core {
45
46
  countSourceRows(): number;
46
47
  countVisibleCols(): number;
47
48
  countVisibleRows(): number;
49
+ countRowHeaders(): number;
50
+ countColHeaders(): number;
48
51
  deselectCell(): void;
49
52
  destroy(): void;
50
53
  destroyEditor(revertOriginal?: boolean, prepareEditorIfNeeded?: boolean): void;
@@ -75,6 +78,7 @@ export default class Core {
75
78
  getDataAtRowProp(row: number, prop: string): CellValue;
76
79
  getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): CellType | 'mixed';
77
80
  getDirectionFactor(): 1 | -1;
81
+ getFocusManager(): FocusManager;
78
82
  getInstance(): Core;
79
83
  getPlugin<T extends keyof Plugins>(pluginName: T): Plugins[T];
80
84
  getPlugin(pluginName: string): Plugins['basePlugin'];
@@ -128,13 +132,14 @@ export default class Core {
128
132
  rootWindow: Window;
129
133
  rowIndexMapper: IndexMapper;
130
134
  runHooks(key: keyof Events, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any;
131
- scrollViewportTo(row?: number, column?: number, snapToBottom?: boolean, snapToRight?: boolean, considerHiddenIndexes?: boolean): boolean;
132
- selectAll(): void;
135
+ scrollViewportTo(options: { row?: number, col?: number, verticalSnap?: 'top' | 'bottom', horizontalSnap?: 'start' | 'end', considerHiddenIndexes?: boolean }): boolean;
136
+ scrollToFocusedCell(callback?: () => void): void;
137
+ selectAll(includeRowHeaders?: boolean, includeColumnHeaders?: boolean, options?: { focusPosition?: { row: number, col: number }, disableHeadersHighlight?: boolean }): void;
133
138
  selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean;
134
139
  selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean;
135
140
  selectCells(coords: Array<[number, number | string, number, number | string]> | CellRange[], scrollToCell?: boolean, changeListener?: boolean): boolean;
136
- selectColumns(startColumn: number | string, endColumn?: number | string): boolean;
137
- selectRows(startRow: number, endRow?: number): boolean;
141
+ selectColumns(startColumn: number | string, endColumn?: number | string, focusPosition?: number): boolean;
142
+ selectRows(startRow: number, endRow?: number, focusPosition?: number): boolean;
138
143
  setCellMeta(row: number, col: number, key: string, val: any): void;
139
144
  setCellMeta<K extends keyof CellMeta>(row: number, col: number, key: K, val: CellMeta[K]): void;
140
145
  setCellMetaObject(row: number, col: number, prop: CellMeta): void;