handsontable 9.0.2 → 11.1.0

Sign up to get free protection for your applications and to get access to all the features.
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.js CHANGED
@@ -4,16 +4,12 @@ require("core-js/modules/es.symbol.js");
4
4
 
5
5
  require("core-js/modules/es.symbol.description.js");
6
6
 
7
- require("core-js/modules/es.object.to-string.js");
8
-
9
7
  require("core-js/modules/es.symbol.iterator.js");
10
8
 
11
9
  require("core-js/modules/es.array.iterator.js");
12
10
 
13
11
  require("core-js/modules/web.dom-collections.iterator.js");
14
12
 
15
- require("core-js/modules/es.array.slice.js");
16
-
17
13
  require("core-js/modules/es.function.name.js");
18
14
 
19
15
  exports.__esModule = true;
@@ -27,12 +23,18 @@ require("core-js/modules/es.number.is-integer.js");
27
23
 
28
24
  require("core-js/modules/es.number.constructor.js");
29
25
 
26
+ require("core-js/modules/es.array.slice.js");
27
+
28
+ require("core-js/modules/es.array.concat.js");
29
+
30
+ require("core-js/modules/es.array.fill.js");
31
+
32
+ require("core-js/modules/es.array.map.js");
33
+
30
34
  require("core-js/modules/es.regexp.exec.js");
31
35
 
32
36
  require("core-js/modules/es.string.replace.js");
33
37
 
34
- require("core-js/modules/es.array.concat.js");
35
-
36
38
  require("core-js/modules/es.array.from.js");
37
39
 
38
40
  require("core-js/modules/es.string.iterator.js");
@@ -41,6 +43,8 @@ require("core-js/modules/es.array.index-of.js");
41
43
 
42
44
  require("core-js/modules/es.array.reverse.js");
43
45
 
46
+ require("core-js/modules/es.object.to-string.js");
47
+
44
48
  require("core-js/modules/web.dom-collections.for-each.js");
45
49
 
46
50
  require("core-js/modules/web.timers.js");
@@ -97,13 +101,13 @@ var _keyStateObserver = require("./utils/keyStateObserver");
97
101
 
98
102
  var _selection = require("./selection");
99
103
 
100
- var _index = require("./dataMap/index");
104
+ var _dataMap = require("./dataMap");
101
105
 
102
106
  var _uniqueMap = require("./utils/dataStructures/uniqueMap");
103
107
 
104
108
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
105
109
 
106
- 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); }
110
+ 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); }
107
111
 
108
112
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
109
113
 
@@ -165,7 +169,7 @@ function Core(rootElement, userSettings) {
165
169
  var editorManager;
166
170
  var firstRun = true;
167
171
  userSettings.language = (0, _registry4.getValidLanguageCode)(userSettings.language);
168
- var metaManager = new _index.MetaManager(userSettings);
172
+ var metaManager = new _dataMap.MetaManager(instance, userSettings, [_dataMap.DynamicCellMetaMod]);
169
173
  var tableMeta = metaManager.getTableMeta();
170
174
  var globalMeta = metaManager.getGlobalMeta();
171
175
  var pluginsRegistry = (0, _uniqueMap.createUniqueMap)();
@@ -183,8 +187,6 @@ function Core(rootElement, userSettings) {
183
187
 
184
188
 
185
189
  this.rootElement = rootElement;
186
- /* eslint-enable jsdoc/require-description-complete-sentence */
187
-
188
190
  /**
189
191
  * The nearest document over container.
190
192
  *
@@ -450,8 +452,6 @@ function Core(rootElement, userSettings) {
450
452
  /**
451
453
  * Inserts or removes rows and columns.
452
454
  *
453
- * @memberof Core#
454
- * @function alter
455
455
  * @private
456
456
  * @param {string} action Possible values: "insert_row", "insert_col", "remove_row", "remove_col".
457
457
  * @param {number|Array} index Row or column visual index which from the alter action will be triggered.
@@ -730,6 +730,8 @@ function Core(rootElement, userSettings) {
730
730
 
731
731
  /**
732
732
  * Makes sure there are empty rows at the bottom of the table.
733
+ *
734
+ * @private
733
735
  */
734
736
  adjustRowsAndCols: function adjustRowsAndCols() {
735
737
  var minRows = tableMeta.minRows;
@@ -870,72 +872,91 @@ function Core(rootElement, userSettings) {
870
872
  var clen;
871
873
  var setData = [];
872
874
  var current = {};
875
+ var newDataByColumns = [];
876
+ var startRow = start.row;
877
+ var startColumn = start.col;
873
878
  rlen = input.length;
874
879
 
875
880
  if (rlen === 0) {
876
881
  return false;
877
882
  }
878
883
 
879
- var repeatCol;
880
- var repeatRow;
881
- var cmax;
882
- var rmax;
883
- /* eslint-disable no-case-declarations */
884
- // insert data with specified pasteMode method
884
+ var columnsPopulationEnd = 0;
885
+ var rowsPopulationEnd = 0;
886
+
887
+ if ((0, _object.isObject)(end)) {
888
+ columnsPopulationEnd = end.col - startColumn + 1;
889
+ rowsPopulationEnd = end.row - startRow + 1;
890
+ } // insert data with specified pasteMode method
891
+
885
892
 
886
893
  switch (method) {
887
894
  case 'shift_down':
888
- repeatCol = end ? end.col - start.col + 1 : 0;
889
- repeatRow = end ? end.row - start.row + 1 : 0; // eslint-disable-next-line no-param-reassign
895
+ // translate data from a list of rows to a list of columns
896
+ var populatedDataByColumns = (0, _array.pivot)(input);
897
+ var numberOfDataColumns = populatedDataByColumns.length; // method's argument can extend the range of data population (data would be repeated)
890
898
 
891
- input = (0, _data.translateRowsToColumns)(input);
899
+ var numberOfColumnsToPopulate = Math.max(numberOfDataColumns, columnsPopulationEnd);
900
+ var pushedDownDataByRows = instance.getData().slice(startRow); // translate data from a list of rows to a list of columns
892
901
 
893
- for (c = 0, clen = input.length, cmax = Math.max(clen, repeatCol); c < cmax; c++) {
894
- if (c < clen) {
895
- var _instance;
902
+ var pushedDownDataByColumns = (0, _array.pivot)(pushedDownDataByRows).slice(startColumn, startColumn + numberOfColumnsToPopulate);
896
903
 
897
- for (r = 0, rlen = input[c].length; r < repeatRow - rlen; r++) {
898
- input[c].push(input[c][r % rlen]);
904
+ for (c = 0; c < numberOfColumnsToPopulate; c += 1) {
905
+ if (c < numberOfDataColumns) {
906
+ for (r = 0, rlen = populatedDataByColumns[c].length; r < rowsPopulationEnd - rlen; r += 1) {
907
+ // repeating data for rows
908
+ populatedDataByColumns[c].push(populatedDataByColumns[c][r % rlen]);
899
909
  }
900
910
 
901
- input[c].unshift(start.col + c, start.row, 0);
902
-
903
- (_instance = instance).spliceCol.apply(_instance, _toConsumableArray(input[c]));
911
+ if (c < pushedDownDataByColumns.length) {
912
+ newDataByColumns.push(populatedDataByColumns[c].concat(pushedDownDataByColumns[c]));
913
+ } else {
914
+ // if before data population, there was no data in the column
915
+ // we fill the required rows' newly-created cells with `null` values
916
+ newDataByColumns.push(populatedDataByColumns[c].concat(new Array(pushedDownDataByRows.length).fill(null)));
917
+ }
904
918
  } else {
905
- var _instance2;
906
-
907
- input[c % clen][0] = start.col + c;
908
-
909
- (_instance2 = instance).spliceCol.apply(_instance2, _toConsumableArray(input[c % clen]));
919
+ // Repeating data for columns.
920
+ newDataByColumns.push(populatedDataByColumns[c % numberOfDataColumns].concat(pushedDownDataByColumns[c]));
910
921
  }
911
922
  }
912
923
 
924
+ instance.populateFromArray(startRow, startColumn, (0, _array.pivot)(newDataByColumns));
913
925
  break;
914
926
 
915
927
  case 'shift_right':
916
- repeatCol = end ? end.col - start.col + 1 : 0;
917
- repeatRow = end ? end.row - start.row + 1 : 0;
928
+ var numberOfDataRows = input.length; // method's argument can extend the range of data population (data would be repeated)
918
929
 
919
- for (r = 0, rlen = input.length, rmax = Math.max(rlen, repeatRow); r < rmax; r++) {
920
- if (r < rlen) {
921
- var _instance3;
930
+ var numberOfRowsToPopulate = Math.max(numberOfDataRows, rowsPopulationEnd);
931
+ var pushedRightDataByRows = instance.getData().slice(startRow).map(function (rowData) {
932
+ return rowData.slice(startColumn);
933
+ });
922
934
 
923
- for (c = 0, clen = input[r].length; c < repeatCol - clen; c++) {
935
+ for (r = 0; r < numberOfRowsToPopulate; r += 1) {
936
+ if (r < numberOfDataRows) {
937
+ for (c = 0, clen = input[r].length; c < columnsPopulationEnd - clen; c += 1) {
938
+ // repeating data for rows
924
939
  input[r].push(input[r][c % clen]);
925
940
  }
926
941
 
927
- input[r].unshift(start.row + r, start.col, 0);
942
+ if (r < pushedRightDataByRows.length) {
943
+ for (var i = 0; i < pushedRightDataByRows[r].length; i += 1) {
944
+ input[r].push(pushedRightDataByRows[r][i]);
945
+ }
946
+ } else {
947
+ var _input$r;
928
948
 
929
- (_instance3 = instance).spliceRow.apply(_instance3, _toConsumableArray(input[r]));
949
+ // if before data population, there was no data in the row
950
+ // we fill the required columns' newly-created cells with `null` values
951
+ (_input$r = input[r]).push.apply(_input$r, _toConsumableArray(new Array(pushedRightDataByRows[0].length).fill(null)));
952
+ }
930
953
  } else {
931
- var _instance4;
932
-
933
- input[r % rlen][0] = start.row + r;
934
-
935
- (_instance4 = instance).spliceRow.apply(_instance4, _toConsumableArray(input[r % rlen]));
954
+ // Repeating data for columns.
955
+ input.push(input[r % rlen].slice(0, numberOfRowsToPopulate).concat(pushedRightDataByRows[r]));
936
956
  }
937
957
  }
938
958
 
959
+ instance.populateFromArray(startRow, startColumn, input);
939
960
  break;
940
961
 
941
962
  case 'overwrite':
@@ -1237,10 +1258,6 @@ function Core(rootElement, userSettings) {
1237
1258
 
1238
1259
  var waitingForValidator = new ValidatorsQueue();
1239
1260
 
1240
- var isNumericData = function isNumericData(value) {
1241
- return value.length > 0 && /^\s*[+-.]?\s*(?:(?:\d+(?:(\.|,)\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/.test(value);
1242
- };
1243
-
1244
1261
  waitingForValidator.onQueueEmpty = function (isValid) {
1245
1262
  if (activeEditor && shouldBeCanceled) {
1246
1263
  activeEditor.cancelChanges();
@@ -1261,7 +1278,7 @@ function Core(rootElement, userSettings) {
1261
1278
  var col = datamap.propToCol(prop);
1262
1279
  var cellProperties = instance.getCellMeta(row, col);
1263
1280
 
1264
- if (cellProperties.type === 'numeric' && typeof newValue === 'string' && isNumericData(newValue)) {
1281
+ if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
1265
1282
  changes[i][3] = getParsedNumber(newValue);
1266
1283
  }
1267
1284
  /* eslint-disable no-loop-func */
@@ -1385,6 +1402,8 @@ function Core(rootElement, userSettings) {
1385
1402
  /**
1386
1403
  * Validate a single cell.
1387
1404
  *
1405
+ * @memberof Core#
1406
+ * @function validateCell
1388
1407
  * @param {string|number} value The value to validate.
1389
1408
  * @param {object} cellProperties The cell meta which corresponds with the value.
1390
1409
  * @param {Function} callback The callback function.
@@ -1396,9 +1415,10 @@ function Core(rootElement, userSettings) {
1396
1415
  var validator = instance.getCellValidator(cellProperties); // the `canBeValidated = false` argument suggests, that the cell passes validation by default.
1397
1416
 
1398
1417
  /**
1418
+ * @private
1419
+ * @function done
1399
1420
  * @param {boolean} valid Indicates if the validation was successful.
1400
1421
  * @param {boolean} [canBeValidated=true] Flag which controls the validation process.
1401
- * @private
1402
1422
  */
1403
1423
 
1404
1424
  function done(valid) {
@@ -1619,7 +1639,7 @@ function Core(rootElement, userSettings) {
1619
1639
  * Populate cells at position with 2D input array (e.g. `[[1, 2], [3, 4]]`). Use `endRow`, `endCol` when you
1620
1640
  * want to cut input when a certain row is reached.
1621
1641
  *
1622
- * Optional `method` argument has the same effect as pasteMode option (see {@link options#pastemode Options#pasteMode}).
1642
+ * Optional `method` argument has the same effect as pasteMode option (see {@link Options#pasteMode}).
1623
1643
  *
1624
1644
  * @memberof Core#
1625
1645
  * @function populateFromArray
@@ -1808,7 +1828,7 @@ function Core(rootElement, userSettings) {
1808
1828
  }
1809
1829
  };
1810
1830
  /**
1811
- * Checks if the table rendering process was suspended. See explanation in {@link core#suspendrender Core#suspendRender}.
1831
+ * Checks if the table rendering process was suspended. See explanation in {@link Core#suspendRender}.
1812
1832
  *
1813
1833
  * @memberof Core#
1814
1834
  * @function isRenderSuspended
@@ -1827,8 +1847,8 @@ function Core(rootElement, userSettings) {
1827
1847
  * When the table is in the suspend state, most operations will have no visual
1828
1848
  * effect until the rendering state is resumed. Resuming the state automatically
1829
1849
  * invokes the table rendering. To make sure that after executing all operations,
1830
- * the table will be rendered, it's highly recommended to use the {@link core#batchrender Core#batchRender}
1831
- * method or {@link core#batch Core#batch}, which additionally aggregates the logic execution
1850
+ * the table will be rendered, it's highly recommended to use the {@link Core#batchRender}
1851
+ * method or {@link Core#batch}, which additionally aggregates the logic execution
1832
1852
  * that happens behind the table.
1833
1853
  *
1834
1854
  * The method is intended to be used by advanced users. Suspending the rendering
@@ -1857,7 +1877,7 @@ function Core(rootElement, userSettings) {
1857
1877
  this.renderSuspendedCounter += 1;
1858
1878
  };
1859
1879
  /**
1860
- * Resumes the rendering process. In combination with the {@link core#suspendrender Core#suspendRender}
1880
+ * Resumes the rendering process. In combination with the {@link Core#suspendRender}
1861
1881
  * method it allows aggregating the table render cycles triggered by API calls or UI
1862
1882
  * actions (or both) and calls the "render" once in the end. When the table is in
1863
1883
  * the suspend state, most operations will have no visual effect until the rendering
@@ -1959,7 +1979,7 @@ function Core(rootElement, userSettings) {
1959
1979
  };
1960
1980
  /**
1961
1981
  * Checks if the table indexes recalculation process was suspended. See explanation
1962
- * in {@link core#suspendexecution Core#suspendExecution}.
1982
+ * in {@link Core#suspendExecution}.
1963
1983
  *
1964
1984
  * @memberof Core#
1965
1985
  * @function isExecutionSuspended
@@ -2001,7 +2021,7 @@ function Core(rootElement, userSettings) {
2001
2021
  this.rowIndexMapper.suspendOperations();
2002
2022
  };
2003
2023
  /**
2004
- * Resumes the execution process. In combination with the {@link core#suspendexecution Core#suspendExecution}
2024
+ * Resumes the execution process. In combination with the {@link Core#suspendExecution}
2005
2025
  * method it allows aggregating the table logic changes after which the cache is
2006
2026
  * updated. Resuming the state automatically invokes the table cache updating process.
2007
2027
  *
@@ -2012,7 +2032,7 @@ function Core(rootElement, userSettings) {
2012
2032
  * @function resumeExecution
2013
2033
  * @param {boolean} [forceFlushChanges=false] If `true`, the table internal data cache
2014
2034
  * is recalculated after the execution of the batched operations. For nested
2015
- * {@link core#batchexecution Core#batchExecution} calls, it can be desire to recalculate the table
2035
+ * {@link Core#batchExecution} calls, it can be desire to recalculate the table
2016
2036
  * after each batch.
2017
2037
  * @since 8.3.0
2018
2038
  * @example
@@ -2167,14 +2187,67 @@ function Core(rootElement, userSettings) {
2167
2187
  }, isSizeChanged);
2168
2188
  };
2169
2189
  /**
2170
- * Loads new data to Handsontable. Loading new data resets the cell meta.
2171
- * Since 8.0.0 loading new data also resets states corresponding to rows and columns
2172
- * (for example, row/column sequence, column width, row height, frozen columns etc.).
2190
+ * The `updateData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2191
+ *
2192
+ * The `updateData()` method:
2193
+ * - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2194
+ * - Keeps rows' states (e.g. row order)
2195
+ * - Keeps columns' states (e.g. column order)
2196
+ *
2197
+ * To replace Handsontable's [`data`](@/api/options.md#data) and reset states, use the [`loadData()`](#loaddata) method.
2198
+ *
2199
+ * Read more:
2200
+ * - [Binding to data &#8594;](@/guides/getting-started/binding-to-data.md)
2201
+ * - [Saving data &#8594;](@/guides/getting-started/saving-data.md)
2202
+ *
2203
+ * @memberof Core#
2204
+ * @function updateData
2205
+ * @since 11.1.0
2206
+ * @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
2207
+ * @param {string} [source] The source of the `updateData()` call
2208
+ * @fires Hooks#beforeUpdateData
2209
+ * @fires Hooks#afterUpdateData
2210
+ * @fires Hooks#afterChange
2211
+ */
2212
+
2213
+
2214
+ this.updateData = function (data, source) {
2215
+ var _this3 = this;
2216
+
2217
+ (0, _dataMap.replaceData)(data, function (newDataMap) {
2218
+ datamap = newDataMap;
2219
+ }, function (newDataMap) {
2220
+ datamap = newDataMap;
2221
+ instance.columnIndexMapper.fitToLength(_this3.getInitialColumnCount());
2222
+ instance.rowIndexMapper.fitToLength(_this3.countSourceRows());
2223
+ grid.adjustRowsAndCols();
2224
+ }, {
2225
+ hotInstance: instance,
2226
+ dataMap: datamap,
2227
+ dataSource: dataSource,
2228
+ internalSource: 'updateData',
2229
+ source: source,
2230
+ firstRun: firstRun
2231
+ });
2232
+ };
2233
+ /**
2234
+ * The `loadData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2235
+ *
2236
+ * Additionally, the `loadData()` method:
2237
+ * - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2238
+ * - Resets rows' states (e.g. row order)
2239
+ * - Resets columns' states (e.g. column order)
2240
+ *
2241
+ * To replace Handsontable's [`data`](@/api/options.md#data) without resetting states, use the [`updateData()`](#updatedata) method.
2242
+ *
2243
+ * Read more:
2244
+ * - [Binding to data &#8594;](@/guides/getting-started/binding-to-data.md)
2245
+ * - [Saving data &#8594;](@/guides/getting-started/saving-data.md)
2173
2246
  *
2174
2247
  * @memberof Core#
2175
2248
  * @function loadData
2176
- * @param {Array} data Array of arrays or array of objects containing data.
2177
- * @param {string} [source] Source of the loadData call.
2249
+ * @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
2250
+ * @param {string} [source] The source of the `loadData()` call
2178
2251
  * @fires Hooks#beforeLoadData
2179
2252
  * @fires Hooks#afterLoadData
2180
2253
  * @fires Hooks#afterChange
@@ -2182,88 +2255,34 @@ function Core(rootElement, userSettings) {
2182
2255
 
2183
2256
 
2184
2257
  this.loadData = function (data, source) {
2185
- if (Array.isArray(tableMeta.dataSchema)) {
2186
- instance.dataType = 'array';
2187
- } else if ((0, _function.isFunction)(tableMeta.dataSchema)) {
2188
- instance.dataType = 'function';
2189
- } else {
2190
- instance.dataType = 'object';
2191
- }
2192
-
2193
- if (datamap) {
2194
- datamap.destroy();
2195
- }
2196
-
2197
- data = instance.runHooks('beforeLoadData', data, firstRun, source);
2198
- datamap = new _index.DataMap(instance, data, tableMeta);
2199
-
2200
- if (_typeof(data) === 'object' && data !== null) {
2201
- if (!(data.push && data.splice)) {
2202
- // check if data is array. Must use duck-type check so Backbone Collections also pass it
2203
- // when data is not an array, attempt to make a single-row array of it
2204
- // eslint-disable-next-line no-param-reassign
2205
- data = [data];
2206
- }
2207
- } else if (data === null) {
2208
- var dataSchema = datamap.getSchema(); // eslint-disable-next-line no-param-reassign
2209
-
2210
- data = [];
2211
- var row;
2212
- var r = 0;
2213
- var rlen = 0;
2214
-
2215
- for (r = 0, rlen = tableMeta.startRows; r < rlen; r++) {
2216
- if ((instance.dataType === 'object' || instance.dataType === 'function') && tableMeta.dataSchema) {
2217
- row = (0, _object.deepClone)(dataSchema);
2218
- data.push(row);
2219
- } else if (instance.dataType === 'array') {
2220
- row = (0, _object.deepClone)(dataSchema[0]);
2221
- data.push(row);
2222
- } else {
2223
- row = [];
2224
-
2225
- for (var c = 0, clen = tableMeta.startCols; c < clen; c++) {
2226
- row.push(null);
2227
- }
2258
+ (0, _dataMap.replaceData)(data, function (newDataMap) {
2259
+ datamap = newDataMap;
2260
+ }, function () {
2261
+ metaManager.clearCellsCache();
2262
+ instance.initIndexMappers();
2263
+ grid.adjustRowsAndCols();
2228
2264
 
2229
- data.push(row);
2230
- }
2265
+ if (firstRun) {
2266
+ firstRun = [null, 'loadData'];
2231
2267
  }
2232
- } else {
2233
- throw new Error("loadData only accepts array of objects or array of arrays (".concat(_typeof(data), " given)"));
2234
- }
2235
-
2236
- if (Array.isArray(data[0])) {
2237
- instance.dataType = 'array';
2238
- }
2239
-
2240
- tableMeta.data = data;
2241
- datamap.dataSource = data;
2242
- dataSource.data = data;
2243
- dataSource.dataType = instance.dataType;
2244
- dataSource.colToProp = datamap.colToProp.bind(datamap);
2245
- dataSource.propToCol = datamap.propToCol.bind(datamap);
2246
- dataSource.countCachedColumns = datamap.countCachedColumns.bind(datamap);
2247
- metaManager.clearCellsCache();
2248
- instance.initIndexMappers();
2249
- grid.adjustRowsAndCols();
2250
- instance.runHooks('afterLoadData', data, firstRun, source);
2251
-
2252
- if (firstRun) {
2253
- firstRun = [null, 'loadData'];
2254
- } else {
2255
- instance.runHooks('afterChange', null, 'loadData');
2256
- instance.render();
2257
- }
2268
+ }, {
2269
+ hotInstance: instance,
2270
+ dataMap: datamap,
2271
+ dataSource: dataSource,
2272
+ internalSource: 'loadData',
2273
+ source: source,
2274
+ firstRun: firstRun
2275
+ });
2258
2276
  };
2259
2277
  /**
2260
- * Init index mapper which manage indexes assigned to the data.
2278
+ * Gets the initial column count, calculated based on the `columns` setting.
2261
2279
  *
2262
2280
  * @private
2281
+ * @returns {number} The calculated number of columns.
2263
2282
  */
2264
2283
 
2265
2284
 
2266
- this.initIndexMappers = function () {
2285
+ this.getInitialColumnCount = function () {
2267
2286
  var columnsSettings = tableMeta.columns;
2268
2287
  var finalNrOfColumns = 0; // We will check number of columns when the `columns` property was defined as an array. Columns option may
2269
2288
  // narrow down or expand displayed dataset in that case.
@@ -2293,13 +2312,23 @@ function Core(rootElement, userSettings) {
2293
2312
  finalNrOfColumns = this.countSourceCols();
2294
2313
  }
2295
2314
 
2296
- this.columnIndexMapper.initToLength(finalNrOfColumns);
2315
+ return finalNrOfColumns;
2316
+ };
2317
+ /**
2318
+ * Init index mapper which manage indexes assigned to the data.
2319
+ *
2320
+ * @private
2321
+ */
2322
+
2323
+
2324
+ this.initIndexMappers = function () {
2325
+ this.columnIndexMapper.initToLength(this.getInitialColumnCount());
2297
2326
  this.rowIndexMapper.initToLength(this.countSourceRows());
2298
2327
  };
2299
2328
  /**
2300
2329
  * Returns the current data object (the same one that was passed by `data` configuration option or `loadData` method,
2301
2330
  * unless some modifications have been applied (i.e. Sequence of rows/columns was changed, some row/column was skipped).
2302
- * If that's the case - use the {@link core#getsourcedata Core#getSourceData} method.).
2331
+ * If that's the case - use the {@link Core#getSourceData} method.).
2303
2332
  *
2304
2333
  * Optionally you can provide cell range by defining `row`, `column`, `row2`, `column2` to get only a fragment of table data.
2305
2334
  *
@@ -2385,7 +2414,7 @@ function Core(rootElement, userSettings) {
2385
2414
  *
2386
2415
  * @memberof Core#
2387
2416
  * @function updateSettings
2388
- * @param {object} settings New settings object (see {@link options Options}).
2417
+ * @param {object} settings New settings object (see {@link Options}).
2389
2418
  * @param {boolean} [init=false] Internally used for in initialization mode.
2390
2419
  * @example
2391
2420
  * ```js
@@ -2402,6 +2431,12 @@ function Core(rootElement, userSettings) {
2402
2431
 
2403
2432
  this.updateSettings = function (settings) {
2404
2433
  var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2434
+ // TODO: uncomment the next line with the next major version update
2435
+ // Do not forget to re-enable the pending tests that cover the change:
2436
+ // * https://github.com/handsontable/handsontable/blob/9f62c282a1c951b27cd8406aa27105bd32b05bb6/handsontable/test/e2e/core/toPhysicalColumn.spec.js#L70
2437
+ // * https://github.com/handsontable/handsontable/blob/9f62c282a1c951b27cd8406aa27105bd32b05bb6/handsontable/test/e2e/core/toVisualColumn.spec.js#L70
2438
+ // const dataUpdateFunction = (firstRun ? instance.loadData : instance.updateData).bind(this);
2439
+ var dataUpdateFunction = instance.loadData.bind(this);
2405
2440
  var columnsAsFunc = false;
2406
2441
  var i;
2407
2442
  var j;
@@ -2446,9 +2481,9 @@ function Core(rootElement, userSettings) {
2446
2481
 
2447
2482
 
2448
2483
  if (settings.data === void 0 && tableMeta.data === void 0) {
2449
- instance.loadData(null, 'updateSettings'); // data source created just now
2484
+ dataUpdateFunction(null, 'updateSettings'); // data source created just now
2450
2485
  } else if (settings.data !== void 0) {
2451
- instance.loadData(settings.data, 'updateSettings'); // data source given as option
2486
+ dataUpdateFunction(settings.data, 'updateSettings'); // data source given as option
2452
2487
  } else if (settings.columns !== void 0) {
2453
2488
  datamap.createMap(); // The `column` property has changed - dataset may be expanded or narrowed down. The `loadData` do the same.
2454
2489
 
@@ -3054,7 +3089,7 @@ function Core(rootElement, userSettings) {
3054
3089
  };
3055
3090
  /**
3056
3091
  * @description
3057
- * Returns a data type defined in the Handsontable settings under the `type` key ({@link options#type Options#type}).
3092
+ * Returns a data type defined in the Handsontable settings under the `type` key ({@link Options#type}).
3058
3093
  * If there are cells with different types in the selected range, it returns `'mixed'`.
3059
3094
  *
3060
3095
  * __Note__: If data is reordered, sorted or trimmed, the currently visible order will be used.
@@ -3070,7 +3105,7 @@ function Core(rootElement, userSettings) {
3070
3105
 
3071
3106
 
3072
3107
  this.getDataType = function (rowFrom, columnFrom, rowTo, columnTo) {
3073
- var _this3 = this;
3108
+ var _this4 = this;
3074
3109
 
3075
3110
  var coords = rowFrom === void 0 ? [0, 0, this.countRows(), this.countCols()] : [rowFrom, columnFrom, rowTo, columnTo];
3076
3111
  var rowStart = coords[0],
@@ -3092,7 +3127,7 @@ function Core(rootElement, userSettings) {
3092
3127
  (0, _number.rangeEach)(Math.max(Math.min(rowStart, rowEnd), 0), Math.max(rowStart, rowEnd), function (row) {
3093
3128
  var isTypeEqual = true;
3094
3129
  (0, _number.rangeEach)(Math.max(Math.min(columnStart, columnEnd), 0), Math.max(columnStart, columnEnd), function (column) {
3095
- var cellType = _this3.getCellMeta(row, column);
3130
+ var cellType = _this4.getCellMeta(row, column);
3096
3131
 
3097
3132
  currentType = cellType.type;
3098
3133
 
@@ -3126,7 +3161,7 @@ function Core(rootElement, userSettings) {
3126
3161
  var _ref19 = [this.toPhysicalRow(row), this.toPhysicalColumn(column)],
3127
3162
  physicalRow = _ref19[0],
3128
3163
  physicalColumn = _ref19[1];
3129
- var cachedValue = metaManager.getCellMeta(physicalRow, physicalColumn, key);
3164
+ var cachedValue = metaManager.getCellMetaKeyValue(physicalRow, physicalColumn, key);
3130
3165
  var hookResult = instance.runHooks('beforeRemoveCellMeta', row, column, key, cachedValue);
3131
3166
 
3132
3167
  if (hookResult !== false) {
@@ -3149,7 +3184,7 @@ function Core(rootElement, userSettings) {
3149
3184
 
3150
3185
 
3151
3186
  this.spliceCellsMeta = function (visualIndex) {
3152
- var _this4 = this;
3187
+ var _this5 = this;
3153
3188
 
3154
3189
  var deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
3155
3190
 
@@ -3167,12 +3202,14 @@ function Core(rootElement, userSettings) {
3167
3202
 
3168
3203
  if (cellMetaRows.length > 0) {
3169
3204
  (0, _array.arrayEach)(cellMetaRows.reverse(), function (cellMetaRow) {
3170
- metaManager.createRow(_this4.toPhysicalRow(visualIndex));
3205
+ metaManager.createRow(_this5.toPhysicalRow(visualIndex));
3171
3206
  (0, _array.arrayEach)(cellMetaRow, function (cellMeta, columnIndex) {
3172
- return _this4.setCellMetaObject(visualIndex, columnIndex, cellMeta);
3207
+ return _this5.setCellMetaObject(visualIndex, columnIndex, cellMeta);
3173
3208
  });
3174
3209
  });
3175
3210
  }
3211
+
3212
+ instance.render();
3176
3213
  };
3177
3214
  /**
3178
3215
  * Set cell meta data object defined by `prop` to the corresponding params `row` and `column`.
@@ -3186,11 +3223,11 @@ function Core(rootElement, userSettings) {
3186
3223
 
3187
3224
 
3188
3225
  this.setCellMetaObject = function (row, column, prop) {
3189
- var _this5 = this;
3226
+ var _this6 = this;
3190
3227
 
3191
3228
  if (_typeof(prop) === 'object') {
3192
3229
  (0, _object.objectEach)(prop, function (value, key) {
3193
- _this5.setCellMeta(row, column, key, value);
3230
+ _this6.setCellMeta(row, column, key, value);
3194
3231
  });
3195
3232
  }
3196
3233
  };
@@ -3266,33 +3303,10 @@ function Core(rootElement, userSettings) {
3266
3303
  physicalColumn = column;
3267
3304
  }
3268
3305
 
3269
- var prop = datamap.colToProp(column);
3270
- var cellProperties = metaManager.getCellMeta(physicalRow, physicalColumn); // TODO(perf): Add assigning this props and executing below code only once per table render cycle.
3271
-
3272
- cellProperties.row = physicalRow;
3273
- cellProperties.col = physicalColumn;
3274
- cellProperties.visualRow = row;
3275
- cellProperties.visualCol = column;
3276
- cellProperties.prop = prop;
3277
- cellProperties.instance = instance;
3278
- instance.runHooks('beforeGetCellMeta', row, column, cellProperties); // for `type` added or changed in beforeGetCellMeta
3279
-
3280
- if (instance.hasHook('beforeGetCellMeta') && (0, _object.hasOwnProperty)(cellProperties, 'type')) {
3281
- metaManager.updateCellMeta(physicalRow, physicalColumn, {
3282
- type: cellProperties.type
3283
- });
3284
- }
3285
-
3286
- if (cellProperties.cells) {
3287
- var settings = cellProperties.cells(physicalRow, physicalColumn, prop);
3288
-
3289
- if (settings) {
3290
- metaManager.updateCellMeta(physicalRow, physicalColumn, settings);
3291
- }
3292
- }
3293
-
3294
- instance.runHooks('afterGetCellMeta', row, column, cellProperties);
3295
- return cellProperties;
3306
+ return metaManager.getCellMeta(physicalRow, physicalColumn, {
3307
+ visualRow: row,
3308
+ visualColumn: column
3309
+ });
3296
3310
  };
3297
3311
  /**
3298
3312
  * Returns an array of cell meta objects for specified physical row index.
@@ -3326,7 +3340,7 @@ function Core(rootElement, userSettings) {
3326
3340
  *
3327
3341
  * @memberof Core#
3328
3342
  * @function getCellRenderer
3329
- * @param {number|object} row Visual row index or cell meta object (see {@link core#getcellmeta Core#getCellMeta}).
3343
+ * @param {number|object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3330
3344
  * @param {number} column Visual column index.
3331
3345
  * @returns {Function} The renderer function.
3332
3346
  * @example
@@ -3346,7 +3360,7 @@ function Core(rootElement, userSettings) {
3346
3360
  *
3347
3361
  * @memberof Core#
3348
3362
  * @function getCellEditor
3349
- * @param {number} row Visual row index or cell meta object (see {@link core#getcellmeta Core#getCellMeta}).
3363
+ * @param {number} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3350
3364
  * @param {number} column Visual column index.
3351
3365
  * @returns {Function} The editor class.
3352
3366
  * @example
@@ -3366,7 +3380,7 @@ function Core(rootElement, userSettings) {
3366
3380
  *
3367
3381
  * @memberof Core#
3368
3382
  * @function getCellValidator
3369
- * @param {number|object} row Visual row index or cell meta object (see {@link core#getcellmeta Core#getCellMeta}).
3383
+ * @param {number|object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).
3370
3384
  * @param {number} column Visual column index.
3371
3385
  * @returns {Function|RegExp|undefined} The validator function.
3372
3386
  * @example
@@ -3766,6 +3780,8 @@ function Core(rootElement, userSettings) {
3766
3780
  /**
3767
3781
  * Returns the row height.
3768
3782
  *
3783
+ * Mind that this method is different from the [AutoRowSize](@/api/autoRowSize.md) plugin's [`getRowHeight()`](@/api/autoRowSize.md#getrowheight) method.
3784
+ *
3769
3785
  * @memberof Core#
3770
3786
  * @function getRowHeight
3771
3787
  * @param {number} row Visual row index.
@@ -4364,7 +4380,7 @@ function Core(rootElement, userSettings) {
4364
4380
  * @memberof Core#
4365
4381
  * @function addHook
4366
4382
  * @see Hooks#add
4367
- * @param {string} key Hook name (see {@link hooks Hooks}).
4383
+ * @param {string} key Hook name (see {@link Hooks}).
4368
4384
  * @param {Function|Array} callback Function or array of functions.
4369
4385
  * @example
4370
4386
  * ```js
@@ -4378,7 +4394,7 @@ function Core(rootElement, userSettings) {
4378
4394
  };
4379
4395
  /**
4380
4396
  * Check if for a specified hook name there are added listeners (only for this Handsontable instance). All available
4381
- * hooks you will find {@link hooks Hooks}.
4397
+ * hooks you will find {@link Hooks}.
4382
4398
  *
4383
4399
  * @memberof Core#
4384
4400
  * @function hasHook
@@ -4403,7 +4419,7 @@ function Core(rootElement, userSettings) {
4403
4419
  * @memberof Core#
4404
4420
  * @function addHookOnce
4405
4421
  * @see Hooks#once
4406
- * @param {string} key Hook name (see {@link hooks Hooks}).
4422
+ * @param {string} key Hook name (see {@link Hooks}).
4407
4423
  * @param {Function|Array} callback Function or array of functions.
4408
4424
  * @example
4409
4425
  * ```js
@@ -4416,13 +4432,13 @@ function Core(rootElement, userSettings) {
4416
4432
  _pluginHooks.default.getSingleton().once(key, callback, instance);
4417
4433
  };
4418
4434
  /**
4419
- * Removes the hook listener previously registered with {@link core#addhook Core#addHook}.
4435
+ * Removes the hook listener previously registered with {@link Core#addHook}.
4420
4436
  *
4421
4437
  * @memberof Core#
4422
4438
  * @function removeHook
4423
4439
  * @see Hooks#remove
4424
4440
  * @param {string} key Hook name.
4425
- * @param {Function} callback Reference to the function which has been registered using {@link core#addhook Core#addHook}.
4441
+ * @param {Function} callback Reference to the function which has been registered using {@link Core#addHook}.
4426
4442
  *
4427
4443
  * @example
4428
4444
  * ```js
@@ -4582,6 +4598,45 @@ function Core(rootElement, userSettings) {
4582
4598
  editorManager.prepareEditor();
4583
4599
  }
4584
4600
  };
4601
+ /**
4602
+ * Check if currently it is RTL direction.
4603
+ *
4604
+ * @private
4605
+ * @memberof Core#
4606
+ * @function isRtl
4607
+ * @returns {boolean} True if RTL.
4608
+ */
4609
+
4610
+
4611
+ this.isRtl = function () {
4612
+ return instance.rootWindow.getComputedStyle(instance.rootElement).direction === 'rtl';
4613
+ };
4614
+ /**
4615
+ * Check if currently it is LTR direction.
4616
+ *
4617
+ * @private
4618
+ * @memberof Core#
4619
+ * @function isLtr
4620
+ * @returns {boolean} True if LTR.
4621
+ */
4622
+
4623
+
4624
+ this.isLtr = function () {
4625
+ return !instance.isRtl();
4626
+ };
4627
+ /**
4628
+ * Returns 1 for LTR; -1 for RTL. Useful for calculations.
4629
+ *
4630
+ * @private
4631
+ * @memberof Core#
4632
+ * @function getDirectionFactor
4633
+ * @returns {number} Returns 1 for LTR; -1 for RTL.
4634
+ */
4635
+
4636
+
4637
+ this.getDirectionFactor = function () {
4638
+ return instance.isLtr() ? 1 : -1;
4639
+ };
4585
4640
 
4586
4641
  (0, _registry.getPluginsNames)().forEach(function (pluginName) {
4587
4642
  var PluginClass = (0, _registry.getPlugin)(pluginName);