handsontable 13.1.0 → 14.0.0-next-d97b156-20231027

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 (691) hide show
  1. package/3rdparty/walkontable/src/calculator/constants.js +3 -6
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
  4. package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
  5. package/3rdparty/walkontable/src/cell/coords.js +81 -13
  6. package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
  7. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  8. package/3rdparty/walkontable/src/cell/range.js +39 -9
  9. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  10. package/3rdparty/walkontable/src/core/_base.js +9 -3
  11. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  12. package/3rdparty/walkontable/src/core/clone.js +2 -2
  13. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  14. package/3rdparty/walkontable/src/core/core.js +3 -2
  15. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  16. package/3rdparty/walkontable/src/event.js +13 -12
  17. package/3rdparty/walkontable/src/event.mjs +12 -10
  18. package/3rdparty/walkontable/src/facade/core.js +2 -2
  19. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  20. package/3rdparty/walkontable/src/filter/column.js +1 -2
  21. package/3rdparty/walkontable/src/filter/row.js +1 -2
  22. package/3rdparty/walkontable/src/index.js +12 -4
  23. package/3rdparty/walkontable/src/index.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  25. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  26. package/3rdparty/walkontable/src/overlay/constants.js +7 -14
  27. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  28. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  29. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  30. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  31. package/3rdparty/walkontable/src/overlays.js +1 -2
  32. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  33. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  34. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -0
  35. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
  36. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
  37. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -0
  38. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  39. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  40. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  41. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  42. package/3rdparty/walkontable/src/scroll.js +3 -2
  43. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  44. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
  45. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  46. package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
  47. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  48. package/3rdparty/walkontable/src/selection/constants.js +54 -0
  49. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  50. package/3rdparty/walkontable/src/selection/index.js +26 -0
  51. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  52. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  53. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  54. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  55. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  56. package/3rdparty/walkontable/src/selection/selection.js +100 -0
  57. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  58. package/3rdparty/walkontable/src/settings.js +13 -4
  59. package/3rdparty/walkontable/src/settings.mjs +13 -4
  60. package/3rdparty/walkontable/src/table/bottom.js +1 -2
  61. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
  62. package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
  63. package/3rdparty/walkontable/src/table/master.js +3 -6
  64. package/3rdparty/walkontable/src/table/master.mjs +2 -4
  65. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
  66. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  67. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
  68. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  69. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
  70. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
  72. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  73. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
  74. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  75. package/3rdparty/walkontable/src/table/top.js +1 -2
  76. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
  77. package/3rdparty/walkontable/src/table.js +20 -80
  78. package/3rdparty/walkontable/src/table.mjs +20 -79
  79. package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
  80. package/3rdparty/walkontable/src/viewport.js +1 -2
  81. package/CHANGELOG.md +51 -0
  82. package/base.js +3 -4
  83. package/base.mjs +2 -2
  84. package/cellTypes/autocompleteType/autocompleteType.js +3 -5
  85. package/cellTypes/checkboxType/checkboxType.js +3 -5
  86. package/cellTypes/dateType/dateType.d.ts +3 -3
  87. package/cellTypes/dateType/dateType.js +5 -7
  88. package/cellTypes/dateType/dateType.mjs +2 -2
  89. package/cellTypes/dropdownType/dropdownType.js +3 -5
  90. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  91. package/cellTypes/handsontableType/handsontableType.js +5 -7
  92. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  93. package/cellTypes/index.d.ts +3 -0
  94. package/cellTypes/index.js +4 -0
  95. package/cellTypes/index.mjs +3 -1
  96. package/cellTypes/numericType/numericType.js +3 -5
  97. package/cellTypes/passwordType/passwordType.js +3 -5
  98. package/cellTypes/selectType/index.d.ts +1 -0
  99. package/cellTypes/selectType/index.js +6 -0
  100. package/cellTypes/selectType/index.mjs +1 -0
  101. package/cellTypes/selectType/selectType.d.ts +14 -0
  102. package/cellTypes/selectType/selectType.js +11 -0
  103. package/cellTypes/selectType/selectType.mjs +8 -0
  104. package/cellTypes/textType/textType.js +3 -5
  105. package/cellTypes/timeType/timeType.js +3 -5
  106. package/common.d.ts +1 -1
  107. package/core/focusCatcher/focusDetector.js +63 -0
  108. package/core/focusCatcher/focusDetector.mjs +59 -0
  109. package/core/focusCatcher/index.js +148 -0
  110. package/core/focusCatcher/index.mjs +144 -0
  111. package/core/index.js +9 -0
  112. package/core/index.mjs +1 -0
  113. package/core.d.ts +10 -5
  114. package/core.js +327 -359
  115. package/core.mjs +327 -359
  116. package/dataMap/dataMap.js +1 -2
  117. package/dataMap/dataSource.js +1 -2
  118. package/dataMap/metaManager/metaSchema.js +65 -0
  119. package/dataMap/metaManager/metaSchema.mjs +65 -0
  120. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  121. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  122. package/dataMap/replaceData.js +5 -0
  123. package/dataMap/replaceData.mjs +5 -0
  124. package/dist/handsontable.css +94 -76
  125. package/dist/handsontable.full.css +94 -76
  126. package/dist/handsontable.full.js +21236 -14104
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +22016 -15254
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +31 -23
  132. package/dist/languages/all.js +47 -40
  133. package/dist/languages/all.min.js +1 -1
  134. package/dist/languages/ar-AR.js +1 -2
  135. package/dist/languages/cs-CZ.js +1 -2
  136. package/dist/languages/de-CH.js +1 -2
  137. package/dist/languages/de-DE.js +1 -2
  138. package/dist/languages/en-US.js +15 -3
  139. package/dist/languages/en-US.min.js +1 -1
  140. package/dist/languages/es-MX.js +1 -2
  141. package/dist/languages/fr-FR.js +1 -2
  142. package/dist/languages/it-IT.js +1 -2
  143. package/dist/languages/ja-JP.js +1 -2
  144. package/dist/languages/ko-KR.js +1 -2
  145. package/dist/languages/lv-LV.js +1 -2
  146. package/dist/languages/nb-NO.js +1 -2
  147. package/dist/languages/nl-NL.js +1 -2
  148. package/dist/languages/pl-PL.js +15 -3
  149. package/dist/languages/pl-PL.min.js +1 -1
  150. package/dist/languages/pt-BR.js +1 -2
  151. package/dist/languages/ru-RU.js +1 -2
  152. package/dist/languages/sr-SP.js +1 -2
  153. package/dist/languages/zh-CN.js +1 -2
  154. package/dist/languages/zh-TW.js +1 -2
  155. package/editorManager.js +17 -91
  156. package/editorManager.mjs +16 -87
  157. package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
  158. package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
  159. package/editors/baseEditor/baseEditor.js +19 -13
  160. package/editors/baseEditor/baseEditor.mjs +16 -7
  161. package/editors/checkboxEditor/checkboxEditor.js +1 -2
  162. package/editors/dateEditor/dateEditor.js +27 -9
  163. package/editors/dateEditor/dateEditor.mjs +27 -8
  164. package/editors/dropdownEditor/dropdownEditor.js +1 -2
  165. package/editors/handsontableEditor/handsontableEditor.js +14 -7
  166. package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
  167. package/editors/numericEditor/numericEditor.js +1 -2
  168. package/editors/passwordEditor/passwordEditor.js +1 -2
  169. package/editors/selectEditor/selectEditor.js +1 -2
  170. package/editors/textEditor/textEditor.js +20 -29
  171. package/editors/textEditor/textEditor.mjs +22 -30
  172. package/editors/timeEditor/timeEditor.js +1 -2
  173. package/eventManager.js +1 -2
  174. package/focusManager.d.ts +12 -0
  175. package/focusManager.js +265 -0
  176. package/focusManager.mjs +261 -0
  177. package/helpers/a11y.js +81 -0
  178. package/helpers/a11y.mjs +39 -0
  179. package/helpers/dom/element.js +224 -12
  180. package/helpers/dom/element.mjs +216 -10
  181. package/helpers/dom/event.d.ts +1 -0
  182. package/helpers/dom/event.js +25 -0
  183. package/helpers/dom/event.mjs +24 -0
  184. package/helpers/mixed.js +2 -2
  185. package/helpers/mixed.mjs +2 -2
  186. package/helpers/number.d.ts +1 -0
  187. package/helpers/number.js +18 -0
  188. package/helpers/number.mjs +17 -0
  189. package/helpers/unicode.js +1 -2
  190. package/i18n/constants.js +97 -160
  191. package/i18n/constants.mjs +17 -1
  192. package/i18n/languages/ar-AR.js +3 -4
  193. package/i18n/languages/cs-CZ.js +3 -4
  194. package/i18n/languages/de-CH.js +3 -4
  195. package/i18n/languages/de-DE.js +3 -4
  196. package/i18n/languages/en-US.js +17 -5
  197. package/i18n/languages/en-US.mjs +14 -1
  198. package/i18n/languages/es-MX.js +3 -4
  199. package/i18n/languages/fr-FR.js +3 -4
  200. package/i18n/languages/it-IT.js +3 -4
  201. package/i18n/languages/ja-JP.js +3 -4
  202. package/i18n/languages/ko-KR.js +3 -4
  203. package/i18n/languages/lv-LV.js +3 -4
  204. package/i18n/languages/nb-NO.js +3 -4
  205. package/i18n/languages/nl-NL.js +3 -4
  206. package/i18n/languages/pl-PL.js +17 -5
  207. package/i18n/languages/pl-PL.mjs +14 -1
  208. package/i18n/languages/pt-BR.js +3 -4
  209. package/i18n/languages/ru-RU.js +3 -4
  210. package/i18n/languages/sr-SP.js +3 -4
  211. package/i18n/languages/zh-CN.js +3 -4
  212. package/i18n/languages/zh-TW.js +3 -4
  213. package/i18n/registry.js +4 -6
  214. package/index.js +3 -4
  215. package/languages/all.js +47 -40
  216. package/languages/ar-AR.js +1 -2
  217. package/languages/cs-CZ.js +1 -2
  218. package/languages/de-CH.js +1 -2
  219. package/languages/de-DE.js +1 -2
  220. package/languages/en-US.js +15 -3
  221. package/languages/en-US.mjs +14 -1
  222. package/languages/es-MX.js +1 -2
  223. package/languages/fr-FR.js +1 -2
  224. package/languages/index.js +47 -40
  225. package/languages/it-IT.js +1 -2
  226. package/languages/ja-JP.js +1 -2
  227. package/languages/ko-KR.js +1 -2
  228. package/languages/lv-LV.js +1 -2
  229. package/languages/nb-NO.js +1 -2
  230. package/languages/nl-NL.js +1 -2
  231. package/languages/pl-PL.js +15 -3
  232. package/languages/pl-PL.mjs +14 -1
  233. package/languages/pt-BR.js +1 -2
  234. package/languages/ru-RU.js +1 -2
  235. package/languages/sr-SP.js +1 -2
  236. package/languages/zh-CN.js +1 -2
  237. package/languages/zh-TW.js +1 -2
  238. package/mixins/hooksRefRegisterer.js +1 -2
  239. package/mixins/localHooks.js +1 -2
  240. package/package.json +119 -96
  241. package/pluginHooks.d.ts +42 -7
  242. package/pluginHooks.js +301 -65
  243. package/pluginHooks.mjs +300 -63
  244. package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
  245. package/plugins/autoColumnSize/autoColumnSize.js +2 -4
  246. package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
  247. package/plugins/autoRowSize/autoRowSize.js +15 -10
  248. package/plugins/autoRowSize/autoRowSize.mjs +13 -6
  249. package/plugins/autofill/autofill.js +2 -4
  250. package/plugins/autofill/utils.js +1 -2
  251. package/plugins/base/base.js +1 -2
  252. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
  253. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
  254. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
  255. package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
  256. package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
  257. package/plugins/columnSorting/columnSorting.js +71 -6
  258. package/plugins/columnSorting/columnSorting.mjs +70 -3
  259. package/plugins/columnSorting/index.js +3 -1
  260. package/plugins/columnSorting/index.mjs +1 -1
  261. package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
  262. package/plugins/columnSorting/sortFunction/date.js +1 -2
  263. package/plugins/columnSorting/sortFunction/default.js +1 -2
  264. package/plugins/columnSorting/sortFunction/numeric.js +1 -2
  265. package/plugins/columnSorting/sortService/engine.js +3 -6
  266. package/plugins/columnSorting/utils.js +3 -6
  267. package/plugins/columnSummary/columnSummary.js +2 -4
  268. package/plugins/columnSummary/endpoints.js +1 -2
  269. package/plugins/comments/commentEditor.js +2 -2
  270. package/plugins/comments/commentEditor.mjs +1 -0
  271. package/plugins/comments/comments.js +254 -197
  272. package/plugins/comments/comments.mjs +251 -190
  273. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  274. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  275. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  276. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  277. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  278. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  279. package/plugins/comments/displaySwitch.js +1 -2
  280. package/plugins/contextMenu/commandExecutor.js +2 -3
  281. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  282. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  283. package/plugins/contextMenu/contextMenu.js +77 -40
  284. package/plugins/contextMenu/contextMenu.mjs +74 -35
  285. package/plugins/contextMenu/itemsFactory.js +2 -3
  286. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  287. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  288. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  289. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  290. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  291. package/plugins/contextMenu/menu/index.js +9 -0
  292. package/plugins/contextMenu/menu/index.mjs +1 -0
  293. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  294. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  295. package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
  296. package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
  297. package/plugins/contextMenu/menu/navigator.js +27 -0
  298. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  299. package/plugins/contextMenu/menu/positioner.js +213 -0
  300. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  301. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  302. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  303. package/plugins/contextMenu/menu/utils.js +177 -0
  304. package/plugins/contextMenu/menu/utils.mjs +163 -0
  305. package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
  306. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  307. package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
  308. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  309. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
  310. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  311. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
  312. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  313. package/plugins/contextMenu/predefinedItems/index.js +75 -0
  314. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  315. package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
  316. package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
  317. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  318. package/plugins/contextMenu/predefinedItems/redo.js +3 -4
  319. package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
  320. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  321. package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
  322. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  323. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
  324. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  325. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
  326. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  327. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  328. package/plugins/contextMenu/predefinedItems/undo.js +3 -4
  329. package/plugins/contextMenu/utils.js +35 -151
  330. package/plugins/contextMenu/utils.mjs +35 -144
  331. package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
  332. package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
  333. package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
  334. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
  335. package/plugins/copyPaste/clipboardData/index.js +9 -0
  336. package/plugins/copyPaste/clipboardData/index.mjs +4 -0
  337. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
  338. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
  339. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  340. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  341. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  342. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  343. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  344. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  345. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  346. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  347. package/plugins/copyPaste/contextMenuItem/cut.js +9 -2
  348. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  349. package/plugins/copyPaste/copyPaste.js +160 -167
  350. package/plugins/copyPaste/copyPaste.mjs +161 -166
  351. package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
  352. package/plugins/customBorders/contextMenuItem/left.js +2 -2
  353. package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
  354. package/plugins/customBorders/contextMenuItem/right.js +2 -2
  355. package/plugins/customBorders/contextMenuItem/top.js +2 -2
  356. package/plugins/customBorders/customBorders.js +27 -26
  357. package/plugins/customBorders/customBorders.mjs +24 -21
  358. package/plugins/dragToScroll/dragToScroll.js +2 -4
  359. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  360. package/plugins/dropdownMenu/dropdownMenu.js +130 -44
  361. package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
  362. package/plugins/exportFile/dataProvider.js +1 -2
  363. package/plugins/exportFile/exportFile.js +4 -6
  364. package/plugins/exportFile/typeFactory.js +5 -8
  365. package/plugins/exportFile/types/_base.js +1 -2
  366. package/plugins/exportFile/types/csv.js +1 -2
  367. package/plugins/filters/component/_base.js +23 -8
  368. package/plugins/filters/component/_base.mjs +23 -8
  369. package/plugins/filters/component/actionBar.js +31 -29
  370. package/plugins/filters/component/actionBar.mjs +26 -23
  371. package/plugins/filters/component/condition.js +48 -61
  372. package/plugins/filters/component/condition.mjs +40 -52
  373. package/plugins/filters/component/operators.js +21 -22
  374. package/plugins/filters/component/operators.mjs +18 -18
  375. package/plugins/filters/component/value.js +37 -28
  376. package/plugins/filters/component/value.mjs +32 -22
  377. package/plugins/filters/condition/beginsWith.js +3 -4
  378. package/plugins/filters/condition/between.js +3 -4
  379. package/plugins/filters/condition/byValue.js +1 -2
  380. package/plugins/filters/condition/contains.js +3 -4
  381. package/plugins/filters/condition/date/after.js +3 -4
  382. package/plugins/filters/condition/date/before.js +3 -4
  383. package/plugins/filters/condition/date/today.js +3 -4
  384. package/plugins/filters/condition/date/tomorrow.js +3 -4
  385. package/plugins/filters/condition/date/yesterday.js +3 -4
  386. package/plugins/filters/condition/empty.js +3 -4
  387. package/plugins/filters/condition/endsWith.js +3 -4
  388. package/plugins/filters/condition/equal.js +3 -4
  389. package/plugins/filters/condition/false.js +1 -2
  390. package/plugins/filters/condition/greaterThan.js +3 -4
  391. package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
  392. package/plugins/filters/condition/lessThan.js +3 -4
  393. package/plugins/filters/condition/lessThanOrEqual.js +3 -4
  394. package/plugins/filters/condition/none.js +3 -4
  395. package/plugins/filters/condition/notBetween.js +3 -4
  396. package/plugins/filters/condition/notContains.js +3 -4
  397. package/plugins/filters/condition/notEmpty.js +3 -4
  398. package/plugins/filters/condition/notEqual.js +3 -4
  399. package/plugins/filters/condition/true.js +1 -2
  400. package/plugins/filters/conditionCollection.d.ts +3 -2
  401. package/plugins/filters/conditionCollection.js +1 -2
  402. package/plugins/filters/conditionRegisterer.js +1 -2
  403. package/plugins/filters/conditionUpdateObserver.js +1 -2
  404. package/plugins/filters/constants.js +4 -8
  405. package/plugins/filters/constants.mjs +1 -1
  406. package/plugins/filters/dataFilter.js +1 -2
  407. package/plugins/filters/filters.d.ts +3 -5
  408. package/plugins/filters/filters.js +108 -66
  409. package/plugins/filters/filters.mjs +99 -55
  410. package/plugins/filters/logicalOperationRegisterer.js +1 -2
  411. package/plugins/filters/logicalOperations/conjunction.js +4 -6
  412. package/plugins/filters/logicalOperations/disjunction.js +4 -6
  413. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
  414. package/plugins/filters/menu/focusController.js +123 -0
  415. package/plugins/filters/menu/focusController.mjs +119 -0
  416. package/plugins/filters/menu/focusNavigator.js +30 -0
  417. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  418. package/plugins/filters/ui/_base.js +37 -15
  419. package/plugins/filters/ui/_base.mjs +35 -13
  420. package/plugins/filters/ui/input.js +43 -35
  421. package/plugins/filters/ui/input.mjs +42 -33
  422. package/plugins/filters/ui/link.js +44 -12
  423. package/plugins/filters/ui/link.mjs +44 -11
  424. package/plugins/filters/ui/multipleSelect.js +237 -133
  425. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  426. package/plugins/filters/ui/radioInput.js +42 -18
  427. package/plugins/filters/ui/radioInput.mjs +42 -17
  428. package/plugins/filters/ui/select.js +152 -77
  429. package/plugins/filters/ui/select.mjs +148 -72
  430. package/plugins/formulas/engine/settings.js +2 -4
  431. package/plugins/formulas/formulas.js +3 -6
  432. package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
  433. package/plugins/formulas/indexSyncer/index.js +1 -2
  434. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
  435. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  436. package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
  437. package/plugins/hiddenColumns/hiddenColumns.js +49 -6
  438. package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
  439. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
  440. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  441. package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
  442. package/plugins/hiddenRows/hiddenRows.js +49 -6
  443. package/plugins/hiddenRows/hiddenRows.mjs +48 -3
  444. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
  445. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
  446. package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
  447. package/plugins/manualColumnMove/manualColumnMove.js +9 -17
  448. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
  449. package/plugins/manualColumnMove/ui/_base.js +1 -2
  450. package/plugins/manualColumnMove/ui/backlight.js +1 -2
  451. package/plugins/manualColumnMove/ui/guideline.js +1 -2
  452. package/plugins/manualColumnResize/manualColumnResize.js +2 -4
  453. package/plugins/manualRowMove/manualRowMove.js +6 -23
  454. package/plugins/manualRowMove/manualRowMove.mjs +4 -19
  455. package/plugins/manualRowMove/ui/_base.js +1 -2
  456. package/plugins/manualRowMove/ui/backlight.js +1 -2
  457. package/plugins/manualRowMove/ui/guideline.js +1 -2
  458. package/plugins/manualRowResize/manualRowResize.js +2 -4
  459. package/plugins/mergeCells/calculations/autofill.js +1 -2
  460. package/plugins/mergeCells/calculations/selection.js +1 -2
  461. package/plugins/mergeCells/cellCoords.js +1 -2
  462. package/plugins/mergeCells/cellsCollection.js +1 -2
  463. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
  464. package/plugins/mergeCells/mergeCells.js +7 -20
  465. package/plugins/mergeCells/mergeCells.mjs +5 -16
  466. package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
  467. package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
  468. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
  469. package/plugins/nestedHeaders/nestedHeaders.js +263 -36
  470. package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
  471. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  472. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  473. package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
  474. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  475. package/plugins/nestedRows/data/dataManager.js +1 -2
  476. package/plugins/nestedRows/nestedRows.js +47 -10
  477. package/plugins/nestedRows/nestedRows.mjs +45 -6
  478. package/plugins/nestedRows/ui/_base.js +1 -2
  479. package/plugins/nestedRows/ui/collapsing.js +1 -2
  480. package/plugins/nestedRows/ui/contextMenu.js +3 -4
  481. package/plugins/nestedRows/ui/headers.js +13 -3
  482. package/plugins/nestedRows/ui/headers.mjs +13 -2
  483. package/plugins/persistentState/persistentState.js +2 -4
  484. package/plugins/persistentState/storage.js +1 -2
  485. package/plugins/search/search.js +2 -4
  486. package/plugins/touchScroll/touchScroll.js +2 -4
  487. package/plugins/trimRows/trimRows.js +2 -4
  488. package/plugins/undoRedo/index.js +2 -2
  489. package/plugins/undoRedo/undoRedo.js +2 -4
  490. package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
  491. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  492. package/renderers/baseRenderer/baseRenderer.js +18 -2
  493. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  494. package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
  495. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  496. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  497. package/renderers/dateRenderer/dateRenderer.js +28 -0
  498. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  499. package/renderers/dateRenderer/index.d.ts +1 -0
  500. package/renderers/dateRenderer/index.js +6 -0
  501. package/renderers/dateRenderer/index.mjs +1 -0
  502. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  503. package/renderers/handsontableRenderer/handsontableRenderer.js +28 -0
  504. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  505. package/renderers/handsontableRenderer/index.d.ts +1 -0
  506. package/renderers/handsontableRenderer/index.js +6 -0
  507. package/renderers/handsontableRenderer/index.mjs +1 -0
  508. package/renderers/htmlRenderer/htmlRenderer.js +1 -2
  509. package/renderers/index.d.ts +9 -0
  510. package/renderers/numericRenderer/numericRenderer.js +1 -2
  511. package/renderers/passwordRenderer/passwordRenderer.js +1 -2
  512. package/renderers/selectRenderer/index.d.ts +1 -0
  513. package/renderers/selectRenderer/index.js +6 -0
  514. package/renderers/selectRenderer/index.mjs +1 -0
  515. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  516. package/renderers/selectRenderer/selectRenderer.js +26 -0
  517. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  518. package/renderers/textRenderer/textRenderer.js +1 -2
  519. package/renderers/timeRenderer/timeRenderer.js +1 -2
  520. package/selection/highlight/highlight.js +257 -73
  521. package/selection/highlight/highlight.mjs +250 -71
  522. package/selection/highlight/types/activeHeader.js +10 -8
  523. package/selection/highlight/types/activeHeader.mjs +10 -8
  524. package/selection/highlight/types/area.js +6 -18
  525. package/selection/highlight/types/area.mjs +6 -18
  526. package/selection/highlight/types/areaLayered.js +31 -0
  527. package/selection/highlight/types/areaLayered.mjs +26 -0
  528. package/selection/highlight/types/column.js +27 -0
  529. package/selection/highlight/types/column.mjs +22 -0
  530. package/selection/highlight/types/customSelection.js +7 -9
  531. package/selection/highlight/types/customSelection.mjs +7 -9
  532. package/selection/highlight/types/fill.js +5 -7
  533. package/selection/highlight/types/fill.mjs +5 -7
  534. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  535. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  536. package/selection/highlight/types/header.js +9 -18
  537. package/selection/highlight/types/header.mjs +9 -18
  538. package/selection/highlight/types/row.js +27 -0
  539. package/selection/highlight/types/row.mjs +22 -0
  540. package/selection/highlight/visualSelection.js +32 -29
  541. package/selection/highlight/visualSelection.mjs +31 -27
  542. package/selection/index.js +4 -7
  543. package/selection/index.mjs +2 -3
  544. package/selection/mouseEventHandler.js +7 -1
  545. package/selection/mouseEventHandler.mjs +7 -1
  546. package/selection/range.js +9 -10
  547. package/selection/range.mjs +8 -8
  548. package/selection/selection.js +334 -154
  549. package/selection/selection.mjs +330 -151
  550. package/selection/transformation.js +233 -94
  551. package/selection/transformation.mjs +232 -92
  552. package/selection/utils.js +20 -31
  553. package/selection/utils.mjs +16 -21
  554. package/settings.d.ts +4 -0
  555. package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
  556. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  557. package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
  558. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  559. package/shortcutContexts/commands/editor/fastOpen.js +15 -0
  560. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  561. package/shortcutContexts/commands/editor/index.js +16 -0
  562. package/shortcutContexts/commands/editor/index.mjs +12 -0
  563. package/shortcutContexts/commands/editor/open.js +26 -0
  564. package/shortcutContexts/commands/editor/open.mjs +23 -0
  565. package/shortcutContexts/commands/emptySelectedCells.js +10 -0
  566. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  567. package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
  568. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  569. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -0
  570. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  571. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  572. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  573. package/shortcutContexts/commands/extendCellsSelection/left.js +14 -0
  574. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  575. package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
  576. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  577. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
  578. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  579. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
  580. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  581. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
  582. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  583. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
  584. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  585. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
  586. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  587. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
  588. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  589. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
  590. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  591. package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
  592. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  593. package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
  594. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  595. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -0
  596. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  597. package/shortcutContexts/commands/index.js +35 -0
  598. package/shortcutContexts/commands/index.mjs +31 -0
  599. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  600. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  601. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -0
  602. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  603. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  604. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  605. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +11 -0
  606. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  607. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
  608. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  609. package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
  610. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  611. package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
  612. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  613. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  614. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  615. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  616. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  617. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  618. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  619. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  620. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  621. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
  622. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  623. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
  624. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  625. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  626. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  627. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  628. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  629. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  630. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  631. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
  632. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  633. package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
  634. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  635. package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
  636. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  637. package/shortcutContexts/commands/selectAll.js +11 -0
  638. package/shortcutContexts/commands/selectAll.mjs +8 -0
  639. package/shortcutContexts/constants.js +11 -0
  640. package/shortcutContexts/constants.mjs +8 -0
  641. package/shortcutContexts/editor.js +25 -0
  642. package/shortcutContexts/editor.mjs +21 -0
  643. package/shortcutContexts/grid.js +167 -0
  644. package/shortcutContexts/grid.mjs +163 -0
  645. package/shortcutContexts/index.js +24 -0
  646. package/shortcutContexts/index.mjs +11 -0
  647. package/shortcuts/context.d.ts +1 -0
  648. package/shortcuts/context.js +23 -4
  649. package/shortcuts/context.mjs +23 -5
  650. package/shortcuts/manager.js +31 -7
  651. package/shortcuts/manager.mjs +32 -7
  652. package/shortcuts/recorder.js +30 -14
  653. package/shortcuts/recorder.mjs +30 -14
  654. package/shortcuts/utils.js +19 -5
  655. package/shortcuts/utils.mjs +18 -4
  656. package/tableView.js +113 -16
  657. package/tableView.mjs +113 -15
  658. package/utils/dataStructures/linkedList.js +1 -2
  659. package/utils/dataStructures/priorityMap.js +2 -4
  660. package/utils/dataStructures/queue.js +1 -2
  661. package/utils/dataStructures/stack.js +1 -2
  662. package/utils/dataStructures/tree.js +3 -6
  663. package/utils/ghostTable.js +32 -17
  664. package/utils/ghostTable.mjs +31 -15
  665. package/utils/interval.js +1 -2
  666. package/utils/paginator.js +151 -0
  667. package/utils/paginator.mjs +147 -0
  668. package/utils/parseTable.js +527 -83
  669. package/utils/parseTable.mjs +523 -82
  670. package/utils/rootInstance.js +2 -4
  671. package/utils/samplesGenerator.js +21 -13
  672. package/utils/samplesGenerator.mjs +20 -11
  673. package/utils/staticRegister.js +1 -2
  674. package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
  675. package/validators/dateValidator/dateValidator.js +1 -2
  676. package/validators/numericValidator/numericValidator.js +1 -2
  677. package/validators/timeValidator/timeValidator.js +1 -2
  678. package/3rdparty/walkontable/src/selection.js +0 -295
  679. package/3rdparty/walkontable/src/selection.mjs +0 -290
  680. package/plugins/contextMenu/predefinedItems.js +0 -76
  681. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  682. package/plugins/copyPaste/clipboardData.js +0 -18
  683. package/plugins/copyPaste/clipboardData.mjs +0 -14
  684. package/plugins/copyPaste/focusableElement.js +0 -186
  685. package/plugins/copyPaste/focusableElement.mjs +0 -180
  686. package/plugins/copyPaste/pasteEvent.js +0 -14
  687. package/plugins/copyPaste/pasteEvent.mjs +0 -9
  688. package/selection/highlight/constants.js +0 -15
  689. package/selection/highlight/constants.mjs +0 -6
  690. package/selection/highlight/types/index.js +0 -35
  691. package/selection/highlight/types/index.mjs +0 -31
package/pluginHooks.mjs CHANGED
@@ -540,6 +540,34 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
540
540
  * @param {'init'|'remove'|'insert'|'move'|'update'} [source] A string that indicates what caused the change to the order of rows.
541
541
  */
542
542
  'afterRowSequenceChange',
543
+ /**
544
+ * Fired before the vertical viewport scroll. Triggered by the [`scrollViewportTo()`](@/api/core.md#scrollviewportto)
545
+ * method or table internals.
546
+ *
547
+ * @since 14.0.0
548
+ * @event Hooks#beforeViewportScrollVertically
549
+ * @param {number} visualRow Visual row index.
550
+ * @returns {number} Returns modified row index (or the same as passed in the method argument) to which the viewport will be scrolled.
551
+ */
552
+ 'beforeViewportScrollVertically',
553
+ /**
554
+ * Fired before the horizontal viewport scroll. Triggered by the [`scrollViewportTo()`](@/api/core.md#scrollviewportto)
555
+ * method or table internals.
556
+ *
557
+ * @since 14.0.0
558
+ * @event Hooks#beforeViewportScrollHorizontally
559
+ * @param {number} visualColumn Visual column index.
560
+ * @returns {number} Returns modified column index (or the same as passed in the method argument) to which the viewport will be scrolled.
561
+ */
562
+ 'beforeViewportScrollHorizontally',
563
+ /**
564
+ * Fired before the vertical or horizontal viewport scroll. Triggered by the [`scrollViewportTo()`](@/api/core.md#scrollviewportto)
565
+ * method or table internals.
566
+ *
567
+ * @since 14.0.0
568
+ * @event Hooks#beforeViewportScroll
569
+ */
570
+ 'beforeViewportScroll',
543
571
  /**
544
572
  * Fired after the horizontal scroll event.
545
573
  *
@@ -552,6 +580,13 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
552
580
  * @event Hooks#afterScrollVertically
553
581
  */
554
582
  'afterScrollVertically',
583
+ /**
584
+ * Fired after the vertical or horizontal scroll event.
585
+ *
586
+ * @since 14.0.0
587
+ * @event Hooks#afterScroll
588
+ */
589
+ 'afterScroll',
555
590
  /**
556
591
  * Fired after one or more cells are selected (e.g. During mouse move).
557
592
  *
@@ -655,6 +690,94 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
655
690
  * @param {number} selectionLayerLevel The number which indicates what selection layer is currently modified.
656
691
  */
657
692
  'afterSelectionEndByProp',
693
+ /**
694
+ * Fired before one or more columns are selected (e.g. During mouse header click or {@link Core#selectColumns} API call).
695
+ *
696
+ * @since 14.0.0
697
+ * @event Hooks#beforeSelectColumns
698
+ * @param {CellCoords} from Selection start coords object.
699
+ * @param {CellCoords} to Selection end coords object.
700
+ * @param {CellCoords} highlight Selection cell focus coords object.
701
+ * @example
702
+ * ::: only-for javascript
703
+ * ```js
704
+ * new Handsontable(element, {
705
+ * beforeSelectColumns: (from, to, highlight) => {
706
+ * // Extend the column selection by one column left and one column right.
707
+ * from.col = Math.max(from.col - 1, 0);
708
+ * to.col = Math.min(to.col + 1, this.countCols() - 1);
709
+ * }
710
+ * })
711
+ * ```
712
+ * :::
713
+ *
714
+ * ::: only-for react
715
+ * ```jsx
716
+ * <HotTable
717
+ * beforeSelectColumns={(from, to, highlight) => {
718
+ * // Extend the column selection by one column left and one column right.
719
+ * from.col = Math.max(from.col - 1, 0);
720
+ * to.col = Math.min(to.col + 1, this.countCols() - 1);
721
+ * }}
722
+ * />
723
+ * ```
724
+ * :::
725
+ */
726
+ 'beforeSelectColumns',
727
+ /**
728
+ * Fired after one or more columns are selected (e.g. During mouse header click or {@link Core#selectColumns} API call).
729
+ *
730
+ * @since 14.0.0
731
+ * @event Hooks#afterSelectColumns
732
+ * @param {CellCoords} from Selection start coords object.
733
+ * @param {CellCoords} to Selection end coords object.
734
+ * @param {CellCoords} highlight Selection cell focus coords object.
735
+ */
736
+ 'afterSelectColumns',
737
+ /**
738
+ * Fired before one or more rows are selected (e.g. During mouse header click or {@link Core#selectRows} API call).
739
+ *
740
+ * @since 14.0.0
741
+ * @event Hooks#beforeSelectRows
742
+ * @param {CellCoords} from Selection start coords object.
743
+ * @param {CellCoords} to Selection end coords object.
744
+ * @param {CellCoords} highlight Selection cell focus coords object.
745
+ * @example
746
+ * ::: only-for javascript
747
+ * ```js
748
+ * new Handsontable(element, {
749
+ * beforeSelectRows: (from, to, highlight) => {
750
+ * // Extend the row selection by one row up and one row bottom more.
751
+ * from.row = Math.max(from.row - 1, 0);
752
+ * to.row = Math.min(to.row + 1, this.countRows() - 1);
753
+ * }
754
+ * })
755
+ * ```
756
+ * :::
757
+ *
758
+ * ::: only-for react
759
+ * ```jsx
760
+ * <HotTable
761
+ * beforeSelectRows={(from, to, highlight) => {
762
+ * // Extend the row selection by one row up and one row bottom more.
763
+ * from.row = Math.max(from.row - 1, 0);
764
+ * to.row = Math.min(to.row + 1, this.countRows() - 1);
765
+ * }}
766
+ * />
767
+ * ```
768
+ * :::
769
+ */
770
+ 'beforeSelectRows',
771
+ /**
772
+ * Fired after one or more rows are selected (e.g. During mouse header click or {@link Core#selectRows} API call).
773
+ *
774
+ * @since 14.0.0
775
+ * @event Hooks#afterSelectRows
776
+ * @param {CellCoords} from Selection start coords object.
777
+ * @param {CellCoords} to Selection end coords object.
778
+ * @param {CellCoords} highlight Selection cell focus coords object.
779
+ */
780
+ 'afterSelectRows',
658
781
  /**
659
782
  * Fired after cell meta is changed.
660
783
  *
@@ -1077,6 +1200,38 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1077
1200
  * If set to `false`, the rendering gets triggered by scrolling or moving the selection.
1078
1201
  */
1079
1202
  'afterRender',
1203
+ /**
1204
+ * When the focus position is moved to the next or previous row caused by the {@link Options#autoWrapRow} option
1205
+ * the hook is triggered.
1206
+ *
1207
+ * @since 14.0.0
1208
+ * @event Hooks#beforeRowWrap
1209
+ * @param {boolean} isWrapEnabled Tells whether the row wrapping is going to happen.
1210
+ * There may be situations where the option does not work even though it is enabled.
1211
+ * This is due to the priority of other options that may block the feature.
1212
+ * For example, when the {@link Options#minSpareCols} is defined, the {@link Options#autoWrapRow} option is not checked.
1213
+ * Thus, row wrapping is off.
1214
+ * @param {CellCoords} newCoords The new focus position.
1215
+ * @param {boolean} isFlipped `true` if the row index was flipped, `false` otherwise.
1216
+ * Flipped index means that the user reached the last row and the focus is moved to the first row or vice versa.
1217
+ */
1218
+ 'beforeRowWrap',
1219
+ /**
1220
+ * When the focus position is moved to the next or previous column caused by the {@link Options#autoWrapCol} option
1221
+ * the hook is triggered.
1222
+ *
1223
+ * @since 14.0.0
1224
+ * @event Hooks#beforeColumnWrap
1225
+ * @param {boolean} isWrapEnabled Tells whether the column wrapping is going to happen.
1226
+ * There may be situations where the option does not work even though it is enabled.
1227
+ * This is due to the priority of other options that may block the feature.
1228
+ * For example, when the {@link Options#minSpareRows} is defined, the {@link Options#autoWrapCol} option is not checked.
1229
+ * Thus, column wrapping is off.
1230
+ * @param {CellCoords} newCoords The new focus position.
1231
+ * @param {boolean} isFlipped `true` if the column index was flipped, `false` otherwise.
1232
+ * Flipped index means that the user reached the last column and the focus is moved to the first column or vice versa.
1233
+ */
1234
+ 'beforeColumnWrap',
1080
1235
  /**
1081
1236
  * Fired before cell meta is changed.
1082
1237
  *
@@ -1110,6 +1265,13 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1110
1265
  * @param {CellCoords} coords CellCoords instance.
1111
1266
  */
1112
1267
  'beforeSetRangeEnd',
1268
+ /**
1269
+ * Fired before applying selection coordinates to the renderable coordinates for Walkontable (rendering engine).
1270
+ *
1271
+ * @since 14.0.0
1272
+ * @event Hooks#beforeSelectionHighlightSet
1273
+ */
1274
+ 'beforeSelectionHighlightSet',
1113
1275
  /**
1114
1276
  * Fired before the logic of handling a touch scroll, when user started scrolling on a touch-enabled device.
1115
1277
  *
@@ -1166,6 +1328,17 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1166
1328
  * @param {number} column Visual column index.
1167
1329
  */
1168
1330
  'modifyColWidth',
1331
+ /**
1332
+ * Fired when focusing a cell or a header element. Allows replacing the element to be focused by returning a
1333
+ * different HTML element.
1334
+ *
1335
+ * @since 14.0.0
1336
+ * @event Hooks#modifyFocusedElement
1337
+ * @param {number} row Row index.
1338
+ * @param {number} column Column index.
1339
+ * @param {HTMLElement|undefined} focusedElement The element to be focused.
1340
+ */
1341
+ 'modifyFocusedElement',
1169
1342
  /**
1170
1343
  * Fired when a row header index is about to be modified by a callback function.
1171
1344
  *
@@ -1223,6 +1396,16 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1223
1396
  * @returns {undefined|number[]}
1224
1397
  */
1225
1398
  'modifyGetCellCoords',
1399
+ /**
1400
+ * Used to modify the cell coordinates when the table is activated (going into the listen mode).
1401
+ *
1402
+ * @event Hooks#modifyFocusOnTabNavigation
1403
+ * @since 14.0.0
1404
+ * @param {'from_above' | 'from_below'} tabActivationDir The browsers Tab navigation direction. Depending on
1405
+ * whether the user activated the table from the element above or below, another cell can be selected.
1406
+ * @param {CellCoords} visualCoords The coords that will be used to select a cell.
1407
+ */
1408
+ 'modifyFocusOnTabNavigation',
1226
1409
  /**
1227
1410
  * Allows modify the visual row index that is used to retrieve the row header element (TH) before it's
1228
1411
  * highlighted (proper CSS class names are added). Modifying the visual row index allows building a custom
@@ -1320,26 +1503,35 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1320
1503
  * Fired by {@link CopyPaste} plugin before copying the values to the clipboard and before clearing values of
1321
1504
  * the selected cells. This hook is fired when {@link Options#copyPaste} option is enabled.
1322
1505
  *
1506
+ * Note: Please keep in mind since @14.0.0 the method arguments has been changed.
1507
+ *
1323
1508
  * @event Hooks#beforeCut
1324
- * @param {Array[]} data An array of arrays which contains data to cut.
1325
- * @param {object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
1326
- * which will be cut out.
1509
+ * @param {object} clipboardData Information about cut action which is going to happen.
1510
+ * @param {Function} clipboardData.removeRow Remove row from the copied dataset.
1511
+ * @param {Function} clipboardData.removeColumn Remove column from the copied dataset.
1512
+ * @param {Function} clipboardData.insertAtRow Insert values at row index.
1513
+ * @param {Function} clipboardData.insertAtColumn Insert values at column index.
1514
+ * @param {Function} clipboardData.setCellAt Change headers or cells in the copied dataset.
1515
+ * @param {Function} clipboardData.getCellAt Get headers or cells from the copied dataset.
1516
+ * @param {Function} clipboardData.getData Gets copied data stored as array of arrays.
1517
+ * @param {Function} clipboardData.getMetaInfo Gets meta information for the copied data.
1518
+ * @param {Function} clipboardData.getRanges Returns ranges related to copied part of Handsontable.
1327
1519
  * @returns {*} If returns `false` then operation of the cutting out is canceled.
1328
1520
  * @example
1329
1521
  * ::: only-for javascript
1330
1522
  * ```js
1331
- * // To disregard a single row, remove it from the array using data.splice(i, 1).
1523
+ * // To disregard a single row or column, remove it from copied dataset using `removeRows`/`removeColumns` method on the object from the first callback argument.
1332
1524
  * new Handsontable(element, {
1333
- * beforeCut: function(data, coords) {
1334
- * // data -> [[1, 2, 3], [4, 5, 6]]
1335
- * data.splice(0, 1);
1336
- * // data -> [[4, 5, 6]]
1337
- * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1525
+ * beforeCut: function(clipboardData) {
1526
+ * // clipboardData.getData() -> [[1, 2, 3], [4, 5, 6]]
1527
+ * clipboardData.removeRows([0]);
1528
+ * clipboardData.removeColumns([0]);
1529
+ * // clipboardData.getData() -> [[5, 6]]
1338
1530
  * }
1339
1531
  * });
1340
1532
  * // To cancel a cutting action, just return `false`.
1341
1533
  * new Handsontable(element, {
1342
- * beforeCut: function(data, coords) {
1534
+ * beforeCut: function(clipboardData) {
1343
1535
  * return false;
1344
1536
  * }
1345
1537
  * });
@@ -1348,18 +1540,18 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1348
1540
  *
1349
1541
  * ::: only-for react
1350
1542
  * ```jsx
1351
- * // To disregard a single row, remove it from the array using data.splice(i, 1).
1543
+ * // To disregard a single row or column, remove it from copied dataset using `removeRows`/`removeColumns` method on the object from the first callback argument.
1352
1544
  * <HotTable
1353
- * beforeCut={(data, coords) => {
1354
- * // data -> [[1, 2, 3], [4, 5, 6]]
1355
- * data.splice(0, 1);
1356
- * // data -> [[4, 5, 6]]
1357
- * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1545
+ * beforeCut={(clipboardData) => {
1546
+ * // clipboardData.getData() -> [[1, 2, 3], [4, 5, 6]]
1547
+ * clipboardData.removeRows([0]);
1548
+ * clipboardData.removeColumns([0]);
1549
+ * // clipboardData.getData() -> [[5, 6]]
1358
1550
  * }}
1359
1551
  * />
1360
1552
  * // To cancel a cutting action, just return `false`.
1361
1553
  * <HotTable
1362
- * beforeCut={(data, coords) => {
1554
+ * beforeCut={(clipboardData) => {
1363
1555
  * return false;
1364
1556
  * }}
1365
1557
  * />
@@ -1371,33 +1563,50 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1371
1563
  * Fired by {@link CopyPaste} plugin after data was cut out from the table. This hook is fired when
1372
1564
  * {@link Options#copyPaste} option is enabled.
1373
1565
  *
1566
+ * Note: Please keep in mind since @14.0.0 the method arguments has been changed.
1567
+ *
1374
1568
  * @event Hooks#afterCut
1375
- * @param {Array[]} data An array of arrays with the cut data.
1376
- * @param {object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
1377
- * which was cut out.
1569
+ * @param {object} clipboardData Information about already performed cut action.
1570
+ * @param {Function} clipboardData.removeRow Remove row from the copied dataset.
1571
+ * @param {Function} clipboardData.removeColumn Remove column from the copied dataset.
1572
+ * @param {Function} clipboardData.insertAtRow Insert values at row index.
1573
+ * @param {Function} clipboardData.insertAtColumn Insert values at column index.
1574
+ * @param {Function} clipboardData.setCellAt Change headers or cells in the copied dataset.
1575
+ * @param {Function} clipboardData.getCellAt Get headers or cells from the copied dataset.
1576
+ * @param {Function} clipboardData.getData Gets copied data stored as array of arrays.
1577
+ * @param {Function} clipboardData.getMetaInfo Gets meta information for the copied data.
1578
+ * @param {Function} clipboardData.getRanges Returns ranges related to copied part of Handsontable.
1378
1579
  */
1379
1580
  'afterCut',
1380
1581
  /**
1381
1582
  * Fired before values are copied to the clipboard.
1382
1583
  *
1584
+ * Note: Please keep in mind since @14.0.0 the method arguments has been changed.
1585
+ *
1383
1586
  * @event Hooks#beforeCopy
1384
- * @param {Array[]} data An array of arrays which contains data to copied.
1385
- * @param {object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
1386
- * which will copied.
1387
- * @param {{ columnHeadersCount: number }} copiedHeadersCount (Since 12.3.0) The number of copied column headers.
1587
+ * @param {object} clipboardData Information about copy action which is going to happen.
1588
+ * @param {Function} clipboardData.removeRow Remove row from the copied dataset.
1589
+ * @param {Function} clipboardData.removeColumn Remove column from the copied dataset.
1590
+ * @param {Function} clipboardData.insertAtRow Insert values at row index.
1591
+ * @param {Function} clipboardData.insertAtColumn Insert values at column index.
1592
+ * @param {Function} clipboardData.setCellAt Change headers or cells in the copied dataset.
1593
+ * @param {Function} clipboardData.getCellAt Get headers or cells from the copied dataset.
1594
+ * @param {Function} clipboardData.getData Gets copied data stored as array of arrays.
1595
+ * @param {Function} clipboardData.getMetaInfo Gets meta information for the copied data.
1596
+ * @param {Function} clipboardData.getRanges Returns ranges related to copied part of Handsontable.
1388
1597
  * @returns {*} If returns `false` then copying is canceled.
1389
1598
  *
1390
1599
  * @example
1391
1600
  * ::: only-for javascript
1392
1601
  * ```js
1393
- * // To disregard a single row, remove it from array using data.splice(i, 1).
1602
+ * // To disregard a single row or column, remove it from copied dataset using `removeRows`/`removeColumns` method on the object from the first callback argument.
1394
1603
  * ...
1395
1604
  * new Handsontable(document.getElementById('example'), {
1396
- * beforeCopy: (data, coords) => {
1397
- * // data -> [[1, 2, 3], [4, 5, 6]]
1398
- * data.splice(0, 1);
1399
- * // data -> [[4, 5, 6]]
1400
- * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1605
+ * beforeCopy: (clipboardData) => {
1606
+ * // clipboardData.getData() -> [[1, 2, 3], [4, 5, 6]]
1607
+ * clipboardData.removeRows([0]);
1608
+ * clipboardData.removeColumns([0]);
1609
+ * // clipboardData.getData() -> [[5, 6]]
1401
1610
  * }
1402
1611
  * });
1403
1612
  * ...
@@ -1405,7 +1614,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1405
1614
  * // To cancel copying, return false from the callback.
1406
1615
  * ...
1407
1616
  * new Handsontable(document.getElementById('example'), {
1408
- * beforeCopy: (data, coords) => {
1617
+ * beforeCopy: (clipboardData) => {
1409
1618
  * return false;
1410
1619
  * }
1411
1620
  * });
@@ -1415,14 +1624,14 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1415
1624
  *
1416
1625
  * ::: only-for react
1417
1626
  * ```jsx
1418
- * // To disregard a single row, remove it from array using data.splice(i, 1).
1627
+ * // To disregard a single row or column, remove it from copied dataset using `removeRows`/`removeColumns` method on the object from the first callback argument.
1419
1628
  * ...
1420
1629
  * <HotTable
1421
- * beforeCopy={(data, coords) => {
1422
- * // data -> [[1, 2, 3], [4, 5, 6]]
1423
- * data.splice(0, 1);
1424
- * // data -> [[4, 5, 6]]
1425
- * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1630
+ * beforeCopy={(clipboardData) => {
1631
+ * // clipboardData.getData() -> [[1, 2, 3], [4, 5, 6]]
1632
+ * clipboardData.removeRows([0]);
1633
+ * clipboardData.removeColumns([0]);
1634
+ * // clipboardData.getData() -> [[5, 6]]
1426
1635
  * }}
1427
1636
  * />
1428
1637
  * ...
@@ -1430,7 +1639,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1430
1639
  * // To cancel copying, return false from the callback.
1431
1640
  * ...
1432
1641
  * <HotTable
1433
- * beforeCopy={(data, coords) => {
1642
+ * beforeCopy={(clipboardData) => {
1434
1643
  * return false;
1435
1644
  * }}
1436
1645
  * />
@@ -1443,37 +1652,55 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1443
1652
  * Fired by {@link CopyPaste} plugin after data are pasted into table. This hook is fired when {@link Options#copyPaste}
1444
1653
  * option is enabled.
1445
1654
  *
1655
+ * Note: Please keep in mind since @14.0.0 the method arguments has been changed.
1656
+ *
1446
1657
  * @event Hooks#afterCopy
1447
- * @param {Array[]} data An array of arrays which contains the copied data.
1448
- * @param {object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
1449
- * which was copied.
1450
- * @param {{ columnHeadersCount: number }} copiedHeadersCount (Since 12.3.0) The number of copied column headers.
1658
+ * @param {object} clipboardData Information about already performed copy action.
1659
+ * @param {Function} clipboardData.removeRow Remove row from the copied dataset.
1660
+ * @param {Function} clipboardData.removeColumn Remove column from the copied dataset.
1661
+ * @param {Function} clipboardData.insertAtRow Insert values at row index.
1662
+ * @param {Function} clipboardData.insertAtColumn Insert values at column index.
1663
+ * @param {Function} clipboardData.setCellAt Change headers or cells in the copied dataset.
1664
+ * @param {Function} clipboardData.getCellAt Get headers or cells from the copied dataset.
1665
+ * @param {Function} clipboardData.getData Gets copied data stored as array of arrays.
1666
+ * @param {Function} clipboardData.getMetaInfo Gets meta information for the copied data.
1667
+ * @param {Function} clipboardData.getRanges Returns ranges related to copied part of Handsontable.
1451
1668
  */
1452
1669
  'afterCopy',
1453
1670
  /**
1454
1671
  * Fired by {@link CopyPaste} plugin before values are pasted into table. This hook is fired when
1455
1672
  * {@link Options#copyPaste} option is enabled.
1456
1673
  *
1674
+ * Note: Please keep in mind since @14.0.0 the method arguments has been changed.
1675
+ *
1457
1676
  * @event Hooks#beforePaste
1458
- * @param {Array[]} data An array of arrays which contains data to paste.
1459
- * @param {object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
1460
- * that correspond to the previously selected area.
1677
+ * @param {object} clipboardData Information about paste action which is going to happen.
1678
+ * @param {Function} clipboardData.removeRow Remove row from the pasted dataset.
1679
+ * @param {Function} clipboardData.removeColumn Remove column from the pasted dataset.
1680
+ * @param {Function} clipboardData.insertAtRow Insert values at row index.
1681
+ * @param {Function} clipboardData.insertAtColumn Insert values at column index.
1682
+ * @param {Function} clipboardData.setCellAt Change headers or cells in the pasted dataset.
1683
+ * @param {Function} clipboardData.getCellAt Get headers or cells from the pasted dataset.
1684
+ * @param {Function} clipboardData.getData Gets copied data stored as array of arrays.
1685
+ * @param {Function} clipboardData.getMetaInfo Gets meta information for the copied data.
1686
+ * @param {Function} clipboardData.getSource Gets information about source of the copied data
1687
+ * (Handsontable, table or string).
1461
1688
  * @returns {*} If returns `false` then pasting is canceled.
1462
1689
  * @example
1463
1690
  * ```js
1464
1691
  * ::: only-for javascript
1465
- * // To disregard a single row, remove it from array using data.splice(i, 1).
1692
+ * // To disregard a single row or column, remove it from copied dataset using `removeRows`/`removeColumns` method on the object from the first callback argument.
1466
1693
  * new Handsontable(example, {
1467
- * beforePaste: (data, coords) => {
1468
- * // data -> [[1, 2, 3], [4, 5, 6]]
1469
- * data.splice(0, 1);
1470
- * // data -> [[4, 5, 6]]
1471
- * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1694
+ * beforePaste: (clipboardData) => {
1695
+ * // clipboardData.getData() -> [[1, 2, 3], [4, 5, 6]]
1696
+ * clipboardData.removeRows([0]);
1697
+ * clipboardData.removeColumns([0]);
1698
+ * // clipboardData.getData() -> [[5, 6]]
1472
1699
  * }
1473
1700
  * });
1474
1701
  * // To cancel pasting, return false from the callback.
1475
1702
  * new Handsontable(example, {
1476
- * beforePaste: (data, coords) => {
1703
+ * beforePaste: (clipboardData) => {
1477
1704
  * return false;
1478
1705
  * }
1479
1706
  * });
@@ -1482,18 +1709,18 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1482
1709
  *
1483
1710
  * ::: only-for react
1484
1711
  * ```jsx
1485
- * // To disregard a single row, remove it from array using data.splice(i, 1).
1712
+ * // To disregard a single row or column, remove it from copied dataset using `removeRows`/`removeColumns` method on the object from the first callback argument.
1486
1713
  * <HotTable
1487
- * beforePaste={(data, coords) => {
1488
- * // data -> [[1, 2, 3], [4, 5, 6]]
1489
- * data.splice(0, 1);
1490
- * // data -> [[4, 5, 6]]
1491
- * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]
1714
+ * beforePaste={(clipboardData) => {
1715
+ * // clipboardData.getData() -> [[1, 2, 3], [4, 5, 6]]
1716
+ * clipboardData.removeRows([0]);
1717
+ * clipboardData.removeColumns([0]);
1718
+ * // clipboardData.getData() -> [[5, 6]]
1492
1719
  * }}
1493
1720
  * />
1494
1721
  * // To cancel pasting, return false from the callback.
1495
1722
  * <HotTable
1496
- * beforePaste={(data, coords) => {
1723
+ * beforePaste={(clipboardData) => {
1497
1724
  * return false;
1498
1725
  * }}
1499
1726
  * />
@@ -1505,10 +1732,20 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1505
1732
  * Fired by {@link CopyPaste} plugin after values are pasted into table. This hook is fired when
1506
1733
  * {@link Options#copyPaste} option is enabled.
1507
1734
  *
1735
+ * Note: Please keep in mind since @14.0.0 the method arguments has been changed.
1736
+ *
1508
1737
  * @event Hooks#afterPaste
1509
- * @param {Array[]} data An array of arrays with the pasted data.
1510
- * @param {object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)
1511
- * that correspond to the previously selected area.
1738
+ * @param {object} clipboardData Information about already performed paste action.
1739
+ * @param {Function} clipboardData.removeRow Remove row from the pasted dataset.
1740
+ * @param {Function} clipboardData.removeColumn Remove column from the pasted dataset.
1741
+ * @param {Function} clipboardData.insertAtRow Insert values at row index.
1742
+ * @param {Function} clipboardData.insertAtColumn Insert values at column index.
1743
+ * @param {Function} clipboardData.setCellAt Change headers or cells in the pasted dataset.
1744
+ * @param {Function} clipboardData.getCellAt Get headers or cells from the pasted dataset.
1745
+ * @param {Function} clipboardData.getData Gets copied data stored as array of arrays.
1746
+ * @param {Function} clipboardData.getMetaInfo Gets meta information for the copied data.
1747
+ * @param {Function} clipboardData.getSource Gets information about source of the copied data
1748
+ * (Handsontable, table or string).
1512
1749
  */
1513
1750
  'afterPaste',
1514
1751
  /**
@@ -2380,7 +2617,7 @@ const REMOVED_HOOKS = new Map([['modifyRow', '8.0.0'], ['modifyCol', '8.0.0'], [
2380
2617
  * @type {Map<string, string>}
2381
2618
  */
2382
2619
  /* eslint-enable jsdoc/require-description-complete-sentence */
2383
- const DEPRECATED_HOOKS = new Map([]);
2620
+ const DEPRECATED_HOOKS = new Map([['beforeRemoveCellClassNames', 'The hook "beforeRemoveCellClassNames" is deprecated and will be removed in the next major release.']]);
2384
2621
  class Hooks {
2385
2622
  static getSingleton() {
2386
2623
  return getGlobalSingleton();
@@ -4,6 +4,8 @@ import { BasePlugin } from '../base';
4
4
  export interface DetailedSettings {
5
5
  syncLimit?: string | number;
6
6
  useHeaders?: boolean;
7
+ samplingRatio?: number;
8
+ allowSampleDuplicates?: boolean;
7
9
  }
8
10
 
9
11
  export type Settings = boolean | DetailedSettings;
@@ -16,10 +16,8 @@ var _translations = require("../../translations");
16
16
  var _mixed = require("../../helpers/mixed");
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  _pluginHooks.default.getSingleton().register('modifyAutoColumnSizeSeed');
19
- const PLUGIN_KEY = 'autoColumnSize';
20
- exports.PLUGIN_KEY = PLUGIN_KEY;
21
- const PLUGIN_PRIORITY = 10;
22
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
19
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'autoColumnSize';
20
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 10;
23
21
  const privatePool = new WeakMap();
24
22
  const COLUMN_SIZE_MAP_NAME = 'autoColumnSize';
25
23
 
@@ -3,6 +3,8 @@ import { BasePlugin } from '../base';
3
3
 
4
4
  export interface DetailedSettings {
5
5
  syncLimit?: string | number;
6
+ samplingRatio?: number;
7
+ allowSampleDuplicates?: boolean;
6
8
  }
7
9
 
8
10
  export type Settings = boolean | DetailedSettings;
@@ -12,10 +12,8 @@ var _samplesGenerator = _interopRequireDefault(require("../../utils/samplesGener
12
12
  var _string = require("../../helpers/string");
13
13
  var _translations = require("../../translations");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- const PLUGIN_KEY = 'autoRowSize';
16
- exports.PLUGIN_KEY = PLUGIN_KEY;
17
- const PLUGIN_PRIORITY = 40;
18
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
15
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'autoRowSize';
16
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 40;
19
17
  const ROW_WIDTHS_MAP_NAME = 'autoRowSize';
20
18
 
21
19
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -147,12 +145,19 @@ class AutoRowSize extends _base.BasePlugin {
147
145
  * @private
148
146
  * @type {SamplesGenerator}
149
147
  */
150
- this.samplesGenerator = new _samplesGenerator.default((row, col) => {
148
+ this.samplesGenerator = new _samplesGenerator.default((row, column) => {
149
+ if (row >= 0 && column >= 0) {
150
+ const cellMeta = this.hot.getCellMeta(row, column);
151
+ if (cellMeta.hidden) {
152
+ // do not generate samples for cells that are covered by merged cell (null values)
153
+ return false;
154
+ }
155
+ }
151
156
  let cellValue;
152
157
  if (row >= 0) {
153
- cellValue = this.hot.getDataAtCell(row, col);
158
+ cellValue = this.hot.getDataAtCell(row, column);
154
159
  } else if (row === -1) {
155
- cellValue = this.hot.getColHeader(col);
160
+ cellValue = this.hot.getColHeader(column);
156
161
  }
157
162
  return {
158
163
  value: cellValue
@@ -187,7 +192,7 @@ class AutoRowSize extends _base.BasePlugin {
187
192
  this.hot.rowIndexMapper.registerMap(ROW_WIDTHS_MAP_NAME, this.rowHeightsMap);
188
193
 
189
194
  // Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
190
- // This is necesseary for height recalculation for resize handler doubleclick (ManualRowResize).
195
+ // This is necessary for height recalculation for resize handler doubleclick (ManualRowResize).
191
196
  this.addHook('beforeRowResize', (size, row, isDblClick) => this.onBeforeRowResize(size, row, isDblClick));
192
197
  }
193
198
 
@@ -577,11 +582,11 @@ class AutoRowSize extends _base.BasePlugin {
577
582
  this.recalculateAllRowsHeight();
578
583
  } else {
579
584
  // first load - initialization
580
- setTimeout(() => {
585
+ this.hot._registerTimeout(() => {
581
586
  if (this.hot) {
582
587
  this.recalculateAllRowsHeight();
583
588
  }
584
- }, 0);
589
+ });
585
590
  }
586
591
  }
587
592