handsontable 16.0.1 → 16.1.0-next-91b8a0f-20250905

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/3rdparty/walkontable/src/overlays.js +12 -2
  2. package/3rdparty/walkontable/src/overlays.mjs +12 -2
  3. package/3rdparty/walkontable/src/viewport.js +2 -6
  4. package/3rdparty/walkontable/src/viewport.mjs +2 -6
  5. package/CHANGELOG.md +37 -0
  6. package/base.js +2 -2
  7. package/base.mjs +2 -2
  8. package/cellTypes/autocompleteType/accessors/index.js +7 -0
  9. package/cellTypes/autocompleteType/accessors/index.mjs +2 -0
  10. package/cellTypes/autocompleteType/accessors/valueGetter.js +14 -0
  11. package/cellTypes/autocompleteType/accessors/valueGetter.mjs +10 -0
  12. package/cellTypes/autocompleteType/accessors/valueSetter.js +25 -0
  13. package/cellTypes/autocompleteType/accessors/valueSetter.mjs +21 -0
  14. package/cellTypes/autocompleteType/autocompleteType.js +4 -1
  15. package/cellTypes/autocompleteType/autocompleteType.mjs +4 -1
  16. package/cellTypes/checkboxType/accessors/index.js +5 -0
  17. package/cellTypes/checkboxType/accessors/index.mjs +1 -0
  18. package/cellTypes/checkboxType/accessors/valueSetter.js +26 -0
  19. package/cellTypes/checkboxType/accessors/valueSetter.mjs +22 -0
  20. package/cellTypes/checkboxType/checkboxType.js +3 -1
  21. package/cellTypes/checkboxType/checkboxType.mjs +3 -1
  22. package/cellTypes/dropdownType/accessors/index.js +7 -0
  23. package/cellTypes/dropdownType/accessors/index.mjs +2 -0
  24. package/cellTypes/dropdownType/accessors/valueGetter.js +14 -0
  25. package/cellTypes/dropdownType/accessors/valueGetter.mjs +10 -0
  26. package/cellTypes/dropdownType/accessors/valueSetter.js +17 -0
  27. package/cellTypes/dropdownType/accessors/valueSetter.mjs +13 -0
  28. package/cellTypes/dropdownType/dropdownType.js +4 -1
  29. package/cellTypes/dropdownType/dropdownType.mjs +4 -1
  30. package/cellTypes/numericType/accessors/index.js +5 -0
  31. package/cellTypes/numericType/accessors/index.mjs +1 -0
  32. package/cellTypes/numericType/accessors/valueSetter.js +19 -0
  33. package/cellTypes/numericType/accessors/valueSetter.mjs +15 -0
  34. package/cellTypes/numericType/numericType.js +3 -1
  35. package/cellTypes/numericType/numericType.mjs +3 -1
  36. package/core/focusCatcher/index.js +37 -112
  37. package/core/focusCatcher/index.mjs +35 -110
  38. package/core/focusCatcher/utils.js +31 -0
  39. package/core/focusCatcher/utils.mjs +27 -0
  40. package/core/hooks/constants.js +242 -0
  41. package/core/hooks/constants.mjs +242 -0
  42. package/core/hooks/index.d.ts +22 -0
  43. package/core/viewportScroll/scrollStrategies/focusScroll.js +5 -1
  44. package/core/viewportScroll/scrollStrategies/focusScroll.mjs +5 -1
  45. package/core/viewportScroll/utils.js +1 -1
  46. package/core/viewportScroll/utils.mjs +1 -1
  47. package/core.d.ts +4 -0
  48. package/core.js +237 -139
  49. package/core.mjs +240 -142
  50. package/dataMap/dataMap.js +13 -3
  51. package/dataMap/dataMap.mjs +14 -4
  52. package/dataMap/dataSource.js +16 -0
  53. package/dataMap/dataSource.mjs +16 -0
  54. package/dataMap/metaManager/lazyFactoryMap.js +4 -3
  55. package/dataMap/metaManager/lazyFactoryMap.mjs +2 -1
  56. package/dataMap/metaManager/metaLayers/cellMeta.js +3 -2
  57. package/dataMap/metaManager/metaLayers/cellMeta.mjs +3 -2
  58. package/dataMap/metaManager/metaSchema.js +289 -4
  59. package/dataMap/metaManager/metaSchema.mjs +289 -4
  60. package/dataMap/metaManager/utils.js +0 -11
  61. package/dataMap/metaManager/utils.mjs +0 -10
  62. package/dataMap/replaceData.js +1 -0
  63. package/dataMap/replaceData.mjs +1 -0
  64. package/dist/handsontable.css +281 -4
  65. package/dist/handsontable.full.css +281 -4
  66. package/dist/handsontable.full.js +7842 -2990
  67. package/dist/handsontable.full.min.css +4 -5
  68. package/dist/handsontable.full.min.js +167 -165
  69. package/dist/handsontable.js +9638 -4807
  70. package/dist/handsontable.min.css +4 -4
  71. package/dist/handsontable.min.js +52 -50
  72. package/dist/languages/all.js +231 -21
  73. package/dist/languages/all.min.js +1 -1
  74. package/dist/languages/ar-AR.js +11 -1
  75. package/dist/languages/ar-AR.min.js +1 -1
  76. package/dist/languages/cs-CZ.js +11 -1
  77. package/dist/languages/cs-CZ.min.js +1 -1
  78. package/dist/languages/de-CH.js +11 -1
  79. package/dist/languages/de-CH.min.js +1 -1
  80. package/dist/languages/de-DE.js +11 -1
  81. package/dist/languages/de-DE.min.js +1 -1
  82. package/dist/languages/en-US.js +11 -1
  83. package/dist/languages/en-US.min.js +1 -1
  84. package/dist/languages/es-MX.js +11 -1
  85. package/dist/languages/es-MX.min.js +1 -1
  86. package/dist/languages/fa-IR.js +11 -1
  87. package/dist/languages/fa-IR.min.js +1 -1
  88. package/dist/languages/fr-FR.js +11 -1
  89. package/dist/languages/fr-FR.min.js +1 -1
  90. package/dist/languages/hr-HR.js +11 -1
  91. package/dist/languages/hr-HR.min.js +1 -1
  92. package/dist/languages/it-IT.js +11 -1
  93. package/dist/languages/it-IT.min.js +1 -1
  94. package/dist/languages/ja-JP.js +11 -1
  95. package/dist/languages/ja-JP.min.js +1 -1
  96. package/dist/languages/ko-KR.js +11 -1
  97. package/dist/languages/ko-KR.min.js +1 -1
  98. package/dist/languages/lv-LV.js +11 -1
  99. package/dist/languages/lv-LV.min.js +1 -1
  100. package/dist/languages/nb-NO.js +11 -1
  101. package/dist/languages/nb-NO.min.js +1 -1
  102. package/dist/languages/nl-NL.js +11 -1
  103. package/dist/languages/nl-NL.min.js +1 -1
  104. package/dist/languages/pl-PL.js +11 -1
  105. package/dist/languages/pl-PL.min.js +1 -1
  106. package/dist/languages/pt-BR.js +11 -1
  107. package/dist/languages/pt-BR.min.js +1 -1
  108. package/dist/languages/ru-RU.js +11 -1
  109. package/dist/languages/ru-RU.min.js +1 -1
  110. package/dist/languages/sr-SP.js +11 -1
  111. package/dist/languages/sr-SP.min.js +1 -1
  112. package/dist/languages/zh-CN.js +11 -1
  113. package/dist/languages/zh-CN.min.js +1 -1
  114. package/dist/languages/zh-TW.js +11 -1
  115. package/dist/languages/zh-TW.min.js +1 -1
  116. package/editorManager.js +4 -4
  117. package/editorManager.mjs +4 -4
  118. package/editors/autocompleteEditor/autocompleteEditor.js +50 -112
  119. package/editors/autocompleteEditor/autocompleteEditor.mjs +51 -113
  120. package/editors/baseEditor/baseEditor.js +10 -6
  121. package/editors/baseEditor/baseEditor.mjs +10 -6
  122. package/editors/handsontableEditor/handsontableEditor.js +9 -9
  123. package/editors/handsontableEditor/handsontableEditor.mjs +9 -9
  124. package/editors/textEditor/textEditor.js +0 -7
  125. package/editors/textEditor/textEditor.mjs +0 -7
  126. package/focusManager.js +2 -2
  127. package/focusManager.mjs +2 -2
  128. package/helpers/a11y.js +15 -2
  129. package/helpers/a11y.mjs +10 -2
  130. package/helpers/console.js +12 -0
  131. package/helpers/console.mjs +11 -0
  132. package/helpers/dom/element.js +4 -4
  133. package/helpers/dom/element.mjs +4 -4
  134. package/helpers/mixed.js +65 -2
  135. package/helpers/mixed.mjs +63 -2
  136. package/helpers/number.js +28 -0
  137. package/helpers/number.mjs +26 -0
  138. package/helpers/object.js +35 -0
  139. package/helpers/object.mjs +34 -0
  140. package/helpers/string.js +19 -0
  141. package/helpers/string.mjs +18 -0
  142. package/helpers/templateLiteralTag.js +57 -1
  143. package/helpers/templateLiteralTag.mjs +56 -1
  144. package/i18n/constants.js +13 -1
  145. package/i18n/constants.mjs +13 -1
  146. package/i18n/languages/ar-AR.js +11 -1
  147. package/i18n/languages/ar-AR.mjs +11 -1
  148. package/i18n/languages/cs-CZ.js +11 -1
  149. package/i18n/languages/cs-CZ.mjs +11 -1
  150. package/i18n/languages/de-CH.js +11 -1
  151. package/i18n/languages/de-CH.mjs +11 -1
  152. package/i18n/languages/de-DE.js +11 -1
  153. package/i18n/languages/de-DE.mjs +11 -1
  154. package/i18n/languages/en-US.js +11 -1
  155. package/i18n/languages/en-US.mjs +11 -1
  156. package/i18n/languages/es-MX.js +11 -1
  157. package/i18n/languages/es-MX.mjs +11 -1
  158. package/i18n/languages/fa-IR.js +11 -1
  159. package/i18n/languages/fa-IR.mjs +11 -1
  160. package/i18n/languages/fr-FR.js +11 -1
  161. package/i18n/languages/fr-FR.mjs +11 -1
  162. package/i18n/languages/hr-HR.js +11 -1
  163. package/i18n/languages/hr-HR.mjs +11 -1
  164. package/i18n/languages/it-IT.js +11 -1
  165. package/i18n/languages/it-IT.mjs +11 -1
  166. package/i18n/languages/ja-JP.js +11 -1
  167. package/i18n/languages/ja-JP.mjs +11 -1
  168. package/i18n/languages/ko-KR.js +11 -1
  169. package/i18n/languages/ko-KR.mjs +11 -1
  170. package/i18n/languages/lv-LV.js +11 -1
  171. package/i18n/languages/lv-LV.mjs +11 -1
  172. package/i18n/languages/nb-NO.js +11 -1
  173. package/i18n/languages/nb-NO.mjs +11 -1
  174. package/i18n/languages/nl-NL.js +11 -1
  175. package/i18n/languages/nl-NL.mjs +11 -1
  176. package/i18n/languages/pl-PL.js +11 -1
  177. package/i18n/languages/pl-PL.mjs +11 -1
  178. package/i18n/languages/pt-BR.js +11 -1
  179. package/i18n/languages/pt-BR.mjs +11 -1
  180. package/i18n/languages/ru-RU.js +11 -1
  181. package/i18n/languages/ru-RU.mjs +11 -1
  182. package/i18n/languages/sr-SP.js +11 -1
  183. package/i18n/languages/sr-SP.mjs +11 -1
  184. package/i18n/languages/zh-CN.js +11 -1
  185. package/i18n/languages/zh-CN.mjs +11 -1
  186. package/i18n/languages/zh-TW.js +11 -1
  187. package/i18n/languages/zh-TW.mjs +11 -1
  188. package/i18n/phraseFormatters/index.js +3 -1
  189. package/i18n/phraseFormatters/index.mjs +3 -1
  190. package/i18n/registry.js +5 -6
  191. package/i18n/registry.mjs +5 -6
  192. package/index.d.ts +27 -0
  193. package/languages/all.js +231 -21
  194. package/languages/ar-AR.js +11 -1
  195. package/languages/ar-AR.mjs +11 -1
  196. package/languages/cs-CZ.js +11 -1
  197. package/languages/cs-CZ.mjs +11 -1
  198. package/languages/de-CH.js +11 -1
  199. package/languages/de-CH.mjs +11 -1
  200. package/languages/de-DE.js +11 -1
  201. package/languages/de-DE.mjs +11 -1
  202. package/languages/en-US.js +11 -1
  203. package/languages/en-US.mjs +11 -1
  204. package/languages/es-MX.js +11 -1
  205. package/languages/es-MX.mjs +11 -1
  206. package/languages/fa-IR.js +11 -1
  207. package/languages/fa-IR.mjs +11 -1
  208. package/languages/fr-FR.js +11 -1
  209. package/languages/fr-FR.mjs +11 -1
  210. package/languages/hr-HR.js +11 -1
  211. package/languages/hr-HR.mjs +11 -1
  212. package/languages/index.js +231 -21
  213. package/languages/it-IT.js +11 -1
  214. package/languages/it-IT.mjs +11 -1
  215. package/languages/ja-JP.js +11 -1
  216. package/languages/ja-JP.mjs +11 -1
  217. package/languages/ko-KR.js +11 -1
  218. package/languages/ko-KR.mjs +11 -1
  219. package/languages/lv-LV.js +11 -1
  220. package/languages/lv-LV.mjs +11 -1
  221. package/languages/nb-NO.js +11 -1
  222. package/languages/nb-NO.mjs +11 -1
  223. package/languages/nl-NL.js +11 -1
  224. package/languages/nl-NL.mjs +11 -1
  225. package/languages/pl-PL.js +11 -1
  226. package/languages/pl-PL.mjs +11 -1
  227. package/languages/pt-BR.js +11 -1
  228. package/languages/pt-BR.mjs +11 -1
  229. package/languages/ru-RU.js +11 -1
  230. package/languages/ru-RU.mjs +11 -1
  231. package/languages/sr-SP.js +11 -1
  232. package/languages/sr-SP.mjs +11 -1
  233. package/languages/zh-CN.js +11 -1
  234. package/languages/zh-CN.mjs +11 -1
  235. package/languages/zh-TW.js +11 -1
  236. package/languages/zh-TW.mjs +11 -1
  237. package/mixins/localHooks.js +16 -0
  238. package/mixins/localHooks.mjs +16 -0
  239. package/package.json +19 -1
  240. package/plugins/autoRowSize/autoRowSize.js +43 -6
  241. package/plugins/autoRowSize/autoRowSize.mjs +43 -6
  242. package/plugins/autofill/autofill.js +50 -3
  243. package/plugins/autofill/autofill.mjs +50 -3
  244. package/plugins/base/base.js +86 -15
  245. package/plugins/base/base.mjs +87 -16
  246. package/plugins/collapsibleColumns/collapsibleColumns.js +4 -4
  247. package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -4
  248. package/plugins/columnSorting/columnSorting.js +3 -3
  249. package/plugins/columnSorting/columnSorting.mjs +3 -3
  250. package/plugins/comments/comments.js +52 -22
  251. package/plugins/comments/comments.mjs +52 -22
  252. package/plugins/comments/contextMenuItem/addEditComment.js +3 -3
  253. package/plugins/comments/contextMenuItem/addEditComment.mjs +3 -3
  254. package/plugins/comments/contextMenuItem/readOnlyComment.js +2 -2
  255. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +2 -2
  256. package/plugins/comments/contextMenuItem/removeComment.js +2 -2
  257. package/plugins/comments/contextMenuItem/removeComment.mjs +2 -2
  258. package/plugins/contextMenu/contextMenu.js +4 -5
  259. package/plugins/contextMenu/contextMenu.mjs +4 -5
  260. package/plugins/contextMenu/menu/cursor.js +1 -1
  261. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  262. package/plugins/contextMenu/menu/defaultShortcutsList.js +5 -5
  263. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +5 -5
  264. package/plugins/contextMenu/menu/menu.js +3 -3
  265. package/plugins/contextMenu/menu/menu.mjs +3 -3
  266. package/plugins/contextMenu/menu/positioner.js +1 -1
  267. package/plugins/contextMenu/menu/positioner.mjs +1 -1
  268. package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
  269. package/plugins/contextMenu/predefinedItems/alignment.mjs +1 -1
  270. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  271. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
  272. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -3
  273. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -3
  274. package/plugins/contextMenu/predefinedItems/columnRight.js +3 -3
  275. package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -3
  276. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
  277. package/plugins/contextMenu/predefinedItems/readOnly.mjs +1 -1
  278. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
  279. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -1
  280. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
  281. package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -1
  282. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -3
  283. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -3
  284. package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -3
  285. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -3
  286. package/plugins/copyPaste/contextMenuItem/copy.js +1 -1
  287. package/plugins/copyPaste/contextMenuItem/copy.mjs +1 -1
  288. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +3 -3
  289. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +3 -3
  290. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +3 -3
  291. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +3 -3
  292. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +3 -3
  293. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +3 -3
  294. package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
  295. package/plugins/copyPaste/contextMenuItem/cut.mjs +1 -1
  296. package/plugins/copyPaste/copyPaste.js +75 -40
  297. package/plugins/copyPaste/copyPaste.mjs +76 -41
  298. package/plugins/customBorders/customBorders.js +1 -1
  299. package/plugins/customBorders/customBorders.mjs +1 -1
  300. package/plugins/dialog/dialog.d.ts +23 -0
  301. package/plugins/dialog/dialog.js +489 -0
  302. package/plugins/dialog/dialog.mjs +485 -0
  303. package/plugins/dialog/index.d.ts +1 -0
  304. package/plugins/dialog/index.js +7 -0
  305. package/plugins/dialog/index.mjs +1 -0
  306. package/plugins/dialog/ui.js +264 -0
  307. package/plugins/dialog/ui.mjs +259 -0
  308. package/plugins/dropdownMenu/dropdownMenu.js +5 -4
  309. package/plugins/dropdownMenu/dropdownMenu.mjs +5 -4
  310. package/plugins/filters/filters.js +2 -2
  311. package/plugins/filters/filters.mjs +2 -2
  312. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +3 -3
  313. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +3 -3
  314. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +4 -4
  315. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +4 -4
  316. package/plugins/hiddenRows/contextMenuItem/hideRow.js +3 -3
  317. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +3 -3
  318. package/plugins/hiddenRows/contextMenuItem/showRow.js +4 -4
  319. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +4 -4
  320. package/plugins/index.d.ts +9 -0
  321. package/plugins/index.js +9 -0
  322. package/plugins/index.mjs +7 -1
  323. package/plugins/loading/content.js +36 -0
  324. package/plugins/loading/content.mjs +31 -0
  325. package/plugins/loading/index.d.ts +1 -0
  326. package/plugins/loading/index.js +7 -0
  327. package/plugins/loading/index.mjs +1 -0
  328. package/plugins/loading/loading.d.ts +19 -0
  329. package/plugins/loading/loading.js +290 -0
  330. package/plugins/loading/loading.mjs +285 -0
  331. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  332. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  333. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  334. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  335. package/plugins/manualColumnMove/manualColumnMove.js +3 -3
  336. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -3
  337. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  338. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  339. package/plugins/manualRowMove/manualRowMove.js +4 -4
  340. package/plugins/manualRowMove/manualRowMove.mjs +4 -4
  341. package/plugins/manualRowResize/manualRowResize.js +5 -2
  342. package/plugins/manualRowResize/manualRowResize.mjs +5 -2
  343. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +15 -15
  344. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +15 -15
  345. package/plugins/mergeCells/focusOrder.js +75 -39
  346. package/plugins/mergeCells/focusOrder.mjs +75 -39
  347. package/plugins/mergeCells/mergeCells.js +26 -19
  348. package/plugins/mergeCells/mergeCells.mjs +26 -19
  349. package/plugins/mergeCells/renderer.js +14 -8
  350. package/plugins/mergeCells/renderer.mjs +14 -8
  351. package/plugins/multiColumnSorting/multiColumnSorting.js +3 -3
  352. package/plugins/multiColumnSorting/multiColumnSorting.mjs +3 -3
  353. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +3 -3
  354. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +3 -3
  355. package/plugins/nestedHeaders/nestedHeaders.js +47 -41
  356. package/plugins/nestedHeaders/nestedHeaders.mjs +47 -41
  357. package/plugins/nestedRows/nestedRows.js +3 -3
  358. package/plugins/nestedRows/nestedRows.mjs +3 -3
  359. package/plugins/nestedRows/ui/collapsing.js +1 -2
  360. package/plugins/nestedRows/ui/collapsing.mjs +1 -2
  361. package/plugins/nestedRows/ui/contextMenu.js +4 -4
  362. package/plugins/nestedRows/ui/contextMenu.mjs +4 -4
  363. package/plugins/nestedRows/ui/headers.js +4 -1
  364. package/plugins/nestedRows/ui/headers.mjs +4 -1
  365. package/plugins/pagination/focusController.js +27 -0
  366. package/plugins/pagination/focusController.mjs +23 -0
  367. package/plugins/pagination/index.d.ts +1 -0
  368. package/plugins/pagination/index.js +7 -0
  369. package/plugins/pagination/index.mjs +1 -0
  370. package/plugins/pagination/pagination.d.ts +52 -0
  371. package/plugins/pagination/pagination.js +1034 -0
  372. package/plugins/pagination/pagination.mjs +1030 -0
  373. package/plugins/pagination/strategies/autoPageSize.js +96 -0
  374. package/plugins/pagination/strategies/autoPageSize.mjs +92 -0
  375. package/plugins/pagination/strategies/fixedPageSize.js +88 -0
  376. package/plugins/pagination/strategies/fixedPageSize.mjs +84 -0
  377. package/plugins/pagination/strategies/index.js +22 -0
  378. package/plugins/pagination/strategies/index.mjs +18 -0
  379. package/plugins/pagination/ui.js +449 -0
  380. package/plugins/pagination/ui.mjs +443 -0
  381. package/plugins/pagination/utils.js +28 -0
  382. package/plugins/pagination/utils.mjs +24 -0
  383. package/plugins/stretchColumns/calculator.js +4 -0
  384. package/plugins/stretchColumns/calculator.mjs +4 -0
  385. package/plugins/stretchColumns/stretchColumns.js +1 -1
  386. package/plugins/stretchColumns/stretchColumns.mjs +1 -1
  387. package/plugins/undoRedo/actions/dataChange.js +17 -15
  388. package/plugins/undoRedo/actions/dataChange.mjs +17 -15
  389. package/renderers/checkboxRenderer/checkboxRenderer.js +3 -3
  390. package/renderers/checkboxRenderer/checkboxRenderer.mjs +3 -3
  391. package/selection/range.js +11 -0
  392. package/selection/range.mjs +11 -0
  393. package/selection/selection.js +163 -124
  394. package/selection/selection.mjs +163 -124
  395. package/selection/transformation/_base.js +448 -0
  396. package/selection/transformation/_base.mjs +443 -0
  397. package/selection/transformation/extender.js +55 -0
  398. package/selection/transformation/extender.mjs +51 -0
  399. package/selection/transformation/focus.js +77 -0
  400. package/selection/transformation/focus.mjs +73 -0
  401. package/selection/transformation/index.js +7 -0
  402. package/selection/transformation/index.mjs +2 -0
  403. package/selection/utils.js +2 -1
  404. package/selection/utils.mjs +2 -1
  405. package/settings.d.ts +10 -1
  406. package/shortcutContexts/commands/editor/fastOpen.js +1 -1
  407. package/shortcutContexts/commands/editor/fastOpen.mjs +1 -1
  408. package/shortcutContexts/commands/editor/open.js +10 -4
  409. package/shortcutContexts/commands/editor/open.mjs +10 -4
  410. package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
  411. package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
  412. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +2 -2
  413. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +2 -2
  414. package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
  415. package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
  416. package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
  417. package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
  418. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
  419. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
  420. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +1 -1
  421. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +1 -1
  422. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +1 -1
  423. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +1 -1
  424. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +1 -1
  425. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +1 -1
  426. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +1 -1
  427. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +1 -1
  428. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +1 -1
  429. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +1 -1
  430. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +1 -1
  431. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +1 -1
  432. package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
  433. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
  434. package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
  435. package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
  436. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +2 -2
  437. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +2 -2
  438. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +2 -2
  439. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +2 -2
  440. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +5 -2
  441. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +5 -2
  442. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +5 -2
  443. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +5 -2
  444. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +1 -1
  445. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +1 -1
  446. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +1 -1
  447. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +1 -1
  448. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +1 -1
  449. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +1 -1
  450. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +1 -1
  451. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +1 -1
  452. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +1 -1
  453. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +1 -1
  454. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +1 -1
  455. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +1 -1
  456. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +2 -2
  457. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +2 -2
  458. package/shortcutContexts/commands/scrollToFocusedCell.js +1 -1
  459. package/shortcutContexts/commands/scrollToFocusedCell.mjs +1 -1
  460. package/shortcutContexts/grid.js +3 -3
  461. package/shortcutContexts/grid.mjs +3 -3
  462. package/shortcuts/context.js +4 -1
  463. package/shortcuts/context.mjs +4 -1
  464. package/shortcuts/manager.js +17 -3
  465. package/shortcuts/manager.mjs +17 -3
  466. package/styles/handsontable.css +288 -22
  467. package/styles/handsontable.min.css +3 -3
  468. package/styles/ht-theme-classic.css +828 -0
  469. package/styles/ht-theme-classic.min.css +30 -0
  470. package/styles/ht-theme-horizon.css +122 -26
  471. package/styles/ht-theme-horizon.min.css +3 -3
  472. package/styles/ht-theme-main.css +124 -28
  473. package/styles/ht-theme-main.min.css +3 -3
  474. package/tableView.js +61 -25
  475. package/tableView.mjs +61 -25
  476. package/utils/a11yAnnouncer.js +70 -0
  477. package/utils/a11yAnnouncer.mjs +64 -0
  478. package/{core/focusCatcher → utils}/focusDetector.js +30 -12
  479. package/{core/focusCatcher → utils}/focusDetector.mjs +30 -12
  480. package/utils/samplesGenerator.js +17 -1
  481. package/utils/samplesGenerator.mjs +17 -1
  482. package/utils/stylesHandler.js +23 -8
  483. package/utils/stylesHandler.mjs +23 -8
  484. package/utils/valueAccessors.js +45 -0
  485. package/utils/valueAccessors.mjs +40 -0
  486. package/validators/autocompleteValidator/autocompleteValidator.js +2 -1
  487. package/validators/autocompleteValidator/autocompleteValidator.mjs +2 -1
  488. package/selection/transformation.js +0 -335
  489. package/selection/transformation.mjs +0 -331
@@ -3,7 +3,9 @@
3
3
  exports.__esModule = true;
4
4
  exports.installFocusCatcher = installFocusCatcher;
5
5
  var _shortcutContexts = require("../../shortcutContexts");
6
- var _focusDetector = require("./focusDetector");
6
+ var _focusDetector = require("../../utils/focusDetector");
7
+ var _utils = require("./utils");
8
+ var _mixed = require("../../helpers/mixed");
7
9
  /**
8
10
  * Installs a focus catcher module. The module observes when the table is focused and depending on
9
11
  * from the which side it was focused on it selects a specified cell or releases the TAB navigation
@@ -12,27 +14,27 @@ var _focusDetector = require("./focusDetector");
12
14
  * @param {Core} hot The Handsontable instance.
13
15
  */
14
16
  function installFocusCatcher(hot) {
15
- const clampCoordsIfNeeded = normalizeCoordsIfNeeded(hot);
17
+ const clampCoordsIfNeeded = (0, _utils.normalizeCoordsIfNeeded)(hot);
16
18
  let recentlyAddedFocusCoords;
17
19
  const {
18
20
  activate,
19
21
  deactivate
20
- } = (0, _focusDetector.installFocusDetector)(hot, {
21
- onFocusFromTop() {
22
- var _clampCoordsIfNeeded;
23
- const mostTopStartCoords = (_clampCoordsIfNeeded = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded !== void 0 ? _clampCoordsIfNeeded : getMostTopStartPosition(hot);
24
- if (mostTopStartCoords) {
25
- hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
26
- hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
27
- }
28
- hot.listen();
29
- },
30
- onFocusFromBottom() {
31
- var _clampCoordsIfNeeded2;
32
- const mostBottomEndCoords = (_clampCoordsIfNeeded2 = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded2 !== void 0 ? _clampCoordsIfNeeded2 : getMostBottomEndPosition(hot);
33
- if (mostBottomEndCoords) {
34
- hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
35
- hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
22
+ } = (0, _focusDetector.installFocusDetector)(hot, hot.rootGridElement, {
23
+ onFocus(from) {
24
+ if (from === 'from_above') {
25
+ var _clampCoordsIfNeeded;
26
+ const mostTopStartCoords = (_clampCoordsIfNeeded = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded !== void 0 ? _clampCoordsIfNeeded : (0, _mixed.getMostTopStartPosition)(hot);
27
+ const result = hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
28
+ if (mostTopStartCoords && result !== false) {
29
+ hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
30
+ }
31
+ } else {
32
+ var _clampCoordsIfNeeded2;
33
+ const mostBottomEndCoords = (_clampCoordsIfNeeded2 = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded2 !== void 0 ? _clampCoordsIfNeeded2 : (0, _mixed.getMostBottomEndPosition)(hot);
34
+ const result = hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
35
+ if (mostBottomEndCoords && result !== false) {
36
+ hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
37
+ }
36
38
  }
37
39
  hot.listen();
38
40
  }
@@ -44,8 +46,20 @@ function installFocusCatcher(hot) {
44
46
  let isSavingCoordsEnabled = true;
45
47
  let isTabOrShiftTabPressed = false;
46
48
  let preventViewportScroll = false;
47
- hot.addHook('afterListen', () => deactivate());
48
- hot.addHook('afterUnlisten', () => activate());
49
+ hot.addHook('afterListen', () => {
50
+ const activeContextName = hot.getShortcutManager().getActiveContextName();
51
+ const activeContext = hot.getShortcutManager().getContext(activeContextName);
52
+ if ((activeContext === null || activeContext === void 0 ? void 0 : activeContext.scope) === 'table') {
53
+ deactivate();
54
+ }
55
+ });
56
+ hot.addHook('afterUnlisten', () => {
57
+ const activeContextName = hot.getShortcutManager().getActiveContextName();
58
+ const activeContext = hot.getShortcutManager().getContext(activeContextName);
59
+ if ((activeContext === null || activeContext === void 0 ? void 0 : activeContext.scope) === 'table') {
60
+ activate();
61
+ }
62
+ });
49
63
  hot.addHook('afterSelection', (row, column, row2, column2, preventScrolling) => {
50
64
  if (isTabOrShiftTabPressed && (rowWrapState.wrapped && rowWrapState.flipped || preventViewportScroll)) {
51
65
  preventViewportScroll = false;
@@ -53,7 +67,7 @@ function installFocusCatcher(hot) {
53
67
  }
54
68
  if (isSavingCoordsEnabled) {
55
69
  var _hot$getSelectedRange;
56
- recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
70
+ recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeActive()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
57
71
  }
58
72
  });
59
73
  hot.addHook('beforeRowWrap', (interruptedByAutoInsertMode, newCoords, isFlipped) => {
@@ -84,7 +98,7 @@ function installFocusCatcher(hot) {
84
98
  tabNavigation
85
99
  } = hot.getSettings();
86
100
  isTabOrShiftTabPressed = true;
87
- if (hot.getSelectedRangeLast() && !tabNavigation) {
101
+ if (hot.getSelectedRangeActive() && !tabNavigation) {
88
102
  isSavingCoordsEnabled = false;
89
103
  }
90
104
  if (!tabNavigation) {
@@ -103,7 +117,7 @@ function installFocusCatcher(hot) {
103
117
  isSavingCoordsEnabled = true;
104
118
  if (!tabNavigation || !hot.selection.isSelected() || autoWrapRow && rowWrapState.wrapped && rowWrapState.flipped || !autoWrapRow && rowWrapState.wrapped) {
105
119
  if (autoWrapRow && rowWrapState.wrapped && rowWrapState.flipped) {
106
- recentlyAddedFocusCoords = event.shiftKey ? getMostTopStartPosition(hot) : getMostBottomEndPosition(hot);
120
+ recentlyAddedFocusCoords = event.shiftKey ? (0, _mixed.getMostTopStartPosition)(hot) : (0, _mixed.getMostBottomEndPosition)(hot);
107
121
  }
108
122
  deactivateTable();
109
123
  return false;
@@ -114,93 +128,4 @@ function installFocusCatcher(hot) {
114
128
  },
115
129
  position: 'after'
116
130
  }]);
117
- }
118
-
119
- /**
120
- * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
121
- *
122
- * @param {Core} hot The Handsontable instance.
123
- * @returns {CellCoords|null}
124
- */
125
- function getMostTopStartPosition(hot) {
126
- const {
127
- rowIndexMapper,
128
- columnIndexMapper
129
- } = hot;
130
- const {
131
- navigableHeaders
132
- } = hot.getSettings();
133
- let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
134
- let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
135
- if (topRow === 0) {
136
- topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
137
- }
138
- if (startColumn === 0) {
139
- startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
140
- }
141
- if (topRow === null || startColumn === null) {
142
- return null;
143
- }
144
- return hot._createCellCoords(topRow, startColumn);
145
- }
146
-
147
- /**
148
- * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
149
- *
150
- * @param {Core} hot The Handsontable instance.
151
- * @returns {CellCoords|null}
152
- */
153
- function getMostBottomEndPosition(hot) {
154
- var _rowIndexMapper$getVi, _columnIndexMapper$ge;
155
- const {
156
- rowIndexMapper,
157
- columnIndexMapper
158
- } = hot;
159
- const {
160
- navigableHeaders
161
- } = hot.getSettings();
162
- let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
163
- let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
164
- if (bottomRow < 0) {
165
- if (!navigableHeaders || hot.countColHeaders() === 0) {
166
- return null;
167
- }
168
- bottomRow = -1;
169
- }
170
- if (endColumn < 0) {
171
- if (!navigableHeaders || hot.countColHeaders() === 0) {
172
- return null;
173
- }
174
- endColumn = -1;
175
- }
176
- 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);
177
- }
178
-
179
- /**
180
- * Normalizes the coordinates (clamps to nearest visible cell position within dataset range).
181
- *
182
- * @param {Core} hot The Handsontable instance.
183
- * @returns {function(Coords | undefined): Coords | null}
184
- */
185
- function normalizeCoordsIfNeeded(hot) {
186
- return coords => {
187
- if (!coords) {
188
- return null;
189
- }
190
- const mostTopStartCoords = getMostTopStartPosition(hot);
191
- const mostBottomEndCoords = getMostBottomEndPosition(hot);
192
- if (coords.col < mostTopStartCoords.col) {
193
- coords.col = mostTopStartCoords.col;
194
- }
195
- if (coords.col > mostBottomEndCoords.col) {
196
- coords.col = mostBottomEndCoords.col;
197
- }
198
- if (coords.row < mostTopStartCoords.row) {
199
- coords.row = mostTopStartCoords.row;
200
- }
201
- if (coords.row > mostBottomEndCoords.row) {
202
- coords.row = mostBottomEndCoords.row;
203
- }
204
- return coords;
205
- };
206
131
  }
@@ -1,5 +1,7 @@
1
1
  import { GRID_GROUP } from "../../shortcutContexts/index.mjs";
2
- import { installFocusDetector } from "./focusDetector.mjs";
2
+ import { installFocusDetector } from "../../utils/focusDetector.mjs";
3
+ import { normalizeCoordsIfNeeded } from "./utils.mjs";
4
+ import { getMostTopStartPosition, getMostBottomEndPosition } from "../../helpers/mixed.mjs";
3
5
  /**
4
6
  * Installs a focus catcher module. The module observes when the table is focused and depending on
5
7
  * from the which side it was focused on it selects a specified cell or releases the TAB navigation
@@ -13,22 +15,22 @@ export function installFocusCatcher(hot) {
13
15
  const {
14
16
  activate,
15
17
  deactivate
16
- } = installFocusDetector(hot, {
17
- onFocusFromTop() {
18
- var _clampCoordsIfNeeded;
19
- const mostTopStartCoords = (_clampCoordsIfNeeded = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded !== void 0 ? _clampCoordsIfNeeded : getMostTopStartPosition(hot);
20
- if (mostTopStartCoords) {
21
- hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
22
- hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
23
- }
24
- hot.listen();
25
- },
26
- onFocusFromBottom() {
27
- var _clampCoordsIfNeeded2;
28
- const mostBottomEndCoords = (_clampCoordsIfNeeded2 = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded2 !== void 0 ? _clampCoordsIfNeeded2 : getMostBottomEndPosition(hot);
29
- if (mostBottomEndCoords) {
30
- hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
31
- hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
18
+ } = installFocusDetector(hot, hot.rootGridElement, {
19
+ onFocus(from) {
20
+ if (from === 'from_above') {
21
+ var _clampCoordsIfNeeded;
22
+ const mostTopStartCoords = (_clampCoordsIfNeeded = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded !== void 0 ? _clampCoordsIfNeeded : getMostTopStartPosition(hot);
23
+ const result = hot.runHooks('modifyFocusOnTabNavigation', 'from_above', mostTopStartCoords);
24
+ if (mostTopStartCoords && result !== false) {
25
+ hot.selectCell(mostTopStartCoords.row, mostTopStartCoords.col);
26
+ }
27
+ } else {
28
+ var _clampCoordsIfNeeded2;
29
+ const mostBottomEndCoords = (_clampCoordsIfNeeded2 = clampCoordsIfNeeded(recentlyAddedFocusCoords)) !== null && _clampCoordsIfNeeded2 !== void 0 ? _clampCoordsIfNeeded2 : getMostBottomEndPosition(hot);
30
+ const result = hot.runHooks('modifyFocusOnTabNavigation', 'from_below', mostBottomEndCoords);
31
+ if (mostBottomEndCoords && result !== false) {
32
+ hot.selectCell(mostBottomEndCoords.row, mostBottomEndCoords.col);
33
+ }
32
34
  }
33
35
  hot.listen();
34
36
  }
@@ -40,8 +42,20 @@ export function installFocusCatcher(hot) {
40
42
  let isSavingCoordsEnabled = true;
41
43
  let isTabOrShiftTabPressed = false;
42
44
  let preventViewportScroll = false;
43
- hot.addHook('afterListen', () => deactivate());
44
- hot.addHook('afterUnlisten', () => activate());
45
+ hot.addHook('afterListen', () => {
46
+ const activeContextName = hot.getShortcutManager().getActiveContextName();
47
+ const activeContext = hot.getShortcutManager().getContext(activeContextName);
48
+ if ((activeContext === null || activeContext === void 0 ? void 0 : activeContext.scope) === 'table') {
49
+ deactivate();
50
+ }
51
+ });
52
+ hot.addHook('afterUnlisten', () => {
53
+ const activeContextName = hot.getShortcutManager().getActiveContextName();
54
+ const activeContext = hot.getShortcutManager().getContext(activeContextName);
55
+ if ((activeContext === null || activeContext === void 0 ? void 0 : activeContext.scope) === 'table') {
56
+ activate();
57
+ }
58
+ });
45
59
  hot.addHook('afterSelection', (row, column, row2, column2, preventScrolling) => {
46
60
  if (isTabOrShiftTabPressed && (rowWrapState.wrapped && rowWrapState.flipped || preventViewportScroll)) {
47
61
  preventViewportScroll = false;
@@ -49,7 +63,7 @@ export function installFocusCatcher(hot) {
49
63
  }
50
64
  if (isSavingCoordsEnabled) {
51
65
  var _hot$getSelectedRange;
52
- recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
66
+ recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeActive()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
53
67
  }
54
68
  });
55
69
  hot.addHook('beforeRowWrap', (interruptedByAutoInsertMode, newCoords, isFlipped) => {
@@ -80,7 +94,7 @@ export function installFocusCatcher(hot) {
80
94
  tabNavigation
81
95
  } = hot.getSettings();
82
96
  isTabOrShiftTabPressed = true;
83
- if (hot.getSelectedRangeLast() && !tabNavigation) {
97
+ if (hot.getSelectedRangeActive() && !tabNavigation) {
84
98
  isSavingCoordsEnabled = false;
85
99
  }
86
100
  if (!tabNavigation) {
@@ -110,93 +124,4 @@ export function installFocusCatcher(hot) {
110
124
  },
111
125
  position: 'after'
112
126
  }]);
113
- }
114
-
115
- /**
116
- * Gets the coordinates of the most top-start cell or header (depends on the table settings and its size).
117
- *
118
- * @param {Core} hot The Handsontable instance.
119
- * @returns {CellCoords|null}
120
- */
121
- function getMostTopStartPosition(hot) {
122
- const {
123
- rowIndexMapper,
124
- columnIndexMapper
125
- } = hot;
126
- const {
127
- navigableHeaders
128
- } = hot.getSettings();
129
- let topRow = navigableHeaders && hot.countColHeaders() > 0 ? -hot.countColHeaders() : 0;
130
- let startColumn = navigableHeaders && hot.countRowHeaders() > 0 ? -hot.countRowHeaders() : 0;
131
- if (topRow === 0) {
132
- topRow = rowIndexMapper.getVisualFromRenderableIndex(topRow);
133
- }
134
- if (startColumn === 0) {
135
- startColumn = columnIndexMapper.getVisualFromRenderableIndex(startColumn);
136
- }
137
- if (topRow === null || startColumn === null) {
138
- return null;
139
- }
140
- return hot._createCellCoords(topRow, startColumn);
141
- }
142
-
143
- /**
144
- * Gets the coordinates of the most bottom-end cell or header (depends on the table settings and its size).
145
- *
146
- * @param {Core} hot The Handsontable instance.
147
- * @returns {CellCoords|null}
148
- */
149
- function getMostBottomEndPosition(hot) {
150
- var _rowIndexMapper$getVi, _columnIndexMapper$ge;
151
- const {
152
- rowIndexMapper,
153
- columnIndexMapper
154
- } = hot;
155
- const {
156
- navigableHeaders
157
- } = hot.getSettings();
158
- let bottomRow = rowIndexMapper.getRenderableIndexesLength() - 1;
159
- let endColumn = columnIndexMapper.getRenderableIndexesLength() - 1;
160
- if (bottomRow < 0) {
161
- if (!navigableHeaders || hot.countColHeaders() === 0) {
162
- return null;
163
- }
164
- bottomRow = -1;
165
- }
166
- if (endColumn < 0) {
167
- if (!navigableHeaders || hot.countColHeaders() === 0) {
168
- return null;
169
- }
170
- endColumn = -1;
171
- }
172
- 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);
173
- }
174
-
175
- /**
176
- * Normalizes the coordinates (clamps to nearest visible cell position within dataset range).
177
- *
178
- * @param {Core} hot The Handsontable instance.
179
- * @returns {function(Coords | undefined): Coords | null}
180
- */
181
- function normalizeCoordsIfNeeded(hot) {
182
- return coords => {
183
- if (!coords) {
184
- return null;
185
- }
186
- const mostTopStartCoords = getMostTopStartPosition(hot);
187
- const mostBottomEndCoords = getMostBottomEndPosition(hot);
188
- if (coords.col < mostTopStartCoords.col) {
189
- coords.col = mostTopStartCoords.col;
190
- }
191
- if (coords.col > mostBottomEndCoords.col) {
192
- coords.col = mostBottomEndCoords.col;
193
- }
194
- if (coords.row < mostTopStartCoords.row) {
195
- coords.row = mostTopStartCoords.row;
196
- }
197
- if (coords.row > mostBottomEndCoords.row) {
198
- coords.row = mostBottomEndCoords.row;
199
- }
200
- return coords;
201
- };
202
127
  }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.normalizeCoordsIfNeeded = normalizeCoordsIfNeeded;
5
+ var _number = require("../../helpers/number");
6
+ var _mixed = require("../../helpers/mixed");
7
+ /**
8
+ * Normalizes the coordinates (clamps to nearest visible cell position within dataset range).
9
+ *
10
+ * @param {Core} hot The Handsontable instance.
11
+ * @returns {function(Coords | undefined): Coords | null}
12
+ */
13
+ function normalizeCoordsIfNeeded(hot) {
14
+ return coords => {
15
+ if (!coords) {
16
+ return null;
17
+ }
18
+ const {
19
+ rowIndexMapper,
20
+ columnIndexMapper
21
+ } = hot;
22
+ if (rowIndexMapper.isHidden(coords.row) || columnIndexMapper.isHidden(coords.col)) {
23
+ return null;
24
+ }
25
+ const mostTopStartCoords = (0, _mixed.getMostTopStartPosition)(hot);
26
+ const mostBottomEndCoords = (0, _mixed.getMostBottomEndPosition)(hot);
27
+ coords.row = (0, _number.clamp)(coords.row, mostTopStartCoords.row, mostBottomEndCoords.row);
28
+ coords.col = (0, _number.clamp)(coords.col, mostTopStartCoords.col, mostBottomEndCoords.col);
29
+ return coords;
30
+ };
31
+ }
@@ -0,0 +1,27 @@
1
+ import { clamp } from "../../helpers/number.mjs";
2
+ import { getMostTopStartPosition, getMostBottomEndPosition } from "../../helpers/mixed.mjs";
3
+ /**
4
+ * Normalizes the coordinates (clamps to nearest visible cell position within dataset range).
5
+ *
6
+ * @param {Core} hot The Handsontable instance.
7
+ * @returns {function(Coords | undefined): Coords | null}
8
+ */
9
+ export function normalizeCoordsIfNeeded(hot) {
10
+ return coords => {
11
+ if (!coords) {
12
+ return null;
13
+ }
14
+ const {
15
+ rowIndexMapper,
16
+ columnIndexMapper
17
+ } = hot;
18
+ if (rowIndexMapper.isHidden(coords.row) || columnIndexMapper.isHidden(coords.col)) {
19
+ return null;
20
+ }
21
+ const mostTopStartCoords = getMostTopStartPosition(hot);
22
+ const mostBottomEndCoords = getMostBottomEndPosition(hot);
23
+ coords.row = clamp(coords.row, mostTopStartCoords.row, mostBottomEndCoords.row);
24
+ coords.col = clamp(coords.col, mostTopStartCoords.col, mostBottomEndCoords.col);
25
+ return coords;
26
+ };
27
+ }