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
@@ -0,0 +1,73 @@
1
+ import "core-js/modules/es.error.cause.js";
2
+ import { BaseTransformation } from "./_base.mjs";
3
+ /**
4
+ * The FocusTransformation class implements algorithms for transforming coordinates while the
5
+ * focus is being moved. The currently selection layer range defines the bounds for the focus movement.
6
+ *
7
+ * @class FocusTransformation
8
+ * @private
9
+ */
10
+ export class FocusTransformation extends BaseTransformation {
11
+ /**
12
+ * Calculates offset coordinates for focus selection based on the current selection state.
13
+ * For header focus selection, calculates offset including headers.
14
+ * For cell focus selection, calculates offset only for selected cells.
15
+ *
16
+ * @returns {{x: number, y: number}}
17
+ */
18
+ calculateOffset() {
19
+ const range = this.getCurrentSelection();
20
+ const {
21
+ row,
22
+ col
23
+ } = range.getOuterTopStartCorner();
24
+ const columnsInRange = this.tableApi.countRenderableColumnsInRange(0, col - 1);
25
+ const rowsInRange = this.tableApi.countRenderableRowsInRange(0, row - 1);
26
+ const isHeaderSelection = range.highlight.isHeader();
27
+ const headerX = isHeaderSelection ? Math.abs(col) : 0;
28
+ const headerY = isHeaderSelection ? Math.abs(row) : 0;
29
+ return {
30
+ x: col < 0 ? headerX : -columnsInRange,
31
+ y: row < 0 ? headerY : -rowsInRange
32
+ };
33
+ }
34
+
35
+ /**
36
+ * Gets the count of renderable rows for focus transformation.
37
+ * Focus transformation operates on the current selection range.
38
+ *
39
+ * @returns {number}
40
+ */
41
+ countRenderableRows() {
42
+ const range = this.getCurrentSelection();
43
+ return this.tableApi.countRenderableRowsInRange(0, range.getOuterBottomEndCorner().row);
44
+ }
45
+
46
+ /**
47
+ * Gets the count of renderable columns for focus transformation.
48
+ * Focus transformation operates on the current selection range.
49
+ *
50
+ * @returns {number}
51
+ */
52
+ countRenderableColumns() {
53
+ const range = this.getCurrentSelection();
54
+ return this.tableApi.countRenderableColumnsInRange(0, range.getOuterBottomEndCorner().col);
55
+ }
56
+
57
+ /**
58
+ * Throws an error because focus transformation doesn't support `transformEnd`.
59
+ */
60
+ transformEnd() {
61
+ throw new Error('`transformEnd` is not valid for focus selection use `transformStart` instead');
62
+ }
63
+
64
+ /**
65
+ * Changes the behavior of the transformation logic by switching the selection layer
66
+ * when the selection is out of range.
67
+ *
68
+ * @returns {boolean}
69
+ */
70
+ shouldSwitchSelectionLayer() {
71
+ return true;
72
+ }
73
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _extender = require("./extender");
5
+ exports.ExtenderTransformation = _extender.ExtenderTransformation;
6
+ var _focus = require("./focus");
7
+ exports.FocusTransformation = _focus.FocusTransformation;
@@ -0,0 +1,2 @@
1
+ export { ExtenderTransformation } from "./extender.mjs";
2
+ export { FocusTransformation } from "./focus.mjs";
@@ -118,9 +118,10 @@ function normalizeSelectionFactory(type) {
118
118
  rowEnd = Math.max(origRowStart, origRowEnd);
119
119
  columnEnd = Math.max(origColumnStart, origColumnEnd);
120
120
  }
121
+ const highlight = isObjectType ? selection.highlight.clone() : createCellCoords(rowStart, columnStart);
121
122
  const from = createCellCoords(rowStart, columnStart);
122
123
  const to = createCellCoords(rowEnd, columnEnd);
123
- return createCellRange(from, from, to);
124
+ return createCellRange(highlight, from, to);
124
125
  };
125
126
  }
126
127
 
@@ -111,9 +111,10 @@ export function normalizeSelectionFactory(type) {
111
111
  rowEnd = Math.max(origRowStart, origRowEnd);
112
112
  columnEnd = Math.max(origColumnStart, origColumnEnd);
113
113
  }
114
+ const highlight = isObjectType ? selection.highlight.clone() : createCellCoords(rowStart, columnStart);
114
115
  const from = createCellCoords(rowStart, columnStart);
115
116
  const to = createCellCoords(rowEnd, columnEnd);
116
- return createCellRange(from, from, to);
117
+ return createCellRange(highlight, from, to);
117
118
  };
118
119
  }
119
120
 
package/settings.d.ts CHANGED
@@ -37,9 +37,12 @@ import { Settings as MergeCellsSettings } from './plugins/mergeCells';
37
37
  import { Settings as MultiColumnSortingSettings } from './plugins/multiColumnSorting';
38
38
  import { Settings as NestedHeadersSettings } from './plugins/nestedHeaders';
39
39
  import { Settings as NestedRowsSettings } from './plugins/nestedRows';
40
+ import { Settings as PaginationSettings } from './plugins/pagination';
40
41
  import { Settings as PersistentStateSettings } from './plugins/persistentState';
41
42
  import { Settings as SearchSettings } from './plugins/search';
42
43
  import { Settings as TrimRowsSettings } from './plugins/trimRows';
44
+ import { Settings as DialogSettings } from './plugins/dialog';
45
+ import { Settings as LoadingSettings } from './plugins/loading';
43
46
  import { Settings as UndoRedoSettings } from './plugins/undoRedo';
44
47
  import { EditorType, BaseEditor } from './editors';
45
48
  import { RendererType } from './renderers';
@@ -159,6 +162,7 @@ export interface GridSettings extends Events {
159
162
  height?: number | string | (() => number | string);
160
163
  hiddenColumns?: HiddenColumnsSettings;
161
164
  hiddenRows?: HiddenRowsSettings;
165
+ initialState?: Partial<GridSettings>;
162
166
  invalidCellClassName?: string;
163
167
  imeFastEdit?: boolean;
164
168
  isEmptyCol?: (this: Core, column: number) => boolean;
@@ -188,6 +192,7 @@ export interface GridSettings extends Events {
188
192
  numericFormat?: NumericFormatOptions;
189
193
  observeDOMVisibility?: boolean;
190
194
  outsideClickDeselects?: boolean | ((target: HTMLElement) => boolean);
195
+ pagination?: PaginationSettings;
191
196
  persistentState?: PersistentStateSettings;
192
197
  placeholder?: string;
193
198
  placeholderCellClassName?: string;
@@ -207,7 +212,7 @@ export interface GridSettings extends Events {
207
212
  skipColumnOnPaste?: boolean;
208
213
  skipRowOnPaste?: boolean;
209
214
  sortByRelevance?: boolean;
210
- source?: string[] | number[] | ((this: CellProperties, query: string, callback: (items: string[]) => void) => void);
215
+ source?: string[] | number[] | { key: any, value: any }[] | ((this: CellProperties, query: string, callback: (items: string[]) => void) => void);
211
216
  startCols?: number;
212
217
  startRows?: number;
213
218
  stretchH?: 'none' | 'all' | 'last';
@@ -222,8 +227,12 @@ export interface GridSettings extends Events {
222
227
  trimWhitespace?: boolean;
223
228
  type?: CellType | string;
224
229
  uncheckedTemplate?: boolean | string | number;
230
+ dialog?: DialogSettings;
231
+ loading?: LoadingSettings;
225
232
  undo?: UndoRedoSettings;
226
233
  validator?: BaseValidator | RegExp | ValidatorType | string;
234
+ valueGetter?: (this: Core, value: CellValue, row: number, column: number, cellProperties: CellProperties) => CellValue;
235
+ valueSetter?: (this: Core, value: CellValue, row: number, column: number, cellProperties: CellProperties) => CellValue;
227
236
  viewportColumnRenderingOffset?: number | 'auto';
228
237
  viewportRowRenderingOffset?: number | 'auto';
229
238
  viewportColumnRenderingThreshold?: number | 'auto';
@@ -6,7 +6,7 @@ const command = exports.command = {
6
6
  callback(hot, event) {
7
7
  const {
8
8
  highlight
9
- } = hot.getSelectedRangeLast();
9
+ } = hot.getSelectedRangeActive();
10
10
  if (highlight.isHeader()) {
11
11
  return;
12
12
  }
@@ -3,7 +3,7 @@ export const command = {
3
3
  callback(hot, event) {
4
4
  const {
5
5
  highlight
6
- } = hot.getSelectedRangeLast();
6
+ } = hot.getSelectedRangeActive();
7
7
  if (highlight.isHeader()) {
8
8
  return;
9
9
  }
@@ -1,24 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ require("core-js/modules/esnext.iterator.constructor.js");
5
+ require("core-js/modules/esnext.iterator.some.js");
4
6
  var _event = require("../../../helpers/dom/event");
5
7
  const command = exports.command = {
6
8
  name: 'editorOpen',
7
9
  callback(hot, event, keys) {
10
+ const {
11
+ selection
12
+ } = hot;
8
13
  const editorManager = hot._getEditorManager();
9
- const selectedRange = hot.getSelectedRangeLast();
14
+ const selectedRanges = hot.getSelectedRange();
15
+ const selectedRange = hot.getSelectedRangeActive();
10
16
  const {
11
17
  highlight
12
18
  } = selectedRange;
13
19
 
14
20
  // supports for navigating with enter key when multiple cells are selected
15
- if (hot.selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
21
+ if ((selectedRanges.some(range => selection.isMultiple(range)) || selectedRanges.length > 1) && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
16
22
  const settings = hot.getSettings();
17
23
  const enterMoves = typeof settings.enterMoves === 'function' ? settings.enterMoves(event) : settings.enterMoves;
18
24
  if (keys.includes('shift')) {
19
- hot.selection.transformFocus(-enterMoves.row, -enterMoves.col);
25
+ selection.transformFocus(-enterMoves.row, -enterMoves.col);
20
26
  } else {
21
- hot.selection.transformFocus(enterMoves.row, enterMoves.col);
27
+ selection.transformFocus(enterMoves.row, enterMoves.col);
22
28
  }
23
29
  return;
24
30
  }
@@ -1,21 +1,27 @@
1
+ import "core-js/modules/esnext.iterator.constructor.js";
2
+ import "core-js/modules/esnext.iterator.some.js";
1
3
  import { stopImmediatePropagation } from "../../../helpers/dom/event.mjs";
2
4
  export const command = {
3
5
  name: 'editorOpen',
4
6
  callback(hot, event, keys) {
7
+ const {
8
+ selection
9
+ } = hot;
5
10
  const editorManager = hot._getEditorManager();
6
- const selectedRange = hot.getSelectedRangeLast();
11
+ const selectedRanges = hot.getSelectedRange();
12
+ const selectedRange = hot.getSelectedRangeActive();
7
13
  const {
8
14
  highlight
9
15
  } = selectedRange;
10
16
 
11
17
  // supports for navigating with enter key when multiple cells are selected
12
- if (hot.selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
18
+ if ((selectedRanges.some(range => selection.isMultiple(range)) || selectedRanges.length > 1) && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
13
19
  const settings = hot.getSettings();
14
20
  const enterMoves = typeof settings.enterMoves === 'function' ? settings.enterMoves(event) : settings.enterMoves;
15
21
  if (keys.includes('shift')) {
16
- hot.selection.transformFocus(-enterMoves.row, -enterMoves.col);
22
+ selection.transformFocus(-enterMoves.row, -enterMoves.col);
17
23
  } else {
18
- hot.selection.transformFocus(enterMoves.row, enterMoves.col);
24
+ selection.transformFocus(enterMoves.row, enterMoves.col);
19
25
  }
20
26
  return;
21
27
  }
@@ -9,7 +9,7 @@ const command = exports.command = {
9
9
  } = hot;
10
10
  const {
11
11
  highlight
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  if (!selection.isSelectedByColumnHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByRowHeader())) {
14
14
  selection.markSource('keyboard');
15
15
  selection.transformEnd(1, 0);
@@ -6,7 +6,7 @@ export const command = {
6
6
  } = hot;
7
7
  const {
8
8
  highlight
9
- } = hot.getSelectedRangeLast();
9
+ } = hot.getSelectedRangeActive();
10
10
  if (!selection.isSelectedByColumnHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByRowHeader())) {
11
11
  selection.markSource('keyboard');
12
12
  selection.transformEnd(1, 0);
@@ -10,7 +10,7 @@ const command = exports.command = {
10
10
  } = hot;
11
11
  const {
12
12
  to
13
- } = hot.getSelectedRangeLast();
13
+ } = hot.getSelectedRangeActive();
14
14
  const nextRowIndexToSelect = Math.min(to.row + hot.countVisibleRows(), hot.countRows() - 1);
15
15
  const row = rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, -1);
16
16
  if (row !== null) {
@@ -18,7 +18,7 @@ const command = exports.command = {
18
18
  const scrollPadding = to.row - hot.getFirstFullyVisibleRow();
19
19
  const nextVerticalScroll = Math.min(coords.row - scrollPadding, hot.countRows() - 1);
20
20
  selection.markSource('keyboard');
21
- selection.setRangeEnd(coords);
21
+ selection.setRangeEnd(coords, hot.getActiveSelectionLayerIndex());
22
22
  selection.markEndSource();
23
23
  hot.scrollViewportTo({
24
24
  row: nextVerticalScroll,
@@ -7,7 +7,7 @@ export const command = {
7
7
  } = hot;
8
8
  const {
9
9
  to
10
- } = hot.getSelectedRangeLast();
10
+ } = hot.getSelectedRangeActive();
11
11
  const nextRowIndexToSelect = Math.min(to.row + hot.countVisibleRows(), hot.countRows() - 1);
12
12
  const row = rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, -1);
13
13
  if (row !== null) {
@@ -15,7 +15,7 @@ export const command = {
15
15
  const scrollPadding = to.row - hot.getFirstFullyVisibleRow();
16
16
  const nextVerticalScroll = Math.min(coords.row - scrollPadding, hot.countRows() - 1);
17
17
  selection.markSource('keyboard');
18
- selection.setRangeEnd(coords);
18
+ selection.setRangeEnd(coords, hot.getActiveSelectionLayerIndex());
19
19
  selection.markEndSource();
20
20
  hot.scrollViewportTo({
21
21
  row: nextVerticalScroll,
@@ -9,7 +9,7 @@ const command = exports.command = {
9
9
  } = hot;
10
10
  const {
11
11
  highlight
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByColumnHeader())) {
14
14
  selection.markSource('keyboard');
15
15
  selection.transformEnd(0, -1 * hot.getDirectionFactor());
@@ -6,7 +6,7 @@ export const command = {
6
6
  } = hot;
7
7
  const {
8
8
  highlight
9
- } = hot.getSelectedRangeLast();
9
+ } = hot.getSelectedRangeActive();
10
10
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByColumnHeader())) {
11
11
  selection.markSource('keyboard');
12
12
  selection.transformEnd(0, -1 * hot.getDirectionFactor());
@@ -9,7 +9,7 @@ const command = exports.command = {
9
9
  } = hot;
10
10
  const {
11
11
  highlight
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByColumnHeader())) {
14
14
  selection.markSource('keyboard');
15
15
  selection.transformEnd(0, hot.getDirectionFactor());
@@ -6,7 +6,7 @@ export const command = {
6
6
  } = hot;
7
7
  const {
8
8
  highlight
9
- } = hot.getSelectedRangeLast();
9
+ } = hot.getSelectedRangeActive();
10
10
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByColumnHeader())) {
11
11
  selection.markSource('keyboard');
12
12
  selection.transformEnd(0, hot.getDirectionFactor());
@@ -11,7 +11,7 @@ const command = exports.command = {
11
11
  highlight,
12
12
  from,
13
13
  to
14
- } = hot.getSelectedRangeLast();
14
+ } = hot.getSelectedRangeActive();
15
15
  selection.markSource('keyboard');
16
16
  if (selection.isSelectedByRowHeader()) {
17
17
  selection.selectAll(true, true);
@@ -8,7 +8,7 @@ export const command = {
8
8
  highlight,
9
9
  from,
10
10
  to
11
- } = hot.getSelectedRangeLast();
11
+ } = hot.getSelectedRangeActive();
12
12
  selection.markSource('keyboard');
13
13
  if (selection.isSelectedByRowHeader()) {
14
14
  selection.selectAll(true, true);
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  highlight,
13
13
  from,
14
14
  to
15
- } = hot.getSelectedRangeLast();
15
+ } = hot.getSelectedRangeActive();
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByRowHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const row = rowIndexMapper.getNearestNotHiddenIndex(hot.countRows() - 1, -1);
@@ -9,7 +9,7 @@ export const command = {
9
9
  highlight,
10
10
  from,
11
11
  to
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByRowHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const row = rowIndexMapper.getNearestNotHiddenIndex(hot.countRows() - 1, -1);
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  highlight,
13
13
  from,
14
14
  to
15
- } = hot.getSelectedRangeLast();
15
+ } = hot.getSelectedRangeActive();
16
16
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && highlight.isCell()) {
17
17
  const column = columnIndexMapper.getNearestNotHiddenIndex(hot.countCols() - 1, -1);
18
18
  const newFrom = from.clone();
@@ -9,7 +9,7 @@ export const command = {
9
9
  highlight,
10
10
  from,
11
11
  to
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && highlight.isCell()) {
14
14
  const column = columnIndexMapper.getNearestNotHiddenIndex(hot.countCols() - 1, -1);
15
15
  const newFrom = from.clone();
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  highlight,
13
13
  from,
14
14
  to
15
- } = hot.getSelectedRangeLast();
15
+ } = hot.getSelectedRangeActive();
16
16
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && highlight.isCell()) {
17
17
  const fixedColumns = parseInt(hot.getSettings().fixedColumnsStart, 10);
18
18
  const column = columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
@@ -9,7 +9,7 @@ export const command = {
9
9
  highlight,
10
10
  from,
11
11
  to
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  if (!selection.isSelectedByRowHeader() && !selection.isSelectedByCorner() && highlight.isCell()) {
14
14
  const fixedColumns = parseInt(hot.getSettings().fixedColumnsStart, 10);
15
15
  const column = columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  highlight,
13
13
  from,
14
14
  to
15
- } = hot.getSelectedRangeLast();
15
+ } = hot.getSelectedRangeActive();
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByColumnHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [hot.countCols() - 1, -1] : [0, 1]));
@@ -9,7 +9,7 @@ export const command = {
9
9
  highlight,
10
10
  from,
11
11
  to
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByColumnHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [hot.countCols() - 1, -1] : [0, 1]));
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  highlight,
13
13
  from,
14
14
  to
15
- } = hot.getSelectedRangeLast();
15
+ } = hot.getSelectedRangeActive();
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByColumnHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [0, 1] : [hot.countCols() - 1, -1]));
@@ -9,7 +9,7 @@ export const command = {
9
9
  highlight,
10
10
  from,
11
11
  to
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByColumnHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [0, 1] : [hot.countCols() - 1, -1]));
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  highlight,
13
13
  from,
14
14
  to
15
- } = hot.getSelectedRangeLast();
15
+ } = hot.getSelectedRangeActive();
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByRowHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const row = rowIndexMapper.getNearestNotHiddenIndex(0, 1);
@@ -9,7 +9,7 @@ export const command = {
9
9
  highlight,
10
10
  from,
11
11
  to
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && selection.isSelectedByRowHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const row = rowIndexMapper.getNearestNotHiddenIndex(0, 1);
@@ -11,7 +11,7 @@ const command = exports.command = {
11
11
  highlight,
12
12
  from,
13
13
  to
14
- } = hot.getSelectedRangeLast();
14
+ } = hot.getSelectedRangeActive();
15
15
  selection.markSource('keyboard');
16
16
  if (selection.isSelectedByColumnHeader()) {
17
17
  selection.selectAll(true, true);
@@ -8,7 +8,7 @@ export const command = {
8
8
  highlight,
9
9
  from,
10
10
  to
11
- } = hot.getSelectedRangeLast();
11
+ } = hot.getSelectedRangeActive();
12
12
  selection.markSource('keyboard');
13
13
  if (selection.isSelectedByColumnHeader()) {
14
14
  selection.selectAll(true, true);
@@ -9,7 +9,7 @@ const command = exports.command = {
9
9
  } = hot;
10
10
  const {
11
11
  highlight
12
- } = hot.getSelectedRangeLast();
12
+ } = hot.getSelectedRangeActive();
13
13
  if (!selection.isSelectedByColumnHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByRowHeader())) {
14
14
  selection.markSource('keyboard');
15
15
  selection.transformEnd(-1, 0);
@@ -6,7 +6,7 @@ export const command = {
6
6
  } = hot;
7
7
  const {
8
8
  highlight
9
- } = hot.getSelectedRangeLast();
9
+ } = hot.getSelectedRangeActive();
10
10
  if (!selection.isSelectedByColumnHeader() && !selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && selection.isSelectedByRowHeader())) {
11
11
  selection.markSource('keyboard');
12
12
  selection.transformEnd(-1, 0);
@@ -10,7 +10,7 @@ const command = exports.command = {
10
10
  } = hot;
11
11
  const {
12
12
  to
13
- } = hot.getSelectedRangeLast();
13
+ } = hot.getSelectedRangeActive();
14
14
  const nextRowIndexToSelect = Math.max(to.row - hot.countVisibleRows(), 0);
15
15
  const row = rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, 1);
16
16
  if (row !== null) {
@@ -18,7 +18,7 @@ const command = exports.command = {
18
18
  const scrollPadding = to.row - hot.getFirstFullyVisibleRow();
19
19
  const nextVerticalScroll = Math.max(coords.row - scrollPadding, 0);
20
20
  selection.markSource('keyboard');
21
- selection.setRangeEnd(coords);
21
+ selection.setRangeEnd(coords, hot.getActiveSelectionLayerIndex());
22
22
  selection.markEndSource();
23
23
  hot.scrollViewportTo({
24
24
  row: nextVerticalScroll,
@@ -7,7 +7,7 @@ export const command = {
7
7
  } = hot;
8
8
  const {
9
9
  to
10
- } = hot.getSelectedRangeLast();
10
+ } = hot.getSelectedRangeActive();
11
11
  const nextRowIndexToSelect = Math.max(to.row - hot.countVisibleRows(), 0);
12
12
  const row = rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, 1);
13
13
  if (row !== null) {
@@ -15,7 +15,7 @@ export const command = {
15
15
  const scrollPadding = to.row - hot.getFirstFullyVisibleRow();
16
16
  const nextVerticalScroll = Math.max(coords.row - scrollPadding, 0);
17
17
  selection.markSource('keyboard');
18
- selection.setRangeEnd(coords);
18
+ selection.setRangeEnd(coords, hot.getActiveSelectionLayerIndex());
19
19
  selection.markEndSource();
20
20
  hot.scrollViewportTo({
21
21
  row: nextVerticalScroll,
@@ -13,7 +13,7 @@ const command = exports.command = {
13
13
  const columnHeadersCount = navigableHeaders ? hot.countColHeaders() : 0;
14
14
  const {
15
15
  row
16
- } = hot.getSelectedRangeLast().highlight;
16
+ } = hot.getSelectedRangeActive().highlight;
17
17
  let rowsStep = hot.countVisibleRows() + columnHeadersCount;
18
18
  rowsStep = rowsStep === 0 ? 1 : rowsStep;
19
19
 
@@ -29,7 +29,7 @@ const command = exports.command = {
29
29
  selection.markSource('keyboard');
30
30
  selection.transformStart(rowsStep, 0);
31
31
  selection.markEndSource();
32
- if (hot.getSelectedRangeLast().highlight.row < 0) {
32
+ if (hot.getSelectedRangeActive().highlight.row < 0) {
33
33
  hot.scrollViewportTo({
34
34
  row: 0
35
35
  });
@@ -10,7 +10,7 @@ export const command = {
10
10
  const columnHeadersCount = navigableHeaders ? hot.countColHeaders() : 0;
11
11
  const {
12
12
  row
13
- } = hot.getSelectedRangeLast().highlight;
13
+ } = hot.getSelectedRangeActive().highlight;
14
14
  let rowsStep = hot.countVisibleRows() + columnHeadersCount;
15
15
  rowsStep = rowsStep === 0 ? 1 : rowsStep;
16
16
 
@@ -26,7 +26,7 @@ export const command = {
26
26
  selection.markSource('keyboard');
27
27
  selection.transformStart(rowsStep, 0);
28
28
  selection.markEndSource();
29
- if (hot.getSelectedRangeLast().highlight.row < 0) {
29
+ if (hot.getSelectedRangeActive().highlight.row < 0) {
30
30
  hot.scrollViewportTo({
31
31
  row: 0
32
32
  });
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
+ require("core-js/modules/esnext.iterator.constructor.js");
5
+ require("core-js/modules/esnext.iterator.some.js");
4
6
  const command = exports.command = {
5
7
  name: 'moveCellSelectionInlineEnd',
6
8
  callback(hot, event) {
@@ -8,10 +10,11 @@ const command = exports.command = {
8
10
  selection
9
11
  } = hot;
10
12
  const settings = hot.getSettings();
11
- const selectedRange = hot.getSelectedRangeLast();
13
+ const selectedRanges = hot.getSelectedRange();
14
+ const selectedRange = hot.getSelectedRangeActive();
12
15
  const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
13
16
  selection.markSource('keyboard');
14
- if (selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
17
+ if ((selectedRanges.some(range => selection.isMultiple(range)) || selectedRanges.length > 1) && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
15
18
  selection.transformFocus(-tabMoves.row, -tabMoves.col);
16
19
  } else {
17
20
  selection.transformStart(-tabMoves.row, -tabMoves.col);