handsontable 12.2.0 → 12.3.0-next-bb1a7c2-20221208

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 (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
  /**