handsontable 14.6.1 → 15.0.0-next-4472a60-20241203

Sign up to get free protection for your applications and to get access to all the features.
Files changed (392) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
  5. package/3rdparty/walkontable/src/calculator/index.js +1 -2
  6. package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
  7. package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
  8. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  11. package/3rdparty/walkontable/src/core/_base.js +29 -23
  12. package/3rdparty/walkontable/src/core/_base.mjs +29 -23
  13. package/3rdparty/walkontable/src/core/clone.js +1 -0
  14. package/3rdparty/walkontable/src/core/clone.mjs +1 -0
  15. package/3rdparty/walkontable/src/core/core.js +2 -0
  16. package/3rdparty/walkontable/src/core/core.mjs +2 -0
  17. package/3rdparty/walkontable/src/facade/core.js +12 -6
  18. package/3rdparty/walkontable/src/facade/core.mjs +12 -6
  19. package/3rdparty/walkontable/src/index.js +0 -1
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +8 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
  23. package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
  24. package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
  25. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  26. package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
  27. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
  28. package/3rdparty/walkontable/src/overlay/top.js +9 -8
  29. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  30. package/3rdparty/walkontable/src/overlays.js +10 -26
  31. package/3rdparty/walkontable/src/overlays.mjs +10 -26
  32. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  33. package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
  34. package/3rdparty/walkontable/src/renderer/index.js +4 -2
  35. package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
  36. package/3rdparty/walkontable/src/renderer/table.js +13 -4
  37. package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
  38. package/3rdparty/walkontable/src/scroll.js +46 -37
  39. package/3rdparty/walkontable/src/scroll.mjs +46 -37
  40. package/3rdparty/walkontable/src/selection/border/border.js +52 -58
  41. package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
  42. package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
  43. package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
  44. package/3rdparty/walkontable/src/selection/index.js +6 -4
  45. package/3rdparty/walkontable/src/selection/index.mjs +1 -1
  46. package/3rdparty/walkontable/src/selection/manager.js +3 -0
  47. package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
  48. package/3rdparty/walkontable/src/selection/scanner.js +46 -11
  49. package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
  50. package/3rdparty/walkontable/src/settings.js +8 -9
  51. package/3rdparty/walkontable/src/settings.mjs +8 -9
  52. package/3rdparty/walkontable/src/table/master.js +1 -1
  53. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  54. package/3rdparty/walkontable/src/table.js +25 -36
  55. package/3rdparty/walkontable/src/table.mjs +25 -36
  56. package/3rdparty/walkontable/src/types.js +1 -0
  57. package/3rdparty/walkontable/src/types.mjs +1 -0
  58. package/3rdparty/walkontable/src/utils/column.js +1 -43
  59. package/3rdparty/walkontable/src/utils/column.mjs +1 -43
  60. package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
  61. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
  62. package/3rdparty/walkontable/src/viewport.js +94 -91
  63. package/3rdparty/walkontable/src/viewport.mjs +95 -92
  64. package/CHANGELOG.md +36 -0
  65. package/README.md +1 -1
  66. package/base.js +4 -4
  67. package/base.mjs +3 -3
  68. package/core/focusCatcher/focusDetector.js +1 -0
  69. package/core/focusCatcher/focusDetector.mjs +1 -0
  70. package/core/hooks/bucket.js +184 -0
  71. package/core/hooks/bucket.mjs +180 -0
  72. package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
  73. package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
  74. package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
  75. package/core/hooks/index.js +385 -0
  76. package/core/hooks/index.mjs +381 -0
  77. package/core/index.js +2 -0
  78. package/core.d.ts +5 -3
  79. package/core.js +77 -35
  80. package/core.mjs +69 -27
  81. package/dataMap/dataMap.js +3 -0
  82. package/dataMap/dataMap.mjs +3 -0
  83. package/dataMap/dataSource.js +2 -0
  84. package/dataMap/dataSource.mjs +2 -0
  85. package/dataMap/metaManager/index.js +2 -0
  86. package/dataMap/metaManager/index.mjs +2 -0
  87. package/dataMap/metaManager/metaSchema.js +91 -5
  88. package/dataMap/metaManager/metaSchema.mjs +91 -5
  89. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
  90. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  91. package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
  92. package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
  93. package/dist/handsontable.css +84 -72
  94. package/dist/handsontable.full.css +317 -304
  95. package/dist/handsontable.full.js +14826 -7294
  96. package/dist/handsontable.full.min.css +15 -10
  97. package/dist/handsontable.full.min.js +262 -69
  98. package/dist/handsontable.js +7826 -5552
  99. package/dist/handsontable.min.css +10 -6
  100. package/dist/handsontable.min.js +33 -33
  101. package/dist/languages/all.js +1 -1
  102. package/dist/languages/ar-AR.js +1 -1
  103. package/dist/languages/cs-CZ.js +1 -1
  104. package/dist/languages/de-CH.js +1 -1
  105. package/dist/languages/de-DE.js +1 -1
  106. package/dist/languages/en-US.js +1 -1
  107. package/dist/languages/es-MX.js +1 -1
  108. package/dist/languages/fr-FR.js +1 -1
  109. package/dist/languages/hr-HR.js +1 -1
  110. package/dist/languages/it-IT.js +1 -1
  111. package/dist/languages/ja-JP.js +1 -1
  112. package/dist/languages/ko-KR.js +1 -1
  113. package/dist/languages/lv-LV.js +1 -1
  114. package/dist/languages/nb-NO.js +1 -1
  115. package/dist/languages/nl-NL.js +1 -1
  116. package/dist/languages/pl-PL.js +1 -1
  117. package/dist/languages/pt-BR.js +1 -1
  118. package/dist/languages/ru-RU.js +1 -1
  119. package/dist/languages/sr-SP.js +1 -1
  120. package/dist/languages/zh-CN.js +1 -1
  121. package/dist/languages/zh-TW.js +1 -1
  122. package/editorManager.js +2 -2
  123. package/editorManager.mjs +2 -2
  124. package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
  125. package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
  126. package/editors/baseEditor/baseEditor.js +25 -18
  127. package/editors/baseEditor/baseEditor.mjs +26 -19
  128. package/editors/dateEditor/dateEditor.js +9 -0
  129. package/editors/dateEditor/dateEditor.mjs +10 -1
  130. package/editors/dropdownEditor/dropdownEditor.js +4 -3
  131. package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
  132. package/editors/handsontableEditor/handsontableEditor.js +36 -2
  133. package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
  134. package/editors/passwordEditor/passwordEditor.js +18 -0
  135. package/editors/passwordEditor/passwordEditor.mjs +18 -0
  136. package/editors/registry.js +2 -2
  137. package/editors/registry.mjs +1 -1
  138. package/editors/selectEditor/selectEditor.js +20 -9
  139. package/editors/selectEditor/selectEditor.mjs +20 -9
  140. package/editors/textEditor/textEditor.js +5 -12
  141. package/editors/textEditor/textEditor.mjs +6 -13
  142. package/focusManager.js +5 -7
  143. package/focusManager.mjs +5 -7
  144. package/helpers/array.js +2 -0
  145. package/helpers/array.mjs +2 -0
  146. package/helpers/data.js +3 -0
  147. package/helpers/data.mjs +3 -0
  148. package/helpers/dom/element.js +39 -18
  149. package/helpers/dom/element.mjs +38 -17
  150. package/helpers/mixed.js +3 -3
  151. package/helpers/mixed.mjs +3 -3
  152. package/helpers/moves.js +3 -0
  153. package/helpers/moves.mjs +3 -0
  154. package/helpers/number.js +1 -0
  155. package/helpers/number.mjs +1 -0
  156. package/helpers/object.js +2 -0
  157. package/helpers/object.mjs +2 -0
  158. package/helpers/themes.js +17 -0
  159. package/helpers/themes.mjs +13 -0
  160. package/i18n/index.js +2 -0
  161. package/i18n/languages/index.d.ts +8 -0
  162. package/i18n/languages/ja-JP.d.ts +1 -1
  163. package/i18n/phraseFormatters/substituteVariables.js +1 -0
  164. package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
  165. package/index.d.ts +9 -1
  166. package/languages/all.js +1 -1
  167. package/languages/ar-AR.js +1 -1
  168. package/languages/cs-CZ.js +1 -1
  169. package/languages/de-CH.js +1 -1
  170. package/languages/de-DE.js +1 -1
  171. package/languages/en-US.js +1 -1
  172. package/languages/es-MX.js +1 -1
  173. package/languages/fr-FR.js +1 -1
  174. package/languages/hr-HR.js +1 -1
  175. package/languages/index.js +1 -1
  176. package/languages/it-IT.js +1 -1
  177. package/languages/ja-JP.js +1 -1
  178. package/languages/ko-KR.js +1 -1
  179. package/languages/lv-LV.js +1 -1
  180. package/languages/nb-NO.js +1 -1
  181. package/languages/nl-NL.js +1 -1
  182. package/languages/pl-PL.js +1 -1
  183. package/languages/pt-BR.js +1 -1
  184. package/languages/ru-RU.js +1 -1
  185. package/languages/sr-SP.js +1 -1
  186. package/languages/zh-CN.js +1 -1
  187. package/languages/zh-TW.js +1 -1
  188. package/package.json +22 -7
  189. package/plugins/autoColumnSize/autoColumnSize.js +22 -27
  190. package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
  191. package/plugins/autoRowSize/autoRowSize.js +20 -22
  192. package/plugins/autoRowSize/autoRowSize.mjs +21 -23
  193. package/plugins/autofill/autofill.js +4 -5
  194. package/plugins/autofill/autofill.mjs +1 -1
  195. package/plugins/base/base.d.ts +1 -1
  196. package/plugins/base/base.js +41 -0
  197. package/plugins/base/base.mjs +42 -1
  198. package/plugins/base/index.js +2 -1
  199. package/plugins/base/index.mjs +1 -1
  200. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
  201. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
  202. package/plugins/columnSorting/columnSorting.js +5 -4
  203. package/plugins/columnSorting/columnSorting.mjs +3 -1
  204. package/plugins/columnSorting/columnStatesManager.js +1 -0
  205. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  206. package/plugins/columnSorting/utils.js +3 -0
  207. package/plugins/columnSorting/utils.mjs +3 -0
  208. package/plugins/columnSummary/endpoints.js +3 -0
  209. package/plugins/columnSummary/endpoints.mjs +3 -0
  210. package/plugins/comments/commentEditor.js +9 -0
  211. package/plugins/comments/commentEditor.mjs +9 -0
  212. package/plugins/comments/comments.js +24 -18
  213. package/plugins/comments/comments.mjs +26 -20
  214. package/plugins/comments/editorResizeObserver.js +2 -0
  215. package/plugins/comments/editorResizeObserver.mjs +2 -0
  216. package/plugins/contextMenu/contextMenu.d.ts +2 -1
  217. package/plugins/contextMenu/contextMenu.js +6 -7
  218. package/plugins/contextMenu/contextMenu.mjs +1 -1
  219. package/plugins/contextMenu/menu/index.js +2 -0
  220. package/plugins/contextMenu/menu/menu.js +10 -5
  221. package/plugins/contextMenu/menu/menu.mjs +11 -6
  222. package/plugins/contextMenu/menu/positioner.js +4 -2
  223. package/plugins/contextMenu/menu/positioner.mjs +4 -2
  224. package/plugins/contextMenu/menu/shortcuts.js +3 -1
  225. package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
  226. package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
  227. package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
  228. package/plugins/contextMenu/utils.js +0 -10
  229. package/plugins/contextMenu/utils.mjs +0 -9
  230. package/plugins/copyPaste/copyPaste.d.ts +1 -0
  231. package/plugins/copyPaste/copyPaste.js +32 -23
  232. package/plugins/copyPaste/copyPaste.mjs +24 -15
  233. package/plugins/customBorders/utils.js +2 -0
  234. package/plugins/customBorders/utils.mjs +2 -0
  235. package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
  236. package/plugins/dropdownMenu/dropdownMenu.js +6 -7
  237. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
  238. package/plugins/exportFile/types/csv.js +1 -0
  239. package/plugins/exportFile/types/csv.mjs +1 -0
  240. package/plugins/filters/component/condition.js +2 -0
  241. package/plugins/filters/component/condition.mjs +2 -0
  242. package/plugins/filters/component/operators.js +2 -0
  243. package/plugins/filters/component/operators.mjs +2 -0
  244. package/plugins/filters/component/value.js +3 -0
  245. package/plugins/filters/component/value.mjs +3 -0
  246. package/plugins/filters/conditionCollection.js +3 -0
  247. package/plugins/filters/conditionCollection.mjs +3 -0
  248. package/plugins/filters/conditionUpdateObserver.js +2 -0
  249. package/plugins/filters/conditionUpdateObserver.mjs +2 -0
  250. package/plugins/filters/filters.js +43 -13
  251. package/plugins/filters/filters.mjs +43 -13
  252. package/plugins/filters/logicalOperations/conjunction.js +2 -0
  253. package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
  254. package/plugins/filters/logicalOperations/disjunction.js +2 -0
  255. package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
  256. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
  257. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
  258. package/plugins/filters/menu/focusController.js +38 -14
  259. package/plugins/filters/menu/focusController.mjs +38 -14
  260. package/plugins/filters/ui/multipleSelect.js +10 -0
  261. package/plugins/filters/ui/multipleSelect.mjs +10 -0
  262. package/plugins/formulas/engine/register.js +3 -0
  263. package/plugins/formulas/engine/register.mjs +3 -0
  264. package/plugins/formulas/engine/settings.js +3 -0
  265. package/plugins/formulas/engine/settings.mjs +3 -0
  266. package/plugins/formulas/formulas.js +12 -7
  267. package/plugins/formulas/formulas.mjs +6 -1
  268. package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
  269. package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
  270. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
  271. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
  272. package/plugins/hiddenColumns/hiddenColumns.js +22 -30
  273. package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
  274. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
  275. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
  276. package/plugins/hiddenRows/hiddenRows.js +21 -29
  277. package/plugins/hiddenRows/hiddenRows.mjs +17 -25
  278. package/plugins/index.d.ts +3 -0
  279. package/plugins/index.js +3 -0
  280. package/plugins/index.mjs +3 -1
  281. package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
  282. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
  283. package/plugins/manualColumnMove/manualColumnMove.js +6 -6
  284. package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
  285. package/plugins/manualColumnResize/manualColumnResize.js +26 -12
  286. package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
  287. package/plugins/manualRowMove/manualRowMove.js +8 -6
  288. package/plugins/manualRowMove/manualRowMove.mjs +6 -4
  289. package/plugins/manualRowResize/manualRowResize.js +3 -2
  290. package/plugins/manualRowResize/manualRowResize.mjs +4 -3
  291. package/plugins/mergeCells/cellsCollection.js +19 -3
  292. package/plugins/mergeCells/cellsCollection.mjs +20 -4
  293. package/plugins/mergeCells/mergeCells.d.ts +6 -2
  294. package/plugins/mergeCells/mergeCells.js +84 -56
  295. package/plugins/mergeCells/mergeCells.mjs +82 -54
  296. package/plugins/mergeCells/renderer.js +13 -3
  297. package/plugins/mergeCells/renderer.mjs +13 -3
  298. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  299. package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
  300. package/plugins/nestedHeaders/nestedHeaders.js +63 -16
  301. package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
  302. package/plugins/nestedHeaders/stateManager/index.js +1 -0
  303. package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
  304. package/plugins/nestedRows/nestedRows.js +3 -0
  305. package/plugins/nestedRows/nestedRows.mjs +3 -0
  306. package/plugins/nestedRows/ui/headers.js +7 -1
  307. package/plugins/nestedRows/ui/headers.mjs +7 -1
  308. package/plugins/nestedRows/utils/rowMoveController.js +4 -0
  309. package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
  310. package/plugins/persistentState/persistentState.js +4 -4
  311. package/plugins/persistentState/persistentState.mjs +1 -1
  312. package/plugins/stretchColumns/calculator.js +162 -0
  313. package/plugins/stretchColumns/calculator.mjs +158 -0
  314. package/plugins/stretchColumns/index.d.ts +1 -0
  315. package/plugins/stretchColumns/index.js +7 -0
  316. package/plugins/stretchColumns/index.mjs +1 -0
  317. package/plugins/stretchColumns/strategies/_base.js +85 -0
  318. package/plugins/stretchColumns/strategies/_base.mjs +81 -0
  319. package/plugins/stretchColumns/strategies/all.js +71 -0
  320. package/plugins/stretchColumns/strategies/all.mjs +67 -0
  321. package/plugins/stretchColumns/strategies/last.js +79 -0
  322. package/plugins/stretchColumns/strategies/last.mjs +75 -0
  323. package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
  324. package/plugins/stretchColumns/stretchColumns.js +222 -0
  325. package/plugins/stretchColumns/stretchColumns.mjs +218 -0
  326. package/plugins/trimRows/trimRows.js +2 -0
  327. package/plugins/trimRows/trimRows.mjs +2 -0
  328. package/plugins/undoRedo/undoRedo.js +9 -5
  329. package/plugins/undoRedo/undoRedo.mjs +8 -3
  330. package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
  331. package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
  332. package/selection/index.js +2 -0
  333. package/selection/range.js +2 -0
  334. package/selection/range.mjs +2 -0
  335. package/selection/selection.js +7 -2
  336. package/selection/selection.mjs +7 -2
  337. package/selection/utils.js +2 -0
  338. package/selection/utils.mjs +2 -0
  339. package/settings.d.ts +4 -1
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
  342. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
  343. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
  344. package/shortcutContexts/commands/index.js +2 -0
  345. package/shortcutContexts/commands/index.mjs +2 -0
  346. package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
  347. package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
  348. package/shortcutContexts/index.js +2 -0
  349. package/shortcutContexts/index.mjs +2 -0
  350. package/shortcuts/context.js +3 -0
  351. package/shortcuts/context.mjs +3 -0
  352. package/shortcuts/recorder.js +3 -3
  353. package/shortcuts/recorder.mjs +3 -3
  354. package/shortcuts/utils.js +1 -0
  355. package/shortcuts/utils.mjs +1 -0
  356. package/styles/handsontable.css +2307 -0
  357. package/styles/handsontable.min.css +30 -0
  358. package/styles/ht-theme-horizon.css +607 -0
  359. package/styles/ht-theme-horizon.min.css +30 -0
  360. package/styles/ht-theme-main.css +613 -0
  361. package/styles/ht-theme-main.min.css +30 -0
  362. package/tableView.js +205 -33
  363. package/tableView.mjs +206 -34
  364. package/translations/changesObservable/observable.js +2 -0
  365. package/translations/changesObservable/observable.mjs +2 -0
  366. package/translations/index.js +2 -0
  367. package/translations/indexMapper.js +4 -0
  368. package/translations/indexMapper.mjs +4 -0
  369. package/translations/mapCollections/index.js +2 -0
  370. package/translations/mapCollections/mapCollection.js +2 -0
  371. package/translations/mapCollections/mapCollection.mjs +2 -0
  372. package/translations/maps/index.js +2 -0
  373. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  374. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  375. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  376. package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
  377. package/translations/maps/utils/physicallyIndexed.js +1 -0
  378. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  379. package/utils/autoResize.js +11 -3
  380. package/utils/autoResize.mjs +11 -3
  381. package/utils/dataStructures/priorityMap.js +1 -0
  382. package/utils/dataStructures/priorityMap.mjs +1 -0
  383. package/utils/dataStructures/uniqueMap.js +2 -0
  384. package/utils/dataStructures/uniqueMap.mjs +2 -0
  385. package/utils/ghostTable.js +7 -3
  386. package/utils/ghostTable.mjs +7 -3
  387. package/utils/parseTable.js +4 -0
  388. package/utils/parseTable.mjs +4 -0
  389. package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
  390. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  391. package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
  392. package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
@@ -1,5 +1,7 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.some.js";
3
5
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
6
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
5
7
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -7,7 +9,7 @@ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a),
7
9
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
8
10
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
9
11
  import { BasePlugin } from "../base/index.mjs";
10
- import Hooks from "../../pluginHooks.mjs";
12
+ import { Hooks } from "../../core/hooks/index.mjs";
11
13
  import { arrayReduce } from "../../helpers/array.mjs";
12
14
  import { addClass, removeClass, offset, getTrimmingContainer } from "../../helpers/dom/element.mjs";
13
15
  import { rangeEach } from "../../helpers/number.mjs";
@@ -313,7 +315,7 @@ export class ManualRowMove extends BasePlugin {
313
315
  for (let visualRowIndex = fromRow; visualRowIndex <= toRow; visualRowIndex++) {
314
316
  const renderableIndex = rowMapper.getRenderableFromVisualIndex(visualRowIndex);
315
317
  if (renderableIndex !== null) {
316
- rowsHeight += this.hot.view._wt.wtTable.getRowHeight(renderableIndex) || 23;
318
+ rowsHeight += this.hot.view._wt.wtTable.getRowHeight(renderableIndex) || this.hot.view.getDefaultRowHeight();
317
319
  }
318
320
  }
319
321
  return rowsHeight;
@@ -413,8 +415,8 @@ export class ManualRowMove extends BasePlugin {
413
415
  */
414
416
  refreshPositions() {
415
417
  const coords = _classPrivateFieldGet(_target, this).coords;
416
- const firstVisible = this.hot.view.getFirstFullyVisibleRow();
417
- const lastVisible = this.hot.view.getLastFullyVisibleRow();
418
+ const firstVisible = this.hot.getFirstFullyVisibleRow();
419
+ const lastVisible = this.hot.getLastFullyVisibleRow();
418
420
  const countRows = this.hot.countRows();
419
421
  if (this.isFixedRowTop(coords.row) && firstVisible > 0) {
420
422
  this.hot.scrollViewportTo(this.hot.rowIndexMapper.getNearestNotHiddenIndex(firstVisible - 1, -1));
@@ -3,12 +3,13 @@
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.for-each.js");
6
8
  var _base = require("../base");
7
9
  var _element = require("../../helpers/dom/element");
8
10
  var _array = require("../../helpers/array");
9
11
  var _number = require("../../helpers/number");
10
12
  var _translations = require("../../translations");
11
- var _src = require("../../3rdparty/walkontable/src");
12
13
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
13
14
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
14
15
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -227,7 +228,7 @@ class ManualRowResize extends _base.BasePlugin {
227
228
  */
228
229
  setManualSize(row, height) {
229
230
  const physicalRow = this.hot.toPhysicalRow(row);
230
- const newHeight = Math.max(height, _src.DEFAULT_ROW_HEIGHT);
231
+ const newHeight = Math.max(height, this.hot.view.getDefaultRowHeight());
231
232
  _classPrivateFieldGet(_rowHeightsMap, this).setValueAtIndex(physicalRow, newHeight);
232
233
  return newHeight;
233
234
  }
@@ -1,5 +1,7 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.for-each.js";
3
5
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
6
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
5
7
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -10,8 +12,7 @@ import { BasePlugin } from "../base/index.mjs";
10
12
  import { addClass, closest, hasClass, removeClass, outerWidth, isDetached } from "../../helpers/dom/element.mjs";
11
13
  import { arrayEach } from "../../helpers/array.mjs";
12
14
  import { rangeEach } from "../../helpers/number.mjs";
13
- import { PhysicalIndexToValueMap as IndexToValueMap } from "../../translations/index.mjs";
14
- import { DEFAULT_ROW_HEIGHT } from "../../3rdparty/walkontable/src/index.mjs"; // Developer note! Whenever you make a change in this file, make an analogous change in manualColumnResize.js
15
+ import { PhysicalIndexToValueMap as IndexToValueMap } from "../../translations/index.mjs"; // Developer note! Whenever you make a change in this file, make an analogous change in manualColumnResize.js
15
16
  export const PLUGIN_KEY = 'manualRowResize';
16
17
  export const PLUGIN_PRIORITY = 30;
17
18
  const PERSISTENT_STATE_KEY = 'manualRowHeights';
@@ -222,7 +223,7 @@ export class ManualRowResize extends BasePlugin {
222
223
  */
223
224
  setManualSize(row, height) {
224
225
  const physicalRow = this.hot.toPhysicalRow(row);
225
- const newHeight = Math.max(height, DEFAULT_ROW_HEIGHT);
226
+ const newHeight = Math.max(height, this.hot.view.getDefaultRowHeight());
226
227
  _classPrivateFieldGet(_rowHeightsMap, this).setValueAtIndex(physicalRow, newHeight);
227
228
  return newHeight;
228
229
  }
@@ -11,6 +11,10 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
11
11
  require("core-js/modules/es.set.is-superset-of.v2.js");
12
12
  require("core-js/modules/es.set.symmetric-difference.v2.js");
13
13
  require("core-js/modules/es.set.union.v2.js");
14
+ require("core-js/modules/esnext.iterator.constructor.js");
15
+ require("core-js/modules/esnext.iterator.filter.js");
16
+ require("core-js/modules/esnext.iterator.flat-map.js");
17
+ require("core-js/modules/esnext.iterator.for-each.js");
14
18
  var _cellCoords = _interopRequireDefault(require("./cellCoords"));
15
19
  var _number = require("../../helpers/number");
16
20
  var _console = require("../../helpers/console");
@@ -302,9 +306,21 @@ class MergedCellsCollection {
302
306
  */
303
307
  isFirstRenderableMergedCell(row, column) {
304
308
  const mergeParent = this.get(row, column);
305
-
306
- // Return if row and column indexes are within merge area and if they are first rendered indexes within the area.
307
- return mergeParent && this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1) === column;
309
+ if (!mergeParent) {
310
+ return false;
311
+ }
312
+ const {
313
+ row: mergeRow,
314
+ col: mergeColumn,
315
+ rowspan,
316
+ colspan
317
+ } = mergeParent;
318
+ const overlayName = this.hot.view.getActiveOverlayName();
319
+ const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
320
+ const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
321
+ const mergeCellsTopRow = (0, _number.clamp)(firstRenderedRow, mergeRow, mergeRow + rowspan - 1);
322
+ const mergeCellsStartColumn = (0, _number.clamp)(firstRenderedColumn, mergeColumn, mergeColumn + colspan - 1);
323
+ return this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeCellsTopRow, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeCellsStartColumn, 1) === column;
308
324
  }
309
325
 
310
326
  /**
@@ -8,6 +8,10 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
8
8
  import "core-js/modules/es.set.is-superset-of.v2.js";
9
9
  import "core-js/modules/es.set.symmetric-difference.v2.js";
10
10
  import "core-js/modules/es.set.union.v2.js";
11
+ import "core-js/modules/esnext.iterator.constructor.js";
12
+ import "core-js/modules/esnext.iterator.filter.js";
13
+ import "core-js/modules/esnext.iterator.flat-map.js";
14
+ import "core-js/modules/esnext.iterator.for-each.js";
11
15
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
12
16
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
13
17
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -15,7 +19,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
15
19
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
20
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
17
21
  import MergedCellCoords from "./cellCoords.mjs";
18
- import { rangeEach } from "../../helpers/number.mjs";
22
+ import { rangeEach, clamp } from "../../helpers/number.mjs";
19
23
  import { warn } from "../../helpers/console.mjs";
20
24
  import { arrayEach } from "../../helpers/array.mjs";
21
25
  import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
@@ -298,9 +302,21 @@ class MergedCellsCollection {
298
302
  */
299
303
  isFirstRenderableMergedCell(row, column) {
300
304
  const mergeParent = this.get(row, column);
301
-
302
- // Return if row and column indexes are within merge area and if they are first rendered indexes within the area.
303
- return mergeParent && this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeParent.row, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeParent.col, 1) === column;
305
+ if (!mergeParent) {
306
+ return false;
307
+ }
308
+ const {
309
+ row: mergeRow,
310
+ col: mergeColumn,
311
+ rowspan,
312
+ colspan
313
+ } = mergeParent;
314
+ const overlayName = this.hot.view.getActiveOverlayName();
315
+ const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
316
+ const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
317
+ const mergeCellsTopRow = clamp(firstRenderedRow, mergeRow, mergeRow + rowspan - 1);
318
+ const mergeCellsStartColumn = clamp(firstRenderedColumn, mergeColumn, mergeColumn + colspan - 1);
319
+ return this.hot.rowIndexMapper.getNearestNotHiddenIndex(mergeCellsTopRow, 1) === row && this.hot.columnIndexMapper.getNearestNotHiddenIndex(mergeCellsStartColumn, 1) === column;
304
320
  }
305
321
 
306
322
  /**
@@ -2,14 +2,18 @@ import Core from '../../core';
2
2
  import { BasePlugin } from '../base';
3
3
  import CellRange from '../../3rdparty/walkontable/src/cell/range';
4
4
 
5
- export interface DetailedSettings {
5
+ export interface MergeCellsSettings {
6
6
  row: number;
7
7
  col: number;
8
8
  rowspan: number;
9
9
  colspan: number;
10
10
  }
11
+ export interface DetailedSettings {
12
+ virtualized: boolean;
13
+ cells: MergeCellsSettings[];
14
+ }
11
15
 
12
- export type Settings = boolean | DetailedSettings[];
16
+ export type Settings = boolean | MergeCellsSettings[] | DetailedSettings;
13
17
 
14
18
  export class MergeCells extends BasePlugin {
15
19
  constructor(hotInstance: Core);
@@ -10,8 +10,13 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
10
10
  require("core-js/modules/es.set.is-superset-of.v2.js");
11
11
  require("core-js/modules/es.set.symmetric-difference.v2.js");
12
12
  require("core-js/modules/es.set.union.v2.js");
13
+ require("core-js/modules/esnext.iterator.constructor.js");
14
+ require("core-js/modules/esnext.iterator.filter.js");
15
+ require("core-js/modules/esnext.iterator.for-each.js");
16
+ require("core-js/modules/esnext.iterator.map.js");
17
+ require("core-js/modules/esnext.iterator.reduce.js");
13
18
  var _base = require("../base");
14
- var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
19
+ var _hooks = require("../../core/hooks");
15
20
  var _cellsCollection = _interopRequireDefault(require("./cellsCollection"));
16
21
  var _cellCoords = _interopRequireDefault(require("./cellCoords"));
17
22
  var _autofill = _interopRequireDefault(require("./calculations/autofill"));
@@ -35,10 +40,10 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
35
40
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
36
41
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
37
42
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
38
- _pluginHooks.default.getSingleton().register('beforeMergeCells');
39
- _pluginHooks.default.getSingleton().register('afterMergeCells');
40
- _pluginHooks.default.getSingleton().register('beforeUnmergeCells');
41
- _pluginHooks.default.getSingleton().register('afterUnmergeCells');
43
+ _hooks.Hooks.getSingleton().register('beforeMergeCells');
44
+ _hooks.Hooks.getSingleton().register('afterMergeCells');
45
+ _hooks.Hooks.getSingleton().register('beforeUnmergeCells');
46
+ _hooks.Hooks.getSingleton().register('afterUnmergeCells');
42
47
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'mergeCells';
43
48
  const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 150;
44
49
  const SHORTCUTS_GROUP = PLUGIN_KEY;
@@ -153,6 +158,13 @@ class MergeCells extends _base.BasePlugin {
153
158
  static get PLUGIN_PRIORITY() {
154
159
  return PLUGIN_PRIORITY;
155
160
  }
161
+ static get DEFAULT_SETTINGS() {
162
+ return {
163
+ [_base.defaultMainSettingSymbol]: 'cells',
164
+ virtualized: false,
165
+ cells: []
166
+ };
167
+ }
156
168
  /**
157
169
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
158
170
  * hook and if it returns `true` then the {@link MergeCells#enablePlugin} method is called.
@@ -240,102 +252,108 @@ class MergeCells extends _base.BasePlugin {
240
252
  }
241
253
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
242
254
  });
243
- this.addHook('afterIsMultipleSelection', function () {
255
+ this.addHook('modifyGetCoordsElement', function () {
244
256
  for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
245
257
  args[_key12] = arguments[_key12];
246
258
  }
259
+ return _assertClassBrand(_MergeCells_brand, _this, _onModifyGetCellCoords).call(_this, ...args);
260
+ });
261
+ this.addHook('afterIsMultipleSelection', function () {
262
+ for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
263
+ args[_key13] = arguments[_key13];
264
+ }
247
265
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterIsMultipleSelection).call(_this, ...args);
248
266
  });
249
267
  this.addHook('afterRenderer', function () {
250
268
  return _classPrivateFieldGet(_cellRenderer, _this).after(...arguments);
251
269
  });
252
270
  this.addHook('afterContextMenuDefaultOptions', function () {
253
- for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
254
- args[_key13] = arguments[_key13];
271
+ for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
272
+ args[_key14] = arguments[_key14];
255
273
  }
256
274
  return _assertClassBrand(_MergeCells_brand, _this, _addMergeActionsToContextMenu).call(_this, ...args);
257
275
  });
258
276
  this.addHook('afterGetCellMeta', function () {
259
- for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
260
- args[_key14] = arguments[_key14];
277
+ for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
278
+ args[_key15] = arguments[_key15];
261
279
  }
262
280
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterGetCellMeta).call(_this, ...args);
263
281
  });
264
282
  this.addHook('afterViewportRowCalculatorOverride', function () {
265
- for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
266
- args[_key15] = arguments[_key15];
283
+ for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
284
+ args[_key16] = arguments[_key16];
267
285
  }
268
286
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportRowCalculatorOverride).call(_this, ...args);
269
287
  });
270
288
  this.addHook('afterViewportColumnCalculatorOverride', function () {
271
- for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
272
- args[_key16] = arguments[_key16];
289
+ for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
290
+ args[_key17] = arguments[_key17];
273
291
  }
274
292
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterViewportColumnCalculatorOverride).call(_this, ...args);
275
293
  });
276
294
  this.addHook('modifyAutofillRange', function () {
277
- for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
278
- args[_key17] = arguments[_key17];
295
+ for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
296
+ args[_key18] = arguments[_key18];
279
297
  }
280
298
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyAutofillRange).call(_this, ...args);
281
299
  });
282
300
  this.addHook('afterCreateCol', function () {
283
- for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
284
- args[_key18] = arguments[_key18];
301
+ for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
302
+ args[_key19] = arguments[_key19];
285
303
  }
286
304
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateCol).call(_this, ...args);
287
305
  });
288
306
  this.addHook('afterRemoveCol', function () {
289
- for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
290
- args[_key19] = arguments[_key19];
307
+ for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
308
+ args[_key20] = arguments[_key20];
291
309
  }
292
310
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveCol).call(_this, ...args);
293
311
  });
294
312
  this.addHook('afterCreateRow', function () {
295
- for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
296
- args[_key20] = arguments[_key20];
313
+ for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
314
+ args[_key21] = arguments[_key21];
297
315
  }
298
316
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterCreateRow).call(_this, ...args);
299
317
  });
300
318
  this.addHook('afterRemoveRow', function () {
301
- for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
302
- args[_key21] = arguments[_key21];
319
+ for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
320
+ args[_key22] = arguments[_key22];
303
321
  }
304
322
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterRemoveRow).call(_this, ...args);
305
323
  });
306
324
  this.addHook('afterChange', function () {
307
- for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
308
- args[_key22] = arguments[_key22];
325
+ for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
326
+ args[_key23] = arguments[_key23];
309
327
  }
310
328
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterChange).call(_this, ...args);
311
329
  });
312
330
  this.addHook('beforeDrawBorders', function () {
313
- for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
314
- args[_key23] = arguments[_key23];
331
+ for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
332
+ args[_key24] = arguments[_key24];
315
333
  }
316
334
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeDrawAreaBorders).call(_this, ...args);
317
335
  });
318
336
  this.addHook('afterDrawSelection', function () {
319
- for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
320
- args[_key24] = arguments[_key24];
337
+ for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
338
+ args[_key25] = arguments[_key25];
321
339
  }
322
340
  return _assertClassBrand(_MergeCells_brand, _this, _onAfterDrawSelection).call(_this, ...args);
323
341
  });
324
342
  this.addHook('beforeRemoveCellClassNames', function () {
325
- for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
326
- args[_key25] = arguments[_key25];
343
+ for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
344
+ args[_key26] = arguments[_key26];
327
345
  }
328
346
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeRemoveCellClassNames).call(_this, ...args);
329
347
  });
330
348
  this.addHook('beforeBeginEditing', function () {
331
- for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
332
- args[_key26] = arguments[_key26];
349
+ for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
350
+ args[_key27] = arguments[_key27];
333
351
  }
334
352
  return _assertClassBrand(_MergeCells_brand, _this, _onBeforeBeginEditing).call(_this, ...args);
335
353
  });
336
354
  this.addHook('modifyRowHeightByOverlayName', function () {
337
- for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
338
- args[_key27] = arguments[_key27];
355
+ for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
356
+ args[_key28] = arguments[_key28];
339
357
  }
340
358
  return _assertClassBrand(_MergeCells_brand, _this, _onModifyRowHeightByOverlayName).call(_this, ...args);
341
359
  });
@@ -366,10 +384,9 @@ class MergeCells extends _base.BasePlugin {
366
384
  * - [`mergeCells`](@/api/options.md#mergecells)
367
385
  */
368
386
  updatePlugin() {
369
- const settings = this.hot.getSettings()[PLUGIN_KEY];
370
387
  this.disablePlugin();
371
388
  this.enablePlugin();
372
- this.generateFromSettings(settings);
389
+ this.generateFromSettings();
373
390
  super.updatePlugin();
374
391
  }
375
392
 
@@ -454,13 +471,9 @@ class MergeCells extends _base.BasePlugin {
454
471
  * Generates the merged cells from the settings provided to the plugin.
455
472
  *
456
473
  * @private
457
- * @param {Array|boolean} settings The settings provided to the plugin.
458
474
  */
459
- generateFromSettings(settings) {
460
- if (!Array.isArray(settings)) {
461
- return;
462
- }
463
- const validSettings = settings.filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
475
+ generateFromSettings() {
476
+ const validSettings = this.getSetting('cells').filter(mergeCellInfo => this.validateSetting(mergeCellInfo));
464
477
  const nonOverlappingSettings = this.mergedCellsCollection.filterOverlappingMergeCells(validSettings);
465
478
  const populatedNulls = [];
466
479
  nonOverlappingSettings.forEach(mergeCellInfo => {
@@ -903,7 +916,7 @@ class MergeCells extends _base.BasePlugin {
903
916
  }
904
917
  exports.MergeCells = MergeCells;
905
918
  function _onAfterInit() {
906
- this.generateFromSettings(this.hot.getSettings()[PLUGIN_KEY]);
919
+ this.generateFromSettings();
907
920
  this.hot.render();
908
921
  }
909
922
  function _onAfterIsMultipleSelection(isMultiple) {
@@ -1097,13 +1110,16 @@ function _onBeforeSelectionHighlightSet() {
1097
1110
  }
1098
1111
  }
1099
1112
  /**
1100
- * `modifyGetCellCoords` hook callback. Swaps the `getCell` coords with the merged parent coords.
1113
+ * The `modifyGetCellCoords` hook callback allows forwarding all `getCell` calls that point in-between the merged cells
1114
+ * to the root element of the cell.
1101
1115
  *
1102
1116
  * @param {number} row Row index.
1103
1117
  * @param {number} column Visual column index.
1118
+ * @param {boolean} topmost Indicates if the requested element belongs to the topmost layer (any overlay) or not.
1119
+ * @param {string} [source] String that identifies how this coords change will be processed.
1104
1120
  * @returns {Array|undefined} Visual coordinates of the merge.
1105
1121
  */
1106
- function _onModifyGetCellCoords(row, column) {
1122
+ function _onModifyGetCellCoords(row, column, topmost, source) {
1107
1123
  if (row < 0 || column < 0) {
1108
1124
  return;
1109
1125
  }
@@ -1117,11 +1133,17 @@ function _onModifyGetCellCoords(row, column) {
1117
1133
  colspan,
1118
1134
  rowspan
1119
1135
  } = mergeParent;
1120
- return [
1121
- // Most top-left merged cell coords.
1122
- mergeRow, mergeColumn,
1123
- // Most bottom-right merged cell coords.
1124
- mergeRow + rowspan - 1, mergeColumn + colspan - 1];
1136
+ const topStartRow = mergeRow;
1137
+ const topStartColumn = mergeColumn;
1138
+ const bottomEndRow = mergeRow + rowspan - 1;
1139
+ const bottomEndColumn = mergeColumn + colspan - 1;
1140
+ if (source === 'render' && this.getSetting('virtualized')) {
1141
+ const overlayName = this.hot.view.getActiveOverlayName();
1142
+ const firstRenderedRow = ['top', 'top_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleRow();
1143
+ const firstRenderedColumn = ['inline_start', 'top_inline_start_corner', 'bottom_inline_start_corner'].includes(overlayName) ? 0 : this.hot.getFirstRenderedVisibleColumn();
1144
+ return [(0, _number.clamp)(firstRenderedRow, topStartRow, bottomEndRow), (0, _number.clamp)(firstRenderedColumn, topStartColumn, bottomEndColumn), (0, _number.clamp)(this.hot.getLastRenderedVisibleRow(), topStartRow, bottomEndRow), (0, _number.clamp)(this.hot.getLastRenderedVisibleColumn(), topStartColumn, bottomEndColumn)];
1145
+ }
1146
+ return [topStartRow, topStartColumn, bottomEndRow, bottomEndColumn];
1125
1147
  }
1126
1148
  /**
1127
1149
  * `afterContextMenuDefaultOptions` hook callback.
@@ -1257,11 +1279,17 @@ function _onAfterGetCellMeta(row, col, cellProperties) {
1257
1279
  * @param {object} calc The row calculator object.
1258
1280
  */
1259
1281
  function _onAfterViewportRowCalculatorOverride(calc) {
1282
+ if (this.getSetting('virtualized')) {
1283
+ return;
1284
+ }
1260
1285
  const nrOfColumns = this.hot.countCols();
1261
1286
  this.modifyViewportRowStart(calc, nrOfColumns);
1262
1287
  this.modifyViewportRowEnd(calc, nrOfColumns);
1263
1288
  }
1264
1289
  function _onAfterViewportColumnCalculatorOverride(calc) {
1290
+ if (this.getSetting('virtualized')) {
1291
+ return;
1292
+ }
1265
1293
  const nrOfRows = this.hot.countRows();
1266
1294
  this.modifyViewportColumnStart(calc, nrOfRows);
1267
1295
  this.modifyViewportColumnEnd(calc, nrOfRows);
@@ -1420,8 +1448,8 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1420
1448
  let firstColumn;
1421
1449
  let lastColumn;
1422
1450
  if (overlayType === 'master') {
1423
- firstColumn = this.hot.view.getFirstRenderedVisibleColumn();
1424
- lastColumn = this.hot.view.getLastRenderedVisibleColumn();
1451
+ firstColumn = this.hot.getFirstRenderedVisibleColumn();
1452
+ lastColumn = this.hot.getLastRenderedVisibleColumn();
1425
1453
  } else {
1426
1454
  const activeOverlay = this.hot.view.getOverlayByName(overlayType);
1427
1455
  firstColumn = this.hot.columnIndexMapper.getVisualFromRenderableIndex(activeOverlay.clone.wtTable.getFirstRenderedColumn());
@@ -1434,7 +1462,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1434
1462
  const from = this.hot._createCellCoords(row, firstColumn);
1435
1463
  const to = this.hot._createCellCoords(row, lastColumn);
1436
1464
  const viewportRange = this.hot._createCellRange(from, from, to);
1437
- const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange);
1465
+ const mergedCellsWithinRange = this.mergedCellsCollection.getWithinRange(viewportRange, true);
1438
1466
  const maxRowspan = mergedCellsWithinRange.reduce((acc, _ref) => {
1439
1467
  let {
1440
1468
  rowspan
@@ -1468,7 +1496,7 @@ function _onModifyRowHeightByOverlayName(height, row, overlayType) {
1468
1496
  * @returns {number}
1469
1497
  */
1470
1498
  function _sumCellsHeights(row, rowspan) {
1471
- const defaultHeight = this.hot.view._wt.wtSettings.getSettingPure('defaultRowHeight');
1499
+ const defaultHeight = this.hot.view.getDefaultRowHeight();
1472
1500
  const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
1473
1501
  let height = 0;
1474
1502
  for (let i = row; i < row + rowspan; i++) {