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.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);