handsontable 0.0.0-next-a1e4b4f-20230628 → 0.0.0-next-e697250-20230707

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (456) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -28
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -28
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +69 -36
  6. package/3rdparty/walkontable/src/cell/range.mjs +68 -35
  7. package/3rdparty/walkontable/src/event.js +3 -5
  8. package/3rdparty/walkontable/src/event.mjs +3 -5
  9. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  14. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  15. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  16. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  17. package/3rdparty/walkontable/src/overlays.js +55 -64
  18. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  19. package/3rdparty/walkontable/src/renderer/table.js +0 -2
  20. package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
  21. package/3rdparty/walkontable/src/scroll.js +20 -23
  22. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  23. package/3rdparty/walkontable/src/selection/border/border.js +1 -0
  24. package/3rdparty/walkontable/src/selection/border/border.mjs +1 -0
  25. package/3rdparty/walkontable/src/selection/manager.js +40 -45
  26. package/3rdparty/walkontable/src/selection/manager.mjs +33 -38
  27. package/3rdparty/walkontable/src/selection/scanner.js +5 -4
  28. package/3rdparty/walkontable/src/selection/scanner.mjs +1 -0
  29. package/3rdparty/walkontable/src/settings.js +13 -15
  30. package/3rdparty/walkontable/src/settings.mjs +13 -15
  31. package/3rdparty/walkontable/src/table.js +23 -26
  32. package/3rdparty/walkontable/src/table.mjs +23 -26
  33. package/CHANGELOG.md +56 -0
  34. package/base.js +2 -4
  35. package/base.mjs +2 -2
  36. package/common.d.ts +1 -1
  37. package/core.d.ts +7 -9
  38. package/core.js +241 -439
  39. package/core.mjs +245 -443
  40. package/dataMap/dataMap.js +1 -0
  41. package/dataMap/dataMap.mjs +1 -0
  42. package/dataMap/dataSource.js +5 -5
  43. package/dataMap/dataSource.mjs +5 -5
  44. package/dataMap/metaManager/lazyFactoryMap.js +1 -0
  45. package/dataMap/metaManager/lazyFactoryMap.mjs +1 -0
  46. package/dataMap/metaManager/metaLayers/cellMeta.js +1 -0
  47. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -0
  48. package/dataMap/metaManager/metaSchema.js +33 -24
  49. package/dataMap/metaManager/metaSchema.mjs +33 -24
  50. package/dist/handsontable.css +25 -3
  51. package/dist/handsontable.full.css +25 -3
  52. package/dist/handsontable.full.js +14539 -11358
  53. package/dist/handsontable.full.min.css +5 -5
  54. package/dist/handsontable.full.min.js +137 -125
  55. package/dist/handsontable.js +31414 -28455
  56. package/dist/handsontable.min.css +5 -5
  57. package/dist/handsontable.min.js +11 -3
  58. package/dist/languages/all.js +133 -0
  59. package/dist/languages/ar-AR.js +7 -0
  60. package/dist/languages/cs-CZ.js +7 -0
  61. package/dist/languages/de-CH.js +7 -0
  62. package/dist/languages/de-DE.js +7 -0
  63. package/dist/languages/en-US.js +7 -0
  64. package/dist/languages/es-MX.js +7 -0
  65. package/dist/languages/fr-FR.js +7 -0
  66. package/dist/languages/it-IT.js +7 -0
  67. package/dist/languages/ja-JP.js +7 -0
  68. package/dist/languages/ko-KR.js +7 -0
  69. package/dist/languages/lv-LV.js +7 -0
  70. package/dist/languages/nb-NO.js +7 -0
  71. package/dist/languages/nl-NL.js +7 -0
  72. package/dist/languages/pl-PL.js +7 -0
  73. package/dist/languages/pt-BR.js +7 -0
  74. package/dist/languages/ru-RU.js +7 -0
  75. package/dist/languages/sr-SP.js +7 -0
  76. package/dist/languages/zh-CN.js +7 -0
  77. package/dist/languages/zh-TW.js +7 -0
  78. package/editorManager.js +19 -89
  79. package/editorManager.mjs +24 -93
  80. package/editors/baseEditor/baseEditor.js +1 -0
  81. package/editors/baseEditor/baseEditor.mjs +1 -0
  82. package/editors/textEditor/textEditor.js +14 -20
  83. package/editors/textEditor/textEditor.mjs +16 -22
  84. package/helpers/dom/element.js +0 -11
  85. package/helpers/dom/element.mjs +0 -10
  86. package/helpers/mixed.js +2 -2
  87. package/helpers/mixed.mjs +2 -2
  88. package/helpers/number.d.ts +1 -0
  89. package/helpers/number.js +18 -0
  90. package/helpers/number.mjs +17 -0
  91. package/helpers/object.js +2 -0
  92. package/helpers/object.mjs +2 -0
  93. package/i18n/languages/ar-AR.js +7 -1
  94. package/i18n/languages/cs-CZ.js +7 -1
  95. package/i18n/languages/de-CH.js +7 -1
  96. package/i18n/languages/de-DE.js +7 -1
  97. package/i18n/languages/en-US.js +7 -1
  98. package/i18n/languages/es-MX.js +7 -1
  99. package/i18n/languages/fr-FR.js +7 -1
  100. package/i18n/languages/it-IT.js +7 -1
  101. package/i18n/languages/ja-JP.js +7 -1
  102. package/i18n/languages/ko-KR.js +7 -1
  103. package/i18n/languages/lv-LV.js +7 -1
  104. package/i18n/languages/nb-NO.js +7 -1
  105. package/i18n/languages/nl-NL.js +7 -1
  106. package/i18n/languages/pl-PL.js +7 -1
  107. package/i18n/languages/pt-BR.js +7 -1
  108. package/i18n/languages/ru-RU.js +7 -1
  109. package/i18n/languages/sr-SP.js +7 -1
  110. package/i18n/languages/zh-CN.js +7 -1
  111. package/i18n/languages/zh-TW.js +7 -1
  112. package/languages/all.js +133 -0
  113. package/languages/ar-AR.js +7 -0
  114. package/languages/cs-CZ.js +7 -0
  115. package/languages/de-CH.js +7 -0
  116. package/languages/de-DE.js +7 -0
  117. package/languages/en-US.js +7 -0
  118. package/languages/es-MX.js +7 -0
  119. package/languages/fr-FR.js +7 -0
  120. package/languages/index.js +133 -0
  121. package/languages/it-IT.js +7 -0
  122. package/languages/ja-JP.js +7 -0
  123. package/languages/ko-KR.js +7 -0
  124. package/languages/lv-LV.js +7 -0
  125. package/languages/nb-NO.js +7 -0
  126. package/languages/nl-NL.js +7 -0
  127. package/languages/pl-PL.js +7 -0
  128. package/languages/pt-BR.js +7 -0
  129. package/languages/ru-RU.js +7 -0
  130. package/languages/sr-SP.js +7 -0
  131. package/languages/zh-CN.js +7 -0
  132. package/languages/zh-TW.js +7 -0
  133. package/package.json +3 -2
  134. package/pluginHooks.d.ts +8 -2
  135. package/pluginHooks.js +116 -18
  136. package/pluginHooks.mjs +115 -15
  137. package/plugins/autoColumnSize/autoColumnSize.js +1 -0
  138. package/plugins/autoColumnSize/autoColumnSize.mjs +1 -0
  139. package/plugins/autoRowSize/autoRowSize.js +3 -2
  140. package/plugins/autoRowSize/autoRowSize.mjs +3 -2
  141. package/plugins/autofill/autofill.js +2 -2
  142. package/plugins/autofill/autofill.mjs +3 -3
  143. package/plugins/autofill/utils.js +1 -39
  144. package/plugins/autofill/utils.mjs +0 -37
  145. package/plugins/base/base.js +1 -0
  146. package/plugins/base/base.mjs +1 -0
  147. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -0
  148. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +1 -0
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +82 -24
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +82 -24
  151. package/plugins/columnSorting/columnSorting.js +51 -8
  152. package/plugins/columnSorting/columnSorting.mjs +50 -9
  153. package/plugins/columnSorting/columnStatesManager.js +1 -0
  154. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  155. package/plugins/columnSorting/index.js +4 -2
  156. package/plugins/columnSorting/index.mjs +1 -1
  157. package/plugins/columnSorting/rootComparator.js +1 -0
  158. package/plugins/columnSorting/rootComparator.mjs +1 -0
  159. package/plugins/comments/commentEditor.js +1 -0
  160. package/plugins/comments/commentEditor.mjs +1 -0
  161. package/plugins/comments/comments.js +289 -224
  162. package/plugins/comments/comments.mjs +297 -234
  163. package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
  164. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  165. package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
  166. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
  167. package/plugins/comments/contextMenuItem/removeComment.js +48 -0
  168. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  169. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  170. package/plugins/contextMenu/contextMenu.js +81 -29
  171. package/plugins/contextMenu/contextMenu.mjs +82 -30
  172. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  173. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  174. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  175. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  176. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  177. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  178. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  179. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  180. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  181. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  182. package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -5
  183. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +6 -3
  184. package/plugins/contextMenu/predefinedItems/removeRow.js +8 -5
  185. package/plugins/contextMenu/predefinedItems/removeRow.mjs +6 -3
  186. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  187. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  188. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  189. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  190. package/plugins/contextMenu/utils.js +25 -16
  191. package/plugins/contextMenu/utils.mjs +24 -15
  192. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  193. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  194. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  195. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  196. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  197. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  198. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  199. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  200. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  201. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  202. package/plugins/copyPaste/copyPaste.js +100 -14
  203. package/plugins/copyPaste/copyPaste.mjs +100 -14
  204. package/plugins/copyPaste/copyableRanges.js +25 -31
  205. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  206. package/plugins/copyPaste/focusableElement.js +219 -0
  207. package/plugins/copyPaste/focusableElement.mjs +213 -0
  208. package/plugins/customBorders/customBorders.d.ts +2 -0
  209. package/plugins/customBorders/customBorders.js +19 -50
  210. package/plugins/customBorders/customBorders.mjs +19 -50
  211. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  212. package/plugins/dropdownMenu/dropdownMenu.js +94 -30
  213. package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
  214. package/plugins/exportFile/dataProvider.js +1 -0
  215. package/plugins/exportFile/dataProvider.mjs +1 -0
  216. package/plugins/filters/component/value.js +1 -0
  217. package/plugins/filters/component/value.mjs +1 -0
  218. package/plugins/filters/condition/beginsWith.js +1 -0
  219. package/plugins/filters/condition/beginsWith.mjs +1 -0
  220. package/plugins/filters/condition/between.js +1 -0
  221. package/plugins/filters/condition/between.mjs +1 -0
  222. package/plugins/filters/condition/byValue.js +1 -0
  223. package/plugins/filters/condition/byValue.mjs +1 -0
  224. package/plugins/filters/condition/contains.js +1 -0
  225. package/plugins/filters/condition/contains.mjs +1 -0
  226. package/plugins/filters/condition/date/after.js +1 -0
  227. package/plugins/filters/condition/date/after.mjs +1 -0
  228. package/plugins/filters/condition/date/before.js +1 -0
  229. package/plugins/filters/condition/date/before.mjs +1 -0
  230. package/plugins/filters/condition/endsWith.js +1 -0
  231. package/plugins/filters/condition/endsWith.mjs +1 -0
  232. package/plugins/filters/condition/equal.js +1 -0
  233. package/plugins/filters/condition/equal.mjs +1 -0
  234. package/plugins/filters/condition/greaterThan.js +1 -0
  235. package/plugins/filters/condition/greaterThan.mjs +1 -0
  236. package/plugins/filters/condition/greaterThanOrEqual.js +1 -0
  237. package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
  238. package/plugins/filters/condition/lessThan.js +1 -0
  239. package/plugins/filters/condition/lessThan.mjs +1 -0
  240. package/plugins/filters/condition/lessThanOrEqual.js +1 -0
  241. package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
  242. package/plugins/filters/conditionCollection.js +1 -0
  243. package/plugins/filters/conditionCollection.mjs +1 -0
  244. package/plugins/filters/filters.js +68 -42
  245. package/plugins/filters/filters.mjs +67 -41
  246. package/plugins/filters/ui/multipleSelect.js +1 -0
  247. package/plugins/filters/ui/multipleSelect.mjs +1 -0
  248. package/plugins/formulas/formulas.js +191 -168
  249. package/plugins/formulas/formulas.mjs +191 -168
  250. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  251. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  252. package/plugins/formulas/indexSyncer/index.js +225 -0
  253. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  254. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -0
  255. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
  256. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -0
  257. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -0
  258. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -0
  259. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
  260. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -0
  261. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -0
  262. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -0
  263. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
  264. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -0
  265. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
  266. package/plugins/manualColumnResize/manualColumnResize.js +36 -5
  267. package/plugins/manualColumnResize/manualColumnResize.mjs +36 -5
  268. package/plugins/manualRowMove/manualRowMove.js +31 -12
  269. package/plugins/manualRowMove/manualRowMove.mjs +32 -13
  270. package/plugins/manualRowResize/manualRowResize.js +40 -9
  271. package/plugins/manualRowResize/manualRowResize.mjs +40 -9
  272. package/plugins/mergeCells/calculations/autofill.js +1 -0
  273. package/plugins/mergeCells/calculations/autofill.mjs +1 -0
  274. package/plugins/mergeCells/cellsCollection.js +1 -0
  275. package/plugins/mergeCells/cellsCollection.mjs +1 -0
  276. package/plugins/mergeCells/mergeCells.js +6 -2
  277. package/plugins/mergeCells/mergeCells.mjs +6 -2
  278. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  279. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  280. package/plugins/multiColumnSorting/rootComparator.js +1 -0
  281. package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
  282. package/plugins/nestedHeaders/nestedHeaders.js +129 -6
  283. package/plugins/nestedHeaders/nestedHeaders.mjs +129 -6
  284. package/plugins/nestedHeaders/stateManager/headersTree.js +24 -26
  285. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -23
  286. package/plugins/nestedHeaders/stateManager/index.js +40 -3
  287. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  288. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  289. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -1
  290. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
  291. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  292. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  293. package/plugins/nestedRows/data/dataManager.js +1 -0
  294. package/plugins/nestedRows/data/dataManager.mjs +1 -0
  295. package/plugins/nestedRows/nestedRows.js +53 -7
  296. package/plugins/nestedRows/nestedRows.mjs +53 -7
  297. package/plugins/nestedRows/ui/collapsing.js +1 -0
  298. package/plugins/nestedRows/ui/collapsing.mjs +1 -0
  299. package/plugins/nestedRows/utils/rowMoveController.js +1 -0
  300. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -0
  301. package/plugins/persistentState/storage.js +1 -0
  302. package/plugins/persistentState/storage.mjs +1 -0
  303. package/plugins/registry.js +4 -1
  304. package/plugins/registry.mjs +1 -0
  305. package/plugins/undoRedo/undoRedo.js +1 -1
  306. package/plugins/undoRedo/undoRedo.mjs +1 -1
  307. package/renderers/baseRenderer/baseRenderer.js +0 -3
  308. package/renderers/baseRenderer/baseRenderer.mjs +0 -3
  309. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  310. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  311. package/selection/highlight/highlight.js +120 -98
  312. package/selection/highlight/highlight.mjs +118 -96
  313. package/selection/highlight/visualSelection.js +30 -17
  314. package/selection/highlight/visualSelection.mjs +30 -17
  315. package/selection/mouseEventHandler.js +1 -1
  316. package/selection/mouseEventHandler.mjs +1 -1
  317. package/selection/range.js +8 -8
  318. package/selection/range.mjs +8 -8
  319. package/selection/selection.js +246 -153
  320. package/selection/selection.mjs +247 -154
  321. package/selection/transformation.js +233 -96
  322. package/selection/transformation.mjs +230 -93
  323. package/selection/utils.js +12 -35
  324. package/selection/utils.mjs +13 -35
  325. package/settings.d.ts +2 -1
  326. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  327. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  328. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  329. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  330. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  331. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  332. package/shortcutContexts/commands/editor/index.js +16 -0
  333. package/shortcutContexts/commands/editor/index.mjs +12 -0
  334. package/shortcutContexts/commands/editor/open.js +29 -0
  335. package/shortcutContexts/commands/editor/open.mjs +24 -0
  336. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  337. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  338. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  339. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  342. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  343. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  344. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  345. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  346. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  348. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  349. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  350. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  351. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  352. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  353. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  354. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  355. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  364. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  365. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  366. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  367. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  368. package/shortcutContexts/commands/index.js +53 -0
  369. package/shortcutContexts/commands/index.mjs +49 -0
  370. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  371. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  372. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  373. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  374. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  375. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  376. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  377. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  378. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  380. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  381. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  382. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  383. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  384. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  385. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  386. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  387. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  388. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  389. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  390. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  391. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  401. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  402. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  403. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  404. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  405. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  406. package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
  407. package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
  408. package/shortcutContexts/commands/selectAll.js +11 -0
  409. package/shortcutContexts/commands/selectAll.mjs +6 -0
  410. package/shortcutContexts/constants.js +19 -0
  411. package/shortcutContexts/constants.mjs +12 -0
  412. package/shortcutContexts/editor.js +29 -0
  413. package/shortcutContexts/editor.mjs +25 -0
  414. package/shortcutContexts/grid.js +252 -0
  415. package/shortcutContexts/grid.mjs +248 -0
  416. package/shortcutContexts/index.js +29 -0
  417. package/shortcutContexts/index.mjs +15 -0
  418. package/shortcuts/context.js +1 -0
  419. package/shortcuts/context.mjs +1 -0
  420. package/shortcuts/manager.js +2 -0
  421. package/shortcuts/manager.mjs +2 -0
  422. package/shortcuts/recorder.js +2 -2
  423. package/shortcuts/recorder.mjs +2 -2
  424. package/shortcuts/utils.js +21 -5
  425. package/shortcuts/utils.mjs +20 -4
  426. package/tableView.js +112 -82
  427. package/tableView.mjs +112 -82
  428. package/translations/changesObservable/observable.js +41 -46
  429. package/translations/changesObservable/observable.mjs +36 -41
  430. package/translations/changesObservable/observer.js +1 -1
  431. package/translations/indexMapper.d.ts +0 -2
  432. package/translations/indexMapper.js +38 -64
  433. package/translations/indexMapper.mjs +39 -64
  434. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  435. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  436. package/translations/maps/utils/indexesSequence.js +1 -0
  437. package/translations/maps/utils/indexesSequence.mjs +1 -0
  438. package/translations/maps/utils/physicallyIndexed.js +1 -0
  439. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  440. package/utils/dataStructures/priorityMap.js +1 -0
  441. package/utils/dataStructures/priorityMap.mjs +1 -0
  442. package/utils/dataStructures/tree.js +16 -18
  443. package/utils/dataStructures/tree.mjs +16 -18
  444. package/utils/dataStructures/uniqueMap.js +1 -0
  445. package/utils/dataStructures/uniqueMap.mjs +1 -0
  446. package/utils/dataStructures/uniqueSet.js +1 -0
  447. package/utils/dataStructures/uniqueSet.mjs +1 -0
  448. package/utils/ghostTable.js +1 -0
  449. package/utils/ghostTable.mjs +1 -0
  450. package/utils/parseTable.js +5 -1
  451. package/utils/parseTable.mjs +5 -1
  452. package/utils/staticRegister.js +1 -0
  453. package/utils/staticRegister.mjs +1 -0
  454. package/focusManager.d.ts +0 -12
  455. package/focusManager.js +0 -275
  456. package/focusManager.mjs +0 -270
@@ -6,6 +6,10 @@ import "core-js/modules/web.dom-collections.iterator.js";
6
6
  import "core-js/modules/es.array.join.js";
7
7
  import "core-js/modules/es.array.sort.js";
8
8
  import "core-js/modules/es.array.map.js";
9
+ import "core-js/modules/es.regexp.constructor.js";
10
+ import "core-js/modules/es.regexp.exec.js";
11
+ import "core-js/modules/es.regexp.to-string.js";
12
+ import "core-js/modules/es.string.replace.js";
9
13
  // This file handles key-name discrepancies between browsers.
10
14
  // For the list of discrepancies, go to: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values.
11
15
  var mappings = new Map([[' ', 'space'],
@@ -41,11 +45,23 @@ export var getKeysList = function getKeysList(normalizedKeys) {
41
45
  };
42
46
 
43
47
  /**
44
- * Normalize a `KeyboardEvent.key` property, to use it for keyboard shortcuts.
48
+ * The regex tests if the event.code matches to the pattern and it's used to extract letters and digits from
49
+ * the string.
50
+ */
51
+ var codeToKeyRegExp = new RegExp('^(?:Key|Digit)([A-Z0-9])$');
52
+
53
+ /**
54
+ * Normalizes a keyboard event key value to a key before its modification. When the keyboard event
55
+ * is triggered with Alt, Control or Shift keys the `key` property contains modified key e.g. for Alt+L
56
+ * it will be `ł`. But that value is only valid for polish keyboard layout. To fix that limitations, for
57
+ * letters and digits the value is taken from the `code` property which holds original value before
58
+ * transformation.
45
59
  *
46
- * @param {string} key KeyboardEvent's key property.
60
+ * @param {Event} event The KeyboardEvent object.
47
61
  * @returns {string}
48
62
  */
49
- export var normalizeEventKey = function normalizeEventKey(key) {
50
- return key.toLowerCase();
63
+ export var normalizeEventKey = function normalizeEventKey(_ref) {
64
+ var key = _ref.key,
65
+ code = _ref.code;
66
+ return (codeToKeyRegExp.test(code) ? code.replace(codeToKeyRegExp, '$1') : key).toLowerCase();
51
67
  };
package/tableView.js CHANGED
@@ -7,6 +7,7 @@ require("core-js/modules/es.symbol.description.js");
7
7
  require("core-js/modules/es.symbol.iterator.js");
8
8
  require("core-js/modules/es.array.from.js");
9
9
  require("core-js/modules/es.array.slice.js");
10
+ require("core-js/modules/es.regexp.to-string.js");
10
11
  require("core-js/modules/es.function.name.js");
11
12
  require("core-js/modules/es.regexp.exec.js");
12
13
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
@@ -58,98 +59,88 @@ var privatePool = new WeakMap();
58
59
  var _columnHeadersCount = /*#__PURE__*/new WeakMap();
59
60
  var _rowHeadersCount = /*#__PURE__*/new WeakMap();
60
61
  var TableView = /*#__PURE__*/function () {
61
- /**
62
- * Instance of {@link Handsontable}.
63
- *
64
- * @private
65
- * @type {Handsontable}
66
- */
67
-
68
- /**
69
- * Instance of {@link EventManager}.
70
- *
71
- * @private
72
- * @type {EventManager}
73
- */
74
-
75
- /**
76
- * Current Handsontable's GridSettings object.
77
- *
78
- * @private
79
- * @type {GridSettings}
80
- */
81
-
82
- /**
83
- * Main <THEAD> element.
84
- *
85
- * @private
86
- * @type {HTMLTableSectionElement}
87
- */
88
-
89
- /**
90
- * Main <TBODY> element.
91
- *
92
- * @private
93
- * @type {HTMLTableSectionElement}
94
- */
95
-
96
- /**
97
- * Main Walkontable instance.
98
- *
99
- * @private
100
- * @type {Walkontable}
101
- */
102
-
103
- /**
104
- * Main Walkontable instance.
105
- *
106
- * @private
107
- * @type {Walkontable}
108
- */
109
-
110
- /**
111
- * The total number of the column header renderers applied to the table through the
112
- * `afterGetColumnHeaderRenderers` hook.
113
- *
114
- * @type {number}
115
- */
116
-
117
- /**
118
- * The total number of the row header renderers applied to the table through the
119
- * `afterGetRowHeaderRenderers` hook.
120
- *
121
- * @type {number}
122
- */
123
-
124
- /**
125
- * The flag determines if the `adjustElementsSize` method call was made during
126
- * the render suspending. If true, the method has to be triggered once after render
127
- * resuming.
128
- *
129
- * @private
130
- * @type {boolean}
131
- */
132
-
133
62
  /**
134
63
  * @param {Hanstontable} instance Instance of {@link Handsontable}.
135
64
  */
136
65
  function TableView(instance) {
137
66
  _classCallCheck(this, TableView);
67
+ /**
68
+ * Instance of {@link Handsontable}.
69
+ *
70
+ * @private
71
+ * @type {Handsontable}
72
+ */
138
73
  _defineProperty(this, "instance", void 0);
74
+ /**
75
+ * Instance of {@link EventManager}.
76
+ *
77
+ * @private
78
+ * @type {EventManager}
79
+ */
139
80
  _defineProperty(this, "eventManager", void 0);
81
+ /**
82
+ * Current Handsontable's GridSettings object.
83
+ *
84
+ * @private
85
+ * @type {GridSettings}
86
+ */
140
87
  _defineProperty(this, "settings", void 0);
88
+ /**
89
+ * Main <THEAD> element.
90
+ *
91
+ * @private
92
+ * @type {HTMLTableSectionElement}
93
+ */
141
94
  _defineProperty(this, "THEAD", void 0);
95
+ /**
96
+ * Main <TBODY> element.
97
+ *
98
+ * @private
99
+ * @type {HTMLTableSectionElement}
100
+ */
142
101
  _defineProperty(this, "TBODY", void 0);
102
+ /**
103
+ * Main Walkontable instance.
104
+ *
105
+ * @private
106
+ * @type {Walkontable}
107
+ */
143
108
  _defineProperty(this, "_wt", void 0);
109
+ /**
110
+ * Main Walkontable instance.
111
+ *
112
+ * @private
113
+ * @type {Walkontable}
114
+ */
144
115
  _defineProperty(this, "activeWt", void 0);
116
+ /**
117
+ * The total number of the column header renderers applied to the table through the
118
+ * `afterGetColumnHeaderRenderers` hook.
119
+ *
120
+ * @type {number}
121
+ */
145
122
  _classPrivateFieldInitSpec(this, _columnHeadersCount, {
146
123
  writable: true,
147
124
  value: 0
148
125
  });
126
+ /**
127
+ * The total number of the row header renderers applied to the table through the
128
+ * `afterGetRowHeaderRenderers` hook.
129
+ *
130
+ * @type {number}
131
+ */
149
132
  _classPrivateFieldInitSpec(this, _rowHeadersCount, {
150
133
  writable: true,
151
134
  value: 0
152
135
  });
136
+ /**
137
+ * The flag determines if the `adjustElementsSize` method call was made during
138
+ * the render suspending. If true, the method has to be triggered once after render
139
+ * resuming.
140
+ *
141
+ * @private
142
+ * @type {boolean}
143
+ */
153
144
  _defineProperty(this, "postponedAdjustElementsSize", false);
154
145
  this.instance = instance;
155
146
  this.eventManager = new _eventManager.default(this.instance);
@@ -309,7 +300,6 @@ var TableView = /*#__PURE__*/function () {
309
300
  (0, _element.addClass)(rootElement, 'handsontable');
310
301
  priv.table = rootDocument.createElement('TABLE');
311
302
  (0, _element.addClass)(priv.table, 'htCore');
312
- priv.table.setAttribute('role', 'treegrid');
313
303
  if (this.instance.getSettings().tableClassName) {
314
304
  (0, _element.addClass)(priv.table, this.instance.getSettings().tableClassName);
315
305
  }
@@ -366,11 +356,14 @@ var TableView = /*#__PURE__*/function () {
366
356
  });
367
357
  this.eventManager.addEventListener(documentElement, 'mouseup', function (event) {
368
358
  if (selection.isInProgress() && (0, _event.isLeftClick)(event)) {
369
- // is left mouse button
370
359
  selection.finish();
371
360
  }
372
361
  priv.mouseDown = false;
373
- if ((0, _element.isOutsideInput)(rootDocument.activeElement) || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !(0, _event.isRightClick)(event)) {
362
+ var isOutsideInputElement = (0, _element.isOutsideInput)(rootDocument.activeElement);
363
+ if (!isOutsideInputElement) {
364
+ return;
365
+ }
366
+ if (isOutsideInputElement || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !(0, _event.isRightClick)(event)) {
374
367
  _this.instance.unlisten();
375
368
  }
376
369
  });
@@ -623,6 +616,44 @@ var TableView = /*#__PURE__*/function () {
623
616
  return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
624
617
  }
625
618
 
619
+ /**
620
+ * The function returns the number of renderable column indexes within the passed range of the visual indexes.
621
+ *
622
+ * @param {number} columnStart The column visual start index.
623
+ * @param {number} columnEnd The column visual end index.
624
+ * @returns {number}
625
+ */
626
+ }, {
627
+ key: "countRenderableColumnsInRange",
628
+ value: function countRenderableColumnsInRange(columnStart, columnEnd) {
629
+ var count = 0;
630
+ for (var column = columnStart; column <= columnEnd; column++) {
631
+ if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
632
+ count += 1;
633
+ }
634
+ }
635
+ return count;
636
+ }
637
+
638
+ /**
639
+ * The function returns the number of renderable row indexes within the passed range of the visual indexes.
640
+ *
641
+ * @param {number} rowStart The row visual start index.
642
+ * @param {number} rowEnd The row visual end index.
643
+ * @returns {number}
644
+ */
645
+ }, {
646
+ key: "countRenderableRowsInRange",
647
+ value: function countRenderableRowsInRange(rowStart, rowEnd) {
648
+ var count = 0;
649
+ for (var row = rowStart; row <= rowEnd; row++) {
650
+ if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
651
+ count += 1;
652
+ }
653
+ }
654
+ return count;
655
+ }
656
+
626
657
  /**
627
658
  * Checks if at least one cell than belongs to the main table is not covered by the top, left or
628
659
  * bottom overlay.
@@ -884,10 +915,12 @@ var TableView = /*#__PURE__*/function () {
884
915
  return _this2.afterRender(force);
885
916
  },
886
917
  onScrollVertically: function onScrollVertically() {
887
- return _this2.instance.runHooks('afterScrollVertically');
918
+ _this2.instance.runHooks('afterScrollVertically');
919
+ _this2.instance.runHooks('afterScroll');
888
920
  },
889
921
  onScrollHorizontally: function onScrollHorizontally() {
890
- return _this2.instance.runHooks('afterScrollHorizontally');
922
+ _this2.instance.runHooks('afterScrollHorizontally');
923
+ _this2.instance.runHooks('afterScroll');
891
924
  },
892
925
  onBeforeRemoveCellClassNames: function onBeforeRemoveCellClassNames() {
893
926
  return _this2.instance.runHooks('beforeRemoveCellClassNames');
@@ -927,10 +960,7 @@ var TableView = /*#__PURE__*/function () {
927
960
  var selectedRange = _this2.instance.selection.getSelectedRange();
928
961
  var selectionRangeSize = selectedRange.size();
929
962
  if (selectionRangeSize > 0) {
930
- // Selection layers are stored from the "oldest" to the "newest". We should calculate the offset.
931
- // Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
932
- var selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
933
- var selectionForLayer = selectedRange.peekByIndex(selectionOffset);
963
+ var selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
934
964
  cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
935
965
  }
936
966
  return _this2.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
@@ -1104,7 +1134,7 @@ var TableView = /*#__PURE__*/function () {
1104
1134
  key: "isSelectedOnlyCell",
1105
1135
  value: function isSelectedOnlyCell() {
1106
1136
  var _this$instance$getSel, _this$instance$getSel2;
1107
- return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingle()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
1137
+ return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
1108
1138
  }
1109
1139
 
1110
1140
  /**
package/tableView.mjs CHANGED
@@ -36,6 +36,7 @@ import "core-js/modules/es.symbol.description.js";
36
36
  import "core-js/modules/es.symbol.iterator.js";
37
37
  import "core-js/modules/es.array.from.js";
38
38
  import "core-js/modules/es.array.slice.js";
39
+ import "core-js/modules/es.regexp.to-string.js";
39
40
  import "core-js/modules/es.function.name.js";
40
41
  import "core-js/modules/es.regexp.exec.js";
41
42
  import { addClass, clearTextSelection, empty, fastInnerHTML, fastInnerText, getScrollbarWidth, hasClass, isChildOf, isInput, isOutsideInput } from "./helpers/dom/element.mjs";
@@ -53,98 +54,88 @@ var privatePool = new WeakMap();
53
54
  var _columnHeadersCount = /*#__PURE__*/new WeakMap();
54
55
  var _rowHeadersCount = /*#__PURE__*/new WeakMap();
55
56
  var TableView = /*#__PURE__*/function () {
56
- /**
57
- * Instance of {@link Handsontable}.
58
- *
59
- * @private
60
- * @type {Handsontable}
61
- */
62
-
63
- /**
64
- * Instance of {@link EventManager}.
65
- *
66
- * @private
67
- * @type {EventManager}
68
- */
69
-
70
- /**
71
- * Current Handsontable's GridSettings object.
72
- *
73
- * @private
74
- * @type {GridSettings}
75
- */
76
-
77
- /**
78
- * Main <THEAD> element.
79
- *
80
- * @private
81
- * @type {HTMLTableSectionElement}
82
- */
83
-
84
- /**
85
- * Main <TBODY> element.
86
- *
87
- * @private
88
- * @type {HTMLTableSectionElement}
89
- */
90
-
91
- /**
92
- * Main Walkontable instance.
93
- *
94
- * @private
95
- * @type {Walkontable}
96
- */
97
-
98
- /**
99
- * Main Walkontable instance.
100
- *
101
- * @private
102
- * @type {Walkontable}
103
- */
104
-
105
- /**
106
- * The total number of the column header renderers applied to the table through the
107
- * `afterGetColumnHeaderRenderers` hook.
108
- *
109
- * @type {number}
110
- */
111
-
112
- /**
113
- * The total number of the row header renderers applied to the table through the
114
- * `afterGetRowHeaderRenderers` hook.
115
- *
116
- * @type {number}
117
- */
118
-
119
- /**
120
- * The flag determines if the `adjustElementsSize` method call was made during
121
- * the render suspending. If true, the method has to be triggered once after render
122
- * resuming.
123
- *
124
- * @private
125
- * @type {boolean}
126
- */
127
-
128
57
  /**
129
58
  * @param {Hanstontable} instance Instance of {@link Handsontable}.
130
59
  */
131
60
  function TableView(instance) {
132
61
  _classCallCheck(this, TableView);
62
+ /**
63
+ * Instance of {@link Handsontable}.
64
+ *
65
+ * @private
66
+ * @type {Handsontable}
67
+ */
133
68
  _defineProperty(this, "instance", void 0);
69
+ /**
70
+ * Instance of {@link EventManager}.
71
+ *
72
+ * @private
73
+ * @type {EventManager}
74
+ */
134
75
  _defineProperty(this, "eventManager", void 0);
76
+ /**
77
+ * Current Handsontable's GridSettings object.
78
+ *
79
+ * @private
80
+ * @type {GridSettings}
81
+ */
135
82
  _defineProperty(this, "settings", void 0);
83
+ /**
84
+ * Main <THEAD> element.
85
+ *
86
+ * @private
87
+ * @type {HTMLTableSectionElement}
88
+ */
136
89
  _defineProperty(this, "THEAD", void 0);
90
+ /**
91
+ * Main <TBODY> element.
92
+ *
93
+ * @private
94
+ * @type {HTMLTableSectionElement}
95
+ */
137
96
  _defineProperty(this, "TBODY", void 0);
97
+ /**
98
+ * Main Walkontable instance.
99
+ *
100
+ * @private
101
+ * @type {Walkontable}
102
+ */
138
103
  _defineProperty(this, "_wt", void 0);
104
+ /**
105
+ * Main Walkontable instance.
106
+ *
107
+ * @private
108
+ * @type {Walkontable}
109
+ */
139
110
  _defineProperty(this, "activeWt", void 0);
111
+ /**
112
+ * The total number of the column header renderers applied to the table through the
113
+ * `afterGetColumnHeaderRenderers` hook.
114
+ *
115
+ * @type {number}
116
+ */
140
117
  _classPrivateFieldInitSpec(this, _columnHeadersCount, {
141
118
  writable: true,
142
119
  value: 0
143
120
  });
121
+ /**
122
+ * The total number of the row header renderers applied to the table through the
123
+ * `afterGetRowHeaderRenderers` hook.
124
+ *
125
+ * @type {number}
126
+ */
144
127
  _classPrivateFieldInitSpec(this, _rowHeadersCount, {
145
128
  writable: true,
146
129
  value: 0
147
130
  });
131
+ /**
132
+ * The flag determines if the `adjustElementsSize` method call was made during
133
+ * the render suspending. If true, the method has to be triggered once after render
134
+ * resuming.
135
+ *
136
+ * @private
137
+ * @type {boolean}
138
+ */
148
139
  _defineProperty(this, "postponedAdjustElementsSize", false);
149
140
  this.instance = instance;
150
141
  this.eventManager = new EventManager(this.instance);
@@ -304,7 +295,6 @@ var TableView = /*#__PURE__*/function () {
304
295
  addClass(rootElement, 'handsontable');
305
296
  priv.table = rootDocument.createElement('TABLE');
306
297
  addClass(priv.table, 'htCore');
307
- priv.table.setAttribute('role', 'treegrid');
308
298
  if (this.instance.getSettings().tableClassName) {
309
299
  addClass(priv.table, this.instance.getSettings().tableClassName);
310
300
  }
@@ -361,11 +351,14 @@ var TableView = /*#__PURE__*/function () {
361
351
  });
362
352
  this.eventManager.addEventListener(documentElement, 'mouseup', function (event) {
363
353
  if (selection.isInProgress() && isLeftClick(event)) {
364
- // is left mouse button
365
354
  selection.finish();
366
355
  }
367
356
  priv.mouseDown = false;
368
- if (isOutsideInput(rootDocument.activeElement) || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !isRightClick(event)) {
357
+ var isOutsideInputElement = isOutsideInput(rootDocument.activeElement);
358
+ if (!isOutsideInputElement) {
359
+ return;
360
+ }
361
+ if (isOutsideInputElement || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !isRightClick(event)) {
369
362
  _this.instance.unlisten();
370
363
  }
371
364
  });
@@ -618,6 +611,44 @@ var TableView = /*#__PURE__*/function () {
618
611
  return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
619
612
  }
620
613
 
614
+ /**
615
+ * The function returns the number of renderable column indexes within the passed range of the visual indexes.
616
+ *
617
+ * @param {number} columnStart The column visual start index.
618
+ * @param {number} columnEnd The column visual end index.
619
+ * @returns {number}
620
+ */
621
+ }, {
622
+ key: "countRenderableColumnsInRange",
623
+ value: function countRenderableColumnsInRange(columnStart, columnEnd) {
624
+ var count = 0;
625
+ for (var column = columnStart; column <= columnEnd; column++) {
626
+ if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
627
+ count += 1;
628
+ }
629
+ }
630
+ return count;
631
+ }
632
+
633
+ /**
634
+ * The function returns the number of renderable row indexes within the passed range of the visual indexes.
635
+ *
636
+ * @param {number} rowStart The row visual start index.
637
+ * @param {number} rowEnd The row visual end index.
638
+ * @returns {number}
639
+ */
640
+ }, {
641
+ key: "countRenderableRowsInRange",
642
+ value: function countRenderableRowsInRange(rowStart, rowEnd) {
643
+ var count = 0;
644
+ for (var row = rowStart; row <= rowEnd; row++) {
645
+ if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
646
+ count += 1;
647
+ }
648
+ }
649
+ return count;
650
+ }
651
+
621
652
  /**
622
653
  * Checks if at least one cell than belongs to the main table is not covered by the top, left or
623
654
  * bottom overlay.
@@ -879,10 +910,12 @@ var TableView = /*#__PURE__*/function () {
879
910
  return _this2.afterRender(force);
880
911
  },
881
912
  onScrollVertically: function onScrollVertically() {
882
- return _this2.instance.runHooks('afterScrollVertically');
913
+ _this2.instance.runHooks('afterScrollVertically');
914
+ _this2.instance.runHooks('afterScroll');
883
915
  },
884
916
  onScrollHorizontally: function onScrollHorizontally() {
885
- return _this2.instance.runHooks('afterScrollHorizontally');
917
+ _this2.instance.runHooks('afterScrollHorizontally');
918
+ _this2.instance.runHooks('afterScroll');
886
919
  },
887
920
  onBeforeRemoveCellClassNames: function onBeforeRemoveCellClassNames() {
888
921
  return _this2.instance.runHooks('beforeRemoveCellClassNames');
@@ -922,10 +955,7 @@ var TableView = /*#__PURE__*/function () {
922
955
  var selectedRange = _this2.instance.selection.getSelectedRange();
923
956
  var selectionRangeSize = selectedRange.size();
924
957
  if (selectionRangeSize > 0) {
925
- // Selection layers are stored from the "oldest" to the "newest". We should calculate the offset.
926
- // Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
927
- var selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
928
- var selectionForLayer = selectedRange.peekByIndex(selectionOffset);
958
+ var selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
929
959
  cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
930
960
  }
931
961
  return _this2.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
@@ -1099,7 +1129,7 @@ var TableView = /*#__PURE__*/function () {
1099
1129
  key: "isSelectedOnlyCell",
1100
1130
  value: function isSelectedOnlyCell() {
1101
1131
  var _this$instance$getSel, _this$instance$getSel2;
1102
- return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingle()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
1132
+ return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
1103
1133
  }
1104
1134
 
1105
1135
  /**