handsontable 9.0.2 → 11.1.0

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 (895) hide show
  1. package/3rdparty/autoResize/autoResize.js +2 -0
  2. package/3rdparty/autoResize/autoResize.mjs +1 -0
  3. package/3rdparty/walkontable/src/border.js +3 -1
  4. package/3rdparty/walkontable/src/border.mjs +2 -1
  5. package/3rdparty/walkontable/src/calculator/constants.js +1 -1
  6. package/3rdparty/walkontable/src/calculator/index.js +2 -0
  7. package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +18 -0
  8. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -1
  9. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +1 -1
  10. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -1
  11. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +1 -1
  12. package/3rdparty/walkontable/src/cell/coords.d.ts +16 -0
  13. package/3rdparty/walkontable/src/cell/coords.js +1 -1
  14. package/3rdparty/walkontable/src/cell/coords.mjs +1 -1
  15. package/3rdparty/walkontable/src/cell/range.d.ts +51 -0
  16. package/3rdparty/walkontable/src/cell/range.js +1 -1
  17. package/3rdparty/walkontable/src/cell/range.mjs +1 -1
  18. package/3rdparty/walkontable/src/core.js +1 -1
  19. package/3rdparty/walkontable/src/core.mjs +1 -1
  20. package/3rdparty/walkontable/src/event.js +1 -1
  21. package/3rdparty/walkontable/src/event.mjs +1 -1
  22. package/3rdparty/walkontable/src/filter/column.js +1 -1
  23. package/3rdparty/walkontable/src/filter/column.mjs +1 -1
  24. package/3rdparty/walkontable/src/filter/row.js +1 -1
  25. package/3rdparty/walkontable/src/filter/row.mjs +1 -1
  26. package/3rdparty/walkontable/src/index.d.ts +1 -0
  27. package/3rdparty/walkontable/src/index.js +1 -1
  28. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  29. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  30. package/3rdparty/walkontable/src/overlay/bottom.js +6 -6
  31. package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -5
  32. package/3rdparty/walkontable/src/overlay/bottomLeftCorner.js +6 -6
  33. package/3rdparty/walkontable/src/overlay/bottomLeftCorner.mjs +5 -5
  34. package/3rdparty/walkontable/src/overlay/constants.js +1 -1
  35. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  36. package/3rdparty/walkontable/src/overlay/left.js +6 -6
  37. package/3rdparty/walkontable/src/overlay/left.mjs +5 -5
  38. package/3rdparty/walkontable/src/overlay/registerer.js +1 -1
  39. package/3rdparty/walkontable/src/overlay/top.js +6 -17
  40. package/3rdparty/walkontable/src/overlay/top.mjs +5 -16
  41. package/3rdparty/walkontable/src/overlay/topLeftCorner.js +6 -6
  42. package/3rdparty/walkontable/src/overlay/topLeftCorner.mjs +5 -5
  43. package/3rdparty/walkontable/src/overlays.js +3 -1
  44. package/3rdparty/walkontable/src/overlays.mjs +2 -1
  45. package/3rdparty/walkontable/src/renderer/_base.js +1 -1
  46. package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
  47. package/3rdparty/walkontable/src/renderer/cells.js +4 -4
  48. package/3rdparty/walkontable/src/renderer/cells.mjs +4 -4
  49. package/3rdparty/walkontable/src/renderer/colGroup.js +6 -6
  50. package/3rdparty/walkontable/src/renderer/colGroup.mjs +5 -5
  51. package/3rdparty/walkontable/src/renderer/columnHeaders.js +6 -6
  52. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +5 -5
  53. package/3rdparty/walkontable/src/renderer/index.js +1 -1
  54. package/3rdparty/walkontable/src/renderer/index.mjs +1 -1
  55. package/3rdparty/walkontable/src/renderer/rowHeaders.js +4 -4
  56. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +4 -4
  57. package/3rdparty/walkontable/src/renderer/rows.js +6 -6
  58. package/3rdparty/walkontable/src/renderer/rows.mjs +5 -5
  59. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  60. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  61. package/3rdparty/walkontable/src/scroll.js +1 -1
  62. package/3rdparty/walkontable/src/scroll.mjs +1 -1
  63. package/3rdparty/walkontable/src/selection.js +6 -4
  64. package/3rdparty/walkontable/src/selection.mjs +4 -3
  65. package/3rdparty/walkontable/src/settings.js +1 -1
  66. package/3rdparty/walkontable/src/settings.mjs +1 -1
  67. package/3rdparty/walkontable/src/table/bottom.js +10 -6
  68. package/3rdparty/walkontable/src/table/bottom.mjs +9 -5
  69. package/3rdparty/walkontable/src/table/bottomLeftCorner.js +10 -6
  70. package/3rdparty/walkontable/src/table/bottomLeftCorner.mjs +9 -5
  71. package/3rdparty/walkontable/src/table/left.js +10 -6
  72. package/3rdparty/walkontable/src/table/left.mjs +9 -5
  73. package/3rdparty/walkontable/src/table/master.js +6 -6
  74. package/3rdparty/walkontable/src/table/master.mjs +5 -5
  75. package/3rdparty/walkontable/src/table/top.js +10 -6
  76. package/3rdparty/walkontable/src/table/top.mjs +9 -5
  77. package/3rdparty/walkontable/src/table/topLeftCorner.js +10 -6
  78. package/3rdparty/walkontable/src/table/topLeftCorner.mjs +9 -5
  79. package/3rdparty/walkontable/src/table.js +5 -3
  80. package/3rdparty/walkontable/src/table.mjs +3 -2
  81. package/3rdparty/walkontable/src/utils/column.js +2 -2
  82. package/3rdparty/walkontable/src/utils/column.mjs +2 -2
  83. package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
  84. package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
  85. package/3rdparty/walkontable/src/utils/orderView/constants.js +1 -1
  86. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +6 -6
  87. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +5 -5
  88. package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
  89. package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
  90. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  91. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  92. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +1 -1
  93. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
  94. package/3rdparty/walkontable/src/utils/row.js +1 -1
  95. package/3rdparty/walkontable/src/utils/row.mjs +1 -1
  96. package/3rdparty/walkontable/src/viewport.js +1 -1
  97. package/3rdparty/walkontable/src/viewport.mjs +1 -1
  98. package/CHANGELOG.md +92 -7
  99. package/LICENSE.txt +19 -22
  100. package/README.md +13 -8
  101. package/base.d.ts +1 -1
  102. package/base.js +16 -3
  103. package/base.mjs +14 -4
  104. package/cellTypes/autocompleteType/autocompleteType.d.ts +17 -0
  105. package/cellTypes/autocompleteType/autocompleteType.js +1 -1
  106. package/cellTypes/autocompleteType/index.d.ts +1 -0
  107. package/cellTypes/base.d.ts +14 -0
  108. package/cellTypes/checkboxType/checkboxType.d.ts +14 -0
  109. package/cellTypes/checkboxType/index.d.ts +1 -0
  110. package/cellTypes/dateType/dateType.d.ts +17 -0
  111. package/cellTypes/dateType/index.d.ts +1 -0
  112. package/cellTypes/dropdownType/dropdownType.d.ts +17 -0
  113. package/cellTypes/dropdownType/index.d.ts +1 -0
  114. package/cellTypes/handsontableType/handsontableType.d.ts +14 -0
  115. package/cellTypes/handsontableType/index.d.ts +1 -0
  116. package/cellTypes/index.d.ts +47 -0
  117. package/cellTypes/index.js +18 -2
  118. package/cellTypes/index.mjs +26 -9
  119. package/cellTypes/numericType/index.d.ts +1 -0
  120. package/cellTypes/numericType/numericType.d.ts +17 -0
  121. package/cellTypes/passwordType/index.d.ts +1 -0
  122. package/cellTypes/passwordType/passwordType.d.ts +14 -0
  123. package/cellTypes/registry.d.ts +18 -0
  124. package/cellTypes/registry.js +2 -2
  125. package/cellTypes/textType/index.d.ts +1 -0
  126. package/cellTypes/textType/textType.d.ts +14 -0
  127. package/cellTypes/timeType/index.d.ts +1 -0
  128. package/cellTypes/timeType/timeType.d.ts +17 -0
  129. package/common.d.ts +74 -0
  130. package/core.d.ts +160 -0
  131. package/core.js +244 -189
  132. package/core.mjs +243 -190
  133. package/{dataMap.js → dataMap/dataMap.js} +39 -37
  134. package/{dataMap.mjs → dataMap/dataMap.mjs} +39 -37
  135. package/dataMap/index.js +9 -1
  136. package/dataMap/index.mjs +4 -2
  137. package/dataMap/metaManager/index.js +55 -7
  138. package/dataMap/metaManager/index.mjs +52 -7
  139. package/dataMap/metaManager/lazyFactoryMap.js +4 -4
  140. package/dataMap/metaManager/lazyFactoryMap.mjs +4 -4
  141. package/dataMap/metaManager/metaLayers/cellMeta.js +3 -1
  142. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
  143. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
  144. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
  145. package/dataMap/metaManager/metaLayers/globalMeta.js +5 -4
  146. package/dataMap/metaManager/metaLayers/globalMeta.mjs +5 -4
  147. package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
  148. package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
  149. package/dataMap/metaManager/metaSchema.js +3213 -1712
  150. package/dataMap/metaManager/metaSchema.mjs +3213 -1712
  151. package/dataMap/metaManager/mods/dynamicCellMeta.js +136 -0
  152. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +119 -0
  153. package/dataMap/metaManager/utils.js +3 -3
  154. package/dataMap/replaceData.js +154 -0
  155. package/dataMap/replaceData.mjs +138 -0
  156. package/dataSource.js +3 -1
  157. package/dataSource.mjs +2 -1
  158. package/dist/README.md +2 -2
  159. package/dist/handsontable.css +508 -420
  160. package/dist/handsontable.full.css +621 -530
  161. package/dist/handsontable.full.js +54025 -48518
  162. package/dist/handsontable.full.min.css +27 -35
  163. package/dist/handsontable.full.min.js +181 -164
  164. package/dist/handsontable.js +37028 -33780
  165. package/dist/handsontable.min.css +27 -33
  166. package/dist/handsontable.min.js +22 -25
  167. package/dist/languages/all.js +2 -4
  168. package/dist/languages/all.min.js +1 -1
  169. package/dist/languages/de-CH.js +2 -4
  170. package/dist/languages/de-CH.min.js +1 -1
  171. package/dist/languages/de-DE.js +2 -4
  172. package/dist/languages/de-DE.min.js +1 -1
  173. package/dist/languages/en-US.js +2 -4
  174. package/dist/languages/en-US.min.js +1 -1
  175. package/dist/languages/es-MX.js +2 -4
  176. package/dist/languages/es-MX.min.js +1 -1
  177. package/dist/languages/fr-FR.js +2 -4
  178. package/dist/languages/fr-FR.min.js +1 -1
  179. package/dist/languages/it-IT.js +2 -4
  180. package/dist/languages/it-IT.min.js +1 -1
  181. package/dist/languages/ja-JP.js +2 -4
  182. package/dist/languages/ja-JP.min.js +1 -1
  183. package/dist/languages/ko-KR.js +2 -4
  184. package/dist/languages/ko-KR.min.js +1 -1
  185. package/dist/languages/lv-LV.js +2 -4
  186. package/dist/languages/lv-LV.min.js +1 -1
  187. package/dist/languages/nb-NO.js +2 -4
  188. package/dist/languages/nb-NO.min.js +1 -1
  189. package/dist/languages/nl-NL.js +2 -4
  190. package/dist/languages/nl-NL.min.js +1 -1
  191. package/dist/languages/pl-PL.js +2 -4
  192. package/dist/languages/pl-PL.min.js +1 -1
  193. package/dist/languages/pt-BR.js +2 -4
  194. package/dist/languages/pt-BR.min.js +1 -1
  195. package/dist/languages/ru-RU.js +2 -4
  196. package/dist/languages/ru-RU.min.js +1 -1
  197. package/dist/languages/zh-CN.js +2 -4
  198. package/dist/languages/zh-CN.min.js +1 -1
  199. package/dist/languages/zh-TW.js +2 -4
  200. package/dist/languages/zh-TW.min.js +1 -1
  201. package/editorManager.js +9 -7
  202. package/editorManager.mjs +8 -7
  203. package/editors/autocompleteEditor/autocompleteEditor.d.ts +29 -0
  204. package/editors/autocompleteEditor/autocompleteEditor.js +99 -91
  205. package/editors/autocompleteEditor/autocompleteEditor.mjs +97 -88
  206. package/editors/autocompleteEditor/index.d.ts +1 -0
  207. package/editors/autocompleteEditor/index.js +1 -1
  208. package/editors/baseEditor/baseEditor.d.ts +45 -0
  209. package/editors/baseEditor/baseEditor.js +11 -10
  210. package/editors/baseEditor/baseEditor.mjs +8 -8
  211. package/editors/baseEditor/index.d.ts +1 -0
  212. package/editors/baseEditor/index.js +1 -1
  213. package/editors/checkboxEditor/checkboxEditor.d.ts +12 -0
  214. package/editors/checkboxEditor/checkboxEditor.js +7 -7
  215. package/editors/checkboxEditor/checkboxEditor.mjs +5 -5
  216. package/editors/checkboxEditor/index.d.ts +1 -0
  217. package/editors/checkboxEditor/index.js +1 -1
  218. package/editors/dateEditor/dateEditor.d.ts +18 -0
  219. package/editors/dateEditor/dateEditor.js +21 -21
  220. package/editors/dateEditor/dateEditor.mjs +19 -19
  221. package/editors/dateEditor/index.d.ts +1 -0
  222. package/editors/dateEditor/index.js +1 -1
  223. package/editors/dropdownEditor/dropdownEditor.d.ts +7 -0
  224. package/editors/dropdownEditor/dropdownEditor.js +8 -8
  225. package/editors/dropdownEditor/dropdownEditor.mjs +6 -6
  226. package/editors/dropdownEditor/index.d.ts +1 -0
  227. package/editors/dropdownEditor/index.js +1 -1
  228. package/editors/handsontableEditor/handsontableEditor.d.ts +10 -0
  229. package/editors/handsontableEditor/handsontableEditor.js +7 -7
  230. package/editors/handsontableEditor/handsontableEditor.mjs +6 -6
  231. package/editors/handsontableEditor/index.d.ts +1 -0
  232. package/editors/index.d.ts +53 -0
  233. package/editors/index.js +19 -2
  234. package/editors/index.mjs +28 -10
  235. package/editors/numericEditor/index.d.ts +1 -0
  236. package/editors/numericEditor/numericEditor.d.ts +7 -0
  237. package/editors/numericEditor/numericEditor.js +6 -6
  238. package/editors/numericEditor/numericEditor.mjs +5 -5
  239. package/editors/passwordEditor/index.d.ts +1 -0
  240. package/editors/passwordEditor/passwordEditor.d.ts +7 -0
  241. package/editors/passwordEditor/passwordEditor.js +7 -7
  242. package/editors/passwordEditor/passwordEditor.mjs +6 -6
  243. package/editors/registry.d.ts +29 -0
  244. package/editors/registry.js +2 -2
  245. package/editors/selectEditor/index.d.ts +1 -0
  246. package/editors/selectEditor/selectEditor.d.ts +16 -0
  247. package/editors/selectEditor/selectEditor.js +7 -7
  248. package/editors/selectEditor/selectEditor.mjs +6 -6
  249. package/editors/textEditor/index.d.ts +1 -0
  250. package/editors/textEditor/textEditor.d.ts +24 -0
  251. package/editors/textEditor/textEditor.js +7 -7
  252. package/editors/textEditor/textEditor.mjs +6 -6
  253. package/eventManager.d.ts +13 -0
  254. package/eventManager.js +8 -4
  255. package/eventManager.mjs +7 -3
  256. package/handsontable-non-commercial-license.pdf +0 -0
  257. package/helpers/array.d.ts +18 -0
  258. package/helpers/array.js +10 -10
  259. package/helpers/array.mjs +1 -1
  260. package/helpers/browser.d.ts +25 -0
  261. package/helpers/browser.js +11 -9
  262. package/helpers/browser.mjs +1 -0
  263. package/helpers/console.d.ts +4 -0
  264. package/helpers/console.js +2 -2
  265. package/helpers/data.d.ts +13 -0
  266. package/helpers/data.js +8 -36
  267. package/helpers/data.mjs +2 -28
  268. package/helpers/date.d.ts +1 -0
  269. package/helpers/dom/element.d.ts +49 -0
  270. package/helpers/dom/element.js +45 -46
  271. package/helpers/dom/element.mjs +8 -9
  272. package/helpers/dom/event.d.ts +4 -0
  273. package/helpers/dom/event.js +2 -2
  274. package/helpers/dom/index.d.ts +2 -0
  275. package/helpers/feature.d.ts +11 -0
  276. package/helpers/feature.js +7 -7
  277. package/helpers/feature.mjs +1 -1
  278. package/helpers/function.d.ts +10 -0
  279. package/helpers/function.js +43 -5
  280. package/helpers/function.mjs +35 -0
  281. package/helpers/index.d.ts +14 -0
  282. package/helpers/mixed.d.ts +5 -0
  283. package/helpers/mixed.js +6 -6
  284. package/helpers/mixed.mjs +3 -3
  285. package/helpers/number.d.ts +5 -0
  286. package/helpers/number.js +98 -19
  287. package/helpers/number.mjs +87 -19
  288. package/helpers/object.d.ts +16 -0
  289. package/helpers/object.js +12 -12
  290. package/helpers/object.mjs +1 -1
  291. package/helpers/string.d.ts +7 -0
  292. package/helpers/string.js +4 -4
  293. package/helpers/templateLiteralTag.d.ts +1 -0
  294. package/helpers/unicode.d.ts +73 -0
  295. package/helpers/unicode.js +3 -3
  296. package/i18n/constants.js +1 -1
  297. package/i18n/index.d.ts +2 -0
  298. package/i18n/index.js +2 -0
  299. package/i18n/languages/de-CH.d.ts +5 -0
  300. package/i18n/languages/de-CH.js +1 -1
  301. package/i18n/languages/de-DE.d.ts +5 -0
  302. package/i18n/languages/de-DE.js +1 -1
  303. package/i18n/languages/en-US.d.ts +5 -0
  304. package/i18n/languages/en-US.js +1 -1
  305. package/i18n/languages/es-MX.d.ts +5 -0
  306. package/i18n/languages/es-MX.js +1 -1
  307. package/i18n/languages/fr-FR.d.ts +5 -0
  308. package/i18n/languages/fr-FR.js +1 -1
  309. package/i18n/languages/index.d.ts +35 -0
  310. package/i18n/languages/it-IT.d.ts +5 -0
  311. package/i18n/languages/it-IT.js +1 -1
  312. package/i18n/languages/ja-JP.d.ts +5 -0
  313. package/i18n/languages/ja-JP.js +1 -1
  314. package/i18n/languages/ko-KR.d.ts +5 -0
  315. package/i18n/languages/ko-KR.js +1 -1
  316. package/i18n/languages/lv-LV.d.ts +5 -0
  317. package/i18n/languages/lv-LV.js +1 -1
  318. package/i18n/languages/nb-NO.d.ts +5 -0
  319. package/i18n/languages/nb-NO.js +1 -1
  320. package/i18n/languages/nl-NL.d.ts +5 -0
  321. package/i18n/languages/nl-NL.js +1 -1
  322. package/i18n/languages/pl-PL.d.ts +5 -0
  323. package/i18n/languages/pl-PL.js +1 -1
  324. package/i18n/languages/pt-BR.d.ts +5 -0
  325. package/i18n/languages/pt-BR.js +1 -1
  326. package/i18n/languages/ru-RU.d.ts +5 -0
  327. package/i18n/languages/ru-RU.js +1 -1
  328. package/i18n/languages/zh-CN.d.ts +5 -0
  329. package/i18n/languages/zh-CN.js +1 -1
  330. package/i18n/languages/zh-TW.d.ts +5 -0
  331. package/i18n/languages/zh-TW.js +1 -1
  332. package/i18n/phraseFormatters/index.js +1 -1
  333. package/i18n/registry.d.ts +13 -0
  334. package/i18n/registry.js +5 -5
  335. package/i18n/utils.js +1 -1
  336. package/index.d.ts +516 -0
  337. package/index.js +41 -113
  338. package/index.mjs +17 -90
  339. package/languages/all.js +2 -4
  340. package/languages/de-CH.js +2 -4
  341. package/languages/de-DE.js +2 -4
  342. package/languages/en-US.js +2 -4
  343. package/languages/es-MX.js +2 -4
  344. package/languages/fr-FR.js +2 -4
  345. package/languages/index.js +2 -4
  346. package/languages/it-IT.js +2 -4
  347. package/languages/ja-JP.js +2 -4
  348. package/languages/ko-KR.js +2 -4
  349. package/languages/lv-LV.js +2 -4
  350. package/languages/nb-NO.js +2 -4
  351. package/languages/nl-NL.js +2 -4
  352. package/languages/pl-PL.js +2 -4
  353. package/languages/pt-BR.js +2 -4
  354. package/languages/ru-RU.js +2 -4
  355. package/languages/zh-CN.js +2 -4
  356. package/languages/zh-TW.js +2 -4
  357. package/mixins/localHooks.js +17 -14
  358. package/mixins/localHooks.mjs +16 -13
  359. package/package.json +106 -15
  360. package/pluginHooks.d.ts +257 -0
  361. package/pluginHooks.js +216 -141
  362. package/pluginHooks.mjs +215 -141
  363. package/plugins/autoColumnSize/autoColumnSize.d.ts +27 -0
  364. package/plugins/autoColumnSize/autoColumnSize.js +24 -22
  365. package/plugins/autoColumnSize/autoColumnSize.mjs +22 -21
  366. package/plugins/autoColumnSize/index.d.ts +1 -0
  367. package/plugins/autoColumnSize/index.js +1 -1
  368. package/plugins/autoRowSize/autoRowSize.d.ts +27 -0
  369. package/plugins/autoRowSize/autoRowSize.js +29 -21
  370. package/plugins/autoRowSize/autoRowSize.mjs +26 -19
  371. package/plugins/autoRowSize/index.d.ts +1 -0
  372. package/plugins/autoRowSize/index.js +1 -1
  373. package/plugins/autofill/autofill.d.ts +18 -0
  374. package/plugins/autofill/autofill.js +12 -21
  375. package/plugins/autofill/autofill.mjs +9 -18
  376. package/plugins/autofill/index.d.ts +1 -0
  377. package/plugins/autofill/index.js +1 -1
  378. package/plugins/autofill/utils.js +1 -1
  379. package/plugins/base/base.d.ts +21 -0
  380. package/plugins/base/base.js +2 -2
  381. package/plugins/base/base.mjs +1 -1
  382. package/plugins/base/index.d.ts +1 -0
  383. package/plugins/base/index.js +1 -1
  384. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.d.ts +9 -0
  385. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -6
  386. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -5
  387. package/plugins/bindRowsWithHeaders/index.d.ts +1 -0
  388. package/plugins/bindRowsWithHeaders/index.js +1 -1
  389. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +7 -7
  390. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +6 -6
  391. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +9 -7
  392. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +7 -6
  393. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +22 -0
  394. package/plugins/collapsibleColumns/collapsibleColumns.js +34 -27
  395. package/plugins/collapsibleColumns/collapsibleColumns.mjs +32 -26
  396. package/plugins/collapsibleColumns/index.d.ts +1 -0
  397. package/plugins/collapsibleColumns/index.js +1 -1
  398. package/plugins/columnSorting/columnSorting.d.ts +30 -0
  399. package/plugins/columnSorting/columnSorting.js +21 -19
  400. package/plugins/columnSorting/columnSorting.mjs +18 -17
  401. package/plugins/columnSorting/columnStatesManager.js +6 -4
  402. package/plugins/columnSorting/columnStatesManager.mjs +5 -4
  403. package/plugins/columnSorting/index.d.ts +1 -0
  404. package/plugins/columnSorting/index.js +1 -1
  405. package/plugins/columnSorting/rootComparator.js +2 -0
  406. package/plugins/columnSorting/rootComparator.mjs +1 -0
  407. package/plugins/columnSorting/sortFunction/checkbox.js +1 -1
  408. package/plugins/columnSorting/sortFunction/date.js +1 -1
  409. package/plugins/columnSorting/sortFunction/default.js +4 -3
  410. package/plugins/columnSorting/sortFunction/default.mjs +3 -2
  411. package/plugins/columnSorting/sortFunction/numeric.js +1 -1
  412. package/plugins/columnSorting/sortService/engine.js +1 -1
  413. package/plugins/columnSorting/sortService/registry.js +1 -1
  414. package/plugins/columnSorting/utils.js +4 -4
  415. package/plugins/columnSorting/utils.mjs +1 -1
  416. package/plugins/columnSummary/columnSummary.d.ts +72 -0
  417. package/plugins/columnSummary/columnSummary.js +32 -14
  418. package/plugins/columnSummary/columnSummary.mjs +30 -12
  419. package/plugins/columnSummary/endpoints.js +7 -5
  420. package/plugins/columnSummary/endpoints.mjs +6 -5
  421. package/plugins/columnSummary/index.d.ts +1 -0
  422. package/plugins/columnSummary/index.js +1 -1
  423. package/plugins/comments/commentEditor.js +7 -3
  424. package/plugins/comments/commentEditor.mjs +7 -3
  425. package/plugins/comments/comments.d.ts +50 -0
  426. package/plugins/comments/comments.js +49 -88
  427. package/plugins/comments/comments.mjs +49 -87
  428. package/plugins/comments/displaySwitch.js +2 -2
  429. package/plugins/comments/displaySwitch.mjs +2 -2
  430. package/plugins/comments/index.d.ts +1 -0
  431. package/plugins/comments/index.js +1 -1
  432. package/plugins/contextMenu/commandExecutor.js +2 -2
  433. package/plugins/contextMenu/commandExecutor.mjs +2 -2
  434. package/plugins/contextMenu/contextMenu.d.ts +65 -0
  435. package/plugins/contextMenu/contextMenu.js +9 -8
  436. package/plugins/contextMenu/contextMenu.mjs +7 -6
  437. package/plugins/contextMenu/cursor.js +2 -2
  438. package/plugins/contextMenu/cursor.mjs +2 -2
  439. package/plugins/contextMenu/index.d.ts +1 -0
  440. package/plugins/contextMenu/index.js +1 -1
  441. package/plugins/contextMenu/itemsFactory.js +2 -2
  442. package/plugins/contextMenu/itemsFactory.mjs +2 -2
  443. package/plugins/contextMenu/menu.js +5 -5
  444. package/plugins/contextMenu/menu.mjs +4 -4
  445. package/plugins/contextMenu/predefinedItems/alignment.js +2 -2
  446. package/plugins/contextMenu/predefinedItems/clearColumn.js +2 -2
  447. package/plugins/contextMenu/predefinedItems/columnLeft.js +2 -2
  448. package/plugins/contextMenu/predefinedItems/columnRight.js +2 -2
  449. package/plugins/contextMenu/predefinedItems/noItems.js +1 -1
  450. package/plugins/contextMenu/predefinedItems/readOnly.js +2 -2
  451. package/plugins/contextMenu/predefinedItems/redo.js +2 -2
  452. package/plugins/contextMenu/predefinedItems/removeColumn.js +4 -2
  453. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +1 -0
  454. package/plugins/contextMenu/predefinedItems/removeRow.js +4 -2
  455. package/plugins/contextMenu/predefinedItems/removeRow.mjs +1 -0
  456. package/plugins/contextMenu/predefinedItems/rowAbove.js +2 -2
  457. package/plugins/contextMenu/predefinedItems/rowBelow.js +2 -2
  458. package/plugins/contextMenu/predefinedItems/separator.js +1 -1
  459. package/plugins/contextMenu/predefinedItems/undo.js +2 -2
  460. package/plugins/contextMenu/predefinedItems.js +3 -3
  461. package/plugins/contextMenu/utils.js +10 -10
  462. package/plugins/copyPaste/clipboardData.js +4 -1
  463. package/plugins/copyPaste/clipboardData.mjs +4 -1
  464. package/plugins/copyPaste/contextMenuItem/copy.js +1 -1
  465. package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
  466. package/plugins/copyPaste/copyPaste.d.ts +35 -0
  467. package/plugins/copyPaste/copyPaste.js +14 -11
  468. package/plugins/copyPaste/copyPaste.mjs +12 -10
  469. package/plugins/copyPaste/focusableElement.js +2 -3
  470. package/plugins/copyPaste/focusableElement.mjs +2 -3
  471. package/plugins/copyPaste/index.d.ts +1 -0
  472. package/plugins/copyPaste/index.js +1 -1
  473. package/plugins/copyPaste/pasteEvent.js +9 -2
  474. package/plugins/copyPaste/pasteEvent.mjs +9 -2
  475. package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
  476. package/plugins/customBorders/contextMenuItem/left.js +1 -1
  477. package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
  478. package/plugins/customBorders/contextMenuItem/right.js +1 -1
  479. package/plugins/customBorders/contextMenuItem/top.js +1 -1
  480. package/plugins/customBorders/customBorders.d.ts +38 -0
  481. package/plugins/customBorders/customBorders.js +11 -9
  482. package/plugins/customBorders/customBorders.mjs +8 -7
  483. package/plugins/customBorders/index.d.ts +1 -0
  484. package/plugins/customBorders/index.js +1 -1
  485. package/plugins/customBorders/utils.js +3 -3
  486. package/plugins/dragToScroll/dragToScroll.d.ts +15 -0
  487. package/plugins/dragToScroll/dragToScroll.js +8 -8
  488. package/plugins/dragToScroll/dragToScroll.mjs +6 -6
  489. package/plugins/dragToScroll/index.d.ts +1 -0
  490. package/plugins/dragToScroll/index.js +1 -1
  491. package/plugins/dropdownMenu/dropdownMenu.d.ts +24 -0
  492. package/plugins/dropdownMenu/dropdownMenu.js +8 -8
  493. package/plugins/dropdownMenu/dropdownMenu.mjs +6 -6
  494. package/plugins/dropdownMenu/index.d.ts +1 -0
  495. package/plugins/dropdownMenu/index.js +1 -1
  496. package/plugins/exportFile/dataProvider.js +3 -5
  497. package/plugins/exportFile/dataProvider.mjs +3 -5
  498. package/plugins/exportFile/exportFile.d.ts +12 -0
  499. package/plugins/exportFile/exportFile.js +9 -9
  500. package/plugins/exportFile/exportFile.mjs +7 -7
  501. package/plugins/exportFile/index.d.ts +1 -0
  502. package/plugins/exportFile/index.js +1 -1
  503. package/plugins/exportFile/typeFactory.js +2 -1
  504. package/plugins/exportFile/typeFactory.mjs +1 -0
  505. package/plugins/exportFile/types/_base.js +1 -2
  506. package/plugins/exportFile/types/_base.mjs +1 -2
  507. package/plugins/exportFile/types/csv.js +6 -7
  508. package/plugins/exportFile/types/csv.mjs +5 -6
  509. package/plugins/filters/component/_base.js +2 -2
  510. package/plugins/filters/component/_base.mjs +2 -2
  511. package/plugins/filters/component/actionBar.js +7 -7
  512. package/plugins/filters/component/actionBar.mjs +6 -6
  513. package/plugins/filters/component/condition.js +10 -8
  514. package/plugins/filters/component/condition.mjs +8 -7
  515. package/plugins/filters/component/operators.js +7 -7
  516. package/plugins/filters/component/operators.mjs +6 -6
  517. package/plugins/filters/component/value.js +15 -8
  518. package/plugins/filters/component/value.mjs +13 -7
  519. package/plugins/filters/condition/beginsWith.js +5 -3
  520. package/plugins/filters/condition/beginsWith.mjs +2 -1
  521. package/plugins/filters/condition/between.js +4 -2
  522. package/plugins/filters/condition/between.mjs +1 -0
  523. package/plugins/filters/condition/byValue.js +3 -1
  524. package/plugins/filters/condition/byValue.mjs +1 -0
  525. package/plugins/filters/condition/contains.js +5 -3
  526. package/plugins/filters/condition/contains.mjs +2 -1
  527. package/plugins/filters/condition/date/after.js +4 -2
  528. package/plugins/filters/condition/date/after.mjs +1 -0
  529. package/plugins/filters/condition/date/before.js +4 -2
  530. package/plugins/filters/condition/date/before.mjs +1 -0
  531. package/plugins/filters/condition/date/today.js +2 -2
  532. package/plugins/filters/condition/date/tomorrow.js +2 -2
  533. package/plugins/filters/condition/date/yesterday.js +2 -2
  534. package/plugins/filters/condition/empty.js +2 -2
  535. package/plugins/filters/condition/endsWith.js +5 -3
  536. package/plugins/filters/condition/endsWith.mjs +2 -1
  537. package/plugins/filters/condition/equal.js +5 -3
  538. package/plugins/filters/condition/equal.mjs +2 -1
  539. package/plugins/filters/condition/false.js +1 -1
  540. package/plugins/filters/condition/greaterThan.js +4 -2
  541. package/plugins/filters/condition/greaterThan.mjs +1 -0
  542. package/plugins/filters/condition/greaterThanOrEqual.js +4 -2
  543. package/plugins/filters/condition/greaterThanOrEqual.mjs +1 -0
  544. package/plugins/filters/condition/lessThan.js +4 -2
  545. package/plugins/filters/condition/lessThan.mjs +1 -0
  546. package/plugins/filters/condition/lessThanOrEqual.js +4 -2
  547. package/plugins/filters/condition/lessThanOrEqual.mjs +1 -0
  548. package/plugins/filters/condition/none.js +2 -2
  549. package/plugins/filters/condition/notBetween.js +2 -2
  550. package/plugins/filters/condition/notContains.js +2 -2
  551. package/plugins/filters/condition/notEmpty.js +2 -2
  552. package/plugins/filters/condition/notEqual.js +2 -2
  553. package/plugins/filters/condition/true.js +1 -1
  554. package/plugins/filters/conditionCollection.d.ts +32 -0
  555. package/plugins/filters/conditionCollection.js +8 -5
  556. package/plugins/filters/conditionCollection.mjs +6 -4
  557. package/plugins/filters/conditionRegisterer.js +1 -1
  558. package/plugins/filters/conditionUpdateObserver.d.ts +10 -0
  559. package/plugins/filters/conditionUpdateObserver.js +4 -2
  560. package/plugins/filters/conditionUpdateObserver.mjs +3 -2
  561. package/plugins/filters/constants.js +2 -1
  562. package/plugins/filters/constants.mjs +1 -0
  563. package/plugins/filters/dataFilter.js +2 -2
  564. package/plugins/filters/dataFilter.mjs +2 -2
  565. package/plugins/filters/filters.d.ts +56 -0
  566. package/plugins/filters/filters.js +15 -11
  567. package/plugins/filters/filters.mjs +13 -10
  568. package/plugins/filters/index.d.ts +1 -0
  569. package/plugins/filters/index.js +1 -1
  570. package/plugins/filters/logicalOperationRegisterer.js +1 -1
  571. package/plugins/filters/logicalOperations/conjunction.js +4 -4
  572. package/plugins/filters/logicalOperations/conjunction.mjs +1 -0
  573. package/plugins/filters/logicalOperations/disjunction.js +4 -4
  574. package/plugins/filters/logicalOperations/disjunction.mjs +1 -0
  575. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -4
  576. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +1 -0
  577. package/plugins/filters/ui/_base.js +4 -5
  578. package/plugins/filters/ui/_base.mjs +3 -4
  579. package/plugins/filters/ui/input.js +6 -6
  580. package/plugins/filters/ui/input.mjs +6 -6
  581. package/plugins/filters/ui/link.js +6 -6
  582. package/plugins/filters/ui/link.mjs +6 -6
  583. package/plugins/filters/ui/multipleSelect.js +34 -8
  584. package/plugins/filters/ui/multipleSelect.mjs +33 -8
  585. package/plugins/filters/ui/radioInput.js +6 -6
  586. package/plugins/filters/ui/radioInput.mjs +6 -6
  587. package/plugins/filters/ui/select.js +6 -6
  588. package/plugins/filters/ui/select.mjs +6 -6
  589. package/plugins/filters/utils.js +3 -3
  590. package/plugins/formulas/engine/register.js +4 -4
  591. package/plugins/formulas/engine/register.mjs +1 -1
  592. package/plugins/formulas/engine/settings.js +6 -6
  593. package/plugins/formulas/engine/settings.mjs +4 -5
  594. package/plugins/formulas/formulas.d.ts +31 -0
  595. package/plugins/formulas/formulas.js +287 -91
  596. package/plugins/formulas/formulas.mjs +280 -88
  597. package/plugins/formulas/index.d.ts +1 -0
  598. package/plugins/formulas/index.js +1 -1
  599. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +3 -1
  600. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -0
  601. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -3
  602. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -1
  603. package/plugins/hiddenColumns/hiddenColumns.d.ts +21 -0
  604. package/plugins/hiddenColumns/hiddenColumns.js +39 -27
  605. package/plugins/hiddenColumns/hiddenColumns.mjs +38 -26
  606. package/plugins/hiddenColumns/index.d.ts +1 -0
  607. package/plugins/hiddenColumns/index.js +1 -1
  608. package/plugins/hiddenRows/contextMenuItem/hideRow.js +3 -1
  609. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -0
  610. package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -3
  611. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -1
  612. package/plugins/hiddenRows/hiddenRows.d.ts +21 -0
  613. package/plugins/hiddenRows/hiddenRows.js +39 -28
  614. package/plugins/hiddenRows/hiddenRows.mjs +38 -27
  615. package/plugins/hiddenRows/index.d.ts +1 -0
  616. package/plugins/hiddenRows/index.js +1 -1
  617. package/plugins/index.d.ts +111 -0
  618. package/plugins/index.js +98 -58
  619. package/plugins/index.mjs +75 -34
  620. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +3 -1
  621. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -0
  622. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +3 -1
  623. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -0
  624. package/plugins/manualColumnFreeze/index.d.ts +1 -0
  625. package/plugins/manualColumnFreeze/index.js +1 -1
  626. package/plugins/manualColumnFreeze/manualColumnFreeze.d.ts +11 -0
  627. package/plugins/manualColumnFreeze/manualColumnFreeze.js +11 -8
  628. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +10 -7
  629. package/plugins/manualColumnMove/index.d.ts +1 -0
  630. package/plugins/manualColumnMove/index.js +1 -1
  631. package/plugins/manualColumnMove/manualColumnMove.d.ts +14 -0
  632. package/plugins/manualColumnMove/manualColumnMove.js +27 -25
  633. package/plugins/manualColumnMove/manualColumnMove.mjs +26 -24
  634. package/plugins/manualColumnMove/ui/_base.js +2 -2
  635. package/plugins/manualColumnMove/ui/_base.mjs +2 -2
  636. package/plugins/manualColumnMove/ui/backlight.js +7 -7
  637. package/plugins/manualColumnMove/ui/backlight.mjs +6 -6
  638. package/plugins/manualColumnMove/ui/guideline.js +7 -7
  639. package/plugins/manualColumnMove/ui/guideline.mjs +6 -6
  640. package/plugins/manualColumnResize/index.d.ts +1 -0
  641. package/plugins/manualColumnResize/index.js +1 -1
  642. package/plugins/manualColumnResize/manualColumnResize.d.ts +30 -0
  643. package/plugins/manualColumnResize/manualColumnResize.js +10 -10
  644. package/plugins/manualColumnResize/manualColumnResize.mjs +9 -9
  645. package/plugins/manualRowMove/index.d.ts +1 -0
  646. package/plugins/manualRowMove/index.js +1 -1
  647. package/plugins/manualRowMove/manualRowMove.d.ts +14 -0
  648. package/plugins/manualRowMove/manualRowMove.js +24 -22
  649. package/plugins/manualRowMove/manualRowMove.mjs +23 -21
  650. package/plugins/manualRowMove/ui/_base.js +2 -3
  651. package/plugins/manualRowMove/ui/_base.mjs +2 -3
  652. package/plugins/manualRowMove/ui/backlight.js +8 -8
  653. package/plugins/manualRowMove/ui/backlight.mjs +7 -7
  654. package/plugins/manualRowMove/ui/guideline.js +8 -8
  655. package/plugins/manualRowMove/ui/guideline.mjs +7 -7
  656. package/plugins/manualRowResize/index.d.ts +1 -0
  657. package/plugins/manualRowResize/index.js +1 -1
  658. package/plugins/manualRowResize/manualRowResize.d.ts +29 -0
  659. package/plugins/manualRowResize/manualRowResize.js +6 -6
  660. package/plugins/manualRowResize/manualRowResize.mjs +5 -5
  661. package/plugins/mergeCells/calculations/autofill.js +4 -3
  662. package/plugins/mergeCells/calculations/autofill.mjs +3 -3
  663. package/plugins/mergeCells/calculations/selection.js +2 -3
  664. package/plugins/mergeCells/calculations/selection.mjs +2 -3
  665. package/plugins/mergeCells/cellCoords.js +2 -2
  666. package/plugins/mergeCells/cellCoords.mjs +2 -2
  667. package/plugins/mergeCells/cellsCollection.js +6 -4
  668. package/plugins/mergeCells/cellsCollection.mjs +5 -4
  669. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +1 -1
  670. package/plugins/mergeCells/index.d.ts +1 -0
  671. package/plugins/mergeCells/index.js +1 -1
  672. package/plugins/mergeCells/mergeCells.d.ts +22 -0
  673. package/plugins/mergeCells/mergeCells.js +8 -6
  674. package/plugins/mergeCells/mergeCells.mjs +6 -5
  675. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  676. package/plugins/multiColumnSorting/domHelpers.mjs +1 -0
  677. package/plugins/multiColumnSorting/index.d.ts +1 -0
  678. package/plugins/multiColumnSorting/index.js +1 -1
  679. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -0
  680. package/plugins/multiColumnSorting/multiColumnSorting.js +8 -8
  681. package/plugins/multiColumnSorting/multiColumnSorting.mjs +6 -6
  682. package/plugins/multiColumnSorting/rootComparator.js +2 -0
  683. package/plugins/multiColumnSorting/rootComparator.mjs +1 -0
  684. package/plugins/multipleSelectionHandles/index.d.ts +1 -0
  685. package/plugins/multipleSelectionHandles/index.js +1 -1
  686. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +21 -0
  687. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +9 -8
  688. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +7 -6
  689. package/plugins/nestedHeaders/index.d.ts +1 -0
  690. package/plugins/nestedHeaders/index.js +1 -1
  691. package/plugins/nestedHeaders/nestedHeaders.d.ts +17 -0
  692. package/plugins/nestedHeaders/nestedHeaders.js +24 -20
  693. package/plugins/nestedHeaders/nestedHeaders.mjs +22 -18
  694. package/plugins/nestedHeaders/stateManager/headersTree.js +13 -7
  695. package/plugins/nestedHeaders/stateManager/headersTree.mjs +12 -7
  696. package/plugins/nestedHeaders/stateManager/index.js +10 -7
  697. package/plugins/nestedHeaders/stateManager/index.mjs +10 -7
  698. package/plugins/nestedHeaders/stateManager/nodeModifiers/utils/tree.js +1 -1
  699. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +2 -0
  700. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +1 -0
  701. package/plugins/nestedHeaders/stateManager/sourceSettings.js +11 -7
  702. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +11 -7
  703. package/plugins/nestedHeaders/utils/ghostTable.js +4 -1
  704. package/plugins/nestedHeaders/utils/ghostTable.mjs +4 -1
  705. package/plugins/nestedRows/data/dataManager.js +42 -16
  706. package/plugins/nestedRows/data/dataManager.mjs +40 -15
  707. package/plugins/nestedRows/index.d.ts +1 -0
  708. package/plugins/nestedRows/index.js +1 -1
  709. package/plugins/nestedRows/nestedRows.d.ts +12 -0
  710. package/plugins/nestedRows/nestedRows.js +34 -35
  711. package/plugins/nestedRows/nestedRows.mjs +31 -33
  712. package/plugins/nestedRows/ui/_base.js +7 -4
  713. package/plugins/nestedRows/ui/_base.mjs +7 -4
  714. package/plugins/nestedRows/ui/collapsing.js +9 -8
  715. package/plugins/nestedRows/ui/collapsing.mjs +7 -7
  716. package/plugins/nestedRows/ui/contextMenu.js +5 -6
  717. package/plugins/nestedRows/ui/contextMenu.mjs +5 -6
  718. package/plugins/nestedRows/ui/headers.js +7 -8
  719. package/plugins/nestedRows/ui/headers.mjs +6 -7
  720. package/plugins/nestedRows/utils/rowMoveController.js +7 -6
  721. package/plugins/nestedRows/utils/rowMoveController.mjs +5 -5
  722. package/plugins/persistentState/index.d.ts +1 -0
  723. package/plugins/persistentState/persistentState.d.ts +13 -0
  724. package/plugins/persistentState/persistentState.js +15 -7
  725. package/plugins/persistentState/persistentState.mjs +14 -6
  726. package/plugins/persistentState/storage.js +2 -2
  727. package/plugins/persistentState/storage.mjs +2 -2
  728. package/plugins/registry.d.ts +9 -0
  729. package/plugins/registry.js +3 -1
  730. package/plugins/registry.mjs +1 -0
  731. package/plugins/search/index.d.ts +1 -0
  732. package/plugins/search/search.d.ts +28 -0
  733. package/plugins/search/search.js +10 -10
  734. package/plugins/search/search.mjs +10 -10
  735. package/plugins/touchScroll/index.d.ts +1 -0
  736. package/plugins/touchScroll/touchScroll.d.ts +13 -0
  737. package/plugins/touchScroll/touchScroll.js +16 -16
  738. package/plugins/touchScroll/touchScroll.mjs +15 -14
  739. package/plugins/trimRows/index.d.ts +1 -0
  740. package/plugins/trimRows/trimRows.d.ts +17 -0
  741. package/plugins/trimRows/trimRows.js +6 -6
  742. package/plugins/trimRows/trimRows.mjs +6 -6
  743. package/plugins/undoRedo/index.d.ts +1 -0
  744. package/plugins/undoRedo/index.js +1 -1
  745. package/plugins/undoRedo/undoRedo.d.ts +49 -0
  746. package/plugins/undoRedo/undoRedo.js +30 -32
  747. package/plugins/undoRedo/undoRedo.mjs +28 -31
  748. package/registry.d.ts +6 -0
  749. package/registry.js +46 -0
  750. package/registry.mjs +27 -0
  751. package/renderers/autocompleteRenderer/autocompleteRenderer.d.ts +5 -0
  752. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  753. package/renderers/autocompleteRenderer/index.d.ts +1 -0
  754. package/renderers/base.d.ts +3 -0
  755. package/renderers/baseRenderer/baseRenderer.d.ts +5 -0
  756. package/renderers/baseRenderer/baseRenderer.js +1 -1
  757. package/renderers/baseRenderer/index.d.ts +1 -0
  758. package/renderers/checkboxRenderer/checkboxRenderer.d.ts +5 -0
  759. package/renderers/checkboxRenderer/checkboxRenderer.js +3 -5
  760. package/renderers/checkboxRenderer/checkboxRenderer.mjs +3 -4
  761. package/renderers/checkboxRenderer/index.d.ts +1 -0
  762. package/renderers/htmlRenderer/htmlRenderer.d.ts +5 -0
  763. package/renderers/htmlRenderer/htmlRenderer.js +1 -1
  764. package/renderers/htmlRenderer/index.d.ts +1 -0
  765. package/renderers/index.d.ts +42 -0
  766. package/renderers/index.js +16 -2
  767. package/renderers/index.mjs +22 -7
  768. package/renderers/numericRenderer/index.d.ts +1 -0
  769. package/renderers/numericRenderer/numericRenderer.d.ts +5 -0
  770. package/renderers/numericRenderer/numericRenderer.js +1 -1
  771. package/renderers/passwordRenderer/index.d.ts +1 -0
  772. package/renderers/passwordRenderer/passwordRenderer.d.ts +5 -0
  773. package/renderers/passwordRenderer/passwordRenderer.js +1 -1
  774. package/renderers/registry.d.ts +18 -0
  775. package/renderers/registry.js +3 -2
  776. package/renderers/textRenderer/index.d.ts +1 -0
  777. package/renderers/textRenderer/textRenderer.d.ts +5 -0
  778. package/renderers/textRenderer/textRenderer.js +1 -1
  779. package/selection/highlight/constants.js +1 -1
  780. package/selection/highlight/highlight.js +10 -8
  781. package/selection/highlight/highlight.mjs +8 -7
  782. package/selection/highlight/types/activeHeader.js +4 -2
  783. package/selection/highlight/types/activeHeader.mjs +3 -2
  784. package/selection/highlight/types/area.js +4 -2
  785. package/selection/highlight/types/area.mjs +3 -2
  786. package/selection/highlight/types/cell.js +4 -2
  787. package/selection/highlight/types/cell.mjs +3 -2
  788. package/selection/highlight/types/customSelection.js +4 -2
  789. package/selection/highlight/types/customSelection.mjs +3 -2
  790. package/selection/highlight/types/fill.js +4 -2
  791. package/selection/highlight/types/fill.mjs +3 -2
  792. package/selection/highlight/types/header.js +4 -2
  793. package/selection/highlight/types/header.mjs +3 -2
  794. package/selection/highlight/types/index.js +4 -2
  795. package/selection/highlight/types/index.mjs +3 -2
  796. package/selection/highlight/visualSelection.js +9 -7
  797. package/selection/highlight/visualSelection.mjs +7 -6
  798. package/selection/index.d.ts +5 -0
  799. package/selection/index.js +2 -0
  800. package/selection/mouseEventHandler.js +4 -4
  801. package/selection/mouseEventHandler.mjs +3 -3
  802. package/selection/range.js +6 -6
  803. package/selection/range.mjs +5 -5
  804. package/selection/selection.js +18 -9
  805. package/selection/selection.mjs +17 -9
  806. package/selection/transformation.js +4 -3
  807. package/selection/transformation.mjs +4 -3
  808. package/selection/utils.js +6 -4
  809. package/selection/utils.mjs +3 -2
  810. package/settings.d.ts +208 -0
  811. package/tableView.js +21 -15
  812. package/tableView.mjs +19 -14
  813. package/translations/changesObservable/observable.js +11 -6
  814. package/translations/changesObservable/observable.mjs +11 -6
  815. package/translations/changesObservable/observer.js +7 -2
  816. package/translations/changesObservable/observer.mjs +7 -2
  817. package/translations/changesObservable/utils.js +1 -0
  818. package/translations/changesObservable/utils.mjs +1 -0
  819. package/translations/index.d.ts +1 -0
  820. package/translations/index.js +3 -1
  821. package/translations/indexMapper.d.ts +46 -0
  822. package/translations/indexMapper.js +38 -13
  823. package/translations/indexMapper.mjs +35 -12
  824. package/translations/mapCollections/aggregatedCollection.js +6 -6
  825. package/translations/mapCollections/aggregatedCollection.mjs +5 -5
  826. package/translations/mapCollections/index.js +2 -0
  827. package/translations/mapCollections/mapCollection.js +2 -2
  828. package/translations/mapCollections/mapCollection.mjs +1 -1
  829. package/translations/maps/hidingMap.js +6 -6
  830. package/translations/maps/hidingMap.mjs +5 -5
  831. package/translations/maps/indexMap.d.ts +10 -0
  832. package/translations/maps/indexMap.js +1 -1
  833. package/translations/maps/indexMap.mjs +1 -1
  834. package/translations/maps/indexesSequence.js +7 -7
  835. package/translations/maps/indexesSequence.mjs +6 -6
  836. package/translations/maps/linkedPhysicalIndexToValueMap.js +7 -5
  837. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +6 -5
  838. package/translations/maps/physicalIndexToValueMap.js +7 -7
  839. package/translations/maps/physicalIndexToValueMap.mjs +6 -6
  840. package/translations/maps/trimmingMap.js +6 -6
  841. package/translations/maps/trimmingMap.mjs +5 -5
  842. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  843. package/translations/maps/utils/actionsOnIndexes.mjs +1 -0
  844. package/translations/maps/utils/indexesSequence.js +2 -0
  845. package/translations/maps/utils/indexesSequence.mjs +1 -0
  846. package/translations/maps/utils/physicallyIndexed.js +2 -0
  847. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  848. package/utils/dataStructures/linkedList.js +3 -3
  849. package/utils/dataStructures/linkedList.mjs +3 -3
  850. package/utils/dataStructures/priorityMap.js +3 -1
  851. package/utils/dataStructures/priorityMap.mjs +1 -0
  852. package/utils/dataStructures/queue.js +1 -1
  853. package/utils/dataStructures/queue.mjs +1 -1
  854. package/utils/dataStructures/stack.js +1 -1
  855. package/utils/dataStructures/stack.mjs +1 -1
  856. package/utils/dataStructures/tree.js +6 -4
  857. package/utils/dataStructures/tree.mjs +4 -3
  858. package/utils/dataStructures/uniqueMap.js +2 -0
  859. package/utils/dataStructures/uniqueMap.mjs +1 -0
  860. package/utils/dataStructures/uniqueSet.js +2 -0
  861. package/utils/dataStructures/uniqueSet.mjs +1 -0
  862. package/utils/ghostTable.js +17 -5
  863. package/utils/ghostTable.mjs +16 -5
  864. package/utils/interval.js +2 -3
  865. package/utils/interval.mjs +1 -2
  866. package/utils/parseTable.d.ts +5 -0
  867. package/utils/parseTable.js +1 -1
  868. package/utils/rootInstance.js +3 -2
  869. package/utils/samplesGenerator.js +1 -2
  870. package/utils/samplesGenerator.mjs +1 -2
  871. package/utils/staticRegister.js +3 -1
  872. package/utils/staticRegister.mjs +1 -0
  873. package/validators/autocompleteValidator/autocompleteValidator.d.ts +5 -0
  874. package/validators/autocompleteValidator/autocompleteValidator.js +1 -1
  875. package/validators/autocompleteValidator/index.d.ts +1 -0
  876. package/validators/base.d.ts +6 -0
  877. package/validators/dateValidator/dateValidator.d.ts +5 -0
  878. package/validators/dateValidator/dateValidator.js +2 -2
  879. package/validators/dateValidator/index.d.ts +1 -0
  880. package/validators/index.d.ts +33 -0
  881. package/validators/index.js +13 -2
  882. package/validators/index.mjs +16 -4
  883. package/validators/numericValidator/index.d.ts +1 -0
  884. package/validators/numericValidator/numericValidator.d.ts +5 -0
  885. package/validators/numericValidator/numericValidator.js +1 -1
  886. package/validators/registry.d.ts +18 -0
  887. package/validators/registry.js +3 -2
  888. package/validators/timeValidator/index.d.ts +1 -0
  889. package/validators/timeValidator/timeValidator.d.ts +5 -0
  890. package/validators/timeValidator/timeValidator.js +3 -1
  891. package/validators/timeValidator/timeValidator.mjs +1 -0
  892. package/handsontable-general-terms.pdf +0 -0
  893. package/handsontable.d.ts +0 -2616
  894. package/plugins/formulas/autofill.js +0 -180
  895. package/plugins/formulas/autofill.mjs +0 -172
package/core.mjs CHANGED
@@ -1,4 +1,4 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
2
 
3
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
4
 
@@ -12,23 +12,25 @@ import "core-js/modules/es.array.sort.js";
12
12
  import "core-js/modules/es.array.splice.js";
13
13
  import "core-js/modules/es.number.is-integer.js";
14
14
  import "core-js/modules/es.number.constructor.js";
15
+ import "core-js/modules/es.array.slice.js";
16
+ import "core-js/modules/es.array.concat.js";
17
+ import "core-js/modules/es.array.fill.js";
18
+ import "core-js/modules/es.array.map.js";
15
19
  import "core-js/modules/es.regexp.exec.js";
16
20
  import "core-js/modules/es.string.replace.js";
17
- import "core-js/modules/es.array.concat.js";
18
21
  import "core-js/modules/es.array.from.js";
19
22
  import "core-js/modules/es.string.iterator.js";
20
23
  import "core-js/modules/es.array.index-of.js";
21
24
  import "core-js/modules/es.array.reverse.js";
25
+ import "core-js/modules/es.object.to-string.js";
22
26
  import "core-js/modules/web.dom-collections.for-each.js";
23
27
  import "core-js/modules/web.timers.js";
24
28
  import "core-js/modules/web.immediate.js";
25
29
  import "core-js/modules/es.symbol.js";
26
30
  import "core-js/modules/es.symbol.description.js";
27
- import "core-js/modules/es.object.to-string.js";
28
31
  import "core-js/modules/es.symbol.iterator.js";
29
32
  import "core-js/modules/es.array.iterator.js";
30
33
  import "core-js/modules/web.dom-collections.iterator.js";
31
- import "core-js/modules/es.array.slice.js";
32
34
  import "core-js/modules/es.function.name.js";
33
35
 
34
36
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
@@ -49,17 +51,17 @@ import { isDefined, isUndefined, isRegExp, _injectProductInfo, isEmpty } from ".
49
51
  import { isMobileBrowser, isIpadOS } from "./helpers/browser.mjs";
50
52
  import EditorManager from "./editorManager.mjs";
51
53
  import EventManager from "./eventManager.mjs";
52
- import { deepClone, duckSchema, isObjectEqual, deepObjectSize, hasOwnProperty, createObjectPropListener, objectEach } from "./helpers/object.mjs";
53
- import { arrayMap, arrayEach, arrayReduce, getDifferenceOfArrays, stringToArray } from "./helpers/array.mjs";
54
+ import { deepClone, duckSchema, isObjectEqual, isObject, deepObjectSize, hasOwnProperty, createObjectPropListener, objectEach } from "./helpers/object.mjs";
55
+ import { arrayMap, arrayEach, arrayReduce, getDifferenceOfArrays, stringToArray, pivot } from "./helpers/array.mjs";
54
56
  import { instanceToHTML } from "./utils/parseTable.mjs";
55
57
  import { getPlugin, getPluginsNames } from "./plugins/registry.mjs";
56
58
  import { getRenderer } from "./renderers/registry.mjs";
57
59
  import { getValidator } from "./validators/registry.mjs";
58
60
  import { randomString, toUpperCaseFirst } from "./helpers/string.mjs";
59
- import { rangeEach, rangeEachReverse } from "./helpers/number.mjs";
61
+ import { rangeEach, rangeEachReverse, isNumericLike } from "./helpers/number.mjs";
60
62
  import TableView from "./tableView.mjs";
61
63
  import DataSource from "./dataSource.mjs";
62
- import { translateRowsToColumns, cellMethodLookupFactory, spreadsheetColumnLabel } from "./helpers/data.mjs";
64
+ import { cellMethodLookupFactory, spreadsheetColumnLabel } from "./helpers/data.mjs";
63
65
  import { IndexMapper } from "./translations/index.mjs";
64
66
  import { registerAsRootInstance, hasValidParameter, isRootInstance } from "./utils/rootInstance.mjs";
65
67
  import { CellCoords, ViewportColumnsCalculator } from "./3rdparty/walkontable/src/index.mjs";
@@ -68,7 +70,7 @@ import { hasLanguageDictionary, getValidLanguageCode, getTranslatedPhrase } from
68
70
  import { warnUserAboutLanguageRegistration, normalizeLanguageCode } from "./i18n/utils.mjs";
69
71
  import { startObserving as keyStateStartObserving, stopObserving as keyStateStopObserving } from "./utils/keyStateObserver.mjs";
70
72
  import { Selection } from "./selection/index.mjs";
71
- import { MetaManager, DataMap } from "./dataMap/index.mjs";
73
+ import { MetaManager, DynamicCellMetaMod, replaceData } from "./dataMap/index.mjs";
72
74
  import { createUniqueMap } from "./utils/dataStructures/uniqueMap.mjs";
73
75
  var activeGuid = null;
74
76
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -110,7 +112,7 @@ export default function Core(rootElement, userSettings) {
110
112
  var editorManager;
111
113
  var firstRun = true;
112
114
  userSettings.language = getValidLanguageCode(userSettings.language);
113
- var metaManager = new MetaManager(userSettings);
115
+ var metaManager = new MetaManager(instance, userSettings, [DynamicCellMetaMod]);
114
116
  var tableMeta = metaManager.getTableMeta();
115
117
  var globalMeta = metaManager.getGlobalMeta();
116
118
  var pluginsRegistry = createUniqueMap();
@@ -128,8 +130,6 @@ export default function Core(rootElement, userSettings) {
128
130
 
129
131
 
130
132
  this.rootElement = rootElement;
131
- /* eslint-enable jsdoc/require-description-complete-sentence */
132
-
133
133
  /**
134
134
  * The nearest document over container.
135
135
  *
@@ -395,8 +395,6 @@ export default function Core(rootElement, userSettings) {
395
395
  /**
396
396
  * Inserts or removes rows and columns.
397
397
  *
398
- * @memberof Core#
399
- * @function alter
400
398
  * @private
401
399
  * @param {string} action Possible values: "insert_row", "insert_col", "remove_row", "remove_col".
402
400
  * @param {number|Array} index Row or column visual index which from the alter action will be triggered.
@@ -675,6 +673,8 @@ export default function Core(rootElement, userSettings) {
675
673
 
676
674
  /**
677
675
  * Makes sure there are empty rows at the bottom of the table.
676
+ *
677
+ * @private
678
678
  */
679
679
  adjustRowsAndCols: function adjustRowsAndCols() {
680
680
  var minRows = tableMeta.minRows;
@@ -815,72 +815,91 @@ export default function Core(rootElement, userSettings) {
815
815
  var clen;
816
816
  var setData = [];
817
817
  var current = {};
818
+ var newDataByColumns = [];
819
+ var startRow = start.row;
820
+ var startColumn = start.col;
818
821
  rlen = input.length;
819
822
 
820
823
  if (rlen === 0) {
821
824
  return false;
822
825
  }
823
826
 
824
- var repeatCol;
825
- var repeatRow;
826
- var cmax;
827
- var rmax;
828
- /* eslint-disable no-case-declarations */
829
- // insert data with specified pasteMode method
827
+ var columnsPopulationEnd = 0;
828
+ var rowsPopulationEnd = 0;
829
+
830
+ if (isObject(end)) {
831
+ columnsPopulationEnd = end.col - startColumn + 1;
832
+ rowsPopulationEnd = end.row - startRow + 1;
833
+ } // insert data with specified pasteMode method
834
+
830
835
 
831
836
  switch (method) {
832
837
  case 'shift_down':
833
- repeatCol = end ? end.col - start.col + 1 : 0;
834
- repeatRow = end ? end.row - start.row + 1 : 0; // eslint-disable-next-line no-param-reassign
838
+ // translate data from a list of rows to a list of columns
839
+ var populatedDataByColumns = pivot(input);
840
+ var numberOfDataColumns = populatedDataByColumns.length; // method's argument can extend the range of data population (data would be repeated)
835
841
 
836
- input = translateRowsToColumns(input);
842
+ var numberOfColumnsToPopulate = Math.max(numberOfDataColumns, columnsPopulationEnd);
843
+ var pushedDownDataByRows = instance.getData().slice(startRow); // translate data from a list of rows to a list of columns
837
844
 
838
- for (c = 0, clen = input.length, cmax = Math.max(clen, repeatCol); c < cmax; c++) {
839
- if (c < clen) {
840
- var _instance;
845
+ var pushedDownDataByColumns = pivot(pushedDownDataByRows).slice(startColumn, startColumn + numberOfColumnsToPopulate);
841
846
 
842
- for (r = 0, rlen = input[c].length; r < repeatRow - rlen; r++) {
843
- input[c].push(input[c][r % rlen]);
847
+ for (c = 0; c < numberOfColumnsToPopulate; c += 1) {
848
+ if (c < numberOfDataColumns) {
849
+ for (r = 0, rlen = populatedDataByColumns[c].length; r < rowsPopulationEnd - rlen; r += 1) {
850
+ // repeating data for rows
851
+ populatedDataByColumns[c].push(populatedDataByColumns[c][r % rlen]);
844
852
  }
845
853
 
846
- input[c].unshift(start.col + c, start.row, 0);
847
-
848
- (_instance = instance).spliceCol.apply(_instance, _toConsumableArray(input[c]));
854
+ if (c < pushedDownDataByColumns.length) {
855
+ newDataByColumns.push(populatedDataByColumns[c].concat(pushedDownDataByColumns[c]));
856
+ } else {
857
+ // if before data population, there was no data in the column
858
+ // we fill the required rows' newly-created cells with `null` values
859
+ newDataByColumns.push(populatedDataByColumns[c].concat(new Array(pushedDownDataByRows.length).fill(null)));
860
+ }
849
861
  } else {
850
- var _instance2;
851
-
852
- input[c % clen][0] = start.col + c;
853
-
854
- (_instance2 = instance).spliceCol.apply(_instance2, _toConsumableArray(input[c % clen]));
862
+ // Repeating data for columns.
863
+ newDataByColumns.push(populatedDataByColumns[c % numberOfDataColumns].concat(pushedDownDataByColumns[c]));
855
864
  }
856
865
  }
857
866
 
867
+ instance.populateFromArray(startRow, startColumn, pivot(newDataByColumns));
858
868
  break;
859
869
 
860
870
  case 'shift_right':
861
- repeatCol = end ? end.col - start.col + 1 : 0;
862
- repeatRow = end ? end.row - start.row + 1 : 0;
871
+ var numberOfDataRows = input.length; // method's argument can extend the range of data population (data would be repeated)
863
872
 
864
- for (r = 0, rlen = input.length, rmax = Math.max(rlen, repeatRow); r < rmax; r++) {
865
- if (r < rlen) {
866
- var _instance3;
873
+ var numberOfRowsToPopulate = Math.max(numberOfDataRows, rowsPopulationEnd);
874
+ var pushedRightDataByRows = instance.getData().slice(startRow).map(function (rowData) {
875
+ return rowData.slice(startColumn);
876
+ });
867
877
 
868
- for (c = 0, clen = input[r].length; c < repeatCol - clen; c++) {
878
+ for (r = 0; r < numberOfRowsToPopulate; r += 1) {
879
+ if (r < numberOfDataRows) {
880
+ for (c = 0, clen = input[r].length; c < columnsPopulationEnd - clen; c += 1) {
881
+ // repeating data for rows
869
882
  input[r].push(input[r][c % clen]);
870
883
  }
871
884
 
872
- input[r].unshift(start.row + r, start.col, 0);
885
+ if (r < pushedRightDataByRows.length) {
886
+ for (var i = 0; i < pushedRightDataByRows[r].length; i += 1) {
887
+ input[r].push(pushedRightDataByRows[r][i]);
888
+ }
889
+ } else {
890
+ var _input$r;
873
891
 
874
- (_instance3 = instance).spliceRow.apply(_instance3, _toConsumableArray(input[r]));
892
+ // if before data population, there was no data in the row
893
+ // we fill the required columns' newly-created cells with `null` values
894
+ (_input$r = input[r]).push.apply(_input$r, _toConsumableArray(new Array(pushedRightDataByRows[0].length).fill(null)));
895
+ }
875
896
  } else {
876
- var _instance4;
877
-
878
- input[r % rlen][0] = start.row + r;
879
-
880
- (_instance4 = instance).spliceRow.apply(_instance4, _toConsumableArray(input[r % rlen]));
897
+ // Repeating data for columns.
898
+ input.push(input[r % rlen].slice(0, numberOfRowsToPopulate).concat(pushedRightDataByRows[r]));
881
899
  }
882
900
  }
883
901
 
902
+ instance.populateFromArray(startRow, startColumn, input);
884
903
  break;
885
904
 
886
905
  case 'overwrite':
@@ -1182,10 +1201,6 @@ export default function Core(rootElement, userSettings) {
1182
1201
 
1183
1202
  var waitingForValidator = new ValidatorsQueue();
1184
1203
 
1185
- var isNumericData = function isNumericData(value) {
1186
- return value.length > 0 && /^\s*[+-.]?\s*(?:(?:\d+(?:(\.|,)\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/.test(value);
1187
- };
1188
-
1189
1204
  waitingForValidator.onQueueEmpty = function (isValid) {
1190
1205
  if (activeEditor && shouldBeCanceled) {
1191
1206
  activeEditor.cancelChanges();
@@ -1206,7 +1221,7 @@ export default function Core(rootElement, userSettings) {
1206
1221
  var col = datamap.propToCol(prop);
1207
1222
  var cellProperties = instance.getCellMeta(row, col);
1208
1223
 
1209
- if (cellProperties.type === 'numeric' && typeof newValue === 'string' && isNumericData(newValue)) {
1224
+ if (cellProperties.type === 'numeric' && typeof newValue === 'string' && isNumericLike(newValue)) {
1210
1225
  changes[i][3] = getParsedNumber(newValue);
1211
1226
  }
1212
1227
  /* eslint-disable no-loop-func */
@@ -1330,6 +1345,8 @@ export default function Core(rootElement, userSettings) {
1330
1345
  /**
1331
1346
  * Validate a single cell.
1332
1347
  *
1348
+ * @memberof Core#
1349
+ * @function validateCell
1333
1350
  * @param {string|number} value The value to validate.
1334
1351
  * @param {object} cellProperties The cell meta which corresponds with the value.
1335
1352
  * @param {Function} callback The callback function.
@@ -1341,9 +1358,10 @@ export default function Core(rootElement, userSettings) {
1341
1358
  var validator = instance.getCellValidator(cellProperties); // the `canBeValidated = false` argument suggests, that the cell passes validation by default.
1342
1359
 
1343
1360
  /**
1361
+ * @private
1362
+ * @function done
1344
1363
  * @param {boolean} valid Indicates if the validation was successful.
1345
1364
  * @param {boolean} [canBeValidated=true] Flag which controls the validation process.
1346
- * @private
1347
1365
  */
1348
1366
 
1349
1367
  function done(valid) {
@@ -1564,7 +1582,7 @@ export default function Core(rootElement, userSettings) {
1564
1582
  * Populate cells at position with 2D input array (e.g. `[[1, 2], [3, 4]]`). Use `endRow`, `endCol` when you
1565
1583
  * want to cut input when a certain row is reached.
1566
1584
  *
1567
- * Optional `method` argument has the same effect as pasteMode option (see {@link options#pastemode Options#pasteMode}).
1585
+ * Optional `method` argument has the same effect as pasteMode option (see {@link Options#pasteMode}).
1568
1586
  *
1569
1587
  * @memberof Core#
1570
1588
  * @function populateFromArray
@@ -1753,7 +1771,7 @@ export default function Core(rootElement, userSettings) {
1753
1771
  }
1754
1772
  };
1755
1773
  /**
1756
- * Checks if the table rendering process was suspended. See explanation in {@link core#suspendrender Core#suspendRender}.
1774
+ * Checks if the table rendering process was suspended. See explanation in {@link Core#suspendRender}.
1757
1775
  *
1758
1776
  * @memberof Core#
1759
1777
  * @function isRenderSuspended
@@ -1772,8 +1790,8 @@ export default function Core(rootElement, userSettings) {
1772
1790
  * When the table is in the suspend state, most operations will have no visual
1773
1791
  * effect until the rendering state is resumed. Resuming the state automatically
1774
1792
  * invokes the table rendering. To make sure that after executing all operations,
1775
- * the table will be rendered, it's highly recommended to use the {@link core#batchrender Core#batchRender}
1776
- * method or {@link core#batch Core#batch}, which additionally aggregates the logic execution
1793
+ * the table will be rendered, it's highly recommended to use the {@link Core#batchRender}
1794
+ * method or {@link Core#batch}, which additionally aggregates the logic execution
1777
1795
  * that happens behind the table.
1778
1796
  *
1779
1797
  * The method is intended to be used by advanced users. Suspending the rendering
@@ -1802,7 +1820,7 @@ export default function Core(rootElement, userSettings) {
1802
1820
  this.renderSuspendedCounter += 1;
1803
1821
  };
1804
1822
  /**
1805
- * Resumes the rendering process. In combination with the {@link core#suspendrender Core#suspendRender}
1823
+ * Resumes the rendering process. In combination with the {@link Core#suspendRender}
1806
1824
  * method it allows aggregating the table render cycles triggered by API calls or UI
1807
1825
  * actions (or both) and calls the "render" once in the end. When the table is in
1808
1826
  * the suspend state, most operations will have no visual effect until the rendering
@@ -1904,7 +1922,7 @@ export default function Core(rootElement, userSettings) {
1904
1922
  };
1905
1923
  /**
1906
1924
  * Checks if the table indexes recalculation process was suspended. See explanation
1907
- * in {@link core#suspendexecution Core#suspendExecution}.
1925
+ * in {@link Core#suspendExecution}.
1908
1926
  *
1909
1927
  * @memberof Core#
1910
1928
  * @function isExecutionSuspended
@@ -1946,7 +1964,7 @@ export default function Core(rootElement, userSettings) {
1946
1964
  this.rowIndexMapper.suspendOperations();
1947
1965
  };
1948
1966
  /**
1949
- * Resumes the execution process. In combination with the {@link core#suspendexecution Core#suspendExecution}
1967
+ * Resumes the execution process. In combination with the {@link Core#suspendExecution}
1950
1968
  * method it allows aggregating the table logic changes after which the cache is
1951
1969
  * updated. Resuming the state automatically invokes the table cache updating process.
1952
1970
  *
@@ -1957,7 +1975,7 @@ export default function Core(rootElement, userSettings) {
1957
1975
  * @function resumeExecution
1958
1976
  * @param {boolean} [forceFlushChanges=false] If `true`, the table internal data cache
1959
1977
  * is recalculated after the execution of the batched operations. For nested
1960
- * {@link core#batchexecution Core#batchExecution} calls, it can be desire to recalculate the table
1978
+ * {@link Core#batchExecution} calls, it can be desire to recalculate the table
1961
1979
  * after each batch.
1962
1980
  * @since 8.3.0
1963
1981
  * @example
@@ -2112,14 +2130,67 @@ export default function Core(rootElement, userSettings) {
2112
2130
  }, isSizeChanged);
2113
2131
  };
2114
2132
  /**
2115
- * Loads new data to Handsontable. Loading new data resets the cell meta.
2116
- * Since 8.0.0 loading new data also resets states corresponding to rows and columns
2117
- * (for example, row/column sequence, column width, row height, frozen columns etc.).
2133
+ * The `updateData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2134
+ *
2135
+ * The `updateData()` method:
2136
+ * - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2137
+ * - Keeps rows' states (e.g. row order)
2138
+ * - Keeps columns' states (e.g. column order)
2139
+ *
2140
+ * To replace Handsontable's [`data`](@/api/options.md#data) and reset states, use the [`loadData()`](#loaddata) method.
2141
+ *
2142
+ * Read more:
2143
+ * - [Binding to data &#8594;](@/guides/getting-started/binding-to-data.md)
2144
+ * - [Saving data &#8594;](@/guides/getting-started/saving-data.md)
2145
+ *
2146
+ * @memberof Core#
2147
+ * @function updateData
2148
+ * @since 11.1.0
2149
+ * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
2150
+ * @param {string} [source] The source of the `updateData()` call
2151
+ * @fires Hooks#beforeUpdateData
2152
+ * @fires Hooks#afterUpdateData
2153
+ * @fires Hooks#afterChange
2154
+ */
2155
+
2156
+
2157
+ this.updateData = function (data, source) {
2158
+ var _this3 = this;
2159
+
2160
+ replaceData(data, function (newDataMap) {
2161
+ datamap = newDataMap;
2162
+ }, function (newDataMap) {
2163
+ datamap = newDataMap;
2164
+ instance.columnIndexMapper.fitToLength(_this3.getInitialColumnCount());
2165
+ instance.rowIndexMapper.fitToLength(_this3.countSourceRows());
2166
+ grid.adjustRowsAndCols();
2167
+ }, {
2168
+ hotInstance: instance,
2169
+ dataMap: datamap,
2170
+ dataSource: dataSource,
2171
+ internalSource: 'updateData',
2172
+ source: source,
2173
+ firstRun: firstRun
2174
+ });
2175
+ };
2176
+ /**
2177
+ * The `loadData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2178
+ *
2179
+ * Additionally, the `loadData()` method:
2180
+ * - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2181
+ * - Resets rows' states (e.g. row order)
2182
+ * - Resets columns' states (e.g. column order)
2183
+ *
2184
+ * To replace Handsontable's [`data`](@/api/options.md#data) without resetting states, use the [`updateData()`](#updatedata) method.
2185
+ *
2186
+ * Read more:
2187
+ * - [Binding to data &#8594;](@/guides/getting-started/binding-to-data.md)
2188
+ * - [Saving data &#8594;](@/guides/getting-started/saving-data.md)
2118
2189
  *
2119
2190
  * @memberof Core#
2120
2191
  * @function loadData
2121
- * @param {Array} data Array of arrays or array of objects containing data.
2122
- * @param {string} [source] Source of the loadData call.
2192
+ * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
2193
+ * @param {string} [source] The source of the `loadData()` call
2123
2194
  * @fires Hooks#beforeLoadData
2124
2195
  * @fires Hooks#afterLoadData
2125
2196
  * @fires Hooks#afterChange
@@ -2127,88 +2198,34 @@ export default function Core(rootElement, userSettings) {
2127
2198
 
2128
2199
 
2129
2200
  this.loadData = function (data, source) {
2130
- if (Array.isArray(tableMeta.dataSchema)) {
2131
- instance.dataType = 'array';
2132
- } else if (isFunction(tableMeta.dataSchema)) {
2133
- instance.dataType = 'function';
2134
- } else {
2135
- instance.dataType = 'object';
2136
- }
2137
-
2138
- if (datamap) {
2139
- datamap.destroy();
2140
- }
2141
-
2142
- data = instance.runHooks('beforeLoadData', data, firstRun, source);
2143
- datamap = new DataMap(instance, data, tableMeta);
2144
-
2145
- if (_typeof(data) === 'object' && data !== null) {
2146
- if (!(data.push && data.splice)) {
2147
- // check if data is array. Must use duck-type check so Backbone Collections also pass it
2148
- // when data is not an array, attempt to make a single-row array of it
2149
- // eslint-disable-next-line no-param-reassign
2150
- data = [data];
2151
- }
2152
- } else if (data === null) {
2153
- var dataSchema = datamap.getSchema(); // eslint-disable-next-line no-param-reassign
2154
-
2155
- data = [];
2156
- var row;
2157
- var r = 0;
2158
- var rlen = 0;
2159
-
2160
- for (r = 0, rlen = tableMeta.startRows; r < rlen; r++) {
2161
- if ((instance.dataType === 'object' || instance.dataType === 'function') && tableMeta.dataSchema) {
2162
- row = deepClone(dataSchema);
2163
- data.push(row);
2164
- } else if (instance.dataType === 'array') {
2165
- row = deepClone(dataSchema[0]);
2166
- data.push(row);
2167
- } else {
2168
- row = [];
2169
-
2170
- for (var c = 0, clen = tableMeta.startCols; c < clen; c++) {
2171
- row.push(null);
2172
- }
2201
+ replaceData(data, function (newDataMap) {
2202
+ datamap = newDataMap;
2203
+ }, function () {
2204
+ metaManager.clearCellsCache();
2205
+ instance.initIndexMappers();
2206
+ grid.adjustRowsAndCols();
2173
2207
 
2174
- data.push(row);
2175
- }
2208
+ if (firstRun) {
2209
+ firstRun = [null, 'loadData'];
2176
2210
  }
2177
- } else {
2178
- throw new Error("loadData only accepts array of objects or array of arrays (".concat(_typeof(data), " given)"));
2179
- }
2180
-
2181
- if (Array.isArray(data[0])) {
2182
- instance.dataType = 'array';
2183
- }
2184
-
2185
- tableMeta.data = data;
2186
- datamap.dataSource = data;
2187
- dataSource.data = data;
2188
- dataSource.dataType = instance.dataType;
2189
- dataSource.colToProp = datamap.colToProp.bind(datamap);
2190
- dataSource.propToCol = datamap.propToCol.bind(datamap);
2191
- dataSource.countCachedColumns = datamap.countCachedColumns.bind(datamap);
2192
- metaManager.clearCellsCache();
2193
- instance.initIndexMappers();
2194
- grid.adjustRowsAndCols();
2195
- instance.runHooks('afterLoadData', data, firstRun, source);
2196
-
2197
- if (firstRun) {
2198
- firstRun = [null, 'loadData'];
2199
- } else {
2200
- instance.runHooks('afterChange', null, 'loadData');
2201
- instance.render();
2202
- }
2211
+ }, {
2212
+ hotInstance: instance,
2213
+ dataMap: datamap,
2214
+ dataSource: dataSource,
2215
+ internalSource: 'loadData',
2216
+ source: source,
2217
+ firstRun: firstRun
2218
+ });
2203
2219
  };
2204
2220
  /**
2205
- * Init index mapper which manage indexes assigned to the data.
2221
+ * Gets the initial column count, calculated based on the `columns` setting.
2206
2222
  *
2207
2223
  * @private
2224
+ * @returns {number} The calculated number of columns.
2208
2225
  */
2209
2226
 
2210
2227
 
2211
- this.initIndexMappers = function () {
2228
+ this.getInitialColumnCount = function () {
2212
2229
  var columnsSettings = tableMeta.columns;
2213
2230
  var finalNrOfColumns = 0; // We will check number of columns when the `columns` property was defined as an array. Columns option may
2214
2231
  // narrow down or expand displayed dataset in that case.
@@ -2238,13 +2255,23 @@ export default function Core(rootElement, userSettings) {
2238
2255
  finalNrOfColumns = this.countSourceCols();
2239
2256
  }
2240
2257
 
2241
- this.columnIndexMapper.initToLength(finalNrOfColumns);
2258
+ return finalNrOfColumns;
2259
+ };
2260
+ /**
2261
+ * Init index mapper which manage indexes assigned to the data.
2262
+ *
2263
+ * @private
2264
+ */
2265
+
2266
+
2267
+ this.initIndexMappers = function () {
2268
+ this.columnIndexMapper.initToLength(this.getInitialColumnCount());
2242
2269
  this.rowIndexMapper.initToLength(this.countSourceRows());
2243
2270
  };
2244
2271
  /**
2245
2272
  * Returns the current data object (the same one that was passed by `data` configuration option or `loadData` method,
2246
2273
  * unless some modifications have been applied (i.e. Sequence of rows/columns was changed, some row/column was skipped).
2247
- * If that's the case - use the {@link core#getsourcedata Core#getSourceData} method.).
2274
+ * If that's the case - use the {@link Core#getSourceData} method.).
2248
2275
  *
2249
2276
  * Optionally you can provide cell range by defining `row`, `column`, `row2`, `column2` to get only a fragment of table data.
2250
2277
  *
@@ -2330,7 +2357,7 @@ export default function Core(rootElement, userSettings) {
2330
2357
  *
2331
2358
  * @memberof Core#
2332
2359
  * @function updateSettings
2333
- * @param {object} settings New settings object (see {@link options Options}).
2360
+ * @param {object} settings New settings object (see {@link Options}).
2334
2361
  * @param {boolean} [init=false] Internally used for in initialization mode.
2335
2362
  * @example
2336
2363
  * ```js
@@ -2347,6 +2374,12 @@ export default function Core(rootElement, userSettings) {
2347
2374
 
2348
2375
  this.updateSettings = function (settings) {
2349
2376
  var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2377
+ // TODO: uncomment the next line with the next major version update
2378
+ // Do not forget to re-enable the pending tests that cover the change:
2379
+ // * https://github.com/handsontable/handsontable/blob/9f62c282a1c951b27cd8406aa27105bd32b05bb6/handsontable/test/e2e/core/toPhysicalColumn.spec.js#L70
2380
+ // * https://github.com/handsontable/handsontable/blob/9f62c282a1c951b27cd8406aa27105bd32b05bb6/handsontable/test/e2e/core/toVisualColumn.spec.js#L70
2381
+ // const dataUpdateFunction = (firstRun ? instance.loadData : instance.updateData).bind(this);
2382
+ var dataUpdateFunction = instance.loadData.bind(this);
2350
2383
  var columnsAsFunc = false;
2351
2384
  var i;
2352
2385
  var j;
@@ -2391,9 +2424,9 @@ export default function Core(rootElement, userSettings) {
2391
2424
 
2392
2425
 
2393
2426
  if (settings.data === void 0 && tableMeta.data === void 0) {
2394
- instance.loadData(null, 'updateSettings'); // data source created just now
2427
+ dataUpdateFunction(null, 'updateSettings'); // data source created just now
2395
2428
  } else if (settings.data !== void 0) {
2396
- instance.loadData(settings.data, 'updateSettings'); // data source given as option
2429
+ dataUpdateFunction(settings.data, 'updateSettings'); // data source given as option
2397
2430
  } else if (settings.columns !== void 0) {
2398
2431
  datamap.createMap(); // The `column` property has changed - dataset may be expanded or narrowed down. The `loadData` do the same.
2399
2432
 
@@ -2999,7 +3032,7 @@ export default function Core(rootElement, userSettings) {
2999
3032
  };
3000
3033
  /**
3001
3034
  * @description
3002
- * Returns a data type defined in the Handsontable settings under the `type` key ({@link options#type Options#type}).
3035
+ * Returns a data type defined in the Handsontable settings under the `type` key ({@link Options#type}).
3003
3036
  * If there are cells with different types in the selected range, it returns `'mixed'`.
3004
3037
  *
3005
3038
  * __Note__: If data is reordered, sorted or trimmed, the currently visible order will be used.
@@ -3015,7 +3048,7 @@ export default function Core(rootElement, userSettings) {
3015
3048
 
3016
3049
 
3017
3050
  this.getDataType = function (rowFrom, columnFrom, rowTo, columnTo) {
3018
- var _this3 = this;
3051
+ var _this4 = this;
3019
3052
 
3020
3053
  var coords = rowFrom === void 0 ? [0, 0, this.countRows(), this.countCols()] : [rowFrom, columnFrom, rowTo, columnTo];
3021
3054
  var rowStart = coords[0],
@@ -3037,7 +3070,7 @@ export default function Core(rootElement, userSettings) {
3037
3070
  rangeEach(Math.max(Math.min(rowStart, rowEnd), 0), Math.max(rowStart, rowEnd), function (row) {
3038
3071
  var isTypeEqual = true;
3039
3072
  rangeEach(Math.max(Math.min(columnStart, columnEnd), 0), Math.max(columnStart, columnEnd), function (column) {
3040
- var cellType = _this3.getCellMeta(row, column);
3073
+ var cellType = _this4.getCellMeta(row, column);
3041
3074
 
3042
3075
  currentType = cellType.type;
3043
3076
 
@@ -3071,7 +3104,7 @@ export default function Core(rootElement, userSettings) {
3071
3104
  var _ref19 = [this.toPhysicalRow(row), this.toPhysicalColumn(column)],
3072
3105
  physicalRow = _ref19[0],
3073
3106
  physicalColumn = _ref19[1];
3074
- var cachedValue = metaManager.getCellMeta(physicalRow, physicalColumn, key);
3107
+ var cachedValue = metaManager.getCellMetaKeyValue(physicalRow, physicalColumn, key);
3075
3108
  var hookResult = instance.runHooks('beforeRemoveCellMeta', row, column, key, cachedValue);
3076
3109
 
3077
3110
  if (hookResult !== false) {
@@ -3094,7 +3127,7 @@ export default function Core(rootElement, userSettings) {
3094
3127
 
3095
3128
 
3096
3129
  this.spliceCellsMeta = function (visualIndex) {
3097
- var _this4 = this;
3130
+ var _this5 = this;
3098
3131
 
3099
3132
  var deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
3100
3133
 
@@ -3112,12 +3145,14 @@ export default function Core(rootElement, userSettings) {
3112
3145
 
3113
3146
  if (cellMetaRows.length > 0) {
3114
3147
  arrayEach(cellMetaRows.reverse(), function (cellMetaRow) {
3115
- metaManager.createRow(_this4.toPhysicalRow(visualIndex));
3148
+ metaManager.createRow(_this5.toPhysicalRow(visualIndex));
3116
3149
  arrayEach(cellMetaRow, function (cellMeta, columnIndex) {
3117
- return _this4.setCellMetaObject(visualIndex, columnIndex, cellMeta);
3150
+ return _this5.setCellMetaObject(visualIndex, columnIndex, cellMeta);
3118
3151
  });
3119
3152
  });
3120
3153
  }
3154
+
3155
+ instance.render();
3121
3156
  };
3122
3157
  /**
3123
3158
  * Set cell meta data object defined by `prop` to the corresponding params `row` and `column`.
@@ -3131,11 +3166,11 @@ export default function Core(rootElement, userSettings) {
3131
3166
 
3132
3167
 
3133
3168
  this.setCellMetaObject = function (row, column, prop) {
3134
- var _this5 = this;
3169
+ var _this6 = this;
3135
3170
 
3136
3171
  if (_typeof(prop) === 'object') {
3137
3172
  objectEach(prop, function (value, key) {
3138
- _this5.setCellMeta(row, column, key, value);
3173
+ _this6.setCellMeta(row, column, key, value);
3139
3174
  });
3140
3175
  }
3141
3176
  };
@@ -3211,33 +3246,10 @@ export default function Core(rootElement, userSettings) {
3211
3246
  physicalColumn = column;
3212
3247
  }
3213
3248
 
3214
- var prop = datamap.colToProp(column);
3215
- var cellProperties = metaManager.getCellMeta(physicalRow, physicalColumn); // TODO(perf): Add assigning this props and executing below code only once per table render cycle.
3216
-
3217
- cellProperties.row = physicalRow;
3218
- cellProperties.col = physicalColumn;
3219
- cellProperties.visualRow = row;
3220
- cellProperties.visualCol = column;
3221
- cellProperties.prop = prop;
3222
- cellProperties.instance = instance;
3223
- instance.runHooks('beforeGetCellMeta', row, column, cellProperties); // for `type` added or changed in beforeGetCellMeta
3224
-
3225
- if (instance.hasHook('beforeGetCellMeta') && hasOwnProperty(cellProperties, 'type')) {
3226
- metaManager.updateCellMeta(physicalRow, physicalColumn, {
3227
- type: cellProperties.type
3228
- });
3229
- }
3230
-
3231
- if (cellProperties.cells) {
3232
- var settings = cellProperties.cells(physicalRow, physicalColumn, prop);
3233
-
3234
- if (settings) {
3235
- metaManager.updateCellMeta(physicalRow, physicalColumn, settings);
3236
- }
3237
- }
3238
-
3239
- instance.runHooks('afterGetCellMeta', row, column, cellProperties);
3240
- return cellProperties;
3249
+ return metaManager.getCellMeta(physicalRow, physicalColumn, {
3250
+ visualRow: row,
3251
+ visualColumn: column
3252
+ });
3241
3253
  };
3242
3254
  /**
3243
3255
  * Returns an array of cell meta objects for specified physical row index.
@@ -3271,7 +3283,7 @@ export default function Core(rootElement, userSettings) {
3271
3283
  *
3272
3284
  * @memberof Core#
3273
3285
  * @function getCellRenderer
3274
- * @param {number|object} row Visual row index or cell meta object (see {@link core#getcellmeta Core#getCellMeta}).
3286
+ * @param {number|object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3275
3287
  * @param {number} column Visual column index.
3276
3288
  * @returns {Function} The renderer function.
3277
3289
  * @example
@@ -3291,7 +3303,7 @@ export default function Core(rootElement, userSettings) {
3291
3303
  *
3292
3304
  * @memberof Core#
3293
3305
  * @function getCellEditor
3294
- * @param {number} row Visual row index or cell meta object (see {@link core#getcellmeta Core#getCellMeta}).
3306
+ * @param {number} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3295
3307
  * @param {number} column Visual column index.
3296
3308
  * @returns {Function} The editor class.
3297
3309
  * @example
@@ -3311,7 +3323,7 @@ export default function Core(rootElement, userSettings) {
3311
3323
  *
3312
3324
  * @memberof Core#
3313
3325
  * @function getCellValidator
3314
- * @param {number|object} row Visual row index or cell meta object (see {@link core#getcellmeta Core#getCellMeta}).
3326
+ * @param {number|object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3315
3327
  * @param {number} column Visual column index.
3316
3328
  * @returns {Function|RegExp|undefined} The validator function.
3317
3329
  * @example
@@ -3711,6 +3723,8 @@ export default function Core(rootElement, userSettings) {
3711
3723
  /**
3712
3724
  * Returns the row height.
3713
3725
  *
3726
+ * Mind that this method is different from the [AutoRowSize](@/api/autoRowSize.md) plugin's [`getRowHeight()`](@/api/autoRowSize.md#getrowheight) method.
3727
+ *
3714
3728
  * @memberof Core#
3715
3729
  * @function getRowHeight
3716
3730
  * @param {number} row Visual row index.
@@ -4307,7 +4321,7 @@ export default function Core(rootElement, userSettings) {
4307
4321
  * @memberof Core#
4308
4322
  * @function addHook
4309
4323
  * @see Hooks#add
4310
- * @param {string} key Hook name (see {@link hooks Hooks}).
4324
+ * @param {string} key Hook name (see {@link Hooks}).
4311
4325
  * @param {Function|Array} callback Function or array of functions.
4312
4326
  * @example
4313
4327
  * ```js
@@ -4321,7 +4335,7 @@ export default function Core(rootElement, userSettings) {
4321
4335
  };
4322
4336
  /**
4323
4337
  * Check if for a specified hook name there are added listeners (only for this Handsontable instance). All available
4324
- * hooks you will find {@link hooks Hooks}.
4338
+ * hooks you will find {@link Hooks}.
4325
4339
  *
4326
4340
  * @memberof Core#
4327
4341
  * @function hasHook
@@ -4346,7 +4360,7 @@ export default function Core(rootElement, userSettings) {
4346
4360
  * @memberof Core#
4347
4361
  * @function addHookOnce
4348
4362
  * @see Hooks#once
4349
- * @param {string} key Hook name (see {@link hooks Hooks}).
4363
+ * @param {string} key Hook name (see {@link Hooks}).
4350
4364
  * @param {Function|Array} callback Function or array of functions.
4351
4365
  * @example
4352
4366
  * ```js
@@ -4359,13 +4373,13 @@ export default function Core(rootElement, userSettings) {
4359
4373
  Hooks.getSingleton().once(key, callback, instance);
4360
4374
  };
4361
4375
  /**
4362
- * Removes the hook listener previously registered with {@link core#addhook Core#addHook}.
4376
+ * Removes the hook listener previously registered with {@link Core#addHook}.
4363
4377
  *
4364
4378
  * @memberof Core#
4365
4379
  * @function removeHook
4366
4380
  * @see Hooks#remove
4367
4381
  * @param {string} key Hook name.
4368
- * @param {Function} callback Reference to the function which has been registered using {@link core#addhook Core#addHook}.
4382
+ * @param {Function} callback Reference to the function which has been registered using {@link Core#addHook}.
4369
4383
  *
4370
4384
  * @example
4371
4385
  * ```js
@@ -4525,6 +4539,45 @@ export default function Core(rootElement, userSettings) {
4525
4539
  editorManager.prepareEditor();
4526
4540
  }
4527
4541
  };
4542
+ /**
4543
+ * Check if currently it is RTL direction.
4544
+ *
4545
+ * @private
4546
+ * @memberof Core#
4547
+ * @function isRtl
4548
+ * @returns {boolean} True if RTL.
4549
+ */
4550
+
4551
+
4552
+ this.isRtl = function () {
4553
+ return instance.rootWindow.getComputedStyle(instance.rootElement).direction === 'rtl';
4554
+ };
4555
+ /**
4556
+ * Check if currently it is LTR direction.
4557
+ *
4558
+ * @private
4559
+ * @memberof Core#
4560
+ * @function isLtr
4561
+ * @returns {boolean} True if LTR.
4562
+ */
4563
+
4564
+
4565
+ this.isLtr = function () {
4566
+ return !instance.isRtl();
4567
+ };
4568
+ /**
4569
+ * Returns 1 for LTR; -1 for RTL. Useful for calculations.
4570
+ *
4571
+ * @private
4572
+ * @memberof Core#
4573
+ * @function getDirectionFactor
4574
+ * @returns {number} Returns 1 for LTR; -1 for RTL.
4575
+ */
4576
+
4577
+
4578
+ this.getDirectionFactor = function () {
4579
+ return instance.isLtr() ? 1 : -1;
4580
+ };
4528
4581
 
4529
4582
  getPluginsNames().forEach(function (pluginName) {
4530
4583
  var PluginClass = getPlugin(pluginName);