handsontable 14.6.1 → 15.0.0-next-4472a60-20241203

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 (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++) {