handsontable 12.2.0 → 12.3.0-next-9dc4f5d-20221209

Sign up to get free protection for your applications and to get access to all the features.
Files changed (659) hide show
  1. package/3rdparty/walkontable/src/border.js +13 -6
  2. package/3rdparty/walkontable/src/border.mjs +12 -5
  3. package/3rdparty/walkontable/src/calculator/viewportColumns.js +10 -1
  4. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +10 -1
  5. package/3rdparty/walkontable/src/calculator/viewportRows.js +10 -1
  6. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +10 -1
  7. package/3rdparty/walkontable/src/cell/coords.d.ts +1 -1
  8. package/3rdparty/walkontable/src/cell/coords.js +64 -26
  9. package/3rdparty/walkontable/src/cell/coords.mjs +64 -26
  10. package/3rdparty/walkontable/src/cell/range.d.ts +19 -16
  11. package/3rdparty/walkontable/src/cell/range.js +199 -104
  12. package/3rdparty/walkontable/src/cell/range.mjs +201 -106
  13. package/3rdparty/walkontable/src/core/_base.js +17 -3
  14. package/3rdparty/walkontable/src/core/_base.mjs +20 -6
  15. package/3rdparty/walkontable/src/core/clone.js +13 -7
  16. package/3rdparty/walkontable/src/core/clone.mjs +15 -9
  17. package/3rdparty/walkontable/src/core/core.js +8 -2
  18. package/3rdparty/walkontable/src/core/core.mjs +10 -4
  19. package/3rdparty/walkontable/src/event.js +10 -1
  20. package/3rdparty/walkontable/src/event.mjs +10 -1
  21. package/3rdparty/walkontable/src/facade/core.js +16 -2
  22. package/3rdparty/walkontable/src/facade/core.mjs +22 -8
  23. package/3rdparty/walkontable/src/filter/column.js +16 -2
  24. package/3rdparty/walkontable/src/filter/column.mjs +16 -2
  25. package/3rdparty/walkontable/src/filter/row.js +16 -2
  26. package/3rdparty/walkontable/src/filter/row.mjs +16 -2
  27. package/3rdparty/walkontable/src/overlay/_base.js +17 -3
  28. package/3rdparty/walkontable/src/overlay/_base.mjs +24 -10
  29. package/3rdparty/walkontable/src/overlay/bottom.js +13 -7
  30. package/3rdparty/walkontable/src/overlay/bottom.mjs +15 -9
  31. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +8 -2
  32. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.mjs +10 -4
  33. package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -2
  34. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +10 -4
  35. package/3rdparty/walkontable/src/overlay/top.js +13 -7
  36. package/3rdparty/walkontable/src/overlay/top.mjs +15 -9
  37. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +13 -7
  38. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +15 -9
  39. package/3rdparty/walkontable/src/overlays.js +69 -19
  40. package/3rdparty/walkontable/src/overlays.mjs +71 -21
  41. package/3rdparty/walkontable/src/renderer/_base.js +16 -2
  42. package/3rdparty/walkontable/src/renderer/_base.mjs +20 -6
  43. package/3rdparty/walkontable/src/renderer/cells.js +8 -2
  44. package/3rdparty/walkontable/src/renderer/cells.mjs +20 -14
  45. package/3rdparty/walkontable/src/renderer/colGroup.js +8 -2
  46. package/3rdparty/walkontable/src/renderer/colGroup.mjs +19 -13
  47. package/3rdparty/walkontable/src/renderer/columnHeaders.js +8 -2
  48. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +19 -13
  49. package/3rdparty/walkontable/src/renderer/index.js +16 -2
  50. package/3rdparty/walkontable/src/renderer/index.mjs +20 -6
  51. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -2
  52. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +20 -14
  53. package/3rdparty/walkontable/src/renderer/rows.js +8 -3
  54. package/3rdparty/walkontable/src/renderer/rows.mjs +8 -3
  55. package/3rdparty/walkontable/src/renderer/table.js +16 -2
  56. package/3rdparty/walkontable/src/renderer/table.mjs +16 -2
  57. package/3rdparty/walkontable/src/scroll.js +16 -3
  58. package/3rdparty/walkontable/src/scroll.mjs +18 -5
  59. package/3rdparty/walkontable/src/selection.js +11 -5
  60. package/3rdparty/walkontable/src/selection.mjs +11 -5
  61. package/3rdparty/walkontable/src/settings.js +16 -2
  62. package/3rdparty/walkontable/src/settings.mjs +16 -2
  63. package/3rdparty/walkontable/src/table/bottom.js +8 -2
  64. package/3rdparty/walkontable/src/table/bottom.mjs +13 -7
  65. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +8 -2
  66. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +14 -8
  67. package/3rdparty/walkontable/src/table/inlineStart.js +8 -2
  68. package/3rdparty/walkontable/src/table/inlineStart.mjs +10 -4
  69. package/3rdparty/walkontable/src/table/master.js +8 -2
  70. package/3rdparty/walkontable/src/table/master.mjs +13 -7
  71. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
  72. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
  73. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
  74. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
  75. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +12 -6
  76. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +12 -6
  77. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +12 -6
  78. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +12 -6
  79. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +12 -6
  80. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +12 -6
  81. package/3rdparty/walkontable/src/table/top.js +8 -2
  82. package/3rdparty/walkontable/src/table/top.mjs +13 -7
  83. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +8 -2
  84. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +14 -8
  85. package/3rdparty/walkontable/src/table.js +13 -6
  86. package/3rdparty/walkontable/src/table.mjs +21 -14
  87. package/3rdparty/walkontable/src/utils/column.js +12 -2
  88. package/3rdparty/walkontable/src/utils/column.mjs +16 -6
  89. package/3rdparty/walkontable/src/utils/nodesPool.js +16 -2
  90. package/3rdparty/walkontable/src/utils/nodesPool.mjs +16 -2
  91. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +8 -2
  92. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +12 -6
  93. package/3rdparty/walkontable/src/utils/orderView/view.js +16 -2
  94. package/3rdparty/walkontable/src/utils/orderView/view.mjs +23 -9
  95. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +16 -2
  96. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +16 -2
  97. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +16 -2
  98. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +31 -17
  99. package/3rdparty/walkontable/src/utils/row.js +16 -2
  100. package/3rdparty/walkontable/src/utils/row.mjs +16 -2
  101. package/3rdparty/walkontable/src/viewport.js +16 -2
  102. package/3rdparty/walkontable/src/viewport.mjs +18 -4
  103. package/CHANGELOG.md +23 -0
  104. package/base.d.ts +1 -0
  105. package/base.js +7 -2
  106. package/base.mjs +9 -4
  107. package/cellTypes/index.mjs +4 -3
  108. package/core.d.ts +1 -1
  109. package/core.js +234 -122
  110. package/core.mjs +231 -119
  111. package/dataMap/dataMap.js +98 -28
  112. package/dataMap/dataMap.mjs +97 -27
  113. package/dataMap/dataSource.js +14 -2
  114. package/dataMap/dataSource.mjs +17 -5
  115. package/dataMap/metaManager/index.js +15 -2
  116. package/dataMap/metaManager/index.mjs +41 -28
  117. package/dataMap/metaManager/lazyFactoryMap.js +7 -1
  118. package/dataMap/metaManager/lazyFactoryMap.mjs +7 -1
  119. package/dataMap/metaManager/metaLayers/cellMeta.js +13 -8
  120. package/dataMap/metaManager/metaLayers/cellMeta.mjs +12 -7
  121. package/dataMap/metaManager/metaLayers/columnMeta.js +15 -2
  122. package/dataMap/metaManager/metaLayers/columnMeta.mjs +23 -9
  123. package/dataMap/metaManager/metaLayers/globalMeta.js +26 -2
  124. package/dataMap/metaManager/metaLayers/globalMeta.mjs +27 -3
  125. package/dataMap/metaManager/metaLayers/tableMeta.js +17 -3
  126. package/dataMap/metaManager/metaLayers/tableMeta.mjs +41 -27
  127. package/dataMap/metaManager/metaSchema.js +119 -66
  128. package/dataMap/metaManager/metaSchema.mjs +119 -66
  129. package/dataMap/metaManager/mods/dynamicCellMeta.js +12 -2
  130. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +26 -16
  131. package/dataMap/metaManager/mods/extendMetaProperties.js +12 -2
  132. package/dataMap/metaManager/mods/extendMetaProperties.mjs +10 -1
  133. package/dataMap/metaManager/utils.js +44 -14
  134. package/dataMap/metaManager/utils.mjs +51 -20
  135. package/dataMap/replaceData.js +2 -1
  136. package/dataMap/replaceData.mjs +24 -22
  137. package/dist/handsontable.css +9 -9
  138. package/dist/handsontable.full.css +9 -9
  139. package/dist/handsontable.full.js +7350 -10885
  140. package/dist/handsontable.full.min.css +2 -2
  141. package/dist/handsontable.full.min.js +107 -113
  142. package/dist/handsontable.js +5800 -4499
  143. package/dist/handsontable.min.css +2 -2
  144. package/dist/handsontable.min.js +3 -3
  145. package/dist/languages/all.js +111 -65
  146. package/dist/languages/all.min.js +1 -1
  147. package/dist/languages/ar-AR.js +50 -4
  148. package/dist/languages/ar-AR.min.js +1 -1
  149. package/dist/languages/cs-CZ.js +52 -6
  150. package/dist/languages/cs-CZ.min.js +1 -1
  151. package/dist/languages/de-CH.js +52 -6
  152. package/dist/languages/de-CH.min.js +1 -1
  153. package/dist/languages/de-DE.js +53 -7
  154. package/dist/languages/de-DE.min.js +1 -1
  155. package/dist/languages/en-US.js +56 -10
  156. package/dist/languages/en-US.min.js +1 -1
  157. package/dist/languages/es-MX.js +56 -10
  158. package/dist/languages/es-MX.min.js +1 -1
  159. package/dist/languages/fr-FR.js +55 -9
  160. package/dist/languages/fr-FR.min.js +1 -1
  161. package/dist/languages/it-IT.js +55 -9
  162. package/dist/languages/it-IT.min.js +1 -1
  163. package/dist/languages/ja-JP.js +83 -33
  164. package/dist/languages/ja-JP.min.js +1 -1
  165. package/dist/languages/ko-KR.js +84 -33
  166. package/dist/languages/ko-KR.min.js +1 -1
  167. package/dist/languages/lv-LV.js +85 -33
  168. package/dist/languages/lv-LV.min.js +1 -1
  169. package/dist/languages/nb-NO.js +86 -33
  170. package/dist/languages/nb-NO.min.js +1 -1
  171. package/dist/languages/nl-NL.js +87 -33
  172. package/dist/languages/nl-NL.min.js +1 -1
  173. package/dist/languages/pl-PL.js +88 -33
  174. package/dist/languages/pl-PL.min.js +1 -1
  175. package/dist/languages/pt-BR.js +68 -19
  176. package/dist/languages/pt-BR.min.js +1 -1
  177. package/dist/languages/ru-RU.js +68 -19
  178. package/dist/languages/ru-RU.min.js +1 -1
  179. package/dist/languages/sr-SP.js +55 -6
  180. package/dist/languages/sr-SP.min.js +1 -1
  181. package/dist/languages/zh-CN.js +55 -6
  182. package/dist/languages/zh-CN.min.js +1 -1
  183. package/dist/languages/zh-TW.js +55 -6
  184. package/dist/languages/zh-TW.min.js +1 -1
  185. package/editorManager.js +18 -9
  186. package/editorManager.mjs +15 -6
  187. package/editors/autocompleteEditor/autocompleteEditor.js +10 -5
  188. package/editors/autocompleteEditor/autocompleteEditor.mjs +9 -4
  189. package/editors/baseEditor/baseEditor.js +11 -6
  190. package/editors/baseEditor/baseEditor.mjs +10 -5
  191. package/editors/checkboxEditor/checkboxEditor.js +6 -1
  192. package/editors/checkboxEditor/checkboxEditor.mjs +6 -1
  193. package/editors/dateEditor/dateEditor.js +6 -1
  194. package/editors/dateEditor/dateEditor.mjs +6 -1
  195. package/editors/dropdownEditor/dropdownEditor.js +6 -1
  196. package/editors/dropdownEditor/dropdownEditor.mjs +6 -1
  197. package/editors/handsontableEditor/handsontableEditor.js +6 -1
  198. package/editors/handsontableEditor/handsontableEditor.mjs +6 -1
  199. package/editors/index.mjs +4 -3
  200. package/editors/numericEditor/numericEditor.js +6 -1
  201. package/editors/numericEditor/numericEditor.mjs +6 -1
  202. package/editors/passwordEditor/passwordEditor.js +6 -1
  203. package/editors/passwordEditor/passwordEditor.mjs +6 -1
  204. package/editors/registry.js +3 -0
  205. package/editors/registry.mjs +5 -1
  206. package/editors/selectEditor/selectEditor.js +6 -1
  207. package/editors/selectEditor/selectEditor.mjs +6 -1
  208. package/editors/textEditor/caretPositioner.mjs +11 -10
  209. package/editors/textEditor/textEditor.js +7 -2
  210. package/editors/textEditor/textEditor.mjs +7 -2
  211. package/editors/timeEditor/timeEditor.js +6 -1
  212. package/editors/timeEditor/timeEditor.mjs +6 -1
  213. package/eventManager.js +24 -9
  214. package/eventManager.mjs +26 -11
  215. package/helpers/console.mjs +6 -5
  216. package/helpers/data.d.ts +0 -1
  217. package/helpers/data.js +0 -49
  218. package/helpers/data.mjs +1 -49
  219. package/helpers/dom/element.js +23 -0
  220. package/helpers/dom/element.mjs +30 -7
  221. package/helpers/feature.js +9 -36
  222. package/helpers/feature.mjs +3 -30
  223. package/helpers/function.mjs +7 -6
  224. package/helpers/mixed.js +2 -2
  225. package/helpers/mixed.mjs +9 -8
  226. package/helpers/object.js +15 -9
  227. package/helpers/object.mjs +17 -10
  228. package/helpers/string.mjs +7 -6
  229. package/helpers/templateLiteralTag.mjs +8 -7
  230. package/i18n/constants.js +49 -42
  231. package/i18n/constants.mjs +45 -41
  232. package/i18n/languages/ar-AR.js +12 -7
  233. package/i18n/languages/ar-AR.mjs +16 -2
  234. package/i18n/languages/cs-CZ.js +12 -7
  235. package/i18n/languages/cs-CZ.mjs +16 -2
  236. package/i18n/languages/de-CH.js +12 -7
  237. package/i18n/languages/de-CH.mjs +16 -2
  238. package/i18n/languages/de-DE.js +12 -7
  239. package/i18n/languages/de-DE.mjs +16 -2
  240. package/i18n/languages/en-US.js +13 -8
  241. package/i18n/languages/en-US.mjs +17 -3
  242. package/i18n/languages/es-MX.js +13 -8
  243. package/i18n/languages/es-MX.mjs +19 -4
  244. package/i18n/languages/fr-FR.js +12 -7
  245. package/i18n/languages/fr-FR.mjs +16 -2
  246. package/i18n/languages/it-IT.js +12 -7
  247. package/i18n/languages/it-IT.mjs +16 -2
  248. package/i18n/languages/ja-JP.js +12 -7
  249. package/i18n/languages/ja-JP.mjs +16 -2
  250. package/i18n/languages/ko-KR.js +12 -7
  251. package/i18n/languages/ko-KR.mjs +16 -2
  252. package/i18n/languages/lv-LV.js +13 -8
  253. package/i18n/languages/lv-LV.mjs +19 -5
  254. package/i18n/languages/nb-NO.js +12 -7
  255. package/i18n/languages/nb-NO.mjs +16 -2
  256. package/i18n/languages/nl-NL.js +13 -8
  257. package/i18n/languages/nl-NL.mjs +19 -5
  258. package/i18n/languages/pl-PL.js +13 -8
  259. package/i18n/languages/pl-PL.mjs +18 -4
  260. package/i18n/languages/pt-BR.js +12 -7
  261. package/i18n/languages/pt-BR.mjs +16 -2
  262. package/i18n/languages/ru-RU.js +12 -7
  263. package/i18n/languages/ru-RU.mjs +16 -2
  264. package/i18n/languages/sr-SP.js +12 -7
  265. package/i18n/languages/sr-SP.mjs +16 -2
  266. package/i18n/languages/zh-CN.js +12 -7
  267. package/i18n/languages/zh-CN.mjs +16 -2
  268. package/i18n/languages/zh-TW.js +12 -7
  269. package/i18n/languages/zh-TW.mjs +16 -2
  270. package/i18n/phraseFormatters/substituteVariables.mjs +9 -8
  271. package/i18n/utils.mjs +10 -9
  272. package/index.d.ts +9 -0
  273. package/index.js +4 -2
  274. package/index.mjs +2 -1
  275. package/languages/all.js +111 -65
  276. package/languages/ar-AR.js +50 -4
  277. package/languages/ar-AR.mjs +16 -2
  278. package/languages/cs-CZ.js +52 -6
  279. package/languages/cs-CZ.mjs +16 -2
  280. package/languages/de-CH.js +52 -6
  281. package/languages/de-CH.mjs +16 -2
  282. package/languages/de-DE.js +53 -7
  283. package/languages/de-DE.mjs +16 -2
  284. package/languages/en-US.js +56 -10
  285. package/languages/en-US.mjs +17 -3
  286. package/languages/es-MX.js +56 -10
  287. package/languages/es-MX.mjs +19 -4
  288. package/languages/fr-FR.js +55 -9
  289. package/languages/fr-FR.mjs +16 -2
  290. package/languages/index.js +111 -65
  291. package/languages/it-IT.js +55 -9
  292. package/languages/it-IT.mjs +16 -2
  293. package/languages/ja-JP.js +83 -33
  294. package/languages/ja-JP.mjs +16 -2
  295. package/languages/ko-KR.js +84 -33
  296. package/languages/ko-KR.mjs +16 -2
  297. package/languages/lv-LV.js +85 -33
  298. package/languages/lv-LV.mjs +19 -5
  299. package/languages/nb-NO.js +86 -33
  300. package/languages/nb-NO.mjs +16 -2
  301. package/languages/nl-NL.js +87 -33
  302. package/languages/nl-NL.mjs +19 -5
  303. package/languages/pl-PL.js +88 -33
  304. package/languages/pl-PL.mjs +18 -4
  305. package/languages/pt-BR.js +68 -19
  306. package/languages/pt-BR.mjs +16 -2
  307. package/languages/ru-RU.js +68 -19
  308. package/languages/ru-RU.mjs +16 -2
  309. package/languages/sr-SP.js +55 -6
  310. package/languages/sr-SP.mjs +16 -2
  311. package/languages/zh-CN.js +55 -6
  312. package/languages/zh-CN.mjs +16 -2
  313. package/languages/zh-TW.js +55 -6
  314. package/languages/zh-TW.mjs +16 -2
  315. package/mixins/hooksRefRegisterer.js +6 -3
  316. package/mixins/hooksRefRegisterer.mjs +6 -3
  317. package/mixins/localHooks.js +6 -3
  318. package/mixins/localHooks.mjs +6 -3
  319. package/package.json +2 -2
  320. package/pluginHooks.d.ts +7 -2
  321. package/pluginHooks.js +109 -24
  322. package/pluginHooks.mjs +109 -24
  323. package/plugins/autoColumnSize/autoColumnSize.js +7 -2
  324. package/plugins/autoColumnSize/autoColumnSize.mjs +7 -2
  325. package/plugins/autoRowSize/autoRowSize.js +16 -7
  326. package/plugins/autoRowSize/autoRowSize.mjs +16 -7
  327. package/plugins/autofill/autofill.js +7 -2
  328. package/plugins/autofill/autofill.mjs +7 -2
  329. package/plugins/base/base.js +8 -2
  330. package/plugins/base/base.mjs +8 -2
  331. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -1
  332. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +6 -1
  333. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +6 -1
  334. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +6 -1
  335. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +6 -1
  336. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +6 -1
  337. package/plugins/collapsibleColumns/collapsibleColumns.js +10 -5
  338. package/plugins/collapsibleColumns/collapsibleColumns.mjs +9 -4
  339. package/plugins/columnSorting/columnSorting.js +8 -4
  340. package/plugins/columnSorting/columnSorting.mjs +8 -4
  341. package/plugins/columnSorting/columnStatesManager.js +12 -6
  342. package/plugins/columnSorting/columnStatesManager.mjs +9 -3
  343. package/plugins/columnSorting/rootComparator.mjs +8 -7
  344. package/plugins/columnSorting/sortFunction/checkbox.mjs +9 -8
  345. package/plugins/columnSorting/sortFunction/date.mjs +9 -8
  346. package/plugins/columnSorting/sortFunction/default.mjs +9 -8
  347. package/plugins/columnSorting/sortFunction/numeric.mjs +9 -8
  348. package/plugins/columnSummary/columnSummary.js +13 -8
  349. package/plugins/columnSummary/columnSummary.mjs +13 -8
  350. package/plugins/columnSummary/endpoints.js +17 -16
  351. package/plugins/columnSummary/endpoints.mjs +22 -21
  352. package/plugins/comments/commentEditor.js +16 -2
  353. package/plugins/comments/commentEditor.mjs +21 -7
  354. package/plugins/comments/comments.js +15 -4
  355. package/plugins/comments/comments.mjs +15 -4
  356. package/plugins/comments/displaySwitch.js +14 -1
  357. package/plugins/comments/displaySwitch.mjs +14 -1
  358. package/plugins/contextMenu/commandExecutor.js +22 -7
  359. package/plugins/contextMenu/commandExecutor.mjs +27 -12
  360. package/plugins/contextMenu/contextMenu.d.ts +4 -3
  361. package/plugins/contextMenu/contextMenu.js +7 -17
  362. package/plugins/contextMenu/contextMenu.mjs +7 -17
  363. package/plugins/contextMenu/cursor.js +16 -2
  364. package/plugins/contextMenu/cursor.mjs +21 -7
  365. package/plugins/contextMenu/itemsFactory.js +23 -8
  366. package/plugins/contextMenu/itemsFactory.mjs +28 -13
  367. package/plugins/contextMenu/menu.js +14 -3
  368. package/plugins/contextMenu/menu.mjs +13 -2
  369. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
  370. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -1
  371. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
  372. package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -1
  373. package/plugins/contextMenu/predefinedItems.js +12 -7
  374. package/plugins/contextMenu/predefinedItems.mjs +14 -1
  375. package/plugins/contextMenu/utils.mjs +5 -4
  376. package/plugins/copyPaste/clipboardData.js +16 -2
  377. package/plugins/copyPaste/clipboardData.mjs +16 -2
  378. package/plugins/copyPaste/contextMenuItem/copy.js +4 -16
  379. package/plugins/copyPaste/contextMenuItem/copy.mjs +8 -7
  380. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +35 -0
  381. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +31 -0
  382. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +35 -0
  383. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +31 -0
  384. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +35 -0
  385. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +31 -0
  386. package/plugins/copyPaste/contextMenuItem/cut.mjs +5 -4
  387. package/plugins/copyPaste/copyPaste.d.ts +10 -2
  388. package/plugins/copyPaste/copyPaste.js +303 -202
  389. package/plugins/copyPaste/copyPaste.mjs +303 -202
  390. package/plugins/copyPaste/copyableRanges.js +269 -0
  391. package/plugins/copyPaste/copyableRanges.mjs +264 -0
  392. package/plugins/copyPaste/focusableElement.js +12 -2
  393. package/plugins/copyPaste/focusableElement.mjs +15 -5
  394. package/plugins/copyPaste/pasteEvent.js +16 -2
  395. package/plugins/copyPaste/pasteEvent.mjs +18 -4
  396. package/plugins/customBorders/contextMenuItem/bottom.mjs +5 -4
  397. package/plugins/customBorders/contextMenuItem/left.mjs +5 -4
  398. package/plugins/customBorders/contextMenuItem/noBorders.mjs +5 -4
  399. package/plugins/customBorders/contextMenuItem/right.mjs +5 -4
  400. package/plugins/customBorders/contextMenuItem/top.mjs +5 -4
  401. package/plugins/customBorders/customBorders.js +12 -7
  402. package/plugins/customBorders/customBorders.mjs +11 -6
  403. package/plugins/customBorders/utils.mjs +8 -7
  404. package/plugins/dragToScroll/dragToScroll.js +6 -1
  405. package/plugins/dragToScroll/dragToScroll.mjs +6 -1
  406. package/plugins/dropdownMenu/dropdownMenu.js +6 -1
  407. package/plugins/dropdownMenu/dropdownMenu.mjs +6 -1
  408. package/plugins/exportFile/dataProvider.js +13 -6
  409. package/plugins/exportFile/dataProvider.mjs +12 -5
  410. package/plugins/exportFile/exportFile.js +8 -3
  411. package/plugins/exportFile/exportFile.mjs +6 -1
  412. package/plugins/exportFile/typeFactory.js +14 -1
  413. package/plugins/exportFile/typeFactory.mjs +14 -1
  414. package/plugins/exportFile/types/_base.js +16 -2
  415. package/plugins/exportFile/types/_base.mjs +18 -4
  416. package/plugins/exportFile/types/csv.js +6 -1
  417. package/plugins/exportFile/types/csv.mjs +6 -1
  418. package/plugins/filters/component/_base.js +16 -2
  419. package/plugins/filters/component/_base.mjs +19 -5
  420. package/plugins/filters/component/actionBar.js +10 -4
  421. package/plugins/filters/component/actionBar.mjs +11 -5
  422. package/plugins/filters/component/condition.js +10 -4
  423. package/plugins/filters/component/condition.mjs +11 -5
  424. package/plugins/filters/component/operators.js +8 -3
  425. package/plugins/filters/component/operators.mjs +8 -3
  426. package/plugins/filters/component/value.js +9 -3
  427. package/plugins/filters/component/value.mjs +12 -6
  428. package/plugins/filters/condition/beginsWith.js +1 -1
  429. package/plugins/filters/condition/beginsWith.mjs +1 -1
  430. package/plugins/filters/condition/between.js +1 -1
  431. package/plugins/filters/condition/between.mjs +1 -1
  432. package/plugins/filters/condition/byValue.js +1 -1
  433. package/plugins/filters/condition/byValue.mjs +1 -1
  434. package/plugins/filters/condition/contains.js +1 -1
  435. package/plugins/filters/condition/contains.mjs +1 -1
  436. package/plugins/filters/condition/date/after.js +1 -1
  437. package/plugins/filters/condition/date/after.mjs +1 -1
  438. package/plugins/filters/condition/date/before.js +1 -1
  439. package/plugins/filters/condition/date/before.mjs +1 -1
  440. package/plugins/filters/condition/endsWith.js +1 -1
  441. package/plugins/filters/condition/endsWith.mjs +1 -1
  442. package/plugins/filters/condition/equal.js +1 -1
  443. package/plugins/filters/condition/equal.mjs +1 -1
  444. package/plugins/filters/condition/greaterThan.js +1 -1
  445. package/plugins/filters/condition/greaterThan.mjs +1 -1
  446. package/plugins/filters/condition/greaterThanOrEqual.js +1 -1
  447. package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -1
  448. package/plugins/filters/condition/lessThan.js +1 -1
  449. package/plugins/filters/condition/lessThan.mjs +1 -1
  450. package/plugins/filters/condition/lessThanOrEqual.js +1 -1
  451. package/plugins/filters/condition/lessThanOrEqual.mjs +1 -1
  452. package/plugins/filters/conditionCollection.js +10 -4
  453. package/plugins/filters/conditionCollection.mjs +18 -12
  454. package/plugins/filters/conditionUpdateObserver.js +15 -2
  455. package/plugins/filters/conditionUpdateObserver.mjs +23 -10
  456. package/plugins/filters/constants.js +14 -1
  457. package/plugins/filters/constants.mjs +14 -1
  458. package/plugins/filters/dataFilter.js +16 -2
  459. package/plugins/filters/dataFilter.mjs +19 -5
  460. package/plugins/filters/filters.js +7 -2
  461. package/plugins/filters/filters.mjs +7 -2
  462. package/plugins/filters/ui/_base.js +12 -7
  463. package/plugins/filters/ui/_base.mjs +14 -1
  464. package/plugins/filters/ui/input.js +6 -1
  465. package/plugins/filters/ui/input.mjs +6 -1
  466. package/plugins/filters/ui/link.js +6 -1
  467. package/plugins/filters/ui/link.mjs +6 -1
  468. package/plugins/filters/ui/multipleSelect.js +14 -8
  469. package/plugins/filters/ui/multipleSelect.mjs +6 -1
  470. package/plugins/filters/ui/radioInput.js +6 -1
  471. package/plugins/filters/ui/radioInput.mjs +6 -1
  472. package/plugins/filters/ui/select.js +6 -1
  473. package/plugins/filters/ui/select.mjs +6 -1
  474. package/plugins/formulas/engine/register.mjs +6 -5
  475. package/plugins/formulas/engine/settings.js +12 -1
  476. package/plugins/formulas/engine/settings.mjs +12 -1
  477. package/plugins/formulas/formulas.js +24 -11
  478. package/plugins/formulas/formulas.mjs +24 -11
  479. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
  480. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +6 -5
  481. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -4
  482. package/plugins/hiddenColumns/hiddenColumns.js +5 -1
  483. package/plugins/hiddenColumns/hiddenColumns.mjs +5 -1
  484. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
  485. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +6 -5
  486. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -4
  487. package/plugins/hiddenRows/hiddenRows.js +5 -1
  488. package/plugins/hiddenRows/hiddenRows.mjs +5 -1
  489. package/plugins/index.mjs +4 -3
  490. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  491. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +6 -5
  492. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  493. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +6 -5
  494. package/plugins/manualColumnFreeze/manualColumnFreeze.js +6 -1
  495. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +6 -1
  496. package/plugins/manualColumnMove/manualColumnMove.js +6 -1
  497. package/plugins/manualColumnMove/manualColumnMove.mjs +6 -1
  498. package/plugins/manualColumnMove/ui/_base.js +14 -1
  499. package/plugins/manualColumnMove/ui/_base.mjs +14 -1
  500. package/plugins/manualColumnMove/ui/backlight.js +6 -1
  501. package/plugins/manualColumnMove/ui/backlight.mjs +6 -1
  502. package/plugins/manualColumnMove/ui/guideline.js +6 -1
  503. package/plugins/manualColumnMove/ui/guideline.mjs +6 -1
  504. package/plugins/manualColumnResize/manualColumnResize.js +6 -1
  505. package/plugins/manualColumnResize/manualColumnResize.mjs +6 -1
  506. package/plugins/manualRowMove/manualRowMove.js +6 -1
  507. package/plugins/manualRowMove/manualRowMove.mjs +6 -1
  508. package/plugins/manualRowMove/ui/_base.js +14 -1
  509. package/plugins/manualRowMove/ui/_base.mjs +14 -1
  510. package/plugins/manualRowMove/ui/backlight.js +6 -1
  511. package/plugins/manualRowMove/ui/backlight.mjs +6 -1
  512. package/plugins/manualRowMove/ui/guideline.js +6 -1
  513. package/plugins/manualRowMove/ui/guideline.mjs +6 -1
  514. package/plugins/manualRowResize/manualRowResize.js +6 -1
  515. package/plugins/manualRowResize/manualRowResize.mjs +6 -1
  516. package/plugins/mergeCells/calculations/autofill.js +13 -6
  517. package/plugins/mergeCells/calculations/autofill.mjs +15 -8
  518. package/plugins/mergeCells/calculations/selection.js +16 -2
  519. package/plugins/mergeCells/calculations/selection.mjs +16 -2
  520. package/plugins/mergeCells/cellCoords.js +16 -2
  521. package/plugins/mergeCells/cellCoords.mjs +21 -7
  522. package/plugins/mergeCells/cellsCollection.js +12 -5
  523. package/plugins/mergeCells/cellsCollection.mjs +14 -7
  524. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +5 -4
  525. package/plugins/mergeCells/mergeCells.js +7 -2
  526. package/plugins/mergeCells/mergeCells.mjs +7 -2
  527. package/plugins/multiColumnSorting/multiColumnSorting.js +6 -1
  528. package/plugins/multiColumnSorting/multiColumnSorting.mjs +6 -1
  529. package/plugins/multiColumnSorting/rootComparator.mjs +8 -7
  530. package/plugins/multiColumnSorting/utils.mjs +4 -3
  531. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +6 -1
  532. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +6 -1
  533. package/plugins/nestedHeaders/nestedHeaders.js +124 -16
  534. package/plugins/nestedHeaders/nestedHeaders.mjs +131 -23
  535. package/plugins/nestedHeaders/stateManager/headersTree.js +10 -3
  536. package/plugins/nestedHeaders/stateManager/headersTree.mjs +10 -3
  537. package/plugins/nestedHeaders/stateManager/index.js +34 -14
  538. package/plugins/nestedHeaders/stateManager/index.mjs +67 -47
  539. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +33 -31
  540. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +18 -17
  541. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +17 -16
  542. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.mjs +7 -6
  543. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.mjs +2 -1
  544. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.mjs +7 -6
  545. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +41 -39
  546. package/plugins/nestedHeaders/stateManager/sourceSettings.js +11 -3
  547. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +23 -14
  548. package/plugins/nestedHeaders/utils/ghostTable.js +17 -3
  549. package/plugins/nestedHeaders/utils/ghostTable.mjs +24 -10
  550. package/plugins/nestedRows/data/dataManager.js +10 -4
  551. package/plugins/nestedRows/data/dataManager.mjs +12 -6
  552. package/plugins/nestedRows/nestedRows.js +6 -1
  553. package/plugins/nestedRows/nestedRows.mjs +6 -1
  554. package/plugins/nestedRows/ui/_base.js +16 -2
  555. package/plugins/nestedRows/ui/_base.mjs +16 -2
  556. package/plugins/nestedRows/ui/collapsing.js +8 -2
  557. package/plugins/nestedRows/ui/collapsing.mjs +14 -8
  558. package/plugins/nestedRows/ui/contextMenu.js +7 -2
  559. package/plugins/nestedRows/ui/contextMenu.mjs +6 -1
  560. package/plugins/nestedRows/ui/headers.js +8 -2
  561. package/plugins/nestedRows/ui/headers.mjs +14 -8
  562. package/plugins/nestedRows/utils/rowMoveController.js +11 -4
  563. package/plugins/nestedRows/utils/rowMoveController.mjs +25 -18
  564. package/plugins/persistentState/persistentState.js +6 -1
  565. package/plugins/persistentState/persistentState.mjs +6 -1
  566. package/plugins/persistentState/storage.js +16 -2
  567. package/plugins/persistentState/storage.mjs +19 -5
  568. package/plugins/registry.js +1 -1
  569. package/plugins/registry.mjs +3 -2
  570. package/plugins/search/search.js +6 -1
  571. package/plugins/search/search.mjs +6 -1
  572. package/plugins/touchScroll/touchScroll.js +6 -1
  573. package/plugins/touchScroll/touchScroll.mjs +6 -1
  574. package/plugins/trimRows/trimRows.js +5 -1
  575. package/plugins/trimRows/trimRows.mjs +5 -1
  576. package/plugins/undoRedo/undoRedo.js +50 -32
  577. package/plugins/undoRedo/undoRedo.mjs +50 -32
  578. package/registry.mjs +2 -1
  579. package/renderers/baseRenderer/baseRenderer.mjs +2 -1
  580. package/renderers/index.mjs +4 -3
  581. package/selection/highlight/highlight.js +10 -3
  582. package/selection/highlight/highlight.mjs +24 -17
  583. package/selection/highlight/types/activeHeader.js +13 -2
  584. package/selection/highlight/types/activeHeader.mjs +19 -7
  585. package/selection/highlight/types/area.js +13 -2
  586. package/selection/highlight/types/area.mjs +22 -10
  587. package/selection/highlight/types/cell.js +13 -2
  588. package/selection/highlight/types/cell.mjs +22 -10
  589. package/selection/highlight/types/customSelection.js +13 -2
  590. package/selection/highlight/types/customSelection.mjs +23 -11
  591. package/selection/highlight/types/fill.js +14 -3
  592. package/selection/highlight/types/fill.mjs +22 -10
  593. package/selection/highlight/types/header.js +13 -2
  594. package/selection/highlight/types/header.mjs +24 -12
  595. package/selection/highlight/types/index.js +14 -3
  596. package/selection/highlight/types/index.mjs +14 -3
  597. package/selection/highlight/visualSelection.js +11 -6
  598. package/selection/highlight/visualSelection.mjs +11 -6
  599. package/selection/mouseEventHandler.mjs +14 -13
  600. package/selection/range.js +9 -2
  601. package/selection/range.mjs +9 -2
  602. package/selection/selection.js +13 -6
  603. package/selection/selection.mjs +21 -14
  604. package/selection/transformation.js +16 -2
  605. package/selection/transformation.mjs +24 -10
  606. package/selection/utils.js +1 -1
  607. package/selection/utils.mjs +1 -1
  608. package/shortcuts/context.js +1 -1
  609. package/shortcuts/context.mjs +1 -1
  610. package/shortcuts/keyObserver.js +8 -4
  611. package/shortcuts/keyObserver.mjs +8 -4
  612. package/shortcuts/manager.js +1 -1
  613. package/shortcuts/manager.mjs +1 -1
  614. package/tableView.js +147 -68
  615. package/tableView.mjs +147 -68
  616. package/translations/changesObservable/observable.js +12 -2
  617. package/translations/changesObservable/observable.mjs +19 -9
  618. package/translations/changesObservable/observer.js +12 -2
  619. package/translations/changesObservable/observer.mjs +17 -7
  620. package/translations/indexMapper.js +12 -6
  621. package/translations/indexMapper.mjs +17 -11
  622. package/translations/mapCollections/aggregatedCollection.js +8 -2
  623. package/translations/mapCollections/aggregatedCollection.mjs +11 -5
  624. package/translations/mapCollections/mapCollection.js +10 -1
  625. package/translations/mapCollections/mapCollection.mjs +10 -1
  626. package/translations/maps/hidingMap.js +8 -2
  627. package/translations/maps/hidingMap.mjs +13 -7
  628. package/translations/maps/indexMap.js +16 -2
  629. package/translations/maps/indexMap.mjs +20 -6
  630. package/translations/maps/indexesSequence.js +8 -2
  631. package/translations/maps/indexesSequence.mjs +14 -8
  632. package/translations/maps/linkedPhysicalIndexToValueMap.js +12 -6
  633. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +18 -12
  634. package/translations/maps/physicalIndexToValueMap.js +8 -2
  635. package/translations/maps/physicalIndexToValueMap.mjs +14 -8
  636. package/translations/maps/trimmingMap.js +8 -2
  637. package/translations/maps/trimmingMap.mjs +13 -7
  638. package/translations/maps/utils/actionsOnIndexes.mjs +9 -8
  639. package/translations/maps/utils/indexesSequence.mjs +10 -9
  640. package/translations/maps/utils/physicallyIndexed.mjs +11 -10
  641. package/utils/dataStructures/linkedList.js +21 -7
  642. package/utils/dataStructures/linkedList.mjs +21 -7
  643. package/utils/dataStructures/priorityMap.js +1 -1
  644. package/utils/dataStructures/priorityMap.mjs +1 -1
  645. package/utils/dataStructures/queue.js +16 -2
  646. package/utils/dataStructures/queue.mjs +16 -2
  647. package/utils/dataStructures/stack.js +16 -2
  648. package/utils/dataStructures/stack.mjs +16 -2
  649. package/utils/dataStructures/tree.js +8 -2
  650. package/utils/dataStructures/tree.mjs +8 -2
  651. package/utils/dataStructures/uniqueMap.js +1 -1
  652. package/utils/dataStructures/uniqueMap.mjs +1 -1
  653. package/utils/ghostTable.js +12 -5
  654. package/utils/ghostTable.mjs +12 -5
  655. package/utils/interval.js +23 -8
  656. package/utils/interval.mjs +18 -4
  657. package/utils/samplesGenerator.js +13 -3
  658. package/utils/samplesGenerator.mjs +15 -5
  659. package/validators/index.mjs +4 -3
package/core.js CHANGED
@@ -43,7 +43,8 @@ var _array = require("./helpers/array");
43
43
  var _parseTable = require("./utils/parseTable");
44
44
  var _registry = require("./plugins/registry");
45
45
  var _registry2 = require("./renderers/registry");
46
- var _registry3 = require("./validators/registry");
46
+ var _registry3 = require("./editors/registry");
47
+ var _registry4 = require("./validators/registry");
47
48
  var _string = require("./helpers/string");
48
49
  var _number = require("./helpers/number");
49
50
  var _tableView = _interopRequireDefault(require("./tableView"));
@@ -53,7 +54,7 @@ var _translations = require("./translations");
53
54
  var _rootInstance = require("./utils/rootInstance");
54
55
  var _src = require("./3rdparty/walkontable/src");
55
56
  var _pluginHooks = _interopRequireDefault(require("./pluginHooks"));
56
- var _registry4 = require("./i18n/registry");
57
+ var _registry5 = require("./i18n/registry");
57
58
  var _utils = require("./i18n/utils");
58
59
  var _selection = require("./selection");
59
60
  var _dataMap = require("./dataMap");
@@ -65,7 +66,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
65
66
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
66
67
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
67
68
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
68
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
69
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
69
70
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
70
71
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
71
72
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -85,37 +86,41 @@ var deprecationWarns = new Set();
85
86
  * @class Core
86
87
  * @description
87
88
  *
88
- * The `Handsontable` class to which we refer as to `Core`, allows you to modify the grid's behavior by using one of the available public methods.
89
+ * The `Handsontable` class (known as the `Core`) lets you modify the grid's behavior by using Handsontable's public API methods.
90
+ *
91
+ * ::: only-for react
92
+ * To use these methods, associate a Handsontable instance with your instance
93
+ * of the [`HotTable` component](@/guides/getting-started/installation.md#use-the-hottable-component),
94
+ * by using React's `ref` feature (read more on the [Instance methods](@/guides/getting-started/react-methods.md) page).
95
+ * :::
89
96
  *
90
97
  * ## How to call a method
91
98
  *
92
99
  * ::: only-for javascript
93
100
  * ```js
94
- * // First, let's construct Handsontable
101
+ * // create a Handsontable instance
95
102
  * const hot = new Handsontable(document.getElementById('example'), options);
96
103
  *
97
- * // Then, let's use the setDataAtCell method
104
+ * // call a method
98
105
  * hot.setDataAtCell(0, 0, 'new value');
99
106
  * ```
100
107
  * :::
101
108
  *
102
109
  * ::: only-for react
103
- * ```jsx
104
- * const hotRef = useRef(null);
110
+ * ```jsx{3,7,13}
111
+ * import { useRef } from 'react';
105
112
  *
106
- * ...
113
+ * const hotTableComponent = useRef(null);
107
114
  *
108
- * // First, let's contruct Handsontable
109
115
  * <HotTable
110
- * ref={hotRef}
116
+ * // associate your `HotTable` component with a Handsontable instance
117
+ * ref={hotTableComponent}
111
118
  * settings={options}
112
119
  * />
113
120
  *
114
- * ...
115
- *
116
- * const hot = hotRef.current.hotInstance;
117
- * // Then, let's use the setDataAtCell method
118
- * hot.setDataAtCell(0, 0, 'new value');
121
+ * // access the Handsontable instance, under the `.current.hotInstance` property
122
+ * // call a method
123
+ * hotTableComponent.current.hotInstance.setDataAtCell(0, 0, 'new value');
119
124
  * ```
120
125
  * :::
121
126
  *
@@ -229,7 +234,7 @@ function Core(rootElement, userSettings) {
229
234
  this.getDirectionFactor = function () {
230
235
  return instance.isLtr() ? 1 : -1;
231
236
  };
232
- userSettings.language = (0, _registry4.getValidLanguageCode)(userSettings.language);
237
+ userSettings.language = (0, _registry5.getValidLanguageCode)(userSettings.language);
233
238
  var metaManager = new _dataMap.MetaManager(instance, userSettings, [_dataMap.DynamicCellMetaMod, _dataMap.ExtendMetaPropertiesMod]);
234
239
  var tableMeta = metaManager.getTableMeta();
235
240
  var globalMeta = metaManager.getGlobalMeta();
@@ -446,7 +451,8 @@ function Core(rootElement, userSettings) {
446
451
  * @param {number} [amount=1] Amount of rows or columns to remove.
447
452
  * @param {string} [source] Optional. Source of hook runner.
448
453
  * @param {boolean} [keepEmptyRows] Optional. Flag for preventing deletion of empty rows.
449
- */alter: function alter(action, index) {
454
+ */
455
+ alter: function alter(action, index) {
450
456
  var _index, _index2;
451
457
  var amount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
452
458
  var source = arguments.length > 3 ? arguments[3] : undefined;
@@ -521,7 +527,6 @@ function Core(rootElement, userSettings) {
521
527
  rowDelta = _datamap$createRow.delta,
522
528
  startRowPhysicalIndex = _datamap$createRow.startPhysicalIndex;
523
529
  if (rowDelta) {
524
- metaManager.createRow(startRowPhysicalIndex, amount);
525
530
  var currentSelectedRange = selection.selectedRange.current();
526
531
  var currentFromRange = currentSelectedRange === null || currentSelectedRange === void 0 ? void 0 : currentSelectedRange.from;
527
532
  var currentFromRow = currentFromRange === null || currentFromRange === void 0 ? void 0 : currentFromRange.row;
@@ -577,7 +582,6 @@ function Core(rootElement, userSettings) {
577
582
  colDelta = _datamap$createCol.delta,
578
583
  startColumnPhysicalIndex = _datamap$createCol.startPhysicalIndex;
579
584
  if (colDelta) {
580
- metaManager.createColumn(startColumnPhysicalIndex, amount);
581
585
  if (Array.isArray(tableMeta.colHeaders)) {
582
586
  var spliceArray = [instance.toVisualColumn(startColumnPhysicalIndex), 0];
583
587
  spliceArray.length += colDelta; // inserts empty (undefined) elements at the end of an array
@@ -640,7 +644,6 @@ function Core(rootElement, userSettings) {
640
644
  if (!wasRemoved) {
641
645
  return;
642
646
  }
643
- metaManager.removeRow(instance.toPhysicalRow(calcIndex), groupAmount);
644
647
  var totalRows = instance.countRows();
645
648
  var fixedRowsTop = tableMeta.fixedRowsTop;
646
649
  if (fixedRowsTop >= calcIndex + 1) {
@@ -686,7 +689,6 @@ function Core(rootElement, userSettings) {
686
689
  if (!wasRemoved) {
687
690
  return;
688
691
  }
689
- metaManager.removeColumn(physicalColumnIndex, groupAmount);
690
692
  var fixedColumnsStart = tableMeta.fixedColumnsStart;
691
693
  if (fixedColumnsStart >= calcIndex + 1) {
692
694
  tableMeta.fixedColumnsStart -= Math.min(groupAmount, fixedColumnsStart - calcIndex);
@@ -720,7 +722,8 @@ function Core(rootElement, userSettings) {
720
722
  * Makes sure there are empty rows at the bottom of the table.
721
723
  *
722
724
  * @private
723
- */adjustRowsAndCols: function adjustRowsAndCols() {
725
+ */
726
+ adjustRowsAndCols: function adjustRowsAndCols() {
724
727
  var minRows = tableMeta.minRows;
725
728
  var minSpareRows = tableMeta.minSpareRows;
726
729
  var minCols = tableMeta.minCols;
@@ -846,7 +849,8 @@ function Core(rootElement, userSettings) {
846
849
  * @param {Array} deltas The deltas array. A difference between values of adjacent cells.
847
850
  * Useful **only** when the type of handled cells is `numeric`.
848
851
  * @returns {object|undefined} Ending td in pasted area (only if any cell was changed).
849
- */populateFromArray: function populateFromArray(start, input, end, source, method, direction, deltas) {
852
+ */
853
+ populateFromArray: function populateFromArray(start, input, end, source, method, direction, deltas) {
850
854
  // TODO: either remove or implement the `direction` argument. Currently it's not working at all.
851
855
  var r;
852
856
  var rlen;
@@ -1021,8 +1025,8 @@ function Core(rootElement, userSettings) {
1021
1025
  var orgValueSchema = (0, _object.duckSchema)(Array.isArray(orgValue) ? orgValue : orgValue[0] || orgValue);
1022
1026
  var valueSchema = (0, _object.duckSchema)(Array.isArray(value) ? value : value[0] || value);
1023
1027
 
1024
- /* eslint-disable max-depth */
1025
- if ((0, _object.isObjectEqual)(orgValueSchema, valueSchema)) {
1028
+ // Allow overwriting values with the same object-based schema or any array-based schema.
1029
+ if ((0, _object.isObjectEqual)(orgValueSchema, valueSchema) || Array.isArray(orgValueSchema) && Array.isArray(valueSchema)) {
1026
1030
  value = (0, _object.deepClone)(value);
1027
1031
  } else {
1028
1032
  pushData = false;
@@ -1054,7 +1058,7 @@ function Core(rootElement, userSettings) {
1054
1058
  */
1055
1059
  function setLanguage(languageCode) {
1056
1060
  var normalizedLanguageCode = (0, _utils.normalizeLanguageCode)(languageCode);
1057
- if ((0, _registry4.hasLanguageDictionary)(normalizedLanguageCode)) {
1061
+ if ((0, _registry5.hasLanguageDictionary)(normalizedLanguageCode)) {
1058
1062
  instance.runHooks('beforeLanguageChange', normalizedLanguageCode);
1059
1063
  globalMeta.language = normalizedLanguageCode;
1060
1064
  instance.runHooks('afterLanguageChange', normalizedLanguageCode);
@@ -1106,6 +1110,16 @@ function Core(rootElement, userSettings) {
1106
1110
  instance.runHooks('init');
1107
1111
  this.forceFullRender = true; // used when data was changed
1108
1112
  this.view.render();
1113
+
1114
+ // Run the logic only if it's the table's initialization and the root element is not visible.
1115
+ if (!!firstRun && instance.rootElement.offsetParent === null) {
1116
+ (0, _element.observeVisibilityChangeOnce)(instance.rootElement, function () {
1117
+ // Update the spreader size cache before rendering.
1118
+ instance.view._wt.wtOverlays.updateLastSpreaderSize();
1119
+ instance.render();
1120
+ instance.view.adjustElementsSize();
1121
+ });
1122
+ }
1109
1123
  if (_typeof(firstRun) === 'object') {
1110
1124
  instance.runHooks('afterChange', firstRun[0], firstRun[1]);
1111
1125
  firstRun = false;
@@ -1259,9 +1273,7 @@ function Core(rootElement, userSettings) {
1259
1273
  source: source
1260
1274
  }),
1261
1275
  numberOfCreatedRows = _datamap$createRow2.delta;
1262
- if (numberOfCreatedRows >= 1) {
1263
- metaManager.createRow(null, numberOfCreatedRows);
1264
- } else {
1276
+ if (numberOfCreatedRows === 0) {
1265
1277
  skipThisChange = true;
1266
1278
  break;
1267
1279
  }
@@ -1273,9 +1285,7 @@ function Core(rootElement, userSettings) {
1273
1285
  source: source
1274
1286
  }),
1275
1287
  numberOfCreatedColumns = _datamap$createCol2.delta;
1276
- if (numberOfCreatedColumns >= 1) {
1277
- metaManager.createColumn(null, numberOfCreatedColumns);
1278
- } else {
1288
+ if (numberOfCreatedColumns === 0) {
1279
1289
  skipThisChange = true;
1280
1290
  break;
1281
1291
  }
@@ -2100,6 +2110,7 @@ function Core(rootElement, userSettings) {
2100
2110
  dataSource: dataSource,
2101
2111
  internalSource: 'updateData',
2102
2112
  source: source,
2113
+ metaManager: metaManager,
2103
2114
  firstRun: firstRun
2104
2115
  });
2105
2116
  };
@@ -2142,6 +2153,7 @@ function Core(rootElement, userSettings) {
2142
2153
  dataSource: dataSource,
2143
2154
  internalSource: 'loadData',
2144
2155
  source: source,
2156
+ metaManager: metaManager,
2145
2157
  firstRun: firstRun
2146
2158
  });
2147
2159
  };
@@ -3124,16 +3136,15 @@ function Core(rootElement, userSettings) {
3124
3136
  this.isColumnModificationAllowed = function () {
3125
3137
  return !(instance.dataType === 'object' || tableMeta.columns);
3126
3138
  };
3127
- var rendererLookup = (0, _data.cellMethodLookupFactory)('renderer');
3128
3139
 
3129
3140
  /**
3130
3141
  * Returns the cell renderer function by given `row` and `column` arguments.
3131
3142
  *
3132
3143
  * @memberof Core#
3133
3144
  * @function getCellRenderer
3134
- * @param {number|object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3145
+ * @param {number|object} rowOrMeta Visual row index or cell meta object (see {@link Core#getCellMeta}).
3135
3146
  * @param {number} column Visual column index.
3136
- * @returns {Function} The renderer function.
3147
+ * @returns {Function} Returns the renderer function.
3137
3148
  * @example
3138
3149
  * ```js
3139
3150
  * // Get cell renderer using `row` and `column` coordinates.
@@ -3142,8 +3153,12 @@ function Core(rootElement, userSettings) {
3142
3153
  * hot.getCellRenderer(hot.getCellMeta(1, 1));
3143
3154
  * ```
3144
3155
  */
3145
- this.getCellRenderer = function (row, column) {
3146
- return (0, _registry2.getRenderer)(rendererLookup.call(this, row, column));
3156
+ this.getCellRenderer = function (rowOrMeta, column) {
3157
+ var cellRenderer = typeof rowOrMeta === 'number' ? instance.getCellMeta(rowOrMeta, column).renderer : rowOrMeta.renderer;
3158
+ if (typeof cellRenderer === 'string') {
3159
+ return (0, _registry2.getRenderer)(cellRenderer);
3160
+ }
3161
+ return (0, _mixed.isUndefined)(cellRenderer) ? (0, _registry2.getRenderer)('text') : cellRenderer;
3147
3162
  };
3148
3163
 
3149
3164
  /**
@@ -3151,9 +3166,9 @@ function Core(rootElement, userSettings) {
3151
3166
  *
3152
3167
  * @memberof Core#
3153
3168
  * @function getCellEditor
3154
- * @param {number} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3169
+ * @param {number} rowOrMeta Visual row index or cell meta object (see {@link Core#getCellMeta}).
3155
3170
  * @param {number} column Visual column index.
3156
- * @returns {Function} The editor class.
3171
+ * @returns {Function|boolean} Returns the editor class or `false` is cell editor is disabled.
3157
3172
  * @example
3158
3173
  * ```js
3159
3174
  * // Get cell editor class using `row` and `column` coordinates.
@@ -3162,31 +3177,36 @@ function Core(rootElement, userSettings) {
3162
3177
  * hot.getCellEditor(hot.getCellMeta(1, 1));
3163
3178
  * ```
3164
3179
  */
3165
- this.getCellEditor = (0, _data.cellMethodLookupFactory)('editor');
3166
- var validatorLookup = (0, _data.cellMethodLookupFactory)('validator');
3180
+ this.getCellEditor = function (rowOrMeta, column) {
3181
+ var cellEditor = typeof rowOrMeta === 'number' ? instance.getCellMeta(rowOrMeta, column).editor : rowOrMeta.editor;
3182
+ if (typeof cellEditor === 'string') {
3183
+ return (0, _registry3.getEditor)(cellEditor);
3184
+ }
3185
+ return (0, _mixed.isUndefined)(cellEditor) ? (0, _registry3.getEditor)('text') : cellEditor;
3186
+ };
3167
3187
 
3168
3188
  /**
3169
3189
  * Returns the cell validator by `row` and `column`.
3170
3190
  *
3171
3191
  * @memberof Core#
3172
3192
  * @function getCellValidator
3173
- * @param {number|object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3193
+ * @param {number|object} rowOrMeta Visual row index or cell meta object (see {@link Core#getCellMeta}).
3174
3194
  * @param {number} column Visual column index.
3175
3195
  * @returns {Function|RegExp|undefined} The validator function.
3176
3196
  * @example
3177
3197
  * ```js
3178
- * // Get cell valiator using `row` and `column` coordinates.
3198
+ * // Get cell validator using `row` and `column` coordinates.
3179
3199
  * hot.getCellValidator(1, 1);
3180
- * // Get cell valiator using cell meta object.
3200
+ * // Get cell validator using cell meta object.
3181
3201
  * hot.getCellValidator(hot.getCellMeta(1, 1));
3182
3202
  * ```
3183
3203
  */
3184
- this.getCellValidator = function (row, column) {
3185
- var validator = validatorLookup.call(this, row, column);
3186
- if (typeof validator === 'string') {
3187
- validator = (0, _registry3.getValidator)(validator);
3204
+ this.getCellValidator = function (rowOrMeta, column) {
3205
+ var cellValidator = typeof rowOrMeta === 'number' ? instance.getCellMeta(rowOrMeta, column).validator : rowOrMeta.validator;
3206
+ if (typeof cellValidator === 'string') {
3207
+ return (0, _registry4.getValidator)(cellValidator);
3188
3208
  }
3189
- return validator;
3209
+ return cellValidator;
3190
3210
  };
3191
3211
 
3192
3212
  /**
@@ -3373,54 +3393,84 @@ function Core(rootElement, userSettings) {
3373
3393
  };
3374
3394
 
3375
3395
  /**
3376
- * Returns an array of column headers (in string format, if they are enabled). If param `column` is given, it
3377
- * returns the header at the given column.
3396
+ * Gets the values of column headers (if column headers are [enabled](@/api/options.md#colheaders)).
3397
+ *
3398
+ * To get an array with the values of all
3399
+ * [bottom-most](@/guides/cell-features/clipboard.md#copy-with-headers) column headers,
3400
+ * call `getColHeader()` with no arguments.
3401
+ *
3402
+ * To get the value of the bottom-most header of a specific column, use the `column` parameter.
3403
+ *
3404
+ * To get the value of a [specific-level](@/guides/columns/column-groups.md) header
3405
+ * of a specific column, use the `column` and `headerLevel` parameters.
3406
+ *
3407
+ * Read more:
3408
+ * - [Guides: Column groups](@/guides/columns/column-groups.md)
3409
+ * - [Options: `colHeaders`](@/api/options.md#colheaders)
3410
+ * - [Guides: Copy with headers](@/guides/cell-features/clipboard.md#copy-with-headers)
3411
+ *
3412
+ * ```js
3413
+ * // get the contents of all bottom-most column headers
3414
+ * hot.getColHeader();
3415
+ *
3416
+ * // get the contents of the bottom-most header of a specific column
3417
+ * hot.getColHeader(5);
3418
+ *
3419
+ * // get the contents of a specific column header at a specific level
3420
+ * hot.getColHeader(5, -2);
3421
+ * ```
3378
3422
  *
3379
3423
  * @memberof Core#
3380
3424
  * @function getColHeader
3381
- * @param {number} [column] Visual column index.
3425
+ * @param {number} [column] A visual column index.
3426
+ * @param {number} [headerLevel=-1] (Since 12.3.0) Header level index. Accepts positive (0 to n)
3427
+ * and negative (-1 to -n) values. For positive values, 0 points to the
3428
+ * topmost header. For negative values, -1 points to the bottom-most
3429
+ * header (the header closest to the cells).
3382
3430
  * @fires Hooks#modifyColHeader
3383
- * @returns {Array|string|number} The column header(s).
3431
+ * @fires Hooks#modifyColumnHeaderValue
3432
+ * @returns {Array|string|number} Column header values.
3384
3433
  */
3385
3434
  this.getColHeader = function (column) {
3435
+ var headerLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;
3386
3436
  var columnIndex = instance.runHooks('modifyColHeader', column);
3387
- var result = tableMeta.colHeaders;
3388
3437
  if (columnIndex === void 0) {
3389
3438
  var out = [];
3390
3439
  var ilen = instance.countCols();
3391
3440
  for (var i = 0; i < ilen; i++) {
3392
3441
  out.push(instance.getColHeader(i));
3393
3442
  }
3394
- result = out;
3395
- } else {
3396
- var translateVisualIndexToColumns = function translateVisualIndexToColumns(visualColumnIndex) {
3397
- var arr = [];
3398
- var columnsLen = instance.countCols();
3399
- var index = 0;
3400
- for (; index < columnsLen; index++) {
3401
- if ((0, _function.isFunction)(tableMeta.columns) && tableMeta.columns(index)) {
3402
- arr.push(index);
3403
- }
3443
+ return out;
3444
+ }
3445
+ var result = tableMeta.colHeaders;
3446
+ var translateVisualIndexToColumns = function translateVisualIndexToColumns(visualColumnIndex) {
3447
+ var arr = [];
3448
+ var columnsLen = instance.countCols();
3449
+ var index = 0;
3450
+ for (; index < columnsLen; index++) {
3451
+ if ((0, _function.isFunction)(tableMeta.columns) && tableMeta.columns(index)) {
3452
+ arr.push(index);
3404
3453
  }
3405
- return arr[visualColumnIndex];
3406
- };
3407
- var physicalColumn = instance.toPhysicalColumn(columnIndex);
3408
- var prop = translateVisualIndexToColumns(physicalColumn);
3409
- if (tableMeta.colHeaders === false) {
3410
- result = null;
3411
- } else if (tableMeta.columns && (0, _function.isFunction)(tableMeta.columns) && tableMeta.columns(prop) && tableMeta.columns(prop).title) {
3412
- result = tableMeta.columns(prop).title;
3413
- } else if (tableMeta.columns && tableMeta.columns[physicalColumn] && tableMeta.columns[physicalColumn].title) {
3414
- result = tableMeta.columns[physicalColumn].title;
3415
- } else if (Array.isArray(tableMeta.colHeaders) && tableMeta.colHeaders[physicalColumn] !== void 0) {
3416
- result = tableMeta.colHeaders[physicalColumn];
3417
- } else if ((0, _function.isFunction)(tableMeta.colHeaders)) {
3418
- result = tableMeta.colHeaders(physicalColumn);
3419
- } else if (tableMeta.colHeaders && typeof tableMeta.colHeaders !== 'string' && typeof tableMeta.colHeaders !== 'number') {
3420
- result = (0, _data.spreadsheetColumnLabel)(columnIndex); // see #1458
3421
3454
  }
3422
- }
3423
-
3455
+ return arr[visualColumnIndex];
3456
+ };
3457
+ var physicalColumn = instance.toPhysicalColumn(columnIndex);
3458
+ var prop = translateVisualIndexToColumns(physicalColumn);
3459
+ if (tableMeta.colHeaders === false) {
3460
+ result = null;
3461
+ } else if (tableMeta.columns && (0, _function.isFunction)(tableMeta.columns) && tableMeta.columns(prop) && tableMeta.columns(prop).title) {
3462
+ result = tableMeta.columns(prop).title;
3463
+ } else if (tableMeta.columns && tableMeta.columns[physicalColumn] && tableMeta.columns[physicalColumn].title) {
3464
+ result = tableMeta.columns[physicalColumn].title;
3465
+ } else if (Array.isArray(tableMeta.colHeaders) && tableMeta.colHeaders[physicalColumn] !== void 0) {
3466
+ result = tableMeta.colHeaders[physicalColumn];
3467
+ } else if ((0, _function.isFunction)(tableMeta.colHeaders)) {
3468
+ result = tableMeta.colHeaders(physicalColumn);
3469
+ } else if (tableMeta.colHeaders && typeof tableMeta.colHeaders !== 'string' && typeof tableMeta.colHeaders !== 'number') {
3470
+ result = (0, _data.spreadsheetColumnLabel)(columnIndex); // see #1458
3471
+ }
3472
+
3473
+ result = instance.runHooks('modifyColumnHeaderValue', result, column, headerLevel);
3424
3474
  return result;
3425
3475
  };
3426
3476
 
@@ -3518,14 +3568,29 @@ function Core(rootElement, userSettings) {
3518
3568
  };
3519
3569
 
3520
3570
  /**
3521
- * Returns the row height.
3571
+ * Returns a row's height, as recognized by Handsontable.
3522
3572
  *
3523
- * Mind that this method is different from the [AutoRowSize](@/api/autoRowSize.md) plugin's [`getRowHeight()`](@/api/autoRowSize.md#getrowheight) method.
3573
+ * Depending on your configuration, the method returns (in order of priority):
3574
+ * 1. The row height set by the [`ManualRowResize`](@/api/manualRowResize.md) plugin
3575
+ * (if the plugin is enabled).
3576
+ * 2. The row height set by the [`rowHeights`](@/api/options.md#rowheights) configuration option
3577
+ * (if the option is set).
3578
+ * 3. The row height as measured in the DOM by the [`AutoRowSize`](@/api/autoRowSize.md) plugin
3579
+ * (if the plugin is enabled).
3580
+ * 4. `undefined`, if neither [`ManualRowResize`](@/api/manualRowResize.md),
3581
+ * nor [`rowHeights`](@/api/options.md#rowheights),
3582
+ * nor [`AutoRowSize`](@/api/autoRowSize.md) is used.
3583
+ *
3584
+ * The height returned includes 1 px of the row's bottom border.
3585
+ *
3586
+ * Mind that this method is different from the
3587
+ * [`getRowHeight()`](@/api/autoRowSize.md#getrowheight) method
3588
+ * of the [`AutoRowSize`](@/api/autoRowSize.md) plugin.
3524
3589
  *
3525
3590
  * @memberof Core#
3526
3591
  * @function getRowHeight
3527
- * @param {number} row Visual row index.
3528
- * @returns {number} The given row's height.
3592
+ * @param {number} row A visual row index.
3593
+ * @returns {number|undefined} The height of the specified row, in pixels.
3529
3594
  * @fires Hooks#modifyRowHeight
3530
3595
  */
3531
3596
  this.getRowHeight = function (row) {
@@ -3697,35 +3762,48 @@ function Core(rootElement, userSettings) {
3697
3762
  };
3698
3763
 
3699
3764
  /**
3700
- * Select cell specified by `row` and `column` values or a range of cells finishing at `endRow`, `endCol`. If the table
3701
- * was configured to support data column properties that properties can be used to making a selection.
3765
+ * Select a single cell, or a single range of adjacent cells.
3766
+ *
3767
+ * To select a cell, pass its visual row and column indexes, for example: `selectCell(2, 4)`.
3702
3768
  *
3703
- * By default, viewport will be scrolled to the selection. After the `selectCell` method had finished, the instance
3704
- * will be listening to keyboard input on the document.
3769
+ * To select a range, pass the visual indexes of the first and last cell in the range, for example: `selectCell(2, 4, 3, 5)`.
3770
+ *
3771
+ * If your columns have properties, you can pass those properties' values instead of column indexes, for example: `selectCell(2, 'first_name')`.
3772
+ *
3773
+ * By default, `selectCell()` also:
3774
+ * - Scrolls the viewport to the newly-selected cells.
3775
+ * - Switches the keyboard focus to Handsontable (by calling Handsontable's [`listen()`](#listen) method).
3705
3776
  *
3706
3777
  * @example
3707
3778
  * ```js
3708
3779
  * // select a single cell
3709
3780
  * hot.selectCell(2, 4);
3710
- * // select a single cell using column property
3711
- * hot.selectCell(2, 'address');
3781
+ *
3712
3782
  * // select a range of cells
3713
3783
  * hot.selectCell(2, 4, 3, 5);
3714
- * // select a range of cells using column properties
3715
- * hot.selectCell(2, 'address', 3, 'phone_number');
3716
- * // select a range of cells without scrolling to them
3717
- * hot.selectCell(2, 'address', 3, 'phone_number', false);
3784
+ *
3785
+ * // select a single cell, using a column property
3786
+ * hot.selectCell(2, 'first_name');
3787
+ *
3788
+ * // select a range of cells, using column properties
3789
+ * hot.selectCell(2, 'first_name', 3, 'last_name');
3790
+ *
3791
+ * // select a range of cells, without scrolling to them
3792
+ * hot.selectCell(2, 4, 3, 5, false);
3793
+ *
3794
+ * // select a range of cells, without switching the keyboard focus to Handsontable
3795
+ * hot.selectCell(2, 4, 3, 5, null, false);
3718
3796
  * ```
3719
3797
  *
3720
3798
  * @memberof Core#
3721
3799
  * @function selectCell
3722
- * @param {number} row Visual row index.
3723
- * @param {number|string} column Visual column index or column property.
3724
- * @param {number} [endRow] Visual end row index (if selecting a range).
3725
- * @param {number|string} [endColumn] Visual end column index or column property (if selecting a range).
3726
- * @param {boolean} [scrollToCell=true] If `true`, the viewport will be scrolled to the selection.
3727
- * @param {boolean} [changeListener=true] If `false`, Handsontable will not change keyboard events listener to himself.
3728
- * @returns {boolean} `true` if selection was successful, `false` otherwise.
3800
+ * @param {number} row A visual row index.
3801
+ * @param {number|string} column A visual column index (`number`), or a column property's value (`string`).
3802
+ * @param {number} [endRow] If selecting a range: the visual row index of the last cell in the range.
3803
+ * @param {number|string} [endColumn] If selecting a range: the visual column index (or a column property's value) of the last cell in the range.
3804
+ * @param {boolean} [scrollToCell=true] `true`: scroll the viewport to the newly-selected cells. `false`: keep the previous viewport.
3805
+ * @param {boolean} [changeListener=true] `true`: switch the keyboard focus to Handsontable. `false`: keep the previous keyboard focus.
3806
+ * @returns {boolean} `true`: the selection was successful, `false`: the selection failed.
3729
3807
  */
3730
3808
  this.selectCell = function (row, column, endRow, endColumn) {
3731
3809
  var scrollToCell = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
@@ -3737,24 +3815,48 @@ function Core(rootElement, userSettings) {
3737
3815
  };
3738
3816
 
3739
3817
  /**
3740
- * Make multiple, non-contiguous selection specified by `row` and `column` values or a range of cells
3741
- * finishing at `endRow`, `endColumn`. The method supports two input formats which are the same as that
3742
- * produces by `getSelected` and `getSelectedRange` methods.
3818
+ * Select multiple cells or ranges of cells, adjacent or non-adjacent.
3819
+ *
3820
+ * You can pass one of the below:
3821
+ * - An array of arrays (which matches the output of Handsontable's [`getSelected()`](#getselected) method).
3822
+ * - An array of [`CellRange`](@/api/cellRange.md) objects (which matches the output of Handsontable's [`getSelectedRange()`](#getselectedrange) method).
3823
+ *
3824
+ * To select multiple cells, pass the visual row and column indexes of each cell, for example: `hot.selectCells([[1, 1], [5, 5]])`.
3825
+ *
3826
+ * To select multiple ranges, pass the visual indexes of the first and last cell in each range, for example: `hot.selectCells([[1, 1, 2, 2], [6, 2, 0, 2]])`.
3743
3827
  *
3744
- * By default, viewport will be scrolled to selection. After the `selectCells` method had finished, the instance
3745
- * will be listening to keyboard input on the document.
3828
+ * If your columns have properties, you can pass those properties' values instead of column indexes, for example: `hot.selectCells([[1, 'first_name'], [5, 'last_name']])`.
3829
+ *
3830
+ * By default, `selectCell()` also:
3831
+ * - Scrolls the viewport to the newly-selected cells.
3832
+ * - Switches the keyboard focus to Handsontable (by calling Handsontable's [`listen()`](#listen) method).
3746
3833
  *
3747
3834
  * @example
3748
3835
  * ```js
3749
- * // Using an array of arrays.
3836
+ * // select non-adjacent cells
3837
+ * hot.selectCells([[1, 1], [5, 5], [10, 10]]);
3838
+ *
3839
+ * // select non-adjacent ranges of cells
3840
+ * hot.selectCells([[1, 1, 2, 2], [10, 10, 20, 20]]);
3841
+ *
3842
+ * // select cells and ranges of cells
3750
3843
  * hot.selectCells([[1, 1, 2, 2], [3, 3], [6, 2, 0, 2]]);
3751
- * // Using an array of arrays with defined columns as props.
3844
+ *
3845
+ * // select cells, using column properties
3752
3846
  * hot.selectCells([[1, 'id', 2, 'first_name'], [3, 'full_name'], [6, 'last_name', 0, 'first_name']]);
3753
- * // Using an array of CellRange objects (produced by `.getSelectedRange()` method).
3847
+ *
3848
+ * // select multiple ranges, using an array of `CellRange` objects
3754
3849
  * const selected = hot.getSelectedRange();
3755
3850
  *
3756
3851
  * selected[0].from.row = 0;
3757
3852
  * selected[0].from.col = 0;
3853
+ * selected[0].to.row = 5;
3854
+ * selected[0].to.col = 5;
3855
+ *
3856
+ * selected[1].from.row = 10;
3857
+ * selected[1].from.col = 10;
3858
+ * selected[1].to.row = 20;
3859
+ * selected[1].to.col = 20;
3758
3860
  *
3759
3861
  * hot.selectCells(selected);
3760
3862
  * ```
@@ -3762,12 +3864,12 @@ function Core(rootElement, userSettings) {
3762
3864
  * @memberof Core#
3763
3865
  * @since 0.38.0
3764
3866
  * @function selectCells
3765
- * @param {Array[]|CellRange[]} coords Visual coords passed as an array of array (`[[rowStart, columnStart, rowEnd, columnEnd], ...]`)
3766
- * the same format as `getSelected` method returns or as an CellRange objects
3767
- * which is the same format what `getSelectedRange` method returns.
3768
- * @param {boolean} [scrollToCell=true] If `true`, the viewport will be scrolled to the selection.
3769
- * @param {boolean} [changeListener=true] If `false`, Handsontable will not change keyboard events listener to himself.
3770
- * @returns {boolean} `true` if selection was successful, `false` otherwise.
3867
+ * @param {Array[]|CellRange[]} coords Visual coordinates,
3868
+ * passed either as an array of arrays (`[[rowStart, columnStart, rowEnd, columnEnd], ...]`)
3869
+ * or as an array of [`CellRange`](@/api/cellRange.md) objects.
3870
+ * @param {boolean} [scrollToCell=true] `true`: scroll the viewport to the newly-selected cells. `false`: keep the previous viewport.
3871
+ * @param {boolean} [changeListener=true] `true`: switch the keyboard focus to Handsontable. `false`: keep the previous keyboard focus.
3872
+ * @returns {boolean} `true`: the selection was successful, `false`: the selection failed.
3771
3873
  */
3772
3874
  this.selectCells = function () {
3773
3875
  var coords = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [[]];
@@ -3847,13 +3949,23 @@ function Core(rootElement, userSettings) {
3847
3949
  };
3848
3950
 
3849
3951
  /**
3850
- * Select the whole table. The previous selection will be overwritten.
3952
+ * Select the whole table.
3953
+ *
3954
+ * The previous selection is overwritten.
3955
+ *
3956
+ * ```js
3957
+ * // select all cells in the table, including all headers
3958
+ * hot.selectAll();
3959
+ *
3960
+ * // select all cells in the table, without headers
3961
+ * hot.selectAll(false);
3962
+ * ```
3851
3963
  *
3852
3964
  * @since 0.38.2
3853
3965
  * @memberof Core#
3854
3966
  * @function selectAll
3855
- * @param {boolean} [includeHeaders=true] `true` If the selection should include the row, column and corner headers,
3856
- * `false` otherwise.
3967
+ * @param {boolean} [includeHeaders=true] `true`: include all row, column and corner headers.
3968
+ * `false`: don't include any headers.
3857
3969
  */
3858
3970
  this.selectAll = function () {
3859
3971
  var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
@@ -4169,7 +4281,7 @@ function Core(rootElement, userSettings) {
4169
4281
  * @returns {string}
4170
4282
  */
4171
4283
  this.getTranslatedPhrase = function (dictionaryKey, extraArguments) {
4172
- return (0, _registry4.getTranslatedPhrase)(tableMeta.language, dictionaryKey, extraArguments);
4284
+ return (0, _registry5.getTranslatedPhrase)(tableMeta.language, dictionaryKey, extraArguments);
4173
4285
  };
4174
4286
 
4175
4287
  /**